From 57023a556635e86f8dfa6930ff1ec681f7359f77 Mon Sep 17 00:00:00 2001 From: Adrian Biagioli <adrianbiagioli@gmail.com> Date: Sat, 21 Sep 2019 15:04:23 -0400 Subject: [PATCH] Update freetype and drawsvg_ref.dll so on Win64 DrawSVG builds correctly --- CMU462/deps/freetype/CMakeLists.txt | 2 +- CMU462/deps/freetype/bin/freetype-config | 157 - CMU462/deps/freetype/bin/freetype.dll | Bin 0 -> 822784 bytes CMU462/deps/freetype/bin/freetype6.dll | Bin 522240 -> 0 bytes CMU462/deps/freetype/bin/ftbench.exe | Bin 21504 -> 0 bytes CMU462/deps/freetype/bin/ftchkwd.exe | Bin 14336 -> 0 bytes CMU462/deps/freetype/bin/ftdiff.exe | Bin 70144 -> 0 bytes CMU462/deps/freetype/bin/ftdump.exe | Bin 20480 -> 0 bytes CMU462/deps/freetype/bin/ftgamma.exe | Bin 61440 -> 0 bytes CMU462/deps/freetype/bin/ftgrid.exe | Bin 95232 -> 0 bytes CMU462/deps/freetype/bin/ftlint.exe | Bin 14848 -> 0 bytes CMU462/deps/freetype/bin/ftmemchk.exe | Bin 15360 -> 0 bytes CMU462/deps/freetype/bin/ftmulti.exe | Bin 58880 -> 0 bytes CMU462/deps/freetype/bin/ftpatchk.exe | Bin 12800 -> 0 bytes CMU462/deps/freetype/bin/ftstring.exe | Bin 68608 -> 0 bytes CMU462/deps/freetype/bin/fttimer.exe | Bin 16384 -> 0 bytes CMU462/deps/freetype/bin/ftvalid.exe | Bin 20992 -> 0 bytes CMU462/deps/freetype/bin/ftview.exe | Bin 72192 -> 0 bytes CMU462/deps/freetype/bin/zlib1.dll | Bin 72192 -> 0 bytes .../include/freetype/config/ftconfig.h | 575 ++ .../freetype/config/ftheader.h | 575 +- .../include/freetype/config/ftmodule.h | 32 + .../include/freetype/config/ftoption.h | 982 ++++ .../include/freetype/config/ftstdlib.h | 175 + .../deps/freetype/include/freetype/freetype.h | 4887 +++++++++++++++++ .../deps/freetype/include/freetype/ftadvanc.h | 188 + .../deps/freetype/include/freetype/ftbbox.h | 102 + CMU462/deps/freetype/include/freetype/ftbdf.h | 213 + .../deps/freetype/include/freetype/ftbitmap.h | 330 ++ .../deps/freetype/include/freetype/ftbzip2.h | 102 + .../deps/freetype/include/freetype/ftcache.h | 1088 ++++ .../freetype/include/freetype/ftchapters.h | 145 + CMU462/deps/freetype/include/freetype/ftcid.h | 168 + .../deps/freetype/include/freetype/ftcolor.h | 311 ++ .../deps/freetype/include/freetype/ftdriver.h | 1232 +++++ .../{freetype2 => }/freetype/fterrdef.h | 270 +- .../deps/freetype/include/freetype/fterrors.h | 289 + .../deps/freetype/include/freetype/ftfntfmt.h | 94 + .../deps/freetype/include/freetype/ftgasp.h | 144 + .../deps/freetype/include/freetype/ftglyph.h | 665 +++ .../deps/freetype/include/freetype/ftgxval.h | 355 ++ .../deps/freetype/include/freetype/ftgzip.h | 151 + .../deps/freetype/include/freetype/ftimage.h | 1238 +++++ .../deps/freetype/include/freetype/ftincrem.h | 344 ++ .../deps/freetype/include/freetype/ftlcdfil.h | 328 ++ .../deps/freetype/include/freetype/ftlist.h | 297 + CMU462/deps/freetype/include/freetype/ftlzw.h | 100 + CMU462/deps/freetype/include/freetype/ftmac.h | 290 + CMU462/deps/freetype/include/freetype/ftmm.h | 753 +++ .../deps/freetype/include/freetype/ftmodapi.h | 785 +++ .../deps/freetype/include/freetype/ftmoderr.h | 203 + .../deps/freetype/include/freetype/ftotval.h | 207 + .../deps/freetype/include/freetype/ftoutln.h | 593 ++ .../deps/freetype/include/freetype/ftparams.h | 204 + CMU462/deps/freetype/include/freetype/ftpfr.h | 180 + .../deps/freetype/include/freetype/ftrender.h | 245 + .../deps/freetype/include/freetype/ftsizes.h | 160 + .../deps/freetype/include/freetype/ftsnames.h | 273 + .../{freetype2 => }/freetype/ftstroke.h | 446 +- .../deps/freetype/include/freetype/ftsynth.h | 84 + .../{freetype2 => }/freetype/ftsystem.h | 157 +- .../{freetype2 => }/freetype/fttrigon.h | 106 +- .../deps/freetype/include/freetype/fttypes.h | 615 +++ .../deps/freetype/include/freetype/ftwinfnt.h | 277 + .../deps/freetype/include/freetype/t1tables.h | 774 +++ .../{freetype2 => }/freetype/ttnameid.h | 1172 ++-- .../deps/freetype/include/freetype/tttables.h | 856 +++ .../include/{freetype2 => }/freetype/tttags.h | 66 +- .../freetype2/freetype/config/ftconfig.h | 350 -- .../freetype2/freetype/config/ftmodule.h | 22 - .../freetype2/freetype/config/ftoption.h | 695 --- .../freetype2/freetype/config/ftstdlib.h | 180 - .../include/freetype2/freetype/freetype.h | 3434 ------------ .../include/freetype2/freetype/ftbbox.h | 94 - .../include/freetype2/freetype/ftbdf.h | 200 - .../include/freetype2/freetype/ftbitmap.h | 206 - .../include/freetype2/freetype/ftcache.h | 1110 ---- .../include/freetype2/freetype/ftchapters.h | 100 - .../include/freetype2/freetype/fterrors.h | 206 - .../include/freetype2/freetype/ftgasp.h | 113 - .../include/freetype2/freetype/ftglyph.h | 575 -- .../include/freetype2/freetype/ftgxval.h | 358 -- .../include/freetype2/freetype/ftgzip.h | 102 - .../include/freetype2/freetype/ftimage.h | 1237 ----- .../include/freetype2/freetype/ftincrem.h | 331 -- .../include/freetype2/freetype/ftlcdfil.h | 166 - .../include/freetype2/freetype/ftlist.h | 273 - .../include/freetype2/freetype/ftlzw.h | 99 - .../include/freetype2/freetype/ftmac.h | 272 - .../include/freetype2/freetype/ftmm.h | 378 -- .../include/freetype2/freetype/ftmodapi.h | 406 -- .../include/freetype2/freetype/ftmoderr.h | 155 - .../include/freetype2/freetype/ftotval.h | 198 - .../include/freetype2/freetype/ftoutln.h | 526 -- .../include/freetype2/freetype/ftpfr.h | 172 - .../include/freetype2/freetype/ftrender.h | 229 - .../include/freetype2/freetype/ftsizes.h | 159 - .../include/freetype2/freetype/ftsnames.h | 170 - .../include/freetype2/freetype/ftsynth.h | 73 - .../include/freetype2/freetype/fttypes.h | 583 -- .../include/freetype2/freetype/ftwinfnt.h | 263 - .../include/freetype2/freetype/ftxf86.h | 80 - .../include/freetype2/freetype/t1tables.h | 450 -- .../include/freetype2/freetype/tttables.h | 756 --- .../include/freetype2/freetype/ttunpat.h | 59 - CMU462/deps/freetype/include/ft2build.h | 95 +- CMU462/deps/freetype/lib/freetype-bcc.lib | Bin 32256 -> 0 bytes CMU462/deps/freetype/lib/freetype.lib | Bin 55978 -> 46362 bytes CMU462/deps/freetype/lib/freetype6.def | 249 - .../deps/freetype/lib/pkgconfig/freetype2.pc | 11 - src/reference/drawsvg_ref.lib | Bin 55300 -> 94842 bytes 111 files changed, 22628 insertions(+), 16492 deletions(-) delete mode 100644 CMU462/deps/freetype/bin/freetype-config create mode 100644 CMU462/deps/freetype/bin/freetype.dll delete mode 100644 CMU462/deps/freetype/bin/freetype6.dll delete mode 100644 CMU462/deps/freetype/bin/ftbench.exe delete mode 100644 CMU462/deps/freetype/bin/ftchkwd.exe delete mode 100644 CMU462/deps/freetype/bin/ftdiff.exe delete mode 100644 CMU462/deps/freetype/bin/ftdump.exe delete mode 100644 CMU462/deps/freetype/bin/ftgamma.exe delete mode 100644 CMU462/deps/freetype/bin/ftgrid.exe delete mode 100644 CMU462/deps/freetype/bin/ftlint.exe delete mode 100644 CMU462/deps/freetype/bin/ftmemchk.exe delete mode 100644 CMU462/deps/freetype/bin/ftmulti.exe delete mode 100644 CMU462/deps/freetype/bin/ftpatchk.exe delete mode 100644 CMU462/deps/freetype/bin/ftstring.exe delete mode 100644 CMU462/deps/freetype/bin/fttimer.exe delete mode 100644 CMU462/deps/freetype/bin/ftvalid.exe delete mode 100644 CMU462/deps/freetype/bin/ftview.exe delete mode 100644 CMU462/deps/freetype/bin/zlib1.dll create mode 100644 CMU462/deps/freetype/include/freetype/config/ftconfig.h rename CMU462/deps/freetype/include/{freetype2 => }/freetype/config/ftheader.h (51%) mode change 100755 => 100644 create mode 100644 CMU462/deps/freetype/include/freetype/config/ftmodule.h create mode 100644 CMU462/deps/freetype/include/freetype/config/ftoption.h create mode 100644 CMU462/deps/freetype/include/freetype/config/ftstdlib.h create mode 100644 CMU462/deps/freetype/include/freetype/freetype.h create mode 100644 CMU462/deps/freetype/include/freetype/ftadvanc.h create mode 100644 CMU462/deps/freetype/include/freetype/ftbbox.h create mode 100644 CMU462/deps/freetype/include/freetype/ftbdf.h create mode 100644 CMU462/deps/freetype/include/freetype/ftbitmap.h create mode 100644 CMU462/deps/freetype/include/freetype/ftbzip2.h create mode 100644 CMU462/deps/freetype/include/freetype/ftcache.h create mode 100644 CMU462/deps/freetype/include/freetype/ftchapters.h create mode 100644 CMU462/deps/freetype/include/freetype/ftcid.h create mode 100644 CMU462/deps/freetype/include/freetype/ftcolor.h create mode 100644 CMU462/deps/freetype/include/freetype/ftdriver.h rename CMU462/deps/freetype/include/{freetype2 => }/freetype/fterrdef.h (78%) mode change 100755 => 100644 create mode 100644 CMU462/deps/freetype/include/freetype/fterrors.h create mode 100644 CMU462/deps/freetype/include/freetype/ftfntfmt.h create mode 100644 CMU462/deps/freetype/include/freetype/ftgasp.h create mode 100644 CMU462/deps/freetype/include/freetype/ftglyph.h create mode 100644 CMU462/deps/freetype/include/freetype/ftgxval.h create mode 100644 CMU462/deps/freetype/include/freetype/ftgzip.h create mode 100644 CMU462/deps/freetype/include/freetype/ftimage.h create mode 100644 CMU462/deps/freetype/include/freetype/ftincrem.h create mode 100644 CMU462/deps/freetype/include/freetype/ftlcdfil.h create mode 100644 CMU462/deps/freetype/include/freetype/ftlist.h create mode 100644 CMU462/deps/freetype/include/freetype/ftlzw.h create mode 100644 CMU462/deps/freetype/include/freetype/ftmac.h create mode 100644 CMU462/deps/freetype/include/freetype/ftmm.h create mode 100644 CMU462/deps/freetype/include/freetype/ftmodapi.h create mode 100644 CMU462/deps/freetype/include/freetype/ftmoderr.h create mode 100644 CMU462/deps/freetype/include/freetype/ftotval.h create mode 100644 CMU462/deps/freetype/include/freetype/ftoutln.h create mode 100644 CMU462/deps/freetype/include/freetype/ftparams.h create mode 100644 CMU462/deps/freetype/include/freetype/ftpfr.h create mode 100644 CMU462/deps/freetype/include/freetype/ftrender.h create mode 100644 CMU462/deps/freetype/include/freetype/ftsizes.h create mode 100644 CMU462/deps/freetype/include/freetype/ftsnames.h rename CMU462/deps/freetype/include/{freetype2 => }/freetype/ftstroke.h (55%) mode change 100755 => 100644 create mode 100644 CMU462/deps/freetype/include/freetype/ftsynth.h rename CMU462/deps/freetype/include/{freetype2 => }/freetype/ftsystem.h (61%) mode change 100755 => 100644 rename CMU462/deps/freetype/include/{freetype2 => }/freetype/fttrigon.h (72%) mode change 100755 => 100644 create mode 100644 CMU462/deps/freetype/include/freetype/fttypes.h create mode 100644 CMU462/deps/freetype/include/freetype/ftwinfnt.h create mode 100644 CMU462/deps/freetype/include/freetype/t1tables.h rename CMU462/deps/freetype/include/{freetype2 => }/freetype/ttnameid.h (51%) mode change 100755 => 100644 create mode 100644 CMU462/deps/freetype/include/freetype/tttables.h rename CMU462/deps/freetype/include/{freetype2 => }/freetype/tttags.h (65%) mode change 100755 => 100644 delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/config/ftconfig.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/config/ftmodule.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/config/ftoption.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/config/ftstdlib.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/freetype.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftbbox.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftbdf.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftbitmap.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftcache.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftchapters.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/fterrors.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftgasp.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftglyph.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftgxval.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftgzip.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftimage.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftincrem.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftlcdfil.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftlist.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftlzw.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftmac.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftmm.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftmodapi.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftmoderr.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftotval.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftoutln.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftpfr.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftrender.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftsizes.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftsnames.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftsynth.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/fttypes.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftwinfnt.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ftxf86.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/t1tables.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/tttables.h delete mode 100755 CMU462/deps/freetype/include/freetype2/freetype/ttunpat.h delete mode 100755 CMU462/deps/freetype/lib/freetype-bcc.lib delete mode 100755 CMU462/deps/freetype/lib/freetype6.def delete mode 100755 CMU462/deps/freetype/lib/pkgconfig/freetype2.pc diff --git a/CMU462/deps/freetype/CMakeLists.txt b/CMU462/deps/freetype/CMakeLists.txt index 22b1633..eeb299f 100644 --- a/CMU462/deps/freetype/CMakeLists.txt +++ b/CMU462/deps/freetype/CMakeLists.txt @@ -1,6 +1,6 @@ set(FREETYPE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "" FORCE) -set(FREETYPE_HEADER_DIR ${FREETYPE_ROOT_DIR}/include ${FREETYPE_ROOT_DIR}/include/freetype2) +set(FREETYPE_HEADER_DIR ${FREETYPE_ROOT_DIR}/include ${FREETYPE_ROOT_DIR}/include/freetype) file(GLOB FREETYPE_DLLS ${FREETYPE_ROOT_DIR}/bin/*.dll) include_directories(${FREETYPE_HEADER_DIR}) diff --git a/CMU462/deps/freetype/bin/freetype-config b/CMU462/deps/freetype/bin/freetype-config deleted file mode 100644 index bebc054..0000000 --- a/CMU462/deps/freetype/bin/freetype-config +++ /dev/null @@ -1,157 +0,0 @@ -#! /bin/sh -# -# Copyright 2000, 2001, 2002, 2003, 2004, 2005 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -prefix=C:/PROGRA~2/GnuWin32 -exec_prefix=${prefix} -exec_prefix_set=no -includedir=${prefix}/include -libdir=${exec_prefix}/lib -enable_shared=yes -wl=-Wl, -hardcode_libdir_flag_spec='-L$libdir' - -usage() -{ - cat <<EOF -Usage: freetype-config [OPTION]... -Get FreeType compilation and linking information. - -Options: - --prefix display \`--prefix' value used for building the - FreeType library - --prefix=PREFIX override \`--prefix' value with PREFIX - --exec-prefix display \`--exec-prefix' value used for building - the FreeType library - --exec-prefix=EPREFIX override \`--exec-prefix' value with EPREFIX - --version display libtool version of the FreeType library - --ftversion display FreeType version number - --libs display flags for linking with the FreeType library - --libtool display library name for linking with libtool - --cflags display flags for compiling with the FreeType - library -EOF - exit $1 -} - -if test $# -eq 0 ; then - usage 1 1>&2 -fi - -while test $# -gt 0 ; do - case "$1" in - -*=*) - optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` - ;; - *) - optarg= - ;; - esac - - case $1 in - --prefix=*) - prefix=$optarg - local_prefix=yes - ;; - --prefix) - echo_prefix=yes - ;; - --exec-prefix=*) - exec_prefix=$optarg - exec_prefix_set=yes - local_prefix=yes - ;; - --exec-prefix) - echo_exec_prefix=yes - ;; - --version) - echo 9.16.3 - exit 0 - ;; - --ftversion) - major=`grep define C:/PROGRA~2/GnuWin32/include/freetype2/freetype/freetype.h \ - | grep FREETYPE_MAJOR \ - | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` - minor=`grep define C:/PROGRA~2/GnuWin32/include/freetype2/freetype/freetype.h \ - | grep FREETYPE_MINOR \ - | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` - patch=`grep define C:/PROGRA~2/GnuWin32/include/freetype2/freetype/freetype.h \ - | grep FREETYPE_PATCH \ - | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` - echo $major.$minor.$patch - exit 0 - ;; - --cflags) - echo_cflags=yes - ;; - --libs) - echo_libs=yes - ;; - --libtool) - echo_libtool=yes - ;; - *) - usage 1 1>&2 - ;; - esac - shift -done - -if test "$local_prefix" = "yes" ; then - if test "$exec_prefix_set" != "yes" ; then - exec_prefix=$prefix - fi -fi - -if test "$echo_prefix" = "yes" ; then - echo $prefix -fi - -if test "$echo_exec_prefix" = "yes" ; then - echo $exec_prefix -fi - -if test "$exec_prefix_set" = "yes" ; then - libdir=$exec_prefix/lib -else - if test "$local_prefix" = "yes" ; then - includedir=$prefix/include - libdir=$prefix/lib - fi -fi - -if test "$echo_cflags" = "yes" ; then - cflags="-I$includedir/freetype2" - if test "$includedir" != "/usr/include" ; then - echo $cflags -I$includedir - else - echo $cflags - fi -fi - -if test "$echo_libs" = "yes" ; then - rpath= - if test "$enable_shared" = "yes" ; then - eval "rpath=\"$hardcode_libdir_flag_spec\"" - fi - libs="-lfreetype -lz -Wl,-s -LD:/Progra~1/GnuWin32/lib -lintl -lwsock32 -lole32 -luuid -lmsvcp60 " - if test "$libdir" != "/usr/lib" && test "$libdir" != "/usr/lib64"; then - echo -L$libdir $rpath $libs - else - echo $libs - fi -fi - -if test "$echo_libtool" = "yes" ; then - convlib="libfreetype.la" - echo $libdir/$convlib -fi - -# EOF diff --git a/CMU462/deps/freetype/bin/freetype.dll b/CMU462/deps/freetype/bin/freetype.dll new file mode 100644 index 0000000000000000000000000000000000000000..34634dee850d907584768a23f94a23a5443e8233 GIT binary patch literal 822784 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%0D@q~hWW>gE*r{HFGZ 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 literal 0 HcmV?d00001 diff --git a/CMU462/deps/freetype/bin/freetype6.dll b/CMU462/deps/freetype/bin/freetype6.dll deleted file mode 100644 index e35edc6bb07a741798aef2b642c13005b8b8ffde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522240 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膾r|iFsm>n~-n(rxe9N25<Dv zRS>_mYlo^21&xMiiGgv-_WqS<66#~#;+Y6^Hpj*JB<=s6{ZZo#l|6bAJ@n|8D<2~= z))!k#?b?!WIXpA=wv7*tsK7~ygA?&gQXU-pFX82vJ;VL}8y(8lUqJ|UgA`h>vqt|# zNi-Pm`)t@2<D3I<B?LhlU02xX0zqPq<ZDp8;o8PJYV(1f-0zM=8KaS!Xl=Cjr3z&i z+vM!Ceyoi2rJb>$tZEo#r98ri)^8{D3q<5euvru0cH7u%M%Vy{w2jAsU(2@RNw2Cz zA<_*ZGstfv@<O|f<Xh?69-Z8&l>3x9E0(A$?q+y?<OFDFN2d}I2;M-0kiGo6Gv=sY zub5%kq~(FM-h(E<g%nEfEjXoT<sY-+R^?eC;uUtBuh=m%c}#Yd;!7cF0TdLEJ>fT$ z>4LZ3oL5x`&I;5kGdmhjyGc9r3*!#8tDWk0B{vMwfqjpstWsUyH72n8iHyHYZb?T@ z0uAYP4PcFhjj2U`ZOf$cu=S_HRO+5bzX}-rgGNmyz_0jNuK(&i*d4ct>$epjt2(9` zWg&nF8D-@dJDlJ;sF#)N17b1j9o;wRx;5L?5^%KyUAN}uU77D{DR8wE+9jhayN`}? zwaiVh2}U;JoV6^Jd=%5qe{@CAV0mk-K4D~UffvQU!epy&Fl(yVZhb=;Z>!{D8R(iy zb)S|#gw1*L>-yfZeu|e*y`Q4;?HclI3juTTztx})-A`3_o{sUh=b0gwgISlUYi@|! zQbWG{-ZEI}BKt^(jMP0-xgnJN3wU<!j*72?V=5cX9Z@R#Y+e7befLqBI08^twUfI? z+>89z;0keTFY?;)fDPSN5`Tcs{Xe_jbJCa8^5x<bZVDo&4HZ_m(zuIyaF+O1PT%EX zZbiqTTpZ8`Bj+$Br{+hWNxmc~3V-%O*^BmVsXZg-j|kyDJaKp7+&Vmm6N*p{F7dje zWAt5e-@|L;XpW6<y;~6b_u=yPoLP!OVLgNBXv+*cdX2GOIrdty<InQx+iq?G4P?Qe zs#s#>2(mmfPF&ixi7(-_i>}yU)}liwWICltg;!SB_U9PKh<GKhS~ELS+x&@a{<Y0l zW$2%38xkyG;f|)@>8vnSYbvs|%?Ak~yP=Qji}+s)OFa!%R<)+gEzYbq>>}Y*J`@5& zBV3`0c7!|3kzX>3NL8h6u5qnt#B0_LZNqkL1CIZwQp#|$PTmrjJ{v!-JUxZ8KK#N? z#KWhUSE=<EvAS_#NkW|X0Jnnr>dcNR2f|rd0DGD=vL@_Co;(#!SVf2AShkivG_JWu zBGr{pJ$>}b4H>}k(Id0=ROGlMT{hj{l)yQsYa1kPc36ZvaejBeXXc;P|B|+0P}>{{ zp4x4BfUapwFTE<!HXueSL8X>;zY!RlI?B(KOOTai#Yx7bL|a)c(^WcQb-&~5e}(eE z6B=Vl`Hu3lBy%mtF7Nod4|w`tQQr=9)Se}ttJG*+jkPdlP32S`N>mAhSc;jHwn}^k zJEV}#%J}29h$Cz^=a`_;i+rtZ5ILl8AMSAwBl+(Wxw&dhT_%_*&^Bw@=8uO5oW*j) zfD^NGFZJZ`Uj}?EU9DO(i2>ikQ-QYOX%xo!d^nj5qCprMcm`CQi_T%JME6p)Cd8nh zNlq`<2DJ?g|0mi8YNwbQYiXg0@dhQisD$%Jjyd%N6=5J%7W2F?l-T6Zfb?T>Ce>;- zIb=Z&V-@`MLIWqOrYl{7{4^PmL)k!Tn@<`!{A>@>1b}S9P@DOer)l71@q;#2+t5ui z&b|)#`Ux2?ySt__eKaQ0xa=VsA%G?V5vG6<^ps0Kpx>ajvNlZsGRP3X0neBNz(jDu zFAE*lVuJIYk1G3Lqq_VtgZ-~|crT=y0!F=3YZqBCA!qS6PnbimA~dkXSl~9Y@xUAV zI7{db6gDyjwM_nxnfx9#`RAy$4uWaQT=c#XmaaF#%rIAo>^IJ9h4~nlwegoe1c5)t zIJJYf`)`*I7j??tFRz!sC*Li9&%0OtUUnaUsY2~bXqnp^AOXBmiEO;w6W?LG)zq?( z-Y|*AYMU!$A1g@7#?>b@MW=IIyLtDk_d#s~WT|aHf#rJ9)lE8NQjy6wmC2(rA!xX| zP5<fLN#+UI@^zfmQSa)QmKl30E7p@GEiU{KEz0f6Fo<ik_tpt<JWl@`GjW<O6NY@K z3efw*AGEfYB<V8gvvI0m<9<Pg@nz{hJqfANv4!+<dRbzetZ;Ik!pTJnC#MQd?iZAp zf!nB5_D0HX6%6G=7P)#r{Nuxp8iB4#dRc4cPfWHT^T0>7&F%}p5%`hwZTN|UpK{f8 zJR9<^@KY!yL#`L4kgJ<wVsc)P#!)^GU`7y`3z9m{0*y>s2UGqFJG`^93WLS(E;OL4 zD$vuUwO<ceCicpX2>k<!AofM}J>^T;<wd@=Fq_?IWOi)O7o8tp`B$dgn^tIEl6VUC zo6PO_%ANAVKYh)U{6&>aU+@2wpl_wDPWSze$Bvb~Jldst-we&OOUay0?!5o!!+9Uz zG5MT=VTY{Ws3dXCf=igKK$?maNI;#)xy{CkGbu}4xyV_@4+A`ETe{4^N_=;2$t)gd z85i5`E`Dj@2hE-KlHT0e9D6idTGO^H%#0q0y_Lm6YtN+;AyIr;9*&eBuAuVEje2LL z7G>9sbG3GvMr|)gzbYS2#EBNk%jZVVA;~96-@?36wBO>?u47M3T@!@Gu^mKE=%PPq zSxVm?d78abfrOze2+v*c-GvM4Q`2paFVP2WS){PRy7`+*YDP@>DdShrQy%=P$kc=t z>tCS0h(MvW&!szZz8W}_cm=U<^S0(hZF6^QAgZm4@fI7nNi)w=4<W5>bQXPICzjGN zYgBCD1Z~xLo+l+0kWY^U5=F4qh8UbO>bd$SHV40^|0*&J<9d9bw6^_BA9nIZqHHLt zp8NgpEoiP!scYy0rTFi+dsb3s{m1!E&$Ra6%A~_iS~^x|okhpgodvsV3uw@&OLwiB zx8bfW;Z1c-opcS*HSvqCt?QC>r)y{OY<DeOXPujFl!=I{TJCeuC_A%!Bx={i3L?l1 z4?uTo?GN)6ush^1RdSVQc&OrvnGW1`6|y1^SF!b?p(-Fk7G0Lu=mJJflT4H@{ej9L zU5iemTkv1*iDnkR)bh>YZhh4rv1O;nq)QUsSX(!1XtWkrN_{Tm<~r-BU7hkd+V)(> zZmoSa^LI+|a-X(p8BcO`CO?e7GJ2@o*U&j}6Y)yoZE!v*xmvk7m8$eltOwJT?e5r} z$fmSVo3ztl-Ie}S8~iFC$MW&Ajr3f*{eJ4XY>Paujq&#~Zd?PcK`QiTuAg)VPYH29 z?Bu^oirV?*EX&C+cZEjezl7J=K&jSVMnQ9ut9TFgxKN?Cd8*5-otmiv|2gSb45g3D zRNTv4@0(6q;+b?MU**Bc{LP`vRMN*1>ZG4Olujj&O1e|Y?|23cr_1okZNSoNj~RXO zf|a~D)|J`Mg2i?>BXWY|25B<b{$n$Lm&}LBm!q|{(siL48J#+-<H8YC)2mLCe9<|Q z)%A$z;Uk$FN6DKfdZ+w^A`@d>?&R$bMlTlR3PzXDa<CaBWdt_=gZ{JA=Oj$8qo1)Z zPvR<mNje=3!WDc?>`LQG?rE7*UHC4I{X37^=1CxYQfA^>Nq2B^^>CiWLwS6e2^lr9 zsS;1$U29MrMb0=Jf{C7Dv`T+lmlR}Z>$}^Y)7FQOGrM;TZ*F+Pzo9ydG*(I|L%0F< z@wVqW$BkWN{E%mh>8Wt7o)r^i0$w|>-BGWcBT@wJon13`U!-E5)po8kP!YH7vWczi zVqBo$9P%8L&=h99IK#+L{`Vq27ISq)+o<&6pDy+KwVZ;^lC?|L1!M$26DQlaQ-WoR zmcMw{qFK$cC!V8Q8IkLZCmtu=^sXadn^}!Ge9I9K_o+mc{RfV$7akoGC$j9AeiBn= zwP#Em&*n!LUEf)Jl>7D%-%HuNqtqYJCprd8v`fl-Qle=aCgZ1e8&{eoHD)!tvxP@h zwA$$@JWr4Lpm<P!VKIVf>Cx_e_!O^BjoEINTx=GOPyR%FSTD2zdMg{4m_$d%^mM=O z8S|{Rc}8l?s|h)CuyF|fj9KCWBd5kXii+Mw(`d(s2t&lDV2yR_4bCSN{WUrIU9#vK zWkG$FEb%iG>O_VxCdvN7ooJjV^)sek!;q}zO($NuNwPkIMk-@*vss#{Z4Dpo-tTGF zHiuGUdI{v2W0ty|L_19{3!0^)j!Vil@eof@ZF6Oc;$!;sEAzFj^}JW8_g=lMK;I;7 ziZAT+c*fpV>pU(c<w!MbY*qW_aV+IOldK4OMO@_pblHgJM^4waO_o4#MXp|i{K88o z<COjt@<Hl_efx~Ma(qq{9@Xeq2@#Yw@Wrgk&Lki}k+%ANd23;~Dr8{j-Ylk9=9nGD zgU$MxExG7edPaP#XV{vHUuxFJX=_h~EcD&6?#$xBg)f1-LgijIm-;f`?%PU_h5#^k zNm*>*2q!VyCKLW_=C^Q|%TCLz^0_a)%B`(?6^;~Vg^@z$<RS_bAoF)}xKsRb%Vo{R zna#yBjxIeYS!5(+F|tLLnaURm;V<i~H*DJjHVJ%1c7RrrFCeR;)i!5kazu$jz9_!p zc4>ou@f98RL&o9<w9REsuWRTSlQX}$_^z{nNn3e6f2pD<?=@}92gUu`?TwPaHstUm zA7?6`${W%VQ5emV3+a8XYe(@Oj0V{@wEUYn+tn$pYO5y!jkdWZrGL;duC%|$L({~s zxz-h#Xn+3--`A9-I<_N&xpv~{I;cKttK~9q+jB`zr+%=*ReE$+w4d<`F8mch7RaR% zX`8TYG;I1`#lN%YIC8*%A6x~bgWBpIxNPwY3$IXTjDTdfxRKNcm}8p$S~RPFZzmQ? z$`Ktk`eXaw(MNTRi}iR)G2f93P5zbzAl<))0^2A4>4D7XmIr*%KbuoB0hR83M;Q6m z#-rVDFsCc=qdR7A^7k@Y(ouCLz@eJJ3J<8Rvx?R^)6yQQ6DggLctTR*G$|o2Q9yD5 z(Ugs72@EFJ47^+XDwjUkv60IwJxfj;>dYH(^apb6&SduQr7vRj?!|XMK_@%vumJZ= zrYF9Z^Vig&Gm$P3bMS$j=<`EexQ{AOmu?N&jOpssnC|2j1p}=MS%dL#vwj2dEYH-p z?i47a6fsub$D`5N0U_uQ3UTQ_6vC>mubFPmnQ=k}oGI}V8Ev^epa$%RY94ds{-D$| z@ny!$4=Q|#|Ke5T)$N&P;Wz;HYpaC}`{Vq{u<st4H^GCBVH_UwCOFWvqi{-LCu4SM zTV6c8T|AvCM^lf8dK;X{P{^;soqZQw=Jd#drng-(={xbdN!JC3p4dNf#O=+M*?L(3 z+xj+%IW7{xJeRtHU|F}TBL#7Ogs6C{In51$`WN4TTNCDuFKafwSyYp838YE)>eZS6 zhq)!C7Mo^*y$r1fH>Jk(5Ww>Rmww?N;VVcKe{etG(b^9{5Dy?@?vmEGyVKZNC33t_ z&8ei@TtR#=s2G&{$*y?ZG&)%gr!BQPt<%X^4@et<M_eI&aj)A?WEx6$5Hj^2$feSf zR5aTP*WiWvAjA=xP%d^lK0WpTfY^+DBsh$zw$;Ur1#N4oixEs*1KimA4G<SzAIEcS zyC*TmPWu?aL%)@0!PM5N06r-ti{MTNaI@mr^+o_^bWNhF+G~@&43P}g^TnI+1N@Mm zFwvE)mQ!k0ksojaX|C}fBFJdUhk)2Oh#Z}&;j$r}^_Z(=HODx2u9byM);PnMJvY8u zh2o~8sV%*HO|=B9Kb|cvbj)>f-!#5jQsp16o}WR7gj4M;Z6wuMcaSZ<TAt<KHP@Oy zj;I2yP73Z)?^OlN)k{gjYre^=@gG0uMF{NW`052t*7)ir&QoNLtoJSMI;&8inB~Y} zxb~^DzCwyo#w{3#(;>j<WR)FPA16536`v%oaGiDNEP*y&78LN<;=RE;W#g*_0Qnai z@@p!m`B+=ztIGU!)+0{VGFhN9lK&1GQ(HPIrkn>W=dN<Lkcu1xP=m~X6)!(1Vsl0X zZ4_U)h&b2I_j#Z9eQ{UvM`>G<d;$|awG<s11DtE9MU7kH9&O8BBkDtg_zk1>)qQ-+ zF>%njuPd)NqOq0Z46D=Seqj<?201y#p={(dZOfl9$1s+8k6?@;h8Q?Li2AfGs9}06 zqqgTrY)1|;HDYgc#rAjUr0Jx=3-Q*jwM~%akG02$-A6apRMD=`*GA!n9UTSqUf=j< zp7lq1C8x?|cFI=tu`&EPLL9Ak^}U>hb*Nm3VtU7Qk~4zM(vqP1q#i5fu{qxQbv|Z< z<TEe1@{)mTYkjZLDGd;L2xG2CB$M7bpTF_exhju5&EW}s0%x?XvWC0lVMh9)Nj>O~ zoXfBN$XEE=(|W$7#aoNiC#j(z{S@*^!|_(R#wGs@;;;Qsf(j`*Lt`TP{9NPi`}o%S z*hHb7s0I%J?%dYpr5Ta2;=^4|5GAOu=zo@BZH#JvaG%jM_@+LqQm?>k;Gkv9AAFlw zs(O7D-(WO@AL>7QoZ9qNaCO9xL2j509?^gQq@>-|#oy#FXvbb_aLeBMm|VTcVD~Wh zy2!YA%*Gg<i>Y*>w@n|Cq0SoolA5QRj>ua)CW-Pd9y@41WLPhf!+1>gj?&9iJSJJ? zUvoS*pdQRk@^xs_m|BEC<ohXwZ><V@jxEY=u-2)T;uT8ROD*Dnd6|<(VKudgZTvhZ zk6Ji5=WMX9Aw_0lg_>T?@d_3b{xW^|i<fNva{nYA6A0v=bggA+oplc7X3b7*>L9Hy zUba-eSzZ$3F-ekt@v?~hvqb>IGj-@mQPvz|-wRPo2(FPb^=W>WQ5vKb#gj>kcFD z?rF8ZwW@DDq4^o{5XvIdMO{18{t+pr^)ZzvdQwl>e2U{mjrCxUReF?td^$zOQQu+C zgUNV_*mva7(KMyMCl$&}y)xfGn<%;)Ph?KBQJ0BzQKW$x=sCQ4BRN?&SMt+b+_$jW zAb6gBWmqp`Ij$7y*S5UhP(RmxT9(;h<@#C2%c{V!(<PvA+3ZfmRIwi)`7ssR_s^Gk zh!z~yZ*8pCw$x=#cdAO%S+AZVHC4vTs-*Vh@6`D$;si`(QaR0ryWbjBZ{2+wxhA`3 z%|^)J%gyBt+Lp<g`1lW7%hV?i{!l2zhGt<!z4iA~8UHTfWn9*r-N;o>%JJ>y$_DFC zBfj|vx2XJ)@NL1=dh2&1zDXzuZv3h`r{YrQheO}!wV+dQs87yL>|zj{b6BRV-#AHc zSuin$7S|OK_iXjm*2Uid`aRaQWTdRx4Ksem4}Hvav&`ENuCGo_pU)?@Bk>5qj@0m{ z^HF!~Z6Ay?$2e)?Vd|A5tzhIFyS(VaeBlNvm}^(i6ZyJR0gX3cPjDZt8z=EmKw>=; zhs1IS46xo2z(z0mB7jCa_2~mrmXeD0Oc8;5k{e~6qL0(Rt~y6IBl2M&xm$385Jc#2 zJh>C=PRfxN2NKQkRgb8d$Ahwt&PXlFuCe|LeHH7eJ=dMNo7yY}Xf@VqzQGw*$(#I( zui7~DlxD1{&9aizSl8P1tdci7Z(I6FSOA5Y{Nk6xnn=$0lw5gpx+e1U+u4kIz*u=N z$(a4@X_ua*?K=X9a|OC@#dbG!a=x+yaonfRb#nkocH^pu-f=r$jOY@5W2Zbk(Mr1h z$ldaMr|<~9^ImzLyi|{^mj|;$5{>(KK4Ly5ywr?V+P?gMVcaRaM8D(bd^8{1qrT-o zINE3z#&YNvNRaY@wW95r^`sc<pSfG|uYbCWbiM8A$N4GcfMfZq)i;!zcm9@-)6Go* zQtPdQSDirP(w_0eK`CXllHP2n(7O6#OXWq6$?3Xrr*Locv4`aE!%WkRBah08tlzPR zXNlk^2hGgOx!IUIo6B;Fj}ld3;c|`~y7U%*^!qYvjZHEN%-u89S8b(0I`KJei-gL1 zOup&8(K0h8J^Q27&PpL!)PooliUiPO-dd^m(QzK;ryqjy&=a$$0)<Ftn!7@4%nbs( zW5t~Rgp{u{y`ufjAcWy`>r>_9mvC~~z^;4`T@BCGkE&qEQWiy39ZLbVHsB9!y7gzf zfN%sLj>!kD{W7~uAwSMKs$`len6hK#9pU7|w!^6h6mNL$9A<o-wQ#DMD@<uFUJ@#y zUE)(qlkB4Oxt@5d&~^@K_~K7(lo#TW`|7Nz4g^>~!N}EIi2kqU&rBv~>cm$GQsrNI zN)68lH38IuC@51}5ct2C70V5_+{9%1V@%0SNcaB7Ir|>$`-|r6Zod7qbN0XOdWIn! z0sOIZb{RQsf^(~AL4a3ZXMN93CEC#%xGa3e_TxKOSgu&{eobB6U>0MGqxVdFp}ngH zz02+;6@+uUT;JJkaj3XM+tSBn{C&O?1o_&A-LCB%z!q<h^{KmVWAREiW@r21CGaxQ zxn0}8NB#B_<+gusax+BkHhw5`2!iq$?v>IOtlJNx%`sNVv|-PiV~lEj<aQDAA{Vr7 z6{#^Ja)q%<rlGF#(4VleN>zi_CRMo6I$e_<2WgcvzOA{c$TQ8xDv?|{A7lYrH9+y? zw(7YVAz0RCsqF5s74u3tuahWQv~6ppc(uO6YUbk%2u_Z*MV*j6-I|B79+*{%Q{gGd zCPs$>M0WS|N%yb#KlSP2bf3zO?-M%KLaTQyboDc*b6hIlbbP=5^f~={?6`jY=A{3j zUu*ezT)*zP&hD42s_A~At1vnh9PTx!KfStp&9EL-ZbA%=82mnHY?Z7d$L{=eKQH~< zep)B9*LQD7v!dZ~>-(Jk?KrM~PoqEh!g2dOAEkd@#!ZyDzUkJc@7Vnl%Sie+f)8oi zR?8j*UW8gIiY|4vh>?)Y6zW$ZsNe$?A(yPDr?wPAmXN>gSZ*>6X<J@_-4(jrucGvB z^=5gT8lV!+86Hz-`$1zNod1=&<BE@>IIR}C%3sA(hO!~`Udqvi-RwUDqZ3xzmLIV& z!Q|(781F~nscrel<vw%_U_G7ECjtI?Z}o9--AEC@ca^__ck>|}C^f#eg{7QG*<7Z9 zB>XyeYRc$!Cerq?-^=^lDg(cE4xh;5GDEa2qD;g9#l4FhKHa?wTf33z<-4S)Pv=+Y z4eWZ<<rMD{0`TIBG~#aWTH@W2x1A-XcX>Zs0CjI|L_QWDvph2=f@$D#HxjO7=*%OO znuxpodq~YB<=DFY)XZ1%AoEKLe&D5yN>XLsvs)5ap%%z%2}`2s_eD<T4#F5L`Dlnb zRa@KD>rhjlf$fUV!gj^~0GsNMFI{HeP=9=}eVB6%_eY(zpw(e)<@%9-$@#{E`ygk1 zPu{_-6>stcyvB;Z@zB5LobBi@F!xw;k?Fp`=GTVGW0%Q0n77BcM`eAPQs=xx(E8^< z97w-555vxhjKu}XxZ>ZkcgV&<gC^k%fh89jKT*x@%-fT-Qkq4n_Xnx!p8liSh92B0 zjEOzzap4zeM`wH2&4&nc@}8kG+6D9W<n5%$8oLNqFWu>0QY=r3$+{uZIl|?^uXVw< zIWgD!B4=xBMFP95l|QC;d_=pfizhyeG7PCqKN#Cr5F7AmZNDR3TQ{0CF;Ea!O7cyM z#{_Wsr?vf@zsTd3oA$*V-~-;d%kXg)lEqF<{}Hbz;PRF*wH`etwHvB1S#^_SXd(Ss zgdv5HUQHK`a5`O&336=Q3m6TsCv|bv^m17oQ2Pc2*!CLIrO_p~5qs9DN}#pFq2eUA zIt4@>H<InMz;rCKlScs2acer~aQm@=oXCXOKtc2urkkh@H{VI*!DJ`>?;5Q-oft(K zvotGlv-}e8XBRglO!v6Hfy51@D1E5xW<*vDXxp~P(yMLR*$w;~p4B!S)C+^!whgkj zq7LuxE(!YX>Hdc=%O7<8rT8zpKPbDmm_JCFL*1WH<`r$jM;O~5?EbsY_0c^fxpo(S z#Eqob?hL~nbnPh~jP+*RV+O{#dW)Yn@5snO|4B;mOV{#u7JiMp4~(5X26Ygy3NMv? zd>S^<M|~Ey;QxErW(@=PMX(7!QM{-;=#^hU)pr;fjs%3S5$I)NSM!R;Y*n460#&zl zb;Lw4VgsO(<v~e3@*wM(`lJ*h5b|Y`bH!uQ>x@u5R>B&#(N{Vz9;@W3@g#Yw;^|(V zhB6B>GSK*c#BV$n;<H~B$&hsZ$!4{)*?3GEYbM45S><G<*)XKl<`sjIBHO%XW0N9< zZ7&iISFC-v{Yl$)hX9Mot*ckG?J-$Zn^zo_BHvb}A5)#-buF(p#7nf&c|)Dh+9Yf^ zuW2wZSNYOl8mh+20Fx@jMigbW>f+85)7=j8q;*I!5#Y15b?5LCSLLMGu;NSY%8y0f zBSXkrGK9Q`1bOW{5T<Qx*$5tqEymWt1w_5impH+mM|46BSV(LCI;A(dRFGV3)oi57 z2^Lw@P|_J;Tc6jJ#J`D5KiqU;(0)&kb)s9|9mIF<M?0fNMZZH(pJ?TyT~@l55U);7 zU3OPTcEcVGmGArH<1+nYs`O`RDIu3mZ6Z4sPl<>5V9Ph$JJnxcW)_Gbq;-6Q@mRr) zA{>c-k30SyUz2z6#CrpWTiyTgU}oy$oL;WqU}_eqw)SwrK?z&pSW-^s!!=5r$6p-x zS`c8G^~o7_QiFAeO7fAEX`kN0$G8?og<h#p?&w&nRfX(CGeYP9*aytA>v8JPd#tNS zVBsMMGpiYg(=>0o&&Evdu-35>2)H)-r<+erh$f@CvqJv>-n`)j77;`YAvWzcfAO<R z|52L!`!u$ayI2s_Ot>s{MTT#=hfmhGxqu^QS&_{CSKD6Z@7`t%LYnofGHr2L6o`6n z{~l^%^yI3D{&D|HHsTV`$*8<4Fen?Zn{V&myUCSYW#hXFU5xi|>jLoVB3>I#JtCJQ zD*Ma@K}TWnqG&=})m$!S&$IaQ)+dz0U27K&L$jFX#FXDmrJsVms?wFml+L00W+}aB zJ7asD{(}9Ln)NJ+n2q2mM)NsFq|ZGevKtH5lD-KgyNRlErw}asZ?b5c(!0R&)+g*; z;5T5F;$vivPP_@A5zc4>Gjm6LvUe2;i5Xznk$>h)>{1848Ty&YJ>k^DLhIVLcA0J> z!`E1CM~}+2z<@pqI!S+jLgpGv69Hnclka$KRyIcnDR<cXxklf;My#H@IT*?sV%1b6 z!H2RV=e0g+gIlC+*==02)K$0}ldG%@uE#tmG|}q4z|-7GV9nXW@3Bc$^FMknPimS+ z-gL?>-R-su?lvB^3x3O|iplp<>g}~Z_YBvY{G&6k^c~H{xy{A%@`?Vr$Wt6!N~aco z$vHfUps!TeO7FgaLpIelsXM~p2-G*n9&4mThNxcZdC;~zuWd5~P$3|F`$Ts6#;tO% zz^`@OKr+`qJFb<_xV&NY?q0E9XjATq45<r_(G|QtzS|l*W+x+s{{XE+MQ4|q-7FJo z3DFNq8%&;Z)MiTdl6-FnO#gBdSPyF*_fr%Jl^x-WZsW>A!;J+sPfUH?J*d|Xy5(ws zFBKVdrwRwbgis=wI2^MlOFZ&*qHhlvcZBHWlIr5#<(c}?aB7o>SNs>>Q6z*bx1#cn z$_-7Q*%FjwVT*!K{Wk$J@*^`VjdpFzGh!|eG|83vK;FURuVAN*5ODwA1Uh@%n5ZkB zBuX3)5`QK?FD2IT<BYQ!<+)+KXVJ;cMyG1y(s2I5Gg`N*S<6UQ95d4Fvma3-8yU-! zoY$eE6PVJlEU$&)@eEpEdNI-Y*z^yCjceQ!X1Hq%*Mv-BhTSErtZ`Q*W%M1=-(F*F zxm3_GlfT6~mz{{Kw2oEsdH0&T1bG;UJmA*azr-VVZP}i*trDzh9aa2of7x_rMaGDL zEnfFKxdewVfit9z(|9*l74o-uKwFp1FLWyYiG0R10)hQZdTYoIv%YXb`AdwS>_6C& zPAi<?-YbyG5az|@c5#kbUpbu=8IEQ{m5e=^b9j}2$Kd=-@jLzZ!nm}yUeMdD|6Zye z9;r`dkuVyY6mJPJwVyLfo;Cx$#;U)8!%J7~6HF>;O{u3wPsj>et=zJPesee{*(~1) z=sMv_ceORwPRGK*E1HDt#4l+P)HI|XQkba$QbkX3@N45R@fKP1-n>1DpYUK~rGF22 zF_ZEko_JG!UdzKL6>+WBZsrY5-v&wC-T!i;g@>@w;GR(9o^A+i&NyCkZECZ?AGZGb z$<b6ou1|yGA=>&D5wMzzmq1=-wM$#I1dJH1OZgir?$uU_EtiAL=1XVgYcU}#f)T^` zsS>&x&thRy3XD5@m{77whfsX5@@xVTb?jtR;49ha?i`9#A|qU`qSlyJAm;~+ZMN>l z<ugaxy(sB~6~Q1-j=u+ny;{dI>QEd)>iU;CgjaD0iYn@&ku2!QAJp9kq+!|<&aC%J zi!|q9ujMp1`~Rvru4QQ*$_=h`O_~!j_6GHGJW5vJp~P}S;)dJO-3c8plgYf!FPhNC zv|1*sph1cUnFXShM0qERM3d#7(A3A&1!hIK0c%2_PsmG6;^A3TUr1SQaVOj|lY}k} zcVdG3rSvR<4qLaDfCJ_{5v7@E7YbfFj*>EBl1DCSHrC1zHW#lIV!%0q6zRij0D*ef z%B+{k=#cjiaVO6OxNPAKe;VQq+bAfh=z>r!i0(t{Al^xaaEDU_05lg<jk^?g*nV48 zXWpK0ojI#g`esjZXa4$zCi(AWl1D~2>sw`J^CPo8J;Cjo`d=#EzU*PWH~F9t>;zUf zW3BLet>X@wF5ao#ULfLysJ{4~_^R;eCLToEhA%HguI+zGC^<2aM*%;tTWJf{%5eb` z@^XIQ57j^^D=oF;4zVL&q8Focy_aUQ6R+?H-~XG`xHs_=RdGUm&B+R3CyIw|0Y&AX zL&fR4EX~GLuin#agfP3@DaM}04en-KM5iYvzX7_#+@0=Q^rhzF-bJT18x`T^Vv9wj zcwmvIxp-D&@tMt^LvtlcB?^hc|FCq?nIcfH;qNuPJM(tY^IVxVa+18|9iysO4u|nx z!xAeRRNgVABa`^hVToxp@_P-xSk90zApR!u)rax{S(g2Il*xNBuUp&lavt{bR8c^d zLNQs)d)~OqmWWQt4&M+03;F$wzqRSZqayO(5Q54I^f-Tutp6ZQ{{&id;dN62LB&3~ zV)+tEF>>N(PX33in@5%;g<xaWckQ&AI#;~GYLsdiE~=O4Azaa^AVp@WTzLcl!@t)k z-|IGRT*_t0T%^GqNH?E$@ms_|f8<vCDk&iSMG!IEgTiHIEoJ>8J1pk|BR`nsKCq+; zH4nVeCpmR@l8+oN48kPd7q8>|9uQ`cg@$xVK(fL_^zz;AL=$AFzt;a+EOkZV4575H ztmJF*XG7Y~DPU|YfS!vN`1Bo13)8Xy1mP8eh+ZI1e1|j)wImw1LPLWKFGvfHp3dVW zN0BEK&yGCFQ<Id9Zcjdfu9s1Vx3_1=^x1-*xX8@!RS$)xzn4m(17FLyW+Nuku=&!m zu(mRbrx8Tz7ns;ot*s;7s0mEfYXWGKjlxc%fJTbnUwjE`l>?d9j*35J#H4qX@QSsf z8JMc8_v4B!`m<mkHE+ZyThd@u9du8)3TMtG2PZ7cXh38W*2sXOkSFf-QYNwAs3lJ| zD<^r1C5s~)$^>V6$D<eL4TQBVJz=wD{s^HDkZs+V>UKeb6_$Gv${waVxf<AI@mKML z`Sn|e-xuQbB{#`<V-Ro+Dyr#5O_LGX<(?3gP13GoA<Wgb7&Z^{8Z~mM&~HEz6NtVg zSualmN?(G;CP56fC)Ay*n%ZhAPyPZ3;|fK5%+PCclmL*Xm3;k044^}L4-}5|6gN;; z%WV@Q<mFn<Dmf?@A>ikdbR(+^uDZ&f&nWI@p5{uE%f~|k!V54vg9YU3yK#v&*2wQ8 zPyp`%<3=~xatwTY3ASk@Cl6lATn-pb&&xs_%-g}e*<3k()7pL`5Pkx6_;|?Zk(*UX zKRA^2L8p!~%&<d?&!7eOUW}-7mcPZ{z)~OI{mEC+V>%ut7_%Je&SvYRVYojo@)h_o z_|F#WZ||N7RT2&_{=rc^rHuw(K$*NxT64+vAa?>hszI6N(79awFSvEe$->qo@6$T# z;)AxdCu8^<{o|y+(}wN&j7j+S32CcEbBcVbpnFrnwSNfL%|?gXUkf?eJ|>)9y4EiK zs*H{I@)sLh(SO*6aIqZ{=hSbs$_NOAJ}w7oTQ-QoP!K9OZU$da^Te02iQ6_mm}&f2 zhE3a2c!Rb@nKb3~6d$4%&*E%j^#gor?p(vo?>2u{^op|LLyNdO*_@(^W^9l%Z+m<Q zhn)hAOkkt+K6#Rba&;OGPeL@##fKI@NzHEk6)IYMo?ZQ#Dk}G8Mc(G<;jM5@9f4ZR zdHBX*yezrECa8P1xsyA*?&!aPVYjSrhS$=cVaSxAG$DUiB%c>g@vfG!GB;iMeS%*1 z!o%cshl&s4>lx{w)0MxSmqi23#yW-Ap>AmFm}jYkEaWo(JazQ~1rV^LS(!Ev%q2H> zLDgjlPaVzpzAcXVvK64OvNQvzQ*rVa=`jp2Q__0dNRDx$=^tZM1ehb{K5)c7Yz04Q zd85-9uhcU*HG~;ytEV#qjrss|`mt;I?%07$y*^-6WH%f0JCVR|%r^p^+Nw7N*DtNu zFSaP!X0>_gKH!#%kV^9v8(65dxu^(vRkl|4iMneS#tR@Qnroca`bTxHuC<Bt1m}F# z_U3r}8LhTu)e-W9t;gR}TnVCeM<xK_6nKJHTU7`8^!l81cjT;$fDyQdPN(R5IG`Zl z^a0P3EHgaVy?+!?O#>>u_c8uv?0(~({!d_<&s3YUf@!Hu#{b`k<&Ha?&1-TEc-iht z1ZgyVzK^O{-iFWk&$7?>6GbFrV4LV?lz|r@6ZIq=cY>^Q4-y6s<sN(be^)NRO}B2~ z^9&&`GUPDo;?y7zw&o$m0b}B?)D7<u`>l@qq)$7H*1P%b-sg7hEbeZ(Wz8M3vrLWw z?rt9m*MF<p6aBFDW^YF1T_g5ezFivI$lqneG&dfbD@FIav+j6^htL#VWzcVN6DF2~ z3?nv&A41sR^PK>Z<IG7|Y-AcYyBFoM8n=<7Cnj4nrIaV7b@*|m^Juzv8y!+RheaFZ zH#&xlYxtVnVN|%eEiLacdEcZP*GY4+`SMr6rr#j|B=3=Z;flBOdBy=rh##(CzeJhl z;uU-Nf!S2?!&RURzR5qWt%<E(e1*um8%LviUs20bn@64+d73k(be_?ss<N{F!Fb)P zp0&-fB5H^Yj9#3b3bt2rf6w_6kIBCHh<B)%@rZzFJRm4UIt(~~8M^8N6L(G1$>P^p zpzYuyb;nO+V8pvefwpy1Xc09(u0En`+7gjZ9kQh}mtK?sp$D{e_k5KdjuDEI(Wzx; z7rV1txVh7%f2>ZSWde8nhJ5-?Xr8k>r%TXGJ`u@_`O#Ki&vzpv_u{fwe6kMQnC?zq zau=WG<nC#eF?6MZKb=c|JJWT91FTd9ufcut^>B{1+9H#rY|~bYc3d8}XsgZ!X0Cv6 z#V2pj{DaI4#1Zovb%FL(zD<1D=_b6cx%g0gijw!(Nyq;CE0E7>)pYV?CzG*S(8=vq zr_1_Ed1w8j)AL6k?f$!5Xe%F08&A8evb%vTmr5}ZS-901Cx;-@^-aMOp4R@~^t#ij z(zqd~^^b~Z^&5O>Mpp{%U8)^8brm=3szQ_S4YqEA;LWBs<A-Xje<i>aKMzj}Xy#u5 z-)W_Fo8ShT8-R&V>{{`p5URajvCH?YP~D7|s?H14`cCViw;?;51c;#om~Em#Rwu~O z$BhklQ-`tcKK^$9-EG#MoKf7@@>MmDPjkAuMkxrt#eKv!nF})C`xd@}haDj~7+5Qb zL$Ev|Zz#<tyF@zC)?Ipz5MyngixYyaj8jJ53pN=hZlMznNyI}#0H-I*jCWbWWKZd! zGrm%$*u65vR>~BcFH>x#OtEsNSmJJ$EC-?<rNwax-E7d5?n=gz*y(qRdz!pK)COj$ zt9ZM%Qji7wD}gGZ++&R3TbijALGL{d?|RFfwMn?j6n(iHQ*xd%jNi=R$EbGe=j+4^ z7zgt*r>4ZO;p&~242_wI7B<b7?v@&~Hsd0`mbr@$YAe4ZkM`K;>(qo^Efk<{5em?M zEDa>~fhXg)3fVpF_V`Y=VV2{xG~2MROsOH?V@>9SDdCZ?HeJM52vf<2sU&{+38{9A z@zs(#z`0(cQ&R2OA73e{J0<Tel4>(AZZ(iPM^YtRo&!(3T~gOe>NH7pNMe<w_Da1) z$EPkhnbfaHssou#s*lo9nC#v~rzEQBZfBZaHwYdOdwf`dyR1@evtQ29n2US$+J}!U z+LMqQ@WYIRZ}~_zx%ym8?1a+id`+0FOKaO+NIiCwt&iHrJ#8%)GW@0Xp~}lbKQ@x} zI=O9~D-m~>yA27?o*$oVbCbzA`YaC@1aT?%>tTX3ex~LSOi<s$`lwIKG1kg_l7$i> z2MVKe87<>Qyf#iRuEtxdS~C}ZSlq3(J^Q~|dl&eqinD)wH@jlc)e|+<XxF-J*ETe1 zO*E}pi5f@(DF)q;D;OYc={91jNHz&-z=Yj}9EOEhE@BI6-&b2Ny!D2H7YHGcMX`!n zm5W8xs^=KBDhf!^{eQnR=WG(~+xPSTe11`O&(4{7=9y=n+sr&Ob0IK;q>4-8txg^H zJ>B58=qUce{vR0Uaq444+So<+;#b=!U4C2LuDDYO>K5@RS!Zx`<Y+EdkADpPo2gmZ za2LaC`U=u={$=71<g+F2b1ZUbj~m@x(qwFjOKYJz9Bz6yp=#aFpG#GKQvOSUj~AR_ zGs$>qN}ogq-WL*E%N|wyqdmTm&>}~FtVLr;)|O$9bn;RiIZXuN*-S$3kMuZ^eU|^y zy-tfv`gJ~R;rsr*X_y1E`-^KQj<Boq+0J|2NM0*tq4TM8tmNmN_xg~m@b28y0On)v z=Q+EOt)FEkAq_S|v6HUy+18=XYrZw?B{0$Jy!OlMeGm{-;Q}}%Dw6#lW&wp6SwpY% zTIyCG=YyP~fSU!R#7W8MWC0}^Y&6YWt<P$$l-G}qRfi$3^~|SO5JSaWu%XR%(|r&$ z06u|$rN~L)`XLJ_VxXnDm;}&o_DP~nM0^*#9c0HGwFB8)7w8YL`z@<we((i~DuTfW zgx&S(<vu)RL!DuMTd89$x&zr<V|3|zC{^t+A7)XdKp-Y07_iN@iPrAZk0vjAava#t z7`tCqQi^)jrYLSkQHq3WV7eJ1D2tQ?HAKoAID)0|y7_ZZ<}&6Rq9EET1xA(B7x+Tr zc8&={xETjlTBNm&4h8zP#l9awC~Ri2Wd3hI019ep(0uRcQ1xg6s+SEy-L8;m!GxlM ziczA1=OjFv%Pe@e5ni#<A-4^K*OiA>2NGKR=I@{oyR*`(PxXOSx`3(K%&ZC&Xit?U z`6B4ED2qF4p$;bovANFOc2X#CRoH6I*Qy`qAF4i!Fctq$g@HFE|Cjm1i8!|oYv-iC zQe;~6w?9;Z`#a!o(P$vTBWN7v?jtEUk~aVgePQ$BWS?#%FMQHbj1Hc*7vT?*Ge;4& z<V<?5_2yE-_}_ZgnF{^cLgGj*@Zv!j<oNa+fU!vQbAnKvF1b6UNYUYvIX*T*pMW{O zJ5&{WkfbbQ$lJ<(l9XrtL7CekTIqx8{wJi(YBML!SOPL|WI7oG?QrN<_{?3*Gt@!E z5zs8bfSW2#L>1lteF5+Xczu-l`yrr`YM6IQL94?AE_RG0Tiv`Y;Nt^wO}-GrER_2t z%UR-tE~7X>4E2dVF%Ckk#Y}jI5Uv>TGJnRrLp_XM5f_rTa^|}2?wRh>FEmeOz9D%5 zZ`0jy;Q&=qQhWS;Th}h|={e>>h?s=|YbQBc-GNqzwr(q10^YHO`zoJa<1im$eoOX1 zaAI+jJ8+41=T_o^(-UoCPbDr3N9G2x#0+=fJK7zLM@H_WcJ6D~HPy^L)IyT|DtAEB z)>@s(APCt-H9q}B^9Mt@rR3J&R1qI?EGDr=kF1!zr+f{)(l^j0S9;8MK0|e?m!*sb zy><`R`vy9h$7%L4&rox@O_PQt7i!XiccV{>{Q<e86O+Gx5U0|8TZ<;panb!+tP5|P zpIgQe^FChverjSZej=D1XlE=b{i&l{+DwpI+w#b8BYaqYNEzXbvtWdgQ90GmK@&xe z)oW1`haW7!jLOv3l|Ki^4=%G=3A7zy%5Z8gT9}u-s4jUMy)!W1y|>`Z8k|;RG4S3) zBS=qrrD)C4aHo?OBYs7eK6ncN@C>Jw{o3QZbj|z&OAoOeSXf-+4vf)OZKER69^YrP z9In?o+x#ta4@nnu17UHtP5mYxHl*xtJyBYt@Clo!m!w!Y%?nv{s5{6{KcQ%%z=w8+ zRQhnlejDev(jIaG@oezQu}@J>$(bc%@Yp2>Vj;!S2Ix|2*oZrhqmS0ZThY2#L&d7F zY`H?W0zb*~dYbuXf*fMj5frQCkfR{EA=X5fX9Vpa_9vRxvaGUA)IqWtksX&);3DtX zwi}8_|A|@5tV6`IR8i!ITWx9ueWrIP&o>yE*cxLo2s95vUk;-ISviY>6S%Vj6vlnc z+TzR4!-%_A8MoLxtWQ`Cw0OaMbR-Dk4WSoj+Ju|w3+cCU63o<@bEt(>D`*^a^N?P| z*0Ks_ox!X_eaft5Tp-JJB6mv2%!`Mz2{{47ESUNmavN^+VGc0AbBi?xI2wIrg(_*$ zdRp(U&%jB#EG&Z<p7s*~ZR18x1=bo5@0U}7)PabpGY39SH9^RI!ekg!IHcRJWrY`| zD%=8@?|e$eMrlzBsgV1kby-+exZbKT&I&7yVyi-^Xx(MjvOdceFs05LqAP++mlPe@ zSD`>jE_#YiK~+#&d<6Yv$(^-+u0_v;RfV`MLJg*iAcvR-P$?{&XW2L>EY1kLsx5vX z3rKIW{Fy8t%3A(R;-4rxB-4;%$@mlCZ>5C-6X25U!_XjA?UVRnSG$x&RZDD}QfB)Z zL_mdW>2=_^`+;q0iEGs9XpSmpag;f3Bq-_%wg5#pKKM6uo;VHHsx0=g5jNj$Jx$t7 zwBMn^<ILljO|TU`xDd`R-7dm%TC`OdX^X%3_AqqX2}qf73(%tkG}JJNmN*G34H6MB zM_{LZJ=*ju2u=!{3jxHc#DZo1mQaQ?2YUrwD_pk5ZT0D~VoFBo5Z*)>8AG_a02Lu- zB^RSybO8)Qs`sMo0;~5%v*?ge-MXH%l6Fgn!CDr;$QaWV`cA8dF>rOs-Gs^VbTxzG z5cSxaXz6Wj*#RoPa*w{6fb?awVdgy_rs|Mt$M$had2#zn)~GLK_MMzJ-h=A11O4Kx z7EhpxgW&#*KtBe-2x~o+z%6HQ3rD^BSiLHJpv2>hPj&`Y-_4XO+%2PY`Dl?&Y$g&S zP75g>YsRNF_;rG%{vQo~zdZH-9{k?P3AUATP&$0@+l}OJ41N{sP!mEfFcM{#isfvd zIAdJkMQzcVGtg87jl0E0(l72EB^Hx}fj&zhw5ShShVu-EoF51Jze&qlK<K>LgNddJ zJlRxT#BLiacT8(b7ka@b*2LGFgTQ`B${|};mt&MFzSH@XrAw~@OE0;Ds;%>1&a*!} z@=Dh`90RaR^$V6P;)^2Z+0S&n$yEI+x2Y4Z;y>zB@&_~^gs>c0p|ek5fRolc-)(F7 zsXm-U<_OjyOAxP&r(Xhqr{%M_819CpWy3#OvYfT$?~gvCt?KW4`&4|d+=@BA-F<JJ z8q)7%WEG51Hoh#8H}n@^{f@pb;Zd&iFQ}C)h1S)_62J{kx7It&ZPU5;^vWvzsPR*x zAvb&I8@a(iTtHklOR}VJd5O4eL;b|1AGi$my#risV;e*IgSjlHw6O8z^T4H<xU7{d zL-S8d4AI1z07mfIqRmtv>J$(yx(+{}H>5WI>98iKfkH@}O?4O=dneZbsTCI%;%FmV z`9yin5gH^*A2CsB$`*{>#38EGrLYF^e0Y+!>Uf?Rt*!%FBMdAGa9sXFM8BGUVm_tD zNKA}6^)mY3z(n~-hVh#N$hUy`Eb0CWYmHBLQUn5TU_u1bWm<gCDJcTkNc?;V36AT) zXW|0e4zk68YlHCQ+Yn!|!b>WTt;*FF{u+#J)s(VJM@T@+9DZh`Fy<JUKu;uR!l+O8 zAv7Ih&=4%i&@7iE+!mG^AtICw>i+TWv1us{c^k69E$kUt2VJC5sXDaiRUnU?lI*AH zR{9{-T^}ON?yhpeQ9L54tA?sLKTwTtqu1Gh*8CeEU?TxpjZSjiNmWF)Cqf|pkk57% zeKsFxXuiUnLpFoDi9(WNi|9DyypLfs<^v;Pk`}aJX||!W{OEQRh_HLin}$HsehuTP zYa}VbQ|IjiuS{V+i>J^rBWA(Sa64lDM@!a8CGZl4SW58rQwiv+r1aamV3kw?s_C{2 zQzRkQZM#s}JMW@0i!sUQ|7MPX_w|{ZnQw?LWSg1pcnMFO!z~NAV$LVd(iS~%Qi_RF z7TJV5VRLjlp{Nd}(355if&zpSY@hgASo9#W;g*Be^h6p4YL17}Y}Q*;O+w}q%E;cF zz;MXiv7;=_1+${XPeL|KFSv$s|68L|<(5`wCCuFaVRe>3wElzDnF0vP>XhTjCh7>Q zbJN+9Cl{ho=C$vnC~wUK<I*DK*wp4?4p>|KUOE7(7;i1Q{G1_n&KoL9u^QHCGZZI% zY?Qr;PD^LLl)96$ein|W2(nP%eZAg?sf88~QgQ>Pw(xAYPFC(z=V{td=RJw*jO<n| zlaqTdbU^o92Sp^~Ftvr>M)RzWVHK84)6CEGY0)U6dThzQj<8agfjy`&6U9D$nU#E* z>R&mhKsK}cw$8`-g{cT|7{#@2E&5&L|F`oCuhQ>CDB+UQbH6#ipeh(z5*`O=@dnH< zAl6S?{s$Dr{6g#Maf55W#`i$Qb%Cu9Fr6mXD%HB9!(8<?a96@h^-BFgO_TC#F?kp( zAQLw;qY?$`4P^r}Y$<5*!Geafom{JXRj$=xDKt}CxC2LmAdh6A9}R;*+am|jDF`LL zF<$^i!%v*pZHdTkjB^%#j?z|RfWHLt4usq8GAgCvlmC=Y=!s>2rTjCWl7Fd+hen*^ ztT}&5s+#kcD`!jp6X1(e<Hcso=r6fVI#tJ<XCFTDYS+7tVqnRtFI;k`d;xE3>-kL8 z$Ggn}!u?+qR$>v?2>6F5;3Jp&Tr8kiO)6+~2?i1t%jt7``dITIgk@N#h0$rJa^;Im zmzn|6FT=8z`53dNcoTig@e>FK^Lf2xKL2zw@LwrCo5XnKcih5Ks<Tx$(IA2^`i`Dt z_c$gxBJ>N*D&`&1wA7J+FD|h;4zq+$a6!TR(MYVRk|A{BEE{D^gx0xD_fXYT0H{8M zJpv(dqW%Wqb|s{_2vmi2XkJ`-lE-m10yP(h;SO1NEa~Fd7|yNiA36m34IViq#rfI) zItYZV9$8Ij`fBMVUe?)byNJ>`&VMPo)v{EWo9+X1?uF|b(pM`N@s8mx;=b+Rxt|m8 z5UuG#LsD?ylsy}OS%9vDEDij*U@)Qq8XKUBFImn8bbjGHd;gJ_yWW;9m^svfgKrGA zU>MfRq<!5=$98Mq!IWeBvUIZ5xg)xaC9>Gd@DuA50Ja2+?br>DLVBNV%7J?4=fzx; zcMUV?80TW0<|Sx)3)PUmSoVm%oR%BENXwAE+>fur0E;^V>zP~Wn2^3sQ7=B6dTaZE z$H~JQMfHG%H&77KTgrLru7F=``zqEvy$lmIUxLGG_or2mjDv!l@sIu;h)C~k8^+yM zzLb^v1JZ1#YYE{DXXIhi&uW<vkSvuUm*A%kRjjXW!b|gae+LL9N}D3gtQK8O_fSqU z@ur1jNjTEi`A|83m~XM9s(e!y-%5qWCo_RpJR1IEZFwGa1HxU-Kxl^f1USSo#<ay$ zE-0I$kip99#N69|%=;Q9no>a@S3?P40yGDZ2UO6<fEDzy21|KAH+g%uxSb<X?1EZ$ zAy85c9Oq#>&F>GP54k75nq!eP&Rh?dc$4672b(e9sUny*bDS$<cS<i9R;6uX<rKOp zop{AJR9x65Nlw#xH<QzFP4JCw^VQdZmdc_J>K|FEB+~Ei8rXnJkLz#9Bd-qKBhRL? zSoXMnAd-*=QdtQWS40xckpUb_Ws#IyL*@1%d@-CHUk&&&f5|#kS0UC+vNQPW?ER5l zN9^sAmhKC?B5(iG0***dv7pH3y~O+;%PS_q8vm={5n$>7Mi$N%#zXSO%FPeBG^<*Q zNpGd)!)f}y?mb6#TL^zI!cq9>-QDure3B*pO+7YkzEMv->xr_IQvH^y7h^5Os73q0 zC8^oc-&3AoorKF;TYMb;Yd=m*{qUAc&83j}9(#}!;{=CAG9lMlWjK5j^@2iB%+Asm z(nmvta29TW;qAm8n;YhF-Y-kIpRh?1m>Aak+Wu(w-Uas9KBu#nDiE{7Tf;NN#18BR zae8-(+oDM8^qiJ1CURGV$Gm|v{7Tb?BE9TENBA5o0cAy9hts=FJgACgr`x(KBDdi> z!awB6sfqzaWrs7o%`L3Gu!R|7oT}nfR-w8}l&K_!+7B7_Y_Vw%D#p^9ZQ8xd%@Z-6 zviJqz04fSaTlQUedbI5r!Vba{v8MV@<;1In#Sl%C@K5a28?toy0`b|3rr7>qLD#R7 zS7(QW`@v9P5triI{$%w!_d!2;FDX`Vp;O>MXi#i$b^iW1&Yna--R`-ko0r2gwkzqP z;$v8zYOEgPZzbB*2+Nbl=v!fVyAhTLl};$7amU=v76{7~g{{nV-rzG`SfWk^7o9%% z6U4OI9W7&vK>T?139<@A7gb+EcSeO5#g4bVVl~3q;xnJzlcKjhp8GSC=%HMw0-cX& zi=TxW#T85*r?%`GOgrGFRK!XmdeTCU6B*-ht8<SV(awSUI?y;oko(#*?3kpO7j|jl z;0BcOS!L{CXc?m;gQ3G(^d8KY@CuyhTNt8P8MWTqD@ZN5y5ZahpA13dSe_VKZf{4a z)OyJM?D4O!hpe=gCl+#fB53?^n;jaB*uMh$&q|iXwcd%4EsvQ##QPR6SmP9>eV_yF zjq#RfhV+F}?Opp?iZ@9@Yrmt`yM>lqKMA41W;wGcfwn!#pE5~_8odFhRhbqoL1;;h zxPD$T{E8d@99ZS#CKt@qQKw*O<zKI&q|M(_R0?|d%JwTSGWRlvr9aL|O?&<s(FIF> zFI}OpO*LSl+XC44F8sJ#l_&Br@i%WkDVxpCN`<74C9K63tdui|xff}OR&Ik&xD8Gd zydIh)(?cMN-m0<6Ptjs$Vt}2$Roi$ZSc~`N$O{uymE0iv4w6H?om^FJwSR;3#fSC; z%ITXAUO^-z?=8r(iQ-;8oE$FmS>%vvQ<X>1g}ISQ3L#6Gn|Cuw<**ctc`K8Y_*#Y~ z7_au<G$p>lPtCxqjXSE4!V4dXsZqK`hMdDaj@7WN>VuGwjDoZ6wAem07+e0rA;fl1 zO@>SI58KMHrX#S@e;2^Eo)`**{cT|{PD>2?!~6&Mlm`qUjWNBf!ZRThIMBA;{O8{g zJ-dJKiIG^Edys5(n#EVac+^ktBN$)r--+)Uw4oc{wegkm8^goJn^VZILHQ8;nb;^! zfLMaEVm<QbZ_US<c7J#Xk0DVo$!_781F}(pPg+jmJ>SoSUGW=W^PthR#a9p+i(jwl z2(0(-M&VWrPS*Mt;wk*S*-mtLCmyY@RBK;0#!7;EN(LXZYO<UH^YF_6ss@9WnK0k} zX3}mZDIw!@q3TKudp(I5Z7TkEV4BywkJ(0aeK5Y(|2w>`0=bUjy9VT2iSHoD#c%y% zqyFg>xvpV(i%NokF`2RK$0Xeq-od<-vA>Kd77nt0Y3wzoS~xCd;h)>TuJVdHY$|at zLHJa-ZIdL^QdABy@r(9I@r98oyUw;@;!5w}Z59x$1=t(_MZ&maSOpocgGJ$oxgMa} z4T<q27Nv+X!)LDKOU1whqMWhhBW_>_5Cw<;GA85j8PpSG((+DxLP_cF+s&y%MXho* z-1v$8pvjAk^rxjFM&Q7OL)Am#q`Q3HH%gkG5xLNAhxx^eKuvL!rS$T*QuSiS`oK3{ znY);z8e(BnE9Sxl+LH_)!0{0WrX+u7ZxO`sNL=q8v!kX8;H5U|Ypw*jr7=<sP2Of{ zBREJ@{|+rSn-$b`h^yv_=6!DA-lucZ++Md?i5G{rr-je8I-|2!g@2whu$b{_TsVMD zJG|YE9I82;PpC-HQwF+JjxchJI=nptIaEh=Zn0r3k}+<eDklC9Z^yjcTf2dWl8Meu z5)MLgkv7n&qT#mT8J7fNRmc1ZU2Vm&mj0Up4VsIKmw2uSgVNEJ=B)%cg3jgwCMjYL zER-mk*D^^VM|Tvu*n6v`LF4Y&ahTPbc<!yi_<VO=jWO-8+X4Q>ZYlCgL-%nrm&KJ- zDBGZ1crE%X_|#RP9Op>HOl)G_Y5!>6g}rm1in{uo=1<)<!o4fU{b>;FZFQsh@s~Kl z+RohGkqp0zety-;U_Qd&Le(mqIiq4S%)6LqO)kkHRS%7za2o6GPqhvM{NB|xii+mO zLcG!k%=16v7pmiOTpyzAH*UZK7JJ3wMm*@FFx_Ow*;l!fi`O#|QTAuVXD1_HrXf62 zTXYWE3OS`?ouckM<a3y(V7+fhH_6cBV_0?@>K2*w9+MOi^*+m14Svh&VeV*^cXM?5 z)4m!P3VhP`uK73%sD4BNCESDd?iOvMDK<$@x8hQVQ<iwgjIsnaSaGLVe`Jt5#p=JX zNT&66UkPmc-X8TNk$(9teUJV!wv6e0!O9w2e%2~$zM>x7g#$Y?;CV^MYx(Ci;5e&c zx3=uJ7-V7ReQ0P*$6-fJwYKq#xOWFY+a98GpVi8E!Iv`mnt7NxK1oc${$NK=ja#x( zI3452XZ0_R?B#Op(^8_l5}b#rn*z+KxAbR?^B$9mT;FFk#uco$sH=bOx~9Wc?89J3 z=Afh#&|d}gPZad^3i=K@KsCdl_id2SZ2_@Yp|RYm=F;|aE=?}|T61YH%2}y9ln<uZ zP4T6%>|x9Xefb=^LGc<i5WOpCpi=mZV)18q))&*NneUT;su*^9Te&767pAc~Wj^Uz zn-@_Jq@Zy;O*SM!wdhQau9S`tE%i958Yhqj0hIEnZG2V)3j_{B&A~3_pl~0^aX*Vw zBb26Gsd_r4R;lK0aE}?l!G3lYn;C3nDxUHJtaW}*NPkLhXxAU`v99Q7wAnh8$NUnD zT~hweLa_d_f8rNpPcbrO?-9zLSSSVWMeLt~^wqk>iODW0b=Wn0hPc@c!P6IbY}qRU zS)c}_>?xAj@!_`uI@Foc6&Ubfam<|0`W01T&se%sTXvZnwRT`6dNW6&)~<}0&M~Kw zN-<>cz09jH7IW><y*(0z8Mf=2%6UH6|I&4cpB@)%ySEZOC6(b-I8bLJ>7{Kn?6f-c z1`h=J6usd!bG)B|)>0uJ*#lV%>PKrLTg#~=ZD;x_Zj<zw4MW2otLM$%Kbv9-J83bJ zxT&+@Q@r{*UuA<)zQ$KKF`uFm^|nO=+`nKccO1x*yAvDsak_w*j$`KCIp^d|a!1~! zP(6<==!cH%hsf4dqAn?=`-~gG{AdW2LnT+!|DVD>HwAkmV8eEi7t9sUq}n=m&011> zVJ^B3?q-~?!+fo}(bAvhFPNk-17}Ew=E`9}x_cy$5(R`VoOuCWBY;SY{T6FL=Hj7+ zAhpHC{1g#m^8ITNRPz%`>j?N3uZVFT^NF26eWKbXO0FnIW%_cmy~waE%^X;oeXf+H zF&}1;aUPBX%zN-`DJlJkWxnOqTMyrMGA_uHgBSGYBMHov@r7+Zck=xPS*KOjtR_I! z@m8;!<B-JNzGr@nSE?QQ8=P}&wxFqDp}7L@gE(jl<HBV46WH!gQpY&p5LrtFB_B#h z+p2=-1F}f+cU&kMLuNN0{6vz1;~n#_3E89axew14_gaGn+e^TnEKyz{u7_al6V;!% zbE^N26C~W9<lwLZ+q1yoXy$qGBAkJr@nW*B3T=}f;*RofSU8H9yj=q4oYVq8nQxna zimm*XDvWQnM9~~WyexWP@z2r?I9MVfr~c47hd$S5rXd?nl&Ph|q-4+@`WOQ#0Cq1Z zQYyM)Ol_X@KIot}Ae#g5kA@(SG@B%S+6YGVqS~LWFOt?|EyuDdUF+Q?R<B11=%q<t z;W!*Q5*)Lq*!&Pg50!(H@olk6NQ`UasCU^^q-niJg}in!BpT*@Wx9~mBPQnYY_5Xc z;;L#aq}9T$`#YWIY8=f1zc$&9(~y+e1}mm)#|A~d)fLK3P02vDsNUliH{d9yJ$m&4 zEREet9jUtym}Qux2dm0PKD`6@DPjwGcaI8bHM2(y*yYj<2kbeJ7qO6IKz*Sk#`2-z zEM~b=`CdR(qD$serj=vxc!?d8sYlizgL!~LVfF8DppzJVsQOftdu<sXI_(47INZP+ z@-5qN6zfx1Otz(5M%9^%Ujqy!_uQ!|cWC0kHo0R{i#b6on>Qv%Enz+aD4`x6E`qA1 zVX4m(P1T}9y4N`!pS$bmTbF*0vroQe*{vBVbJ38VkLSKD*3tT+&N#nYTdke}<(Ghd z<{d+h_i)OQs)};vrBoxTZ@{ZvEOZKxw36aQFN-^^8kWl%E+0}bvWBg2#j)80D?$-@ zJD1{FXe6nNzk~WiJ^B0Pth{;gP~N+U!N|OAcw5utD8>sVzsX1FHsKnA;}6Kg2-G{J z1Co!)ejmU>Og2CTjXlUSGv48E#td^a=85Oj8Gm<6`-LN=k;8lngIb#*bFj##4m?0R zsVda9RH*9K;Z>;tY4TxK1)M67kpq&2s>TqqPQwIjLmdB5V`G(Zt*X)L1oKTO07;vc zi!Ba>*^+d*e;eK?#?kMbMY!MGx%(FP;aCRXcA2NEnK>VB;^(c6_%weBI95Y!WG$NQ zynh(YHmF8E&W2z>Mf|7W<kq{9XBseXikIRP(gy#mpmCo|(#&lA*Z*Dl4sfD%rWQ}M z@!@;}KPqsDIo_cDvhgg=f8rqk*vJk2jd3atk<(q9;QS=D=w{@@dM@HjyT1i&;CZ0$ ze06gE4YP2w(`t=7(&1=wF?c%;LiJ~1i^gFs7DKuG4>1pqy)d5nZ8(({lXX60hOBER z+$#=pqtD#fgmF`P<lrp;;I=c>AX7f)+<nNS50+v150_NAr)e8Mp8t@YDUXmg?$!r^ zu+RBwSx7IKitIer!`-ouwRS84><s%H54+s!hrUW;3ic>a_348ly=VqX!J6hLSx>qa zzXI(B-gf@=$ge%V6ZL>{&gWTAy;V<o$3F91<hHYRA!}ro-+N0RK5*ye?$OxVkG$pp zR&mr>gnm*PY78Ce!^C|S2*G<xeV~>D+i!3S%<MD}%5VJqL`hVfyT#yP5_Ny;EX*JF z@VZhh{uT1u)t)3VJgOf<RneDjoS+}g|1fg!@_A>=yz@`z{8d>f;cmf&f&pXx`#8(v zy~_jt?05{FiMlfR&p7Qba_Wia(5f5DjwFgvN4V66wu=?d-+^n#hS3Jc3zdQXUi8il zsC`0Uu;ag(ujB8s3T^3?AkW}!HjKp*Mi=`U_qHgGsE{xeq4YzcH4_3jE=TtE(i#+& z&|bEn;k@FcytIewJD94paaFX%3CY#|lSD@T{>U+ho&e`M9c|=ipK#xfn=no*3G8eC z7!$-eOF=hyzaB!vMCR=nEJatNt=dw0d$=4x?f{~n8#+?zKgm(t`h9gFnglcNCY;Z9 z#-G1RmWZ>^WPL|q-{5`3C-Zhx<rf9FV;eS(-B~aJ9F{FScLbiDKNhF)omZIyPRD7? zz$&Mjmw7z@Crk2?GI)Qj{yav3^7WV(D+k}CZ!m|<MSSx=lo%h`Gq_N-wLyPb1e?T7 zUatP&ypReoQ8h5;*(JHwcQ(H}H{Av6hJ!_TQzbUY;~A%!MW4hsWjX9`tc5IZ@UyvK zJ~Bj;@f_46ItkZ|;aDqwJ!sdCww2>~P5==%>1}hxe80%Nb8PjU?r;cjrbr%&|BpO4 z3dL||NbC1RnO{_|fmEmGWUf&;TsVYB0p_hD^1@Bro{PfuMvqkJJW6v;q729YXH*^8 z-XKrD0ME)No)~REZyJS6)BE8KrHh$9R&yTP(#m#Vc?j)rt9AeicRknRzJ~LW?Q5Cd zfF=b_)y!0lOfQ82i@cd>G^#U$6b-cK^<=+t_Q^MZ{9XYG5(rv@Q_r3PkUC=tAi#-$ zm{;pXe&c5ObE|U?Dnwo!Pu$@zg=#g?IpDR@BtsEP{Y7j(f{yTss(=d50jxKE3p0Qt zSaGPI{5b<ZXHLgsq5OH3G$a}3<v>u>@bGTz*xv~d0G#D0hAf|gs2C)}b9)uZII{>+ zhoS}eM~J1mVLWnN5(6i?qJyxh94a65^*THJ#UM^8jx;I4iO9ebM^zPRi)Kh-C}Q3D zk=@kXdO*uGmdS*p;7%Mim=WSR=(C6$)Sd;SCQFN4gQjDgi#wR&o^?RW5ieN9FITIV zH;<zB!bA6{!;q|A`5EA@!Fl^2bh+-nqXfVM(;e*x%`=8!bDEtASnKZJm!Rp)x2GK^ zio><l7JUhwZ1?j&KC~cK;Fvh~?L!dvAQRLl&v{H2EeH-8Ga#wygJH)QM2l%8P_>_D z4d+4>gYt%#Fk&or<2)qDyKw@x<)gE4Bq?5UCY~?VtM}n~<5I9vzc2i2NW(9X#gFf) zC0g_pfXzQVSdRSJ-~er-cP>cEkcK?1x9EmC<D<K=ywKsVce>v|F`VM-og+Cz9z3A+ zdgfLdyO70M`UVa`&6of!8l3wGm@PXQ{<dPNJOHdW&bjxiBp9xc6h}t&Dp$TrLdW4) zT_`d6^JDx(4oQjgfQZ-0`4}i+bVE8W)-Fcyl(`3^CmaY@j6D`{Py;JxF)VLlT*@D% z{%rGg5_BdB**}!88u_Mk8MGY%)}U+gm}(4{_n`ncfSGTDC$W%MsF33}3J{^7zSc1R zJ4J-4Gk~Ps_-U2K^LS-7o(JlM=Wa7`20EL{z%mT!0aKlK*7bpheOSm%Pdl*3i&LOu zqcHX8;%fgqNN!UiD%B%t1OQ>I-DAGv0}Orwbu`}L3??kvj|9CYQ`BS}-saR|nI`}$ zZk3#nCuZ<a+BxvsnnM7!jBs!Oebi6CTs?8ZLp^oNCopC_Di>14@(c(_FuuWm2j0~7 zy+0btn%N_tI&qEpY)ALYb;-&(&^tI_|5S0?>%g0We>SS`?DgXp6iGII469Jom4<Y+ zwyE_ll?Z7YSE_}x-VG8hZR1+G_SreV*r87@&}$0y$2gqT*KNRO>xlzp#ZJAZNZhsw z*u~4d`G@oOLnX{ZLuYA=4k8gVurDDiYX2T4b%eYx8d5SZ?x~L#1Zg4TmALVHnz|c) zN)k7~kKTvl`P}-e?Wd&f{jN-o-WK=%EM9PW;D8qCrmony7N27dfTd>X7a~pudMdh* zSl}E=*Ys+xkawcqn&fTA*@vp{z`4|C7b72Ni+653jeNJ8XioNv>3KPm3ta2u;9cM- zn8~I3x~BoqHMuZHwjRUwL|HjfK$(g}S&&bO*d~7AFA>`+ze%g@c+$GB1z=Ta`Zp@Q zI`z(hcergCh{k6Yf>$!M-Ye2Tuna7Mh_X^qQ?6G(@7CSVi?Rw)6T}Z3`u2RfkQIwn z#1LsX=M4v<tYXDNB7!t8ZfHbu7Fe}`s13MJ!@)%91EuLshiJj~scATs6yGPgaO#s= z_xQzR1dvF-L5uByyx`*JBLl$C(K-W?pAnzlA;x8fL}eQ8lE-DQ>Da&>677Y06^<Zp z!A41W`K7oaOW>TFmQ2jR#XYb1P+Y&6x5bANCHNsW_aH?)MqXA|Ov_rxu&vk2c3<HZ zZhyR}PhgjDFfZ_hC@#=<K_=_LWYyZjeI%IIFFN)f6xDnGp@Ts4OL20ofs_yQ`9U3Y zs^0rCeto8ImgHH*K0=P8NI$MiBI%Myk$2OyXowAM_BY_B&t`wPRa3?xY+M9AO2r33 z@7hjXAsvz)a9{;EFkf+Ctc&wT(+iI57n`M=OfOZHx~3QAY^Ka4%KZ4mmvYa_vemCV z^`+Qp`hR4n&9YaAx+coGRwzX=b=GV*)CK9uDZg%fW1r2-pF{JG;Qj!u?^3DD5YT<2 z+gVoXoL??(K>vB1trgCipct1SZp?H_o^nc}5k5My((8O|E8sdM)o_3Nn}3AiPz(P^ zrtN_I9WKkjAxs8-Q!O(6Yg9uXyqQBE7~jqOHVs%v`p-&3gsCAOihFw?0*&!XH#Ed? z?eV!^_Pv|Y_jVTUy#H$Sp}vC{T+L06?vGcdk3Iyo)2JWN7VpPM7|F;z>C3)1Gy2|D zxt~Yw(E~_Kj(*<Uh&-q(B<_3*$c6N^Qt8=xGP(z-DAl`?xNlUdcd4J7?zq-XUY+f% zOV(1~np<UVx@Yr}t)<4*>)_j#l}a;=gbHJlOsK%6#0*t=j4WvUjA=1GUQLUIWOk}? z9+E*qJ;q;VuXIfaxDl87y6|q=RNaN24Y<wTIJ6cZO5Blt&b9{rHTM;m<P69T1~cXd zG;75qekK5gPgiP(ss(w?0C^N{JuG&U)?1HD0<YwqkU`kE3YF7?oWpshb&FVaFCanc z%16NJ?6uUxdo*)p8TX>!>5pT<UW<+4k{j!(uNJYpP#hQrS*fVWLcAIdr~ro2<$!Nk zAZGAj{9G;eH<U*uB#W`-F6oy9QJAPh+2`R1-9k-XY=rqJn&%09Z=XOf3;>}9??O(g z;w3_*Vsg2@RK=qx$q=nlZLajMMMhmkDOt)hF15o_|J{5O^%D{lP?M!bCEr6CpGnsT zW^=tNFUeBjF9OD{o9RMl!FMr?`{?hCkh*@((4Z)Ch0sTbcch`!g{=)}1tk^&OJ<|` zYAwYq*BYiht+0d=n_htl$h(-fLE$I)NLN~arJq=!ki<!v8-3MQCINk|_hw!<Uld4? z%3Abornh>!pA|E35x|5qyWZM~6cCUH6LVg|*In&DFPx8#Dhdp=jDdP9jNh0M_a1@{ zz$G#zaH%GsFTi+kCw+5G051%Qa!gG3-HV9*Vi(|}W%Tu2b?GQx<hshkaYD<ru<O2- zUjwUbadTGO{X#tRH8IUC=D5WrV-Dre+-1eo_1s{Pa1qM-a!?)xihzzkmW*c}2zzjI zjoVqYtvIlAE)QErk??6q8;vYkjHu;{Ll~lPsFD|f_w57E6l)9LP<)>Yu;oxuyvkdT zlXAGK3NnmZ3J;f@01nRLFYs!B1Y2|xe@*tpZ^V`1Gt(mfIvzet>m3KFsl3FwJ08w* zkG;XI$s-jpJHzR-4h*c|(`&u$X`ES@u8j64Zr%F{jrR1Q-tY;G_9y8=St99HAT3j` z{v<=0Ym4V*!eD=rg=Fu5`#ZR9Bb_h@O7n3&dv9Hum<VGH-6Uor{i-x{&p_$PE{vkG zl8>=jRfY=}te~rGtcrmZa>dm!AGcw@c8~4McVJi+^Wi;gK8`=-+OoDV1HZXA5j~O3 z+4yl~t&*?gL)~~^WqkJh2=H%m@;Y`GY8GplLCjAF-Sj)VkrJN@N1-ZB-$>mV$^mc0 z=XZqkx^ygnWTHcYxJJ6~O_%d|y&Z>tyPePKbs4TJvO+nf{)&)3@g)7KOz;_2yg1IN zaFwK!z2e>*^od#eOw2pgab%AJw4}>{$d|zL+M-{O6IW5HI{l~NeyTSyvlef0<LdI) zMu8B}gp;9RVF#pfn<Z*E1(qI<O8p*$>0I-X%qGd#pvB(h*u>+<(Rda9aLacD9Fw*F zPJkEgmz_BI9!J(Yaqq?Wv6=q49{?sS1)E-LJdHa}P#x?fbMw!97?Z`JNGytHH}0S` zjM5G{Kx{BOSqo$iP7~}gu0O#zxfNH2YSA&^U(CUt=LnBJyd4Xo?}5hB)W#Cf_iV&; zw`eIyw&c|rudJrE;LSaLocy1_FCaj$hsU|y;L$8C`a2d%_#*Ne(a3w`+$?iG660&Q zC<Hn@1ng>Om*Qrr$6s_y({Vp#Vd5-gEoFVUOG>m<M+V%r@ugCWRoZ^XQR8Z?*NoJF zeVicgfI_Xy>wD`2(O&JUtIyw$m5BHQ<QC<T93GD=QBM&?^6~-aP3g|@o)RpG1`c(+ zV<*lpb(WQj@Lur1UfW^m*bC2WZ>DoIeLJVLtVA%p7dN}_9qF`yCP8D&?O*p>%uAJY z;I*{lD^^K6K4Ydzs4y1FgbFzpw(a<JOp~=qdvDwEI+;u(PO6t>m>)niKq3;fZg%Mj zq;Ig&XvA29Y<Q}ySy{a2fS8y}o1Pd~KIgaB|H@nf2Tt8kA56~8!2ib4l^l{|I1PzN z&dJ38#yd!g7q}wZGi!}=+1qG51R{BZ7ysjqw;gzY^)w1ia&8v>$7;eOEaGO7pz%Hs zhI4^Q>DoHucIK4>X^VZjkpP4wgYeD{tE<dwDL%MSM~{<_Wn2?D`KB8&J@yI~hvZsA z*9Q&k+?9R?1VLWp*Lb&_@Myr=R2a#d&PQ=AIteB__TfW*Em}<DT>&2)J6<o~^9Dad zy}&#Tf%Xh-(YKLyB<k-#n$ryjCq1%M{y14oo)h^Z89w!}dWkr89;0aea<*!n^P3%; z{Ia&!QP6_nC<YFkMbu&gNVSo@$&H4x4$<BuXYODUU?(erO}mj7x<t8+RYueEvLCH# zU<02)q0Y@e#wVKfU%;Sqvl@a&?@I@`$GD&qJG|+3`F<;FSSc&&JC+f7ON$&!L%b9H zEc90+;%LLSNIg_|M+5va=m8Yymd_&oF+lKcJS}$OP&Hycay`SE*2$Xo<K9c;BSig} zzQ^zb-ay14dWn(@e8TIVN0%?M6KRRaZoXmaa;A#gI`E19M=(!hz4c08v0Y|;&iWnx zvA$v!p4BniiAa-`o`^K!3FU`Kz(~5v*`;xLki(StW;!i(M)hA2^(dAS#N@D$OTl`q zlSr(%n~AGvIK)%;;+d={M~(ToUT4?SND)u(A{F(g|4O$>kN%ZPe;f|yU2p*B$}{%i zUMFTn)=DBrcBR45sHU&-5Ij`uU#yNC>=diJk*#|XcgVmkq+<yukG&?>xPncg8=HRv zd1!$BX-uv@iWelwRxSDtIENmmAgvUGgVKpeCvf0jqNGE8l{bf5ugBSH7@DCp^lJ~& zja#56B_xPfJ#G~vl%-Nkx^9#TK#Sf?M>;CgB3qjw45US5AoKVW=yNP_9J&XZxWO*< zi;g5@^l;=Myi04<P~CPsaWZHhk1SZ}@5E17l_KyfF>oR&if_QBxx$+Q<(E4#!6U}= z$oRsp1r{p5m(F>5yuv>Z2i-SU8Pyo20DW+3k-FfRcOLoaNrz8E1-IfMt@T80<HENH zdqN>})*SAy#FhZP)(;Q&Ii%-2EpgNra0hu&=MyBmgEzW8F^NxF>>lh!fl34Yi_uJ? znX}a2iLXlI`W}gZ*1H>^ixA4!j3QXEyc$Kc-ZhWlm)6_KweT_hxHuXUvV8_(RMK8d z>N8R#(4wD$l&E}84qAo-jEwV~eJ_5YUzw{f$kS)w1}il0_pbv8*57_@5iYIuYLq|- z&Qy<h@;Ua~!maqkCcxkA<TnO5k*(=!847`KZ9f)I>}IZ|Qkg~i(x6nbbsWm)9*cwi z^0ercK)J+)z0z2qG68xXkeQ=j$-6{4axi<T&+wvZsr6dF6^hJ1^{n<&p+c!ryC!!y z@C6do51t@(S=aUkB&hSkp*O{y9K}wFW3`>}HdLpPZ52~cpeZ@0iGy0CSYMUFWK}ta zws3s<wb&Nge8rKW#JKA?g*dJmM8)as*Weliy%Ga#SoOa5M(H<twJja~+4@&~?~c-M z@M&AZ{%d(V>?nPlpZS|*{%mbah5xrWi%J;<z8;^eZ7KC%M*}2(=J7zi>+xu{H$xv^ zkQiUy629h_aMtP9DRI!}&C=&IaaB}{o{VV?^E4ofHO2H~Ydr|qAa0GK)mpE6TF}@Q zhh^RT8JI?Q-zn$z*L{p1?Jt@;P^eRF(9>e4l8p1=RC9&BRR0%7P32wvZln&xa`EXL zh$+RsvFc3R+XJ_@<aAxlbZzWJW$~KwkRChAY9`N1l!ftt$-qv2;V%)R?D8)Wqww)h ze~fs9<dhITf5I&!1LMzk42=H)rbiZLGEXti2wCtc8YVlC%UkoXyp;igXf)0@DFHsc ztOLC{3rlW4K|Zc-Jw~xkW&6sI*<eIx!K;i>h_q-KXbGGBehd0o7S>{U7^vFDD^>#6 zL~JI0urf)3b3$W}g9zHjb?NxRGV#A0Z5N2R2S3EB416ZseaH;F`(R1=bDR3PP5vwn z^tb<A+ZZQ#Q1}Z++Zkfjas22>xEC^GaiFjLv#QypO$S>hTx;8g!i2Q1mJuZq(Sxke zvTl|g{TGT$6Za`h+_-t)Fma3it%+O4R4TC5v~vH+#6c+*6UF}@rfwXR$`qJ7;RU*t zb;k8@FT@H;nqD)~$UP;E+-5Qdc2FV%P|_bGhrq}^t&H3TW#l#}Blq+$BZsalrU`0A zZz=Y4nmT77Ce4Brc=bt5<{mXfpj@mTl8L`8flS1eOsMrPB@?fh=fJlE*r2Fy6fN22 zm4F7~g5T<m8@GOyoB_>EMFbE3AaP#2mY;dG#@&!IWe=)Rb<p<sur!^&6?T;kgk5FB zFfY@|ul3UUU=B`NpQq)_hxq`<l2<m0soCbYiOIx9QJ-yI2rS?~E9O`xiE4a%hjO9| zSYoZ59D#DU7m%S}*7NIW>32h#=Rm)NVc+IKraR1^ORrnnlse-c9gC=3Q!TE-c<DC$ zl9z#+Ci!2D2w@+oX~n!e#C7XiB<}LoHuGLoZHpX5#aei7G{ief<giA8;Qbisti|H0 zCm^8OMi~`_C%I7FXk4xG>oJOiEsxWYKP0ZkgbO_F2LBJ@>!|6i3yR-3^Z>}r!B`wR zSda4+qH?s2VgJtvH@(srWdSYWGF>A*mUF2<FG6@uv=jB9Y_i2$Yn-{1%gTuoFVY;z zmaJOCjg+Y~6D3(HC8O5(RH!@|D#cT497M{@dW52>6bwI}M+!I~Q6d!=X8F^p+!)e} zPk12sgcHGwmt`A)5xQj-m=}5{1nu;LkiMD9C8Y)8?8Qps!hYG&FvaC!ZX<4a5uF?G zf_#4|L^rXJ%R&uf#$7vHPrQk=ujz?Az)tCjv%?s|JjITQNA}=zq+6VbypGJpNKfF1 z3w+6^f25vx12ZfF0-lw!D@Ie1ccLVZ3=DUoxy8g`(Hwm0k*z43kZ!ijIpk_D<9o3> zj86~`*WMEw5^Ex0;x6tHzW37-%Jvi<&sk4e>^Po8L~59_un>%>)Z?81G{TLR8YZP) zR{lHnvT~Su(T`ev6n!1yU_OVB9&}WZ)_dpc0Il^dK7cQCEynj`COT;<OfN?Xb(Qh# zBFPgBa9ye5D5L%&;D+HpwzRYi6&$lWXsknK>^%b+%&GDXZYW&M&P57XrP#a=_8L7{ zmAuVLHP;_XCaY#Uj_jKfG_HJ1)@7cKaWj}D7n6V4TI7E?`GBQo=T0s9M?7nf7t&){ zkZrEun+C)X$aO_?3!G=P0zxF^M_SnaH>DiwC0zcY2*oxlAs&%yot=wQRWjFYBXT(< ztadvWuZEMkZb;>Vz^cHnMk8ov<3hL0Hc9G%YRX5ITM3c5m1#Yqwoy#WHqVimd;Zfv zjC?XgO!R63w<SZrnmbX}iVbWQYZxSi5&91OH8Ix<yH|>0T&XFxzKi%BK1p=alEC4( z1n*`sO?7`ot?|raD@LWf*4T_^8K6>%Gk5Wf28AQrJJkAFyxQM1rLJl2FWP>E<EA;R zqLM~W1MGbY97021dKL;fm42(hQJN=?;njQ%;Db72<8!jhFQqJo&mKYsukPNZxZ#)Z z4goG+;cu>lYjhEHZmseD8xrm;xKCgeDCyQ`nF*dMLh$TNJ5;7dW>OB;J<NoKD@-Wb zneI}V8kh+Sf`~Edl&JNfeiixCq$BdDOa9!AD>a*8h-LxR21&Q=83-t;XGDz_EtRMO z_iB|H8H-uAO#Y;{ETW2tZJk$(Lb;A&^hJ(vy?77-EdVIBb=x_z_R~=WdBw??4$pe= zP0YV%wZDs&<~bRxf;Cj6SEM3&D%!iv1g))0K`JL|Z9kBZcA^Jlv<(8NP_P=eBLVO@ z;X)^r2X?maOQCX#DlD~sdp=^PQ5|&x{*~ij5Z+nU9y!@rsJi(YP&LnqVYs|qQr0%j zuB{p&GjJnx_pRfB6&AX7gBqFb`&1oL&$g|VMSjR4z|6;xAgpAe2=b3d_Kd(8?XR2g zaFY^8AIKFKm@wAHJd43rHF5-Th#oq<5dkQ#|4nL*MtL!EVe2TdsuMhp7bUOa1tw4t z6pORI!`EVg;x~w-Da25d@k$`PRQ~x}F_vp=sX&`J1BZ~D%yA+{IYB)>6!j{m&I78P z_%6oaq%vrn-vzk<p^$=D&kS@+ddP`eJn=pF7g<f%ipnXjHJYQcR~4Y5TBAYz#^II- z3<4p8fD}Y5PBp`3&SZzi*a*ZcAWnyU8s2W9RO<H+p_4U)&gxEy4kL{Uh{t%6UQq() zTeSBLMyyy%+@#HhPV)w*H2K19zpB+=Q<EcTX(kGRN@Eg>SUdj`i%1ChgxF7hGtiWQ zn7Bg<YrnYWnUaMnUNrS(ECn%yxXw<iGA>8V5Jx!@1n7eM5?cGk9n6F>FTPz>XRJqn zZK~eZKZ!e7n~=4~b4vn)Em?>eq`vqUxICnjpCbKffx)@&%hVf@ilojhcM-`}x=V<f zQrKbM>|^6~*d4&fVHMyd;Hzj*%4h*m(}?3iVH6vYA-Aa*SDpopMj6@3<rf@!{NGS* zKolASlSsxjs>|?dK#TRrS9GqM`LC`<K2@P|pUQAOGKknpV5L;t>G(=>gipTo*R6BI zTC5zeyC$bQ=qYSveBHQz4-m7;7C^4=0NJ3J>4iq*!ke!Wl~y;+`|YeIOApK5Lu(4O z*cYf7)F{LacG{v3@MB7R)m9LR!Zn3)n+=8ov`>}Lw`s8lS!Nw`p<4@`d!Z*X;w1?6 znfI0Ucre-bUi#=`DDRD5fyMoCU&+P%8<V5CN|_nI87uoUv4mguC06_U-oia?SA8}5 z<-Rx5NAJ=epNJ*@E;x%{CEG@Iy`4;=2Ec*tJ`>lhW#Xr!-P83iCu{-kbwvH(`T}~J ziqpBs(_qv*F40ZIwzIGC2M`6gC_7UgV1>TbKaOlyw?oTSy@A$`4wt1Pp6j5>>laHl z;RzG3tNNwLH|TH7|NfFyO98GY`cf<BY#O_Y`hPL!I-J|`M`SIAUTEm}hki7=we|br z6ywGT*K*=Ed=}Q7plo=0OJ#}3T*nt^%V&`zPO+{N1@)udC3y+y+2tK7zBUnavkv)` zj;E~8n8p=*;|QO?7>-W7H7`*XFIgZ#qScv(wn@6sbYQ&TfD++R)jiYt>fmyDtc}TF z>-b}90fdW3)pFX?VhGG+NwYi+0-DD_-s+}b{ObDV;q20SStznu#d}4!19vb@-ld2I zbhMw}XQW}d8gPU0*wg$107k4f7(4nc)(Ly$Rhs$%6ANZkhe1qDtUymg)ZfAQCbv#j z`rF^k2@S7Qi*hG$B1Yete~B1<Y5oDxY=!8YU(cO0vdj*=*AFCO9QN}s5#vk%|4c7x zSJY@H9;yxCrp41ioEHtVKv5Q&uZSK%*zbpmqIXwh-2NKdLT93YBfi}Lsl_62uCP{~ z2}YF0xg{s=IS;ltqy0NePUNb!SjCLp?lbilCO}#;1J7ffA#3hlf`OP8A}tG{r171| zrEez7>gzb+X#NtAfnT;Rk&ka?V`}S^L|&(k^WlK+el$ap)<ir7tyr!eCynBdk!E$Z zl>G+d(xC$A5v#!Ucv5<<0|Ve5kVh=K8-)<Wx}Zs1M-QfuMAM>a)G1HPC<f@D=s%EH z8OO?fl`4>&<Eb%bKPtOg-$89cHrz&ls|iqy_i+1QnwXn@T>s~xd+ud?gcm`J0E^lC z6F>*=-SO#+RLR2pT-<#NmdQvweYz+ArMPzhvq}2&jJSJO+iCHF&BRG}zdRnNroY&Z zs6>!5OYe&$9fLpVxwI)ft6hukMV3o%YMFDry6N!J@O8~CT68}Pp43wk={q5^Ei3Rw z+qcB{j7!5!ziDqxB+@!>nsDvl+q6|yRLK~&#P(*9E?X@9+27QrEFmUS>Cf(|k}pEv zc+o5E&vze`=BpGo2aG!l1{Ian8Pm4QWDCYh=(tAd=N50G!$JD<+nfic4BbPTnSVu} zCDIn7wE0t{_9W8cd>*5oZ|C#5%niRHl-9b5-?KAYAJR4=$TgnHa579FH2ANJk9P<9 zTi4(^I6867GB$f5-^_CE1^X7ME1-k0AVrn4vuli{53Ano*CmVCeS84uXd5xn%nF+0 znZ?d$wFh^`Gb`hs&Up2$nR=BcC}k<x0v4GFAh0@gacuyIeBua=7g98dWn>nDYu2YC zBKle6_30()-1Ko~-2HRp$<<HBbORcgjPz&f(-;`!k7shVG#5~C7X+AOACwt3FgX@z zeQ&1e?tLY=z7Owi`HVQ8iI-reZ3|9A8GnhM5!rS^WNTJn?=6ghApx3QWb8WQzdDBX zjTZZi;z%S>RR}TQ^&WJObW(9U9;nK*kxHjDHOhWn2yp}Qs$aF(CYELV^c8G(DMGsd zshm-jaM2N9$u5{8TzzJiUX|IME>6}qR-N8miDT9>#2I}?diVG=?A*U1qkED|xCSsG zK}6t3VpG$zk^U^I8*TZ`APU7_OqF{Mnz=}k4IHIcs6{Wua8ld24ULRv#^|3-sWa*} zk3jP@peea^;}$uv0YwXOS%Z%8$vsE`tYVata~L3S6HdHCeF$Fnh_mYqtyj90#pqkz zy<)s%3hB}3-Lh8#J&elm5@^fzHY04vqb-xSSfVv%BhXLzT@BnLA~s9iQHCjPRPATg zWQc*-UEmTZCCWJBW<ZN@;I#0W%!A1%wc4w;l1%UK$$ts;gj;x6`aI!X-PKR|>cV_- znxp-%yp20N_a9;+g7UTKUkGm|manyFEfkYg@?2SRRKV4GhRojLL8Iph_pJf<itvZ< z4*&uOtG;*;xUpNq`io?{v#9P+CytuL65gsPP>#K%P<MvU1o_+uM!Fi+@DZV@-=~H} z3v9%tJ6U5)S8izm2uGEAKKodb#Z2Sl^d_9K1jfrnU-LkNELub#N8G;|ZV`c6c54{D zfVbJkDwquFp)kB6c=EMPcY$Z+n_cKbS(7YK0(^KUeKFbdXB3_yD5yLVP_N6vunM_6 z2uhquRb3Dodr@k%lufNARTz9+G)jx!4KX)=gAei_n3Uu6)Q%+X<S8;P+0Dv*dcQu= zO-jfi4cBJS)v|cDD$XY68l^DbKs6zUU&!MSHBIm+#$mFEh0P7rD>5k!hX}}|KU&q( z!@&ywI42CeoSZE%w!EO~p6Ex;Y*M-e<UL&KzYM+fYj%y?eT3~RlpLDWY~!3KhY?GQ zosI(ehbas*{qp@+Ps#TnphtH<Iw8>RYkAY|g7;Atr(2QMFSU+lo#smxc34@&Y!@ea zOSK0-wdaoujBnd0%1b7QBJDlM37#v)kUtBR@?W-LD$+>OXKS$=RW=G_k@n!ktQQZ` zhsZXjJuw3RDaa<S%7SuCVAMy7w$%bOmO!@+8}zpoY7cTy*nklrn%d6IMcK}NBZda8 zL321jM<MLlft+WeEIi}P_FVvs-|0|P>Fs~9iSUj>K(_vGP(9cW?<0GJ9clDWvyDxg zMqv05@{FKxhUx*Hk%Jwr@yv00rlRwHa|K#s&3P4}f}rS;x}*V5S70g#O_ZJuzH`}B zh>jmdCNs=6>`W0%hyJM!{0K?e;a@N_6$@|!T8snDGj@d0fl|R&sJSk@w1$88W6lvw zZ`t%`;oAhoM%J#wP5cJ<)<1IG%B8<z^ffiEnsq`g#l{a|?E$KSUZ<R%&|>Wrd!QvQ z!4A-*L(KKGmEc{yaNj3pcmjL0<&&AC){V*6rQ`W{WqM$zwv;YgV3!u-v^tQ;O}OvH zlcOv$kQMl6`)0H^vvYn1M2%beA<vm&LM8_IQ}hIKXN&B}m*fj+OWH1lo(>5ugwwR7 z=h=21Fv>+fk0@A(Q@O_$>{A;pOAt4T{aF8`&W|M0xns9|fZUgde+~R+c$9)8wT9F8 z*DYV8@0eY6RZUbqV|E6O_TS<yCaF;f6wB7#4~ns7J{lY98S`w_lvKW}kPjOw|AuYZ zC@CuTxpOM^9j^q6B6nX-^S+~~65HJIE+@S2XsvM`@<$jmbtWrlMqB_^*hD)9>(GM- zj?21mM5)Lzf26u0DCRba310Ce`xknR3e^WXK}ll0VPb}}vX;vD7dT`s6;*;Pd0Gsi zU=&`^0Fyi~sA+8}v3NIMzQY2{QybC${d$4lco<K>f`$v)7c)(m!nmHI?+w%-8UrF# zYphb^Uh^^q8t4>4&2qo7tj5@jSu}DI^dH7A6Ej<%(RTn>Ic!1ac>{Q!j~&AR^*BIX zJ&h1TxIPU~w2jlTXk$ZKJ_1s|UgmC{g_s5Du}YVy^~Ax;F?T&3J3|4j3DDL|BQ2pG zboVZ#*BVt!M3a=pz~ukSZa58P4(T&w+|m!8L3|&k)OMs}mOsnnBriH3>xy}PF%ilK zZQ4V_k!u8QKxZKd)}V9`^|RxO8{c4tcFqUn8fW7@Urv<MmL|+hvPb?|^IT#LN7$GX zPw20TCXRa22}Fy&3sK-oS}{e!1!?#m0ve+i;urJCX$MXrJ;|q;`ffSTg?eF+GeC8! zZeNY@t7mMgBhXWiaH0qE@_@mdaNIy#<ZRlG^cv%5BQx)jnLoiNGne`^V6g}`qsH)z z%;^I_EtaryDzNd)pRx1ZHO3n|N8r#c!E(n#e0h|g?uT^Ig9mwbxE@)`wA=3H=i;3J z9QZ_E@i+WZ7r?aV$5;4~DsI})l_1*sO`F6*?qe1=9cRR8B4eDs5NmHq{gTKwH_lso zMZc&AD#eFu91C!NDF}HA%z{sgf$iz@iHji2c&p#+ZuRmvCQKr7a*jj=A7MQc=T?Q^ zLp1o?qACkE^L3jb`X^w{2VVdc+0essnvX0_VwYsKZrTh?9f8kV9*ld`xbcNSmng|{ z?$k>k$SQMw5%_%W$AiDC1aUpVrn`~3#`q(=4e*Nv1W__<TcYzWLc*WEnCxP{4Qpii zs}P<{n~BhpEE%H{9*-bmT@z>E_5yLO8;0vkM_X?GGqQb;rt8%Ki0|1AB26z1cn}hE zcD*QFczgnWWkmWsfzR9b=5Ljz#ooiX9(9YQ{;mA#A_`Cg#Xzzcn}g6;Y}JGjX;gJz z3FTERYTPhjjTlg4<Ty*rcVp<2bhPCu9GIbc9q`Bp9%CdP`NU(4#G^zn&6jw*(f*1R z`d*>M#*;pntijb@4H!;(u8tS{l|n^xon>5u-2=d>p0tC}qKk4G3IN4&$bO@K5_n*i zjvH>r<1`6yOS8W*vW*t89HarJg?iAFD3<yI@>L4BJoY<JTl8l>y^OR1rVV}{fsGuq zLql+Wwh<6Yu@wLjvi(_s9W2r|4;2=O(xuIP2Q%boYv~-!G&*;S=A}(99@TR&EXBAI z%h*H&;P`d?354P~^pAQYH&3|s(4WG$AAf>Yzqctm;adHpLw{<m9$p~|ai(Epz3tty zKPI`QS$z5Jz&YV!whw_^Qc%ihdMmoNvn#E>J^lo3YVUPcC5V7h7;)~xJO|G(vf_7? zNF1{cY9jDai*j{1@`X!_o=*DCE^y5*a?Q?l&Gx%ydtI|LU9&x|*=`UbD8?7M#uvH9 z=eovcyT*H6<Fj1jJ+ATCdVnRONrkRSMXpH&u1R^WNnY2aEZ3w=*Q5;iLiJ*9p=)lD zYi@ySZk}syu4`_#Yp&ll*9RA-0e%NZ0qBlgVC87P#5@~lii&$1gcB6vNIn;2M`ss7 z7z!ghT+rWndg*29+M<6#;K4fO0`y0R<2~JmV$tw)5C9tE1s@V*;B3@WG=Du_7cVJ& zupUQwM3T-eXscsEefPE=;eI%<Xa4L7fg`tkhK?@ArL-b^UxO&U<G6Vfak(keb(7b1 zlgD+F8>}A`)3RLCysl{;*R*uVNi|NDw+WR2D%H!`6XLO?`d)^XjR44*mAahLhmTw5 zIy5|dyvjH{iz>o{rk0A1`x|CEWuqz{Xb_nX=Ttv@981+N%PjOy8eOFukE7l^^Y3i_ zTsK-5G^zWrtbqPNX9UHhbk`&gNMCJY@0Yc28O9S>`NTugJ{?w~JsQ3p#+-fxMqBF_ z;xg$9w#|clACsnuPC|R>U=4Il*D?NBaKe-Pk`tfZdtZJp_GRnnO-y0TBvdKKRGCIc zh(})3x`7afCV_ozr-2&T^8Ab&AJ2bjuot@cGI0m(2VSJ>o(Ia{Ja#KY)VU4HrZz)S zbuyQ&sHjab)=^D36TFdu6Yh~IicEoBAWkOR(=3HT4MAk6iniz}LgDT=xB?I(Rt?U} zLZ^U{Rv}Um`wX_C+2X1Oaed<!rfZAN1FN9zW4&ECP#n+N(h2y)dRDPBu&v#IP47NV zxBvt#)qNDtTvzjARG;I1I4DY2IdV!La|Cm|4_6r{{Ysewg)>ow(!uff>wRUBga=2N zWP*ph+Tv+M$!hi!Qa=-I?C!;hP|bdyY`PXbi@9K*v7dIVip|wxI9MVn^7E6Cudu3d z50J4t5~=|mIdSlsP|t{dl%jxsd^dLFoBfz&Y*4I+ZY2L?l!%}kefd48d(1)H_!v5J zOAii9kaOKweSyM{A2)wUB=VRaJA6nS45@U_QxgMUnZMzy(irZb#RHkc#K4OOl}^GJ z=v-G@75RVy?~hO5g=grm>?f%^+Y1o{a;W88<N+@y3+^<g{^F}--%)sbYcs%MC4ob8 z->rnd<eowkl4~$P0}P3=!1j!*XXv|U_J7?+<KT1NEG-JQrc(sh0S7&`WYrlLVRiwf zHc?AhVNHW4hk6pF5$WI-2R@$58NTGBbgJqMH?rG-I1b0u`sAbZ%<7B}AOi{MrQxRo zJ3k)v0b-r;H>3kRj?9fPfq#SNqg{z;gsu_)@JJ_$e|Y2~4F6d1K3OrTT9<#=&=sh_ zM~MiN_?M7A7oX-bz>~s~e1tqyXIzckWYk0_fAde0M=f2-v12m)Xgb<Y#7iGdXAbV+ z3w$*9ZJaOhT}gXHfi=__8OSmrQ6i%f21@EBpneZB9vEDr=v;xm@K9wz#w4UE*mext z&fb{=EW*hkhtpobhu|#bI$-#O$WiwKMv_R6coUsrY3On6*mgBIM&Adq5o(ViK2!W7 zi?{9-f=$Z*P+UC={vfp<_R;z0_vuFlE5t;%J}~Ch@Siya?Lj=cvkEwP4EG;E4vf?R z0wbf+`#FV*!+cto25XZSR~hD7x1)?3>hK=YDNm-#7H4%{azX3=jMvW^yqBnL`Y+%} zg!!!x;Ym<tF?bv_BR#r4SdUJGYv{$=2W>9ONcSW-J0rf<Z=f`e8LcBlxUf%(Fnkyn zM&nK7DCT4_+lXsMp%u0w9cm(7w5N+(RjUI421`I6jZ?|=qa5?wK!6^B?fLoo#ZVEb zI}01>g6IW|b7f_$2&el*2pMlVztTE0|8QVn{sqY6gTHweIjF>~PsEG_&|};^j?K6) zOLsql!V@C>9xPa8b-Yp*ar;RjZ^trFg;O4GbbW??v3`BJKGOp?1xQPc%y!Fu<?9h| zP#}vck){f>5>+DV-;GknA8{TTG=-1YZf#A7m68HtA)9XLr7U^O6G5{ZWX&T$+kS5a z;EA>VMtsSxxMCK1V-|kdMAJQf5@;oMh;mkYWQR;enqtv!Ge2AL1V8kv&_IHg4MZQc zr?Y?9At`o!9fvdmS<K0z5qe+iF7XHA50ZP)W{ftix%K#40GR(_k64?V0f_o}Vnc2w z9>BR-dV6~1>`aJNw!#b#@$u9ok)vm5i?0E*p|_CHixEuReY!m*={0gNeF&1~am0>g zLx!e&3mX*~K!o0+Vae)l_-TDSbB$j8)5iS6m|M%5UqTk>5odta!2xJUIk*56VW160 zMW-}?2kNJ#*n&xoUt^1H@Zq=-(-YZ2KJjWx<)kxEK$Vh7^z*<VCeTYh!JZ>o`8|@N zN`5{-I{MB5Vu%%_9eWTAp9xd$Mk2~e?M#6R`?G6nk~nY#{v#>=lD3pH{OG)68B)Jw zNfsncC!_BO+VY_leXt3r1AuwCSBz(Uq4l#JP&zzr6}^}(d$F}w^`SK5u=qHGZZbBv zrw3kx_JLW#oi>;Bh%@yX-oOL-;zWZ!JzcC>3W&3D;z$j}$uDlD=GNU$0;ukOYGP!- z!walBc1TwR#6zYm9Rsh{^pVK+U|KGghdvyPvF)Ur%sQe)6ed)SAuaw3CUMd<!;2PX zfqs$g-u@oEOpkPPcb(I+kMy*I@!P0n&~*%Z^2~OD)|tWCqiU12YWX1k;6r#nkF4Xx zB1iX&s2p2fPD@Pikg|46gtRG~YcpKNM-9?kqm^pr3EOo`!-&gEr!w{$FW@z3=BuB^ z-#(*P{q|3t!QX!4LG?RZz0Wo7RKN3P)bo9wv0VKw04Z|m>YyH}2ks=I>{T7hz}28+ z4f_Ij5_`1Xu>X7dMmALIMZh#NdGx86pi}W2p`IiA&1{g@n)@vWxJDFh5Lcv&o`0Ye zy15wSDXL21sM#D;2nAR$_cR1KkEFqp8u*r<Mn1}md^NhQw)5E4;mY{r(;#F8E#Er+ z1g${tP4<{AN(VAtra>_jXpu+o<M<P&GKa8p#Ma>_6l^dNYX%Z-{2E-rIgw!e=2=|> zbC8BAFjmPPDE0r)A#TnHPXiYKNk8bzc~13<h8N8#2)MLJkeYxYWpc);SU*+2q7m~w zoC!&TA0sCNeXwrGkLCFAY^*byUX%&-;9zh`an#D{ocbAqcg1T?$Ec#9#ee(>Tp8-< z{k=WvJp&{RCL%<e6f*Zh?m;bbu3U^BdJXn;NY9WMVKk-UCyF>TQ)e{T_z-^?9?%S2 zFzUlNJ)f~3oL4VMo{8p`qmdM1p3(@t2ETCrxwF%o)&nE@Au?(rS(i&Ehc7$cMq_-a zn-b4%C5<k^8}vmLuwF8%XqNst?t(y$qUl<+8fiGVG4g(1<k)C!(F!DE=k*UA;W-c@ zU*}~P=%2Sf7N3yD-fUTqKFSS%x99&CpqJ@6sKAGv>O>J6GoORMDlQuHQG9|kSR-2j zb}dX!QSJa&c4PN33$(r%pCvq-2HdAQpkRF_dr#r(6E{n6h^rWjL~|YrgnA@OT1*)T z#Ry((_qLm7RwHZtN*5VYi~JZrIu|&9t;N1CpVC5FjDzwewXV)%zVMZu$4&|Vyz|&e z;nL1yqr;bX9`l4RiM|y6S?93}!ug%YvctKZ$Hs(z*m<ld{JqX&mxa$Izh`wGn;t%+ z^VrSdQ#+5%50CCVcD@#4@QD6bGHzlKSpxq%^c-_L7MJ7KIS1dh<gSpsj#gKQg%mn5 zIU~M~G2v7eP`!DO!d&Q5uR5}AY*~8C=+45cwdhZ%;&^yd4f#G>&-Ev3d^pj9<USle zIkG)hs(dw`kN`Fp0xVyHeCzQDUXUY4Fjf}!@_V)TKA?zkYpdgU?*_1twEl<wq{35F zT|QY4YxIff>GFq#8P-!GoXgQ3cSMZ5$kEZ7yuZRmG1ss6O9Zj{NF3u=I^!MRabh-( zqhqQj?ADD<Ku=f|i89#~FgI5#RHC<clZ_UU1ZuZ!(|*?naD~rmQCdk6V<REM7lL&d zx2amTl!{JB0`P<f1S!i2a(x|h%V}=V37t?Z7TyaQK%}~PrYPDJKLa^}n8?emqaw~V z{<2(-Zg7_Xs1Ap%0r#L_MxfTX{Z>Ymd79pb#;f9bpg%c<5*!rWggItcmGcw19E$9i z#=-G{Rk=!p<(MJYSUXjXo+Vtx;ZWn|g+R8a67aHwJPZ}ZefXD`qzx`)e{R*Hd1N+Z zJ^|mudx{cnzK6sVAE+K2$xaY;if5wC((H<L*e))EbEz~Bd|Z&kE!C*ftOGIS-~}9% zO-;v|xg%crp^*=o;Inih9j)(($9FRacISxc8OpFAVky3PEmGr;vCp8(i#dx0ZZCwr zDL~#lK=va8mG1ZHN|57nt+uX3m0%)n<-L`Uu{Fp@A_)9KK_3gI+Uo_Updgf-UyGau zp^49M;S4-~OYM>gt|DLf(xOwsfufVbKP?&^&M)$We;h@uZqWtd^NX^>-z^#wKDVeS ze0I@g;cpdP9X_pSdia#0o5Q1v=7&!xI=}Ud9%@W2`g^pZ=+|2GCLmz5?_|loP<$Vv zPN+&PMlBv+!0S7K2{-;gq{kdZ!#pShX&RDp%F^$VL3=#I(!Gn>HU-)bsZ+8v*@0W0 z<E3XialQy?^9-n$fkh}RWTVa$U1B&9m*&qiu9A8;8~=)-ze`~lP<e%-YV2VafgTt0 z7y#`P?&V-P&wxA40d@HkoRP}+*oZ4`l@juj*1cbq@J6<t00ZFDmhmFMz&<TLh;PRD z6i*=w6&g2V0~KnKB2z?jRmKc_huu}bTsA^%z+cH=28My1=tS{^l$?K6Igb!?#!2#Q z$$BL@4Uz3qate)K*4mOI!E-T6T8?ANK1g+si5@6^s{3gq2Uk&`2e0JwD#<`#Cr;V} zzK?X!*D+PpXNj@Lx6q(Ik&fR`InnO|d)S<_K<6Le5iD9P@G<TPKE}U^kCIdHQF<!q zS0KiFlX+aG2I^cQElySrCpr~9B&!e?9VPR{f~@4lDu5D56stzs-NWf?%d$&g#eiN4 z>p83k{|WqNp8$8FRJjwSfKomZ%5!WI#0w{wB`?HDX33ucum6Q1?qXg{Uo&!{%`GNo zCFgJvk-5JCxwVZvGft0_W_Dao73$9w7a@Nhp8S#iQS9<k>A0w7wO(F{a=9YFJbYQ4 zJS)|p*6&S08*`=7%ag$;MN;Ki6p5Y=Lkh)X*9Jdef%CfmkF|4wkFvP>e=Z9ITzR5I zjW$ZG+ZHOV&{8FeZAiEk5E4QHC>L94nkp*722i;q>;`yvScnxbwOH+2+t<IftyYSt zC<H7)+gk97m#VdD_c7X9^;JM+|KH!tv)K)Vw(n&>pX7O-xty6fbLPyMGiS~?ElUWd zpE*f4pEtih9W351*IHw=OIqp;Z|&NlEuVu-=mn|li|M(Oa{YdUs6N^iwGGy(4a5E> z_}?coV3mGh7AqXi5H+k&l1M-x?^3+~f`vcSTUL@fr;`{MA6@(JEV6;9VP1_or?NOT zI3R{2$fk!)ITYj-bH8Y6=xT34acbx~<1JeYobs+?`x#L=JJd9?*qcuJ`@E}3fB&U& zqo!5lVKw=w(g$6Cwt8Mh2%2=dp}MP;b_!h#rQ^Zs!eYF#1*u0;=Gd+TKi<}4uxhbD zzVuQHtuaV997$c5uEoNzAwZU?z#d6?W4qukz8Vz!f8!s09q8vEq>&8di`_izisrb_ zFf)|XK^m{$kaRW7tw>*1XBn%JhG*t5ISgB{WDVlncUDh{oDp3@SDtZ+6TglTsMpa> zTn>YEkpGOdWUTwm6gQc>)q>YAIq|8MQJis>6PHDDdS(a&o5s(WnjBH~{J0T)tUfR? zz9(|)u;};&>(^BFV7jVcy81fP)wxVpXER-Wh3V?cOjloIy81lR)n}QmPGh<{h3V=< zrmN$buKF@v^%;&xsskJKt%1Lcm$z+&tFe100h(5|$WS9u)0ef)u;?Tw_8C6cR37`k zE%Rx5QDq(r&fJ%`?J#9>a!{SyqJ=qD&Ans0v5MD6qViZKFym53J`c+e!<p0a7xD>j zx&9d5S`(Fhn0ripFXMYnW$*uOeItNTeQ`pe`tAwpdo029i_Z>+Xe@DUPv&tv@O^>r zrfYLYIxVN_Z3(o+UZWCIdv~Tf9S2}pQ~Q1=b`=fH5|h8pr)?+mx|QSex$4M@$qOVR z>!|-9A#Njd`LBx17xYA;q5S{kgYt2<cB|fO`QlKFy>j=09ACDstYgRLiH@AuBBCn6 z>`+RidQ^<t;bEd?8M#vVYIEE@XKDg$pA<_KF;E6Ot0og6x^QA+d1E9EDqo6Y0wXgI z@=lQ*=vhRpIfjurbXcEgFE)DzMLPaGWcw!%P=3mN<-K2iwD+4-VQ}N?49dY}+qn|$ z6}OGO;-|eE)bsA%*q?LR!95voTrvk8)UvD;!&P{A?6tgTk=gsDKb~JAnsr)q<dY^2 zlD|%EY9H$3wMuK|#8=aCX68Ywx4+k-;#8#NB|6axtX9JHZ&hxx_0XmoO&p6da4ehs zb^Buna~GWnZqN>x*$M=WjOn}(qw7B!zX9JThvgyu2vx32((;a{n3Bx6_Rlb}1+`VF zYT*|wcRV0L`E<e&)W&vrszFCHy411$5|Bi5MmD#}iUbLm+O#~WTH%V7xWp~mB=P$A z)0Gh6t-1XU>Y+r4&!+m=Et`beW9fLNvvnp(&_XA!ZSuq|txEFiI<7=QH|teu8Pjvx zMYDFY_B#fRgm-T#m~8k2ta;TJr{;%}57!z23oP_uaoN*55xWws%Lf1_M;XCFRq9DY zMbRW5sRaX4RqRq0cDzvEYWBQ}sWiI_-Ypr>6&EvMB)<)4EIvel0DlqS{REtVi`;i- z&8ALSz}>d!n_mCP$T)>niTi|sy3~R>spCv`cUR+M;4th?8ql#F+SFE?)U(CjiANUO zF(uQYbfIUnnP}|HN>XPhzkQKS@FFJ2>SJb}g+-}_g{g%DQszwB^oxdUpB3EyK;w<0 zgpO@?OoY4@THmynn?($5sAEMaRrKhPce5}+L%&2>7RTiV5z{+s)X%iICgj~HAZ~@U z>KB>Pgi8?FxrFytl?d2&Z_%8@ZK7qT<z>;&{^Z~PBHAoyHx@WV<fQIbd|mQvrr`Ef zde@I#J6r)KPgh`NNFnU+Ehwl<IwnLSuStVx+NW$`1`ZCC1~&*DCPWH8v-=mJ<htau z3XJJpKkXKln(#+VxZd^CZlNf;F8MPPu6O;EUK;~-$#o`N@A@fykqKXD!u777(o3^a zmz-t7jh2OQrPtcBE;-tS>s>#kFEHU>HsN~LPwDsb#Q%c{*Smg7{|V2!<e_h>U3%9~ z>0jqrmweNN>s>$Zwj>ZmjxRR$3(V-+#}q3Hb<9rLucj76>XP@6YdZcSB8mwHl5szA z6A_*6CyZ-oX%mu71Ov6>Zs-dbRdvZLY)HGI00U)}wBGvppTLW`zi9i;R!g6S637@D z#c+iZ@4DNmVru9L0wc*3hQm62imu$sP1cTL%SO@|BPeffB(e;{3T3i;s6&5Lo7~tG z9HEOkm1VCiPonsseX?ud&E02IPZWl8iU#uSgl-}Kut>LgSDY$-Vpmf?oi$|pY}IiK zsdCI%m&&B5#~pkcLqD0omL|`qI9p58eu?EJ4LR_q<Yjc1YEQVv#z@9ktGa+=C+spr zFQL^%?h{_c09+<}<05UZhK_+FBxV%6TlV~-FX9PnH=eK#hUDpL$KHc&ui<mk%flw; z7!Lis8$D;iDT#4~WzR2swp|ua__PS=!4)K`_J!|uJV?1gpiN<;IKAa@;^rK8cE|>Z z7wIr$1WUK(HetYP9z-?W*t{ORUpH9q*GKi<Jk*3QHsR7wdCkN1pOuJv{Sp&eZc;Rv z)TMgAKCbtod%R{1JP#v9*6z$}g;gxUuYZZi*rO5nwCUsKw?{Ir*=L-gN8CJ`cc@O} z8q}Txgq(&REgW>1cX6`)QnPQd<ihFbbd<qud6fhWClc>1y_k#Fl1(J>Hbv$ra^>r) z&dA8(nbRz9n{~0gG|yC$wI&JlLDAEcxLKUgGiuM~HuX63UIUruG%N-Rn|yaiwqhGm zo9w&HP}{C}q?CMe(KdyrH){@kEZ064Bhbufk4MIuPNJLQk;2TY-JUn0rRmU>g%r(P zm}*~H)cKYkKV)B<P8g3&%e?N-ylxL(y(=2p$IR15`xuEaq6X1O`>IX+pMfWX_AzsF zZfB!ngqB4!G?64Wn08H06>{~?-H{w}Q)EE~cqsFl)sAow3L1*^%JYQad7_@|xh0E{ zies8f<+4ordR=s&(>f9{3lf{GGt=7S>nJ`*M^D^I6hZ_?vmd4Uygk)8tG;=w$&}j^ z)vlfZZyVhSxbf=>>sy<wT%8H~;udY=c#Wl>#P;{yRswaHeI1q;dH3OymlJKLyC!vg zE9S#5;OA%q>7DqwU_bUThI*Hn(ovvqjU21iIPtZJ;M8Y|JPEfN^_P6f3QfTSJZ^_R zAYsv7GQ>u@Z98g5r)4HtXrEF5(;$!C@cn!OvI?}UrWF00mN^J@kmn}?w#oE|%fY<9 z9erBM*@TQOry@<mzSH<#Vp{LArxtWHEzbQ;;~Pzj^A<P0(zH1LJB`mbEe>7M_*B{R zICHv31#FDShRNN%ph5ZA1!Dx}nDv&sODd#4Ko=k-fr~)WRi!pWUgfC{u_WK}PGhO! z(}c1i@=_3wJ6hh#_Ras<VHMt&C>r9|LD8)VFSVSGN0xS0-T`9d*j*%GbRj`^zB{tB z>u@Vbr0C>lJkxX{vZ$*~Zk=G#fydhk5S=s@Cmyo!Q@~GvIl)&}Lpw7>JNn9^omi%@ z#^I_!pW0-vm7Nu69Pl9ikSy&S?6d7m(T)PLXy=U}br$8cJjEmzwC1y&1?+IG7k*A} zXbz-Nx+o;wsM~p?QGZ3YvBWQR6<&o5`Oko`c(V@3otCKb(-!5=ZF1s0xOh7#?!L-& z-803FBDuE|H`hfhhFac`i^;}<{6;y^6j`}j4OuZ{Mclan;)?T~^N)n{DXRmBz~s3* zvPoI*HeH@?83kV=Eq|}l#SI@!=D)yuz!O($5hP{!qm%=Q7)E)WIGcPY|B67$hVI1f zQ4<=gck<4IPErf!BwyvQ1<M^K{U!9dGIIgM3JIA`d_I}m&DJ`3wNJDmqU)rkhhMGf zXG27eMD-~rtb8sBK2NfruLqxBu%9IYPU3U)xzUVMs>aaPP_0R>D>ukVvjciE%@x`E zB1_ldu@9W6OK}k?{9g?Vj%~HK+c;}4<I8EegCu4Kw(atMUJS=^FD-1Z5WmjB)cQE} z+Q>+xX>oB*v=;#<C?H7wph0XZ+N*h7fu=~Nod|b%1bBzxjxK5+U3@mg>%{K`A}iqt zrm86AcSgU~x+Yh8nl=4~?ZI&^wI5#U#6PPiYNAtkYVVP4!!J24Q(!igI7fJ@HR#^< za<k-Q{*QReim>bNMF<tJHJFa1866Zbn6Fd1`!eIE(Ar~H2H%ax1g(gT3+JhY=|<f% zK`mKbrT+*g&bFV+`m=eLyh-3SRBlI`+w@WIRg8ptiXhtlR@mmt?@s%e5`(xgrFyuR z4s|aa=FT7Pjw^3GroO#mWHNtC5+2Oe(}|In=WuxC!SB}B*MIbu`%K%XdCs;rXWKIa z_XR-9cGSC*M%TNu$2y7E!Cw8q=b;G|SMQD=7rc588R-JO3mS;UDl{=SvKT_(o)xU% z!VTM>9C4W@SeiGNtky0N#FeKuYk^@FahoDbh+-yuoBVYt%qItHOX3^EGdfS=k*f)o zr<BGK?<V0|K5#`o0WGXow6{u&6YoKdE%^Q*;$c4KitDWrLu^9yEgC!CYC~%qBe#=C z?k>{xch*TtV0UpIawMbmQNFr}hw;c@m22h04UwVxumWP-oV4?<%Seb+a=1xct{TT9 z<tA~dt^P=T6y2N_5V3^958xPl?qE)egFs?6b)v@^t@_3zS^%BLR?>Pom8);n!MRA; z57Z22eGRh=SchUpdY6UkQneVBVD4#!j<YrGF5%ekrl9+lO$gW!KJLfWyCWtFtz3|E z3T)1BCk9Hr+gJr%&aL;xm9Uz%Xs&n1p-<J!1v_exCEtJOT@L<WHF{lCBo4oY*L*X9 zVY$uFBuH4j<a<{%B5Q3mA9yHBEet2Wc?TYEh~G_oFT*f2N>?QLjO|AVsRa+tN(tH6 z<~s3}a3V}L8^08Q991!LgtFUmSj?ldI1UprOplU(`-$OK^keg*!=bQX5hON+gKV)h zqadMe0b7jw2Mrpjp+wB7>F9t>#-9(OH$^0C)}^BZwi$mch+Z3!R9bDK{Y^pO-H}oP zYi-~qCQzJJ9JD4m^gL5j+M!uSKmS)G(L&E_d7V#9AIm=`#Ew9>vdEvur{&IqfgszE zeCJ#Ph6YKJ%Z4_FW1XUBOGVP>KFsWxh*_~=KVrk<8sdlznq2)=f#1m5<eRvEvJ>;2 zim1fTW#tHSvkc%@69jGL7)2hmW`w-O2h#PDpiC3>I7}{l`>&)iGO@{`E1sdXIZYQA z96DmwTt@+3>+O)arly-Hk1k%~VPY5U<xS(jd*jIgTTUjP1de5ip3$<9ax(VgLmtD% z-dVYrR=H0ls-`ua%iLMb*NE7TaM|w`{oS9*haK;h!F_L>e+u{=@}mDFv$`dp`+BBV z(Hl(%Q<7FUnpKdWQTe$KYA{B>L3NUffT8Juu^`09h%4X$*3wHBcZK0&zh->oxOa(j zxoZp;+hB+jm0JN!X^9YQCdqiD$wIxEhZ_qigVE$rkvWQ48<}9s+sGsKP?C(ft|xs8 zrHbD5bAKLDM)Z~LL*l?hDVKh{3XXnG%f0k8gcKow0~+RJMtP1sBsn}MX7r_lmMt|i z7ktRON8HJKK*|_sbP&1Nx*JL{gINd;fJ4X(Z~&LQUP*%CchR81I7SHlT-&(Ov(Pqz zznqSU`apIGCHF$wxUp!zGEi!8YZH|nUB;&0@;{B@+`^#ccQHJM^H#o0LdGC)RZi)0 z9HITT2vsWw)^K;#y9!<Z0srX|QKNgmW*Ywq1_jJuYH|c?VaPFYxAg+c4m_wxFaA2X z=3`^z`(!YpsA%5B4D#4O7*#}Gll82hYu7?loy!UqHyEG{3p-Hoat<kpS1Ah}#OYn` zNwhK*m|jcRkPjvJHr|*Sn2T1}bhDPF$Dz_`BuEGC?(%2zV0H}CtX#hk&yv-NwZ>De zu`FmvUN<+LQ9J?gmdCJB&f0A9RPKsx|6aPH8QHnFETFA`?B@WKyWzKpA&oAe{$k~o zS$sDy$6rb0c~v1Nelcy#oHq2U`4l>8lecm%*fNsa$?ji>tAjYL(0TJ<__||@{T~K= zO8fNeNpP3(rEbZcRyAd|{BcOZV(nv)kLhFiQk@ek=WV#N?yrRLHQaxh7hC4Q&N6Q{ zZFgEUsNHtIpIB+npeYrTGE)dOdq~V^qv?K4z9$51HX4~SH96s&G^)~l+LP!iL>Ki+ zUBK+5R7jqDnMn$|#hz)R2uEVg)1V4Ui}RUHWmAu!G8|fyMhl)ajs1-8Dmh6P5$A6( zosJ`vo<~sHJjw`&@o<7$$^mQJ52`^xa9-8|b(Q=PTB7r>%}y(#lbsPnXRJ3zhXVu- ziGIsm9H}`tKgYiYUP_GGt6xpSRaio&QDX-nBX?e^R_A13TEfq++)}uhc^kv)M*CWs zS4v||XhnW0IMgc`HES@t?9R6Xl|Ze*0yO*c)Q6UQ^S7o~drDyE{;j;#WUcTms5OOH z8anas!Dp~GOiaV4TCw14umGMPxEJ<;jFL0(iS!c4X%X{g`1K_?7a7P@&~gD#ke<wW zRX+Wk&HWPB?1`m%FDy!oyDfI0$HH*p(rvL%dpN6l0Ls~1lbfj6gRLI%*W4CMDSq5G z(mAW%FxhMJ5|{3YeX971+hY3_f6X@1Ijeqa<MR{a_QVb-{?glkOMJyP(mAVsN<5rQ z$_j~!b0c%TnIXin;DQ`_sDw%e4@98flW=OPhQoB~g(h;-e$&7WW_0WdeI>^~jeXVH z1k(%ARTxpqL*R^LiKWORiT^of71rP4t^Pl>JG(g7V){lt64Ubhbv)4;2jr6c>-P-* z_wQ#+GdEbf{25e?S#_QsTrA{i2|~{=)^~Nd47WqL0OuodpGX|BI>Owb#Q-wEL}cfW z+H(+goR-Owt2acV%E!r3<IS0CB|d5g9!gcovv|F~!u+30H;;^*iSxye+R29epj8A{ zn!g?9Zj|;><_Zn2NHGhZ$<F2pk#AI|?$ZL*E_7;X(ajW8lg1U(;gr<zh)mc_ndQzV zN_F?QCHvsed38MU8w&Am3|2ai_TXck5fRo#cI(3n);MMnfm_#LiLz1x1Ze-g(pYsi zXIk`e?_kAjiaf24>rLf1*!9SDLlv_jvd<(litT2zgt@NV0+X_uoUbarxs)*IK*%P~ z>k8|t<Q_(whO>xC;4o4PnF*w1pd0a!OZ4^%>6>hw;<h$H(Q6~7AgptNFoiUxz_=-c zPMn4+dWP(Qh{aW@Jdw?v%mhC)RUPsgm&D%8jXj}NkL_Kzaf$V8MF+R4JK0pX^P+pf z0MD2@A~aNS9*D*06nByKIHuuNf^L}sP;Cs97(YQJ?(EWCV+wL<j=bFs<79=KFhans zqIq;K&=yx(&`Pt#(i;0?zW+1GRpgRu42?)*@5)W!ees5ks?BH}o+@%j4ck>wKxaM; zQqS~$FVw~jJ+>VX!X}mkgymi^JbFA_QKVWQySDF1&dR$;j6<U;_)bn^U*2Zu&58er zaJV<somQ8ql`r4o$;qcVsvu^|u^Z&&0@_i6gU1tO`zjkE{S_yFg%zGnRD|m;usk?{ zl*Z5*N{t1Rd)Z$3syWwFj+<a}l*FypL85Xc@J4W~G{W_gB->(>jU?G1@T=X@*k5zq zx)P_wRZ^~6@yvC-SVx?RMPJA>m+gR)!ss#dlh%(oDjwo&o0r$|1+&LBm76Ai@I`h$ z^4aL4y4u5V^^HxzqlFV=I}2JqT>c!joC@^P)V#vvWyDH2cPk2~O*dKQmn7>Hh;-<V zk!_I>#YVh#w2G5wVC+kJouSq)d}QF`Za*qN!~N*YC6LIqA$L5t#fE3iW>>H#xzsM% z{MYGf?T06p;2#yHI@GSc52K3U78G;l6!=qQevgHuY}~ku-Dw#o_BU!Sy(Z!h`|@WL z@H_EpHk!O&YH@+4;+<u+-Y+G&qYJMr`;kJIRoc_B(Z2(`bWQHCyv8>=?L3}K+j&G9 z_oR(Y2TV>rJSUK>8y|G{b%eAx84HeNL$6cVCzP||0=w_#9ft#gW2!>~_oVkE=g~_V z1(+>@!E)Gfz-y%lDi?>Wx^xg|El(DH+maP#Z7m-r9yZB#Hl7aZ8R8m3m@?KS*Ia2f zwX7v!^dj1h5{)Z8wKr?P95;yV*;z+y&ziXZI<uP{S`+gkF`{X63}vp}1HEY^D8o~^ zw`#0jxUuj433|ad+WIQJ;OFip^HNjf{l-i#CM7ODDvKe{(Zv$uexSzJgj@rS+lpP2 z##<0}4K)1SxdxiY?FI`9F%Qfr@oIW<^<|&7WFdMxcj+*<cBngQxZ7CnjW5DKNON0G z6KQwozjy5b6nkxNVO>z~UVt*Lc5F24-m0Zg?1F-F8ApVfSj6CxQ@|ii^&b^k*~8hX z`H|H8($svp(w$J9WvUtNi*6-aj*-bD{y7rqW<<u)ZxiOcGvYGVY*nIXve49Oj7Ffy z3DbFpIw#bnsx;n&(2j>-R_ac!*o+<M>CG#3R?46nqtAS2l|0@!o9lWwn@5KrqPEwH zd+*>qU$@=rC9n66vd5j4^GF6M8888~>Jo2k1ZF=7-ZeN;_Z_U91|=q5;;iZoSy9Vj z6p5fTBG-84t-GZ6j@-TOZujxn_DF2U@z|aXB6F#;N<GJYyh>K@Y_2}O_l_ak>thFx zb5^bw{@O|j%m+?hrg{dZ#*nHwg8#YimAz+;$rIy@2^8LBbS`7nQUiQ`ZrhtU1U|m^ zdkoQ%MCe9Sdd&bFvJ#K}4F&&aRTz8*<1bD(VTOawQ@j5Yl08?b$4VJ&!&sM9Mx2&| z!shq^iK2B}^bOhvfPx}#)Qlld%I)Jww*AYzQ3H4>?&wibws+Z?^h2>1YORkgF6c#Y zxY4I5)^ulm!w`d+bcZ=D{~@@5Dw`51>8LgQ)Y;s(x;A;)mvy}!QG;C^AnP1ZavDME zVSFdJBSOw2b>L`pUfXM$H3szF<Blk39}!j;#CC;ZZF0CV0K2!M`9B8*5loS^JxTKh z)h6$<OAYEZjCu}(+D>hF2@0e67$Yr+BnMt>c#w^Z8i(Izv=2|7F~C$JFvAE&z0v_} zxIYq}D?$*P>3EDAR@<_8CEVY;QzNA19ZCE-QC!KC;-27O&a$B#DKFr-V^P^bF7%pN zlKZ~eRCY{b2Q~m$!bO&y#z-Cm^B-gqx%tbV@5&b|!}M@uX%8mIj^_sMo?PYC6rNdA zpxdej%eU7LPd}8hcYqFe^Mu9P(vEf3UlZmA=4iaPLL1$ZFVNRZxr4DuNRR08nvdm^ zu4HnmYKrv&{%8S?basj#e^}9*+xNCRo3SC0U4^j|)6`HjBz1n2ZH0EVHYa+{`4{sM z9qeJVRNz%y+|aZ^b_1cLcb59PVKARn$ra2v)DHz&FOOwuW3N^`7VMvm*%;G&YLDAa zWXIdqUW=+yOmR&^Ia!lyZP$=9bdj+$E3hRj3?&Crf&uF8KwOa~hMQv}h2GfGSr^Sp z{n;8!S(_FO?g$fcxx0g&ELP2V7U?<UL*7dD##0kr&O^e_!}@3Eg=6H)k`o*E5wZrl z-3<|j@hGu`|05&)Vsr4#=_Uv6L#Y(*%VtlpUV1P3Od_<I4i6`Wj$m@x)$u^9idF#~ zcPT|5Q$%#G-os9O7ZG|rrtwsNhb^1=y)-f77dZgh`<KK}wXk$jOKLg3ovb4c_kA!` z+V&R?d|3y<G*Q<8_l-R|=%W_{{UL1o(LupG6*<<lW`Vz^&*}-0e!5?*pN6t+PnWjz z#wK9ZEI20OUdi$sZ_Zi1o%WO_Lau36Xao-lVG1!WJvk{G{bk2(!mOG(WV>l$N1sHf zDab*B;{t4c2f*n%P>~EyZ5{l9&l@zlzgxInyafGg-bed#+x<_Na30V;lKbvQKHVB} zLsGtl+V<zU|3%7@wom)xy`<#(d;c=<Z(~4N$>L|S@f6<&0LwHq)elOZ%^>Q%6GHMI zA;!`RJ^(OizvX6{k*J6y#*a)~HaNDkylh1)Ayn0z<A31C>ZS|B&WfEHV&lSVa)+Om zxTesF`+V!z<iQf}qEO;0{9=BMp%*)NsuLf?5~lg!hvanD-%PURw>;hrk3{Hc(0<wE zWdBk_*@;OZ%F=-z&slR^)4|g?U_^Fj^OJ%++d@tO#6TXL1^JhNv5;wL25vhR^)%ES zC6n1gufPCJEJl$w-@=8Q3I%(Xg{^Zu26i!{Azf=-JJ${D%PeeL=de2})LG}eBkFu* z8m^9SrQ!ZZCpNm&xnH`@vP%nR*ZD>&1um#_IIGV8Ne`JiU!MhA2a~#~^Zn=(zz4)x z?B-Hm`p=1<X~3G!3s9`JtO5C>ERa9x1Sy-o4300!f;j?nfG}#k)oL55O!w9#A0^3! z)2)xBr0PHuBGe;&ZoFso+a#_@HRdFLKrH<~n?vA@1xe3*73j!#V<@@Qe1&viyfK`- z(tL$y&y)>ZBsDlWivak+0JoRYW2SY10_GAhDx^lUI^!C5_F-#!y2l`(vTgBb2{Nm@ zTYlu44@x?4)?ZGO6IbPxz3i+yAH*;*OBPCO$eY`n0~e#28nt3TGTnV?esVpEK);eO z?9H#vFMGvVb&^5m^xU?;NGckg+j}1uRQkVTput-cBl0=uw(4z)a5ksYOw8^5yt8eu zUlXLM&gVqgs<tj^(r|R&v*6gW)_0rc<1T6Dbel#;7c=#l*d<N6K8{V3#>=1R(Eu-U z_hIld9lV@k@N%xfK{~C-JxKc=uZQ7qGZoC>+c?Lx_}-RIn}Pe~E@?l2E(5rCrqgEn z=J+mk=$olSES)w3*VY$*08`b<>K;OQ8Oe}YbJcCg(}=Ck=4Hsy=Ee$V^Thn#kNcB_ zT$@}PBAa}cN&Xj-Pt5E6f-b9g92oh%clf_UeH|qKh`Rr)<W(8ya_4q<a)kO90{Pxl z<^id?ZDnrnOn&sbkIq1^{Wp@|2XvA8R7>i2pj!0r=^ECmupGcDT~+APeC|$PqOhB3 zcUIm8g$)S8f^<_9wpA^#oxg|C_YfXTa|S-e*iq95K9#81;6IIyI7p(6k?xY5EG%0n zv7;oZP(fGcmA$g)>Mf>_J!W-7A$t;48~if`!9<_aUG$93-2J<YcB$f!C;hWY#p7E0 zwZ}eAu#bf{Zl?gH&uhskPN{d7opW(zT4iTjCRj7kIx7~@OWCvR64PthvuunI!>AvE z7=w9bov~pFxY_*-)c`gBIAYYcx?lk%O}Hxg@(EcJa6$G2{5M19*%PpQoSH%#Glj1I z4S{yTp?w*+D=l2jj`$_Xp3EM#aG41TvL>_B(y(=~K0Q&&Z&Ej~zX)v2>`Y^@cg<we z4b1GB>@MiR)OCLrysvc+?}Z}43u{_n>qOSwni*`t{$3+Q1&lu@c_YrMNak-N7~XGr z_IgwN;e7q3fUjGgt#iu3;+pwkR&MW|&bFsI=LefcO7u(`_%Vh<%n!(q8J=wn)Q*@# zUa@7R`S3m(8ub3#ydK7fe{JfXPCGu6_L(EoqSnje**Y~G!2ORS)83^@Shlo~*u%Nl z;XD!*QYtZ`hbG2}oyjv?Y?e6iUkZA^5O81}#|oeue_DoNXE-nn`-N<VeN`s;N6><; z%tXVm|7`jD<3aLS`MqB-2P!)mS5ER**1*;u43w<kn}gur2Enj2Okb1DLGUb<DQ@Dd zT5}YBq`hj(aOQN!(Y`APBl2*M{q;u-yL#3rLSR?VCh9i$Bb8eWZ&7h~xpjmLMkLb; z9w*sH5g_^c7GIs`9^gNTiXzK)0!Gxyd~TrT*~~{<yj?|nnX;I%bvE5*$Lg}n)8sUd zuz*B<$!k|}fh%oBMbqNv7fh#T25t0m1N0uCTcFFA*fFSF^E5isL$lR}cif|{F%nr$ z^3!)y@*&9B?D%1NTv|Fgd|WOH#*-a$DEDdJVQIJ*YHhkfk5HeWK~Ec0pv-!$Adm~) zJ-)f3!jiG(seeNC%ksGZYmcwP&jH;_O=~k8o$hxtOtMJugwA#jc?`7pZ<<jgimB+1 zV%8|yOmL@kLow9m$0WcF-yZ*F^WvkdKa5U_yQdRL&72rv-Bu8g3-$x1J=qggPta?+ z^(|h~6V+oROQTl{h5)^rdF{%o==qi=5+6Q?oM0HG7DU-|$jhWOWlhSIwf-HIWtN_1 zesWvlf)}iS?jvD9+hzq6U1suMo|RwT#=7K}c0QXJZKPjKuV#_s6@N>UqhA)#o1H86 znj){xh56Wd;A71L{kqVkbuMF+rlbkxfsPf-H+CJd!N53-X8ryaMjEllkSIXx9A3L3 z)_;#~&dB12Xj70@)}e=`?J2;Pub*N{mZ+TJyod93Gw;~}@j7rVeJ?Yd_pfkX`1-+Y zzFtgC0_ZzClOLT?>kxj{aOn9?C!W6*!~{(F?YBE)dZ`G*HfMG-2>dtGY<tnD?xIa@ zGlaTjy3;Iwt+tO_>_Zm&fxL&x@9jbEN$yifedUSraM@F+jRw$CDV_`5Hg}a#wIFTJ zE?6+Fz7<P`*uhg4&WIiCAD!wxG4N3AZ{fB>d9g#Yo%Q04?#Z#XQ0(Ao?t0~O;^Nl` zQcnCO^MdB(RbK2+TbNr}$szyp`FAmb2A~}?J2myK?(Tv6W63a@q}V|no{G39M=v|( zCec;w{PNYKFUxsE|D(szhO)X)bXIIviT7oWYP^RAp}>}G0C)Vfbxpt3d$uRJ(k~hN z)QPsb&&J+#VuzgQN?Y=)YOOS=*)=dx3*MlqO;6-@tn}7P7WV22avw*}RqCA>JJ>TS zi_@LFEIK_ExnVULQf_WE`TQ?KkFlL0`*FHHFg8ooWjP6IIhN2&Rjpl3T~YqTV$=c! zWjnBEDs)yzbX`N^SLdRDi%2WV8eS+pNx4UId*N84mI|a-C%!dcI}PB!gsWn}9QsV1 zsxoZj3SI&hw_fMHEN5`{<N}y=Vc6K+O2%^5-_L)}JKsYp$RZ^DC*B1a>tSy3EKQ*@ z_ZwA-Nk-L%!zXG+!UFG7Ac?=)(u<w=0cvbYABmWsE`5Gh=}7v%_QpG5$=yyju%Mt$ zSTe;(!&;ODtD~+Hid=wn1Et7`%dphc=*=uB$8<vJqC@H*Hp>q-w9sr}l^iwLDdhh+ zE>Yw`5v8Uh^DNc*EsQMbxcv$ZYWQK&S(OiPu^Fki;9c;{@8$M>2BUkk9_jdTkj$Xo zCM)Wa%x?hKL86_iflXA>B@t6(Ey-H3l6G1+dnO7AQDUi^>vKv*Tim7}*-Xqao~*Pu zcxzF)1bUK%?RFUz`z;kSJSWYmr5BaZmt54(aNh5sUHPKXu57p5<N+SBgB1HWl_Ofg z&{#fS#5dns^rxV{VYR#M4ebe1XkPEP0-eG4@_WDKHwuPbtxIHm0!v{lF8MQwQ9J5s z$f*Kqs<QfFBY!^A_J&=PKa;54V8mfYjA{1jTz`UcMkA%Gd-|`lkWRN}4JfogF7MhN z(;dD;BhpD%btXNpYf}FiV5d_Rb*387H5Gl*Mmoe>S%yfA5w-s^c=vzGizKb&qIc6> z`cF^<Fr9?58SYEd(?89i(#q3$oK;ciBgj|uPxAQ(z_R*+?Sr)T<m+#u6?rcRpG!E` zH0-`KC;558gMNChYp$G*-3H0dDtYGVrnhL%9qI0LR%wOUZ6dWno`eEm_jI4mA4QU2 z{V-sS%zt;XtJ2?n_7iV%$&l^lj5A&?rbLS0|GE2B&Z2*vHFYH_+XUoV%bE2+AE1ka z%s&60Ao}_ibiGy=%V}!tcI%RL)rKLgZcC?=y;h<+)pU@(?<aV7?thLe@|?{FD)43N z{OY;fJ!Fh+&mVYj^?0stD4Yz8;goIWJNDrk7gb^W7oN;MaY;3{E<>moyOx3BR6*ls zoXz98PLh4#j=rr3W$Y6b6;<?ZFWbBPAB+k-wdzbpF>~LS*>9SZm@3aB{jhT=icUye zTT(TZ0{?4bR)JhjN`Kh%<G3o41<Wt{m_`K-$knoRqnUGx3uslxURnX9A7cH|u_?f_ z+-I8|Ja4eO(<?6+@+1dFt|(z=@mlSDeUY6aF8#)mqqsIXu4@tWL!jd}ccs9DuH~{# zu0%mx*G4i%UZos}GmeF8lg}7a67kt$4smfo%KtNdf`wL&-~Z~EtkyNIQ;BS))+Nun zAS)anRJ7U~UrYhgZxwkHOLHHOrSc$&!st9_y_npj#=#xSoXy9HB|4k0?lcfEXdl7q zsP_)^_+flix3dMVTN=Xb9v9C4J%gn#`8&#^-vD0h=bDiwATmQBD9k;=x>zRGrV?$o zmpj^>&AA3*FCdQSgy(a^b}GN|Cmo-29x2m+g{!nlHic<E*SlTd0$}-_z@G7gbz`t^ zh6%tf_o?W2ys-skdl$~~>WbO#eKOr+Rx)U&&EB9}uvd5|I<3+R-2yp=IE?=R-y_SC z3(M)&(Io>rsNzuI^>^Z*5vPj|kV~Dxq7(P49finX0xKEHY`mvwhj1l<I&}tMurZ&^ zX&*&0=3leHVeTH%+{#6s`E_`HE{N^O*R2l4$rpNObzbA$jFBtCwRVi0ojevQOplS@ zM!$!&BzFo7Tldq(W+-nh$tU7|ot~JC|B#nC9#curaJ+Oo4L4(I;^AYeFg>P_Vp=qV z7rXl%<FBu57T3S|K72<|?ND^;4<C#ELb^Qv3bd95i3?KN(JxM(klhIDFiCc@L*>q< zI5~TKXA^xbqQRH#JDI?b_3ms%YVfAbN!)Nd!j-m9sZ^xl4kS%^19;$zow+qG=)=dH z_#2=W$D=LUNiP(how)8{N-Uis+VXV@y_E`jGpAs@HP~BFB0u$mtKnJAZ)vKd;F9D+ znx5><%3!Os@heIck=x6`6|jI|a4(TL^D35699F*<s3J*keu?g#l4gnB<x?p~?W{_E z%ytzS>YGz5bKPBwCSfZwJVpJWs=~6R;f3-oSHk&B3NNhphL11_omKJ`%eZpxZ<kdb zo?eQqUzeXKU3#ei&Vq7ElYhnICgpV825&Pf3F8C9Sl|q*PBl(RzGsg~`Llp5(?8j% z4XR0AX6pyo0lPxQIsRaxJNu%<-8E!;Gum<52&$rIHy>OHq8612;Za>9IyqHc6rd}5 zqW9$*tfdO;s#1+5$wN`PNc-9DzASnd{`-RdQtxWe&+KDSU(0pw@?w<1d|_j|ZlNtw z^Gho^6!S=M%nOdC<04$tJrQ%x#vcQ*7BcT=qdTrs+l)C$O>+HkYiWZu!md#NoQ^-F z{eoH@|AV42b5W_7Jk;`{`tp9=gh?-*Y|mfNPZ4edW#Cv17x$Ceo2M?t#B5G-fGyUQ z7uJH7?TKHFWS6<|X)u$RJtcL&Tt0X=DGaaXcS7cF&kNmsUTw%mC2vsB=+HErY`Ob_ zux1lhKp3bC!noUxbYa4ZI>V$3!lc$4Rl<?qH8YD>&nosVDD`T!g<J1VJf$AXQ`fX6 zxM$D%nwsWE=wbW-QAO%p?A>fe+PpcPV{7IY=(sk3v^=&21m#3W+N7o4^>;EBo%@R_ z5|vY`lg~3!lnNIQ(c^{nQc-*)`LzXx5=EJH$*O$wfjJLWGXY&Szr9C{boJc;*Nn$- zE#Wn%VI#q)Y@da74VvukOx|{`=|7B22XQRt9%4CDu!%<w!yBXiExcAW2+XA%C%lT( z?UjR6<#uj8;lFMj)}z2a!uEkcrobZmSYjTrCUV)gc<0-l>9@+#oScpL9E#-Re1)8Y zWpmtKIov#A(!dse77sl$Ay=G(&y7TCy$z9fsT)K+R~t<hO-@{!jb2?z%ai6(A6Bx| z6(K9!{7_R+RMcsHR0h$;EXmxXwqTyv%CX9MSyX3F^LVXlXy89~b&z`U>M|}D2K&%w z`^wz_(xHp?mA~gdiFlKpCw-2Kktw_xS0F1NB}U#r0-PI+C(i;BJxV(UG29EiYv;Kf z5+P3-?WME{J7q%XUCx-OkyA0n)HC@x+ttuRyVLSD$|Fr`K{OrxqfXxlM4xD)!`|H{ zEB0ck#t6j@PBx&KbK9q-Gc}Gf<Rf3ne}UXptESTrK}T@SLT|+k%GDv!cH$_F3g_BN z<;M-+sx%xo&%!Zv`+-RvzBD&+pR@yX)(60$vmUbBN45n}amw?|kpXWg$r3-8<((H( zmiCz5_48(7Th0_5hKP+Fm$$eiT8pxTgN*gCt|Ippf1oXoDo5Ns_<$TB#x^*)6y=y1 zKTeBIaT&sJTHe-z#qf1;we!Db>g_*EC>316p)@m#GaE#20rV3ZgD`nU5Yl4e!dzYW zi0k$rPgA~9Re<Wjnw%CLa6%3;q&MU-?+UJwW2va+V$o`3)vuKuoIiwXF3uZWG(S}K zhee-5_Q~Bd7WP-*hSrZL`-A)3g1tyHx;Qw@TH?#TeDS#lJD!7=h)H+nzpdHumU~KJ zI}N{K>JGfPeT34^wEVyC#Z59o^V=T?^LIxI=r-L2ah)mVmP|1tj3cvFiV4PEmPfY} z+D8on6&!DU8z{j*LoVoa94B-|U%*?l_anirGVY&1u9hgt@Y$i9HL-VL=osK(b~gZt zh!Jz2LdyQwfoG{3L-p>GDJ2zUkI#Q^O<nHlDUp+%&5v_|Qy*{Sjl=8RkyD1*xLMfn z{cgyUt7k+`A#TZybChpFkT0KnEPj;lSTAn;uPJMTqW|vwNW&MQXo+{DhPk&+dmo+| z{N5vb6lYDL>lv+*NEpUVJnG@1t9h>Z(LVm$(m4~(dq+QwsjW9kOG&CJtvprK+iPx= zihcElNP>s0Pa*Xw1oQQ7e2O-5ZMt=`FJHYjVh%2^tWwY1XbjBlA$N$aNZ!i}r*gca zxQ1R!T{Q<%Do&kfC_y~q5{)=fSK|PGD(@M;c@qC-4XR;4%w@UbojCm>Z;k2mA7uL6 zdhy$6#UQkk86SSVF0?-DvidmsHXp_fL#Ho2S$LP)l;EPSrkbi0dVN0}QIMx$6z%Ud z7eWq`VU?lDHCTu@SQ2h*A8qJ~VW<k;rwaC+cHz;8^5am3_S63Udd@Nx%&y-%-Pg}1 zR9}_Ia5zB9RF;?1y}q6qZWrO$uXDVOxVU4DJ=bs)KY(?32sD^9nUGwKH$XF1$6cJd zDwG`GSzjz`86!0XM|uOKK6YGceqmhB)njWUst1RrcyL&78>AwS7TU4PF~+mrC^JkS z!ye4iz|QD$8f68M#*33r69MIl!lzHO{G--*fxO8^Xs*-EI52sYn7jjbbEFURZs0Xm zP~$qyPcqTaSu{Oynn<D&lc<y>-#42d-T<IUQ>ILcp2|e`2_ItaM)qmVx^So!M=qLn zbC$g2totDgzI$|*R>`&a>v%?Mi%exsI=nK!2@;c*1AKE3U+(6uDzVmFwNu?Nh)$!5 zTL?@(iAgb)+|D~K@oXtNe{s2(xV>13Y3m;1xlEoxekX744VGOA5Ds;c-x?CinMU5N zN@Y<*r)*Nn!S3Qv4<nW0zoagC4yR0z9w<?8sDu(VJOab6OI|i2-8<HcLgQdSs^F%@ zg}IIW+#PGmj~|}Duus!9{X)*lfyf@Tb3gH&IAp@I4RBh1sS$2{e|c+d#b!k2y6cRX z>@|^#RtW>mh)vY<Mp3fI3OW8Z{FU>k_Y;Sp{!_j{gK2+dflW-Y65aGe0n3?edd02P zN^P#U@@7Jrf9JZR3Y~2glf7%EdE;g@x2q8ASH>MR6xTB4ZGV?f8E4ytb@-KWXAX0h z4tFoGZe+?k-N?Ml1<NB7p@mtVWS(nFSx++04csReGCH*~6Bjb~Qc+yU5HL;^akfqT zth24|^YnwMyF~?b<IOHg#3TEtB}uDLQcw2KUO^iQs>UoIyl5OD1Dx{r%reRH*2Z&c z5*y4gnG8~tL+hn=Uosts62qpFoU~Es)UwHmU&$+?!A!OUHiab5g~@A31)nLgom0H2 zVJ4U;tBp;@OG)xAZq@?Ft$^20bU6XkR%<oZ&iV&PEr)<4Z}vCn$uaT-&o#a9I5f$6 z9Gbzlggg$_>WRmp3wX-oP!Bu~HRe}#JQIJiF+%dvDjKw#Qg8|r42fUW+vWtvWi~~c zh}JR<?2%?QU+JVTefX&u3K1InTZl<MW`k&AT-m7Fd)gt{YChei#gLYco#&psJ@)E; z^;D0O!B5jN{4eFlc86ro1oe2=l+d~xb~>B6#?G7<0tJh`>LQ9!ZIPxHCwE{1VAu~L z+Q7gc(z6UD>u~LJbfWc%^kQe&apFaqJ%Y-X*vfuL5qS)^nMjy|1TJ&78Ay0mvf2*o z&doqFVY(iQN>pJll_s(K<vv48h#kZwwwlk5uWC-1>x~=ij>lj6P`7d@H_N)?hj|sl z-OAx|u{3$CTQk<J92xt2Xd?b+1h;>^S6R-mVBhcU0_XlcI{vZPxqobVb@H0`4Cfsr z3XMlfc|a)xc<9G#BzT=ZEm1RgGL$a%Tb2A3+r{Xh*P7!9)rp#slatYdrtdmd#W;_c z=f5G**}UmSGtGM(IBee51Xzt-_yT~^9A##td6!r@BH70|3s3hh7{Hmn&~?p=x#duY zM4O4znW3EMH5Fw~EqXo8Pf#UTUfTTNql{MrxaFrLmQO_B%b9>gP3zmI4{ye|Pl%Vm zw-3kp`QV^agHE9&FXP}T=a&o>H1;i<8Hx7xxP)x@E$-48-mC(;bDZ(na~S+yoX&QE zqw-XWL7f20R|5hlE>-xbr4$`}N%o)=jY7*@{mHP*%F%0j`U&(X%(I4`&3rV6Tn%%+ z^__;=)D8Q2r;9Rk<Pwq^uG;-vSwP~>xsp3X@N$rWSvq=jWj8Q6B~D%ZHqvS+)yI~V zixWF74XhaIy_qBH-C5=SMRw@|(Q8tz<&LIIy*jRke8r5k@auv8iR}Kxz-w*3pg=Q= zUm(JOX9cqelo)H9;<etXUYh{h+8qqZ<X6+HtZ2SF3K4XJ@ohD^;m-`e^nj}|8umhW zRI&d)J7x9m(sBL;l*%6P_hA$1{>T$4s|(}?#JGm1c*Dn=w=+2XAJS^-6qIb3!EZ2g zpjl#?h8mpspVXS2{<A!s&F?ajVt)&X$;}0B^4v4JPPR_VHX5yVT6DzPi%?}QF^<LN zsVDa*d$9#&*^QlcotCvh7R%0?ckZKZnH>9)&%AMXjthevR#vz)C$@bGBSHlv?>r*$ zmx9C=^Rc!l_@2jY$~FU=myJhcIfzklFvPf>f$I*=i<?egehdiR4{jttF^WY9u&UK^ z^dX$6H+d+ShY=@n4dlL%+??)IaI5@yNTLXk344fov*+ep;Yu9U;B^iBsVkDcYtn}U z@#xZ=9$Uaty3zN&emI7PsRc}T%?~uGPKNb7bgW_9Ui0k)p>QzbT)M>KBTD=)oV?JJ zojm~;94rivKBBPSk&=oHAU3w2Bc0Fj67V>h2nCBNxhuuk*(IXHVSK|ChBGkudX(xU zZyzg4(&>NUM+dL36O;`GDh5*W47G=tK#FqXUL0^EdI(0@<BO6gVwL0<N)iYw@!OPS zG9_g7izE-zj5DD0t|%_0z{;|Xro@g-@NQKe=LdkSqB$Dgcrs637%?>OUkQo@T=Bu9 zCi#cYTMh2kh$<^3u0Nb~=@Hq<hvg8>m!mT9b_XfdSNYB6Ef5nehZl+bT7y-ZAwwEh zzWZsad8d3;rEC8I`5R}evN%!UT|$IOI&G+_>FOO6qC_knhVd#6u)0+coXtBp-B?*f z0MpH>Vf7#0+kT73P6%CD;3n2@SU|XRh|q-orJAl9uGh!B3roy#QgAhrfU3#Kb1Yk+ zN>rtsu$tulcML^a9rcjyR8?>&MYN#b`#+~@rteucT#aJO2*P!9bvXAzeFm&6K+lM1 zdviIHpMD^3j<;ZmcfAnB1ugD<!-;Wg!p%FCg#95L2$GJ{-c@>j-ZTtUw)f#hj*zFK z{X&z414&9z680@EA-cN>f1lEAcX-!?B`(f^=v2MtN18~i(dCVvL)MFFi*rLf@<Wv{ zy`*`^?NkUm9h3=+slx_>omJZ*N-{5w?axJ%&fEjGofU-?E{mR)9#krpn(D0jgb-@{ zHktHO|DyQgjWLAdJg%&<(s=SaM(3!ZqqMC37gPNmoS5e-JpvM;Z`5#RYTf9|CMUm) zO%h~-AfYPK=ijC!6q3{zKV{||{E#QvFZr->>5#|D4lL;BT~tu-g~r#H?OB-T?if*a zV7{h-#72Xunu<%&u)kNAU7@Fq=2RQNi@BErSD&^3$nVS{PnPXpP~<WFvD4|?AF8f* ziz+Kn<-P9-NAnBaYl?#8P@LL>{5F%~7=TTDaqA7uzMZ$^&pJL$T{Mfq-o#h?7|5CE zMVifS=PkL4XquXKKMrjx75&kfm~w0ZolH3o%j>TF>a<LtPf4jk<1G$*qZ`zB0T=Qn z7Bufvud<i^SoACP?IUX_hrwPWmomsfY(?={_$Gbrth#|PEoyYEiJAIz0E7D1NzggU z%+k|N5DQtpWSFQoQR^+G^{!%_wbi^%g(|hkqIyllB=7li_Dbt%f*R*mk!>GuRa9Bo zE7{|S*kh99RvK+iHJ%~<@+x1!qb8aES<A`r_d@Wl(8*el&NI7)ja=-20}ngJrxq0@ z$Jn!m0h-*KhcW8-P(%D*vb^A3nD%wqp8ArV5EXTwwr41C6CcUveA{0!1?uM?B6WZu zeb+TekV;gB8*;v{v(eu^-Bxgu8FpxY**8%-^$*!z)jL0LVj=yznm0q$Of2TzQuabo z_Qb;}dy^Rtb%wGZhY`fdY_2?|u6OXBeBbC8N)5^Gaw|mOuM!S{pVb|KkM1OJhD6lG z%GnUP%|hi~C$H0zLvx2b=G;GJJU8@3&rvgmY%i-TT-eK7#=dH3DkI@^beQ8sTNvz> zRTeDBXOy2W5_8)Y{?_jgEf4|ynKYurk>erAj+e5~IJpyz<ts;D=5L}@WC1lRD-oT9 zxlQMs^Rew4L!Gv=HGv-A@|<cAV`iK;S;NbskWJKnAVq1V1^Qf&+LA#h*e!O&k6786 z76(SH1{*S7;-2w6u~(O~bfjTpot7sEW830l5{OYNVHrN`srOo5Ny8?WApvK_`+PKC zYy1r_?4?j*<4-bvZKeF{0YxL>s3J^F<EH+fPuFO7rbhTPLe*=Fo<d^X%{{}31wQi< zX@9r@gx66`arj>tz*SKv6sJYE*Qmt9Ft&l|T#0vOCH)YY9@?5#??!8|U?|(~#IB+K z;-}s>b?2v?`V6Qq8(NKKf(Vh<JN{JOx@l64(UoD1l0mZ5vVjtm_OK55LOSi9tlBh? zHc`<@Zg34@I}t9#P-Rfr!37cae+gJrVz_#FLA|?Sfk>407c;t04vkz8t{C012P=Y$ z;b^AYqFg<&)&O!=jFFD8pML?A2yjKC2Q9!Xi(a{zuXN`e%f1w-%A&$QNPr5)|HRS< zK|s!V7Q&)0IGcxzpmyEVsw7jZjy-n$V><r<3!kby3B5A@=m6UkYCeSynSo=DDSmF3 z5hL=^Pc^Q{jF`u;0#DafNt~8pX0fH41U}%qa|N{t!w?ceGEnqA#JJ588bE}yNi0d3 z^@|8c8R0`_@~=r=alUfO3!hSo7oi@jVA6kr48hD%->#^Yf~c8Cv%Q3jRkwqxM})4j zLr&~(W@#Z}PywBz^PrX30<l8wxY?5vXiAEmn}<d!Ah^Twy#^ZX2*_&0xnzWrDXqz_ zOuA6ATXNOtib}<Po7l1)3w{4G?Rcf$phC{7_xR5s&q8&gdr9abW9*VfiMylaMbV^N z1yUXWa3cJTy6T3~R@mM@%;H9E)+D8^$Z@%1@u8aJi2;yKNiZJSsA{zQmCZ~VZ|}~i zDDb8h8x#)Feq|UDZwa#G60hhsxc7-=@6A7+%}Gg@=Zz_vUr;t95=MHG1DZL(M&(um z)(zcOsYv(P1>5P$+bPLC&tF1OL5n3D_#bP9WhLMCnATDH`7a<Avwl5wpV?%!!YyWb z@d4!a%lHRTb}k0aWTRGucE859I$DhR^FT;MC+Fc+DRFH<)zs7i$xmi9T={uJm`qPf z?0<p~OsbB3VjBS|rjzbL)N<|@&+~gTIFw@KHx6|YQtjt5<JOLaK{O{IzXi(;J)tqU zP~+Vcy^*5p-OvI6j_!D=IrTFtz;Sm#A4UZM<sBvu*BTR-QigyT7?OuS4CLYaKuTih zH>&Fzwj&Sw9W+0S0c@e7{-1=Bv~8EQyQ!E%9ZTuu0_zn<n{{Nv{foJu3}a{S|7j~j z)()rBUtVq0n;Al`nh^;lW=5TslT6?g?j@T!1(z@5QD`Gb;Z})p3AQk~tV=$}?R4%d z>Ge^2WigGGtj@aV25Cgde5;<>`TqjkbpD%;p1&3^Ac>hp**Txh$~p7sId71bK_%;% zoxeIO|EWjM-y&KS=lKbZX%9uzrjDz<p%HK6Z?rf^v-lnFdRZt?h%s)U5b68TT;tbM z><aWOES{R&@(Sqrs1rS-Gw4x@`()mLaY<pam2_Y&%izJ(Ar*?87m6%uQDRfFNqk9= zxJ7l*FLA43zO^bgk=Q^8{nS2!##8+fMz&~gQLugtmbzpqAaw0iSRw6|g*Kv~&iz}m zhlSp}OB+{#WYXTE0`zOIG%wNF-VO3%E+p$o`zz(iUG1M0w10uxkH6gR$wN)roM}Jl z)c%zU(JyhUR{Guo9Pe>Mq0_P)uI;rLo3ZUdwRg2BNxDY(5az=mN~>pssB?ij{i61k z^ol$68;STPsy|We9wU&nw<u7*)V&%GL>DD<h{g(IaC?h_^rLp{-I=39(vM%u7KIrM z)9iF&2E*fjI$CS}O~_G!ZYDMukf<AWA8#0pzbDYp4mK5A2@ERs8#UEBUBZQ(iJ42x ztl1U`?d7H$QuAbnT$rpTip~0mO{UD6Qc-7HcsH1+3e(@I`GqFeXDq;5O_ZepnU)nM z^N3Jy7<{Yo{v82>OoXXc_2gtYsQdSV@Q0tKK2s+rKRC{|>83zzeE0(!{!$R$BM4tQ zkHqak;5~s@w{$RpzYYRV2vW94vI1MT1mUgennWQxYO*2-Ujr61cc9sQ@)`6ECK?lX zu<ozYV?#un=R;m#GEnf4$C)V<;r@14lNPkO?M)#b`f-k8f1e?H+71>C*~7MoI0A{4 zox2e2OMC$!M_rtFSV}~%aSDbXQZA7!qQ@qql-o6`O8P$)=e_`YS6cil&*OoVV$!#m z<PUFxFmS=<Egb~wzg6kn>JSYWs<-I{=whUHqU>@Wrixa%NwI?ni5?Gorz9m$ebwAr zC>O~3EL&@`Ix)#=qTdbXdrhB;rUU&cL2wtH-E^QNI)oYuA>JdVPWuPGo0xXHv$?J9 z<Gk4Z{#2oaNN1H!hjP>A+o<=+^@tdV6MupKO$R<)G?SAFiJKbjCb|LkkO6k!%(VtF zZ3psV2hMWV-~DCU^^d1sb5BZe^6z@3p>$JUt8H~w)BptA*hkfs!MVMr0|ytKM*~bc zTXiR<lN8jF=Bg>iy~W9i4aGV@Gy;)bf&P`iqU}uwQqcy~04D!d6XnEiwfP_XnCHM9 zX)v#G65`~6FT~!Oi$5>22+WxCY}N&r2dPNHVJi-*a!z0VZemtDnCGV;RobIWv0eG+ z*_JIhyE9vG1YkP;@8oaAob<<-pOg65{r5gN<im8uHv`CAgW$i<8~tAjNGbDMfu(n6 zb8`;M;`nyQ)iE#x$gKv^&bkg_n;tQ$8Ylj;YI301S*1f@sYqh(4LEkQ&@_{D+#7rh z(Z?OZ$5-`n)8Y6w7816hYYNICc(sxai0%KJv#JV2LmYcD;ExB0KZ(!)=x6o)jm-B6 z`aUc3U8L{+nQskA-^qNVWXv)64d8u6-+#{_M|{rLX`dh-?PQMs$ILg%%N*mrB8X>? zfm<;$@tRot+cMwcw*LCew`L4~dFH#HzOT%DpQP{EnQzVe{-n$|$fEt3Z#s?kXTDF= zcYnUI>V7pB$?fxWfX0Wj?V7y&M?N9F`^bL&k9VI7#w3S3>RWfMG+jMpySoE_(PbO# zXk9yHAn6Y!N^StGHX1aB2fjS;IZSOtK3{cKy{ZUHOb|xHjTjM{tF7WqM6e^BhYBaM zLhoapb&q{c6<KS(y=y~>qCe*2z1FIp>%C*(CsOFg-YU?gWPIgN#xjR1fV`Tpvu$L> zCy6EP1vE&hyo&v0y`1=Yg8<#~*fN}yhU?*BD$3dR*!X&P#<)X<gMJ;G)4>2@L>We5 z8M=F)KK$Qm3i-H)6MqJr#XiQny3Tg{GFTM`^ZW;R+ae<OHQRJ)+j!cxHln@v`fobx z-Z(=A$IZ8CTRSbn>mto4qNGftiunR3g*>`zn-T|Y`y<%TZkvkg+P0qFvQVz&<+M_~ z+&=+gM`^##`#f;$eiAFRQ{4k?e*Z*?Q@8hHY)}JknL0bg(NWYf2ixB2p9q}<{={|n z?$3>BGNZ#amvCm~D?x{!gsC%dwbs%6!`-P$7B?)B%ipVt02To89#UMay;oZ*pSo$7 zAI=NDC5+l$@#lhP0GaZ(N6$4is!I$#Y44#rd;r^u^mF2~`vcQ{oxp7=d`Z(Qj;x8x zv;}YF{S)C{>9!om^;D6L8)GSUA8sax>BQ)j_1?94^)W7|Tla|}%XV)86uGOj*Can= zdQDO=y|$J|*ItY65=APpdab7uul%CzwZ3!}M41@F;%?-)Lm6bsfiUjW@+Noo0(BLB zFx~@yTBwe(TV?8u)IEc#eyVX=s<DWHW|}%ARm}-CENH@V>9+f6BXxnja?<++XkOq> zzo$m}4M{aEtwIoP=DlfYbq-@9*BAqh{4DiM<+JrcfqSLtxPU=+)rrow>T?q_PRt$h z;d#?T&iZotTlvTn9ja<`x-Ajbs#=4J)0McyiyP9*uPM;yh|sRQTrbx{0;w%w&%QoY zna8ei%N0iy(bE+0hf@s+2^#Ga4TI;WsV#$R4-cSgs6HsxiBs-z`NMKIn%2d(vyZj> zZRBZ7Lu^b(NMcQ`P$jJ{=5xqnOuNE`b6Xn#ck_l$wa@^YS;X-1dIlpW7)P9DFU)r~ z#3St_Rm0s^qN6hHrjbF@=`>ZACbxa8EheSUbum%;Xisc=o;y9XI?tOP@{V(Bi`|(e zppS#;h4ra1d1y%rW4k!VwY-T2t41>T`d$fjKar-W&AE2h7C}%&s1^b4A<^)&K?PJ5 zJLpvh94Y6zS9gPZKc8WC6dKrGnneSDkk%zl16M->Ur*D(FVE;g1J~x^HzpB2m`22g zPDC6m%)hpPdQ^vY_3DlWE<K_MO9Q|7OlLm_G>|_wMB_vhQUK=<1AnG7UXGsCwKK5s zc0Z;EM0zJ1;>+_+4v24NG1=-<qw@f2cz+a7SB3HD9?8GD;Arq7{{}ouarw&%|6L%t z-Bc<K<ftwC7c~i5m47v3Y;+!$C#C4yBKcR9m`c48{Zdy<&A<mNcse9JT?L`!dB=HI zh1|vxDAeEy(&U^9Xcw;X7nMSO>HtCGARX(ZF7VuU{iTE*g|a?>S{7w3K*`ieSzWlx zZ%^++S#TG`g79-`%E~5h$UTd~uMW9Ov$;#*5k*+a8g??26$k*92=dD^wDgs(E!y8@ zOjFu)gC<6CE{x2MVna^pp3^DYl3)<#FYBJ7-2EQ*@&7)BmRJfc?v}C)u;MPjx}&U4 zaxc!m%3SIY06T&riUbPQak60@q6mxFfFc+<OE`_3Zf=@TyP}QGGF<y#kHR#ZViukm z%9;v)I;<c3Gmg%)eh;JUoVQNa7IvCvb)l^75TII3X9v9Ve@I!IwKLtN2uoQ*kktds zZ0iZn?wExz5xqKHW<{n+0X2(5b)74jHFk;H!?uEHgE^z?%*jMC$%&Vv$n|=96FY@H zJ5eIiU>+zCIgKlVw_N`kB*3GL$}0G5C+_~Ft?DifOY{4_Ov&kX{IBNxYbe6rToYg_ zTI8J;yfTZ625{Iu=_BKEoa=DuTFh7WJF9DX!@*7>T&}tCc+%k_mkSDzPHN80eJ=Np z=Up3e*2#;OKboXk&x!`~`!ZWJq{sIw*#b+}#62U@U}x>4jc_wZH!z^VI3s*c?%Gar zMH<M$h=7h{i^Ddh%dk9R7BWER<Sz>cS{ET$u>NPWX>3<o&@MA88E4f2EnI#98$3$i z7r_ZT`~J_I<Lkcf&w@n$Px^itMc^nP=xt|R0f24i&O3!!eMj5DyhO+>EZqYG+uYxc zch<i_L?S#H;}Rw$y1UYL_nzF{=i#nm{k=qE_-5Chy`2p^S;4+55-@YS6-e`Y()-$r zChl$G(pXN*t(FW#D{$p$|E$N@1eum5tGZDBM9F=ESf47-V^J4~CQ~RUd6aUrjoK|` zbP)>?SOox;@|66E;rdiX9()8*Rdr-Ffd=I8HXN0obSry9DKU<KQbaD@;jH^W!`|-p z#r__W>0z7JURIjTKaE|SDxuKY&m3NKmr+y|jH2lwH&^0BhI0XcW(h?!s|xQ47JaX$ z(KjVBA!s4xyh>>I<pkX{;jnHx9DM>nITN~|PlX3f8(oNOFIfJsX=!5WLHDV)j{b?E zr|dlxOZ7s^c?kf{y6>WFiM@sjU=}Y&8AN|X!O}U1Hg+6s5Zz)R{2xp{Wh!E$sbFkp zKEoozuXCTxefhkr7#8nqBC=^v;MqCWS+`Jv58ZI&tRY;(#?Hx1P+5bb8+tuVz(`pW zDYKH<YHMZ|GdHArJYdBq=EFRvZ~-Y-X9h)bbyD^?lp_i52L6}4cmnCT8Wh$E8NrW- z1G4;RAcq68{4jz!Y&`%c1^^(3=T9umUsePun$c{fO+SH5k(hmG%g^t+>x&<Cxck~r zUq3r=mnD^bhE#?_28p7DdtWPi%4s=^kE4*w#pokD$>nlCi(E#qzUrBtZ$CnfsrJxc z*|SSpZp|#OQ)Zb{7L4<<V41VDbB*0cMc6Y&i3u0wbu!WgmXSW2`^0$*pqQUgV_1ON z!ro(=Vup*3pcu<YJEhuCeot^d6rMWlXgD7V&W9a_^Dcwb5R2|915jr->PDQwM*}$s zkb@5c*<Cjd2IL_6ke&?Y)u1;6!2b&>7kUCJ*K2GSeuJF#e-g7iQKFb-aL5LRwM-RT z4K|A&k{ZjqUfVKd2c4ByCn2bc4=@3BV+upRA?+CzHCnN99e9*p$Nw&)-QE9#ha^sZ z^s%gAo<c!<6xteIm_=L1;gKwhH)QE=o`nRvqpkn8{^pmQWME}1#@XL}fA7ZuGrHO+ zj1b9QIqzyn>k*0zD9V=;%``OyOrfWkf{awK420H>*85R<fAL|x-yK0MruU<r1T`0^ z^Nt2`E+FR}2C_SXng__a-SGth*618>v>(GCPq(a#_5*cxFL!EaS8lG?OFrN`HDFLr zKpkm$?KR13pS~q4$Uvm&;cSqO>H~WJD1BbgH>=N2<se7*eVz)0hQs;Ef4k2g<nROP zUpwtgr>CzvH~0PAkB#2$9~2VwbjRgh-#|t-6;etRNF&e7J&((p)?dP|OBM<KPX*o( zVvKN;+ZB;39}v^qYK?q2k8~BwAMZp)rx})WkG>eXHk^gbJ%2eGGXHp7m)fT%u>YPA zCI#r_6w%E98es>}p4@!~S?@5cjaGV}!^>Y0NB+nQ?K48IWiTDHymP!sAuiL^ycKXD zgW<-a=y{xA&C}H^;iu9hYGpe+&*s-jjUvTHuGEuh#fAke<wmT%pv-K$F1p2^1?Pf@ zuv=MD@716#KbVV=U?fg2utmt`n6quiVVfNV)F`7i5Ay|g3-RcxHn$r&N*ru<JP(?+ z+0hT3IUQ_@IAR~ibm>=NL`NAP4OFRfzWo&Y@b1UQSHNf%LH^IX^cITfy1qTuJB@{{ z>Y2T;4Kr@-+9!t{!_2}~M@zd~*d74E{(LeqORI~`y7uA>!#rXMdNC+dq5n*lLg=|z z^BFAITUHQgy<wR%go-2AwN~nYYtHzWT$6h~?YdTV6}12Jb*&D?c|F;wSa%wuR$hS% zs_^FUW3J#$j2xD`cR$-9W&0c7bbEq!zgTCsWJwhw&4JAr*YwnO2{DH>%&iT^`Kjd) zWo|hM-JYONmI4nlnsNrdFu5kVQ@P?S{pm>U$u#~a+1XZ^LcoFn^v)(AeRP^&-o;yI zX%02&X!UxYIXdL_G?oL}qWikitx(x&gF6kT^wB=zwX^M=h%cIBNySbKhi%R!Xp5>r z^k7Aw#^@_V-oV|Hg0T}Ll#SY+{&9-71J~KMEHD3|5_XEp9xCF$voiE5ksFMlG4O@v zw<M8h#U1{BBD5wETH&^F<4W#sJqmMoC&Cr61O1)#e|)7g6IhaTf{ATxN0>1$iN%XW zfbE611b|(9rfi{Nm;$@w3Y>T=*~@l2@zp$CBmM+3j(>{GU{7>$qX#0ceoYF$WqCAr z+pM0>x`B+^MEGH7KF57;;N#ddi`O|To+X^K;A@{|{#f?;#G*qe?w3HtOT6fVpR_#I z(MRWp*SI6sguZ$8hvP8^{>t({Cx$-gpKRby%wui4`Z@9@#vCf!y)@5lOK=+^g?#j) z7dj36?L~c!TMqS<JCT|d_^&XY#Xji@_K*I9ya9g8t`F1lWxc%^hm~`<+|Ux*W}Cie z%adMTXZ4T8aBP3r^v=2)6!ehtxZ#`pRr;D0#%G_iZi)&wL^6&y_Bg+u<80W@$r)(^ z*^o2@aF!Bf_i!<g${x~HLe9$1zD(qQw};>P6Pc|1NnX>#Rk*5@a|zqSrNH)2Mm7m7 z9KIx0^apYU--Go1aOQiUzJHPVW^Cm6w`RW2(03y9eU`qLX1-C==J=OqzR%S6%*;2c z$Q=KI%s1M;9RK{xH_O}{|4W%~v`jhvshMwdMmhemneQ*^`_q>?+k+`lj{i>Pn`tP= z|5N6h>6rFszG2F=Kl9C0Li;n{pV#-TnQyw1_Gi8$`d*s({(`<Q&wQV*@0pqJQhi^L z`DO!~_Gi8a>-$T5x5^)BZgq0t>4E*R6JN!4oB!bp#Cb*sBKGY6lEb-Z1-6<!)<7{5 z=;QtG!=kp3D98UP>_e9KJ*$)Z?D;7eSNzvZz5Y)DsIrK9I1_a~Jl9{NvVyoDXW~v} zK>AlGE&$n*iF*JM!=G&GxYZhv_4Td{=|XFJg4x+Nnw|8CeZ1euq7roxToBh!IyU9q zBuf^?{f5YP0y(a~i3fDLkq5jn6}=4KBfKvfRPWv0TL*x=z(?jnr@m}ZjT2vvK~F{5 z-bMe&$_2musySsu*v$c?MT62g>%Dl6APGVU2;a<tkWP(QtSacN^hel^Fy0gc0#_&b zY+61U#ol#<c#8_WA1Ni%hj-?sd9}%8#@P<%@#zU~)HKGa(jW>5id)!TUcfV_y_}g4 z=2lhejxDXnuoDfOJyTA3TZpmKws*l$_d*V9gzMWYLL8A_*+dj*%W>C9#%doucHZSz zUeZ2lio#@3uqd4Dv&mQ#;L%_#Rp1QANFJ(V06(U#sH;sM%D$VN$<N-!ENHA3;#Z1q zt~H%ueI9v}279xIdQ*qdr+1Rrn>3t`R5rTqb_E20t#=tx-9exx=Gg<>se{_bh{!q4 zI8={JxdN5E>;DDi%G>93m23|{QvnqKE^gQ3ZUfR?G}xUq)EzU-y>fW_7_lm#4$=d! zj{*5@jBMApwWe@y6N&k^!)h@M@h@T@M$dZ2n-wjKFqasX7-`HUMie;f)xq^%K7Kfs z^>eoEmIc&UnI_2ugz)luH=m8uncB}Ws=UMVzxi+FAEz_A-R58QZ{>fub5HB=@_&!+ z;a}I^{kz4(3dU{s_4v-e1*aLloSlD(!Q<87v1fPruN59AW#REQO{i%+Tunb1lLhs| zm$2~o*X`(mpwgMYOFupVfBDz>?}Z<Bpa05#D}N(Qv-|u%?=Jrl?LPox?aV)7SYnA$ zDGGmkn8wrfm!%W52pLYohg~)uekZNL9%1QVNugAd${+r>%Ks4NjV+kOh`<)?0su|V zt6>ltOC=1<3jM!6Pc5w!<KM}9VobijUrN?RDX$NMeKq3^CCDKzkM|Jf+|Zg4Wlt>s zfDx>iN_WD8pDcb>f?fH(RLVF=^#8yB8uFNbCKH?y-mAo*5G_AP3TyqYuR^{)dd2r& zv}LYl5uvhwBGKL25cw|=rx864O6H__bxl&jPr%4-(VVvVDdsKtZDel!Lpsjg<+R*N zg#QdZ5KO%HWJfkBaufN91n7oz90ESI*wReH{8^;Ygb3hhI$nTBD(~B9H3Gm>vm?Kt z$TOgOB5SIX=cVJE_<nSNegV<gDhD}FO~(rCJ5Lh-H8@ugnUfv4N0HwI0+H1BbuN|( zkZ?IY<=;zmknOQ_lwkfq+3rR48ARTl9l1o2r@=ZwtQxsKJ94%ne*!gdmY#MjNXI$x zLu?%S<wVmCBB@PXCUO*L@y{T#J}vK*r6X0J-hz58R2|f(Bs=o$y+po_Ba9$2byCns z<@}=}izu2Np+0{}$2svY0nWdNXp7gW)yZ9%$b*3MuP2hV$jl=DHL9oQyD)|=x2u!y z#vE_U3cX!PD(3QHNY$$dm5t#_iqoDYXsfXWZCZ{gV#~1v)U(5~k_<>1_UTsU`5!!^ zYUhHE<k)oSR6Ab$2_xWLe<M9tXQKyZM_-K{1<}VM%>}vpWJjN3qu(;*WPo>^n88W> zp@Sy(EA`}f(=FWKDxFjQ`G{~|m3d>dVBmnqT&rJF4@(`;#lY_szTP_yGSn^x;l zuU2;;s|F=c&IbJ&NTpe~zu4L8uVzQbZ1fq=b>=S0j+Xl)az85NmNha?SM1k}9xAq< z@@>U_On@q;4pe`br)svEh@fU$?ClJk@}NI*_8ZtssQ6^tA3w;B{+5kCAGL3g`<m?N zJR5zP*zyMBKtnadZAQyo^gm2>t!lPRl=1@tVCUE7`RjSp0S<da#oZ4>7CTH1{zFDG zYAMkIe1nzAtVhY!I(nn+-&rtGWUboNJv#Q5{GL5h1;ds!?HO6mKi8x=vW(yVKC6r^ zB<fnmJ*EtFpWp3TMh{ztUqvt?pu}6h1=9uICFA<?^lR>MXny-8CNdiSE)R}$VJoh0 zOu+Tn82Nz57A>)&jq)0|7wPB29l4EBWcc}XmvVUxp|Uf#oI#q#YVTo5uFc!he#Fpz zO)z_u-1#28%)9??q2$Bpx7__bZs!$qxCuA~nJ1?N<v1k>&qLQi7ITw8<2T_4&5x>n z=734-5S^YdC9;0`Cj~X$1h1gLvPoeBXyJn&?g~YF#U9sv31exSY3qyaEAF7qQUtWG zkff_O{3Nh*uSQ*4=suu$ud>K(R<!rk*tLUF-i?Jc(3{v0J=U9lv9!*Qle)h3BlcQz z%7Z%)oR(2c+W{op*p0=9!iXzK);?k`zAr{b#^f~iRd`-wFMZ`w-=Jm2hb7fSdLBDB z+IS^vgH{#3Br>+TVJJminp2lt^>V(HX4sVljlneORZ_{#=%0Dy#{TMfqvmj8^ln4r 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%0A5g2>GmO5?lQxf5rzm1XuM}&aUaB9{ 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 zƢ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%0D`EY1S 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%0DS=- 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%0A)o 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 diff --git a/CMU462/deps/freetype/bin/ftbench.exe b/CMU462/deps/freetype/bin/ftbench.exe deleted file mode 100644 index 6ce0484476fc420854c904bd5a14ebe0fe87a1fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21504 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 C;?Z{i diff --git a/CMU462/deps/freetype/bin/ftchkwd.exe b/CMU462/deps/freetype/bin/ftchkwd.exe deleted file mode 100644 index 6d98d33a43022b45781b43c3e9b0de1447b0e80b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14336 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 GBk&(%VB{D8 diff --git a/CMU462/deps/freetype/bin/ftdiff.exe b/CMU462/deps/freetype/bin/ftdiff.exe deleted file mode 100644 index 7ef5af3c0403efa8130740d9d7c27a26b31cf155..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70144 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≪cRGxc->H6*-|1yZe&>!d`JJwS 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 bgblw+(_H^3|2l3{SJ-|@guh(>1seFjM@nnb diff --git a/CMU462/deps/freetype/bin/ftdump.exe b/CMU462/deps/freetype/bin/ftdump.exe deleted file mode 100644 index 6a0e4ef7669e93ca30abde44a36dd37cfaf84a36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 Lz@M%^U<CdTPsV~2 diff --git a/CMU462/deps/freetype/bin/ftgamma.exe b/CMU462/deps/freetype/bin/ftgamma.exe deleted file mode 100644 index 1cadbbcd5df861840f358f0d98e5b106755484e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61440 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 Ys=duKj^0BHadl<sI|O{1{+B)Q-()w2?*IS* diff --git a/CMU462/deps/freetype/bin/ftgrid.exe b/CMU462/deps/freetype/bin/ftgrid.exe deleted file mode 100644 index 58af9be5bd6bc89e4cba2ae92255ed9cc3fd2864..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95232 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�%PHOkpl_IYXmrRIwA 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 Px6XT4fKStZvj_eaR)Ye( diff --git a/CMU462/deps/freetype/bin/ftlint.exe b/CMU462/deps/freetype/bin/ftlint.exe deleted file mode 100644 index 2c783d938f242eabc2b214d6aeca8fae3e2f1b75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14848 zcmeHO4Rn*&dA>3tF~9OQypW7EUphMh8Vj4Bln_j0Y!l<SiNH3d1!81L{t33EN}s@R zNGEEm&4=pX(JZHDB^?e~mynz;Y>b*FO&y>(bZJMacgmV<C6H!vOgF|jgtn~Tp66bD zvLs;J={f6ic5=<tci;Oy@6Ubjdw=xVeCjj(VuBFDj%u1h4C2Y+lAr(eM-1%gcYJHQ zI5_G1cMjU>zJF&!dq+eIg@bKjPnYKP1Oh=_Yw>I0Xh7=-XjPBYYh6K~-#KmC<f4>n zceN08wwuJJxnEjgSvw;f6Q<bm7K`6S&%LO5Ld4iEKrKb3cWk4de&=BXe9F>~PY_3b zB;>e+&=i&eltD>76tPi=SriTl(f|9Z>$mag)cxH$4C!=+mE%hf0&SFy_~-O_bdPGQ zv1804$4{3KL(Z@Q#>hv9)HM^&jN$^v*%FDc>t!20+-zN2V$|26^vT$41m-5xS*RJs zCGAGSUi8V>A%=oBKaQGFT)<_JA2mNj5ok1i)^mQQvEfRhF~96BBYHKFS9Uoe%KsR1 zwxzPX50CJ=*O)BB_M&_|%1#*#MfT*u=|c2evFY35L;Ca-%RKptiDH~iK+T3L#`z6L z?4tZBsL+pWsV)C98wazw{pAzcyRQ6pJfh!)BCdh5%Z3gc?v#zkU}JxZWu6@S)AFYQ z9{XX+>R~!()B&#nAHVGA-3%v^J(GkO?L-T(Db#sFVy;e8ewW6F9KEZ@+2+a72NXpI z2Bpp_=zJ6S(c*F3E0VJwoWCMx3OId-AR+o*y_*ljv%cqiQQw9uuqz5&BDtTVIB!p0 zyjh6k&k@4m>MKMJ3b#x2HC{5-7ZoI?6_mP!0fPu`J{+CO;ewys4l4sLv=9UDJ`Jcu z;cO4cQ;s;oAbNgzM%N^O(uv#2OFUF+Of5>5K~#ZzemSJymAIX1V9lPGCQ+;0#*Cum z6rlR_yDa~cV^bk@I}I5#lhfgI&$}0rhuBHK@)L!0n<+3r{|tLk@&&kI98G>67-LpZ zaz7MGU!<Rj<psq2ITgr`(OQOVvt>`_Up_|5xSEBt;C^!O*QVLucknLsFrGc<$>+Y7 z;(sNRpP057GRDs~nD1~HjfrXZSad%M<Ts3d61hME1$5Jz`W@%*fjx|DkXvu^i%1YT zKZ)w8J&)(-C1yIFykmk8tJ*JMjP1hZ5{bsCX4sxA!8m%371TK5CLHQHKeb(~a>1|d zu!;Wo(7sa8uhCgYd<2jCqxp`$b{NBu6OT_#%=%{g5Oh8!>di$;v^PuC(Ho*?SMnUa z4QLoYEgQOe7!flse&d55_H8xe=I6AXRa4BR>-CvS=jk(+Ivu@?-6LS!ywiTi()H1# zyFCW`^?iS`7ILePSDzNg<27iC<f9m9&#|c~{xfeNkoC!xva=v=b}zWv_if6Q4W&&E z_fBg<k5kuMjh|-r4nr2bUge!7C%t@zI*jj)-G(vm?43($={!g8m*M8p^^V>Ip0!)w z!?f17Pe5ps`EVc=l|Ct(6B{iRR=opp(OnR9x93yv?<Nbe0%3<8#`#NMg-@6hE3(~) zELR~)@+m;e%+bGBh;}E%T`BRgBjdhoM;|moOQMhymDq;G$t-xR=CPXB-??eks?|oh zOV0Tda^fuK9P#hKPT5=c-%jrE!~%S>L>Biq$=RkhvoL1OwsAzJie4~4WY3jJpQ~`~ zW3y6e2%nG)EPEIC*;+a3a=QHw$mX@?BBf7<K89fQR~Xr<)%EQ)gd73{ol?Wt^Gwrq z?0y8@W5-A~%kh)^o4!4TpT-Q0c0z%>y$uYtKeYFv+4H(<Rk8-S)Cx`3q3v$p3)a|a zDjK4q54fw@i>|UgrrHQ2<_GPypQ&$OTmi<%l@`f31jg7)ay?=-GT7^jX2;)3)D>xt zUK{cwQB^cMwpciNFG0`!(+Uu~;fd~4NFBWs3E5s$G(1rQhh=!8D0K;R3qzuf@=|aT zx9rU89nx=Y?Pmh=Zp#FG8PDZpL`MfG&!gaZ^ttwtN|aF3ecvBMP|U}-!>6LetQTVU zmqa&RJ)B1a|MZ;@2K4V=*FST3f}+EUuI;O~?V~h=X7Bu+-cyd(*4d(tvF_IX3Q6`J z0p9W2`}h50^k2a3{cDi1t+pllqlrR}E`BPy+&DdUb8Ek}j-|Tp(dG?Dk>5rkeOo?S z4W|-1T)JuWVKy6zitaDuP#y6xOyKA;dM#rCJ>Nl$X79XZ?5V^w=~Wfv7CsTbY%HR& z=#LX6b~qdVd34e%4{#u-$NI4JWDv@EM6`EfTs_0Crerk^0*OIZjr}-LDCJH?Cl69? zv;j6PL3skT{}~03y6Tftd4e1(P`G=5!&vGu+xa`E^qw$I>oY;eelbtKCH9N;eQulX zFi!5A+<PKAW}IHfaih=p5&Op8??;~WRTa(PN-*`JS;;fFlUjLs5N+m@S<J1tzaMVN zVit3M&7`?2WYS#5nKV~uCe0N#PB$KoEqCF#8JnSw{lqGJ!q)S8zU}k8cJKHFx#9OW z9HlQTIB)9r>{)9ZS;TK5?q~L_eWvW>3v4@jhu~q^kmFhA-$AtHt;6x`<>NL-{4YQo zKiY9l#Dr*#zop;YGtG@z&imj9GDcXWousf?WWFTxEV5w7S#a$Zsa<|OjdWf9uBK1k zA$7un{Mr|DJX?-tZ1X4R2&e&CG+y6vg6m4^a_JwN#;;ZT$m!>KyKci#<(X~tQ<&X# zhE$m~{<qGJlZ*%EZ=e);*RxpYx0u*oNg$4W7505>ViAm<I68j*V}Gy@Y}6od#nk7- zhm528?-`d<_bqeAGh{s!y^Kr<-G+VU{SQp@({QV7sHfZqmKdAtO3aG08GkE!Y3#M@ z+}Ch%+K3T>zerkAcgkt(qtPO1bUMd-t-Woqw>H<_3}x>W?4?sd<-<S-OAnWlM2+2i z$GF`1t>uV0lEm@Np`P<TUjO<UpT|ucH!NJ7%tC?m`_>)6NT09-;zQA!$I5LdYP+Y$ zw$FXOB6?}k--6nDvFHAV=*_rZZ@7BmD1z~B1q45U;NXnqu*iEQFSM^<`oOJ0-z)z{ zwUUbkDX+)RfSVg1d0%=J&_p?XkDGdapZ}8Fn1-vrQh_os1Y3QNe`UCO56R)`y?hwe zg9FFF7_NR!^**n9UmbWu_P(TgUsk<C18>USgNi&ha1x|Z{l>tEe7-qwT0Tz>ye*$2 zj&DvpgI23iecD)xI9=U{J&-Z9V>!h?i;Tr68{l<vG*4iQH;y`bccB+SEj#fV85}Ua zXXGc701Q{!&)nfsK_0Hm5B-5l48$<~!xIQi6!x-RIU8+ZRL&T1mBP9DnTf(GHY#Tg z^h-WBIMb-tjLOo18gLSYb&|huU@!Pa{o+L7b8J*D9e5ef;mRr{;4&&}5`_)G4!H4Q z)Vt-B8<lm&={w)R`G4zBk!Cw#uXv(&E^l(RTmM<c+=#b>l2JC|{IVlMYs5orGM+|U zXH&*9-p!^AXM8)GDx$GeM0>|0`b3|+FUtJ8B;$I4alIT}UUmwr^JBc`_b`@L;K4=g zlk@%qqd#ig&NS((wC~#}pZWV@e5O*yxRA^T?7q{+#pr>t1IcyJBUgs{SY^C}-L#yq zM8X9-M)|}yxe`9dM(4bawsFRIGm)Qg+08Q$F^l<?VSIl!i;HsT89DU&9C~IBU7AA| z<j@T{^x7QSmqTyNp<Oxj(j3~IL$~M9S`J;6L)YZc3v=kY9Qq0-I5U3s9KOh*xzIB4 zOptL}e&71yMSOu%1$kz=H5b<n-Y@bE<45Jg6alP0d26<Ox@L}C7DqipskzMTwPbRi znV65-AI=CA`$TbMi6*?kXs1u(`})?7fNx$f<PV_L>DOla!{K0fiB{~JGg(9fn*zZt z-~_{69$ggsv{p|?XT&*Kv~_L`wQI!-qf4~X?&8vg-IK*54>?7d1UN-yT7AT?Yu<KG z*yGjxVJ*_J%?}4AYnn8pdGYH3tvszlWC(i0evj_gIy+jzp72&J*z%a)tBY2>vm>A{ zfugPuylo8zbWQh1sJo;@3wgr27Hrk@cE7eF?Dscp4f*-|2`MT{e&d4oQV~y^A5p=t zJ3{_0X*b~M@~`8IlI?sivO!x%XV^L4>D<7ty(}fL$|r*!4Cx)gfEM<DHrf&PM>J1B z^Mu=?U4D!K&KG+pOISx>v!}DeXTeh(DnTi!Te<wf%F3n%^Gm90N*0vV*VfgRJlIgP zy5v(UAAS(sz-(DCzd3@C`+XrjT(XQY*UHOf?1QbdfoZO;X|AuSSY2H;hdQ0kdHC1n z^_DDfE_5zpYo0e4Xzgg5*Rf#nz4M^2MCmJmLZ_E95Bl{AJ=payhFhV{_Mmx>7QsK* zf{n<WIoh3=Rw6$tAEpR2Y#jGyJ7)3{=uk#q5`6_8Ax1L#ruy)EEA-u{^n<qt^(E9n z)HhJAl0^FoYJLlTRfKvE>SEL?)H>9)s6NzA)Na%m>X%TTLfwn{66zr8G1NCvPoutz zdI8lcSJ9pdzcti_s8y&9s8;zf`)3msJ|9<7g%DpA)!iMsI~?@-<uC32Qmnw<te9_S ztvDgh<kkE2#z4C#;Oq4Js=K{@xw)+9=)_itf!{5fo7?<)m!~6uJtiWSf(|t|`vaRh z!oh$L%M{(p-_J5mZqV4On?0dWvyNSpeL>OeiA4Ni9qp~6+3SaQ>>m})9YMtWQCo8` zkm~HUQCw*&%=5GaAvG%x8+b})Zk}r0m)9B!V+U`Ao(J+;u}9<LpV#H-><r2o+m_em z?}8@U`J=ovRP4wLMRlGd=>I(15h42XA{}i3PbaZY=S3p;1vJ%)XY(R@IN%L!Mf=sf z&1ofnC{{EySHb1x6&^3_7LC)XvqA_D`&I@z^k(b)KyI?HF6i+!Kgd&0L`gsF-=fs` z#U9d_j^;}E*Idsd4!_C0wmww7`r+!j1@oQ0PU-UuVE(siS7fs{tSd{iVdr|4(dS&> zYdHj$KPvzKBk*YYZ!aeB<(|M>ju?JvDc0hN@7>}FJn<0YIGg;=;JQx#B)fW<n2Wz; zlYe3n%k3xr4R)gB>fd_<{ilIVhJ<)NpHiyyV{y;02t1zyeSYeA2gW2cR2QmED8U$P zU%$kZ<ycIhg^C|EhK7d3(Az`e!uP%|MlP7*z*$o~Ibw=U$4yZ)Xo}+f_<GB_`)wh% z9TuVmzoD(g#x&n8M$Q304E&40?*cvod=s#Zs4Ial2fhsWV&HED9(oTP0RBnfHvwM* zd@-=%*Qme?;05pkc<k2afFB0_Mc{V<9|67z_(oxhmB5z+Uj}?J@V5eg0r<1Pj{tuh z_(9<J1HT{m-N0`Hz6JPN;O7Hx0&fCu0&fCu0&fEUYy7;8pTqch8b1;IxF!Aq@MnP^ z0sc7fgTPb!exP>)y$$FVplgAi5B=wW9|rzK;CBHZ0lo?NM&MThUk-d3@WsI23Ow{4 zH~{>Uz;6P+2KeF|L<jF4&H+CR{ENWv0zLwKQ?W1`5zUo|CSH9%U502DBbv7Ye*yTj zz>ffb9QZ-t_XEEl_}##710H8yq!xHwvP~0s6L=GN6L=GN6aHYj-o|tt#&kW6>Ec1| zcH_PR{8`{ffIklWAn^Nvzd`zlbHEP+|03|afR6y*1pE!s2YN@u0pOnmeiQIDz!w95 zqX3PV=YSsu{zc$-0gp(VO&Hkq12ke@0RAlSBfuXAeh_#B=LP{9!K<GGs86D9Ld9E5 z;E~Ta2++lg7sY$;y(fP1lb?tm{NM-T$dM!B(4j+O|Ni~rYhU}C*u8tV_`(;yAhvDW zCIW$gXlZE?Yu2n0wY9Zk*|KF~{`~pkuDk9Mx7~J|m_B{FxbQ1eJhyi*)^QB$1$McV zU|&A)Nmu>{ucs7>FFLMQl;Si;T1Zo9<nU=Vt0?}s*!B4tVmW}6{&erSCS}I54}ij? zkvaUdU<#0;uaTE=qijl@3~ZW|j7&q8yn<&M&z6Td7RskeHs9(^KU3he{xrjC{5SHs z{##<{=QZ+~&H)9I|E%#_0by5K^t$|%Wo76(@;BtC6{men>!(F!HSJlJ{%pRbh*;%+ zHa}CB<Vyj3sF9@&Wy>pr>`S*Y^k;O+W{S4PpUIYna`+i4vznHCR%Zqw`AXppJ~?0i z$Axz*O;fiN-f(QV$1H?TYec<h#%Hxyjn+!>h<F(EN_?(Bo8{Z~f5mBI!yPV99GW~a z{d_=j)t`jo8kSY+<Q=JA=prmSL_oAbTL-@3_@Ox<TJfC^_d$s%6$|mlxA&nggb(y+ zv-kw8RRYt6KcDpgzZKqiK=BI?-U*>6Dw?F;1vuk1eCuq7B^~G`Vjh0lBw|Y%;l%kK zgiKg?p@Y`L!1#p|I6vf;Nxc{HJMA`62PvWgkWuy;pxqBED<I{^PXqi3$sXFKwg7Z! z=;1gyTB183kN2P8hJa@j+N76$;Y0rx>BA<pI6n4xWh;Pw>S~cXqS6O)8M!tfI`Oj= zG{>exA4f&J2bE)N1+@hfJ*8CUSe)o#^fhVQ2SgZc9h8RHdc-CvL#@j95com-NtqwM z(FVQoz%%+{$<gj+^hP9tS{{?y=^g!~M;gZG2g(mgMuT=E;vV#Gk(zwcp30OKIUW^1 zWs}jdJZ04AE5{s#Eh`#+(G4FvrH38T5-rnG0B=S!=RP+k5#)e|8MVgD9OH~|?idM= z9M@cog^`|{vaUw!mGKV(OMmAA!I>vUjhgZ*Qp)e_*`NiEECSD&9h`B_G@p#q78xO> zL(LgEjHwzoGfYqU$@p~1_INhY8%9<~Wt;Z4NROzEbE($ljq;jYm7U}BsG`8E$<7Vx z=9;qlebCRGQPC|yKO@XoT)T#{*Bi5fD=I3z=NRdQ70Fi6D*HA<Qv=qj6Q65Q?@r|t z=aKVbtv`;kOG<G~SXpc7qt9HIw8E%rVmbD}Dm=62inD92IL<Gl%uk=pwXlrwcs!Yj z9vNXZ`&JgIeTRDs<E3J0dBhA3rL1z!)GGJFGhN2b^7z{LWzU2avD}%mX5?;Z+lL5y z;UTk~dl$1@Wr-7>Rlqu9!R#cDF{j7Yu97_`xskHwh?+R-YA?w}son^DP$OjKtDQ)V z$MV<8T5DG6c>uF*?MGIG`Fs$kM5BCiR9q8kPTjD=U5h%joc*0%X6EN_qJul2+S61F zHJnM;&*P2o(VdmG8s3U9o4Cf9HJokcX|6_fI$V1$aD?37=A<o-ufjGN0kto1<y$eN z49^GVFYT&RW_*=dK5B?3Pa`YFYA+nmM6N$;oiQhP)~OSl*<_s)*1E~n&-{v}baPi{ z9;htKURC~dmhy}oUs+au(K}jZ9;<znr-Rx{-MB@p0N*D$Dy9m}%vZTZyWB5$lI3RU zjdu?fi|l=VEi^P?9Nc%ge{0xFw!#X%>5}KnO0=zrT|ZiC4OlVeX&X$PXFS&#r)(cN zhS{*edkJ?=Yk!Pj#9rKlLilXO)0%INdye!4@5AxV!-n`MnJRFsvnT{VRW9>lv;q{Z zGQvw><=Q<+#fkfu@<Po9XPi3u$*g3#S4_#Uxkhp*O$nCy@NEI=BGmcfleiD!B?yXB z+zh#u(g$i&`}O#(koO+TN8&eQl)TGXx28&1$i9aO@dA9Bk9%h+>}c5aRYviasCEyo z;nlL2v)YL);mO=3S6Y+or~WQ^V)H)9;u9asvfBV{TxY~_|HK;>iOapienV=_jjZa; z9NRY_y-ddN5opUiyR3O+WH`$L^FAIECwjVNFJn9jKDr?vglFoc9*-pFJNuqXhnGm3 z*)qAaccZy;;XiNLurm0=l6_a-g1p{>Xtt)T^4`dsn-kuts8&g-H8OtID47X7Pg#nD a9iJ-FyyvKWbUddf+21ALqw-sfz<&aj^Oqq2 diff --git a/CMU462/deps/freetype/bin/ftmemchk.exe b/CMU462/deps/freetype/bin/ftmemchk.exe deleted file mode 100644 index ead01059d75cd001cd1b9ff3f89a9baeb9e7c5ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15360 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 ME&)EeeoqnjSMo<w*8l(j diff --git a/CMU462/deps/freetype/bin/ftmulti.exe b/CMU462/deps/freetype/bin/ftmulti.exe deleted file mode 100644 index 44685283f09a939ef9bcd87877507067a8ba5df3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58880 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 P=DMFN;MeI}@W6ip0-xE@ diff --git a/CMU462/deps/freetype/bin/ftpatchk.exe b/CMU462/deps/freetype/bin/ftpatchk.exe deleted file mode 100644 index 3e04441eb9f6a88d0059e8f3d7d0a91177802659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12800 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 Zc&do=j->YBvHY57|CE4l%l|S0{|V(*2zCGf diff --git a/CMU462/deps/freetype/bin/ftstring.exe b/CMU462/deps/freetype/bin/ftstring.exe deleted file mode 100644 index 8edb92c5ffdd6da5addf7f68797712821312304b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68608 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 diff --git a/CMU462/deps/freetype/bin/fttimer.exe b/CMU462/deps/freetype/bin/fttimer.exe deleted file mode 100644 index a87e06d7a251ddf1b717351d675696b76cd44c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 TT^-D;q4xI(`1JZcM&RE8OS<#1 diff --git a/CMU462/deps/freetype/bin/ftvalid.exe b/CMU462/deps/freetype/bin/ftvalid.exe deleted file mode 100644 index 2a1287c20e479b29fcae3ebf5c726b98284d308f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20992 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 diff --git a/CMU462/deps/freetype/bin/ftview.exe b/CMU462/deps/freetype/bin/ftview.exe deleted file mode 100644 index 7fe982f5bd4023a30120992867f8c8eff0edd366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72192 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 diff --git a/CMU462/deps/freetype/bin/zlib1.dll b/CMU462/deps/freetype/bin/zlib1.dll deleted file mode 100644 index 076f50336d9054c7f1b322dbf28c41d6c67750bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72192 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 IsB&Zh0MOcpIsgCw diff --git a/CMU462/deps/freetype/include/freetype/config/ftconfig.h b/CMU462/deps/freetype/include/freetype/config/ftconfig.h new file mode 100644 index 0000000..fc35c93 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/config/ftconfig.h @@ -0,0 +1,575 @@ +/**************************************************************************** + * + * 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/`. + * + */ + +#ifndef FTCONFIG_H_ +#define FTCONFIG_H_ + +#include <ft2build.h> +#include FT_CONFIG_OPTIONS_H +#include FT_CONFIG_STANDARD_LIBRARY_H + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * PLATFORM-SPECIFIC CONFIGURATION MACROS + * + * These macros can be toggled to suit a specific system. The current ones + * are defaults used to compile FreeType in an ANSI C environment (16bit + * compilers are also supported). Copy this file to your own + * `builds/<system>` directory, and edit it to port the engine. + * + */ + + + /* There are systems (like the Texas Instruments 'C54x) where a `char` */ + /* has 16~bits. ANSI~C says that `sizeof(char)` is always~1. Since an */ + /* `int` has 16~bits also for this system, `sizeof(int)` gives~1 which */ + /* is probably unexpected. */ + /* */ + /* `CHAR_BIT` (defined in `limits.h`) gives the number of bits in a */ + /* `char` type. */ + +#ifndef FT_CHAR_BIT +#define FT_CHAR_BIT CHAR_BIT +#endif + + + /* The size of an `int` type. */ +#if FT_UINT_MAX == 0xFFFFUL +#define FT_SIZEOF_INT ( 16 / FT_CHAR_BIT ) +#elif FT_UINT_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_INT ( 32 / FT_CHAR_BIT ) +#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_INT ( 64 / FT_CHAR_BIT ) +#else +#error "Unsupported size of `int' type!" +#endif + + /* 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 ) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL +#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT ) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_LONG ( 64 / FT_CHAR_BIT ) +#else +#error "Unsupported size of `long' type!" +#endif + + + /* `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. + * + */ + + + /************************************************************************** + * + * 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. */ +#include <errno.h> +#ifdef ECANCELED /* defined since 10.2 */ +#include "AvailabilityMacros.h" +#endif +#if defined( __LP64__ ) && \ + ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) +#undef FT_MACINTOSH +#endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + +#endif + + + /* Fix compiler warning with sgi compiler. */ +#if defined( __sgi ) && !defined( __GNUC__ ) +#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) +#pragma set woff 3505 +#endif +#endif + + + /************************************************************************** + * + * @section: + * basic_types + * + */ + + + /************************************************************************** + * + * @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. + */ + typedef unsigned short FT_UInt16; + + /* */ + + + /* 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. + */ + typedef signed XXX FT_Int32; + + + /************************************************************************** + * + * @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). + */ + 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). + */ + typedef unsigned XXX FT_UInt64; + + /* */ + +#endif + +#if FT_SIZEOF_INT == ( 32 / FT_CHAR_BIT ) + + typedef signed int FT_Int32; + typedef unsigned int FT_UInt32; + +#elif FT_SIZEOF_LONG == ( 32 / FT_CHAR_BIT ) + + typedef signed long FT_Int32; + typedef unsigned long FT_UInt32; + +#else +#error "no 32bit type found -- please check your configuration files" +#endif + + + /* look up an integer type that is at least 32~bits */ +#if FT_SIZEOF_INT >= ( 32 / FT_CHAR_BIT ) + + typedef int FT_Fast; + typedef unsigned int FT_UFast; + +#elif FT_SIZEOF_LONG >= ( 32 / FT_CHAR_BIT ) + + typedef long FT_Fast; + typedef unsigned long FT_UFast; + +#endif + + + /* determine whether we have a 64-bit `int` type for platforms without */ + /* Autoconf */ +#if FT_SIZEOF_LONG == ( 64 / FT_CHAR_BIT ) + + /* `FT_LONG64` must be defined if a 64-bit type is available */ +#define FT_LONG64 +#define FT_INT64 long +#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. + */ +#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) + +#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L + +#define FT_LONG64 +#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++) */ + + /* 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. */ + + /* this compiler provides the `__int64` type */ +#define FT_LONG64 +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __WATCOMC__ ) /* Watcom C++ */ + + /* Watcom doesn't provide 64-bit data types */ + +#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ + +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#elif defined( __GNUC__ ) + + /* GCC provides the `long long` type */ +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#endif /* __STDC_VERSION__ >= 199901L */ + +#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ + +#ifdef FT_LONG64 + typedef FT_INT64 FT_Int64; + typedef FT_UINT64 FT_UInt64; +#endif + + +#ifdef _WIN64 + /* only 64bit Windows uses the LLP64 data model, i.e., */ + /* 32bit integers, 64bit pointers */ +#define FT_UINT_TO_POINTER( x ) (void*)(unsigned __int64)(x) +#else +#define FT_UINT_TO_POINTER( x ) (void*)(unsigned long)(x) +#endif + + + /************************************************************************** + * + * miscellaneous + * + */ + + +#define FT_BEGIN_STMNT do { +#define FT_END_STMNT } while ( 0 ) +#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT + + + /* `typeof` condition taken from gnulib's `intprops.h` header file */ +#if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 ) || \ + ( defined( __IBMC__ ) && __IBMC__ >= 1210 && \ + defined( __IBM__TYPEOF__ ) ) || \ + ( defined( __SUNPRO_C ) && __SUNPRO_C >= 0x5110 && !__STDC__ ) ) +#define FT_TYPEOF( type ) ( __typeof__ ( type ) ) +#else +#define FT_TYPEOF( type ) /* empty */ +#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`. */ + /* */ +#ifdef FT_MAKE_OPTION_SINGLE_OBJECT + +#define FT_LOCAL( x ) static x +#define FT_LOCAL_DEF( x ) static x + +#else + +#ifdef __cplusplus +#define FT_LOCAL( x ) extern "C" x +#define FT_LOCAL_DEF( x ) extern "C" x +#else +#define FT_LOCAL( x ) extern x +#define FT_LOCAL_DEF( x ) x +#endif + +#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ + +#define FT_LOCAL_ARRAY( x ) extern const x +#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`. */ + /* */ +#ifndef FT_BASE + +#ifdef __cplusplus +#define FT_BASE( x ) extern "C" x +#else +#define FT_BASE( x ) extern x +#endif + +#endif /* !FT_BASE */ + + +#ifndef FT_BASE_DEF + +#ifdef __cplusplus +#define FT_BASE_DEF( x ) x +#else +#define FT_BASE_DEF( x ) x +#endif + +#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`. */ + /* */ +#ifndef FT_EXPORT + +#ifdef FT2_BUILD_LIBRARY + +#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 +#define FT_EXPORT( x ) extern x +#endif + +#else + +#if defined( WIN32 ) && defined( DLL_IMPORT ) +#define FT_EXPORT( x ) __declspec( dllimport ) x +#elif defined( __cplusplus ) +#define FT_EXPORT( x ) extern "C" x +#else +#define FT_EXPORT( x ) extern x +#endif + +#endif + +#endif /* !FT_EXPORT */ + + +#ifndef FT_EXPORT_DEF + +#ifdef __cplusplus +#define FT_EXPORT_DEF( x ) extern "C" x +#else +#define FT_EXPORT_DEF( x ) extern x +#endif + +#endif /* !FT_EXPORT_DEF */ + + +#ifndef FT_EXPORT_VAR + +#ifdef __cplusplus +#define FT_EXPORT_VAR( x ) extern "C" x +#else +#define FT_EXPORT_VAR( x ) extern x +#endif + +#endif /* !FT_EXPORT_VAR */ + + + /* The following macros are needed to compile the library with a */ + /* C++ compiler and with 16bit compilers. */ + /* */ + + /* This is special. Within C++, you must specify `extern "C"` for */ + /* functions which are used via function pointers, and you also */ + /* must do that for structures which contain function pointers to */ + /* assure C linkage -- it's not possible to have (local) anonymous */ + /* functions which are accessed by (global) function pointers. */ + /* */ + /* */ + /* FT_CALLBACK_DEF is used to _define_ a callback function, */ + /* located in the same source code file as the structure that uses */ + /* it. */ + /* */ + /* FT_BASE_CALLBACK and FT_BASE_CALLBACK_DEF are used to declare */ + /* and define a callback function, respectively, in a similar way */ + /* as FT_BASE and FT_BASE_DEF work. */ + /* */ + /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ + /* contains pointers to callback functions. */ + /* */ + /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ + /* that contains pointers to callback functions. */ + /* */ + /* */ + /* Some 16bit compilers have to redefine these macros to insert */ + /* the infamous `_cdecl` or `__fastcall` declarations. */ + /* */ +#ifndef FT_CALLBACK_DEF +#ifdef __cplusplus +#define FT_CALLBACK_DEF( x ) extern "C" x +#else +#define FT_CALLBACK_DEF( x ) static x +#endif +#endif /* FT_CALLBACK_DEF */ + +#ifndef FT_BASE_CALLBACK +#ifdef __cplusplus +#define FT_BASE_CALLBACK( x ) extern "C" x +#define FT_BASE_CALLBACK_DEF( x ) extern "C" x +#else +#define FT_BASE_CALLBACK( x ) extern x +#define FT_BASE_CALLBACK_DEF( x ) x +#endif +#endif /* FT_BASE_CALLBACK */ + +#ifndef FT_CALLBACK_TABLE +#ifdef __cplusplus +#define FT_CALLBACK_TABLE extern "C" +#define FT_CALLBACK_TABLE_DEF extern "C" +#else +#define FT_CALLBACK_TABLE extern +#define FT_CALLBACK_TABLE_DEF /* nothing */ +#endif +#endif /* FT_CALLBACK_TABLE */ + + +FT_END_HEADER + + +#endif /* FTCONFIG_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/config/ftheader.h b/CMU462/deps/freetype/include/freetype/config/ftheader.h old mode 100755 new mode 100644 similarity index 51% rename from CMU462/deps/freetype/include/freetype2/freetype/config/ftheader.h rename to CMU462/deps/freetype/include/freetype/config/ftheader.h index b957d05..696d6ba --- a/CMU462/deps/freetype/include/freetype2/freetype/config/ftheader.h +++ b/CMU462/deps/freetype/include/freetype/config/ftheader.h @@ -1,22 +1,22 @@ -/***************************************************************************/ -/* */ -/* ftheader.h */ -/* */ -/* Build macros of the FreeType 2 library. */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -#ifndef __FT_HEADER_H__ -#define __FT_HEADER_H__ +/**************************************************************************** + * + * 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,55 +55,55 @@ #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 - * FreeType 2 configuration data. + * A macro used in `#include` statements to name the file containing + * FreeType~2 configuration data. * */ #ifndef FT_CONFIG_CONFIG_H @@ -111,14 +111,14 @@ #endif - /************************************************************************* + /************************************************************************** * * @macro: * FT_CONFIG_STANDARD_LIBRARY_H * * @description: - * A macro used in #include statements to name the file containing - * FreeType 2 interface to the standard C library functions. + * A macro used in `#include` statements to name the file containing + * FreeType~2 interface to the standard C library functions. * */ #ifndef FT_CONFIG_STANDARD_LIBRARY_H @@ -126,14 +126,14 @@ #endif - /************************************************************************* + /************************************************************************** * * @macro: * FT_CONFIG_OPTIONS_H * * @description: - * A macro used in #include statements to name the file containing - * FreeType 2 project-specific configuration options. + * A macro used in `#include` statements to name the file containing + * FreeType~2 project-specific configuration options. * */ #ifndef FT_CONFIG_OPTIONS_H @@ -141,14 +141,14 @@ #endif - /************************************************************************* + /************************************************************************** * * @macro: * FT_CONFIG_MODULES_H * * @description: - * A macro used in #include statements to name the file containing the - * list of FreeType 2 modules that are statically linked to new library + * 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. * */ @@ -156,30 +156,31 @@ #define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h> #endif + /* */ /* public headers */ - /************************************************************************* + /************************************************************************** * * @macro: * FT_FREETYPE_H * * @description: - * A macro used in #include statements to name the file containing the - * base FreeType 2 API. + * A macro used in `#include` statements to name the file containing the + * base FreeType~2 API. * */ #define FT_FREETYPE_H <freetype/freetype.h> - /************************************************************************* + /************************************************************************** * * @macro: * FT_ERRORS_H * * @description: - * A macro used in #include statements to name the file containing the - * list of FreeType 2 error codes (and messages). + * 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. * @@ -187,27 +188,27 @@ #define FT_ERRORS_H <freetype/fterrors.h> - /************************************************************************* + /************************************************************************** * * @macro: * FT_MODULE_ERRORS_H * * @description: - * A macro used in #include statements to name the file containing the - * list of FreeType 2 module error offsets (and messages). + * A macro used in `#include` statements to name the file containing the + * list of FreeType~2 module error offsets (and messages). * */ #define FT_MODULE_ERRORS_H <freetype/ftmoderr.h> - /************************************************************************* + /************************************************************************** * * @macro: * FT_SYSTEM_H * * @description: - * A macro used in #include statements to name the file containing the - * FreeType 2 interface to low-level operations (i.e., memory management + * A macro used in `#include` statements to name the file containing the + * FreeType~2 interface to low-level operations (i.e., memory management * and stream i/o). * * It is included by @FT_FREETYPE_H. @@ -216,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). * @@ -232,14 +233,14 @@ #define FT_IMAGE_H <freetype/ftimage.h> - /************************************************************************* + /************************************************************************** * * @macro: * FT_TYPES_H * * @description: - * A macro used in #include statements to name the file containing the - * basic data types defined by FreeType 2. + * 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. * @@ -247,14 +248,14 @@ #define FT_TYPES_H <freetype/fttypes.h> - /************************************************************************* + /************************************************************************** * * @macro: * FT_LIST_H * * @description: - * A macro used in #include statements to name the file containing the - * list management API of FreeType 2. + * 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.) * @@ -262,78 +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 - * scalable outline management API of FreeType 2. + * 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 - * module management API of FreeType 2. + * A macro used in `#include` statements to name the file containing the + * module management API of FreeType~2. * */ #define FT_MODULE_H <freetype/ftmodapi.h> - /************************************************************************* + /************************************************************************** * * @macro: * FT_RENDER_H * * @description: - * A macro used in #include statements to name the file containing the - * renderer module management API of FreeType 2. + * 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 + * 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 + * structures and macros related to the auto-hinting module. + * + * 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 + * structures and macros related to the CFF driver module. + * + * 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 + * structures and macros related to the TrueType driver module. + * + * 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 + * structures and macros related to the PCF driver module. + * + * 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 - * types and API specific to the Type 1 format. + * 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. @@ -342,204 +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. + * + */ +#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 + * 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 - * API of the optional FreeType 2 cache sub-system. + * A macro used in `#include` statements to name the file containing the + * API of the optional FreeType~2 cache sub-system. * */ #define FT_CACHE_H <freetype/ftcache.h> - /************************************************************************* - * - * @macro: - * FT_CACHE_IMAGE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * `glyph image' API of the FreeType 2 cache sub-system. - * - * It is used to define a cache for @FT_Glyph elements. You can also - * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to - * store small glyph bitmaps, as it will use less memory. - * - * This macro is deprecated. Simply include @FT_CACHE_H to have all - * glyph image-related cache declarations. - * - */ -#define FT_CACHE_IMAGE_H FT_CACHE_H - - - /************************************************************************* - * - * @macro: - * FT_CACHE_SMALL_BITMAPS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * `small bitmaps' API of the FreeType 2 cache sub-system. - * - * It is used to define a cache for small glyph bitmaps in a relatively - * memory-efficient way. You can also use the API defined in - * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, - * including scalable outlines. - * - * This macro is deprecated. Simply include @FT_CACHE_H to have all - * small bitmaps-related cache declarations. - * - */ -#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H - - - /************************************************************************* - * - * @macro: - * FT_CACHE_CHARMAP_H - * - * @description: - * A macro used in #include statements to name the file containing the - * `charmap' API of the FreeType 2 cache sub-system. - * - * This macro is deprecated. Simply include @FT_CACHE_H to have all - * charmap-based cache declarations. - * - */ -#define FT_CACHE_CHARMAP_H FT_CACHE_H - - - /************************************************************************* + /************************************************************************** * * @macro: * FT_MAC_H * * @description: - * A macro used in #include statements to name the file containing the - * Macintosh-specific FreeType 2 API. The latter is used to access - * fonts embedded in resource forks. + * 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). @@ -548,174 +590,217 @@ #define FT_MAC_H <freetype/ftmac.h> - /************************************************************************* + /************************************************************************** * * @macro: * FT_MULTIPLE_MASTERS_H * * @description: - * A macro used in #include statements to name the file containing the - * optional multiple-masters management API of FreeType 2. + * 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 - * FreeType 2 API which accesses PFR-specific data. + * 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 - * FreeType 2 API which provides functions to stroke outline paths. + * 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 - * FreeType 2 API which performs artificial obliquing and emboldening. + * 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_XFREE86_H + * FT_FONT_FORMATS_H * * @description: - * A macro used in #include statements to name the file containing the - * FreeType 2 API which provides functions specific to the XFree86 and - * X.Org X11 servers. + * A macro used in `#include` statements to name the file containing the + * FreeType~2 API which provides functions specific to font formats. */ -#define FT_XFREE86_H <freetype/ftxf86.h> +#define FT_FONT_FORMATS_H <freetype/ftfntfmt.h> + + /* deprecated */ +#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 - * FreeType 2 API which performs trigonometric computations (e.g., + * 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 - * FreeType 2 API which performs color filtering for subpixel rendering. + * 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 + * 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 - * FreeType 2 API which returns entries from the TrueType GASP table. + * 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 + * 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. */ #define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h> +#define FT_PARAMETER_TAGS_H <freetype/ftparams.h> + + /* Deprecated macros. */ +#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. */ +#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 <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_MRU_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_MANAGER_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_CACHE_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_GLYPH_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_IMAGE_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_SBITS_H <freetype/ftcache.h> - - -#define FT_INCREMENTAL_H <freetype/ftincrem.h> - -#define FT_TRUETYPE_UNPATENTED_H <freetype/ttunpat.h> +#define FT_CACHE_MANAGER_H FT_CACHE_H +#define FT_CACHE_INTERNAL_MRU_H FT_CACHE_H +#define FT_CACHE_INTERNAL_MANAGER_H FT_CACHE_H +#define FT_CACHE_INTERNAL_CACHE_H FT_CACHE_H +#define FT_CACHE_INTERNAL_GLYPH_H FT_CACHE_H +#define FT_CACHE_INTERNAL_IMAGE_H FT_CACHE_H +#define FT_CACHE_INTERNAL_SBITS_H FT_CACHE_H /* - * Include internal headers definitions from <freetype/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> @@ -723,7 +808,7 @@ #endif /* FT2_BUILD_LIBRARY */ -#endif /* __FT2_BUILD_H__ */ +#endif /* FTHEADER_H_ */ /* END */ diff --git a/CMU462/deps/freetype/include/freetype/config/ftmodule.h b/CMU462/deps/freetype/include/freetype/config/ftmodule.h new file mode 100644 index 0000000..7c603e5 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/config/ftmodule.h @@ -0,0 +1,32 @@ +/* + * 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`. + * + * Please read `docs/INSTALL.ANY` and `docs/CUSTOMIZE` how to compile + * FreeType without GNU make. + * + */ + +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) + +/* EOF */ diff --git a/CMU462/deps/freetype/include/freetype/config/ftoption.h b/CMU462/deps/freetype/include/freetype/config/ftoption.h new file mode 100644 index 0000000..12f47a8 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/config/ftoption.h @@ -0,0 +1,982 @@ +/**************************************************************************** + * + * 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_ +#define FTOPTION_H_ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * USER-SELECTABLE CONFIGURATION MACROS + * + * This file contains the default configuration macro definitions for a + * standard build of the FreeType library. There are three ways to use + * this file to build project-specific versions of the library: + * + * - You can modify this file by hand, but this is not recommended in + * cases where you would like to build several versions of the library + * from a single source directory. + * + * - You can put a copy of this file in your build directory, more + * precisely in `$BUILD/freetype/config/ftoption.h`, where `$BUILD` is + * the name of a directory that is included _before_ the FreeType include + * path during compilation. + * + * The default FreeType Makefiles and Jamfiles use the build directory + * `builds/<system>` by default, but you can easily change that for your + * own projects. + * + * - Copy the file <ft2build.h> to `$BUILD/ft2build.h` and modify it + * slightly to pre-define the macro `FT_CONFIG_OPTIONS_H` used to locate + * this file during the build. For example, + * + * ``` + * #define FT_CONFIG_OPTIONS_H <myftoptions.h> + * #include <freetype/config/ftheader.h> + * ``` + * + * will use `$BUILD/myftoptions.h` instead of this file for macro + * definitions. + * + * Note also that you can similarly pre-define the macro + * `FT_CONFIG_MODULES_H` used to locate the file listing of the modules + * that are statically linked to the library at compile time. By + * default, this file is `<freetype/config/ftmodule.h>`. + * + * We highly recommend using the third method whenever possible. + * + */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*#************************************************************************ + * + * 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. + */ +/* #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. + */ +#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. + */ +/* #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`. + */ +#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'. + */ +#define FT_CONFIG_OPTION_USE_LZW + + + /************************************************************************** + * + * Gzip-compressed file support. + * + * FreeType now handles font files that have been compressed with the + * `gzip` program. This is mostly used to parse many of the PCF files + * that come with XFree86. The implementation uses 'zlib' to partially + * uncompress the file on the fly (see `src/gzip/ftgzip.c`). + * + * Define this macro if you want to enable this 'feature'. See also the + * macro `FT_CONFIG_OPTION_SYSTEM_ZLIB` below. + */ +#define FT_CONFIG_OPTION_USE_ZLIB + + + /************************************************************************** + * + * ZLib library selection + * + * This macro is only used when `FT_CONFIG_OPTION_USE_ZLIB` is defined. + * It allows FreeType's 'ftgzip' component to link to the system's + * installation of the ZLib library. This is useful on systems like + * Unix or VMS where it generally is already available. + * + * If you let it undefined, the component will use its own copy of the + * zlib sources instead. These have been modified to be included + * directly within the component and **not** export external function + * names. This allows you to link any program with FreeType _and_ ZLib + * without linking conflicts. + * + * Do not `#undef` this macro here since the build system might define + * it for certain configurations only. + * + * 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 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 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 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 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. + */ +#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. + */ +#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST + + + /************************************************************************** + * + * Support for Mac fonts + * + * Define this macro if you want support for outline fonts in Mac format + * (mac dfont, mac resource, macbinary containing a mac resource) on + * non-Mac platforms. + * + * Note that the 'FOND' resource isn't checked. + */ +#define FT_CONFIG_OPTION_MAC_FONTS + + + /************************************************************************** + * + * Guessing methods to access embedded resource forks + * + * Enable extra Mac fonts support on non-Mac platforms (e.g., GNU/Linux). + * + * Resource forks which include fonts data are stored sometimes in + * locations which users or developers don't expected. In some cases, + * resource forks start with some offset from the head of a file. In + * other cases, the actual resource fork is stored in file different from + * what the user specifies. If this option is activated, FreeType tries + * to guess whether such offsets or different file names must be used. + * + * Note that normal, direct access of resource forks is controlled via + * the `FT_CONFIG_OPTION_MAC_FONTS` option. + */ +#ifdef FT_CONFIG_OPTION_MAC_FONTS +#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK +#endif + + + /************************************************************************** + * + * Allow the use of `FT_Incremental_Interface` to load typefaces that + * contain no glyph data, but supply it via a callback function. This 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. + */ +#define FT_RENDER_POOL_SIZE 16384L + + + /************************************************************************** + * + * FT_MAX_MODULES + * + * The maximum number of modules that can be registered in a single + * FreeType library object. 32~is the default. + */ +#define FT_MAX_MODULES 32 + + + /************************************************************************** + * + * Debug level + * + * FreeType can be compiled in debug or trace mode. In debug mode, + * errors are reported through the 'ftdebug' component. In trace mode, + * additional messages are sent to the standard output during execution. + * + * Define `FT_DEBUG_LEVEL_ERROR` to build the library in debug mode. + * Define `FT_DEBUG_LEVEL_TRACE` to build it in trace mode. + * + * Don't define any of these macros to compile in 'release' mode! + * + * Do not `#undef` these macros here since the build system might define + * them for certain configurations only. + */ +/* #define FT_DEBUG_LEVEL_ERROR */ +/* #define FT_DEBUG_LEVEL_TRACE */ + + + /************************************************************************** + * + * 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. + */ +/* #define FT_DEBUG_MEMORY */ + + + /************************************************************************** + * + * Module errors + * + * If this macro is set (which is _not_ the default), the higher byte of + * an error code gives the module in which the error has occurred, while + * the lower byte is the real error code. + * + * Setting this macro makes sense for debugging purposes only, since it + * would break source compatibility of certain programs that use + * FreeType~2. + * + * More details can be found in the files `ftmoderr.h` and `fterrors.h`. + */ +#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS + + + /************************************************************************** + * + * 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 */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_EMBEDDED_BITMAPS` if you want to support + * embedded bitmaps in all formats using the 'sfnt' module (namely + * TrueType~& OpenType). + */ +#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS + + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_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 + + + /************************************************************************** + * + * TrueType CMap support + * + * Here you can fine-tune which TrueType CMap table format shall be + * supported. + */ +#define TT_CONFIG_CMAP_FORMAT_0 +#define TT_CONFIG_CMAP_FORMAT_2 +#define TT_CONFIG_CMAP_FORMAT_4 +#define TT_CONFIG_CMAP_FORMAT_6 +#define TT_CONFIG_CMAP_FORMAT_8 +#define TT_CONFIG_CMAP_FORMAT_10 +#define TT_CONFIG_CMAP_FORMAT_12 +#define TT_CONFIG_CMAP_FORMAT_13 +#define TT_CONFIG_CMAP_FORMAT_14 + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************** + * + * Define `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` if you want to compile a + * bytecode interpreter in the TrueType driver. + * + * 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 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 + */ +#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). 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 + + + /************************************************************************** + * + * 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 + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * `T1_MAX_DICT_DEPTH` is the 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. + */ +#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' (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 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. + */ +#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. + */ +/* #define T1_CONFIG_OPTION_OLD_ENGINE */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** C F F D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * 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 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 1000 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 1667 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 2333 +#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. + */ +/* #define CFF_CONFIG_OPTION_OLD_ENGINE */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** P C F D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * 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 */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * 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. + */ +#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. + * + * 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). + */ +/* #define AF_CONFIG_OPTION_TT_SIZE_METRICS */ + + /* */ + + + /* + * This macro is obsolete. Support has been removed in FreeType version + * 2.5. + */ +/* #define FT_CONFIG_OPTION_OLD_INTERNALS */ + + + /* + * 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 + +#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 1 +#define TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY +#endif + +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 2 +#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL +#endif +#endif +#endif + + + /* + * Check CFF darkening parameters. The checks are the same as in function + * `cff_property_set` in file `cffdrivr.c`. + */ +#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 > 500 +#error "Invalid CFF darkening parameters!" +#endif + +FT_END_HEADER + + +#endif /* FTOPTION_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/config/ftstdlib.h b/CMU462/deps/freetype/include/freetype/config/ftstdlib.h new file mode 100644 index 0000000..438b614 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/config/ftstdlib.h @@ -0,0 +1,175 @@ +/**************************************************************************** + * + * 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. + * + */ + + +#ifndef FTSTDLIB_H_ +#define FTSTDLIB_H_ + + +#include <stddef.h> + +#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 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> + +#define FT_CHAR_BIT CHAR_BIT +#define FT_USHORT_MAX USHRT_MAX +#define FT_INT_MAX INT_MAX +#define FT_INT_MIN INT_MIN +#define FT_UINT_MAX UINT_MAX +#define FT_LONG_MIN LONG_MIN +#define FT_LONG_MAX LONG_MAX +#define FT_ULONG_MAX ULONG_MAX + + + /************************************************************************** + * + * character and string processing + * + */ + + +#include <string.h> + +#define ft_memchr memchr +#define ft_memcmp memcmp +#define ft_memcpy memcpy +#define ft_memmove memmove +#define ft_memset memset +#define ft_strcat strcat +#define ft_strcmp strcmp +#define ft_strcpy strcpy +#define ft_strlen strlen +#define ft_strncmp strncmp +#define ft_strncpy strncpy +#define ft_strrchr strrchr +#define ft_strstr strstr + + + /************************************************************************** + * + * file handling + * + */ + + +#include <stdio.h> + +#define FT_FILE FILE +#define ft_fclose fclose +#define ft_fopen fopen +#define ft_fread fread +#define ft_fseek fseek +#define ft_ftell ftell +#define ft_sprintf sprintf + + + /************************************************************************** + * + * sorting + * + */ + + +#include <stdlib.h> + +#define ft_qsort qsort + + + /************************************************************************** + * + * memory allocation + * + */ + + +#define ft_scalloc calloc +#define ft_sfree free +#define ft_smalloc malloc +#define ft_srealloc realloc + + + /************************************************************************** + * + * miscellaneous + * + */ + + +#define ft_strtol strtol +#define ft_getenv getenv + + + /************************************************************************** + * + * 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_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. */ + +#include <stdarg.h> + + +#endif /* FTSTDLIB_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/freetype.h b/CMU462/deps/freetype/include/freetype/freetype.h new file mode 100644 index 0000000..a6bb667 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/freetype.h @@ -0,0 +1,4887 @@ +/**************************************************************************** + * + * 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_ +#define FREETYPE_H_ + + +#ifndef FT_FREETYPE_H +#error "`ft2build.h' hasn't been included yet!" +#error "Please always use macros to include FreeType header files." +#error "Example:" +#error " #include <ft2build.h>" +#error " #include FT_FREETYPE_H" +#endif + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_TYPES_H +#include FT_ERRORS_H + + +FT_BEGIN_HEADER + + + + /************************************************************************** + * + * @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. + * + */ + + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S I C T Y P E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @section: + * base_interface + * + * @title: + * Base Interface + * + * @abstract: + * The FreeType~2 base font interface. + * + * @description: + * This section describes the 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; + FT_Pos height; + + FT_Pos horiBearingX; + FT_Pos horiBearingY; + FT_Pos horiAdvance; + + FT_Pos vertBearingX; + FT_Pos vertBearingY; + FT_Pos vertAdvance; + + } FT_Glyph_Metrics; + + + /************************************************************************** + * + * @struct: + * FT_Bitmap_Size + * + * @description: + * This structure models the 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; + FT_Short width; + + FT_Pos size; + + FT_Pos x_ppem; + FT_Pos y_ppem; + + } FT_Bitmap_Size; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************** + * + * @type: + * FT_Library + * + * @description: + * A handle to a FreeType library instance. Each 'library' is completely + * independent from the others; it is the 'root' of a set of objects like + * fonts, faces, sizes, etc. + * + * It also embeds a memory manager (see @FT_Memory), as well as a + * scan-line converter object (see @FT_Raster). + * + * [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. + */ + 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. + */ + 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. + */ + 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. + */ + 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. + */ + 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. + */ + 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. + */ + 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. + */ + +#ifndef FT_ENC_TAG +#define FT_ENC_TAG( value, a, b, c, d ) \ + value = ( ( (FT_UInt32)(a) << 24 ) | \ + ( (FT_UInt32)(b) << 16 ) | \ + ( (FT_UInt32)(c) << 8 ) | \ + (FT_UInt32)(d) ) + +#endif /* FT_ENC_TAG */ + + + /************************************************************************** + * + * @enum: + * FT_Encoding + * + * @description: + * An enumeration 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#non-standard-symbol-fonts', + * '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 ), + + FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), + FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ), + + FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ), + FT_ENC_TAG( FT_ENCODING_PRC, 'g', 'b', ' ', ' ' ), + FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ), + FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ), + FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ), + + /* for backward compatibility */ + FT_ENCODING_GB2312 = FT_ENCODING_PRC, + FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, + FT_ENCODING_MS_GB2312 = FT_ENCODING_PRC, + FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, + FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, + FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, + + FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ), + + FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ), + + FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) + + } FT_Encoding; + + + /* 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 +#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL +#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1 +#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2 +#define ft_encoding_sjis FT_ENCODING_SJIS +#define ft_encoding_gb2312 FT_ENCODING_PRC +#define ft_encoding_big5 FT_ENCODING_BIG5 +#define ft_encoding_wansung FT_ENCODING_WANSUNG +#define ft_encoding_johab FT_ENCODING_JOHAB + +#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD +#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT +#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM +#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN + + + /************************************************************************** + * + * @struct: + * FT_CharMapRec + * + * @description: + * The base charmap structure. + * + * @fields: + * face :: + * A handle to the parent face object. + * + * encoding :: + * An @FT_Encoding tag identifying the charmap. Use this with + * @FT_Select_Charmap. + * + * platform_id :: + * An ID number describing the platform for the following encoding ID. + * This comes directly from the TrueType specification and 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; + FT_Encoding encoding; + FT_UShort platform_id; + FT_UShort encoding_id; + + } FT_CharMapRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S E O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @type: + * FT_Face_Internal + * + * @description: + * An opaque handle to an `FT_Face_InternalRec` structure 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. + */ + typedef struct FT_FaceRec_ + { + FT_Long num_faces; + FT_Long face_index; + + FT_Long face_flags; + FT_Long style_flags; + + FT_Long num_glyphs; + + FT_String* family_name; + FT_String* style_name; + + FT_Int num_fixed_sizes; + FT_Bitmap_Size* available_sizes; + + FT_Int num_charmaps; + FT_CharMap* charmaps; + + FT_Generic generic; + + /*# The following member variables (down to `underline_thickness`) */ + /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */ + /*# for bitmap fonts. */ + FT_BBox bbox; + + FT_UShort units_per_EM; + FT_Short ascender; + FT_Short descender; + FT_Short height; + + FT_Short max_advance_width; + FT_Short max_advance_height; + + FT_Short underline_position; + FT_Short underline_thickness; + + FT_GlyphSlot glyph; + FT_Size size; + FT_CharMap charmap; + + /*@private begin */ + + FT_Driver driver; + FT_Memory memory; + FT_Stream stream; + + FT_ListRec sizes_list; + + FT_Generic autohint; /* face-specific auto-hinter data */ + void* extensions; /* unused */ + + FT_Face_Internal internal; + + /*@private end */ + + } FT_FaceRec; + + + /************************************************************************** + * + * @enum: + * FT_FACE_FLAG_XXX + * + * @description: + * A list of bit flags used in the `face_flags` field of the @FT_FaceRec + * structure. They inform client applications of properties of the + * corresponding face. + * + * @values: + * FT_FACE_FLAG_SCALABLE :: + * 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 ) +#define FT_FACE_FLAG_SFNT ( 1L << 3 ) +#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 ) +#define FT_FACE_FLAG_VERTICAL ( 1L << 5 ) +#define FT_FACE_FLAG_KERNING ( 1L << 6 ) +#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 ) +#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 ) +#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 ) +#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) +#define FT_FACE_FLAG_HINTER ( 1L << 11 ) +#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 ) +#define FT_FACE_FLAG_TRICKY ( 1L << 13 ) +#define FT_FACE_FLAG_COLOR ( 1L << 14 ) +#define FT_FACE_FLAG_VARIATION ( 1L << 15 ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_HORIZONTAL + * + * @description: + * A macro that returns true whenever a face object contains horizontal + * metrics (this is true for all font formats though). + * + * @also: + * @FT_HAS_VERTICAL can be used to check for vertical metrics. + * + */ +#define FT_HAS_HORIZONTAL( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_HORIZONTAL ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_VERTICAL + * + * @description: + * A macro that returns true whenever a face object contains real + * vertical metrics (and not only synthesized ones). + * + */ +#define FT_HAS_VERTICAL( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_VERTICAL ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_KERNING + * + * @description: + * A macro that returns true whenever a face object contains kerning data + * that can be accessed with @FT_Get_Kerning. + * + */ +#define FT_HAS_KERNING( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_KERNING ) + + + /************************************************************************** + * + * @macro: + * FT_IS_SCALABLE + * + * @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). + * + */ +#define FT_IS_SCALABLE( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_SCALABLE ) + + + /************************************************************************** + * + * @macro: + * 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. + * + * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and + * @FT_TRUETYPE_TABLES_H are available. + * + */ +#define FT_IS_SFNT( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_SFNT ) + + + /************************************************************************** + * + * @macro: + * FT_IS_FIXED_WIDTH + * + * @description: + * A macro that returns true whenever a face object contains a font face + * that contains fixed-width (or 'monospace', 'fixed-pitch', etc.) + * glyphs. + * + */ +#define FT_IS_FIXED_WIDTH( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_FIXED_SIZES + * + * @description: + * A macro that returns true whenever a face object contains some + * embedded bitmaps. See the `available_sizes` field of the @FT_FaceRec + * structure. + * + */ +#define FT_HAS_FIXED_SIZES( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_FIXED_SIZES ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_FAST_GLYPHS + * + * @description: + * Deprecated. + * + */ +#define FT_HAS_FAST_GLYPHS( face ) 0 + + + /************************************************************************** + * + * @macro: + * FT_HAS_GLYPH_NAMES + * + * @description: + * A macro that returns true whenever a face object contains some glyph + * names that can be accessed through @FT_Get_Glyph_Name. + * + */ +#define FT_HAS_GLYPH_NAMES( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_MULTIPLE_MASTERS + * + * @description: + * A macro that returns true whenever a face object contains some + * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H + * are then available to choose the exact design you want. + * + */ +#define FT_HAS_MULTIPLE_MASTERS( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) + + + /************************************************************************** + * + * @macro: + * FT_IS_NAMED_INSTANCE + * + * @description: + * A macro that returns true whenever a face object is a named instance + * of a GX or OpenType variation font. + * + * [Since 2.9] Changing the design coordinates with + * @FT_Set_Var_Design_Coordinates or @FT_Set_Var_Blend_Coordinates does + * not influence the return value of this macro (only + * @FT_Set_Named_Instance does that). + * + * @since: + * 2.7 + * + */ +#define FT_IS_NAMED_INSTANCE( face ) \ + ( (face)->face_index & 0x7FFF0000L ) + + + /************************************************************************** + * + * @macro: + * 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 + * @FT_Set_Var_Blend_Coordinates. + * + * @since: + * 2.9 + * + */ +#define FT_IS_VARIATION( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_VARIATION ) + + + /************************************************************************** + * + * @macro: + * 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. + * + * If this macro is true, all functions defined in @FT_CID_H are + * available. + * + */ +#define FT_IS_CID_KEYED( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_CID_KEYED ) + + + /************************************************************************** + * + * @macro: + * FT_IS_TRICKY + * + * @description: + * A macro that returns true whenever a face represents a 'tricky' font. + * See the discussion of @FT_FACE_FLAG_TRICKY for more details. + * + */ +#define FT_IS_TRICKY( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_TRICKY ) + + + /************************************************************************** + * + * @macro: + * FT_HAS_COLOR + * + * @description: + * A macro that returns true whenever a face object contains tables for + * color glyphs. + * + * @since: + * 2.5.1 + * + */ +#define FT_HAS_COLOR( face ) \ + ( (face)->face_flags & FT_FACE_FLAG_COLOR ) + + + /************************************************************************** + * + * @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. + */ + 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; + * ``` + */ + typedef struct FT_Size_Metrics_ + { + FT_UShort x_ppem; /* horizontal pixels per EM */ + FT_UShort y_ppem; /* vertical pixels per EM */ + + FT_Fixed x_scale; /* scaling values used to convert font */ + FT_Fixed y_scale; /* units to 26.6 fractional pixels */ + + FT_Pos ascender; /* ascender in 26.6 frac. pixels */ + FT_Pos descender; /* descender in 26.6 frac. pixels */ + FT_Pos height; /* text height in 26.6 frac. pixels */ + FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ + + } FT_Size_Metrics; + + + /************************************************************************** + * + * @struct: + * FT_SizeRec + * + * @description: + * FreeType root size class structure. A size object models 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 */ + FT_Generic generic; /* generic pointer for client uses */ + FT_Size_Metrics metrics; /* size metrics */ + FT_Size_Internal internal; + + } FT_SizeRec; + + + /************************************************************************** + * + * @struct: + * FT_SubGlyph + * + * @description: + * The subglyph structure is an internal object used to describe + * subglyphs (for example, in the case of composites). + * + * @note: + * The subglyph implementation is not part of the high-level API, hence + * the forward structure declaration. + * + * 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. + */ + 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. + * + * 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. + * + * [Since 2.10.1] If @FT_LOAD_NO_SCALE is set, outline coordinates of + * OpenType variation fonts for a selected instance are internally + * handled as 26.6 fractional font units but returned as (rounded) + * integers, as expected. To get unrounded font units, don't use + * @FT_LOAD_NO_SCALE but load the glyph with @FT_LOAD_NO_HINTING and + * scale it, using the font's `units_per_EM` value as the ppem. + * + * 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 glyph_index; /* new in 2.10; was reserved previously */ + FT_Generic generic; + + FT_Glyph_Metrics metrics; + FT_Fixed linearHoriAdvance; + FT_Fixed linearVertAdvance; + FT_Vector advance; + + FT_Glyph_Format format; + + FT_Bitmap bitmap; + FT_Int bitmap_left; + FT_Int bitmap_top; + + FT_Outline outline; + + FT_UInt num_subglyphs; + FT_SubGlyph subglyphs; + + void* control_data; + long control_len; + + FT_Pos lsb_delta; + FT_Pos rsb_delta; + + void* other; + + FT_Slot_Internal internal; + + } FT_GlyphSlotRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* F U N C T I O N S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @function: + * FT_Init_FreeType + * + * @description: + * 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. + */ + 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. + */ +#define FT_OPEN_MEMORY 0x1 +#define FT_OPEN_STREAM 0x2 +#define FT_OPEN_PATHNAME 0x4 +#define FT_OPEN_DRIVER 0x8 +#define FT_OPEN_PARAMS 0x10 + + + /* 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 +#define ft_open_pathname FT_OPEN_PATHNAME +#define ft_open_driver FT_OPEN_DRIVER +#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. + */ + typedef struct FT_Parameter_ + { + FT_ULong tag; + FT_Pointer data; + + } 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. + */ + typedef struct FT_Open_Args_ + { + FT_UInt flags; + const FT_Byte* memory_base; + FT_Long memory_size; + FT_String* pathname; + FT_Stream stream; + FT_Module driver; + FT_Int num_params; + FT_Parameter* params; + + } FT_Open_Args; + + + /************************************************************************** + * + * @function: + * FT_New_Face + * + * @description: + * 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, + FT_Long face_index, + 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. + */ + FT_EXPORT( FT_Error ) + FT_New_Memory_Face( FT_Library library, + const FT_Byte* file_base, + FT_Long file_size, + FT_Long face_index, + FT_Face *aface ); + + + /************************************************************************** + * + * @function: + * FT_Open_Face + * + * @description: + * 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, + FT_Long face_index, + 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. + */ + 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. + */ + 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 + */ + 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. + */ + 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. + */ + FT_EXPORT( FT_Error ) + FT_Select_Size( FT_Face face, + FT_Int strike_index ); + + + /************************************************************************** + * + * @enum: + * FT_Size_Request_Type + * + * @description: + * An enumeration type that lists the supported size request types, i.e., + * what input size (in font units) maps to the requested output size (in + * pixels, as computed from the arguments of @FT_Size_Request). + * + * @values: + * FT_SIZE_REQUEST_TYPE_NOMINAL :: + * The nominal size. The `units_per_EM` field of @FT_FaceRec is used + * to determine both scaling values. + * + * This is the standard scaling found in most applications. In + * particular, use this size request type for TrueType fonts if they + * provide optical scaling or something similar. Note, however, that + * `units_per_EM` is a rather abstract value which bears no relation to + * the actual size of the glyphs in a font. + * + * FT_SIZE_REQUEST_TYPE_REAL_DIM :: + * The real dimension. The sum of the `ascender` and (minus of) the + * `descender` fields of @FT_FaceRec is used to determine both scaling + * values. + * + * FT_SIZE_REQUEST_TYPE_BBOX :: + * The font bounding box. The width and height of the `bbox` field of + * @FT_FaceRec are used to determine the horizontal and vertical + * scaling value, respectively. + * + * FT_SIZE_REQUEST_TYPE_CELL :: + * The `max_advance_width` field of @FT_FaceRec is used to determine + * the horizontal scaling value; the vertical scaling value is + * determined the same way as @FT_SIZE_REQUEST_TYPE_REAL_DIM does. + * Finally, both scaling values are set to the smaller one. This type + * is useful if you want to specify the font size for, say, a window of + * a given dimension and 80x24 cells. + * + * FT_SIZE_REQUEST_TYPE_SCALES :: + * Specify the scaling values directly. + * + * @note: + * The above descriptions only apply to scalable formats. For bitmap + * formats, the behaviour is up to the driver. + * + * See the note section of @FT_Size_Metrics if you wonder how size + * requesting relates to scaling values. + */ + typedef enum FT_Size_Request_Type_ + { + FT_SIZE_REQUEST_TYPE_NOMINAL, + FT_SIZE_REQUEST_TYPE_REAL_DIM, + FT_SIZE_REQUEST_TYPE_BBOX, + FT_SIZE_REQUEST_TYPE_CELL, + FT_SIZE_REQUEST_TYPE_SCALES, + + FT_SIZE_REQUEST_TYPE_MAX + + } FT_Size_Request_Type; + + + /************************************************************************** + * + * @struct: + * FT_Size_RequestRec + * + * @description: + * A structure to model a size request. + * + * @fields: + * type :: + * See @FT_Size_Request_Type. + * + * width :: + * The desired width, given as a 26.6 fractional point value (with 72pt + * = 1in). + * + * height :: + * The desired height, given as a 26.6 fractional point value (with + * 72pt = 1in). + * + * horiResolution :: + * The horizontal resolution (dpi, i.e., pixels per inch). If set to + * zero, `width` is treated as a 26.6 fractional **pixel** value, which + * gets internally rounded to an integer. + * + * vertResolution :: + * The vertical resolution (dpi, i.e., pixels per inch). If set to + * zero, `height` is treated as a 26.6 fractional **pixel** value, + * which gets internally rounded to an integer. + * + * @note: + * If `width` is zero, the horizontal scaling value is set equal to the + * vertical scaling value, and vice versa. + * + * If `type` is `FT_SIZE_REQUEST_TYPE_SCALES`, `width` and `height` are + * interpreted directly as 16.16 fractional scaling values, without any + * further modification, and both `horiResolution` and `vertResolution` + * are ignored. + */ + typedef struct FT_Size_RequestRec_ + { + FT_Size_Request_Type type; + FT_Long width; + FT_Long height; + FT_UInt horiResolution; + FT_UInt vertResolution; + + } FT_Size_RequestRec; + + + /************************************************************************** + * + * @struct: + * FT_Size_Request + * + * @description: + * A handle to a size request structure. + */ + typedef struct FT_Size_RequestRec_ *FT_Size_Request; + + + /************************************************************************** + * + * @function: + * FT_Request_Size + * + * @description: + * Resize the scale of the active @FT_Size object in a face. + * + * @inout: + * face :: + * A handle to a target face object. + * + * @input: + * req :: + * A pointer to a @FT_Size_RequestRec. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Although drivers may select the bitmap strike matching the request, + * you should not rely on this if you intend to select a particular + * bitmap strike. Use @FT_Select_Size instead in that case. + * + * The relation between the requested size and the resulting glyph size + * is dependent entirely on how the size is defined in the source face. + * The font designer chooses the final size of each glyph relative to + * this size. For more information refer to + * 'https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'. + * + * Contrary to @FT_Set_Char_Size, this function doesn't have special code + * to normalize zero-valued widths, heights, or resolutions (which lead + * to errors in most cases). + * + * Don't use this function if you are using the FreeType cache API. + */ + FT_EXPORT( FT_Error ) + FT_Request_Size( FT_Face face, + FT_Size_Request req ); + + + /************************************************************************** + * + * @function: + * FT_Set_Char_Size + * + * @description: + * Call @FT_Request_Size to request the nominal size (in points). + * + * @inout: + * face :: + * A handle to a target face object. + * + * @input: + * char_width :: + * The nominal width, in 26.6 fractional points. + * + * char_height :: + * The nominal height, in 26.6 fractional points. + * + * horz_resolution :: + * The horizontal resolution in dpi. + * + * vert_resolution :: + * The vertical resolution in dpi. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * While this function allows fractional points as input values, the + * resulting ppem value for the given resolution is always rounded to the + * nearest integer. + * + * If either the character width or height is zero, it is set equal to + * the other value. + * + * If either the horizontal or vertical resolution is zero, it is set + * equal to the other value. + * + * A character width or height smaller than 1pt is set to 1pt; if both + * resolution values are zero, they are set to 72dpi. + * + * Don't use this function if you are using the FreeType cache API. + */ + FT_EXPORT( FT_Error ) + FT_Set_Char_Size( FT_Face face, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ); + + + /************************************************************************** + * + * @function: + * FT_Set_Pixel_Sizes + * + * @description: + * Call @FT_Request_Size to request the nominal size (in pixels). + * + * @inout: + * face :: + * A handle to the target face object. + * + * @input: + * pixel_width :: + * The nominal width, in pixels. + * + * pixel_height :: + * The nominal height, in pixels. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should not rely on the resulting glyphs matching or being + * constrained to this pixel size. Refer to @FT_Request_Size to + * understand how requested sizes relate to actual sizes. + * + * Don't use this function if you are using the FreeType cache API. + */ + FT_EXPORT( FT_Error ) + FT_Set_Pixel_Sizes( FT_Face face, + FT_UInt pixel_width, + FT_UInt pixel_height ); + + + /************************************************************************** + * + * @function: + * FT_Load_Glyph + * + * @description: + * Load a glyph into the glyph slot of a face object. + * + * @inout: + * face :: + * A handle to the target face object where the glyph is loaded. + * + * @input: + * glyph_index :: + * The index of the glyph in the font file. For CID-keyed fonts + * (either in PS or in CFF format) this argument specifies the CID + * value. + * + * load_flags :: + * A flag indicating what to load for this glyph. The @FT_LOAD_XXX + * constants can be used to control the glyph loading process (e.g., + * whether the outline should be scaled, whether to load bitmaps or + * not, whether to hint the outline, etc). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The loaded glyph may be transformed. See @FT_Set_Transform for the + * details. + * + * For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument` is returned + * for invalid CID values (this is, for CID values that don't have a + * corresponding glyph in the font). See the discussion of the + * @FT_FACE_FLAG_CID_KEYED flag for more details. + * + * If you receive `FT_Err_Glyph_Too_Big`, try getting the glyph outline + * at EM size, then scale it manually and fill it as a graphics + * operation. + */ + FT_EXPORT( FT_Error ) + FT_Load_Glyph( FT_Face face, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + /************************************************************************** + * + * @function: + * FT_Load_Char + * + * @description: + * Load a glyph into the glyph slot of a face object, accessed by its + * character code. + * + * @inout: + * face :: + * A handle to a target face object where the glyph is loaded. + * + * @input: + * char_code :: + * The glyph's character code, according to the current charmap used in + * the face. + * + * load_flags :: + * A flag indicating what to load for this glyph. The @FT_LOAD_XXX + * constants can be used to control the glyph loading process (e.g., + * whether the outline should be scaled, whether to load bitmaps or + * not, whether to hint the outline, etc). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. + * + * Many fonts contain glyphs that can't be loaded by this function since + * its glyph indices are not listed in any of the font's charmaps. + * + * If no active cmap is set up (i.e., `face->charmap` is zero), the call + * to @FT_Get_Char_Index is omitted, and the function behaves identically + * to @FT_Load_Glyph. + */ + FT_EXPORT( FT_Error ) + FT_Load_Char( FT_Face face, + FT_ULong char_code, + FT_Int32 load_flags ); + + + /************************************************************************** + * + * @enum: + * FT_LOAD_XXX + * + * @description: + * A list of bit field constants for @FT_Load_Glyph to indicate what kind + * of operations to perform during glyph loading. + * + * @values: + * FT_LOAD_DEFAULT :: + * Corresponding to~0, this value is used as the default glyph load + * operation. In this case, the following happens: + * + * 1. FreeType looks for a bitmap for the glyph corresponding to the + * face's current size. If one is found, the function returns. The + * bitmap data can be accessed from the glyph slot (see note below). + * + * 2. If no embedded bitmap is searched for or found, FreeType looks + * for a scalable outline. If one is found, it is loaded from the font + * file, scaled to device pixels, then 'hinted' to the pixel grid in + * order to optimize it. The outline data can be accessed from the + * glyph slot (see note below). + * + * Note that by default the glyph loader doesn't render outlines into + * bitmaps. The following flags are used to modify this default + * behaviour to more specific and useful cases. + * + * FT_LOAD_NO_SCALE :: + * Don't scale the loaded outline glyph but keep it in font units. + * + * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and + * unsets @FT_LOAD_RENDER. + * + * If the font is 'tricky' (see @FT_FACE_FLAG_TRICKY for more), using + * `FT_LOAD_NO_SCALE` usually yields meaningless outlines because the + * subglyphs must be scaled and positioned with hinting instructions. + * This can be solved by loading the font without `FT_LOAD_NO_SCALE` + * and setting the character size to `font->units_per_EM`. + * + * FT_LOAD_NO_HINTING :: + * Disable hinting. This generally generates 'blurrier' bitmap glyphs + * when the glyph are rendered in any of the anti-aliased modes. See + * also the note below. + * + * This flag is implied by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_RENDER :: + * Call @FT_Render_Glyph after the glyph is loaded. By default, the + * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be + * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. + * + * This flag is unset by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_NO_BITMAP :: + * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this + * flag. + * + * @FT_LOAD_NO_SCALE always sets this flag. + * + * FT_LOAD_VERTICAL_LAYOUT :: + * Load the glyph for vertical text layout. In particular, the + * `advance` value in the @FT_GlyphSlotRec structure is set to the + * `vertAdvance` value of the `metrics` field. + * + * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use this + * flag currently. Reason is that in this case vertical metrics get + * synthesized, and those values are not always consistent across + * various font formats. + * + * FT_LOAD_FORCE_AUTOHINT :: + * Prefer the auto-hinter over the font's native hinter. See also the + * note below. + * + * FT_LOAD_PEDANTIC :: + * Make the font driver perform pedantic verifications during glyph + * loading and hinting. This is mostly used to detect broken glyphs in + * fonts. By default, FreeType tries to handle broken fonts also. + * + * In particular, errors from the TrueType bytecode engine are not + * passed to the application if this flag is not set; this might result + * in partially hinted or distorted glyphs in case a glyph's bytecode + * is buggy. + * + * FT_LOAD_NO_RECURSE :: + * Don't load composite glyphs recursively. Instead, the font driver + * fills the `num_subglyph` and `subglyphs` values of the glyph slot; + * it also sets `glyph->format` to @FT_GLYPH_FORMAT_COMPOSITE. The + * description of subglyphs can then be accessed with + * @FT_Get_SubGlyph_Info. + * + * Don't use this flag for retrieving metrics information since some + * font drivers only return rudimentary data. + * + * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. + * + * FT_LOAD_IGNORE_TRANSFORM :: + * Ignore the transform matrix set by @FT_Set_Transform. + * + * FT_LOAD_MONOCHROME :: + * This flag is used with @FT_LOAD_RENDER to indicate that you want to + * render an outline glyph to a 1-bit monochrome bitmap glyph, with + * 8~pixels packed into each byte of the bitmap data. + * + * Note that this has no effect on the hinting algorithm used. You + * should rather use @FT_LOAD_TARGET_MONO so that the + * monochrome-optimized hinting algorithm is used. + * + * FT_LOAD_LINEAR_DESIGN :: + * Keep `linearHoriAdvance` and `linearVertAdvance` fields of + * @FT_GlyphSlotRec in font units. See @FT_GlyphSlotRec for details. + * + * FT_LOAD_NO_AUTOHINT :: + * Disable the auto-hinter. See also the note below. + * + * FT_LOAD_COLOR :: + * Load colored glyphs. There are slight differences depending on the + * font format. + * + * [Since 2.5] Load embedded color bitmap images. The resulting color + * bitmaps, if available, will have the @FT_PIXEL_MODE_BGRA format, + * with pre-multiplied color channels. If the flag is not set and + * color bitmaps are found, they are converted to 256-level gray + * bitmaps, using the @FT_PIXEL_MODE_GRAY format. + * + * [Since 2.10, experimental] If the glyph index contains an entry in + * the face's 'COLR' table with a 'CPAL' palette table (as defined in + * the OpenType specification), make @FT_Render_Glyph provide a default + * blending of the color glyph layers associated with the glyph index, + * using the same bitmap format as embedded color bitmap images. This + * is mainly for convenience; for full control of color layers use + * @FT_Get_Color_Glyph_Layer and FreeType's color functions like + * @FT_Palette_Select instead of setting @FT_LOAD_COLOR for rendering + * so that the client application can handle blending by itself. + * + * FT_LOAD_COMPUTE_METRICS :: + * [Since 2.6.1] Compute glyph metrics from the glyph data, without the + * use of bundled metrics tables (for example, the 'hdmx' table in + * TrueType fonts). This flag is mainly used by font validating or + * font editing applications, which need to ignore, verify, or edit + * those tables. + * + * Currently, this flag is only implemented for TrueType fonts. + * + * FT_LOAD_BITMAP_METRICS_ONLY :: + * [Since 2.7.1] Request loading of the metrics and bitmap image + * information of a (possibly embedded) bitmap glyph without allocating + * or copying the bitmap image data itself. No effect if the target + * glyph is not a bitmap image. + * + * This flag unsets @FT_LOAD_RENDER. + * + * FT_LOAD_CROP_BITMAP :: + * Ignored. Deprecated. + * + * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: + * Ignored. Deprecated. + * + * @note: + * By default, hinting is enabled and the font's native hinter (see + * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can + * disable hinting by setting @FT_LOAD_NO_HINTING or change the + * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set + * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be used + * at all. + * + * See the description of @FT_FACE_FLAG_TRICKY for a special exception + * (affecting only a handful of Asian fonts). + * + * Besides deciding which hinter to use, you can also decide which + * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. + * + * Note that the auto-hinter needs a valid Unicode cmap (either a native + * one or synthesized by FreeType) for producing correct results. If a + * font provides an incorrect mapping (for example, assigning the + * character code U+005A, LATIN CAPITAL LETTER~Z, to a glyph depicting a + * mathematical integral sign), the auto-hinter might produce useless + * results. + * + */ +#define FT_LOAD_DEFAULT 0x0 +#define FT_LOAD_NO_SCALE ( 1L << 0 ) +#define FT_LOAD_NO_HINTING ( 1L << 1 ) +#define FT_LOAD_RENDER ( 1L << 2 ) +#define FT_LOAD_NO_BITMAP ( 1L << 3 ) +#define FT_LOAD_VERTICAL_LAYOUT ( 1L << 4 ) +#define FT_LOAD_FORCE_AUTOHINT ( 1L << 5 ) +#define FT_LOAD_CROP_BITMAP ( 1L << 6 ) +#define FT_LOAD_PEDANTIC ( 1L << 7 ) +#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ( 1L << 9 ) +#define FT_LOAD_NO_RECURSE ( 1L << 10 ) +#define FT_LOAD_IGNORE_TRANSFORM ( 1L << 11 ) +#define FT_LOAD_MONOCHROME ( 1L << 12 ) +#define FT_LOAD_LINEAR_DESIGN ( 1L << 13 ) +#define FT_LOAD_NO_AUTOHINT ( 1L << 15 ) + /* Bits 16-19 are used by `FT_LOAD_TARGET_` */ +#define FT_LOAD_COLOR ( 1L << 20 ) +#define FT_LOAD_COMPUTE_METRICS ( 1L << 21 ) +#define FT_LOAD_BITMAP_METRICS_ONLY ( 1L << 22 ) + + /* */ + + /* used internally only by certain font drivers */ +#define FT_LOAD_ADVANCE_ONLY ( 1L << 8 ) +#define FT_LOAD_SBITS_ONLY ( 1L << 14 ) + + + /************************************************************************** + * + * @enum: + * FT_LOAD_TARGET_XXX + * + * @description: + * A list of values to select a specific hinting algorithm for the + * hinter. You should OR one of these values to your `load_flags` when + * calling @FT_Load_Glyph. + * + * Note that a font's native hinters may ignore the hinting algorithm you + * have specified (e.g., the TrueType bytecode interpreter). You can set + * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. + * + * @values: + * FT_LOAD_TARGET_NORMAL :: + * The default hinting algorithm, optimized for standard gray-level + * rendering. For monochrome output, use @FT_LOAD_TARGET_MONO instead. + * + * FT_LOAD_TARGET_LIGHT :: + * A lighter hinting algorithm for gray-level modes. Many generated + * glyphs are fuzzier but better resemble their original shape. This + * is achieved by snapping glyphs to the pixel grid only vertically + * (Y-axis), as is done by FreeType's new CFF engine or Microsoft's + * ClearType font renderer. This preserves inter-glyph spacing in + * horizontal text. The snapping is done either by the native font + * driver, if the driver itself and the font support it, or by the + * auto-hinter. + * + * Advance widths are rounded to integer values; however, using the + * `lsb_delta` and `rsb_delta` fields of @FT_GlyphSlotRec, it is + * possible to get fractional advance widths for subpixel positioning + * (which is recommended to use). + * + * If configuration option `AF_CONFIG_OPTION_TT_SIZE_METRICS` is + * active, TrueType-like metrics are used to make this mode behave + * similarly as in unpatched FreeType versions between 2.4.6 and 2.7.1 + * (inclusive). + * + * FT_LOAD_TARGET_MONO :: + * Strong hinting algorithm that should only be used for monochrome + * output. The result is probably unpleasant if the glyph is rendered + * in non-monochrome modes. + * + * Note that for outline fonts only the TrueType font driver has proper + * monochrome hinting support, provided the TTFs contain hints for B/W + * rendering (which most fonts no longer provide). If these conditions + * are not met it is very likely that you get ugly results at smaller + * sizes. + * + * FT_LOAD_TARGET_LCD :: + * A variant of @FT_LOAD_TARGET_LIGHT optimized for horizontally + * decimated LCD displays. + * + * FT_LOAD_TARGET_LCD_V :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically + * decimated LCD displays. + * + * @note: + * You should use only _one_ of the `FT_LOAD_TARGET_XXX` values in your + * `load_flags`. They can't be ORed. + * + * If @FT_LOAD_RENDER is also set, the glyph is rendered in the + * corresponding mode (i.e., the mode that matches the used algorithm + * best). An exception is `FT_LOAD_TARGET_MONO` since it implies + * @FT_LOAD_MONOCHROME. + * + * You can use a hinting algorithm that doesn't correspond to the same + * rendering mode. As an example, it is possible to use the 'light' + * hinting algorithm and have the results rendered in horizontal LCD + * pixel mode, with code like + * + * ``` + * FT_Load_Glyph( face, glyph_index, + * load_flags | FT_LOAD_TARGET_LIGHT ); + * + * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); + * ``` + * + * In general, you should stick with one rendering mode. For example, + * switching between @FT_LOAD_TARGET_NORMAL and @FT_LOAD_TARGET_MONO + * enforces a lot of recomputation for TrueType fonts, which is slow. + * Another reason is caching: Selecting a different mode usually causes + * changes in both the outlines and the rasterized bitmaps; it is thus + * necessary to empty the cache after a mode switch to avoid false hits. + * + */ +#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) + +#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) +#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) +#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) +#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) +#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) + + + /************************************************************************** + * + * @macro: + * FT_LOAD_TARGET_MODE + * + * @description: + * Return the @FT_Render_Mode corresponding to a given + * @FT_LOAD_TARGET_XXX value. + * + */ +#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) + + + /************************************************************************** + * + * @function: + * FT_Set_Transform + * + * @description: + * Set the transformation that is applied to glyph images when they are + * loaded into a glyph slot through @FT_Load_Glyph. + * + * @inout: + * face :: + * A handle to the source face object. + * + * @input: + * matrix :: + * A pointer to the transformation's 2x2 matrix. Use `NULL` for the + * identity matrix. + * delta :: + * A pointer to the translation vector. Use `NULL` for the null vector. + * + * @note: + * The transformation is only applied to scalable image formats after the + * glyph has been loaded. It means that hinting is unaltered by the + * transformation and is performed on the character size given in the + * last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. + * + * Note that this also transforms the `face.glyph.advance` field, but + * **not** the values in `face.glyph.metrics`. + */ + FT_EXPORT( void ) + FT_Set_Transform( FT_Face face, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /************************************************************************** + * + * @enum: + * FT_Render_Mode + * + * @description: + * Render modes supported by FreeType~2. Each mode corresponds to a + * specific type of scanline conversion performed on the outline. + * + * For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode` field + * in the @FT_GlyphSlotRec structure gives the format of the returned + * bitmap. + * + * All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity, + * indicating pixel coverage. Use linear alpha blending and gamma + * correction to correctly render non-monochrome glyph bitmaps onto a + * surface; see @FT_Render_Glyph. + * + * @values: + * FT_RENDER_MODE_NORMAL :: + * Default render mode; it corresponds to 8-bit anti-aliased bitmaps. + * + * FT_RENDER_MODE_LIGHT :: + * This is equivalent to @FT_RENDER_MODE_NORMAL. It is only defined as + * a separate value because render modes are also used indirectly to + * define hinting algorithm selectors. See @FT_LOAD_TARGET_XXX for + * details. + * + * FT_RENDER_MODE_MONO :: + * This mode corresponds to 1-bit bitmaps (with 2~levels of opacity). + * + * FT_RENDER_MODE_LCD :: + * This mode corresponds to horizontal RGB and BGR subpixel displays + * like LCD screens. It produces 8-bit bitmaps that are 3~times the + * width of the original glyph outline in pixels, and which use the + * @FT_PIXEL_MODE_LCD mode. + * + * FT_RENDER_MODE_LCD_V :: + * This mode corresponds to vertical RGB and BGR subpixel displays + * (like PDA screens, rotated LCD displays, etc.). It produces 8-bit + * bitmaps that are 3~times the height of the original glyph outline in + * pixels and use the @FT_PIXEL_MODE_LCD_V mode. + * + * @note: + * Should you define `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` in your + * `ftoption.h`, which enables patented ClearType-style rendering, the + * LCD-optimized glyph bitmaps should be filtered to reduce color fringes + * inherent to this technology. You can either set up LCD filtering with + * @FT_Library_SetLcdFilter or @FT_Face_Properties, or do the filtering + * yourself. The default FreeType LCD rendering technology does not + * require filtering. + * + * The selected render mode only affects vector glyphs of a font. + * Embedded bitmaps often have a different pixel mode like + * @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform them + * into 8-bit pixmaps. + */ + typedef enum FT_Render_Mode_ + { + FT_RENDER_MODE_NORMAL = 0, + FT_RENDER_MODE_LIGHT, + FT_RENDER_MODE_MONO, + FT_RENDER_MODE_LCD, + FT_RENDER_MODE_LCD_V, + + FT_RENDER_MODE_MAX + + } FT_Render_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Render_Mode` values instead */ +#define ft_render_mode_normal FT_RENDER_MODE_NORMAL +#define ft_render_mode_mono FT_RENDER_MODE_MONO + + + /************************************************************************** + * + * @function: + * FT_Render_Glyph + * + * @description: + * Convert a given glyph image to a bitmap. It does so by inspecting the + * glyph image format, finding the relevant renderer, and invoking it. + * + * @inout: + * slot :: + * A handle to the glyph slot containing the image to convert. + * + * @input: + * render_mode :: + * The render mode used to render the glyph image into a bitmap. See + * @FT_Render_Mode for a list of possible values. + * + * If @FT_RENDER_MODE_NORMAL is used, a previous call of @FT_Load_Glyph + * with flag @FT_LOAD_COLOR makes FT_Render_Glyph provide a default + * blending of colored glyph layers associated with the current glyph + * slot (provided the font contains such layers) instead of rendering + * the glyph slot's outline. This is an experimental feature; see + * @FT_LOAD_COLOR for more information. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * To get meaningful results, font scaling values must be set with + * functions like @FT_Set_Char_Size before calling `FT_Render_Glyph`. + * + * When FreeType outputs a bitmap of a glyph, it really outputs an alpha + * coverage map. If a pixel is completely covered by a filled-in + * outline, the bitmap contains 0xFF at that pixel, meaning that + * 0xFF/0xFF fraction of that pixel is covered, meaning the pixel is 100% + * black (or 0% bright). If a pixel is only 50% covered (value 0x80), + * the pixel is made 50% black (50% bright or a middle shade of grey). + * 0% covered means 0% black (100% bright or white). + * + * On high-DPI screens like on smartphones and tablets, the pixels are so + * small that their chance of being completely covered and therefore + * completely black are fairly good. On the low-DPI screens, however, + * the situation is different. The pixels are too large for most of the + * details of a glyph and shades of gray are the norm rather than the + * exception. + * + * This is relevant because all our screens have a second problem: they + * are not linear. 1~+~1 is not~2. Twice the value does not result in + * twice the brightness. When a pixel is only 50% covered, the coverage + * map says 50% black, and this translates to a pixel value of 128 when + * you use 8~bits per channel (0-255). However, this does not translate + * to 50% brightness for that pixel on our sRGB and gamma~2.2 screens. + * Due to their non-linearity, they dwell longer in the darks and only a + * pixel value of about 186 results in 50% brightness -- 128 ends up too + * dark on both bright and dark backgrounds. The net result is that dark + * text looks burnt-out, pixely and blotchy on bright background, bright + * text too frail on dark backgrounds, and colored text on colored + * background (for example, red on green) seems to have dark halos or + * 'dirt' around it. The situation is especially ugly for diagonal stems + * like in 'w' glyph shapes where the quality of FreeType's anti-aliasing + * depends on the correct display of grays. On high-DPI screens where + * smaller, fully black pixels reign supreme, this doesn't matter, but on + * our low-DPI screens with all the gray shades, it does. 0% and 100% + * brightness are the same things in linear and non-linear space, just + * all the shades in-between aren't. + * + * The blending function for placing text over a background is + * + * ``` + * dst = alpha * src + (1 - alpha) * dst , + * ``` + * + * which is known as the OVER operator. + * + * To correctly composite an antialiased pixel of a glyph onto a surface, + * + * 1. take the foreground and background colors (e.g., in sRGB space) + * and apply gamma to get them in a linear space, + * + * 2. use OVER to blend the two linear colors using the glyph pixel + * as the alpha value (remember, the glyph bitmap is an alpha coverage + * bitmap), and + * + * 3. apply inverse gamma to the blended pixel and write it back to + * the image. + * + * Internal testing at Adobe found that a target inverse gamma of~1.8 for + * step~3 gives good results across a wide range of displays with an sRGB + * gamma curve or a similar one. + * + * This process can cost performance. There is an approximation that + * does not need to know about the background color; see + * https://bel.fi/alankila/lcd/ and + * https://bel.fi/alankila/lcd/alpcor.html for details. + * + * **ATTENTION**: Linear blending is even more important when dealing + * with subpixel-rendered glyphs to prevent color-fringing! A + * subpixel-rendered glyph must first be filtered with a filter that + * gives equal weight to the three color primaries and does not exceed a + * sum of 0x100, see section @lcd_rendering. Then the only difference to + * gray linear blending is that subpixel-rendered linear blending is done + * 3~times per pixel: red foreground subpixel to red background subpixel + * and so on for green and blue. + */ + FT_EXPORT( FT_Error ) + FT_Render_Glyph( FT_GlyphSlot slot, + FT_Render_Mode render_mode ); + + + /************************************************************************** + * + * @enum: + * FT_Kerning_Mode + * + * @description: + * An enumeration to specify the format of kerning values returned by + * @FT_Get_Kerning. + * + * @values: + * FT_KERNING_DEFAULT :: + * Return grid-fitted kerning distances in 26.6 fractional pixels. + * + * FT_KERNING_UNFITTED :: + * Return un-grid-fitted kerning distances in 26.6 fractional pixels. + * + * FT_KERNING_UNSCALED :: + * Return the kerning vector in original font units. + * + * @note: + * `FT_KERNING_DEFAULT` returns full pixel values; it also makes FreeType + * heuristically scale down kerning distances at small ppem values so + * that they don't become too big. + * + * Both `FT_KERNING_DEFAULT` and `FT_KERNING_UNFITTED` use the current + * horizontal scaling factor (as set e.g. with @FT_Set_Char_Size) to + * convert font units to pixels. + */ + typedef enum FT_Kerning_Mode_ + { + FT_KERNING_DEFAULT = 0, + FT_KERNING_UNFITTED, + FT_KERNING_UNSCALED + + } FT_Kerning_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Kerning_Mode` values instead */ +#define ft_kerning_default FT_KERNING_DEFAULT +#define ft_kerning_unfitted FT_KERNING_UNFITTED +#define ft_kerning_unscaled FT_KERNING_UNSCALED + + + /************************************************************************** + * + * @function: + * FT_Get_Kerning + * + * @description: + * Return the kerning vector between two glyphs of the same face. + * + * @input: + * face :: + * A handle to a source face object. + * + * left_glyph :: + * The index of the left glyph in the kern pair. + * + * right_glyph :: + * The index of the right glyph in the kern pair. + * + * kern_mode :: + * See @FT_Kerning_Mode for more information. Determines the scale and + * dimension of the returned kerning vector. + * + * @output: + * akerning :: + * The kerning vector. This is either in font units, fractional pixels + * (26.6 format), or pixels for scalable formats, and in pixels for + * fixed-sizes formats. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Only horizontal layouts (left-to-right & right-to-left) are supported + * by this method. Other layouts, or more sophisticated kernings, are + * out of the scope of this API function -- they can be implemented + * through format-specific interfaces. + * + * Kerning for OpenType fonts implemented in a 'GPOS' table is not + * supported; use @FT_HAS_KERNING to find out whether a font has data + * that can be extracted with `FT_Get_Kerning`. + */ + FT_EXPORT( FT_Error ) + FT_Get_Kerning( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_UInt kern_mode, + FT_Vector *akerning ); + + + /************************************************************************** + * + * @function: + * FT_Get_Track_Kerning + * + * @description: + * Return the track kerning for a given face object at a given size. + * + * @input: + * face :: + * A handle to a source face object. + * + * point_size :: + * The point size in 16.16 fractional points. + * + * degree :: + * The degree of tightness. Increasingly negative values represent + * tighter track kerning, while increasingly positive values represent + * looser track kerning. Value zero means no track kerning. + * + * @output: + * akerning :: + * The kerning in 16.16 fractional points, to be uniformly applied + * between all glyphs. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Currently, only the Type~1 font driver supports track kerning, using + * data from AFM files (if attached with @FT_Attach_File or + * @FT_Attach_Stream). + * + * Only very few AFM files come with track kerning data; please refer to + * Adobe's AFM specification for more details. + */ + FT_EXPORT( FT_Error ) + FT_Get_Track_Kerning( FT_Face face, + FT_Fixed point_size, + FT_Int degree, + FT_Fixed* akerning ); + + + /************************************************************************** + * + * @function: + * FT_Get_Glyph_Name + * + * @description: + * Retrieve the ASCII name of a given glyph in a face. This only works + * for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. + * + * @input: + * face :: + * A handle to a source face object. + * + * glyph_index :: + * The glyph index. + * + * buffer_max :: + * The maximum number of bytes available in the buffer. + * + * @output: + * buffer :: + * A pointer to a target buffer where the name is copied to. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * An error is returned if the face doesn't provide glyph names or if the + * glyph index is invalid. In all cases of failure, the first byte of + * `buffer` is set to~0 to indicate an empty name. + * + * The glyph name is truncated to fit within the buffer if it is too + * long. The returned string is always zero-terminated. + * + * Be aware that FreeType reorders glyph indices internally so that glyph + * index~0 always corresponds to the 'missing glyph' (called '.notdef'). + * + * This function always returns an error if the config macro + * `FT_CONFIG_OPTION_NO_GLYPH_NAMES` is not defined in `ftoption.h`. + */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph_Name( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + + /************************************************************************** + * + * @function: + * FT_Get_Postscript_Name + * + * @description: + * Retrieve the ASCII PostScript name of a given face, if available. + * This only works with PostScript, TrueType, and OpenType fonts. + * + * @input: + * face :: + * A handle to the source face object. + * + * @return: + * A pointer to the face's PostScript name. `NULL` if unavailable. + * + * @note: + * The returned pointer is owned by the face and is destroyed with it. + * + * For variation fonts, this string changes if you select a different + * instance, and you have to call `FT_Get_PostScript_Name` again to + * retrieve it. FreeType follows Adobe TechNote #5902, 'Generating + * PostScript Names for Fonts Using OpenType Font Variations'. + * + * https://download.macromedia.com/pub/developer/opentype/tech-notes/5902.AdobePSNameGeneration.html + * + * [Since 2.9] Special PostScript names for named instances are only + * returned if the named instance is set with @FT_Set_Named_Instance (and + * the font has corresponding entries in its 'fvar' table). If + * @FT_IS_VARIATION returns true, the algorithmically derived PostScript + * name is provided, not looking up special entries for named instances. + */ + FT_EXPORT( const char* ) + FT_Get_Postscript_Name( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Select_Charmap + * + * @description: + * Select a given charmap by its encoding tag (as listed in + * `freetype.h`). + * + * @inout: + * face :: + * A handle to the source face object. + * + * @input: + * encoding :: + * A handle to the selected encoding. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function returns an error if no charmap in the face corresponds + * to the encoding queried here. + * + * Because many fonts contain more than a single cmap for Unicode + * encoding, this function has some special code to select the one that + * covers Unicode best ('best' in the sense that a UCS-4 cmap is + * preferred to a UCS-2 cmap). It is thus preferable to @FT_Set_Charmap + * in this case. + */ + FT_EXPORT( FT_Error ) + FT_Select_Charmap( FT_Face face, + FT_Encoding encoding ); + + + /************************************************************************** + * + * @function: + * FT_Set_Charmap + * + * @description: + * Select a given charmap for character code to glyph index mapping. + * + * @inout: + * face :: + * A handle to the source face object. + * + * @input: + * charmap :: + * A handle to the selected charmap. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function returns an error if the charmap is not part of the face + * (i.e., if it is not listed in the `face->charmaps` table). + * + * It also fails if an OpenType type~14 charmap is selected (which + * doesn't map character codes to glyph indices at all). + */ + FT_EXPORT( FT_Error ) + FT_Set_Charmap( FT_Face face, + FT_CharMap charmap ); + + + /************************************************************************** + * + * @function: + * FT_Get_Charmap_Index + * + * @description: + * Retrieve index of a given charmap. + * + * @input: + * charmap :: + * A handle to a charmap. + * + * @return: + * The index into the array of character maps within the face to which + * `charmap` belongs. If an error occurs, -1 is returned. + * + */ + FT_EXPORT( FT_Int ) + FT_Get_Charmap_Index( FT_CharMap charmap ); + + + /************************************************************************** + * + * @function: + * FT_Get_Char_Index + * + * @description: + * Return the glyph index of a given character code. This function uses + * the currently selected charmap to do the mapping. + * + * @input: + * face :: + * A handle to the source face object. + * + * charcode :: + * The character code. + * + * @return: + * The glyph index. 0~means 'undefined character code'. + * + * @note: + * If you use FreeType to manipulate the contents of font files directly, + * be aware that the glyph index returned by this function doesn't always + * correspond to the internal indices used within the file. This is done + * to ensure that value~0 always corresponds to the 'missing glyph'. If + * the first glyph is not named '.notdef', then for Type~1 and Type~42 + * fonts, '.notdef' will be moved into the glyph ID~0 position, and + * whatever was there will be moved to the position '.notdef' had. For + * Type~1 fonts, if there is no '.notdef' glyph at all, then one will be + * created at index~0 and whatever was there will be moved to the last + * index -- Type~42 fonts are considered invalid under this condition. + */ + FT_EXPORT( FT_UInt ) + FT_Get_Char_Index( FT_Face face, + FT_ULong charcode ); + + + /************************************************************************** + * + * @function: + * FT_Get_First_Char + * + * @description: + * Return the first character code in the current charmap of a given + * face, together with its corresponding glyph index. + * + * @input: + * face :: + * A handle to the source face object. + * + * @output: + * agindex :: + * Glyph index of first character code. 0~if charmap is empty. + * + * @return: + * The charmap's first character code. + * + * @note: + * You should use this function together with @FT_Get_Next_Char to parse + * all character codes available in a given charmap. The code should + * look like this: + * + * ``` + * FT_ULong charcode; + * FT_UInt gindex; + * + * + * charcode = FT_Get_First_Char( face, &gindex ); + * while ( gindex != 0 ) + * { + * ... do something with (charcode,gindex) pair ... + * + * charcode = FT_Get_Next_Char( face, charcode, &gindex ); + * } + * ``` + * + * Be aware that character codes can have values up to 0xFFFFFFFF; this + * might happen for non-Unicode or malformed cmaps. However, even with + * regular Unicode encoding, so-called 'last resort fonts' (using SFNT + * cmap format 13, see function @FT_Get_CMap_Format) normally have + * entries for all Unicode characters up to 0x1FFFFF, which can cause *a + * lot* of iterations. + * + * Note that `*agindex` is set to~0 if the charmap is empty. The result + * itself can be~0 in two cases: if the charmap is empty or if the + * value~0 is the first valid character code. + */ + FT_EXPORT( FT_ULong ) + FT_Get_First_Char( FT_Face face, + FT_UInt *agindex ); + + + /************************************************************************** + * + * @function: + * FT_Get_Next_Char + * + * @description: + * Return the next character code in the current charmap of a given face + * following the value `char_code`, as well as the corresponding glyph + * index. + * + * @input: + * face :: + * A handle to the source face object. + * + * char_code :: + * The starting character code. + * + * @output: + * agindex :: + * Glyph index of next character code. 0~if charmap is empty. + * + * @return: + * The charmap's next character code. + * + * @note: + * You should use this function with @FT_Get_First_Char to walk over all + * character codes available in a given charmap. See the note for that + * function for a simple code example. + * + * Note that `*agindex` is set to~0 when there are no more codes in the + * charmap. + */ + FT_EXPORT( FT_ULong ) + FT_Get_Next_Char( FT_Face face, + FT_ULong char_code, + FT_UInt *agindex ); + + + /************************************************************************** + * + * @function: + * FT_Face_Properties + * + * @description: + * Set or override certain (library or module-wide) properties on a + * face-by-face basis. Useful for finer-grained control and avoiding + * locks on shared structures (threads can modify their own faces as they + * see fit). + * + * Contrary to @FT_Property_Set, this function uses @FT_Parameter so that + * you can pass multiple properties to the target face in one call. Note + * that only a subset of the available properties can be controlled. + * + * * @FT_PARAM_TAG_STEM_DARKENING (stem darkening, corresponding to the + * property `no-stem-darkening` provided by the 'autofit', 'cff', + * 'type1', and 't1cid' modules; see @no-stem-darkening). + * + * * @FT_PARAM_TAG_LCD_FILTER_WEIGHTS (LCD filter weights, corresponding + * to function @FT_Library_SetLcdFilterWeights). + * + * * @FT_PARAM_TAG_RANDOM_SEED (seed value for the CFF, Type~1, and CID + * 'random' operator, corresponding to the `random-seed` property + * provided by the 'cff', 'type1', and 't1cid' modules; see + * @random-seed). + * + * Pass `NULL` as `data` in @FT_Parameter for a given tag to reset the + * option and use the library or module default again. + * + * @input: + * face :: + * A handle to the source face object. + * + * num_properties :: + * The number of properties that follow. + * + * properties :: + * A handle to an @FT_Parameter array with `num_properties` elements. + * + * @return: + * FreeType error code. 0~means success. + * + * @example: + * Here is an example that sets three properties. You must define + * `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` to make the LCD filter examples + * work. + * + * ``` + * FT_Parameter property1; + * FT_Bool darken_stems = 1; + * + * FT_Parameter property2; + * FT_LcdFiveTapFilter custom_weight = + * { 0x11, 0x44, 0x56, 0x44, 0x11 }; + * + * FT_Parameter property3; + * FT_Int32 random_seed = 314159265; + * + * FT_Parameter properties[3] = { property1, + * property2, + * property3 }; + * + * + * property1.tag = FT_PARAM_TAG_STEM_DARKENING; + * property1.data = &darken_stems; + * + * property2.tag = FT_PARAM_TAG_LCD_FILTER_WEIGHTS; + * property2.data = custom_weight; + * + * property3.tag = FT_PARAM_TAG_RANDOM_SEED; + * property3.data = &random_seed; + * + * FT_Face_Properties( face, 3, properties ); + * ``` + * + * The next example resets a single property to its default value. + * + * ``` + * FT_Parameter property; + * + * + * property.tag = FT_PARAM_TAG_LCD_FILTER_WEIGHTS; + * property.data = NULL; + * + * FT_Face_Properties( face, 1, &property ); + * ``` + * + * @since: + * 2.8 + * + */ + FT_EXPORT( FT_Error ) + FT_Face_Properties( FT_Face face, + FT_UInt num_properties, + FT_Parameter* properties ); + + + /************************************************************************** + * + * @function: + * FT_Get_Name_Index + * + * @description: + * Return the glyph index of a given glyph name. + * + * @input: + * face :: + * A handle to the source face object. + * + * glyph_name :: + * The glyph name. + * + * @return: + * The glyph index. 0~means 'undefined character code'. + */ + FT_EXPORT( FT_UInt ) + FT_Get_Name_Index( FT_Face face, + const FT_String* glyph_name ); + + + /************************************************************************** + * + * @enum: + * FT_SUBGLYPH_FLAG_XXX + * + * @description: + * A list of constants describing subglyphs. Please refer to the 'glyf' + * table description in the OpenType specification for the meaning of the + * various flags (which get synthesized for non-OpenType subglyphs). + * + * https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description + * + * @values: + * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: + * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: + * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: + * FT_SUBGLYPH_FLAG_SCALE :: + * FT_SUBGLYPH_FLAG_XY_SCALE :: + * FT_SUBGLYPH_FLAG_2X2 :: + * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: + * + */ +#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 +#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 +#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 +#define FT_SUBGLYPH_FLAG_SCALE 8 +#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 +#define FT_SUBGLYPH_FLAG_2X2 0x80 +#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 + + + /************************************************************************** + * + * @function: + * FT_Get_SubGlyph_Info + * + * @description: + * Retrieve a description of a given subglyph. Only use it if + * `glyph->format` is @FT_GLYPH_FORMAT_COMPOSITE; an error is returned + * otherwise. + * + * @input: + * glyph :: + * The source glyph slot. + * + * sub_index :: + * The index of the subglyph. Must be less than + * `glyph->num_subglyphs`. + * + * @output: + * p_index :: + * The glyph index of the subglyph. + * + * p_flags :: + * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. + * + * p_arg1 :: + * The subglyph's first argument (if any). + * + * p_arg2 :: + * The subglyph's second argument (if any). + * + * p_transform :: + * The subglyph transformation (if any). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The values of `*p_arg1`, `*p_arg2`, and `*p_transform` must be + * interpreted depending on the flags returned in `*p_flags`. See the + * OpenType specification for details. + * + * https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description + * + */ + FT_EXPORT( FT_Error ) + FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, + FT_UInt sub_index, + FT_Int *p_index, + FT_UInt *p_flags, + FT_Int *p_arg1, + FT_Int *p_arg2, + FT_Matrix *p_transform ); + + + /************************************************************************** + * + * @section: + * layer_management + * + * @title: + * Glyph Layer Management + * + * @abstract: + * Retrieving and manipulating OpenType's 'COLR' table data. + * + * @description: + * The functions described here allow access of colored glyph layer data + * in OpenType's 'COLR' tables. + */ + + + /************************************************************************** + * + * @struct: + * FT_LayerIterator + * + * @description: + * This iterator object is needed for @FT_Get_Color_Glyph_Layer. + * + * @fields: + * num_layers :: + * The number of glyph layers for the requested glyph index. Will be + * set by @FT_Get_Color_Glyph_Layer. + * + * layer :: + * The current layer. Will be set by @FT_Get_Color_Glyph_Layer. + * + * p :: + * An opaque pointer into 'COLR' table data. The caller must set this + * to `NULL` before the first call of @FT_Get_Color_Glyph_Layer. + */ + typedef struct FT_LayerIterator_ + { + FT_UInt num_layers; + FT_UInt layer; + FT_Byte* p; + + } FT_LayerIterator; + + + /************************************************************************** + * + * @function: + * FT_Get_Color_Glyph_Layer + * + * @description: + * This is an interface to the 'COLR' table in OpenType fonts to + * iteratively retrieve the colored glyph layers associated with the + * current glyph slot. + * + * https://docs.microsoft.com/en-us/typography/opentype/spec/colr + * + * The glyph layer data for a given glyph index, if present, provides an + * alternative, multi-colour glyph representation: Instead of rendering + * the outline or bitmap with the given glyph index, glyphs with the + * indices and colors returned by this function are rendered layer by + * layer. + * + * The returned elements are ordered in the z~direction from bottom to + * top; the 'n'th element should be rendered with the associated palette + * color and blended on top of the already rendered layers (elements 0, + * 1, ..., n-1). + * + * @input: + * face :: + * A handle to the parent face object. + * + * base_glyph :: + * The glyph index the colored glyph layers are associated with. + * + * @inout: + * iterator :: + * An @FT_LayerIterator object. For the first call you should set + * `iterator->p` to `NULL`. For all following calls, simply use the + * same object again. + * + * @output: + * aglyph_index :: + * The glyph index of the current layer. + * + * acolor_index :: + * The color index into the font face's color palette of the current + * layer. The value 0xFFFF is special; it doesn't reference a palette + * entry but indicates that the text foreground color should be used + * instead (to be set up by the application outside of FreeType). + * + * The color palette can be retrieved with @FT_Palette_Select. + * + * @return: + * Value~1 if everything is OK. If there are no more layers (or if there + * are no layers at all), value~0 gets returned. In case of an error, + * value~0 is returned also. + * + * @note: + * This function is necessary if you want to handle glyph layers by + * yourself. In particular, functions that operate with @FT_GlyphRec + * objects (like @FT_Get_Glyph or @FT_Glyph_To_Bitmap) don't have access + * to this information. + * + * Note that @FT_Render_Glyph is able to handle colored glyph layers + * automatically if the @FT_LOAD_COLOR flag is passed to a previous call + * to @FT_Load_Glyph. [This is an experimental feature.] + * + * @example: + * ``` + * FT_Color* palette; + * FT_LayerIterator iterator; + * + * FT_Bool have_layers; + * FT_UInt layer_glyph_index; + * FT_UInt layer_color_index; + * + * + * error = FT_Palette_Select( face, palette_index, &palette ); + * if ( error ) + * palette = NULL; + * + * iterator.p = NULL; + * have_layers = FT_Get_Color_Glyph_Layer( face, + * glyph_index, + * &layer_glyph_index, + * &layer_color_index, + * &iterator ); + * + * if ( palette && have_layers ) + * { + * do + * { + * FT_Color layer_color; + * + * + * if ( layer_color_index == 0xFFFF ) + * layer_color = text_foreground_color; + * else + * layer_color = palette[layer_color_index]; + * + * // Load and render glyph `layer_glyph_index', then + * // blend resulting pixmap (using color `layer_color') + * // with previously created pixmaps. + * + * } while ( FT_Get_Color_Glyph_Layer( face, + * glyph_index, + * &layer_glyph_index, + * &layer_color_index, + * &iterator ) ); + * } + * ``` + */ + FT_EXPORT( FT_Bool ) + FT_Get_Color_Glyph_Layer( FT_Face face, + FT_UInt base_glyph, + FT_UInt *aglyph_index, + FT_UInt *acolor_index, + FT_LayerIterator* iterator ); + + + /************************************************************************** + * + * @section: + * base_interface + * + */ + + /************************************************************************** + * + * @enum: + * FT_FSTYPE_XXX + * + * @description: + * A list of bit flags used in the `fsType` field of the OS/2 table in a + * TrueType or OpenType font and the `FSType` entry in a PostScript font. + * These bit flags are returned by @FT_Get_FSType_Flags; they inform + * client applications of embedding and subsetting restrictions + * associated with a font. + * + * See + * https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf + * for more details. + * + * @values: + * FT_FSTYPE_INSTALLABLE_EMBEDDING :: + * Fonts with no fsType bit set may be embedded and permanently + * installed on the remote system by an application. + * + * FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: + * Fonts that have only this bit set must not be modified, embedded or + * exchanged in any manner without first obtaining permission of the + * font software copyright owner. + * + * FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: + * The font may be embedded and temporarily loaded on the remote + * system. Documents containing Preview & Print fonts must be opened + * 'read-only'; no edits can be applied to the document. + * + * FT_FSTYPE_EDITABLE_EMBEDDING :: + * The font may be embedded but must only be installed temporarily on + * other systems. In contrast to Preview & Print fonts, documents + * containing editable fonts may be opened for reading, editing is + * permitted, and changes may be saved. + * + * FT_FSTYPE_NO_SUBSETTING :: + * The font may not be subsetted prior to embedding. + * + * FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: + * Only bitmaps contained in the font may be embedded; no outline data + * may be embedded. If there are no bitmaps available in the font, + * then the font is unembeddable. + * + * @note: + * The flags are ORed together, thus more than a single value can be + * returned. + * + * While the `fsType` flags can indicate that a font may be embedded, a + * license with the font vendor may be separately required to use the + * font in this way. + */ +#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000 +#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002 +#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004 +#define FT_FSTYPE_EDITABLE_EMBEDDING 0x0008 +#define FT_FSTYPE_NO_SUBSETTING 0x0100 +#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200 + + + /************************************************************************** + * + * @function: + * FT_Get_FSType_Flags + * + * @description: + * Return the `fsType` flags for a font. + * + * @input: + * face :: + * A handle to the source face object. + * + * @return: + * The `fsType` flags, see @FT_FSTYPE_XXX. + * + * @note: + * Use this function rather than directly reading the `fs_type` field in + * the @PS_FontInfoRec structure, which is only guaranteed to return the + * correct results for Type~1 fonts. + * + * @since: + * 2.3.8 + */ + FT_EXPORT( FT_UShort ) + FT_Get_FSType_Flags( FT_Face face ); + + + /************************************************************************** + * + * @section: + * glyph_variants + * + * @title: + * Unicode Variation Sequences + * + * @abstract: + * The FreeType~2 interface to Unicode Variation Sequences (UVS), using + * the SFNT cmap format~14. + * + * @description: + * Many characters, especially for CJK scripts, have variant forms. They + * are a sort of grey area somewhere between being totally irrelevant and + * semantically distinct; for this reason, the Unicode consortium decided + * to introduce Variation Sequences (VS), consisting of a Unicode base + * character and a variation selector instead of further extending the + * already huge number of characters. + * + * Unicode maintains two different sets, namely 'Standardized Variation + * Sequences' and registered 'Ideographic Variation Sequences' (IVS), + * collected in the 'Ideographic Variation Database' (IVD). + * + * https://unicode.org/Public/UCD/latest/ucd/StandardizedVariants.txt + * https://unicode.org/reports/tr37/ https://unicode.org/ivd/ + * + * To date (January 2017), the character with the most ideographic + * variations is U+9089, having 32 such IVS. + * + * Three Mongolian Variation Selectors have the values U+180B-U+180D; 256 + * generic Variation Selectors are encoded in the ranges U+FE00-U+FE0F + * and U+E0100-U+E01EF. IVS currently use Variation Selectors from the + * range U+E0100-U+E01EF only. + * + * A VS consists of the base character value followed by a single + * Variation Selector. For example, to get the first variation of + * U+9089, you have to write the character sequence `U+9089 U+E0100`. + * + * Adobe and MS decided to support both standardized and ideographic VS + * with a new cmap subtable (format~14). It is an odd subtable because + * it is not a mapping of input code points to glyphs, but contains lists + * of all variations supported by the font. + * + * A variation may be either 'default' or 'non-default' for a given font. + * A default variation is the one you will get for that code point if you + * look it up in the standard Unicode cmap. A non-default variation is a + * different glyph. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Face_GetCharVariantIndex + * + * @description: + * Return the glyph index of a given character code as modified by the + * variation selector. + * + * @input: + * face :: + * A handle to the source face object. + * + * charcode :: + * The character code point in Unicode. + * + * variantSelector :: + * The Unicode code point of the variation selector. + * + * @return: + * The glyph index. 0~means either 'undefined character code', or + * 'undefined selector code', or 'no variation selector cmap subtable', + * or 'current CharMap is not Unicode'. + * + * @note: + * If you use FreeType to manipulate the contents of font files directly, + * be aware that the glyph index returned by this function doesn't always + * correspond to the internal indices used within the file. This is done + * to ensure that value~0 always corresponds to the 'missing glyph'. + * + * This function is only meaningful if + * a) the font has a variation selector cmap sub table, and + * b) the current charmap has a Unicode encoding. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_UInt ) + FT_Face_GetCharVariantIndex( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /************************************************************************** + * + * @function: + * FT_Face_GetCharVariantIsDefault + * + * @description: + * Check whether this variation of this Unicode character is the one to + * be found in the charmap. + * + * @input: + * face :: + * A handle to the source face object. + * + * charcode :: + * The character codepoint in Unicode. + * + * variantSelector :: + * The Unicode codepoint of the variation selector. + * + * @return: + * 1~if found in the standard (Unicode) cmap, 0~if found in the variation + * selector cmap, or -1 if it is not a variation. + * + * @note: + * This function is only meaningful if the font has a variation selector + * cmap subtable. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_Int ) + FT_Face_GetCharVariantIsDefault( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /************************************************************************** + * + * @function: + * FT_Face_GetVariantSelectors + * + * @description: + * Return a zero-terminated list of Unicode variation selectors found in + * the font. + * + * @input: + * face :: + * A handle to the source face object. + * + * @return: + * A pointer to an array of selector code points, or `NULL` if there is + * no valid variation selector cmap subtable. + * + * @note: + * The last item in the array is~0; the array is owned by the @FT_Face + * object but can be overwritten or released on the next call to a + * FreeType function. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantSelectors( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Face_GetVariantsOfChar + * + * @description: + * Return a zero-terminated list of Unicode variation selectors found for + * the specified character code. + * + * @input: + * face :: + * A handle to the source face object. + * + * charcode :: + * The character codepoint in Unicode. + * + * @return: + * A pointer to an array of variation selector code points that are + * active for the given character, or `NULL` if the corresponding list is + * empty. + * + * @note: + * The last item in the array is~0; the array is owned by the @FT_Face + * object but can be overwritten or released on the next call to a + * FreeType function. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantsOfChar( FT_Face face, + FT_ULong charcode ); + + + /************************************************************************** + * + * @function: + * FT_Face_GetCharsOfVariant + * + * @description: + * Return a zero-terminated list of Unicode character codes found for the + * specified variation selector. + * + * @input: + * face :: + * A handle to the source face object. + * + * variantSelector :: + * The variation selector code point in Unicode. + * + * @return: + * A list of all the code points that are specified by this selector + * (both default and non-default codes are returned) or `NULL` if there + * is no valid cmap or the variation selector is invalid. + * + * @note: + * The last item in the array is~0; the array is owned by the @FT_Face + * object but can be overwritten or released on the next call to a + * FreeType function. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetCharsOfVariant( FT_Face face, + FT_ULong variantSelector ); + + + /************************************************************************** + * + * @section: + * computations + * + * @title: + * Computations + * + * @abstract: + * Crunching fixed numbers and vectors. + * + * @description: + * This section contains various functions used to perform computations + * on 16.16 fixed-float numbers or 2d vectors. + * + * **Attention**: Most arithmetic functions take `FT_Long` as arguments. + * For historical reasons, FreeType was designed under the assumption + * that `FT_Long` is a 32-bit integer; results can thus be undefined if + * the arguments don't fit into 32 bits. + * + * @order: + * FT_MulDiv + * FT_MulFix + * FT_DivFix + * FT_RoundFix + * FT_CeilFix + * FT_FloorFix + * FT_Vector_Transform + * FT_Matrix_Multiply + * FT_Matrix_Invert + * + */ + + + /************************************************************************** + * + * @function: + * FT_MulDiv + * + * @description: + * Compute `(a*b)/c` with maximum accuracy, using a 64-bit intermediate + * integer whenever necessary. + * + * This function isn't necessarily as fast as some processor-specific + * operations, but is at least completely portable. + * + * @input: + * a :: + * The first multiplier. + * + * b :: + * The second multiplier. + * + * c :: + * The divisor. + * + * @return: + * The result of `(a*b)/c`. This function never traps when trying to + * divide by zero; it simply returns 'MaxInt' or 'MinInt' depending on + * the signs of `a` and `b`. + */ + FT_EXPORT( FT_Long ) + FT_MulDiv( FT_Long a, + FT_Long b, + FT_Long c ); + + + /************************************************************************** + * + * @function: + * FT_MulFix + * + * @description: + * Compute `(a*b)/0x10000` with maximum accuracy. Its main use is to + * multiply a given value by a 16.16 fixed-point factor. + * + * @input: + * a :: + * The first multiplier. + * + * b :: + * The second multiplier. Use a 16.16 factor here whenever possible + * (see note below). + * + * @return: + * The result of `(a*b)/0x10000`. + * + * @note: + * This function has been optimized for the case where the absolute value + * of `a` is less than 2048, and `b` is a 16.16 scaling factor. As this + * happens mainly when scaling from notional units to fractional pixels + * in FreeType, it resulted in noticeable speed improvements between + * versions 2.x and 1.x. + * + * As a conclusion, always try to place a 16.16 factor as the _second_ + * argument of this function; this can make a great difference. + */ + FT_EXPORT( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ); + + + /************************************************************************** + * + * @function: + * FT_DivFix + * + * @description: + * Compute `(a*0x10000)/b` with maximum accuracy. Its main use is to + * divide a given value by a 16.16 fixed-point factor. + * + * @input: + * a :: + * The numerator. + * + * b :: + * The denominator. Use a 16.16 factor here. + * + * @return: + * The result of `(a*0x10000)/b`. + */ + FT_EXPORT( FT_Long ) + FT_DivFix( FT_Long a, + FT_Long b ); + + + /************************************************************************** + * + * @function: + * FT_RoundFix + * + * @description: + * Round a 16.16 fixed number. + * + * @input: + * a :: + * The number to be rounded. + * + * @return: + * `a` rounded to the nearest 16.16 fixed integer, halfway cases away + * from zero. + * + * @note: + * The function uses wrap-around arithmetic. + */ + FT_EXPORT( FT_Fixed ) + FT_RoundFix( FT_Fixed a ); + + + /************************************************************************** + * + * @function: + * FT_CeilFix + * + * @description: + * Compute the smallest following integer of a 16.16 fixed number. + * + * @input: + * a :: + * The number for which the ceiling function is to be computed. + * + * @return: + * `a` rounded towards plus infinity. + * + * @note: + * The function uses wrap-around arithmetic. + */ + FT_EXPORT( FT_Fixed ) + FT_CeilFix( FT_Fixed a ); + + + /************************************************************************** + * + * @function: + * FT_FloorFix + * + * @description: + * Compute the largest previous integer of a 16.16 fixed number. + * + * @input: + * a :: + * The number for which the floor function is to be computed. + * + * @return: + * `a` rounded towards minus infinity. + */ + FT_EXPORT( FT_Fixed ) + FT_FloorFix( FT_Fixed a ); + + + /************************************************************************** + * + * @function: + * FT_Vector_Transform + * + * @description: + * Transform a single vector through a 2x2 matrix. + * + * @inout: + * vector :: + * The target vector to transform. + * + * @input: + * matrix :: + * A pointer to the source 2x2 matrix. + * + * @note: + * The result is undefined if either `vector` or `matrix` is invalid. + */ + FT_EXPORT( void ) + FT_Vector_Transform( FT_Vector* vector, + const FT_Matrix* matrix ); + + + /************************************************************************** + * + * @section: + * version + * + * @title: + * FreeType Version + * + * @abstract: + * Functions and macros related to FreeType versions. + * + * @description: + * Note that those functions and macros are of limited use because even a + * new release of FreeType with only documentation changes increases the + * version number. + * + * @order: + * FT_Library_Version + * + * FREETYPE_MAJOR + * FREETYPE_MINOR + * FREETYPE_PATCH + * + * FT_Face_CheckTrueTypePatents + * FT_Face_SetUnpatentedHinting + * + */ + + + /************************************************************************** + * + * @enum: + * FREETYPE_XXX + * + * @description: + * These three macros identify the FreeType source code version. Use + * @FT_Library_Version to access them at runtime. + * + * @values: + * FREETYPE_MAJOR :: + * The major version number. + * FREETYPE_MINOR :: + * The minor version number. + * FREETYPE_PATCH :: + * The patch level. + * + * @note: + * The version number of FreeType if built as a dynamic link library with + * the 'libtool' package is _not_ controlled by these three macros. + * + */ +#define FREETYPE_MAJOR 2 +#define FREETYPE_MINOR 10 +#define FREETYPE_PATCH 1 + + + /************************************************************************** + * + * @function: + * FT_Library_Version + * + * @description: + * Return the version of the FreeType library being used. This is useful + * when dynamically linking to the library, since one cannot use the + * macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and @FREETYPE_PATCH. + * + * @input: + * library :: + * A source library handle. + * + * @output: + * amajor :: + * The major version number. + * + * aminor :: + * The minor version number. + * + * apatch :: + * The patch version number. + * + * @note: + * The reason why this function takes a `library` argument is because + * certain programs implement library initialization in a custom way that + * doesn't use @FT_Init_FreeType. + * + * In such cases, the library version might not be available before the + * library object has been created. + */ + FT_EXPORT( void ) + FT_Library_Version( FT_Library library, + FT_Int *amajor, + FT_Int *aminor, + FT_Int *apatch ); + + + /************************************************************************** + * + * @function: + * FT_Face_CheckTrueTypePatents + * + * @description: + * Deprecated, does nothing. + * + * @input: + * face :: + * A face handle. + * + * @return: + * Always returns false. + * + * @note: + * Since May 2010, TrueType hinting is no longer patented. + * + * @since: + * 2.3.5 + */ + FT_EXPORT( FT_Bool ) + FT_Face_CheckTrueTypePatents( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Face_SetUnpatentedHinting + * + * @description: + * Deprecated, does nothing. + * + * @input: + * face :: + * A face handle. + * + * value :: + * New boolean setting. + * + * @return: + * Always returns false. + * + * @note: + * Since May 2010, TrueType hinting is no longer patented. + * + * @since: + * 2.3.5 + */ + FT_EXPORT( FT_Bool ) + FT_Face_SetUnpatentedHinting( FT_Face face, + FT_Bool value ); + + /* */ + + +FT_END_HEADER + +#endif /* FREETYPE_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftadvanc.h b/CMU462/deps/freetype/include/freetype/ftadvanc.h new file mode 100644 index 0000000..95c38f9 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftadvanc.h @@ -0,0 +1,188 @@ +/**************************************************************************** + * + * ftadvanc.h + * + * Quick computation of advance widths (specification only). + * + * Copyright (C) 2008-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTADVANC_H_ +#define FTADVANC_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * quick_advance + * + * @title: + * Quick retrieval of advance values + * + * @abstract: + * Retrieve horizontal and vertical advance values without processing + * glyph outlines, if possible. + * + * @description: + * This section contains functions to quickly extract advance values + * without handling glyph outlines, if possible. + * + * @order: + * FT_Get_Advance + * FT_Get_Advances + * + */ + + + /************************************************************************** + * + * @enum: + * FT_ADVANCE_FLAG_FAST_ONLY + * + * @description: + * A bit-flag to be OR-ed with the `flags` parameter of the + * @FT_Get_Advance and @FT_Get_Advances functions. + * + * If set, it indicates that you want these functions to fail if the + * corresponding hinting mode or font driver doesn't allow for very quick + * advance computation. + * + * Typically, glyphs that are either unscaled, unhinted, bitmapped, or + * light-hinted can have their advance width computed very quickly. + * + * Normal and bytecode hinted modes that require loading, scaling, and + * hinting of the glyph outline, are extremely slow by comparison. + */ +#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000L + + + /************************************************************************** + * + * @function: + * FT_Get_Advance + * + * @description: + * Retrieve the advance value of a given glyph outline in an @FT_Face. + * + * @input: + * face :: + * The source @FT_Face handle. + * + * gindex :: + * The glyph index. + * + * load_flags :: + * A set of bit flags similar to those used when calling + * @FT_Load_Glyph, used to determine what kind of advances you need. + * @output: + * padvance :: + * The advance value. If scaling is performed (based on the value of + * `load_flags`), the advance value is in 16.16 format. Otherwise, it + * is in font units. + * + * If @FT_LOAD_VERTICAL_LAYOUT is set, this is the vertical advance + * corresponding to a vertical layout. Otherwise, it is the horizontal + * advance in a horizontal layout. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if + * the corresponding font backend doesn't have a quick way to retrieve + * the advances. + * + * A scaled advance is returned in 16.16 format but isn't transformed by + * the affine transformation specified by @FT_Set_Transform. + */ + FT_EXPORT( FT_Error ) + FT_Get_Advance( FT_Face face, + FT_UInt gindex, + FT_Int32 load_flags, + FT_Fixed *padvance ); + + + /************************************************************************** + * + * @function: + * FT_Get_Advances + * + * @description: + * Retrieve the advance values of several glyph outlines in an @FT_Face. + * + * @input: + * face :: + * The source @FT_Face handle. + * + * start :: + * The first glyph index. + * + * count :: + * The number of advance values you want to retrieve. + * + * load_flags :: + * A set of bit flags similar to those used when calling + * @FT_Load_Glyph. + * + * @output: + * padvance :: + * The advance values. This array, to be provided by the caller, must + * contain at least `count` elements. + * + * If scaling is performed (based on the value of `load_flags`), the + * advance values are in 16.16 format. Otherwise, they are in font + * units. + * + * If @FT_LOAD_VERTICAL_LAYOUT is set, these are the vertical advances + * corresponding to a vertical layout. Otherwise, they are the + * horizontal advances in a horizontal layout. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if + * the corresponding font backend doesn't have a quick way to retrieve + * the advances. + * + * Scaled advances are returned in 16.16 format but aren't transformed by + * the affine transformation specified by @FT_Set_Transform. + */ + FT_EXPORT( FT_Error ) + FT_Get_Advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 load_flags, + FT_Fixed *padvances ); + + /* */ + + +FT_END_HEADER + +#endif /* FTADVANC_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftbbox.h b/CMU462/deps/freetype/include/freetype/ftbbox.h new file mode 100644 index 0000000..22da70c --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftbbox.h @@ -0,0 +1,102 @@ +/**************************************************************************** + * + * ftbbox.h + * + * FreeType exact bbox computation (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This component has a _single_ role: to compute exact outline bounding + * boxes. + * + * It is separated from the rest of the engine for various technical + * reasons. It may well be integrated in 'ftoutln' later. + * + */ + + +#ifndef FTBBOX_H_ +#define FTBBOX_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * outline_processing + * + */ + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_BBox + * + * @description: + * Compute the exact bounding box of an outline. This is slower than + * computing the control box. However, it uses an advanced algorithm + * that returns _very_ quickly when the two boxes coincide. Otherwise, + * the outline Bezier arcs are traversed to extract their extrema. + * + * @input: + * outline :: + * A pointer to the source outline. + * + * @output: + * abbox :: + * The outline's exact bounding box. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the font is tricky and the glyph has been loaded with + * @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get + * reasonable values for the BBox it is necessary to load the glyph at a + * large ppem value (so that the hinting instructions can properly shift + * and scale the subglyphs), then extracting the BBox, which can be + * eventually converted back to font units. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_BBox( FT_Outline* outline, + FT_BBox *abbox ); + + /* */ + + +FT_END_HEADER + +#endif /* FTBBOX_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/CMU462/deps/freetype/include/freetype/ftbdf.h b/CMU462/deps/freetype/include/freetype/ftbdf.h new file mode 100644 index 0000000..1c46da5 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftbdf.h @@ -0,0 +1,213 @@ +/**************************************************************************** + * + * ftbdf.h + * + * FreeType API for accessing BDF-specific strings (specification). + * + * Copyright (C) 2002-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTBDF_H_ +#define FTBDF_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * bdf_fonts + * + * @title: + * BDF and PCF Files + * + * @abstract: + * BDF and PCF specific API. + * + * @description: + * This section contains the declaration of functions specific to BDF and + * PCF fonts. + * + */ + + + /************************************************************************** + * + * @enum: + * BDF_PropertyType + * + * @description: + * A list of BDF property types. + * + * @values: + * BDF_PROPERTY_TYPE_NONE :: + * Value~0 is used to indicate a missing property. + * + * BDF_PROPERTY_TYPE_ATOM :: + * Property is a string atom. + * + * BDF_PROPERTY_TYPE_INTEGER :: + * Property is a 32-bit signed integer. + * + * BDF_PROPERTY_TYPE_CARDINAL :: + * Property is a 32-bit unsigned integer. + */ + typedef enum BDF_PropertyType_ + { + BDF_PROPERTY_TYPE_NONE = 0, + BDF_PROPERTY_TYPE_ATOM = 1, + BDF_PROPERTY_TYPE_INTEGER = 2, + BDF_PROPERTY_TYPE_CARDINAL = 3 + + } BDF_PropertyType; + + + /************************************************************************** + * + * @type: + * BDF_Property + * + * @description: + * A handle to a @BDF_PropertyRec structure to model a given BDF/PCF + * property. + */ + typedef struct BDF_PropertyRec_* BDF_Property; + + + /************************************************************************** + * + * @struct: + * BDF_PropertyRec + * + * @description: + * This structure models a given BDF/PCF property. + * + * @fields: + * type :: + * The property type. + * + * u.atom :: + * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. May be + * `NULL`, indicating an empty string. + * + * u.integer :: + * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. + * + * u.cardinal :: + * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. + */ + typedef struct BDF_PropertyRec_ + { + BDF_PropertyType type; + union { + const char* atom; + FT_Int32 integer; + FT_UInt32 cardinal; + + } u; + + } BDF_PropertyRec; + + + /************************************************************************** + * + * @function: + * FT_Get_BDF_Charset_ID + * + * @description: + * Retrieve a BDF font character set identity, according to the BDF + * specification. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * acharset_encoding :: + * Charset encoding, as a C~string, owned by the face. + * + * acharset_registry :: + * Charset registry, as a C~string, owned by the face. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with BDF faces, returning an error otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Charset_ID( FT_Face face, + const char* *acharset_encoding, + const char* *acharset_registry ); + + + /************************************************************************** + * + * @function: + * FT_Get_BDF_Property + * + * @description: + * Retrieve a BDF property from a BDF or PCF font file. + * + * @input: + * face :: + * A handle to the input face. + * + * name :: + * The property name. + * + * @output: + * aproperty :: + * The property. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function works with BDF _and_ PCF fonts. It returns an error + * otherwise. It also returns an error if the property is not in the + * font. + * + * A 'property' is a either key-value pair within the STARTPROPERTIES + * ... ENDPROPERTIES block of a BDF font or a key-value pair from the + * `info->props` array within a `FontRec` structure of a PCF font. + * + * Integer properties are always stored as 'signed' within PCF fonts; + * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value + * for BDF fonts only. + * + * In case of error, `aproperty->type` is always set to + * @BDF_PROPERTY_TYPE_NONE. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Property( FT_Face face, + const char* prop_name, + BDF_PropertyRec *aproperty ); + + /* */ + +FT_END_HEADER + +#endif /* FTBDF_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftbitmap.h b/CMU462/deps/freetype/include/freetype/ftbitmap.h new file mode 100644 index 0000000..a6acdb9 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftbitmap.h @@ -0,0 +1,330 @@ +/**************************************************************************** + * + * ftbitmap.h + * + * FreeType utility functions for bitmaps (specification). + * + * Copyright (C) 2004-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTBITMAP_H_ +#define FTBITMAP_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_COLOR_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * bitmap_handling + * + * @title: + * Bitmap Handling + * + * @abstract: + * Handling FT_Bitmap objects. + * + * @description: + * This section contains functions for handling @FT_Bitmap objects, + * automatically adjusting the target's bitmap buffer size as needed. + * + * Note that none of the functions changes the bitmap's 'flow' (as + * indicated by the sign of the `pitch` field in @FT_Bitmap). + * + * To set the flow, assign an appropriate positive or negative value to + * the `pitch` field of the target @FT_Bitmap object after calling + * @FT_Bitmap_Init but before calling any of the other functions + * described here. + */ + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Init + * + * @description: + * Initialize a pointer to an @FT_Bitmap structure. + * + * @inout: + * abitmap :: + * A pointer to the bitmap structure. + * + * @note: + * A deprecated name for the same function is `FT_Bitmap_New`. + */ + FT_EXPORT( void ) + FT_Bitmap_Init( FT_Bitmap *abitmap ); + + + /* deprecated */ + FT_EXPORT( void ) + FT_Bitmap_New( FT_Bitmap *abitmap ); + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Copy + * + * @description: + * Copy a bitmap into another one. + * + * @input: + * library :: + * A handle to a library object. + * + * source :: + * A handle to the source bitmap. + * + * @output: + * target :: + * A handle to the target bitmap. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * `source->buffer` and `target->buffer` must neither be equal nor + * overlap. + */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Copy( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target ); + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Embolden + * + * @description: + * Embolden a bitmap. The new bitmap will be about `xStrength` pixels + * wider and `yStrength` pixels higher. The left and bottom borders are + * kept unchanged. + * + * @input: + * library :: + * A handle to a library object. + * + * xStrength :: + * How strong the glyph is emboldened horizontally. Expressed in 26.6 + * pixel format. + * + * yStrength :: + * How strong the glyph is emboldened vertically. Expressed in 26.6 + * pixel format. + * + * @inout: + * bitmap :: + * A handle to the target bitmap. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The current implementation restricts `xStrength` to be less than or + * equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. + * + * If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, you + * should call @FT_GlyphSlot_Own_Bitmap on the slot first. + * + * Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format are + * converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp). + */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Embolden( FT_Library library, + FT_Bitmap* bitmap, + FT_Pos xStrength, + FT_Pos yStrength ); + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Convert + * + * @description: + * Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp to + * a bitmap object with depth 8bpp, making the number of used bytes per + * line (a.k.a. the 'pitch') a multiple of `alignment`. + * + * @input: + * library :: + * A handle to a library object. + * + * source :: + * The source bitmap. + * + * alignment :: + * The pitch of the bitmap is a multiple of this argument. Common + * values are 1, 2, or 4. + * + * @output: + * target :: + * The target bitmap. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * It is possible to call @FT_Bitmap_Convert multiple times without + * calling @FT_Bitmap_Done (the memory is simply reallocated). + * + * Use @FT_Bitmap_Done to finally remove the bitmap object. + * + * The `library` argument is taken to have access to FreeType's memory + * handling functions. + * + * `source->buffer` and `target->buffer` must neither be equal nor + * overlap. + */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Convert( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target, + FT_Int alignment ); + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Blend + * + * @description: + * Blend a bitmap onto another bitmap, using a given color. + * + * @input: + * library :: + * A handle to a library object. + * + * source :: + * The source bitmap, which can have any @FT_Pixel_Mode format. + * + * source_offset :: + * The offset vector to the upper left corner of the source bitmap in + * 26.6 pixel format. It should represent an integer offset; the + * function will set the lowest six bits to zero to enforce that. + * + * color :: + * The color used to draw `source` onto `target`. + * + * @inout: + * target :: + * A handle to an `FT_Bitmap` object. It should be either initialized + * as empty with a call to @FT_Bitmap_Init, or it should be of type + * @FT_PIXEL_MODE_BGRA. + * + * atarget_offset :: + * The offset vector to the upper left corner of the target bitmap in + * 26.6 pixel format. It should represent an integer offset; the + * function will set the lowest six bits to zero to enforce that. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function doesn't perform clipping. + * + * The bitmap in `target` gets allocated or reallocated as needed; the + * vector `atarget_offset` is updated accordingly. + * + * In case of allocation or reallocation, the bitmap's pitch is set to + * `4 * width`. Both `source` and `target` must have the same bitmap + * flow (as indicated by the sign of the `pitch` field). + * + * `source->buffer` and `target->buffer` must neither be equal nor + * overlap. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Blend( FT_Library library, + const FT_Bitmap* source, + const FT_Vector source_offset, + FT_Bitmap* target, + FT_Vector *atarget_offset, + FT_Color color ); + + + /************************************************************************** + * + * @function: + * FT_GlyphSlot_Own_Bitmap + * + * @description: + * Make sure that a glyph slot owns `slot->bitmap`. + * + * @input: + * slot :: + * The glyph slot. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function is to be used in combination with @FT_Bitmap_Embolden. + */ + FT_EXPORT( FT_Error ) + FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); + + + /************************************************************************** + * + * @function: + * FT_Bitmap_Done + * + * @description: + * Destroy a bitmap object initialized with @FT_Bitmap_Init. + * + * @input: + * library :: + * A handle to a library object. + * + * bitmap :: + * The bitmap object to be freed. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The `library` argument is taken to have access to FreeType's memory + * handling functions. + */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Done( FT_Library library, + FT_Bitmap *bitmap ); + + + /* */ + + +FT_END_HEADER + +#endif /* FTBITMAP_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftbzip2.h b/CMU462/deps/freetype/include/freetype/ftbzip2.h new file mode 100644 index 0000000..ae88cfd --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftbzip2.h @@ -0,0 +1,102 @@ +/**************************************************************************** + * + * ftbzip2.h + * + * Bzip2-compressed stream support. + * + * Copyright (C) 2010-2019 by + * Joel Klinghed. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.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 FTBZIP2_H_ +#define FTBZIP2_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * bzip2 + * + * @title: + * BZIP2 Streams + * + * @abstract: + * Using bzip2-compressed font files. + * + * @description: + * This section contains the declaration of Bzip2-specific functions. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Stream_OpenBzip2 + * + * @description: + * Open a new stream to parse bzip2-compressed font files. This is + * mainly used to support the compressed `*.pcf.bz2` fonts that come with + * XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close` on the new stream will + * **not** call `FT_Stream_Close` on the source stream. None of the + * stream objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, bzip2 compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a bzip2 compressed + * stream from it and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature` if your build + * of FreeType was not compiled with bzip2 support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenBzip2( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* FTBZIP2_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftcache.h b/CMU462/deps/freetype/include/freetype/ftcache.h new file mode 100644 index 0000000..0d589d0 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftcache.h @@ -0,0 +1,1088 @@ +/**************************************************************************** + * + * ftcache.h + * + * FreeType Cache subsystem (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTCACHE_H_ +#define FTCACHE_H_ + + +#include <ft2build.h> +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * cache_subsystem + * + * @title: + * Cache Sub-System + * + * @abstract: + * How to cache face, size, and glyph data with FreeType~2. + * + * @description: + * This section describes the FreeType~2 cache sub-system, which is used + * to limit the number of concurrently opened @FT_Face and @FT_Size + * objects, as well as caching information like character maps and glyph + * images while limiting their maximum memory usage. + * + * Note that all types and functions begin with the `FTC_` prefix. + * + * The cache is highly portable and thus doesn't know anything about the + * fonts installed on your system, or how to access them. This implies + * the following scheme: + * + * First, available or installed font faces are uniquely identified by + * @FTC_FaceID values, provided to the cache by the client. Note that + * the cache only stores and compares these values, and doesn't try to + * interpret them in any way. + * + * Second, the cache calls, only when needed, a client-provided function + * to convert an @FTC_FaceID into a new @FT_Face object. The latter is + * then completely managed by the cache, including its termination + * through @FT_Done_Face. To monitor termination of face objects, the + * finalizer callback in the `generic` field of the @FT_Face object can + * be used, which might also be used to store the @FTC_FaceID of the + * face. + * + * Clients are free to map face IDs to anything else. The most simple + * usage is to associate them to a (pathname,face_index) pair that is + * used to call @FT_New_Face. However, more complex schemes are also + * possible. + * + * Note that for the cache to work correctly, the face ID values must be + * **persistent**, which means that the contents they point to should not + * change at runtime, or that their value should not become invalid. + * + * If this is unavoidable (e.g., when a font is uninstalled at runtime), + * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let + * the cache get rid of any references to the old @FTC_FaceID it may keep + * internally. Failure to do so will lead to incorrect behaviour or even + * crashes. + * + * To use the cache, start with calling @FTC_Manager_New to create a new + * @FTC_Manager object, which models a single cache instance. You can + * then look up @FT_Face and @FT_Size objects with + * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. + * + * If you want to use the charmap caching, call @FTC_CMapCache_New, then + * later use @FTC_CMapCache_Lookup to perform the equivalent of + * @FT_Get_Char_Index, only much faster. + * + * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then + * later use @FTC_ImageCache_Lookup to retrieve the corresponding + * @FT_Glyph objects from the cache. + * + * If you need lots of small bitmaps, it is much more memory efficient to + * call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This + * returns @FTC_SBitRec structures, which are used to store small bitmaps + * directly. (A small bitmap is one whose metrics and dimensions all fit + * into 8-bit integers). + * + * We hope to also provide a kerning cache in the near future. + * + * + * @order: + * FTC_Manager + * FTC_FaceID + * FTC_Face_Requester + * + * FTC_Manager_New + * FTC_Manager_Reset + * FTC_Manager_Done + * FTC_Manager_LookupFace + * FTC_Manager_LookupSize + * FTC_Manager_RemoveFaceID + * + * FTC_Node + * FTC_Node_Unref + * + * FTC_ImageCache + * FTC_ImageCache_New + * FTC_ImageCache_Lookup + * + * FTC_SBit + * FTC_SBitCache + * FTC_SBitCache_New + * FTC_SBitCache_Lookup + * + * FTC_CMapCache + * FTC_CMapCache_New + * FTC_CMapCache_Lookup + * + *************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** BASIC TYPE DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @type: + * FTC_FaceID + * + * @description: + * An opaque pointer type that is used to identity face objects. The + * contents of such objects is application-dependent. + * + * These pointers are typically used to point to a user-defined structure + * containing a font file path, and face index. + * + * @note: + * Never use `NULL` as a valid @FTC_FaceID. + * + * Face IDs are passed by the client to the cache manager that calls, + * when needed, the @FTC_Face_Requester to translate them into new + * @FT_Face objects. + * + * If the content of a given face ID changes at runtime, or if the value + * becomes invalid (e.g., when uninstalling a font), you should + * immediately call @FTC_Manager_RemoveFaceID before any other cache + * function. + * + * Failure to do so will result in incorrect behaviour or even memory + * leaks and crashes. + */ + typedef FT_Pointer FTC_FaceID; + + + /************************************************************************** + * + * @functype: + * FTC_Face_Requester + * + * @description: + * A callback function provided by client applications. It is used by + * the cache manager to translate a given @FTC_FaceID into a new valid + * @FT_Face object, on demand. + * + * @input: + * face_id :: + * The face ID to resolve. + * + * library :: + * A handle to a FreeType library object. + * + * req_data :: + * Application-provided request data (see note below). + * + * @output: + * aface :: + * A new @FT_Face handle. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The third parameter `req_data` is the same as the one passed by the + * client when @FTC_Manager_New is called. + * + * The face requester should not perform funny things on the returned + * face object, like creating a new @FT_Size for it, or setting a + * transformation through @FT_Set_Transform! + */ + typedef FT_Error + (*FTC_Face_Requester)( FTC_FaceID face_id, + FT_Library library, + FT_Pointer req_data, + FT_Face* aface ); + + /* */ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE MANAGER OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @type: + * FTC_Manager + * + * @description: + * This object corresponds to one instance of the cache-subsystem. It is + * used to cache one or more @FT_Face objects, along with corresponding + * @FT_Size objects. + * + * The manager intentionally limits the total number of opened @FT_Face + * and @FT_Size objects to control memory usage. See the `max_faces` and + * `max_sizes` parameters of @FTC_Manager_New. + * + * The manager is also used to cache 'nodes' of various types while + * limiting their total memory usage. + * + * All limitations are enforced by keeping lists of managed objects in + * most-recently-used order, and flushing old nodes to make room for new + * ones. + */ + typedef struct FTC_ManagerRec_* FTC_Manager; + + + /************************************************************************** + * + * @type: + * FTC_Node + * + * @description: + * An opaque handle to a cache node object. Each cache node is + * reference-counted. A node with a count of~0 might be flushed out of a + * full cache whenever a lookup request is performed. + * + * If you look up nodes, you have the ability to 'acquire' them, i.e., to + * increment their reference count. This will prevent the node from + * being flushed out of the cache until you explicitly 'release' it (see + * @FTC_Node_Unref). + * + * See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. + */ + typedef struct FTC_NodeRec_* FTC_Node; + + + /************************************************************************** + * + * @function: + * FTC_Manager_New + * + * @description: + * Create a new cache manager. + * + * @input: + * library :: + * The parent FreeType library handle to use. + * + * max_faces :: + * Maximum number of opened @FT_Face objects managed by this cache + * instance. Use~0 for defaults. + * + * max_sizes :: + * Maximum number of opened @FT_Size objects managed by this cache + * instance. Use~0 for defaults. + * + * max_bytes :: + * Maximum number of bytes to use for cached data nodes. Use~0 for + * defaults. Note that this value does not account for managed + * @FT_Face and @FT_Size objects. + * + * requester :: + * An application-provided callback used to translate face IDs into + * real @FT_Face objects. + * + * req_data :: + * A generic pointer that is passed to the requester each time it is + * called (see @FTC_Face_Requester). + * + * @output: + * amanager :: + * A handle to a new manager object. 0~in case of failure. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FTC_Manager_New( FT_Library library, + FT_UInt max_faces, + FT_UInt max_sizes, + FT_ULong max_bytes, + FTC_Face_Requester requester, + FT_Pointer req_data, + FTC_Manager *amanager ); + + + /************************************************************************** + * + * @function: + * FTC_Manager_Reset + * + * @description: + * Empty a given cache manager. This simply gets rid of all the + * currently cached @FT_Face and @FT_Size objects within the manager. + * + * @inout: + * manager :: + * A handle to the manager. + */ + FT_EXPORT( void ) + FTC_Manager_Reset( FTC_Manager manager ); + + + /************************************************************************** + * + * @function: + * FTC_Manager_Done + * + * @description: + * Destroy a given manager after emptying it. + * + * @input: + * manager :: + * A handle to the target cache manager object. + */ + FT_EXPORT( void ) + FTC_Manager_Done( FTC_Manager manager ); + + + /************************************************************************** + * + * @function: + * FTC_Manager_LookupFace + * + * @description: + * Retrieve the @FT_Face object that corresponds to a given face ID + * through a cache manager. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * face_id :: + * The ID of the face object. + * + * @output: + * aface :: + * A handle to the face object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The returned @FT_Face object is always owned by the manager. You + * should never try to discard it yourself. + * + * The @FT_Face object doesn't necessarily have a current size object + * (i.e., face->size can be~0). If you need a specific 'font size', use + * @FTC_Manager_LookupSize instead. + * + * Never change the face's transformation matrix (i.e., never call the + * @FT_Set_Transform function) on a returned face! If you need to + * transform glyphs, do it yourself after glyph loading. + * + * When you perform a lookup, out-of-memory errors are detected _within_ + * the lookup and force incremental flushes of the cache until enough + * memory is released for the lookup to succeed. + * + * If a lookup fails with `FT_Err_Out_Of_Memory` the cache has already + * been completely flushed, and still no memory was available for the + * operation. + */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupFace( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ); + + + /************************************************************************** + * + * @struct: + * FTC_ScalerRec + * + * @description: + * A structure used to describe a given character size in either pixels + * or points to the cache manager. See @FTC_Manager_LookupSize. + * + * @fields: + * face_id :: + * The source face ID. + * + * width :: + * The character width. + * + * height :: + * The character height. + * + * pixel :: + * A Boolean. If 1, the `width` and `height` fields are interpreted as + * integer pixel character sizes. Otherwise, they are expressed as + * 1/64th of points. + * + * x_res :: + * Only used when `pixel` is value~0 to indicate the horizontal + * resolution in dpi. + * + * y_res :: + * Only used when `pixel` is value~0 to indicate the vertical + * resolution in dpi. + * + * @note: + * This type is mainly used to retrieve @FT_Size objects through the + * cache manager. + */ + typedef struct FTC_ScalerRec_ + { + FTC_FaceID face_id; + FT_UInt width; + FT_UInt height; + FT_Int pixel; + FT_UInt x_res; + FT_UInt y_res; + + } FTC_ScalerRec; + + + /************************************************************************** + * + * @struct: + * FTC_Scaler + * + * @description: + * A handle to an @FTC_ScalerRec structure. + */ + typedef struct FTC_ScalerRec_* FTC_Scaler; + + + /************************************************************************** + * + * @function: + * FTC_Manager_LookupSize + * + * @description: + * Retrieve the @FT_Size object that corresponds to a given + * @FTC_ScalerRec pointer through a cache manager. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * scaler :: + * A scaler handle. + * + * @output: + * asize :: + * A handle to the size object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The returned @FT_Size object is always owned by the manager. You + * should never try to discard it by yourself. + * + * You can access the parent @FT_Face object simply as `size->face` if + * you need it. Note that this object is also owned by the manager. + * + * @note: + * When you perform a lookup, out-of-memory errors are detected _within_ + * the lookup and force incremental flushes of the cache until enough + * memory is released for the lookup to succeed. + * + * If a lookup fails with `FT_Err_Out_Of_Memory` the cache has already + * been completely flushed, and still no memory is available for the + * operation. + */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupSize( FTC_Manager manager, + FTC_Scaler scaler, + FT_Size *asize ); + + + /************************************************************************** + * + * @function: + * FTC_Node_Unref + * + * @description: + * Decrement a cache node's internal reference count. When the count + * reaches 0, it is not destroyed but becomes eligible for subsequent + * cache flushes. + * + * @input: + * node :: + * The cache node handle. + * + * manager :: + * The cache manager handle. + */ + FT_EXPORT( void ) + FTC_Node_Unref( FTC_Node node, + FTC_Manager manager ); + + + /************************************************************************** + * + * @function: + * FTC_Manager_RemoveFaceID + * + * @description: + * A special function used to indicate to the cache manager that a given + * @FTC_FaceID is no longer valid, either because its content changed, or + * because it was deallocated or uninstalled. + * + * @input: + * manager :: + * The cache manager handle. + * + * face_id :: + * The @FTC_FaceID to be removed. + * + * @note: + * This function flushes all nodes from the cache corresponding to this + * `face_id`, with the exception of nodes with a non-null reference + * count. + * + * Such nodes are however modified internally so as to never appear in + * later lookups with the same `face_id` value, and to be immediately + * destroyed when released by all their users. + * + */ + FT_EXPORT( void ) + FTC_Manager_RemoveFaceID( FTC_Manager manager, + FTC_FaceID face_id ); + + + /************************************************************************** + * + * @type: + * FTC_CMapCache + * + * @description: + * An opaque handle used to model a charmap cache. This cache is to hold + * character codes -> glyph indices mappings. + * + */ + typedef struct FTC_CMapCacheRec_* FTC_CMapCache; + + + /************************************************************************** + * + * @function: + * FTC_CMapCache_New + * + * @description: + * Create a new charmap cache. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * @output: + * acache :: + * A new cache handle. `NULL` in case of error. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Like all other caches, this one will be destroyed with the cache + * manager. + * + */ + FT_EXPORT( FT_Error ) + FTC_CMapCache_New( FTC_Manager manager, + FTC_CMapCache *acache ); + + + /************************************************************************** + * + * @function: + * FTC_CMapCache_Lookup + * + * @description: + * Translate a character code into a glyph index, using the charmap + * cache. + * + * @input: + * cache :: + * A charmap cache handle. + * + * face_id :: + * The source face ID. + * + * cmap_index :: + * The index of the charmap in the source face. Any negative value + * means to use the cache @FT_Face's default charmap. + * + * char_code :: + * The character code (in the corresponding charmap). + * + * @return: + * Glyph index. 0~means 'no glyph'. + * + */ + FT_EXPORT( FT_UInt ) + FTC_CMapCache_Lookup( FTC_CMapCache cache, + FTC_FaceID face_id, + FT_Int cmap_index, + FT_UInt32 char_code ); + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** IMAGE CACHE OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @struct: + * FTC_ImageTypeRec + * + * @description: + * A structure used to model the type of images in a glyph cache. + * + * @fields: + * face_id :: + * The face ID. + * + * width :: + * The width in pixels. + * + * height :: + * The height in pixels. + * + * flags :: + * The load flags, as in @FT_Load_Glyph. + * + */ + typedef struct FTC_ImageTypeRec_ + { + FTC_FaceID face_id; + FT_UInt width; + FT_UInt height; + FT_Int32 flags; + + } FTC_ImageTypeRec; + + + /************************************************************************** + * + * @type: + * FTC_ImageType + * + * @description: + * A handle to an @FTC_ImageTypeRec structure. + * + */ + typedef struct FTC_ImageTypeRec_* FTC_ImageType; + + + /* */ + + +#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ + ( (d1)->face_id == (d2)->face_id && \ + (d1)->width == (d2)->width && \ + (d1)->flags == (d2)->flags ) + + + /************************************************************************** + * + * @type: + * FTC_ImageCache + * + * @description: + * A handle to a glyph image cache object. They are designed to hold + * many distinct glyph images while not exceeding a certain memory + * threshold. + */ + typedef struct FTC_ImageCacheRec_* FTC_ImageCache; + + + /************************************************************************** + * + * @function: + * FTC_ImageCache_New + * + * @description: + * Create a new glyph image cache. + * + * @input: + * manager :: + * The parent manager for the image cache. + * + * @output: + * acache :: + * A handle to the new glyph image cache object. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_New( FTC_Manager manager, + FTC_ImageCache *acache ); + + + /************************************************************************** + * + * @function: + * FTC_ImageCache_Lookup + * + * @description: + * Retrieve a given glyph image from a glyph image cache. + * + * @input: + * cache :: + * A handle to the source glyph image cache. + * + * type :: + * A pointer to a glyph image type descriptor. + * + * gindex :: + * The glyph index to retrieve. + * + * @output: + * aglyph :: + * The corresponding @FT_Glyph object. 0~in case of failure. + * + * anode :: + * Used to return the address of the corresponding cache node after + * incrementing its reference count (see note below). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The returned glyph is owned and managed by the glyph image cache. + * Never try to transform or discard it manually! You can however create + * a copy with @FT_Glyph_Copy and modify the new one. + * + * If `anode` is _not_ `NULL`, it receives the address of the cache node + * containing the glyph image, after increasing its reference count. + * This ensures that the node (as well as the @FT_Glyph) will always be + * kept in the cache until you call @FTC_Node_Unref to 'release' it. + * + * If `anode` is `NULL`, the cache node is left unchanged, which means + * that the @FT_Glyph could be flushed out of the cache on the next call + * to one of the caching sub-system APIs. Don't assume that it is + * persistent! + */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_Lookup( FTC_ImageCache cache, + FTC_ImageType type, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /************************************************************************** + * + * @function: + * FTC_ImageCache_LookupScaler + * + * @description: + * A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec to + * specify the face ID and its size. + * + * @input: + * cache :: + * A handle to the source glyph image cache. + * + * scaler :: + * A pointer to a scaler descriptor. + * + * load_flags :: + * The corresponding load flags. + * + * gindex :: + * The glyph index to retrieve. + * + * @output: + * aglyph :: + * The corresponding @FT_Glyph object. 0~in case of failure. + * + * anode :: + * Used to return the address of the corresponding cache node after + * incrementing its reference count (see note below). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The returned glyph is owned and managed by the glyph image cache. + * Never try to transform or discard it manually! You can however create + * a copy with @FT_Glyph_Copy and modify the new one. + * + * If `anode` is _not_ `NULL`, it receives the address of the cache node + * containing the glyph image, after increasing its reference count. + * This ensures that the node (as well as the @FT_Glyph) will always be + * kept in the cache until you call @FTC_Node_Unref to 'release' it. + * + * If `anode` is `NULL`, the cache node is left unchanged, which means + * that the @FT_Glyph could be flushed out of the cache on the next call + * to one of the caching sub-system APIs. Don't assume that it is + * persistent! + * + * Calls to @FT_Set_Char_Size and friends have no effect on cached + * glyphs; you should always use the FreeType cache API instead. + */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_LookupScaler( FTC_ImageCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /************************************************************************** + * + * @type: + * FTC_SBit + * + * @description: + * A handle to a small bitmap descriptor. See the @FTC_SBitRec structure + * for details. + */ + typedef struct FTC_SBitRec_* FTC_SBit; + + + /************************************************************************** + * + * @struct: + * FTC_SBitRec + * + * @description: + * A very compact structure used to describe a small glyph bitmap. + * + * @fields: + * width :: + * The bitmap width in pixels. + * + * height :: + * The bitmap height in pixels. + * + * left :: + * The horizontal distance from the pen position to the left bitmap + * border (a.k.a. 'left side bearing', or 'lsb'). + * + * top :: + * The vertical distance from the pen position (on the baseline) to the + * upper bitmap border (a.k.a. 'top side bearing'). The distance is + * positive for upwards y~coordinates. + * + * format :: + * The format of the glyph bitmap (monochrome or gray). + * + * max_grays :: + * Maximum gray level value (in the range 1 to~255). + * + * pitch :: + * The number of bytes per bitmap line. May be positive or negative. + * + * xadvance :: + * The horizontal advance width in pixels. + * + * yadvance :: + * The vertical advance height in pixels. + * + * buffer :: + * A pointer to the bitmap pixels. + */ + typedef struct FTC_SBitRec_ + { + FT_Byte width; + FT_Byte height; + FT_Char left; + FT_Char top; + + FT_Byte format; + FT_Byte max_grays; + FT_Short pitch; + FT_Char xadvance; + FT_Char yadvance; + + FT_Byte* buffer; + + } FTC_SBitRec; + + + /************************************************************************** + * + * @type: + * FTC_SBitCache + * + * @description: + * A handle to a small bitmap cache. These are special cache objects + * used to store small glyph bitmaps (and anti-aliased pixmaps) in a much + * more efficient way than the traditional glyph image cache implemented + * by @FTC_ImageCache. + */ + typedef struct FTC_SBitCacheRec_* FTC_SBitCache; + + + /************************************************************************** + * + * @function: + * FTC_SBitCache_New + * + * @description: + * Create a new cache to store small glyph bitmaps. + * + * @input: + * manager :: + * A handle to the source cache manager. + * + * @output: + * acache :: + * A handle to the new sbit cache. `NULL` in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_New( FTC_Manager manager, + FTC_SBitCache *acache ); + + + /************************************************************************** + * + * @function: + * FTC_SBitCache_Lookup + * + * @description: + * Look up a given small glyph bitmap in a given sbit cache and 'lock' it + * to prevent its flushing from the cache until needed. + * + * @input: + * cache :: + * A handle to the source sbit cache. + * + * type :: + * A pointer to the glyph image type descriptor. + * + * gindex :: + * The glyph index. + * + * @output: + * sbit :: + * A handle to a small bitmap descriptor. + * + * anode :: + * Used to return the address of the corresponding cache node after + * incrementing its reference count (see note below). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The small bitmap descriptor and its bit buffer are owned by the cache + * and should never be freed by the application. They might as well + * disappear from memory on the next cache lookup, so don't treat them as + * persistent data. + * + * The descriptor's `buffer` field is set to~0 to indicate a missing + * glyph bitmap. + * + * If `anode` is _not_ `NULL`, it receives the address of the cache node + * containing the bitmap, after increasing its reference count. This + * ensures that the node (as well as the image) will always be kept in + * the cache until you call @FTC_Node_Unref to 'release' it. + * + * If `anode` is `NULL`, the cache node is left unchanged, which means + * that the bitmap could be flushed out of the cache on the next call to + * one of the caching sub-system APIs. Don't assume that it is + * persistent! + */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_Lookup( FTC_SBitCache cache, + FTC_ImageType type, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + + /************************************************************************** + * + * @function: + * FTC_SBitCache_LookupScaler + * + * @description: + * A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec to + * specify the face ID and its size. + * + * @input: + * cache :: + * A handle to the source sbit cache. + * + * scaler :: + * A pointer to the scaler descriptor. + * + * load_flags :: + * The corresponding load flags. + * + * gindex :: + * The glyph index. + * + * @output: + * sbit :: + * A handle to a small bitmap descriptor. + * + * anode :: + * Used to return the address of the corresponding cache node after + * incrementing its reference count (see note below). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The small bitmap descriptor and its bit buffer are owned by the cache + * and should never be freed by the application. They might as well + * disappear from memory on the next cache lookup, so don't treat them as + * persistent data. + * + * The descriptor's `buffer` field is set to~0 to indicate a missing + * glyph bitmap. + * + * If `anode` is _not_ `NULL`, it receives the address of the cache node + * containing the bitmap, after increasing its reference count. This + * ensures that the node (as well as the image) will always be kept in + * the cache until you call @FTC_Node_Unref to 'release' it. + * + * If `anode` is `NULL`, the cache node is left unchanged, which means + * that the bitmap could be flushed out of the cache on the next call to + * one of the caching sub-system APIs. Don't assume that it is + * persistent! + */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_LookupScaler( FTC_SBitCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + /* */ + + +FT_END_HEADER + +#endif /* FTCACHE_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftchapters.h b/CMU462/deps/freetype/include/freetype/ftchapters.h new file mode 100644 index 0000000..2ee2697 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftchapters.h @@ -0,0 +1,145 @@ +/**************************************************************************** + * + * This file defines the structure of the FreeType reference. + * It is used by the python script that generates the HTML files. + * + */ + + + /************************************************************************** + * + * @chapter: + * general_remarks + * + * @title: + * General Remarks + * + * @sections: + * header_inclusion + * user_allocation + * + */ + + + /************************************************************************** + * + * @chapter: + * core_api + * + * @title: + * Core API + * + * @sections: + * version + * basic_types + * base_interface + * glyph_variants + * color_management + * layer_management + * glyph_management + * mac_specific + * sizes_management + * header_file_macros + * + */ + + + /************************************************************************** + * + * @chapter: + * format_specific + * + * @title: + * Format-Specific API + * + * @sections: + * multiple_masters + * truetype_tables + * type1_tables + * sfnt_names + * bdf_fonts + * cid_fonts + * pfr_fonts + * winfnt_fonts + * font_formats + * gasp_table + * + */ + + + /************************************************************************** + * + * @chapter: + * module_specific + * + * @title: + * Controlling FreeType Modules + * + * @sections: + * auto_hinter + * cff_driver + * t1_cid_driver + * tt_driver + * pcf_driver + * properties + * parameter_tags + * lcd_rendering + * + */ + + + /************************************************************************** + * + * @chapter: + * cache_subsystem + * + * @title: + * Cache Sub-System + * + * @sections: + * cache_subsystem + * + */ + + + /************************************************************************** + * + * @chapter: + * support_api + * + * @title: + * Support API + * + * @sections: + * computations + * list_processing + * outline_processing + * quick_advance + * bitmap_handling + * raster + * glyph_stroker + * system_interface + * module_management + * gzip + * lzw + * bzip2 + * + */ + + + /************************************************************************** + * + * @chapter: + * error_codes + * + * @title: + * Error Codes + * + * @sections: + * error_enumerations + * error_code_values + * + */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftcid.h b/CMU462/deps/freetype/include/freetype/ftcid.h new file mode 100644 index 0000000..8eafc1c --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftcid.h @@ -0,0 +1,168 @@ +/**************************************************************************** + * + * ftcid.h + * + * FreeType API for accessing CID font information (specification). + * + * Copyright (C) 2007-2019 by + * Dereg Clegg and Michael Toftdal. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTCID_H_ +#define FTCID_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * cid_fonts + * + * @title: + * CID Fonts + * + * @abstract: + * CID-keyed font-specific API. + * + * @description: + * This section contains the declaration of CID-keyed font-specific + * functions. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Get_CID_Registry_Ordering_Supplement + * + * @description: + * Retrieve the Registry/Ordering/Supplement triple (also known as the + * "R/O/S") from a CID-keyed font. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * registry :: + * The registry, as a C~string, owned by the face. + * + * ordering :: + * The ordering, as a C~string, owned by the face. + * + * supplement :: + * The supplement. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces, returning an error + * otherwise. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Registry_Ordering_Supplement( FT_Face face, + const char* *registry, + const char* *ordering, + FT_Int *supplement ); + + + /************************************************************************** + * + * @function: + * FT_Get_CID_Is_Internally_CID_Keyed + * + * @description: + * Retrieve the type of the input face, CID keyed or not. In contrast + * to the @FT_IS_CID_KEYED macro this function returns successfully also + * for CID-keyed fonts in an SFNT wrapper. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * is_cid :: + * The type of the face as an @FT_Bool. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, returning + * an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, + FT_Bool *is_cid ); + + + /************************************************************************** + * + * @function: + * FT_Get_CID_From_Glyph_Index + * + * @description: + * Retrieve the CID of the input glyph index. + * + * @input: + * face :: + * A handle to the input face. + * + * glyph_index :: + * The input glyph index. + * + * @output: + * cid :: + * The CID as an @FT_UInt. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, returning + * an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_From_Glyph_Index( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + + /* */ + + +FT_END_HEADER + +#endif /* FTCID_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftcolor.h b/CMU462/deps/freetype/include/freetype/ftcolor.h new file mode 100644 index 0000000..cf18021 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftcolor.h @@ -0,0 +1,311 @@ +/**************************************************************************** + * + * ftcolor.h + * + * FreeType's glyph color management (specification). + * + * Copyright (C) 2018-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTCOLOR_H_ +#define FTCOLOR_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * color_management + * + * @title: + * Glyph Color Management + * + * @abstract: + * Retrieving and manipulating OpenType's 'CPAL' table data. + * + * @description: + * The functions described here allow access and manipulation of color + * palette entries in OpenType's 'CPAL' tables. + */ + + + /************************************************************************** + * + * @struct: + * FT_Color + * + * @description: + * This structure models a BGRA color value of a 'CPAL' palette entry. + * + * The used color space is sRGB; the colors are not pre-multiplied, and + * alpha values must be explicitly set. + * + * @fields: + * blue :: + * Blue value. + * + * green :: + * Green value. + * + * red :: + * Red value. + * + * alpha :: + * Alpha value, giving the red, green, and blue color's opacity. + * + * @since: + * 2.10 + */ + typedef struct FT_Color_ + { + FT_Byte blue; + FT_Byte green; + FT_Byte red; + FT_Byte alpha; + + } FT_Color; + + + /************************************************************************** + * + * @enum: + * FT_PALETTE_XXX + * + * @description: + * A list of bit field constants used in the `palette_flags` array of the + * @FT_Palette_Data structure to indicate for which background a palette + * with a given index is usable. + * + * @values: + * FT_PALETTE_FOR_LIGHT_BACKGROUND :: + * The palette is appropriate to use when displaying the font on a + * light background such as white. + * + * FT_PALETTE_FOR_DARK_BACKGROUND :: + * The palette is appropriate to use when displaying the font on a dark + * background such as black. + * + * @since: + * 2.10 + */ +#define FT_PALETTE_FOR_LIGHT_BACKGROUND 0x01 +#define FT_PALETTE_FOR_DARK_BACKGROUND 0x02 + + + /************************************************************************** + * + * @struct: + * FT_Palette_Data + * + * @description: + * This structure holds the data of the 'CPAL' table. + * + * @fields: + * num_palettes :: + * The number of palettes. + * + * palette_name_ids :: + * A read-only array of palette name IDs with `num_palettes` elements, + * corresponding to entries like 'dark' or 'light' in the font's 'name' + * table. + * + * An empty name ID in the 'CPAL' table gets represented as value + * 0xFFFF. + * + * `NULL` if the font's 'CPAL' table doesn't contain appropriate data. + * + * palette_flags :: + * A read-only array of palette flags with `num_palettes` elements. + * Possible values are an ORed combination of + * @FT_PALETTE_FOR_LIGHT_BACKGROUND and + * @FT_PALETTE_FOR_DARK_BACKGROUND. + * + * `NULL` if the font's 'CPAL' table doesn't contain appropriate data. + * + * num_palette_entries :: + * The number of entries in a single palette. All palettes have the + * same size. + * + * palette_entry_name_ids :: + * A read-only array of palette entry name IDs with + * `num_palette_entries`. In each palette, entries with the same index + * have the same function. For example, index~0 might correspond to + * string 'outline' in the font's 'name' table to indicate that this + * palette entry is used for outlines, index~1 might correspond to + * 'fill' to indicate the filling color palette entry, etc. + * + * An empty entry name ID in the 'CPAL' table gets represented as value + * 0xFFFF. + * + * `NULL` if the font's 'CPAL' table doesn't contain appropriate data. + * + * @note: + * Use function @FT_Get_Sfnt_Name to map name IDs and entry name IDs to + * name strings. + * + * @since: + * 2.10 + */ + typedef struct FT_Palette_Data_ { + FT_UShort num_palettes; + const FT_UShort* palette_name_ids; + const FT_UShort* palette_flags; + + FT_UShort num_palette_entries; + const FT_UShort* palette_entry_name_ids; + + } FT_Palette_Data; + + + /************************************************************************** + * + * @function: + * FT_Palette_Data_Get + * + * @description: + * Retrieve the face's color palette data. + * + * @input: + * face :: + * The source face handle. + * + * @output: + * apalette :: + * A pointer to an @FT_Palette_Data structure. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * All arrays in the returned @FT_Palette_Data structure are read-only. + * + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Palette_Data_Get( FT_Face face, + FT_Palette_Data *apalette ); + + + /************************************************************************** + * + * @function: + * FT_Palette_Select + * + * @description: + * This function has two purposes. + * + * (1) It activates a palette for rendering color glyphs, and + * + * (2) it retrieves all (unmodified) color entries of this palette. This + * function returns a read-write array, which means that a calling + * application can modify the palette entries on demand. + * + * A corollary of (2) is that calling the function, then modifying some + * values, then calling the function again with the same arguments resets + * all color entries to the original 'CPAL' values; all user modifications + * are lost. + * + * @input: + * face :: + * The source face handle. + * + * palette_index :: + * The palette index. + * + * @output: + * apalette :: + * An array of color entries for a palette with index `palette_index`, + * having `num_palette_entries` elements (as found in the + * `FT_Palette_Data` structure). If `apalette` is set to `NULL`, no + * array gets returned (and no color entries can be modified). + * + * In case the font doesn't support color palettes, `NULL` is returned. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The array pointed to by `apalette_entries` is owned and managed by + * FreeType. + * + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Palette_Select( FT_Face face, + FT_UShort palette_index, + FT_Color* *apalette ); + + + /************************************************************************** + * + * @function: + * FT_Palette_Set_Foreground_Color + * + * @description: + * 'COLR' uses palette index 0xFFFF to indicate a 'text foreground + * color'. This function sets this value. + * + * @input: + * face :: + * The source face handle. + * + * foreground_color :: + * An `FT_Color` structure to define the text foreground color. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If this function isn't called, the text foreground color is set to + * white opaque (BGRA value 0xFFFFFFFF) if + * @FT_PALETTE_FOR_DARK_BACKGROUND is present for the current palette, + * and black opaque (BGRA value 0x000000FF) otherwise, including the case + * that no palette types are available in the 'CPAL' table. + * + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Palette_Set_Foreground_Color( FT_Face face, + FT_Color foreground_color ); + + /* */ + + +FT_END_HEADER + +#endif /* FTCOLOR_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftdriver.h b/CMU462/deps/freetype/include/freetype/ftdriver.h new file mode 100644 index 0000000..497bde9 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftdriver.h @@ -0,0 +1,1232 @@ +/**************************************************************************** + * + * ftdriver.h + * + * FreeType API for controlling driver modules (specification only). + * + * Copyright (C) 2017-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTDRIVER_H_ +#define FTDRIVER_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_PARAMETER_TAGS_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * auto_hinter + * + * @title: + * The auto-hinter + * + * @abstract: + * Controlling the auto-hinting module. + * + * @description: + * While FreeType's auto-hinter doesn't expose API functions by itself, + * it is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * Note that the auto-hinter's module name is 'autofitter' for historical + * reasons. + * + * Available properties are @increase-x-height, @no-stem-darkening + * (experimental), @darkening-parameters (experimental), @warping + * (experimental), @glyph-to-script-map (experimental), @fallback-script + * (experimental), and @default-script (experimental), as documented in + * the @properties section. + * + */ + + + /************************************************************************** + * + * @section: + * cff_driver + * + * @title: + * The CFF driver + * + * @abstract: + * Controlling the CFF driver module. + * + * @description: + * While FreeType's CFF driver doesn't expose API functions by itself, it + * is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. + * + * The CFF driver's module name is 'cff'. + * + * Available properties are @hinting-engine, @no-stem-darkening, + * @darkening-parameters, and @random-seed, as documented in the + * @properties section. + * + * + * **Hinting and antialiasing principles of the new engine** + * + * The rasterizer is positioning horizontal features (e.g., ascender + * height & x-height, or crossbars) on the pixel grid and minimizing the + * amount of antialiasing applied to them, while placing vertical + * features (vertical stems) on the pixel grid without hinting, thus + * representing the stem position and weight accurately. Sometimes the + * vertical stems may be only partially black. In this context, + * 'antialiasing' means that stems are not positioned exactly on pixel + * borders, causing a fuzzy appearance. + * + * There are two principles behind this approach. + * + * 1) No hinting in the horizontal direction: Unlike 'superhinted' + * TrueType, which changes glyph widths to accommodate regular + * inter-glyph spacing, Adobe's approach is 'faithful to the design' in + * representing both the glyph width and the inter-glyph spacing designed + * for the font. This makes the screen display as close as it can be to + * the result one would get with infinite resolution, while preserving + * what is considered the key characteristics of each glyph. Note that + * the distances between unhinted and grid-fitted positions at small + * sizes are comparable to kerning values and thus would be noticeable + * (and distracting) while reading if hinting were applied. + * + * One of the reasons to not hint horizontally is antialiasing for LCD + * screens: The pixel geometry of modern displays supplies three vertical + * subpixels as the eye moves horizontally across each visible pixel. On + * devices where we can be certain this characteristic is present a + * rasterizer can take advantage of the subpixels to add increments of + * weight. In Western writing systems this turns out to be the more + * critical direction anyway; the weights and spacing of vertical stems + * (see above) are central to Armenian, Cyrillic, Greek, and Latin type + * designs. Even when the rasterizer uses greyscale antialiasing instead + * of color (a necessary compromise when one doesn't know the screen + * characteristics), the unhinted vertical features preserve the design's + * weight and spacing much better than aliased type would. + * + * 2) Alignment in the vertical direction: Weights and spacing along the + * y~axis are less critical; what is much more important is the visual + * alignment of related features (like cap-height and x-height). The + * sense of alignment for these is enhanced by the sharpness of grid-fit + * edges, while the cruder vertical resolution (full pixels instead of + * 1/3 pixels) is less of a problem. + * + * On the technical side, horizontal alignment zones for ascender, + * x-height, and other important height values (traditionally called + * 'blue zones') as defined in the font are positioned independently, + * each being rounded to the nearest pixel edge, taking care of overshoot + * suppression at small sizes, stem darkening, and scaling. + * + * Hstems (this is, hint values defined in the font to help align + * horizontal features) that fall within a blue zone are said to be + * 'captured' and are aligned to that zone. Uncaptured stems are moved + * in one of four ways, top edge up or down, bottom edge up or down. + * Unless there are conflicting hstems, the smallest movement is taken to + * minimize distortion. + * + */ + + + /************************************************************************** + * + * @section: + * pcf_driver + * + * @title: + * The PCF driver + * + * @abstract: + * Controlling the PCF driver module. + * + * @description: + * While FreeType's PCF driver doesn't expose API functions by itself, it + * is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. Right now, there is a single property + * @no-long-family-names available if FreeType is compiled with + * PCF_CONFIG_OPTION_LONG_FAMILY_NAMES. + * + * The PCF driver's module name is 'pcf'. + * + */ + + + /************************************************************************** + * + * @section: + * t1_cid_driver + * + * @title: + * The Type 1 and CID drivers + * + * @abstract: + * Controlling the Type~1 and CID driver modules. + * + * @description: + * It is possible to control the behaviour of FreeType's Type~1 and + * Type~1 CID drivers with @FT_Property_Set and @FT_Property_Get. + * + * Behind the scenes, both drivers use the Adobe CFF engine for hinting; + * however, the used properties must be specified separately. + * + * The Type~1 driver's module name is 'type1'; the CID driver's module + * name is 't1cid'. + * + * Available properties are @hinting-engine, @no-stem-darkening, + * @darkening-parameters, and @random-seed, as documented in the + * @properties section. + * + * Please see the @cff_driver section for more details on the new hinting + * engine. + * + */ + + + /************************************************************************** + * + * @section: + * tt_driver + * + * @title: + * The TrueType driver + * + * @abstract: + * Controlling the TrueType driver module. + * + * @description: + * While FreeType's TrueType driver doesn't expose API functions by + * itself, it is possible to control its behaviour with @FT_Property_Set + * and @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * The TrueType driver's module name is 'truetype'. + * + * A single property @interpreter-version is available, as documented in + * the @properties section. + * + * We start with a list of definitions, kindly provided by Greg + * Hitchcock. + * + * _Bi-Level Rendering_ + * + * Monochromatic rendering, exclusively used in the early days of + * TrueType by both Apple and Microsoft. Microsoft's GDI interface + * supported hinting of the right-side bearing point, such that the + * advance width could be non-linear. Most often this was done to + * achieve some level of glyph symmetry. To enable reasonable + * performance (e.g., not having to run hinting on all glyphs just to get + * the widths) there was a bit in the head table indicating if the side + * bearing was hinted, and additional tables, 'hdmx' and 'LTSH', to cache + * hinting widths across multiple sizes and device aspect ratios. + * + * _Font Smoothing_ + * + * Microsoft's GDI implementation of anti-aliasing. Not traditional + * anti-aliasing as the outlines were hinted before the sampling. The + * widths matched the bi-level rendering. + * + * _ClearType Rendering_ + * + * Technique that uses physical subpixels to improve rendering on LCD + * (and other) displays. Because of the higher resolution, many methods + * of improving symmetry in glyphs through hinting the right-side bearing + * were no longer necessary. This lead to what GDI calls 'natural + * widths' ClearType, see + * http://rastertragedy.com/RTRCh4.htm#Sec21. Since hinting + * has extra resolution, most non-linearity went away, but it is still + * possible for hints to change the advance widths in this mode. + * + * _ClearType Compatible Widths_ + * + * One of the earliest challenges with ClearType was allowing the + * implementation in GDI to be selected without requiring all UI and + * documents to reflow. To address this, a compatible method of + * rendering ClearType was added where the font hints are executed once + * to determine the width in bi-level rendering, and then re-run in + * ClearType, with the difference in widths being absorbed in the font + * hints for ClearType (mostly in the white space of hints); see + * http://rastertragedy.com/RTRCh4.htm#Sec20. Somewhat by + * definition, compatible width ClearType allows for non-linear widths, + * but only when the bi-level version has non-linear widths. + * + * _ClearType Subpixel Positioning_ + * + * One of the nice benefits of ClearType is the ability to more crisply + * display fractional widths; unfortunately, the GDI model of integer + * bitmaps did not support this. However, the WPF and Direct Write + * frameworks do support fractional widths. DWrite calls this 'natural + * mode', not to be confused with GDI's 'natural widths'. Subpixel + * positioning, in the current implementation of Direct Write, + * unfortunately does not support hinted advance widths, see + * http://rastertragedy.com/RTRCh4.htm#Sec22. Note that the + * TrueType interpreter fully allows the advance width to be adjusted in + * this mode, just the DWrite client will ignore those changes. + * + * _ClearType Backward Compatibility_ + * + * This is a set of exceptions made in the TrueType interpreter to + * minimize hinting techniques that were problematic with the extra + * resolution of ClearType; see + * http://rastertragedy.com/RTRCh4.htm#Sec1 and + * https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx. + * This technique is not to be confused with ClearType compatible widths. + * ClearType backward compatibility has no direct impact on changing + * advance widths, but there might be an indirect impact on disabling + * some deltas. This could be worked around in backward compatibility + * mode. + * + * _Native ClearType Mode_ + * + * (Not to be confused with 'natural widths'.) This mode removes all the + * exceptions in the TrueType interpreter when running with ClearType. + * Any issues on widths would still apply, though. + * + */ + + + /************************************************************************** + * + * @section: + * properties + * + * @title: + * Driver properties + * + * @abstract: + * Controlling driver modules. + * + * @description: + * Driver modules can be controlled by setting and unsetting properties, + * using the functions @FT_Property_Set and @FT_Property_Get. This + * section documents the available properties, together with auxiliary + * macros and structures. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_HINTING_XXX + * + * @description: + * A list of constants used for the @hinting-engine property to select + * the hinting engine for CFF, Type~1, and CID fonts. + * + * @values: + * FT_HINTING_FREETYPE :: + * Use the old FreeType hinting engine. + * + * FT_HINTING_ADOBE :: + * Use the hinting engine contributed by Adobe. + * + * @since: + * 2.9 + * + */ +#define FT_HINTING_FREETYPE 0 +#define FT_HINTING_ADOBE 1 + + /* these constants (introduced in 2.4.12) are deprecated */ +#define FT_CFF_HINTING_FREETYPE FT_HINTING_FREETYPE +#define FT_CFF_HINTING_ADOBE FT_HINTING_ADOBE + + + /************************************************************************** + * + * @property: + * hinting-engine + * + * @description: + * Thanks to Adobe, which contributed a new hinting (and parsing) engine, + * an application can select between 'freetype' and 'adobe' if compiled + * with `CFF_CONFIG_OPTION_OLD_ENGINE`. If this configuration macro + * isn't defined, 'hinting-engine' does nothing. + * + * The same holds for the Type~1 and CID modules if compiled with + * `T1_CONFIG_OPTION_OLD_ENGINE`. + * + * For the 'cff' module, the default engine is 'freetype' if + * `CFF_CONFIG_OPTION_OLD_ENGINE` is defined, and 'adobe' otherwise. + * + * For both the 'type1' and 't1cid' modules, the default engine is + * 'freetype' if `T1_CONFIG_OPTION_OLD_ENGINE` is defined, and 'adobe' + * otherwise. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable (using values 'adobe' or 'freetype'). + * + * @example: + * The following example code demonstrates how to select Adobe's hinting + * engine for the 'cff' module (omitting the error handling). + * + * ``` + * FT_Library library; + * FT_UInt hinting_engine = FT_HINTING_ADOBE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "hinting-engine", &hinting_engine ); + * ``` + * + * @since: + * 2.4.12 (for 'cff' module) + * + * 2.9 (for 'type1' and 't1cid' modules) + * + */ + + + /************************************************************************** + * + * @property: + * no-stem-darkening + * + * @description: + * All glyphs that pass through the auto-hinter will be emboldened unless + * this property is set to TRUE. The same is true for the CFF, Type~1, + * and CID font modules if the 'Adobe' engine is selected (which is the + * default). + * + * Stem darkening emboldens glyphs at smaller sizes to make them more + * readable on common low-DPI screens when using linear alpha blending + * and gamma correction, see @FT_Render_Glyph. When not using linear + * alpha blending and gamma correction, glyphs will appear heavy and + * fuzzy! + * + * Gamma correction essentially lightens fonts since shades of grey are + * shifted to higher pixel values (=~higher brightness) to match the + * original intention to the reality of our screens. The side-effect is + * that glyphs 'thin out'. Mac OS~X and Adobe's proprietary font + * rendering library implement a counter-measure: stem darkening at + * smaller sizes where shades of gray dominate. By emboldening a glyph + * slightly in relation to its pixel size, individual pixels get higher + * coverage of filled-in outlines and are therefore 'blacker'. This + * counteracts the 'thinning out' of glyphs, making text remain readable + * at smaller sizes. + * + * By default, the Adobe engines for CFF, Type~1, and CID fonts darken + * stems at smaller sizes, regardless of hinting, to enhance contrast. + * Setting this property, stem darkening gets switched off. + * + * For the auto-hinter, stem-darkening is experimental currently and thus + * switched off by default (this is, `no-stem-darkening` is set to TRUE + * by default). Total consistency with the CFF driver is not achieved + * right now because the emboldening method differs and glyphs must be + * scaled down on the Y-axis to keep outline points inside their + * precomputed blue zones. The smaller the size (especially 9ppem and + * down), the higher the loss of emboldening versus the CFF driver. + * + * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable (using values 1 and 0 for 'on' and 'off', respectively). It + * can also be set per face using @FT_Face_Properties with + * @FT_PARAM_TAG_STEM_DARKENING. + * + * @example: + * ``` + * FT_Library library; + * FT_Bool no_stem_darkening = TRUE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "no-stem-darkening", &no_stem_darkening ); + * ``` + * + * @since: + * 2.4.12 (for 'cff' module) + * + * 2.6.2 (for 'autofitter' module) + * + * 2.9 (for 'type1' and 't1cid' modules) + * + */ + + + /************************************************************************** + * + * @property: + * darkening-parameters + * + * @description: + * By default, the Adobe hinting engine, as used by the CFF, Type~1, and + * CID font drivers, darkens stems as follows (if the `no-stem-darkening` + * property isn't set): + * + * ``` + * stem width <= 0.5px: darkening amount = 0.4px + * stem width = 1px: darkening amount = 0.275px + * stem width = 1.667px: darkening amount = 0.275px + * stem width >= 2.333px: darkening amount = 0px + * ``` + * + * and piecewise linear in-between. At configuration time, these four + * control points can be set with the macro + * `CFF_CONFIG_OPTION_DARKENING_PARAMETERS`; the CFF, Type~1, and CID + * drivers share these values. At runtime, the control points can be + * changed using the `darkening-parameters` property (see the example + * below that demonstrates this for the Type~1 driver). + * + * The x~values give the stem width, and the y~values the darkening + * amount. The unit is 1000th of pixels. All coordinate values must be + * positive; the x~values must be monotonically increasing; the y~values + * must be monotonically decreasing and smaller than or equal to 500 + * (corresponding to half a pixel); the slope of each linear piece must + * be shallower than -1 (e.g., -.4). + * + * The auto-hinter provides this property, too, as an experimental + * feature. See @no-stem-darkening for more. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable, using eight comma-separated integers without spaces. Here + * the above example, using `\` to break the line for readability. + * + * ``` + * FREETYPE_PROPERTIES=\ + * type1:darkening-parameters=500,300,1000,200,1500,100,2000,0 + * ``` + * + * @example: + * ``` + * FT_Library library; + * FT_Int darken_params[8] = { 500, 300, // x1, y1 + * 1000, 200, // x2, y2 + * 1500, 100, // x3, y3 + * 2000, 0 }; // x4, y4 + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "type1", + * "darkening-parameters", darken_params ); + * ``` + * + * @since: + * 2.5.1 (for 'cff' module) + * + * 2.6.2 (for 'autofitter' module) + * + * 2.9 (for 'type1' and 't1cid' modules) + * + */ + + + /************************************************************************** + * + * @property: + * random-seed + * + * @description: + * By default, the seed value for the CFF 'random' operator and the + * similar '0 28 callothersubr pop' command for the Type~1 and CID + * drivers is set to a random value. However, mainly for debugging + * purposes, it is often necessary to use a known value as a seed so that + * the pseudo-random number sequences generated by 'random' are + * repeatable. + * + * The `random-seed` property does that. Its argument is a signed 32bit + * integer; if the value is zero or negative, the seed given by the + * `intitialRandomSeed` private DICT operator in a CFF file gets used (or + * a default value if there is no such operator). If the value is + * positive, use it instead of `initialRandomSeed`, which is consequently + * ignored. + * + * @note: + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable. It can also be set per face using @FT_Face_Properties with + * @FT_PARAM_TAG_RANDOM_SEED. + * + * @since: + * 2.8 (for 'cff' module) + * + * 2.9 (for 'type1' and 't1cid' modules) + * + */ + + + /************************************************************************** + * + * @property: + * no-long-family-names + * + * @description: + * If `PCF_CONFIG_OPTION_LONG_FAMILY_NAMES` is active while compiling + * FreeType, the PCF driver constructs long family names. + * + * There are many PCF fonts just called 'Fixed' which look completely + * different, and which have nothing to do with each other. When + * selecting 'Fixed' in KDE or Gnome one gets results that appear rather + * random, the style changes often if one changes the size and one cannot + * select some fonts at all. The improve this situation, the PCF module + * prepends the foundry name (plus a space) to the family name. It also + * checks whether there are 'wide' characters; all put together, family + * names like 'Sony Fixed' or 'Misc Fixed Wide' are constructed. + * + * If `no-long-family-names` is set, this feature gets switched off. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable (using values 1 and 0 for 'on' and 'off', respectively). + * + * @example: + * ``` + * FT_Library library; + * FT_Bool no_long_family_names = TRUE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "pcf", + * "no-long-family-names", + * &no_long_family_names ); + * ``` + * + * @since: + * 2.8 + */ + + + /************************************************************************** + * + * @enum: + * TT_INTERPRETER_VERSION_XXX + * + * @description: + * A list of constants used for the @interpreter-version property to + * select the hinting engine for Truetype fonts. + * + * The numeric value in the constant names represents the version number + * as returned by the 'GETINFO' bytecode instruction. + * + * @values: + * TT_INTERPRETER_VERSION_35 :: + * Version~35 corresponds to MS rasterizer v.1.7 as used e.g. in + * Windows~98; only grayscale and B/W rasterizing is supported. + * + * TT_INTERPRETER_VERSION_38 :: + * Version~38 corresponds to MS rasterizer v.1.9; it is roughly + * equivalent to the hinting provided by DirectWrite ClearType (as can + * be found, for example, in the Internet Explorer~9 running on + * Windows~7). It is used in FreeType to select the 'Infinality' + * subpixel hinting code. The code may be removed in a future version. + * + * TT_INTERPRETER_VERSION_40 :: + * Version~40 corresponds to MS rasterizer v.2.1; it is roughly + * equivalent to the hinting provided by DirectWrite ClearType (as can + * be found, for example, in Microsoft's Edge Browser on Windows~10). + * It is used in FreeType to select the 'minimal' subpixel hinting + * code, a stripped-down and higher performance version of the + * 'Infinality' code. + * + * @note: + * This property controls the behaviour of the bytecode interpreter and + * thus how outlines get hinted. It does **not** control how glyph get + * rasterized! In particular, it does not control subpixel color + * filtering. + * + * If FreeType has not been compiled with the configuration option + * `TT_CONFIG_OPTION_SUBPIXEL_HINTING`, selecting version~38 or~40 causes + * an `FT_Err_Unimplemented_Feature` error. + * + * Depending on the graphics framework, Microsoft uses different bytecode + * and rendering engines. As a consequence, the version numbers returned + * by a call to the 'GETINFO' bytecode instruction are more convoluted + * than desired. + * + * Here are two tables that try to shed some light on the possible values + * for the MS rasterizer engine, together with the additional features + * introduced by it. + * + * ``` + * GETINFO framework version feature + * ------------------------------------------------------------------- + * 3 GDI (Win 3.1), v1.0 16-bit, first version + * TrueImage + * 33 GDI (Win NT 3.1), v1.5 32-bit + * HP Laserjet + * 34 GDI (Win 95) v1.6 font smoothing, + * new SCANTYPE opcode + * 35 GDI (Win 98/2000) v1.7 (UN)SCALED_COMPONENT_OFFSET + * bits in composite glyphs + * 36 MGDI (Win CE 2) v1.6+ classic ClearType + * 37 GDI (XP and later), v1.8 ClearType + * GDI+ old (before Vista) + * 38 GDI+ old (Vista, Win 7), v1.9 subpixel ClearType, + * WPF Y-direction ClearType, + * additional error checking + * 39 DWrite (before Win 8) v2.0 subpixel ClearType flags + * in GETINFO opcode, + * bug fixes + * 40 GDI+ (after Win 7), v2.1 Y-direction ClearType flag + * DWrite (Win 8) in GETINFO opcode, + * Gray ClearType + * ``` + * + * The 'version' field gives a rough orientation only, since some + * applications provided certain features much earlier (as an example, + * Microsoft Reader used subpixel and Y-direction ClearType already in + * Windows 2000). Similarly, updates to a given framework might include + * improved hinting support. + * + * ``` + * version sampling rendering comment + * x y x y + * -------------------------------------------------------------- + * v1.0 normal normal B/W B/W bi-level + * v1.6 high high gray gray grayscale + * v1.8 high normal color-filter B/W (GDI) ClearType + * v1.9 high high color-filter gray Color ClearType + * v2.1 high normal gray B/W Gray ClearType + * v2.1 high high gray gray Gray ClearType + * ``` + * + * Color and Gray ClearType are the two available variants of + * 'Y-direction ClearType', meaning grayscale rasterization along the + * Y-direction; the name used in the TrueType specification for this + * feature is 'symmetric smoothing'. 'Classic ClearType' is the original + * algorithm used before introducing a modified version in Win~XP. + * Another name for v1.6's grayscale rendering is 'font smoothing', and + * 'Color ClearType' is sometimes also called 'DWrite ClearType'. To + * differentiate between today's Color ClearType and the earlier + * ClearType variant with B/W rendering along the vertical axis, the + * latter is sometimes called 'GDI ClearType'. + * + * 'Normal' and 'high' sampling describe the (virtual) resolution to + * access the rasterized outline after the hinting process. 'Normal' + * means 1 sample per grid line (i.e., B/W). In the current Microsoft + * implementation, 'high' means an extra virtual resolution of 16x16 (or + * 16x1) grid lines per pixel for bytecode instructions like 'MIRP'. + * After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid + * lines for color filtering if Color ClearType is activated. + * + * Note that 'Gray ClearType' is essentially the same as v1.6's grayscale + * rendering. However, the GETINFO instruction handles it differently: + * v1.6 returns bit~12 (hinting for grayscale), while v2.1 returns + * bits~13 (hinting for ClearType), 18 (symmetrical smoothing), and~19 + * (Gray ClearType). Also, this mode respects bits 2 and~3 for the + * version~1 gasp table exclusively (like Color ClearType), while v1.6 + * only respects the values of version~0 (bits 0 and~1). + * + * Keep in mind that the features of the above interpreter versions might + * not map exactly to FreeType features or behavior because it is a + * fundamentally different library with different internals. + * + */ +#define TT_INTERPRETER_VERSION_35 35 +#define TT_INTERPRETER_VERSION_38 38 +#define TT_INTERPRETER_VERSION_40 40 + + + /************************************************************************** + * + * @property: + * interpreter-version + * + * @description: + * Currently, three versions are available, two representing the bytecode + * interpreter with subpixel hinting support (old 'Infinality' code and + * new stripped-down and higher performance 'minimal' code) and one + * without, respectively. The default is subpixel support if + * `TT_CONFIG_OPTION_SUBPIXEL_HINTING` is defined, and no subpixel + * support otherwise (since it isn't available then). + * + * If subpixel hinting is on, many TrueType bytecode instructions behave + * differently compared to B/W or grayscale rendering (except if 'native + * ClearType' is selected by the font). Microsoft's main idea is to + * render at a much increased horizontal resolution, then sampling down + * the created output to subpixel precision. However, many older fonts + * are not suited to this and must be specially taken care of by applying + * (hardcoded) tweaks in Microsoft's interpreter. + * + * Details on subpixel hinting and some of the necessary tweaks can be + * found in Greg Hitchcock's whitepaper at + * 'https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. + * Note that FreeType currently doesn't really 'subpixel hint' (6x1, 6x2, + * or 6x5 supersampling) like discussed in the paper. Depending on the + * chosen interpreter, it simply ignores instructions on vertical stems + * to arrive at very similar results. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable (using values '35', '38', or '40'). + * + * @example: + * The following example code demonstrates how to deactivate subpixel + * hinting (omitting the error handling). + * + * ``` + * FT_Library library; + * FT_Face face; + * FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "truetype", + * "interpreter-version", + * &interpreter_version ); + * ``` + * + * @since: + * 2.5 + */ + + + /************************************************************************** + * + * @property: + * glyph-to-script-map + * + * @description: + * **Experimental only** + * + * The auto-hinter provides various script modules to hint glyphs. + * Examples of supported scripts are Latin or CJK. Before a glyph is + * auto-hinted, the Unicode character map of the font gets examined, and + * the script is then determined based on Unicode character ranges, see + * below. + * + * OpenType fonts, however, often provide much more glyphs than character + * codes (small caps, superscripts, ligatures, swashes, etc.), to be + * controlled by so-called 'features'. Handling OpenType features can be + * quite complicated and thus needs a separate library on top of + * FreeType. + * + * The mapping between glyph indices and scripts (in the auto-hinter + * sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an array + * with `num_glyphs` elements, as found in the font's @FT_Face structure. + * The `glyph-to-script-map` property returns a pointer to this array, + * which can be modified as needed. Note that the modification should + * happen before the first glyph gets processed by the auto-hinter so + * that the global analysis of the font shapes actually uses the modified + * mapping. + * + * @example: + * The following example code demonstrates how to access it (omitting the + * error handling). + * + * ``` + * FT_Library library; + * FT_Face face; + * FT_Prop_GlyphToScriptMap prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * + * prop.face = face; + * + * FT_Property_Get( library, "autofitter", + * "glyph-to-script-map", &prop ); + * + * // adjust `prop.map' as needed right here + * + * FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT ); + * ``` + * + * @since: + * 2.4.11 + * + */ + + + /************************************************************************** + * + * @enum: + * FT_AUTOHINTER_SCRIPT_XXX + * + * @description: + * **Experimental only** + * + * A list of constants used for the @glyph-to-script-map property to + * specify the script submodule the auto-hinter should use for hinting a + * particular glyph. + * + * @values: + * FT_AUTOHINTER_SCRIPT_NONE :: + * Don't auto-hint this glyph. + * + * FT_AUTOHINTER_SCRIPT_LATIN :: + * Apply the latin auto-hinter. For the auto-hinter, 'latin' is a very + * broad term, including Cyrillic and Greek also since characters from + * those scripts share the same design constraints. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * ``` + * U+0020 - U+007F // Basic Latin (no control characters) + * U+00A0 - U+00FF // Latin-1 Supplement (no control characters) + * U+0100 - U+017F // Latin Extended-A + * U+0180 - U+024F // Latin Extended-B + * U+0250 - U+02AF // IPA Extensions + * U+02B0 - U+02FF // Spacing Modifier Letters + * U+0300 - U+036F // Combining Diacritical Marks + * U+0370 - U+03FF // Greek and Coptic + * U+0400 - U+04FF // Cyrillic + * U+0500 - U+052F // Cyrillic Supplement + * U+1D00 - U+1D7F // Phonetic Extensions + * U+1D80 - U+1DBF // Phonetic Extensions Supplement + * U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement + * U+1E00 - U+1EFF // Latin Extended Additional + * U+1F00 - U+1FFF // Greek Extended + * U+2000 - U+206F // General Punctuation + * U+2070 - U+209F // Superscripts and Subscripts + * U+20A0 - U+20CF // Currency Symbols + * U+2150 - U+218F // Number Forms + * U+2460 - U+24FF // Enclosed Alphanumerics + * U+2C60 - U+2C7F // Latin Extended-C + * U+2DE0 - U+2DFF // Cyrillic Extended-A + * U+2E00 - U+2E7F // Supplemental Punctuation + * U+A640 - U+A69F // Cyrillic Extended-B + * U+A720 - U+A7FF // Latin Extended-D + * U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures) + * U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols + * U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement + * ``` + * + * FT_AUTOHINTER_SCRIPT_CJK :: + * Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old + * Vietnamese, and some other scripts. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * ``` + * U+1100 - U+11FF // Hangul Jamo + * U+2E80 - U+2EFF // CJK Radicals Supplement + * U+2F00 - U+2FDF // Kangxi Radicals + * U+2FF0 - U+2FFF // Ideographic Description Characters + * U+3000 - U+303F // CJK Symbols and Punctuation + * U+3040 - U+309F // Hiragana + * U+30A0 - U+30FF // Katakana + * U+3100 - U+312F // Bopomofo + * U+3130 - U+318F // Hangul Compatibility Jamo + * U+3190 - U+319F // Kanbun + * U+31A0 - U+31BF // Bopomofo Extended + * U+31C0 - U+31EF // CJK Strokes + * U+31F0 - U+31FF // Katakana Phonetic Extensions + * U+3200 - U+32FF // Enclosed CJK Letters and Months + * U+3300 - U+33FF // CJK Compatibility + * U+3400 - U+4DBF // CJK Unified Ideographs Extension A + * U+4DC0 - U+4DFF // Yijing Hexagram Symbols + * U+4E00 - U+9FFF // CJK Unified Ideographs + * U+A960 - U+A97F // Hangul Jamo Extended-A + * U+AC00 - U+D7AF // Hangul Syllables + * U+D7B0 - U+D7FF // Hangul Jamo Extended-B + * U+F900 - U+FAFF // CJK Compatibility Ideographs + * U+FE10 - U+FE1F // Vertical forms + * U+FE30 - U+FE4F // CJK Compatibility Forms + * U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms + * U+1B000 - U+1B0FF // Kana Supplement + * U+1D300 - U+1D35F // Tai Xuan Hing Symbols + * U+1F200 - U+1F2FF // Enclosed Ideographic Supplement + * U+20000 - U+2A6DF // CJK Unified Ideographs Extension B + * U+2A700 - U+2B73F // CJK Unified Ideographs Extension C + * U+2B740 - U+2B81F // CJK Unified Ideographs Extension D + * U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement + * ``` + * + * FT_AUTOHINTER_SCRIPT_INDIC :: + * Apply the indic auto-hinter, covering all major scripts from the + * Indian sub-continent and some other related scripts like Thai, Lao, + * or Tibetan. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * ``` + * U+0900 - U+0DFF // Indic Range + * U+0F00 - U+0FFF // Tibetan + * U+1900 - U+194F // Limbu + * U+1B80 - U+1BBF // Sundanese + * U+A800 - U+A82F // Syloti Nagri + * U+ABC0 - U+ABFF // Meetei Mayek + * U+11800 - U+118DF // Sharada + * ``` + * + * Note that currently Indic support is rudimentary only, missing blue + * zone support. + * + * @since: + * 2.4.11 + * + */ +#define FT_AUTOHINTER_SCRIPT_NONE 0 +#define FT_AUTOHINTER_SCRIPT_LATIN 1 +#define FT_AUTOHINTER_SCRIPT_CJK 2 +#define FT_AUTOHINTER_SCRIPT_INDIC 3 + + + /************************************************************************** + * + * @struct: + * FT_Prop_GlyphToScriptMap + * + * @description: + * **Experimental only** + * + * The data exchange structure for the @glyph-to-script-map property. + * + * @since: + * 2.4.11 + * + */ + typedef struct FT_Prop_GlyphToScriptMap_ + { + FT_Face face; + FT_UShort* map; + + } FT_Prop_GlyphToScriptMap; + + + /************************************************************************** + * + * @property: + * fallback-script + * + * @description: + * **Experimental only** + * + * If no auto-hinter script module can be assigned to a glyph, a fallback + * script gets assigned to it (see also the @glyph-to-script-map + * property). By default, this is @FT_AUTOHINTER_SCRIPT_CJK. Using the + * `fallback-script` property, this fallback value can be changed. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the fallback + * script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the fallback script will affect this face. + * + * @example: + * ``` + * FT_Library library; + * FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "fallback-script", &fallback_script ); + * ``` + * + * @since: + * 2.4.11 + * + */ + + + /************************************************************************** + * + * @property: + * default-script + * + * @description: + * **Experimental only** + * + * If FreeType gets compiled with `FT_CONFIG_OPTION_USE_HARFBUZZ` to make + * the HarfBuzz library access OpenType features for getting better glyph + * coverages, this property sets the (auto-fitter) script to be used for + * the default (OpenType) script data of a font's GSUB table. Features + * for the default script are intended for all scripts not explicitly + * handled in GSUB; an example is a 'dlig' feature, containing the + * combination of the characters 'T', 'E', and 'L' to form a 'TEL' + * ligature. + * + * By default, this is @FT_AUTOHINTER_SCRIPT_LATIN. Using the + * `default-script` property, this default value can be changed. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the default + * script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the default script will affect this face. + * + * @example: + * ``` + * FT_Library library; + * FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "default-script", &default_script ); + * ``` + * + * @since: + * 2.5.3 + * + */ + + + /************************************************************************** + * + * @property: + * increase-x-height + * + * @description: + * For ppem values in the range 6~<= ppem <= `increase-x-height`, round + * up the font's x~height much more often than normally. If the value is + * set to~0, which is the default, this feature is switched off. Use + * this property to improve the legibility of small font sizes if + * necessary. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * Set this value right after calling @FT_Set_Char_Size, but before + * loading any glyph (using the auto-hinter). + * + * @example: + * ``` + * FT_Library library; + * FT_Face face; + * FT_Prop_IncreaseXHeight prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 ); + * + * prop.face = face; + * prop.limit = 14; + * + * FT_Property_Set( library, "autofitter", + * "increase-x-height", &prop ); + * ``` + * + * @since: + * 2.4.11 + * + */ + + + /************************************************************************** + * + * @struct: + * FT_Prop_IncreaseXHeight + * + * @description: + * The data exchange structure for the @increase-x-height property. + * + */ + typedef struct FT_Prop_IncreaseXHeight_ + { + FT_Face face; + FT_UInt limit; + + } FT_Prop_IncreaseXHeight; + + + /************************************************************************** + * + * @property: + * warping + * + * @description: + * **Experimental only** + * + * If FreeType gets compiled with option `AF_CONFIG_OPTION_USE_WARPER` to + * activate the warp hinting code in the auto-hinter, this property + * switches warping on and off. + * + * Warping only works in 'normal' auto-hinting mode replacing it. The + * idea of the code is to slightly scale and shift a glyph along the + * non-hinted dimension (which is usually the horizontal axis) so that as + * much of its segments are aligned (more or less) to the grid. To find + * out a glyph's optimal scaling and shifting value, various parameter + * combinations are tried and scored. + * + * By default, warping is off. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES` environment + * variable (using values 1 and 0 for 'on' and 'off', respectively). + * + * The warping code can also change advance widths. Have a look at the + * `lsb_delta` and `rsb_delta` fields in the @FT_GlyphSlotRec structure + * for details on improving inter-glyph distances while rendering. + * + * Since warping is a global property of the auto-hinter it is best to + * change its value before rendering any face. Otherwise, you should + * reload all faces that get auto-hinted in 'normal' hinting mode. + * + * @example: + * This example shows how to switch on warping (omitting the error + * handling). + * + * ``` + * FT_Library library; + * FT_Bool warping = 1; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", "warping", &warping ); + * ``` + * + * @since: + * 2.6 + * + */ + + + /* */ + + +FT_END_HEADER + + +#endif /* FTDRIVER_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/fterrdef.h b/CMU462/deps/freetype/include/freetype/fterrdef.h old mode 100755 new mode 100644 similarity index 78% rename from CMU462/deps/freetype/include/freetype2/freetype/fterrdef.h rename to CMU462/deps/freetype/include/freetype/fterrdef.h index d7ad256..9bc7dc6 --- a/CMU462/deps/freetype/include/freetype2/freetype/fterrdef.h +++ b/CMU462/deps/freetype/include/freetype/fterrdef.h @@ -1,239 +1,279 @@ -/***************************************************************************/ -/* */ -/* fterrdef.h */ -/* */ -/* FreeType error codes (specification). */ -/* */ -/* Copyright 2002, 2004, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** LIST OF ERROR CODES/MESSAGES *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - - /* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */ - /* including this file. */ +/**************************************************************************** + * + * fterrdef.h + * + * FreeType error codes (specification). + * + * Copyright (C) 2002-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + /************************************************************************** + * + * @section: + * error_code_values + * + * @title: + * Error Code Values + * + * @abstract: + * All possible error codes returned by FreeType functions. + * + * @description: + * The list below is taken verbatim from the file `fterrdef.h` (loaded + * automatically by including `FT_FREETYPE_H`). The first argument of the + * `FT_ERROR_DEF_` macro is the error label; by default, the prefix + * `FT_Err_` gets added so that you get error names like + * `FT_Err_Cannot_Open_Resource`. The second argument is the error code, + * and the last argument an error string, which is not used by FreeType. + * + * Within your application you should **only** use error names and + * **never** its numeric values! The latter might (and actually do) + * change in forthcoming FreeType versions. + * + * Macro `FT_NOERRORDEF_` defines `FT_Err_Ok`, which is always zero. See + * the 'Error Enumerations' subsection how to automatically generate a + * list of error strings. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_Err_XXX + * + */ + /* generic errors */ - FT_NOERRORDEF_( Ok, 0x00, \ + FT_NOERRORDEF_( Ok, 0x00, "no error" ) - FT_ERRORDEF_( Cannot_Open_Resource, 0x01, \ + FT_ERRORDEF_( Cannot_Open_Resource, 0x01, "cannot open resource" ) - FT_ERRORDEF_( Unknown_File_Format, 0x02, \ + FT_ERRORDEF_( Unknown_File_Format, 0x02, "unknown file format" ) - FT_ERRORDEF_( Invalid_File_Format, 0x03, \ + FT_ERRORDEF_( Invalid_File_Format, 0x03, "broken file" ) - FT_ERRORDEF_( Invalid_Version, 0x04, \ + FT_ERRORDEF_( Invalid_Version, 0x04, "invalid FreeType version" ) - FT_ERRORDEF_( Lower_Module_Version, 0x05, \ + FT_ERRORDEF_( Lower_Module_Version, 0x05, "module version is too low" ) - FT_ERRORDEF_( Invalid_Argument, 0x06, \ + FT_ERRORDEF_( Invalid_Argument, 0x06, "invalid argument" ) - FT_ERRORDEF_( Unimplemented_Feature, 0x07, \ + FT_ERRORDEF_( Unimplemented_Feature, 0x07, "unimplemented feature" ) - FT_ERRORDEF_( Invalid_Table, 0x08, \ + FT_ERRORDEF_( Invalid_Table, 0x08, "broken table" ) - FT_ERRORDEF_( Invalid_Offset, 0x09, \ + FT_ERRORDEF_( Invalid_Offset, 0x09, "broken offset within table" ) - FT_ERRORDEF_( Array_Too_Large, 0x0A, \ + FT_ERRORDEF_( Array_Too_Large, 0x0A, "array allocation size too large" ) + FT_ERRORDEF_( Missing_Module, 0x0B, + "missing module" ) + FT_ERRORDEF_( Missing_Property, 0x0C, + "missing property" ) /* glyph/character errors */ - FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, \ + FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, "invalid glyph index" ) - FT_ERRORDEF_( Invalid_Character_Code, 0x11, \ + FT_ERRORDEF_( Invalid_Character_Code, 0x11, "invalid character code" ) - FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, \ + FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, "unsupported glyph image format" ) - FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, \ + FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, "cannot render this glyph format" ) - FT_ERRORDEF_( Invalid_Outline, 0x14, \ + FT_ERRORDEF_( Invalid_Outline, 0x14, "invalid outline" ) - FT_ERRORDEF_( Invalid_Composite, 0x15, \ + FT_ERRORDEF_( Invalid_Composite, 0x15, "invalid composite glyph" ) - FT_ERRORDEF_( Too_Many_Hints, 0x16, \ + FT_ERRORDEF_( Too_Many_Hints, 0x16, "too many hints" ) - FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, \ + FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, "invalid pixel size" ) /* handle errors */ - FT_ERRORDEF_( Invalid_Handle, 0x20, \ + FT_ERRORDEF_( Invalid_Handle, 0x20, "invalid object handle" ) - FT_ERRORDEF_( Invalid_Library_Handle, 0x21, \ + FT_ERRORDEF_( Invalid_Library_Handle, 0x21, "invalid library handle" ) - FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, \ + FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, "invalid module handle" ) - FT_ERRORDEF_( Invalid_Face_Handle, 0x23, \ + FT_ERRORDEF_( Invalid_Face_Handle, 0x23, "invalid face handle" ) - FT_ERRORDEF_( Invalid_Size_Handle, 0x24, \ + FT_ERRORDEF_( Invalid_Size_Handle, 0x24, "invalid size handle" ) - FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, \ + FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, "invalid glyph slot handle" ) - FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, \ + FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, "invalid charmap handle" ) - FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, \ + FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, "invalid cache manager handle" ) - FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, \ + FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, "invalid stream handle" ) /* driver errors */ - FT_ERRORDEF_( Too_Many_Drivers, 0x30, \ + FT_ERRORDEF_( Too_Many_Drivers, 0x30, "too many modules" ) - FT_ERRORDEF_( Too_Many_Extensions, 0x31, \ + FT_ERRORDEF_( Too_Many_Extensions, 0x31, "too many extensions" ) /* memory errors */ - FT_ERRORDEF_( Out_Of_Memory, 0x40, \ + FT_ERRORDEF_( Out_Of_Memory, 0x40, "out of memory" ) - FT_ERRORDEF_( Unlisted_Object, 0x41, \ + FT_ERRORDEF_( Unlisted_Object, 0x41, "unlisted object" ) /* stream errors */ - FT_ERRORDEF_( Cannot_Open_Stream, 0x51, \ + FT_ERRORDEF_( Cannot_Open_Stream, 0x51, "cannot open stream" ) - FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, \ + FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, "invalid stream seek" ) - FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, \ + FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, "invalid stream skip" ) - FT_ERRORDEF_( Invalid_Stream_Read, 0x54, \ + FT_ERRORDEF_( Invalid_Stream_Read, 0x54, "invalid stream read" ) - FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, \ + FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, "invalid stream operation" ) - FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, \ + FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, "invalid frame operation" ) - FT_ERRORDEF_( Nested_Frame_Access, 0x57, \ + FT_ERRORDEF_( Nested_Frame_Access, 0x57, "nested frame access" ) - FT_ERRORDEF_( Invalid_Frame_Read, 0x58, \ + FT_ERRORDEF_( Invalid_Frame_Read, 0x58, "invalid frame read" ) /* raster errors */ - FT_ERRORDEF_( Raster_Uninitialized, 0x60, \ + FT_ERRORDEF_( Raster_Uninitialized, 0x60, "raster uninitialized" ) - FT_ERRORDEF_( Raster_Corrupted, 0x61, \ + FT_ERRORDEF_( Raster_Corrupted, 0x61, "raster corrupted" ) - FT_ERRORDEF_( Raster_Overflow, 0x62, \ + FT_ERRORDEF_( Raster_Overflow, 0x62, "raster overflow" ) - FT_ERRORDEF_( Raster_Negative_Height, 0x63, \ + FT_ERRORDEF_( Raster_Negative_Height, 0x63, "negative height while rastering" ) /* cache errors */ - FT_ERRORDEF_( Too_Many_Caches, 0x70, \ + FT_ERRORDEF_( Too_Many_Caches, 0x70, "too many registered caches" ) /* TrueType and SFNT errors */ - FT_ERRORDEF_( Invalid_Opcode, 0x80, \ + FT_ERRORDEF_( Invalid_Opcode, 0x80, "invalid opcode" ) - FT_ERRORDEF_( Too_Few_Arguments, 0x81, \ + FT_ERRORDEF_( Too_Few_Arguments, 0x81, "too few arguments" ) - FT_ERRORDEF_( Stack_Overflow, 0x82, \ + FT_ERRORDEF_( Stack_Overflow, 0x82, "stack overflow" ) - FT_ERRORDEF_( Code_Overflow, 0x83, \ + FT_ERRORDEF_( Code_Overflow, 0x83, "code overflow" ) - FT_ERRORDEF_( Bad_Argument, 0x84, \ + FT_ERRORDEF_( Bad_Argument, 0x84, "bad argument" ) - FT_ERRORDEF_( Divide_By_Zero, 0x85, \ + FT_ERRORDEF_( Divide_By_Zero, 0x85, "division by zero" ) - FT_ERRORDEF_( Invalid_Reference, 0x86, \ + FT_ERRORDEF_( Invalid_Reference, 0x86, "invalid reference" ) - FT_ERRORDEF_( Debug_OpCode, 0x87, \ + FT_ERRORDEF_( Debug_OpCode, 0x87, "found debug opcode" ) - FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, \ + FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, "found ENDF opcode in execution stream" ) - FT_ERRORDEF_( Nested_DEFS, 0x89, \ + FT_ERRORDEF_( Nested_DEFS, 0x89, "nested DEFS" ) - FT_ERRORDEF_( Invalid_CodeRange, 0x8A, \ + FT_ERRORDEF_( Invalid_CodeRange, 0x8A, "invalid code range" ) - FT_ERRORDEF_( Execution_Too_Long, 0x8B, \ + FT_ERRORDEF_( Execution_Too_Long, 0x8B, "execution context too long" ) - FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, \ + FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, "too many function definitions" ) - FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, \ + FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, "too many instruction definitions" ) - FT_ERRORDEF_( Table_Missing, 0x8E, \ + FT_ERRORDEF_( Table_Missing, 0x8E, "SFNT font table missing" ) - FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, \ + FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, "horizontal header (hhea) table missing" ) - FT_ERRORDEF_( Locations_Missing, 0x90, \ + FT_ERRORDEF_( Locations_Missing, 0x90, "locations (loca) table missing" ) - FT_ERRORDEF_( Name_Table_Missing, 0x91, \ + FT_ERRORDEF_( Name_Table_Missing, 0x91, "name table missing" ) - FT_ERRORDEF_( CMap_Table_Missing, 0x92, \ + FT_ERRORDEF_( CMap_Table_Missing, 0x92, "character map (cmap) table missing" ) - FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, \ + FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, "horizontal metrics (hmtx) table missing" ) - FT_ERRORDEF_( Post_Table_Missing, 0x94, \ + FT_ERRORDEF_( Post_Table_Missing, 0x94, "PostScript (post) table missing" ) - FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, \ + FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, "invalid horizontal metrics" ) - FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, \ + FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, "invalid character map (cmap) format" ) - FT_ERRORDEF_( Invalid_PPem, 0x97, \ + FT_ERRORDEF_( Invalid_PPem, 0x97, "invalid ppem value" ) - FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, \ + FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, "invalid vertical metrics" ) - FT_ERRORDEF_( Could_Not_Find_Context, 0x99, \ + FT_ERRORDEF_( Could_Not_Find_Context, 0x99, "could not find context" ) - FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, \ + FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, "invalid PostScript (post) table format" ) - FT_ERRORDEF_( Invalid_Post_Table, 0x9B, \ + FT_ERRORDEF_( Invalid_Post_Table, 0x9B, "invalid PostScript (post) table" ) + FT_ERRORDEF_( DEF_In_Glyf_Bytecode, 0x9C, + "found FDEF or IDEF opcode in glyf bytecode" ) + FT_ERRORDEF_( Missing_Bitmap, 0x9D, + "missing bitmap in strike" ) /* CFF, CID, and Type 1 errors */ - FT_ERRORDEF_( Syntax_Error, 0xA0, \ + FT_ERRORDEF_( Syntax_Error, 0xA0, "opcode syntax error" ) - FT_ERRORDEF_( Stack_Underflow, 0xA1, \ + FT_ERRORDEF_( Stack_Underflow, 0xA1, "argument stack underflow" ) - FT_ERRORDEF_( Ignore, 0xA2, \ + FT_ERRORDEF_( Ignore, 0xA2, "ignore" ) + FT_ERRORDEF_( No_Unicode_Glyph_Name, 0xA3, + "no Unicode glyph name found" ) + FT_ERRORDEF_( Glyph_Too_Big, 0xA4, + "glyph too big for hinting" ) /* BDF errors */ - FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, \ + FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, "`STARTFONT' field missing" ) - FT_ERRORDEF_( Missing_Font_Field, 0xB1, \ + FT_ERRORDEF_( Missing_Font_Field, 0xB1, "`FONT' field missing" ) - FT_ERRORDEF_( Missing_Size_Field, 0xB2, \ + FT_ERRORDEF_( Missing_Size_Field, 0xB2, "`SIZE' field missing" ) - FT_ERRORDEF_( Missing_Chars_Field, 0xB3, \ + FT_ERRORDEF_( Missing_Fontboundingbox_Field, 0xB3, + "`FONTBOUNDINGBOX' field missing" ) + FT_ERRORDEF_( Missing_Chars_Field, 0xB4, "`CHARS' field missing" ) - FT_ERRORDEF_( Missing_Startchar_Field, 0xB4, \ + FT_ERRORDEF_( Missing_Startchar_Field, 0xB5, "`STARTCHAR' field missing" ) - FT_ERRORDEF_( Missing_Encoding_Field, 0xB5, \ + FT_ERRORDEF_( Missing_Encoding_Field, 0xB6, "`ENCODING' field missing" ) - FT_ERRORDEF_( Missing_Bbx_Field, 0xB6, \ + FT_ERRORDEF_( Missing_Bbx_Field, 0xB7, "`BBX' field missing" ) - FT_ERRORDEF_( Bbx_Too_Big, 0xB7, \ + FT_ERRORDEF_( Bbx_Too_Big, 0xB8, "`BBX' too big" ) - FT_ERRORDEF_( Corrupted_Font_Header, 0xB8, \ + FT_ERRORDEF_( Corrupted_Font_Header, 0xB9, "Font header corrupted or missing fields" ) - FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xB9, \ + FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xBA, "Font glyphs corrupted or missing fields" ) + /* */ + /* END */ diff --git a/CMU462/deps/freetype/include/freetype/fterrors.h b/CMU462/deps/freetype/include/freetype/fterrors.h new file mode 100644 index 0000000..2b47eb2 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/fterrors.h @@ -0,0 +1,289 @@ +/**************************************************************************** + * + * fterrors.h + * + * FreeType error code handling (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * @section: + * error_enumerations + * + * @title: + * Error Enumerations + * + * @abstract: + * How to handle errors and error strings. + * + * @description: + * The header file `fterrors.h` (which is automatically included by + * `freetype.h` defines the handling of FreeType's enumeration + * constants. It can also be used to generate error message strings + * with a small macro trick explained below. + * + * **Error Formats** + * + * The configuration macro `FT_CONFIG_OPTION_USE_MODULE_ERRORS` can be + * defined in `ftoption.h` in order to make the higher byte indicate the + * module where the error has happened (this is not compatible with + * standard builds of FreeType~2, however). See the file `ftmoderr.h` + * for more details. + * + * **Error Message Strings** + * + * Error definitions are set up with special macros that allow client + * applications to build a table of error message strings. The strings + * are not included in a normal build of FreeType~2 to save space (most + * client applications do not use them). + * + * To do so, you have to define the following macros before including + * this file. + * + * ``` + * FT_ERROR_START_LIST + * ``` + * + * This macro is called before anything else to define the start of the + * error list. It is followed by several `FT_ERROR_DEF` calls. + * + * ``` + * FT_ERROR_DEF( e, v, s ) + * ``` + * + * This macro is called to define one single error. 'e' is the error + * code identifier (e.g., `Invalid_Argument`), 'v' is the error's + * numerical value, and 's' is the corresponding error string. + * + * ``` + * FT_ERROR_END_LIST + * ``` + * + * This macro ends the list. + * + * Additionally, you have to undefine `FTERRORS_H_` before #including + * this file. + * + * Here is a simple example. + * + * ``` + * #undef FTERRORS_H_ + * #define FT_ERRORDEF( e, v, s ) { e, s }, + * #define FT_ERROR_START_LIST { + * #define FT_ERROR_END_LIST { 0, NULL } }; + * + * const struct + * { + * int err_code; + * const char* err_msg; + * } ft_errors[] = + * + * #include FT_ERRORS_H + * ``` + * + * An alternative to using an array is a switch statement. + * + * ``` + * #undef FTERRORS_H_ + * #define FT_ERROR_START_LIST switch ( error_code ) { + * #define FT_ERRORDEF( e, v, s ) case v: return s; + * #define FT_ERROR_END_LIST } + * ``` + * + * If you use `FT_CONFIG_OPTION_USE_MODULE_ERRORS`, `error_code` should + * be replaced with `FT_ERROR_BASE(error_code)` in the last example. + */ + + /* */ + + /* In previous FreeType versions we used `__FTERRORS_H__`. However, */ + /* using two successive underscores in a non-system symbol name */ + /* violates the C (and C++) standard, so it was changed to the */ + /* current form. In spite of this, we have to make */ + /* */ + /* ``` */ + /* #undefine __FTERRORS_H__ */ + /* ``` */ + /* */ + /* work for backward compatibility. */ + /* */ +#if !( defined( FTERRORS_H_ ) && defined ( __FTERRORS_H__ ) ) +#define FTERRORS_H_ +#define __FTERRORS_H__ + + + /* include module base error codes */ +#include FT_MODULE_ERRORS_H + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + + + /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ + /* By default, we use `FT_Err_`. */ + /* */ +#ifndef FT_ERR_PREFIX +#define FT_ERR_PREFIX FT_Err_ +#endif + + + /* FT_ERR_BASE is used as the base for module-specific errors. */ + /* */ +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS + +#ifndef FT_ERR_BASE +#define FT_ERR_BASE FT_Mod_Err_Base +#endif + +#else + +#undef FT_ERR_BASE +#define FT_ERR_BASE 0 + +#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ + + + /* If FT_ERRORDEF is not defined, we need to define a simple */ + /* enumeration type. */ + /* */ +#ifndef FT_ERRORDEF + +#define FT_INCLUDE_ERR_PROTOS + +#define FT_ERRORDEF( e, v, s ) e = v, +#define FT_ERROR_START_LIST enum { +#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_ERRORDEF */ + + + /* this macro is used to define an error */ +#define FT_ERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) + + /* this is only used for <module>_Err_Ok, which must be 0! */ +#define FT_NOERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) + + +#ifdef FT_ERROR_START_LIST + FT_ERROR_START_LIST +#endif + + + /* now include the error codes */ +#include FT_ERROR_DEFINITIONS_H + + +#ifdef FT_ERROR_END_LIST + FT_ERROR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SIMPLE CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_ERROR_START_LIST +#undef FT_ERROR_END_LIST + +#undef FT_ERRORDEF +#undef FT_ERRORDEF_ +#undef FT_NOERRORDEF_ + +#undef FT_NEED_EXTERN_C +#undef FT_ERR_BASE + + /* FT_ERR_PREFIX is needed internally */ +#ifndef FT2_BUILD_LIBRARY +#undef FT_ERR_PREFIX +#endif + + /* FT_INCLUDE_ERR_PROTOS: Control if function prototypes should be */ + /* included with `#include FT_ERRORS_H'. This is */ + /* only true where `FT_ERRORDEF` is undefined. */ + /* FT_ERR_PROTOS_DEFINED: Actual multiple-inclusion protection of */ + /* `fterrors.h`. */ +#ifdef FT_INCLUDE_ERR_PROTOS +#undef FT_INCLUDE_ERR_PROTOS + +#ifndef FT_ERR_PROTOS_DEFINED +#define FT_ERR_PROTOS_DEFINED + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @function: + * FT_Error_String + * + * @description: + * Retrieve the description of a valid FreeType error code. + * + * @input: + * error_code :: + * A valid FreeType error code. + * + * @return: + * A C~string or `NULL`, if any error occurred. + * + * @note: + * FreeType has to be compiled with `FT_CONFIG_OPTION_ERROR_STRINGS` or + * `FT_DEBUG_LEVEL_ERROR` to get meaningful descriptions. + * 'error_string' will be `NULL` otherwise. + * + * Module identification will be ignored: + * + * ```c + * strcmp( FT_Error_String( FT_Err_Unknown_File_Format ), + * FT_Error_String( BDF_Err_Unknown_File_Format ) ) == 0; + * ``` + */ + FT_EXPORT( const char* ) + FT_Error_String( FT_Error error_code ); + +FT_END_HEADER + + +#endif /* FT_ERR_PROTOS_DEFINED */ + +#endif /* FT_INCLUDE_ERR_PROTOS */ + +#endif /* !(FTERRORS_H_ && __FTERRORS_H__) */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftfntfmt.h b/CMU462/deps/freetype/include/freetype/ftfntfmt.h new file mode 100644 index 0000000..aae0b13 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftfntfmt.h @@ -0,0 +1,94 @@ +/**************************************************************************** + * + * ftfntfmt.h + * + * Support functions for font formats. + * + * Copyright (C) 2002-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTFNTFMT_H_ +#define FTFNTFMT_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * font_formats + * + * @title: + * Font Formats + * + * @abstract: + * Getting the font format. + * + * @description: + * The single function in this section can be used to get the font format. + * Note that this information is not needed normally; however, there are + * special cases (like in PDF devices) where it is important to + * differentiate, in spite of FreeType's uniform API. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Get_Font_Format + * + * @description: + * Return a string describing the format of a given face. Possible values + * are 'TrueType', 'Type~1', 'BDF', 'PCF', 'Type~42', 'CID~Type~1', 'CFF', + * 'PFR', and 'Windows~FNT'. + * + * The return value is suitable to be used as an X11 FONT_PROPERTY. + * + * @input: + * face :: + * Input face handle. + * + * @return: + * Font format string. `NULL` in case of error. + * + * @note: + * A deprecated name for the same function is `FT_Get_X11_Font_Format`. + */ + FT_EXPORT( const char* ) + FT_Get_Font_Format( FT_Face face ); + + + /* deprecated */ + FT_EXPORT( const char* ) + FT_Get_X11_Font_Format( FT_Face face ); + + + /* */ + + +FT_END_HEADER + +#endif /* FTFNTFMT_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftgasp.h b/CMU462/deps/freetype/include/freetype/ftgasp.h new file mode 100644 index 0000000..24673d8 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftgasp.h @@ -0,0 +1,144 @@ +/**************************************************************************** + * + * ftgasp.h + * + * Access of TrueType's 'gasp' table (specification). + * + * Copyright (C) 2007-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTGASP_H_ +#define FTGASP_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * gasp_table + * + * @title: + * Gasp Table + * + * @abstract: + * Retrieving TrueType 'gasp' table entries. + * + * @description: + * The function @FT_Get_Gasp can be used to query a TrueType or OpenType + * font for specific entries in its 'gasp' table, if any. This is mainly + * useful when implementing native TrueType hinting with the bytecode + * interpreter to duplicate the Windows text rendering results. + */ + + /************************************************************************** + * + * @enum: + * FT_GASP_XXX + * + * @description: + * A list of values and/or bit-flags returned by the @FT_Get_Gasp + * function. + * + * @values: + * FT_GASP_NO_TABLE :: + * This special value means that there is no GASP table in this face. + * It is up to the client to decide what to do. + * + * FT_GASP_DO_GRIDFIT :: + * Grid-fitting and hinting should be performed at the specified ppem. + * This **really** means TrueType bytecode interpretation. If this bit + * is not set, no hinting gets applied. + * + * FT_GASP_DO_GRAY :: + * Anti-aliased rendering should be performed at the specified ppem. + * If not set, do monochrome rendering. + * + * FT_GASP_SYMMETRIC_SMOOTHING :: + * If set, smoothing along multiple axes must be used with ClearType. + * + * FT_GASP_SYMMETRIC_GRIDFIT :: + * Grid-fitting must be used with ClearType's symmetric smoothing. + * + * @note: + * The bit-flags `FT_GASP_DO_GRIDFIT` and `FT_GASP_DO_GRAY` are to be + * used for standard font rasterization only. Independently of that, + * `FT_GASP_SYMMETRIC_SMOOTHING` and `FT_GASP_SYMMETRIC_GRIDFIT` are to + * be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT` and + * `FT_GASP_DO_GRAY` are consequently ignored). + * + * 'ClearType' is Microsoft's implementation of LCD rendering, partly + * protected by patents. + * + * @since: + * 2.3.0 + */ +#define FT_GASP_NO_TABLE -1 +#define FT_GASP_DO_GRIDFIT 0x01 +#define FT_GASP_DO_GRAY 0x02 +#define FT_GASP_SYMMETRIC_GRIDFIT 0x04 +#define FT_GASP_SYMMETRIC_SMOOTHING 0x08 + + + /************************************************************************** + * + * @function: + * FT_Get_Gasp + * + * @description: + * For a TrueType or OpenType font file, return the rasterizer behaviour + * flags from the font's 'gasp' table corresponding to a given character + * pixel size. + * + * @input: + * face :: + * The source face handle. + * + * ppem :: + * The vertical character pixel size. + * + * @return: + * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no + * 'gasp' table in the face. + * + * @note: + * If you want to use the MM functionality of OpenType variation fonts + * (i.e., using @FT_Set_Var_Design_Coordinates and friends), call this + * function **after** setting an instance since the return values can + * change. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Int ) + FT_Get_Gasp( FT_Face face, + FT_UInt ppem ); + + /* */ + + +FT_END_HEADER + +#endif /* FTGASP_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftglyph.h b/CMU462/deps/freetype/include/freetype/ftglyph.h new file mode 100644 index 0000000..fedab84 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftglyph.h @@ -0,0 +1,665 @@ +/**************************************************************************** + * + * ftglyph.h + * + * FreeType convenience functions to handle glyphs (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This file contains the definition of several convenience functions that + * can be used by client applications to easily retrieve glyph bitmaps and + * outlines from a given face. + * + * These functions should be optional if you are writing a font server or + * text layout engine on top of FreeType. However, they are pretty handy + * for many other simple uses of the library. + * + */ + + +#ifndef FTGLYPH_H_ +#define FTGLYPH_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * glyph_management + * + * @title: + * Glyph Management + * + * @abstract: + * Generic interface to manage individual glyph data. + * + * @description: + * This section contains definitions used to manage glyph data through + * generic @FT_Glyph objects. Each of them can contain a bitmap, + * a vector outline, or even images in other formats. These objects are + * detached from @FT_Face, contrary to @FT_GlyphSlot. + * + */ + + + /* forward declaration to a private type */ + typedef struct FT_Glyph_Class_ FT_Glyph_Class; + + + /************************************************************************** + * + * @type: + * FT_Glyph + * + * @description: + * Handle to an object used to model generic glyph images. It is a + * pointer to the @FT_GlyphRec structure and can contain a glyph bitmap + * or pointer. + * + * @note: + * Glyph objects are not owned by the library. You must thus release + * them manually (through @FT_Done_Glyph) _before_ calling + * @FT_Done_FreeType. + */ + typedef struct FT_GlyphRec_* FT_Glyph; + + + /************************************************************************** + * + * @struct: + * FT_GlyphRec + * + * @description: + * The root glyph structure contains a given glyph image plus its advance + * width in 16.16 fixed-point format. + * + * @fields: + * library :: + * A handle to the FreeType library object. + * + * clazz :: + * A pointer to the glyph's class. Private. + * + * format :: + * The format of the glyph's image. + * + * advance :: + * A 16.16 vector that gives the glyph's advance width. + */ + typedef struct FT_GlyphRec_ + { + FT_Library library; + const FT_Glyph_Class* clazz; + FT_Glyph_Format format; + FT_Vector advance; + + } FT_GlyphRec; + + + /************************************************************************** + * + * @type: + * FT_BitmapGlyph + * + * @description: + * A handle to an object used to model a bitmap glyph image. This is a + * sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. + */ + typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; + + + /************************************************************************** + * + * @struct: + * FT_BitmapGlyphRec + * + * @description: + * A structure used for bitmap glyph images. This really is a + * 'sub-class' of @FT_GlyphRec. + * + * @fields: + * root :: + * The root @FT_Glyph fields. + * + * left :: + * The left-side bearing, i.e., the horizontal distance from the + * current pen position to the left border of the glyph bitmap. + * + * top :: + * The top-side bearing, i.e., the vertical distance from the current + * pen position to the top border of the glyph bitmap. This distance + * is positive for upwards~y! + * + * bitmap :: + * A descriptor for the bitmap. + * + * @note: + * You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have + * `glyph->format == FT_GLYPH_FORMAT_BITMAP`. This lets you access the + * bitmap's contents easily. + * + * The corresponding pixel buffer is always owned by @FT_BitmapGlyph and + * is thus created and destroyed with it. + */ + typedef struct FT_BitmapGlyphRec_ + { + FT_GlyphRec root; + FT_Int left; + FT_Int top; + FT_Bitmap bitmap; + + } FT_BitmapGlyphRec; + + + /************************************************************************** + * + * @type: + * FT_OutlineGlyph + * + * @description: + * A handle to an object used to model an outline glyph image. This is a + * sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. + */ + typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; + + + /************************************************************************** + * + * @struct: + * FT_OutlineGlyphRec + * + * @description: + * A structure used for outline (vectorial) glyph images. This really is + * a 'sub-class' of @FT_GlyphRec. + * + * @fields: + * root :: + * The root @FT_Glyph fields. + * + * outline :: + * A descriptor for the outline. + * + * @note: + * You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have + * `glyph->format == FT_GLYPH_FORMAT_OUTLINE`. This lets you access the + * outline's content easily. + * + * As the outline is extracted from a glyph slot, its coordinates are + * expressed normally in 26.6 pixels, unless the flag @FT_LOAD_NO_SCALE + * was used in @FT_Load_Glyph or @FT_Load_Char. + * + * The outline's tables are always owned by the object and are destroyed + * with it. + */ + typedef struct FT_OutlineGlyphRec_ + { + FT_GlyphRec root; + FT_Outline outline; + + } FT_OutlineGlyphRec; + + + /************************************************************************** + * + * @function: + * FT_New_Glyph + * + * @description: + * A function used to create a new empty glyph image. Note that the + * created @FT_Glyph object must be released with @FT_Done_Glyph. + * + * @input: + * library :: + * A handle to the FreeType library object. + * + * format :: + * The format of the glyph's image. + * + * @output: + * aglyph :: + * A handle to the glyph object. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_New_Glyph( FT_Library library, + FT_Glyph_Format format, + FT_Glyph *aglyph ); + + + /************************************************************************** + * + * @function: + * FT_Get_Glyph + * + * @description: + * A function used to extract a glyph image from a slot. Note that the + * created @FT_Glyph object must be released with @FT_Done_Glyph. + * + * @input: + * slot :: + * A handle to the source glyph slot. + * + * @output: + * aglyph :: + * A handle to the glyph object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Because `*aglyph->advance.x` and `*aglyph->advance.y` are 16.16 + * fixed-point numbers, `slot->advance.x` and `slot->advance.y` (which + * are in 26.6 fixed-point format) must be in the range ]-32768;32768[. + */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph( FT_GlyphSlot slot, + FT_Glyph *aglyph ); + + + /************************************************************************** + * + * @function: + * FT_Glyph_Copy + * + * @description: + * A function used to copy a glyph image. Note that the created + * @FT_Glyph object must be released with @FT_Done_Glyph. + * + * @input: + * source :: + * A handle to the source glyph object. + * + * @output: + * target :: + * A handle to the target glyph object. 0~in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_Copy( FT_Glyph source, + FT_Glyph *target ); + + + /************************************************************************** + * + * @function: + * FT_Glyph_Transform + * + * @description: + * Transform a glyph image if its format is scalable. + * + * @inout: + * glyph :: + * A handle to the target glyph object. + * + * @input: + * matrix :: + * A pointer to a 2x2 matrix to apply. + * + * delta :: + * A pointer to a 2d vector to apply. Coordinates are expressed in + * 1/64th of a pixel. + * + * @return: + * FreeType error code (if not 0, the glyph format is not scalable). + * + * @note: + * The 2x2 transformation matrix is also applied to the glyph's advance + * vector. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_Transform( FT_Glyph glyph, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /************************************************************************** + * + * @enum: + * FT_Glyph_BBox_Mode + * + * @description: + * The mode how the values of @FT_Glyph_Get_CBox are returned. + * + * @values: + * FT_GLYPH_BBOX_UNSCALED :: + * Return unscaled font units. + * + * FT_GLYPH_BBOX_SUBPIXELS :: + * Return unfitted 26.6 coordinates. + * + * FT_GLYPH_BBOX_GRIDFIT :: + * Return grid-fitted 26.6 coordinates. + * + * FT_GLYPH_BBOX_TRUNCATE :: + * Return coordinates in integer pixels. + * + * FT_GLYPH_BBOX_PIXELS :: + * Return grid-fitted pixel coordinates. + */ + typedef enum FT_Glyph_BBox_Mode_ + { + FT_GLYPH_BBOX_UNSCALED = 0, + FT_GLYPH_BBOX_SUBPIXELS = 0, + FT_GLYPH_BBOX_GRIDFIT = 1, + FT_GLYPH_BBOX_TRUNCATE = 2, + FT_GLYPH_BBOX_PIXELS = 3 + + } FT_Glyph_BBox_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Glyph_BBox_Mode` values instead */ +#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED +#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS +#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT +#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE +#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS + + + /************************************************************************** + * + * @function: + * FT_Glyph_Get_CBox + * + * @description: + * Return a glyph's 'control box'. The control box encloses all the + * outline's points, including Bezier control points. Though it + * coincides with the exact bounding box for most glyphs, it can be + * slightly larger in some situations (like when rotating an outline that + * contains Bezier outside arcs). + * + * Computing the control box is very fast, while getting the bounding box + * can take much more time as it needs to walk over all segments and arcs + * in the outline. To get the latter, you can use the 'ftbbox' + * component, which is dedicated to this single task. + * + * @input: + * glyph :: + * A handle to the source glyph object. + * + * mode :: + * The mode that indicates how to interpret the returned bounding box + * values. + * + * @output: + * acbox :: + * The glyph coordinate bounding box. Coordinates are expressed in + * 1/64th of pixels if it is grid-fitted. + * + * @note: + * Coordinates are relative to the glyph origin, using the y~upwards + * convention. + * + * If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode` must + * be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font units in 26.6 + * pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS is another name for + * this constant. + * + * If the font is tricky and the glyph has been loaded with + * @FT_LOAD_NO_SCALE, the resulting CBox is meaningless. To get + * reasonable values for the CBox it is necessary to load the glyph at a + * large ppem value (so that the hinting instructions can properly shift + * and scale the subglyphs), then extracting the CBox, which can be + * eventually converted back to font units. + * + * Note that the maximum coordinates are exclusive, which means that one + * can compute the width and height of the glyph image (be it in integer + * or 26.6 pixels) as: + * + * ``` + * width = bbox.xMax - bbox.xMin; + * height = bbox.yMax - bbox.yMin; + * ``` + * + * Note also that for 26.6 coordinates, if `bbox_mode` is set to + * @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, + * which corresponds to: + * + * ``` + * bbox.xMin = FLOOR(bbox.xMin); + * bbox.yMin = FLOOR(bbox.yMin); + * bbox.xMax = CEILING(bbox.xMax); + * bbox.yMax = CEILING(bbox.yMax); + * ``` + * + * To get the bbox in pixel coordinates, set `bbox_mode` to + * @FT_GLYPH_BBOX_TRUNCATE. + * + * To get the bbox in grid-fitted pixel coordinates, set `bbox_mode` to + * @FT_GLYPH_BBOX_PIXELS. + */ + FT_EXPORT( void ) + FT_Glyph_Get_CBox( FT_Glyph glyph, + FT_UInt bbox_mode, + FT_BBox *acbox ); + + + /************************************************************************** + * + * @function: + * FT_Glyph_To_Bitmap + * + * @description: + * Convert a given glyph object to a bitmap glyph object. + * + * @inout: + * the_glyph :: + * A pointer to a handle to the target glyph. + * + * @input: + * render_mode :: + * An enumeration that describes how the data is rendered. + * + * origin :: + * A pointer to a vector used to translate the glyph image before + * rendering. Can be~0 (if no translation). The origin is expressed + * in 26.6 pixels. + * + * destroy :: + * A boolean that indicates that the original glyph image should be + * destroyed by this function. It is never destroyed in case of error. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function does nothing if the glyph format isn't scalable. + * + * The glyph image is translated with the `origin` vector before + * rendering. + * + * The first parameter is a pointer to an @FT_Glyph handle, that will be + * _replaced_ by this function (with newly allocated data). Typically, + * you would use (omitting error handling): + * + * ``` + * FT_Glyph glyph; + * FT_BitmapGlyph glyph_bitmap; + * + * + * // load glyph + * error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAULT ); + * + * // extract glyph image + * error = FT_Get_Glyph( face->glyph, &glyph ); + * + * // convert to a bitmap (default render mode + destroying old) + * if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) + * { + * error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, + * 0, 1 ); + * if ( error ) // `glyph' unchanged + * ... + * } + * + * // access bitmap content by typecasting + * glyph_bitmap = (FT_BitmapGlyph)glyph; + * + * // do funny stuff with it, like blitting/drawing + * ... + * + * // discard glyph image (bitmap or not) + * FT_Done_Glyph( glyph ); + * ``` + * + * Here is another example, again without error handling: + * + * ``` + * FT_Glyph glyphs[MAX_GLYPHS] + * + * + * ... + * + * for ( idx = 0; i < MAX_GLYPHS; i++ ) + * error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || + * FT_Get_Glyph ( face->glyph, &glyphs[idx] ); + * + * ... + * + * for ( idx = 0; i < MAX_GLYPHS; i++ ) + * { + * FT_Glyph bitmap = glyphs[idx]; + * + * + * ... + * + * // after this call, `bitmap' no longer points into + * // the `glyphs' array (and the old value isn't destroyed) + * FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); + * + * ... + * + * FT_Done_Glyph( bitmap ); + * } + * + * ... + * + * for ( idx = 0; i < MAX_GLYPHS; i++ ) + * FT_Done_Glyph( glyphs[idx] ); + * ``` + */ + FT_EXPORT( FT_Error ) + FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, + FT_Render_Mode render_mode, + FT_Vector* origin, + FT_Bool destroy ); + + + /************************************************************************** + * + * @function: + * FT_Done_Glyph + * + * @description: + * Destroy a given glyph. + * + * @input: + * glyph :: + * A handle to the target glyph object. + */ + FT_EXPORT( void ) + FT_Done_Glyph( FT_Glyph glyph ); + + /* */ + + + /* other helpful functions */ + + /************************************************************************** + * + * @section: + * computations + * + */ + + + /************************************************************************** + * + * @function: + * FT_Matrix_Multiply + * + * @description: + * Perform the matrix operation `b = a*b`. + * + * @input: + * a :: + * A pointer to matrix `a`. + * + * @inout: + * b :: + * A pointer to matrix `b`. + * + * @note: + * The result is undefined if either `a` or `b` is zero. + * + * Since the function uses wrap-around arithmetic, results become + * meaningless if the arguments are very large. + */ + FT_EXPORT( void ) + FT_Matrix_Multiply( const FT_Matrix* a, + FT_Matrix* b ); + + + /************************************************************************** + * + * @function: + * FT_Matrix_Invert + * + * @description: + * Invert a 2x2 matrix. Return an error if it can't be inverted. + * + * @inout: + * matrix :: + * A pointer to the target matrix. Remains untouched in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Matrix_Invert( FT_Matrix* matrix ); + + /* */ + + +FT_END_HEADER + +#endif /* FTGLYPH_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/CMU462/deps/freetype/include/freetype/ftgxval.h b/CMU462/deps/freetype/include/freetype/ftgxval.h new file mode 100644 index 0000000..b14f637 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftgxval.h @@ -0,0 +1,355 @@ +/**************************************************************************** + * + * ftgxval.h + * + * FreeType API for validating TrueTypeGX/AAT tables (specification). + * + * Copyright (C) 2004-2019 by + * Masatake YAMATO, Redhat K.K, + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + +/**************************************************************************** + * + * gxvalid is derived from both gxlayout module and otvalid module. + * Development of gxlayout is supported by the Information-technology + * Promotion Agency(IPA), Japan. + * + */ + + +#ifndef FTGXVAL_H_ +#define FTGXVAL_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * gx_validation + * + * @title: + * TrueTypeGX/AAT Validation + * + * @abstract: + * An API to validate TrueTypeGX/AAT tables. + * + * @description: + * This section contains the declaration of functions to validate some + * TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, trak, + * prop, lcar). + * + * @order: + * FT_TrueTypeGX_Validate + * FT_TrueTypeGX_Free + * + * FT_ClassicKern_Validate + * FT_ClassicKern_Free + * + * FT_VALIDATE_GX_LENGTH + * FT_VALIDATE_GXXXX + * FT_VALIDATE_CKERNXXX + * + */ + + /************************************************************************** + * + * + * Warning: Use `FT_VALIDATE_XXX` to validate a table. + * Following definitions are for gxvalid developers. + * + * + */ + +#define FT_VALIDATE_feat_INDEX 0 +#define FT_VALIDATE_mort_INDEX 1 +#define FT_VALIDATE_morx_INDEX 2 +#define FT_VALIDATE_bsln_INDEX 3 +#define FT_VALIDATE_just_INDEX 4 +#define FT_VALIDATE_kern_INDEX 5 +#define FT_VALIDATE_opbd_INDEX 6 +#define FT_VALIDATE_trak_INDEX 7 +#define FT_VALIDATE_prop_INDEX 8 +#define FT_VALIDATE_lcar_INDEX 9 +#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX + + + /************************************************************************** + * + * @macro: + * FT_VALIDATE_GX_LENGTH + * + * @description: + * The number of tables checked in this module. Use it as a parameter + * for the `table-length` argument of function @FT_TrueTypeGX_Validate. + */ +#define FT_VALIDATE_GX_LENGTH ( FT_VALIDATE_GX_LAST_INDEX + 1 ) + + /* */ + + /* Up to 0x1000 is used by otvalid. + Ox2xxx is reserved for feature OT extension. */ +#define FT_VALIDATE_GX_START 0x4000 +#define FT_VALIDATE_GX_BITFIELD( tag ) \ + ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) + + + /************************************************************************** + * + * @enum: + * FT_VALIDATE_GXXXX + * + * @description: + * A list of bit-field constants used with @FT_TrueTypeGX_Validate to + * indicate which TrueTypeGX/AAT Type tables should be validated. + * + * @values: + * FT_VALIDATE_feat :: + * Validate 'feat' table. + * + * FT_VALIDATE_mort :: + * Validate 'mort' table. + * + * FT_VALIDATE_morx :: + * Validate 'morx' table. + * + * FT_VALIDATE_bsln :: + * Validate 'bsln' table. + * + * FT_VALIDATE_just :: + * Validate 'just' table. + * + * FT_VALIDATE_kern :: + * Validate 'kern' table. + * + * FT_VALIDATE_opbd :: + * Validate 'opbd' table. + * + * FT_VALIDATE_trak :: + * Validate 'trak' table. + * + * FT_VALIDATE_prop :: + * Validate 'prop' table. + * + * FT_VALIDATE_lcar :: + * Validate 'lcar' table. + * + * FT_VALIDATE_GX :: + * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, + * opbd, trak, prop and lcar). + * + */ + +#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat ) +#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort ) +#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx ) +#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln ) +#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just ) +#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern ) +#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd ) +#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak ) +#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop ) +#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar ) + +#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \ + FT_VALIDATE_mort | \ + FT_VALIDATE_morx | \ + FT_VALIDATE_bsln | \ + FT_VALIDATE_just | \ + FT_VALIDATE_kern | \ + FT_VALIDATE_opbd | \ + FT_VALIDATE_trak | \ + FT_VALIDATE_prop | \ + FT_VALIDATE_lcar ) + + + /************************************************************************** + * + * @function: + * FT_TrueTypeGX_Validate + * + * @description: + * Validate various TrueTypeGX tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without error + * checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the tables to be validated. See + * @FT_VALIDATE_GXXXX for possible values. + * + * table_length :: + * The size of the `tables` array. Normally, @FT_VALIDATE_GX_LENGTH + * should be passed. + * + * @output: + * tables :: + * The array where all validated sfnt tables are stored. The array + * itself must be allocated by a client. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with TrueTypeGX fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the buffers pointed to by + * each `tables` element, by calling @FT_TrueTypeGX_Free. A `NULL` value + * indicates that the table either doesn't exist in the font, the + * application hasn't asked for validation, or the validator doesn't have + * the ability to validate the sfnt table. + */ + FT_EXPORT( FT_Error ) + FT_TrueTypeGX_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes tables[FT_VALIDATE_GX_LENGTH], + FT_UInt table_length ); + + + /************************************************************************** + * + * @function: + * FT_TrueTypeGX_Free + * + * @description: + * Free the buffer allocated by TrueTypeGX validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer allocated by @FT_TrueTypeGX_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_TrueTypeGX_Validate only. + */ + FT_EXPORT( void ) + FT_TrueTypeGX_Free( FT_Face face, + FT_Bytes table ); + + + /************************************************************************** + * + * @enum: + * FT_VALIDATE_CKERNXXX + * + * @description: + * A list of bit-field constants used with @FT_ClassicKern_Validate to + * indicate the classic kern dialect or dialects. If the selected type + * doesn't fit, @FT_ClassicKern_Validate regards the table as invalid. + * + * @values: + * FT_VALIDATE_MS :: + * Handle the 'kern' table as a classic Microsoft kern table. + * + * FT_VALIDATE_APPLE :: + * Handle the 'kern' table as a classic Apple kern table. + * + * FT_VALIDATE_CKERN :: + * Handle the 'kern' as either classic Apple or Microsoft kern table. + */ +#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 ) +#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 ) + +#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) + + + /************************************************************************** + * + * @function: + * FT_ClassicKern_Validate + * + * @description: + * Validate classic (16-bit format) kern table to assure that the + * offsets and indices are valid. The idea is that a higher-level + * library that actually does the text layout can access those tables + * without error checking (which can be quite time consuming). + * + * The 'kern' table validator in @FT_TrueTypeGX_Validate deals with both + * the new 32-bit format and the classic 16-bit format, while + * FT_ClassicKern_Validate only supports the classic 16-bit format. + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the dialect to be validated. See + * @FT_VALIDATE_CKERNXXX for possible values. + * + * @output: + * ckern_table :: + * A pointer to the kern table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * After use, the application should deallocate the buffers pointed to by + * `ckern_table`, by calling @FT_ClassicKern_Free. A `NULL` value + * indicates that the table doesn't exist in the font. + */ + FT_EXPORT( FT_Error ) + FT_ClassicKern_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *ckern_table ); + + + /************************************************************************** + * + * @function: + * FT_ClassicKern_Free + * + * @description: + * Free the buffer allocated by classic Kern validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_ClassicKern_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_ClassicKern_Validate only. + */ + FT_EXPORT( void ) + FT_ClassicKern_Free( FT_Face face, + FT_Bytes table ); + + /* */ + + +FT_END_HEADER + +#endif /* FTGXVAL_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftgzip.h b/CMU462/deps/freetype/include/freetype/ftgzip.h new file mode 100644 index 0000000..418c612 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftgzip.h @@ -0,0 +1,151 @@ +/**************************************************************************** + * + * ftgzip.h + * + * Gzip-compressed stream support. + * + * Copyright (C) 2002-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTGZIP_H_ +#define FTGZIP_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * gzip + * + * @title: + * GZIP Streams + * + * @abstract: + * Using gzip-compressed font files. + * + * @description: + * This section contains the declaration of Gzip-specific functions. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Stream_OpenGzip + * + * @description: + * Open a new stream to parse gzip-compressed font files. This is mainly + * used to support the compressed `*.pcf.gz` fonts that come with + * XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close` on the new stream will + * **not** call `FT_Stream_Close` on the source stream. None of the + * stream objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, gzip compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a gzipped stream from it + * and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature` if your build + * of FreeType was not compiled with zlib support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenGzip( FT_Stream stream, + FT_Stream source ); + + + /************************************************************************** + * + * @function: + * FT_Gzip_Uncompress + * + * @description: + * Decompress a zipped input buffer into an output buffer. This function + * is modeled after zlib's `uncompress` function. + * + * @input: + * memory :: + * A FreeType memory handle. + * + * input :: + * The input buffer. + * + * input_len :: + * The length of the input buffer. + * + * @output: + * output :: + * The output buffer. + * + * @inout: + * output_len :: + * Before calling the function, this is the total size of the output + * buffer, which must be large enough to hold the entire uncompressed + * data (so the size of the uncompressed data must be known in + * advance). After calling the function, `output_len` is the size of + * the used data in `output`. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function may return `FT_Err_Unimplemented_Feature` if your build + * of FreeType was not compiled with zlib support. + * + * @since: + * 2.5.1 + */ + FT_EXPORT( FT_Error ) + FT_Gzip_Uncompress( FT_Memory memory, + FT_Byte* output, + FT_ULong* output_len, + const FT_Byte* input, + FT_ULong input_len ); + + /* */ + + +FT_END_HEADER + +#endif /* FTGZIP_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftimage.h b/CMU462/deps/freetype/include/freetype/ftimage.h new file mode 100644 index 0000000..face34f --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftimage.h @@ -0,0 +1,1238 @@ +/**************************************************************************** + * + * ftimage.h + * + * FreeType glyph image formats and default raster interface + * (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + /************************************************************************** + * + * Note: A 'raster' is simply a scan-line converter, used to render + * FT_Outlines into FT_Bitmaps. + * + */ + + +#ifndef FTIMAGE_H_ +#define FTIMAGE_H_ + + + /* STANDALONE_ is from ftgrays.c */ +#ifndef STANDALONE_ +#include <ft2build.h> +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * basic_types + * + */ + + + /************************************************************************** + * + * @type: + * FT_Pos + * + * @description: + * The type FT_Pos is used to store vectorial coordinates. Depending on + * the context, these can represent distances in integer font units, or + * 16.16, or 26.6 fixed-point pixel coordinates. + */ + typedef signed long FT_Pos; + + + /************************************************************************** + * + * @struct: + * FT_Vector + * + * @description: + * A simple structure used to store a 2D vector; coordinates are of the + * FT_Pos type. + * + * @fields: + * x :: + * The horizontal coordinate. + * y :: + * The vertical coordinate. + */ + typedef struct FT_Vector_ + { + FT_Pos x; + FT_Pos y; + + } FT_Vector; + + + /************************************************************************** + * + * @struct: + * FT_BBox + * + * @description: + * A structure used to hold an outline's bounding box, i.e., the + * coordinates of its extrema in the horizontal and vertical directions. + * + * @fields: + * xMin :: + * The horizontal minimum (left-most). + * + * yMin :: + * The vertical minimum (bottom-most). + * + * xMax :: + * The horizontal maximum (right-most). + * + * yMax :: + * The vertical maximum (top-most). + * + * @note: + * The bounding box is specified with the coordinates of the lower left + * and the upper right corner. In PostScript, those values are often + * called (llx,lly) and (urx,ury), respectively. + * + * If `yMin` is negative, this value gives the glyph's descender. + * Otherwise, the glyph doesn't descend below the baseline. Similarly, + * if `ymax` is positive, this value gives the glyph's ascender. + * + * `xMin` gives the horizontal distance from the glyph's origin to the + * left edge of the glyph's bounding box. If `xMin` is negative, the + * glyph extends to the left of the origin. + */ + typedef struct FT_BBox_ + { + FT_Pos xMin, yMin; + FT_Pos xMax, yMax; + + } FT_BBox; + + + /************************************************************************** + * + * @enum: + * FT_Pixel_Mode + * + * @description: + * An enumeration type used to describe the format of pixels in a given + * bitmap. Note that additional formats may be added in the future. + * + * @values: + * FT_PIXEL_MODE_NONE :: + * Value~0 is reserved. + * + * FT_PIXEL_MODE_MONO :: + * A monochrome bitmap, using 1~bit per pixel. Note that pixels are + * stored in most-significant order (MSB), which means that the + * left-most pixel in a byte has value 128. + * + * FT_PIXEL_MODE_GRAY :: + * An 8-bit bitmap, generally used to represent anti-aliased glyph + * images. Each pixel is stored in one byte. Note that the number of + * 'gray' levels is stored in the `num_grays` field of the @FT_Bitmap + * structure (it generally is 256). + * + * FT_PIXEL_MODE_GRAY2 :: + * A 2-bit per pixel bitmap, used to represent embedded anti-aliased + * bitmaps in font files according to the OpenType specification. We + * haven't found a single font using this format, however. + * + * FT_PIXEL_MODE_GRAY4 :: + * A 4-bit per pixel bitmap, representing embedded anti-aliased bitmaps + * in font files according to the OpenType specification. We haven't + * found a single font using this format, however. + * + * FT_PIXEL_MODE_LCD :: + * An 8-bit bitmap, representing RGB or BGR decimated glyph images used + * for display on LCD displays; the bitmap is three times wider than + * the original glyph image. See also @FT_RENDER_MODE_LCD. + * + * FT_PIXEL_MODE_LCD_V :: + * An 8-bit bitmap, representing RGB or BGR decimated glyph images used + * for display on rotated LCD displays; the bitmap is three times + * taller than the original glyph image. See also + * @FT_RENDER_MODE_LCD_V. + * + * FT_PIXEL_MODE_BGRA :: + * [Since 2.5] An image with four 8-bit channels per pixel, + * representing a color image (such as emoticons) with alpha channel. + * For each pixel, the format is BGRA, which means, the blue channel + * comes first in memory. The color channels are pre-multiplied and in + * the sRGB colorspace. For example, full red at half-translucent + * opacity will be represented as '00,00,80,80', not '00,00,FF,80'. + * See also @FT_LOAD_COLOR. + */ + typedef enum FT_Pixel_Mode_ + { + FT_PIXEL_MODE_NONE = 0, + FT_PIXEL_MODE_MONO, + FT_PIXEL_MODE_GRAY, + FT_PIXEL_MODE_GRAY2, + FT_PIXEL_MODE_GRAY4, + FT_PIXEL_MODE_LCD, + FT_PIXEL_MODE_LCD_V, + FT_PIXEL_MODE_BGRA, + + FT_PIXEL_MODE_MAX /* do not remove */ + + } FT_Pixel_Mode; + + + /* these constants are deprecated; use the corresponding `FT_Pixel_Mode` */ + /* values instead. */ +#define ft_pixel_mode_none FT_PIXEL_MODE_NONE +#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO +#define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY +#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 +#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 + + + /************************************************************************** + * + * @struct: + * FT_Bitmap + * + * @description: + * A structure used to describe a bitmap or pixmap to the raster. Note + * that we now manage pixmaps of various depths through the `pixel_mode` + * field. + * + * @fields: + * rows :: + * The number of bitmap rows. + * + * width :: + * The number of pixels in bitmap row. + * + * pitch :: + * The pitch's absolute value is the number of bytes taken by one + * bitmap row, including padding. However, the pitch is positive when + * the bitmap has a 'down' flow, and negative when it has an 'up' flow. + * In all cases, the pitch is an offset to add to a bitmap pointer in + * order to go down one row. + * + * Note that 'padding' means the alignment of a bitmap to a byte + * border, and FreeType functions normally align to the smallest + * possible integer value. + * + * For the B/W rasterizer, `pitch` is always an even number. + * + * To change the pitch of a bitmap (say, to make it a multiple of 4), + * use @FT_Bitmap_Convert. Alternatively, you might use callback + * functions to directly render to the application's surface; see the + * file `example2.cpp` in the tutorial for a demonstration. + * + * buffer :: + * A typeless pointer to the bitmap buffer. This value should be + * aligned on 32-bit boundaries in most cases. + * + * num_grays :: + * This field is only used with @FT_PIXEL_MODE_GRAY; it gives the + * number of gray levels used in the bitmap. + * + * pixel_mode :: + * The pixel mode, i.e., how pixel bits are stored. See @FT_Pixel_Mode + * for possible values. + * + * palette_mode :: + * This field is intended for paletted pixel modes; it indicates how + * the palette is stored. Not used currently. + * + * palette :: + * A typeless pointer to the bitmap palette; this field is intended for + * paletted pixel modes. Not used currently. + */ + typedef struct FT_Bitmap_ + { + unsigned int rows; + unsigned int width; + int pitch; + unsigned char* buffer; + unsigned short num_grays; + unsigned char pixel_mode; + unsigned char palette_mode; + void* palette; + + } FT_Bitmap; + + + /************************************************************************** + * + * @section: + * outline_processing + * + */ + + + /************************************************************************** + * + * @struct: + * FT_Outline + * + * @description: + * This structure is used to describe an outline to the scan-line + * converter. + * + * @fields: + * n_contours :: + * The number of contours in the outline. + * + * n_points :: + * The number of points in the outline. + * + * points :: + * A pointer to an array of `n_points` @FT_Vector elements, giving the + * outline's point coordinates. + * + * tags :: + * A pointer to an array of `n_points` chars, giving each outline + * point's type. + * + * If bit~0 is unset, the point is 'off' the curve, i.e., a Bezier + * control point, while it is 'on' if set. + * + * Bit~1 is meaningful for 'off' points only. If set, it indicates a + * third-order Bezier arc control point; and a second-order control + * point if unset. + * + * If bit~2 is set, bits 5-7 contain the drop-out mode (as defined in + * the OpenType specification; the value is the same as the argument to + * the 'SCANMODE' instruction). + * + * Bits 3 and~4 are reserved for internal purposes. + * + * contours :: + * An array of `n_contours` shorts, giving the end point of each + * contour within the outline. For example, the first contour is + * defined by the points '0' to `contours[0]`, the second one is + * defined by the points `contours[0]+1` to `contours[1]`, etc. + * + * flags :: + * A set of bit flags used to characterize the outline and give hints + * to the scan-converter and hinter on how to convert/grid-fit it. See + * @FT_OUTLINE_XXX. + * + * @note: + * The B/W rasterizer only checks bit~2 in the `tags` array for the first + * point of each contour. The drop-out mode as given with + * @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and + * @FT_OUTLINE_INCLUDE_STUBS in `flags` is then overridden. + */ + typedef struct FT_Outline_ + { + short n_contours; /* number of contours in glyph */ + short n_points; /* number of points in the glyph */ + + FT_Vector* points; /* the outline's points */ + char* tags; /* the points flags */ + short* contours; /* the contour end points */ + + int flags; /* outline masks */ + + } FT_Outline; + + /* */ + + /* Following limits must be consistent with */ + /* FT_Outline.{n_contours,n_points} */ +#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX +#define FT_OUTLINE_POINTS_MAX SHRT_MAX + + + /************************************************************************** + * + * @enum: + * FT_OUTLINE_XXX + * + * @description: + * A list of bit-field constants used for the flags in an outline's + * `flags` field. + * + * @values: + * FT_OUTLINE_NONE :: + * Value~0 is reserved. + * + * FT_OUTLINE_OWNER :: + * If set, this flag indicates that the outline's field arrays (i.e., + * `points`, `flags`, and `contours`) are 'owned' by the outline + * object, and should thus be freed when it is destroyed. + * + * FT_OUTLINE_EVEN_ODD_FILL :: + * By default, outlines are filled using the non-zero winding rule. If + * set to 1, the outline will be filled using the even-odd fill rule + * (only works with the smooth rasterizer). + * + * FT_OUTLINE_REVERSE_FILL :: + * By default, outside contours of an outline are oriented in + * clock-wise direction, as defined in the TrueType specification. + * This flag is set if the outline uses the opposite direction + * (typically for Type~1 fonts). This flag is ignored by the scan + * converter. + * + * FT_OUTLINE_IGNORE_DROPOUTS :: + * By default, the scan converter will try to detect drop-outs in an + * outline and correct the glyph bitmap to ensure consistent shape + * continuity. If set, this flag hints the scan-line converter to + * ignore such cases. See below for more information. + * + * FT_OUTLINE_SMART_DROPOUTS :: + * Select smart dropout control. If unset, use simple dropout control. + * Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for more + * information. + * + * FT_OUTLINE_INCLUDE_STUBS :: + * If set, turn pixels on for 'stubs', otherwise exclude them. Ignored + * if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for more + * information. + * + * FT_OUTLINE_HIGH_PRECISION :: + * This flag indicates that the scan-line converter should try to + * convert this outline to bitmaps with the highest possible quality. + * It is typically set for small character sizes. Note that this is + * only a hint that might be completely ignored by a given + * scan-converter. + * + * FT_OUTLINE_SINGLE_PASS :: + * This flag is set to force a given scan-converter to only use a + * single pass over the outline to render a bitmap glyph image. + * Normally, it is set for very large character sizes. It is only a + * hint that might be completely ignored by a given scan-converter. + * + * @note: + * The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and + * @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth rasterizer. + * + * There exists a second mechanism to pass the drop-out mode to the B/W + * rasterizer; see the `tags` field in @FT_Outline. + * + * Please refer to the description of the 'SCANTYPE' instruction in the + * OpenType specification (in file `ttinst1.doc`) how simple drop-outs, + * smart drop-outs, and stubs are defined. + */ +#define FT_OUTLINE_NONE 0x0 +#define FT_OUTLINE_OWNER 0x1 +#define FT_OUTLINE_EVEN_ODD_FILL 0x2 +#define FT_OUTLINE_REVERSE_FILL 0x4 +#define FT_OUTLINE_IGNORE_DROPOUTS 0x8 +#define FT_OUTLINE_SMART_DROPOUTS 0x10 +#define FT_OUTLINE_INCLUDE_STUBS 0x20 + +#define FT_OUTLINE_HIGH_PRECISION 0x100 +#define FT_OUTLINE_SINGLE_PASS 0x200 + + + /* these constants are deprecated; use the corresponding */ + /* `FT_OUTLINE_XXX` values instead */ +#define ft_outline_none FT_OUTLINE_NONE +#define ft_outline_owner FT_OUTLINE_OWNER +#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL +#define ft_outline_reverse_fill FT_OUTLINE_REVERSE_FILL +#define ft_outline_ignore_dropouts FT_OUTLINE_IGNORE_DROPOUTS +#define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION +#define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS + + /* */ + +#define FT_CURVE_TAG( flag ) ( flag & 0x03 ) + + /* see the `tags` field in `FT_Outline` for a description of the values */ +#define FT_CURVE_TAG_ON 0x01 +#define FT_CURVE_TAG_CONIC 0x00 +#define FT_CURVE_TAG_CUBIC 0x02 + +#define FT_CURVE_TAG_HAS_SCANMODE 0x04 + +#define FT_CURVE_TAG_TOUCH_X 0x08 /* reserved for TrueType hinter */ +#define FT_CURVE_TAG_TOUCH_Y 0x10 /* reserved for TrueType hinter */ + +#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \ + FT_CURVE_TAG_TOUCH_Y ) + /* values 0x20, 0x40, and 0x80 are reserved */ + + + /* these constants are deprecated; use the corresponding */ + /* `FT_CURVE_TAG_XXX` values instead */ +#define FT_Curve_Tag_On FT_CURVE_TAG_ON +#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC +#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC +#define FT_Curve_Tag_Touch_X FT_CURVE_TAG_TOUCH_X +#define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y + + + /************************************************************************** + * + * @functype: + * FT_Outline_MoveToFunc + * + * @description: + * A function pointer type used to describe the signature of a 'move to' + * function during outline walking/decomposition. + * + * A 'move to' is emitted to start a new contour in an outline. + * + * @input: + * to :: + * A pointer to the target point of the 'move to'. + * + * user :: + * A typeless pointer, which is passed from the caller of the + * decomposition function. + * + * @return: + * Error code. 0~means success. + */ + typedef int + (*FT_Outline_MoveToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc + + + /************************************************************************** + * + * @functype: + * FT_Outline_LineToFunc + * + * @description: + * A function pointer type used to describe the signature of a 'line to' + * function during outline walking/decomposition. + * + * A 'line to' is emitted to indicate a segment in the outline. + * + * @input: + * to :: + * A pointer to the target point of the 'line to'. + * + * user :: + * A typeless pointer, which is passed from the caller of the + * decomposition function. + * + * @return: + * Error code. 0~means success. + */ + typedef int + (*FT_Outline_LineToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_LineTo_Func FT_Outline_LineToFunc + + + /************************************************************************** + * + * @functype: + * FT_Outline_ConicToFunc + * + * @description: + * A function pointer type used to describe the signature of a 'conic to' + * function during outline walking or decomposition. + * + * A 'conic to' is emitted to indicate a second-order Bezier arc in the + * outline. + * + * @input: + * control :: + * An intermediate control point between the last position and the new + * target in `to`. + * + * to :: + * A pointer to the target end point of the conic arc. + * + * user :: + * A typeless pointer, which is passed from the caller of the + * decomposition function. + * + * @return: + * Error code. 0~means success. + */ + typedef int + (*FT_Outline_ConicToFunc)( const FT_Vector* control, + const FT_Vector* to, + void* user ); + +#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc + + + /************************************************************************** + * + * @functype: + * FT_Outline_CubicToFunc + * + * @description: + * A function pointer type used to describe the signature of a 'cubic to' + * function during outline walking or decomposition. + * + * A 'cubic to' is emitted to indicate a third-order Bezier arc. + * + * @input: + * control1 :: + * A pointer to the first Bezier control point. + * + * control2 :: + * A pointer to the second Bezier control point. + * + * to :: + * A pointer to the target end point. + * + * user :: + * A typeless pointer, which is passed from the caller of the + * decomposition function. + * + * @return: + * Error code. 0~means success. + */ + typedef int + (*FT_Outline_CubicToFunc)( const FT_Vector* control1, + const FT_Vector* control2, + const FT_Vector* to, + void* user ); + +#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc + + + /************************************************************************** + * + * @struct: + * FT_Outline_Funcs + * + * @description: + * A structure to hold various function pointers used during outline + * decomposition in order to emit segments, conic, and cubic Beziers. + * + * @fields: + * move_to :: + * The 'move to' emitter. + * + * line_to :: + * The segment emitter. + * + * conic_to :: + * The second-order Bezier arc emitter. + * + * cubic_to :: + * The third-order Bezier arc emitter. + * + * shift :: + * The shift that is applied to coordinates before they are sent to the + * emitter. + * + * delta :: + * The delta that is applied to coordinates before they are sent to the + * emitter, but after the shift. + * + * @note: + * The point coordinates sent to the emitters are the transformed version + * of the original coordinates (this is important for high accuracy + * during scan-conversion). The transformation is simple: + * + * ``` + * x' = (x << shift) - delta + * y' = (y << shift) - delta + * ``` + * + * Set the values of `shift` and `delta` to~0 to get the original point + * coordinates. + */ + typedef struct FT_Outline_Funcs_ + { + FT_Outline_MoveToFunc move_to; + FT_Outline_LineToFunc line_to; + FT_Outline_ConicToFunc conic_to; + FT_Outline_CubicToFunc cubic_to; + + int shift; + FT_Pos delta; + + } FT_Outline_Funcs; + + + /************************************************************************** + * + * @section: + * basic_types + * + */ + + + /************************************************************************** + * + * @macro: + * FT_IMAGE_TAG + * + * @description: + * This macro converts four-letter tags to an unsigned long type. + * + * @note: + * Since many 16-bit compilers don't like 32-bit enumerations, you should + * redefine this macro in case of problems to something like this: + * + * ``` + * #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value + * ``` + * + * to get a simple enumeration without assigning special numbers. + */ +#ifndef FT_IMAGE_TAG +#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ + value = ( ( (unsigned long)_x1 << 24 ) | \ + ( (unsigned long)_x2 << 16 ) | \ + ( (unsigned long)_x3 << 8 ) | \ + (unsigned long)_x4 ) +#endif /* FT_IMAGE_TAG */ + + + /************************************************************************** + * + * @enum: + * FT_Glyph_Format + * + * @description: + * An enumeration type used to describe the format of a given glyph + * image. Note that this version of FreeType only supports two image + * formats, even though future font drivers will be able to register + * their own format. + * + * @values: + * FT_GLYPH_FORMAT_NONE :: + * The value~0 is reserved. + * + * FT_GLYPH_FORMAT_COMPOSITE :: + * The glyph image is a composite of several other images. This format + * is _only_ used with @FT_LOAD_NO_RECURSE, and is used to report + * compound glyphs (like accented characters). + * + * FT_GLYPH_FORMAT_BITMAP :: + * The glyph image is a bitmap, and can be described as an @FT_Bitmap. + * You generally need to access the `bitmap` field of the + * @FT_GlyphSlotRec structure to read it. + * + * FT_GLYPH_FORMAT_OUTLINE :: + * The glyph image is a vectorial outline made of line segments and + * Bezier arcs; it can be described as an @FT_Outline; you generally + * want to access the `outline` field of the @FT_GlyphSlotRec structure + * to read it. + * + * FT_GLYPH_FORMAT_PLOTTER :: + * The glyph image is a vectorial path with no inside and outside + * contours. Some Type~1 fonts, like those in the Hershey family, + * contain glyphs in this format. These are described as @FT_Outline, + * but FreeType isn't currently capable of rendering them correctly. + */ + typedef enum FT_Glyph_Format_ + { + FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), + + FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) + + } FT_Glyph_Format; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Glyph_Format` values instead. */ +#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE +#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE +#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP +#define ft_glyph_format_outline FT_GLYPH_FORMAT_OUTLINE +#define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** R A S T E R D E F I N I T I O N S *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * A raster is a scan converter, in charge of rendering an outline into a + * bitmap. This section contains the public API for rasters. + * + * Note that in FreeType 2, all rasters are now encapsulated within + * specific modules called 'renderers'. See `ftrender.h` for more details + * on renderers. + * + */ + + + /************************************************************************** + * + * @section: + * raster + * + * @title: + * Scanline Converter + * + * @abstract: + * How vectorial outlines are converted into bitmaps and pixmaps. + * + * @description: + * This section contains technical definitions. + * + * @order: + * FT_Raster + * FT_Span + * FT_SpanFunc + * + * FT_Raster_Params + * FT_RASTER_FLAG_XXX + * + * FT_Raster_NewFunc + * FT_Raster_DoneFunc + * FT_Raster_ResetFunc + * FT_Raster_SetModeFunc + * FT_Raster_RenderFunc + * FT_Raster_Funcs + * + */ + + + /************************************************************************** + * + * @type: + * FT_Raster + * + * @description: + * An opaque handle (pointer) to a raster object. Each object can be + * used independently to convert an outline into a bitmap or pixmap. + */ + typedef struct FT_RasterRec_* FT_Raster; + + + /************************************************************************** + * + * @struct: + * FT_Span + * + * @description: + * A structure used to model a single span of gray pixels when rendering + * an anti-aliased bitmap. + * + * @fields: + * x :: + * The span's horizontal start position. + * + * len :: + * The span's length in pixels. + * + * coverage :: + * The span color/coverage, ranging from 0 (background) to 255 + * (foreground). + * + * @note: + * This structure is used by the span drawing callback type named + * @FT_SpanFunc that takes the y~coordinate of the span as a parameter. + * + * The coverage value is always between 0 and 255. If you want less gray + * values, the callback function has to reduce them. + */ + typedef struct FT_Span_ + { + short x; + unsigned short len; + unsigned char coverage; + + } FT_Span; + + + /************************************************************************** + * + * @functype: + * FT_SpanFunc + * + * @description: + * A function used as a call-back by the anti-aliased renderer in order + * to let client applications draw themselves the gray pixel spans on + * each scan line. + * + * @input: + * y :: + * The scanline's upward y~coordinate. + * + * count :: + * The number of spans to draw on this scanline. + * + * spans :: + * A table of `count` spans to draw on the scanline. + * + * user :: + * User-supplied data that is passed to the callback. + * + * @note: + * This callback allows client applications to directly render the gray + * spans of the anti-aliased bitmap to any kind of surfaces. + * + * This can be used to write anti-aliased outlines directly to a given + * background bitmap, and even perform translucency. + */ + typedef void + (*FT_SpanFunc)( int y, + int count, + const FT_Span* spans, + void* user ); + +#define FT_Raster_Span_Func FT_SpanFunc + + + /************************************************************************** + * + * @functype: + * FT_Raster_BitTest_Func + * + * @description: + * Deprecated, unimplemented. + */ + typedef int + (*FT_Raster_BitTest_Func)( int y, + int x, + void* user ); + + + /************************************************************************** + * + * @functype: + * FT_Raster_BitSet_Func + * + * @description: + * Deprecated, unimplemented. + */ + typedef void + (*FT_Raster_BitSet_Func)( int y, + int x, + void* user ); + + + /************************************************************************** + * + * @enum: + * FT_RASTER_FLAG_XXX + * + * @description: + * A list of bit flag constants as used in the `flags` field of a + * @FT_Raster_Params structure. + * + * @values: + * FT_RASTER_FLAG_DEFAULT :: + * This value is 0. + * + * FT_RASTER_FLAG_AA :: + * This flag is set to indicate that an anti-aliased glyph image should + * be generated. Otherwise, it will be monochrome (1-bit). + * + * FT_RASTER_FLAG_DIRECT :: + * This flag is set to indicate direct rendering. In this mode, client + * applications must provide their own span callback. This lets them + * directly draw or compose over an existing bitmap. If this bit is + * _not_ set, the target pixmap's buffer _must_ be zeroed before + * rendering and the output will be clipped to its size. + * + * Direct rendering is only possible with anti-aliased glyphs. + * + * FT_RASTER_FLAG_CLIP :: + * This flag is only used in direct rendering mode. If set, the output + * will be clipped to a box specified in the `clip_box` field of the + * @FT_Raster_Params structure. Otherwise, the `clip_box` is + * effectively set to the bounding box and all spans are generated. + */ +#define FT_RASTER_FLAG_DEFAULT 0x0 +#define FT_RASTER_FLAG_AA 0x1 +#define FT_RASTER_FLAG_DIRECT 0x2 +#define FT_RASTER_FLAG_CLIP 0x4 + + /* these constants are deprecated; use the corresponding */ + /* `FT_RASTER_FLAG_XXX` values instead */ +#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT +#define ft_raster_flag_aa FT_RASTER_FLAG_AA +#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT +#define ft_raster_flag_clip FT_RASTER_FLAG_CLIP + + + /************************************************************************** + * + * @struct: + * FT_Raster_Params + * + * @description: + * A structure to hold the parameters used by a raster's render function, + * passed as an argument to @FT_Outline_Render. + * + * @fields: + * target :: + * The target bitmap. + * + * source :: + * A pointer to the source glyph image (e.g., an @FT_Outline). + * + * flags :: + * The rendering flags. + * + * gray_spans :: + * The gray span drawing callback. + * + * black_spans :: + * Unused. + * + * bit_test :: + * Unused. + * + * bit_set :: + * Unused. + * + * user :: + * User-supplied data that is passed to each drawing callback. + * + * clip_box :: + * An optional clipping box. It is only used in direct rendering mode. + * Note that coordinates here should be expressed in _integer_ pixels + * (and not in 26.6 fixed-point units). + * + * @note: + * An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA bit + * flag is set in the `flags` field, otherwise a monochrome bitmap is + * generated. + * + * If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags`, the raster + * will call the `gray_spans` callback to draw gray pixel spans. This + * allows direct composition over a pre-existing bitmap through + * user-provided callbacks to perform the span drawing and composition. + * Not supported by the monochrome rasterizer. + */ + typedef struct FT_Raster_Params_ + { + const FT_Bitmap* target; + const void* source; + int flags; + FT_SpanFunc gray_spans; + FT_SpanFunc black_spans; /* unused */ + FT_Raster_BitTest_Func bit_test; /* unused */ + FT_Raster_BitSet_Func bit_set; /* unused */ + void* user; + FT_BBox clip_box; + + } FT_Raster_Params; + + + /************************************************************************** + * + * @functype: + * FT_Raster_NewFunc + * + * @description: + * A function used to create a new raster object. + * + * @input: + * memory :: + * A handle to the memory allocator. + * + * @output: + * raster :: + * A handle to the new raster object. + * + * @return: + * Error code. 0~means success. + * + * @note: + * The `memory` parameter is a typeless pointer in order to avoid + * un-wanted dependencies on the rest of the FreeType code. In practice, + * it is an @FT_Memory object, i.e., a handle to the standard FreeType + * memory allocator. However, this field can be completely ignored by a + * given raster implementation. + */ + typedef int + (*FT_Raster_NewFunc)( void* memory, + FT_Raster* raster ); + +#define FT_Raster_New_Func FT_Raster_NewFunc + + + /************************************************************************** + * + * @functype: + * FT_Raster_DoneFunc + * + * @description: + * A function used to destroy a given raster object. + * + * @input: + * raster :: + * A handle to the raster object. + */ + typedef void + (*FT_Raster_DoneFunc)( FT_Raster raster ); + +#define FT_Raster_Done_Func FT_Raster_DoneFunc + + + /************************************************************************** + * + * @functype: + * FT_Raster_ResetFunc + * + * @description: + * FreeType used to provide an area of memory called the 'render pool' + * available to all registered rasterizers. This was not thread safe, + * however, and now FreeType never allocates this pool. + * + * This function is called after a new raster object is created. + * + * @input: + * raster :: + * A handle to the new raster object. + * + * pool_base :: + * Previously, the address in memory of the render pool. Set this to + * `NULL`. + * + * pool_size :: + * Previously, the size in bytes of the render pool. Set this to 0. + * + * @note: + * Rasterizers should rely on dynamic or stack allocation if they want to + * (a handle to the memory allocator is passed to the rasterizer + * constructor). + */ + typedef void + (*FT_Raster_ResetFunc)( FT_Raster raster, + unsigned char* pool_base, + unsigned long pool_size ); + +#define FT_Raster_Reset_Func FT_Raster_ResetFunc + + + /************************************************************************** + * + * @functype: + * FT_Raster_SetModeFunc + * + * @description: + * This function is a generic facility to change modes or attributes in a + * given raster. This can be used for debugging purposes, or simply to + * allow implementation-specific 'features' in a given raster module. + * + * @input: + * raster :: + * A handle to the new raster object. + * + * mode :: + * A 4-byte tag used to name the mode or property. + * + * args :: + * A pointer to the new mode/property to use. + */ + typedef int + (*FT_Raster_SetModeFunc)( FT_Raster raster, + unsigned long mode, + void* args ); + +#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc + + + /************************************************************************** + * + * @functype: + * FT_Raster_RenderFunc + * + * @description: + * Invoke a given raster to scan-convert a given glyph image into a + * target bitmap. + * + * @input: + * raster :: + * A handle to the raster object. + * + * params :: + * A pointer to an @FT_Raster_Params structure used to store the + * rendering parameters. + * + * @return: + * Error code. 0~means success. + * + * @note: + * The exact format of the source image depends on the raster's glyph + * format defined in its @FT_Raster_Funcs structure. It can be an + * @FT_Outline or anything else in order to support a large array of + * glyph formats. + * + * Note also that the render function can fail and return a + * `FT_Err_Unimplemented_Feature` error code if the raster used does not + * support direct composition. + */ + typedef int + (*FT_Raster_RenderFunc)( FT_Raster raster, + const FT_Raster_Params* params ); + +#define FT_Raster_Render_Func FT_Raster_RenderFunc + + + /************************************************************************** + * + * @struct: + * FT_Raster_Funcs + * + * @description: + * A structure used to describe a given raster class to the library. + * + * @fields: + * glyph_format :: + * The supported glyph format for this raster. + * + * raster_new :: + * The raster constructor. + * + * raster_reset :: + * Used to reset the render pool within the raster. + * + * raster_render :: + * A function to render a glyph into a given bitmap. + * + * raster_done :: + * The raster destructor. + */ + typedef struct FT_Raster_Funcs_ + { + FT_Glyph_Format glyph_format; + + FT_Raster_NewFunc raster_new; + FT_Raster_ResetFunc raster_reset; + FT_Raster_SetModeFunc raster_set_mode; + FT_Raster_RenderFunc raster_render; + FT_Raster_DoneFunc raster_done; + + } FT_Raster_Funcs; + + /* */ + + +FT_END_HEADER + +#endif /* FTIMAGE_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/CMU462/deps/freetype/include/freetype/ftincrem.h b/CMU462/deps/freetype/include/freetype/ftincrem.h new file mode 100644 index 0000000..a4db02b --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftincrem.h @@ -0,0 +1,344 @@ +/**************************************************************************** + * + * ftincrem.h + * + * FreeType incremental loading (specification). + * + * Copyright (C) 2002-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTINCREM_H_ +#define FTINCREM_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_PARAMETER_TAGS_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * incremental + * + * @title: + * Incremental Loading + * + * @abstract: + * Custom Glyph Loading. + * + * @description: + * This section contains various functions used to perform so-called + * 'incremental' glyph loading. This is a mode where all glyphs loaded + * from a given @FT_Face are provided by the client application. + * + * Apart from that, all other tables are loaded normally from the font + * file. This mode is useful when FreeType is used within another + * engine, e.g., a PostScript Imaging Processor. + * + * To enable this mode, you must use @FT_Open_Face, passing an + * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an + * @FT_Incremental_Interface value. See the comments for + * @FT_Incremental_InterfaceRec for an example. + * + */ + + + /************************************************************************** + * + * @type: + * FT_Incremental + * + * @description: + * An opaque type describing a user-provided object used to implement + * 'incremental' glyph loading within FreeType. This is used to support + * embedded fonts in certain environments (e.g., PostScript + * interpreters), where the glyph data isn't in the font file, or must be + * overridden by different values. + * + * @note: + * It is up to client applications to create and implement + * @FT_Incremental objects, as long as they provide implementations for + * the methods @FT_Incremental_GetGlyphDataFunc, + * @FT_Incremental_FreeGlyphDataFunc and + * @FT_Incremental_GetGlyphMetricsFunc. + * + * See the description of @FT_Incremental_InterfaceRec to understand how + * to use incremental objects with FreeType. + * + */ + typedef struct FT_IncrementalRec_* FT_Incremental; + + + /************************************************************************** + * + * @struct: + * FT_Incremental_MetricsRec + * + * @description: + * A small structure used to contain the basic glyph metrics returned by + * the @FT_Incremental_GetGlyphMetricsFunc method. + * + * @fields: + * bearing_x :: + * Left bearing, in font units. + * + * bearing_y :: + * Top bearing, in font units. + * + * advance :: + * Horizontal component of glyph advance, in font units. + * + * advance_v :: + * Vertical component of glyph advance, in font units. + * + * @note: + * These correspond to horizontal or vertical metrics depending on the + * value of the `vertical` argument to the function + * @FT_Incremental_GetGlyphMetricsFunc. + * + */ + typedef struct FT_Incremental_MetricsRec_ + { + FT_Long bearing_x; + FT_Long bearing_y; + FT_Long advance; + FT_Long advance_v; /* since 2.3.12 */ + + } FT_Incremental_MetricsRec; + + + /************************************************************************** + * + * @struct: + * FT_Incremental_Metrics + * + * @description: + * A handle to an @FT_Incremental_MetricsRec structure. + * + */ + typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics; + + + /************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphDataFunc + * + * @description: + * A function called by FreeType to access a given glyph's data bytes + * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is + * enabled. + * + * Note that the format of the glyph's data bytes depends on the font + * file format. For TrueType, it must correspond to the raw bytes within + * the 'glyf' table. For PostScript formats, it must correspond to the + * **unencrypted** charstring bytes, without any `lenIV` header. It is + * undefined for any other format. + * + * @input: + * incremental :: + * Handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * @output: + * adata :: + * A structure describing the returned glyph data bytes (which will be + * accessed as a read-only byte block). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If this function returns successfully the method + * @FT_Incremental_FreeGlyphDataFunc will be called later to release the + * data bytes. + * + * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for + * compound glyphs. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Data* adata ); + + + /************************************************************************** + * + * @type: + * FT_Incremental_FreeGlyphDataFunc + * + * @description: + * A function used to release the glyph data bytes returned by a + * successful call to @FT_Incremental_GetGlyphDataFunc. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * data :: + * A structure describing the glyph data bytes (which will be accessed + * as a read-only byte block). + * + */ + typedef void + (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, + FT_Data* data ); + + + /************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphMetricsFunc + * + * @description: + * A function used to retrieve the basic metrics of a given glyph index + * before accessing its data. This is necessary because, in certain + * formats like TrueType, the metrics are stored in a different place + * from the glyph images proper. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * vertical :: + * If true, return vertical metrics. + * + * ametrics :: + * This parameter is used for both input and output. The original + * glyph metrics, if any, in font units. If metrics are not available + * all the values must be set to zero. + * + * @output: + * ametrics :: + * The replacement glyph metrics in font units. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphMetricsFunc) + ( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Bool vertical, + FT_Incremental_MetricsRec *ametrics ); + + + /************************************************************************** + * + * @struct: + * FT_Incremental_FuncsRec + * + * @description: + * A table of functions for accessing fonts that load data incrementally. + * Used in @FT_Incremental_InterfaceRec. + * + * @fields: + * get_glyph_data :: + * The function to get glyph data. Must not be null. + * + * free_glyph_data :: + * The function to release glyph data. Must not be null. + * + * get_glyph_metrics :: + * The function to get glyph metrics. May be null if the font does not + * provide overriding glyph metrics. + * + */ + typedef struct FT_Incremental_FuncsRec_ + { + FT_Incremental_GetGlyphDataFunc get_glyph_data; + FT_Incremental_FreeGlyphDataFunc free_glyph_data; + FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; + + } FT_Incremental_FuncsRec; + + + /************************************************************************** + * + * @struct: + * FT_Incremental_InterfaceRec + * + * @description: + * A structure to be used with @FT_Open_Face to indicate that the user + * wants to support incremental glyph loading. You should use it with + * @FT_PARAM_TAG_INCREMENTAL as in the following example: + * + * ``` + * FT_Incremental_InterfaceRec inc_int; + * FT_Parameter parameter; + * FT_Open_Args open_args; + * + * + * // set up incremental descriptor + * inc_int.funcs = my_funcs; + * inc_int.object = my_object; + * + * // set up optional parameter + * parameter.tag = FT_PARAM_TAG_INCREMENTAL; + * parameter.data = &inc_int; + * + * // set up FT_Open_Args structure + * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; + * open_args.pathname = my_font_pathname; + * open_args.num_params = 1; + * open_args.params = ¶meter; // we use one optional argument + * + * // open the font + * error = FT_Open_Face( library, &open_args, index, &face ); + * ... + * ``` + * + */ + typedef struct FT_Incremental_InterfaceRec_ + { + const FT_Incremental_FuncsRec* funcs; + FT_Incremental object; + + } FT_Incremental_InterfaceRec; + + + /************************************************************************** + * + * @type: + * FT_Incremental_Interface + * + * @description: + * A pointer to an @FT_Incremental_InterfaceRec structure. + * + */ + typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; + + + /* */ + + +FT_END_HEADER + +#endif /* FTINCREM_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftlcdfil.h b/CMU462/deps/freetype/include/freetype/ftlcdfil.h new file mode 100644 index 0000000..3a19d04 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftlcdfil.h @@ -0,0 +1,328 @@ +/**************************************************************************** + * + * ftlcdfil.h + * + * FreeType API for color filtering of subpixel bitmap glyphs + * (specification). + * + * Copyright (C) 2006-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTLCDFIL_H_ +#define FTLCDFIL_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_PARAMETER_TAGS_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * lcd_rendering + * + * @title: + * Subpixel Rendering + * + * @abstract: + * API to control subpixel rendering. + * + * @description: + * FreeType provides two alternative subpixel rendering technologies. + * Should you define `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` in your + * `ftoption.h` file, this enables patented ClearType-style rendering. + * Otherwise, Harmony LCD rendering is enabled. These technologies are + * controlled differently and API described below, although always + * available, performs its function when appropriate method is enabled + * and does nothing otherwise. + * + * ClearType-style LCD rendering exploits the color-striped structure of + * LCD pixels, increasing the available resolution in the direction of + * the stripe (usually horizontal RGB) by a factor of~3. Using the + * subpixels coverages unfiltered can create severe color fringes + * especially when rendering thin features. Indeed, to produce + * black-on-white text, the nearby color subpixels must be dimmed + * equally. + * + * A good 5-tap FIR filter should be applied to subpixel coverages + * regardless of pixel boundaries and should have these properties: + * + * 1. It should be symmetrical, like {~a, b, c, b, a~}, to avoid + * any shifts in appearance. + * + * 2. It should be color-balanced, meaning a~+ b~=~c, to reduce color + * fringes by distributing the computed coverage for one subpixel to + * all subpixels equally. + * + * 3. It should be normalized, meaning 2a~+ 2b~+ c~=~1.0 to maintain + * overall brightness. + * + * Boxy 3-tap filter {0, 1/3, 1/3, 1/3, 0} is sharper but is less + * forgiving of non-ideal gamma curves of a screen (and viewing angles), + * beveled filters are fuzzier but more tolerant. + * + * Use the @FT_Library_SetLcdFilter or @FT_Library_SetLcdFilterWeights + * API to specify a low-pass filter, which is then applied to + * subpixel-rendered bitmaps generated through @FT_Render_Glyph. + * + * Harmony LCD rendering is suitable to panels with any regular subpixel + * structure, not just monitors with 3 color striped subpixels, as long + * as the color subpixels have fixed positions relative to the pixel + * center. In this case, each color channel is then rendered separately + * after shifting the outline opposite to the subpixel shift so that the + * coverage maps are aligned. This method is immune to color fringes + * because the shifts do not change integral coverage. + * + * The subpixel geometry must be specified by xy-coordinates for each + * subpixel. By convention they may come in the RGB order: {{-1/3, 0}, + * {0, 0}, {1/3, 0}} for standard RGB striped panel or {{-1/6, 1/4}, + * {-1/6, -1/4}, {1/3, 0}} for a certain PenTile panel. + * + * Use the @FT_Library_SetLcdGeometry API to specify subpixel positions. + * If one follows the RGB order convention, the same order applies to the + * resulting @FT_PIXEL_MODE_LCD and @FT_PIXEL_MODE_LCD_V bitmaps. Note, + * however, that the coordinate frame for the latter must be rotated + * clockwise. Harmony with default LCD geometry is equivalent to + * ClearType with light filter. + * + * As a result of ClearType filtering or Harmony rendering, the + * dimensions of LCD bitmaps can be either wider or taller than the + * dimensions of the corresponding outline with regard to the pixel grid. + * For example, for @FT_RENDER_MODE_LCD, the filter adds 2~subpixels to + * the left, and 2~subpixels to the right. The bitmap offset values are + * adjusted accordingly, so clients shouldn't need to modify their layout + * and glyph positioning code when enabling the filter. + * + * The ClearType and Harmony rendering is applicable to glyph bitmaps + * rendered through @FT_Render_Glyph, @FT_Load_Glyph, @FT_Load_Char, and + * @FT_Glyph_To_Bitmap, when @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V + * is specified. This API does not control @FT_Outline_Render and + * @FT_Outline_Get_Bitmap. + * + * The described algorithms can completely remove color artefacts when + * combined with gamma-corrected alpha blending in linear space. Each of + * the 3~alpha values (subpixels) must by independently used to blend one + * color channel. That is, red alpha blends the red channel of the text + * color with the red channel of the background pixel. + */ + + + /************************************************************************** + * + * @enum: + * FT_LcdFilter + * + * @description: + * A list of values to identify various types of LCD filters. + * + * @values: + * FT_LCD_FILTER_NONE :: + * Do not perform filtering. When used with subpixel rendering, this + * results in sometimes severe color fringes. + * + * FT_LCD_FILTER_DEFAULT :: + * This is a beveled, normalized, and color-balanced five-tap filter + * with weights of [0x08 0x4D 0x56 0x4D 0x08] in 1/256th units. + * + * FT_LCD_FILTER_LIGHT :: + * this is a boxy, normalized, and color-balanced three-tap filter with + * weights of [0x00 0x55 0x56 0x55 0x00] in 1/256th units. + * + * FT_LCD_FILTER_LEGACY :: + * FT_LCD_FILTER_LEGACY1 :: + * This filter corresponds to the original libXft color filter. It + * provides high contrast output but can exhibit really bad color + * fringes if glyphs are not extremely well hinted to the pixel grid. + * This filter is only provided for comparison purposes, and might be + * disabled or stay unsupported in the future. The second value is + * provided for compatibility with FontConfig, which historically used + * different enumeration, sometimes incorrectly forwarded to FreeType. + * + * @since: + * 2.3.0 (`FT_LCD_FILTER_LEGACY1` since 2.6.2) + */ + typedef enum FT_LcdFilter_ + { + FT_LCD_FILTER_NONE = 0, + FT_LCD_FILTER_DEFAULT = 1, + FT_LCD_FILTER_LIGHT = 2, + FT_LCD_FILTER_LEGACY1 = 3, + FT_LCD_FILTER_LEGACY = 16, + + FT_LCD_FILTER_MAX /* do not remove */ + + } FT_LcdFilter; + + + /************************************************************************** + * + * @function: + * FT_Library_SetLcdFilter + * + * @description: + * This function is used to apply color filtering to LCD decimated + * bitmaps, like the ones used when calling @FT_Render_Glyph with + * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. + * + * @input: + * library :: + * A handle to the target library instance. + * + * filter :: + * The filter type. + * + * You can use @FT_LCD_FILTER_NONE here to disable this feature, or + * @FT_LCD_FILTER_DEFAULT to use a default filter that should work well + * on most LCD screens. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This feature is always disabled by default. Clients must make an + * explicit call to this function with a `filter` value other than + * @FT_LCD_FILTER_NONE in order to enable it. + * + * Due to **PATENTS** covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature` if the + * configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilter( FT_Library library, + FT_LcdFilter filter ); + + + /************************************************************************** + * + * @function: + * FT_Library_SetLcdFilterWeights + * + * @description: + * This function can be used to enable LCD filter with custom weights, + * instead of using presets in @FT_Library_SetLcdFilter. + * + * @input: + * library :: + * A handle to the target library instance. + * + * weights :: + * A pointer to an array; the function copies the first five bytes and + * uses them to specify the filter weights in 1/256th units. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Due to **PATENTS** covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature` if the + * configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * LCD filter weights can also be set per face using @FT_Face_Properties + * with @FT_PARAM_TAG_LCD_FILTER_WEIGHTS. + * + * @since: + * 2.4.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilterWeights( FT_Library library, + unsigned char *weights ); + + + /************************************************************************** + * + * @type: + * FT_LcdFiveTapFilter + * + * @description: + * A typedef for passing the five LCD filter weights to + * @FT_Face_Properties within an @FT_Parameter structure. + * + * @since: + * 2.8 + * + */ +#define FT_LCD_FILTER_FIVE_TAPS 5 + + typedef FT_Byte FT_LcdFiveTapFilter[FT_LCD_FILTER_FIVE_TAPS]; + + + /************************************************************************** + * + * @function: + * FT_Library_SetLcdGeometry + * + * @description: + * This function can be used to modify default positions of color + * subpixels, which controls Harmony LCD rendering. + * + * @input: + * library :: + * A handle to the target library instance. + * + * sub :: + * A pointer to an array of 3 vectors in 26.6 fractional pixel format; + * the function modifies the default values, see the note below. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Subpixel geometry examples: + * + * - {{-21, 0}, {0, 0}, {21, 0}} is the default, corresponding to 3 color + * stripes shifted by a third of a pixel. This could be an RGB panel. + * + * - {{21, 0}, {0, 0}, {-21, 0}} looks the same as the default but can + * specify a BGR panel instead, while keeping the bitmap in the same + * RGB888 format. + * + * - {{0, 21}, {0, 0}, {0, -21}} is the vertical RGB, but the bitmap + * stays RGB888 as a result. + * + * - {{-11, 16}, {-11, -16}, {22, 0}} is a certain PenTile arrangement. + * + * This function does nothing and returns `FT_Err_Unimplemented_Feature` + * in the context of ClearType-style subpixel rendering when + * `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is defined in your build of the + * library. + * + * @since: + * 2.10.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdGeometry( FT_Library library, + FT_Vector sub[3] ); + + /* */ + + +FT_END_HEADER + +#endif /* FTLCDFIL_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftlist.h b/CMU462/deps/freetype/include/freetype/ftlist.h new file mode 100644 index 0000000..4782892 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftlist.h @@ -0,0 +1,297 @@ +/**************************************************************************** + * + * ftlist.h + * + * Generic list support for FreeType (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This file implements functions relative to list processing. Its data + * structures are defined in `freetype.h`. + * + */ + + +#ifndef FTLIST_H_ +#define FTLIST_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * list_processing + * + * @title: + * List Processing + * + * @abstract: + * Simple management of lists. + * + * @description: + * This section contains various definitions related to list processing + * using doubly-linked nodes. + * + * @order: + * FT_List + * FT_ListNode + * FT_ListRec + * FT_ListNodeRec + * + * FT_List_Add + * FT_List_Insert + * FT_List_Find + * FT_List_Remove + * FT_List_Up + * FT_List_Iterate + * FT_List_Iterator + * FT_List_Finalize + * FT_List_Destructor + * + */ + + + /************************************************************************** + * + * @function: + * FT_List_Find + * + * @description: + * Find the list node for a given listed object. + * + * @input: + * list :: + * A pointer to the parent list. + * data :: + * The address of the listed object. + * + * @return: + * List node. `NULL` if it wasn't found. + */ + FT_EXPORT( FT_ListNode ) + FT_List_Find( FT_List list, + void* data ); + + + /************************************************************************** + * + * @function: + * FT_List_Add + * + * @description: + * Append an element to the end of a list. + * + * @inout: + * list :: + * A pointer to the parent list. + * node :: + * The node to append. + */ + FT_EXPORT( void ) + FT_List_Add( FT_List list, + FT_ListNode node ); + + + /************************************************************************** + * + * @function: + * FT_List_Insert + * + * @description: + * Insert an element at the head of a list. + * + * @inout: + * list :: + * A pointer to parent list. + * node :: + * The node to insert. + */ + FT_EXPORT( void ) + FT_List_Insert( FT_List list, + FT_ListNode node ); + + + /************************************************************************** + * + * @function: + * FT_List_Remove + * + * @description: + * Remove a node from a list. This function doesn't check whether the + * node is in the list! + * + * @input: + * node :: + * The node to remove. + * + * @inout: + * list :: + * A pointer to the parent list. + */ + FT_EXPORT( void ) + FT_List_Remove( FT_List list, + FT_ListNode node ); + + + /************************************************************************** + * + * @function: + * FT_List_Up + * + * @description: + * Move a node to the head/top of a list. Used to maintain LRU lists. + * + * @inout: + * list :: + * A pointer to the parent list. + * node :: + * The node to move. + */ + FT_EXPORT( void ) + FT_List_Up( FT_List list, + FT_ListNode node ); + + + /************************************************************************** + * + * @functype: + * FT_List_Iterator + * + * @description: + * An FT_List iterator function that is called during a list parse by + * @FT_List_Iterate. + * + * @input: + * node :: + * The current iteration list node. + * + * user :: + * A typeless pointer passed to @FT_List_Iterate. Can be used to point + * to the iteration's state. + */ + typedef FT_Error + (*FT_List_Iterator)( FT_ListNode node, + void* user ); + + + /************************************************************************** + * + * @function: + * FT_List_Iterate + * + * @description: + * Parse a list and calls a given iterator function on each element. + * Note that parsing is stopped as soon as one of the iterator calls + * returns a non-zero value. + * + * @input: + * list :: + * A handle to the list. + * iterator :: + * An iterator function, called on each node of the list. + * user :: + * A user-supplied field that is passed as the second argument to the + * iterator. + * + * @return: + * The result (a FreeType error code) of the last iterator call. + */ + FT_EXPORT( FT_Error ) + FT_List_Iterate( FT_List list, + FT_List_Iterator iterator, + void* user ); + + + /************************************************************************** + * + * @functype: + * FT_List_Destructor + * + * @description: + * An @FT_List iterator function that is called during a list + * finalization by @FT_List_Finalize to destroy all elements in a given + * list. + * + * @input: + * system :: + * The current system object. + * + * data :: + * The current object to destroy. + * + * user :: + * A typeless pointer passed to @FT_List_Iterate. It can be used to + * point to the iteration's state. + */ + typedef void + (*FT_List_Destructor)( FT_Memory memory, + void* data, + void* user ); + + + /************************************************************************** + * + * @function: + * FT_List_Finalize + * + * @description: + * Destroy all elements in the list as well as the list itself. + * + * @input: + * list :: + * A handle to the list. + * + * destroy :: + * A list destructor that will be applied to each element of the list. + * Set this to `NULL` if not needed. + * + * memory :: + * The current memory object that handles deallocation. + * + * user :: + * A user-supplied field that is passed as the last argument to the + * destructor. + * + * @note: + * This function expects that all nodes added by @FT_List_Add or + * @FT_List_Insert have been dynamically allocated. + */ + FT_EXPORT( void ) + FT_List_Finalize( FT_List list, + FT_List_Destructor destroy, + FT_Memory memory, + void* user ); + + /* */ + + +FT_END_HEADER + +#endif /* FTLIST_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftlzw.h b/CMU462/deps/freetype/include/freetype/ftlzw.h new file mode 100644 index 0000000..fd22968 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftlzw.h @@ -0,0 +1,100 @@ +/**************************************************************************** + * + * ftlzw.h + * + * LZW-compressed stream support. + * + * Copyright (C) 2004-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTLZW_H_ +#define FTLZW_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * lzw + * + * @title: + * LZW Streams + * + * @abstract: + * Using LZW-compressed font files. + * + * @description: + * This section contains the declaration of LZW-specific functions. + * + */ + + /************************************************************************** + * + * @function: + * FT_Stream_OpenLZW + * + * @description: + * Open a new stream to parse LZW-compressed font files. This is mainly + * used to support the compressed `*.pcf.Z` fonts that come with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close` on the new stream will + * **not** call `FT_Stream_Close` on the source stream. None of the + * stream objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream + * + * In certain builds of the library, LZW compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a LZW stream from it and + * re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature` if your build + * of FreeType was not compiled with LZW support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenLZW( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* FTLZW_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftmac.h b/CMU462/deps/freetype/include/freetype/ftmac.h new file mode 100644 index 0000000..92b9f3d --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftmac.h @@ -0,0 +1,290 @@ +/**************************************************************************** + * + * ftmac.h + * + * Additional Mac-specific API. + * + * Copyright (C) 1996-2019 by + * Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +/**************************************************************************** + * + * NOTE: Include this file after `FT_FREETYPE_H` and after any + * Mac-specific headers (because this header uses Mac types such as + * 'Handle', 'FSSpec', 'FSRef', etc.) + * + */ + + +#ifndef FTMAC_H_ +#define FTMAC_H_ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + + /* gcc-3.1 and later can warn about functions tagged as deprecated */ +#ifndef FT_DEPRECATED_ATTRIBUTE +#if defined( __GNUC__ ) && \ + ( ( __GNUC__ >= 4 ) || \ + ( ( __GNUC__ == 3 ) && ( __GNUC_MINOR__ >= 1 ) ) ) +#define FT_DEPRECATED_ATTRIBUTE __attribute__(( deprecated )) +#else +#define FT_DEPRECATED_ATTRIBUTE +#endif +#endif + + + /************************************************************************** + * + * @section: + * mac_specific + * + * @title: + * Mac Specific Interface + * + * @abstract: + * Only available on the Macintosh. + * + * @description: + * The following definitions are only available if FreeType is compiled + * on a Macintosh. + * + */ + + + /************************************************************************** + * + * @function: + * FT_New_Face_From_FOND + * + * @description: + * Create a new face object from a FOND resource. + * + * @inout: + * library :: + * A handle to the library resource. + * + * @input: + * fond :: + * A FOND resource. + * + * face_index :: + * Only supported for the -1 'sanity check' special case. + * + * @output: + * aface :: + * A handle to a new face object. + * + * @return: + * FreeType error code. 0~means success. + * + * @example: + * This function can be used to create @FT_Face objects from fonts that + * are installed in the system as follows. + * + * ``` + * fond = GetResource( 'FOND', fontName ); + * error = FT_New_Face_From_FOND( library, fond, 0, &face ); + * ``` + */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /************************************************************************** + * + * @function: + * FT_GetFile_From_Mac_Name + * + * @description: + * Return an FSSpec for the disk file containing the named font. + * + * @input: + * fontName :: + * Mac OS name of the font (e.g., Times New Roman Bold). + * + * @output: + * pathSpec :: + * FSSpec to the file. For passing to @FT_New_Face_From_FSSpec. + * + * face_index :: + * Index of the face. For passing to @FT_New_Face_From_FSSpec. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /************************************************************************** + * + * @function: + * FT_GetFile_From_Mac_ATS_Name + * + * @description: + * Return an FSSpec for the disk file containing the named font. + * + * @input: + * fontName :: + * Mac OS name of the font in ATS framework. + * + * @output: + * pathSpec :: + * FSSpec to the file. For passing to @FT_New_Face_From_FSSpec. + * + * face_index :: + * Index of the face. For passing to @FT_New_Face_From_FSSpec. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /************************************************************************** + * + * @function: + * FT_GetFilePath_From_Mac_ATS_Name + * + * @description: + * Return a pathname of the disk file and face index for given font name + * that is handled by ATS framework. + * + * @input: + * fontName :: + * Mac OS name of the font in ATS framework. + * + * @output: + * path :: + * Buffer to store pathname of the file. For passing to @FT_New_Face. + * The client must allocate this buffer before calling this function. + * + * maxPathSize :: + * Lengths of the buffer `path` that client allocated. + * + * face_index :: + * Index of the face. For passing to @FT_New_Face. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /************************************************************************** + * + * @function: + * FT_New_Face_From_FSSpec + * + * @description: + * Create a new face object from a given resource and typeface index + * using an FSSpec to the font file. + * + * @inout: + * library :: + * A handle to the library resource. + * + * @input: + * spec :: + * FSSpec to the font file. + * + * face_index :: + * The index of the face within the resource. The first face has + * index~0. + * @output: + * aface :: + * A handle to a new face object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * @FT_New_Face_From_FSSpec is identical to @FT_New_Face except it + * accepts an FSSpec instead of a path. + */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSSpec( FT_Library library, + const FSSpec *spec, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /************************************************************************** + * + * @function: + * FT_New_Face_From_FSRef + * + * @description: + * Create a new face object from a given resource and typeface index + * using an FSRef to the font file. + * + * @inout: + * library :: + * A handle to the library resource. + * + * @input: + * spec :: + * FSRef to the font file. + * + * face_index :: + * The index of the face within the resource. The first face has + * index~0. + * @output: + * aface :: + * A handle to a new face object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * @FT_New_Face_From_FSRef is identical to @FT_New_Face except it accepts + * an FSRef instead of a path. + */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSRef( FT_Library library, + const FSRef *ref, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + /* */ + + +FT_END_HEADER + + +#endif /* FTMAC_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftmm.h b/CMU462/deps/freetype/include/freetype/ftmm.h new file mode 100644 index 0000000..f2e16b6 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftmm.h @@ -0,0 +1,753 @@ +/**************************************************************************** + * + * ftmm.h + * + * FreeType Multiple Master font interface (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTMM_H_ +#define FTMM_H_ + + +#include <ft2build.h> +#include FT_TYPE1_TABLES_H + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * multiple_masters + * + * @title: + * Multiple Masters + * + * @abstract: + * How to manage Multiple Masters fonts. + * + * @description: + * The following types and functions are used to manage Multiple Master + * fonts, i.e., the selection of specific design instances by setting + * design axis coordinates. + * + * Besides Adobe MM fonts, the interface supports Apple's TrueType GX and + * OpenType variation fonts. Some of the routines only work with Adobe + * MM fonts, others will work with all three types. They are similar + * enough that a consistent interface makes sense. + * + */ + + + /************************************************************************** + * + * @struct: + * FT_MM_Axis + * + * @description: + * A structure to model a given axis in design space for Multiple Masters + * fonts. + * + * This structure can't be used for TrueType GX or OpenType variation + * fonts. + * + * @fields: + * name :: + * The axis's name. + * + * minimum :: + * The axis's minimum design coordinate. + * + * maximum :: + * The axis's maximum design coordinate. + */ + typedef struct FT_MM_Axis_ + { + FT_String* name; + FT_Long minimum; + FT_Long maximum; + + } FT_MM_Axis; + + + /************************************************************************** + * + * @struct: + * FT_Multi_Master + * + * @description: + * A structure to model the axes and space of a Multiple Masters font. + * + * This structure can't be used for TrueType GX or OpenType variation + * fonts. + * + * @fields: + * num_axis :: + * Number of axes. Cannot exceed~4. + * + * num_designs :: + * Number of designs; should be normally 2^num_axis even though the + * Type~1 specification strangely allows for intermediate designs to be + * present. This number cannot exceed~16. + * + * axis :: + * A table of axis descriptors. + */ + typedef struct FT_Multi_Master_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_MM_Axis axis[T1_MAX_MM_AXIS]; + + } FT_Multi_Master; + + + /************************************************************************** + * + * @struct: + * FT_Var_Axis + * + * @description: + * A structure to model a given axis in design space for Multiple + * Masters, TrueType GX, and OpenType variation fonts. + * + * @fields: + * name :: + * The axis's name. Not always meaningful for TrueType GX or OpenType + * variation fonts. + * + * minimum :: + * The axis's minimum design coordinate. + * + * def :: + * The axis's default design coordinate. FreeType computes meaningful + * default values for Adobe MM fonts. + * + * maximum :: + * The axis's maximum design coordinate. + * + * tag :: + * The axis's tag (the equivalent to 'name' for TrueType GX and + * OpenType variation fonts). FreeType provides default values for + * Adobe MM fonts if possible. + * + * strid :: + * The axis name entry in the font's 'name' table. This is another + * (and often better) version of the 'name' field for TrueType GX or + * OpenType variation fonts. Not meaningful for Adobe MM fonts. + * + * @note: + * The fields `minimum`, `def`, and `maximum` are 16.16 fractional values + * for TrueType GX and OpenType variation fonts. For Adobe MM fonts, the + * values are integers. + */ + typedef struct FT_Var_Axis_ + { + FT_String* name; + + FT_Fixed minimum; + FT_Fixed def; + FT_Fixed maximum; + + FT_ULong tag; + FT_UInt strid; + + } FT_Var_Axis; + + + /************************************************************************** + * + * @struct: + * FT_Var_Named_Style + * + * @description: + * A structure to model a named instance in a TrueType GX or OpenType + * variation font. + * + * This structure can't be used for Adobe MM fonts. + * + * @fields: + * coords :: + * The design coordinates for this instance. This is an array with one + * entry for each axis. + * + * strid :: + * The entry in 'name' table identifying this instance. + * + * psid :: + * The entry in 'name' table identifying a PostScript name for this + * instance. Value 0xFFFF indicates a missing entry. + */ + typedef struct FT_Var_Named_Style_ + { + FT_Fixed* coords; + FT_UInt strid; + FT_UInt psid; /* since 2.7.1 */ + + } FT_Var_Named_Style; + + + /************************************************************************** + * + * @struct: + * FT_MM_Var + * + * @description: + * A structure to model the axes and space of an Adobe MM, TrueType GX, + * or OpenType variation font. + * + * Some fields are specific to one format and not to the others. + * + * @fields: + * num_axis :: + * The number of axes. The maximum value is~4 for Adobe MM fonts; no + * limit in TrueType GX or OpenType variation fonts. + * + * num_designs :: + * The number of designs; should be normally 2^num_axis for Adobe MM + * fonts. Not meaningful for TrueType GX or OpenType variation fonts + * (where every glyph could have a different number of designs). + * + * num_namedstyles :: + * The number of named styles; a 'named style' is a tuple of design + * coordinates that has a string ID (in the 'name' table) associated + * with it. The font can tell the user that, for example, + * [Weight=1.5,Width=1.1] is 'Bold'. Another name for 'named style' is + * 'named instance'. + * + * For Adobe Multiple Masters fonts, this value is always zero because + * the format does not support named styles. + * + * axis :: + * An axis descriptor table. TrueType GX and OpenType variation fonts + * contain slightly more data than Adobe MM fonts. Memory management + * of this pointer is done internally by FreeType. + * + * namedstyle :: + * A named style (instance) table. Only meaningful for TrueType GX and + * OpenType variation fonts. Memory management of this pointer is done + * internally by FreeType. + */ + typedef struct FT_MM_Var_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_UInt num_namedstyles; + FT_Var_Axis* axis; + FT_Var_Named_Style* namedstyle; + + } FT_MM_Var; + + + /************************************************************************** + * + * @function: + * FT_Get_Multi_Master + * + * @description: + * Retrieve a variation descriptor of a given Adobe MM font. + * + * This function can't be used with TrueType GX or OpenType variation + * fonts. + * + * @input: + * face :: + * A handle to the source face. + * + * @output: + * amaster :: + * The Multiple Masters descriptor. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Get_Multi_Master( FT_Face face, + FT_Multi_Master *amaster ); + + + /************************************************************************** + * + * @function: + * FT_Get_MM_Var + * + * @description: + * Retrieve a variation descriptor for a given font. + * + * This function works with all supported variation formats. + * + * @input: + * face :: + * A handle to the source face. + * + * @output: + * amaster :: + * The variation descriptor. Allocates a data structure, which the + * user must deallocate with a call to @FT_Done_MM_Var after use. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Get_MM_Var( FT_Face face, + FT_MM_Var* *amaster ); + + + /************************************************************************** + * + * @function: + * FT_Done_MM_Var + * + * @description: + * Free the memory allocated by @FT_Get_MM_Var. + * + * @input: + * library :: + * A handle of the face's parent library object that was used in the + * call to @FT_Get_MM_Var to create `amaster`. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Done_MM_Var( FT_Library library, + FT_MM_Var *amaster ); + + + /************************************************************************** + * + * @function: + * FT_Set_MM_Design_Coordinates + * + * @description: + * For Adobe MM fonts, choose an interpolated font design through design + * coordinates. + * + * This function can't be used with TrueType GX or OpenType variation + * fonts. + * + * @inout: + * face :: + * A handle to the source face. + * + * @input: + * num_coords :: + * The number of available design coordinates. If it is larger than + * the number of axes, ignore the excess values. If it is smaller than + * the number of axes, use default values for the remaining axes. + * + * coords :: + * An array of design coordinates. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * [Since 2.8.1] To reset all axes to the default values, call the + * function with `num_coords` set to zero and `coords` set to `NULL`. + * + * [Since 2.9] If `num_coords` is larger than zero, this function sets + * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field + * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, + * this bit flag gets unset. + */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + + /************************************************************************** + * + * @function: + * FT_Set_Var_Design_Coordinates + * + * @description: + * Choose an interpolated font design through design coordinates. + * + * This function works with all supported variation formats. + * + * @inout: + * face :: + * A handle to the source face. + * + * @input: + * num_coords :: + * The number of available design coordinates. If it is larger than + * the number of axes, ignore the excess values. If it is smaller than + * the number of axes, use default values for the remaining axes. + * + * coords :: + * An array of design coordinates. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * [Since 2.8.1] To reset all axes to the default values, call the + * function with `num_coords` set to zero and `coords` set to `NULL`. + * [Since 2.9] 'Default values' means the currently selected named + * instance (or the base font if no named instance is selected). + * + * [Since 2.9] If `num_coords` is larger than zero, this function sets + * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field + * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, + * this bit flag gets unset. + */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Get_Var_Design_Coordinates + * + * @description: + * Get the design coordinates of the currently selected interpolated + * font. + * + * This function works with all supported variation formats. + * + * @input: + * face :: + * A handle to the source face. + * + * num_coords :: + * The number of design coordinates to retrieve. If it is larger than + * the number of axes, set the excess values to~0. + * + * @output: + * coords :: + * The design coordinates array. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.7.1 + */ + FT_EXPORT( FT_Error ) + FT_Get_Var_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Set_MM_Blend_Coordinates + * + * @description: + * Choose an interpolated font design through normalized blend + * coordinates. + * + * This function works with all supported variation formats. + * + * @inout: + * face :: + * A handle to the source face. + * + * @input: + * num_coords :: + * The number of available design coordinates. If it is larger than + * the number of axes, ignore the excess values. If it is smaller than + * the number of axes, use default values for the remaining axes. + * + * coords :: + * The design coordinates array (each element must be between 0 and 1.0 + * for Adobe MM fonts, and between -1.0 and 1.0 for TrueType GX and + * OpenType variation fonts). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * [Since 2.8.1] To reset all axes to the default values, call the + * function with `num_coords` set to zero and `coords` set to `NULL`. + * [Since 2.9] 'Default values' means the currently selected named + * instance (or the base font if no named instance is selected). + * + * [Since 2.9] If `num_coords` is larger than zero, this function sets + * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field + * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, + * this bit flag gets unset. + */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Get_MM_Blend_Coordinates + * + * @description: + * Get the normalized blend coordinates of the currently selected + * interpolated font. + * + * This function works with all supported variation formats. + * + * @input: + * face :: + * A handle to the source face. + * + * num_coords :: + * The number of normalized blend coordinates to retrieve. If it is + * larger than the number of axes, set the excess values to~0.5 for + * Adobe MM fonts, and to~0 for TrueType GX and OpenType variation + * fonts. + * + * @output: + * coords :: + * The normalized blend coordinates array. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.7.1 + */ + FT_EXPORT( FT_Error ) + FT_Get_MM_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Set_Var_Blend_Coordinates + * + * @description: + * This is another name of @FT_Set_MM_Blend_Coordinates. + */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Get_Var_Blend_Coordinates + * + * @description: + * This is another name of @FT_Get_MM_Blend_Coordinates. + * + * @since: + * 2.7.1 + */ + FT_EXPORT( FT_Error ) + FT_Get_Var_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /************************************************************************** + * + * @function: + * FT_Set_MM_WeightVector + * + * @description: + * For Adobe MM fonts, choose an interpolated font design by directly + * setting the weight vector. + * + * This function can't be used with TrueType GX or OpenType variation + * fonts. + * + * @inout: + * face :: + * A handle to the source face. + * + * @input: + * len :: + * The length of the weight vector array. If it is larger than the + * number of designs, the extra values are ignored. If it is less than + * the number of designs, the remaining values are set to zero. + * + * weightvector :: + * An array representing the weight vector. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Adobe Multiple Master fonts limit the number of designs, and thus the + * length of the weight vector to~16. + * + * If `len` is zero and `weightvector` is `NULL`, the weight vector array + * is reset to the default values. + * + * The Adobe documentation also states that the values in the + * WeightVector array must total 1.0 +/-~0.001. In practice this does + * not seem to be enforced, so is not enforced here, either. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Set_MM_WeightVector( FT_Face face, + FT_UInt len, + FT_Fixed* weightvector ); + + + /************************************************************************** + * + * @function: + * FT_Get_MM_WeightVector + * + * @description: + * For Adobe MM fonts, retrieve the current weight vector of the font. + * + * This function can't be used with TrueType GX or OpenType variation + * fonts. + * + * @inout: + * face :: + * A handle to the source face. + * + * len :: + * A pointer to the size of the array to be filled. If the size of the + * array is less than the number of designs, `FT_Err_Invalid_Argument` + * is returned, and `len` is set to the required size (the number of + * designs). If the size of the array is greater than the number of + * designs, the remaining entries are set to~0. On successful + * completion, `len` is set to the number of designs (i.e., the number + * of values written to the array). + * + * @output: + * weightvector :: + * An array to be filled. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Adobe Multiple Master fonts limit the number of designs, and thus the + * length of the WeightVector to~16. + * + * @since: + * 2.10 + */ + FT_EXPORT( FT_Error ) + FT_Get_MM_WeightVector( FT_Face face, + FT_UInt* len, + FT_Fixed* weightvector ); + + + /************************************************************************** + * + * @enum: + * FT_VAR_AXIS_FLAG_XXX + * + * @description: + * A list of bit flags used in the return value of + * @FT_Get_Var_Axis_Flags. + * + * @values: + * FT_VAR_AXIS_FLAG_HIDDEN :: + * The variation axis should not be exposed to user interfaces. + * + * @since: + * 2.8.1 + */ +#define FT_VAR_AXIS_FLAG_HIDDEN 1 + + + /************************************************************************** + * + * @function: + * FT_Get_Var_Axis_Flags + * + * @description: + * Get the 'flags' field of an OpenType Variation Axis Record. + * + * Not meaningful for Adobe MM fonts (`*flags` is always zero). + * + * @input: + * master :: + * The variation descriptor. + * + * axis_index :: + * The index of the requested variation axis. + * + * @output: + * flags :: + * The 'flags' field. See @FT_VAR_AXIS_FLAG_XXX for possible values. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.8.1 + */ + FT_EXPORT( FT_Error ) + FT_Get_Var_Axis_Flags( FT_MM_Var* master, + FT_UInt axis_index, + FT_UInt* flags ); + + + /************************************************************************** + * + * @function: + * FT_Set_Named_Instance + * + * @description: + * Set or change the current named instance. + * + * @input: + * face :: + * A handle to the source face. + * + * instance_index :: + * The index of the requested instance, starting with value 1. If set + * to value 0, FreeType switches to font access without a named + * instance. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The function uses the value of `instance_index` to set bits 16-30 of + * the face's `face_index` field. It also resets any variation applied + * to the font, and the @FT_FACE_FLAG_VARIATION bit of the face's + * `face_flags` field gets reset to zero (i.e., @FT_IS_VARIATION will + * return false). + * + * For Adobe MM fonts (which don't have named instances) this function + * simply resets the current face to the default instance. + * + * @since: + * 2.9 + */ + FT_EXPORT( FT_Error ) + FT_Set_Named_Instance( FT_Face face, + FT_UInt instance_index ); + + /* */ + + +FT_END_HEADER + +#endif /* FTMM_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftmodapi.h b/CMU462/deps/freetype/include/freetype/ftmodapi.h new file mode 100644 index 0000000..8d039c4 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftmodapi.h @@ -0,0 +1,785 @@ +/**************************************************************************** + * + * ftmodapi.h + * + * FreeType modules public interface (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTMODAPI_H_ +#define FTMODAPI_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * module_management + * + * @title: + * Module Management + * + * @abstract: + * How to add, upgrade, remove, and control modules from FreeType. + * + * @description: + * The definitions below are used to manage modules within FreeType. + * Modules can be added, upgraded, and removed at runtime. Additionally, + * some module properties can be controlled also. + * + * Here is a list of possible values of the `module_name` field in the + * @FT_Module_Class structure. + * + * ``` + * autofitter + * bdf + * cff + * gxvalid + * otvalid + * pcf + * pfr + * psaux + * pshinter + * psnames + * raster1 + * sfnt + * smooth, smooth-lcd, smooth-lcdv + * truetype + * type1 + * type42 + * t1cid + * winfonts + * ``` + * + * Note that the FreeType Cache sub-system is not a FreeType module. + * + * @order: + * FT_Module + * FT_Module_Constructor + * FT_Module_Destructor + * FT_Module_Requester + * FT_Module_Class + * + * FT_Add_Module + * FT_Get_Module + * FT_Remove_Module + * FT_Add_Default_Modules + * + * FT_Property_Set + * FT_Property_Get + * FT_Set_Default_Properties + * + * FT_New_Library + * FT_Done_Library + * FT_Reference_Library + * + * FT_Renderer + * FT_Renderer_Class + * + * FT_Get_Renderer + * FT_Set_Renderer + * + * FT_Set_Debug_Hook + * + */ + + + /* module bit flags */ +#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ +#define FT_MODULE_RENDERER 2 /* this module is a renderer */ +#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ +#define FT_MODULE_STYLER 8 /* this module is a styler */ + +#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ + /* scalable fonts */ +#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ + /* support vector outlines */ +#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ + /* own hinter */ +#define FT_MODULE_DRIVER_HINTS_LIGHTLY 0x800 /* the driver's hinter */ + /* produces LIGHT hints */ + + + /* deprecated values */ +#define ft_module_font_driver FT_MODULE_FONT_DRIVER +#define ft_module_renderer FT_MODULE_RENDERER +#define ft_module_hinter FT_MODULE_HINTER +#define ft_module_styler FT_MODULE_STYLER + +#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE +#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES +#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER +#define ft_module_driver_hints_lightly FT_MODULE_DRIVER_HINTS_LIGHTLY + + + typedef FT_Pointer FT_Module_Interface; + + + /************************************************************************** + * + * @functype: + * FT_Module_Constructor + * + * @description: + * A function used to initialize (not create) a new module object. + * + * @input: + * module :: + * The module to initialize. + */ + typedef FT_Error + (*FT_Module_Constructor)( FT_Module module ); + + + /************************************************************************** + * + * @functype: + * FT_Module_Destructor + * + * @description: + * A function used to finalize (not destroy) a given module object. + * + * @input: + * module :: + * The module to finalize. + */ + typedef void + (*FT_Module_Destructor)( FT_Module module ); + + + /************************************************************************** + * + * @functype: + * FT_Module_Requester + * + * @description: + * A function used to query a given module for a specific interface. + * + * @input: + * module :: + * The module to be searched. + * + * name :: + * The name of the interface in the module. + */ + typedef FT_Module_Interface + (*FT_Module_Requester)( FT_Module module, + const char* name ); + + + /************************************************************************** + * + * @struct: + * FT_Module_Class + * + * @description: + * The module class descriptor. While being a public structure necessary + * for FreeType's module bookkeeping, most of the fields are essentially + * internal, not to be used directly by an application. + * + * @fields: + * module_flags :: + * Bit flags describing the module. + * + * module_size :: + * The size of one module object/instance in bytes. + * + * module_name :: + * The name of the module. + * + * module_version :: + * The version, as a 16.16 fixed number (major.minor). + * + * module_requires :: + * The version of FreeType this module requires, as a 16.16 fixed + * number (major.minor). Starts at version 2.0, i.e., 0x20000. + * + * module_interface :: + * A typeless pointer to a structure (which varies between different + * modules) that holds the module's interface functions. This is + * essentially what `get_interface` returns. + * + * module_init :: + * The initializing function. + * + * module_done :: + * The finalizing function. + * + * get_interface :: + * The interface requesting function. + */ + typedef struct FT_Module_Class_ + { + FT_ULong module_flags; + FT_Long module_size; + const FT_String* module_name; + FT_Fixed module_version; + FT_Fixed module_requires; + + const void* module_interface; + + FT_Module_Constructor module_init; + FT_Module_Destructor module_done; + FT_Module_Requester get_interface; + + } FT_Module_Class; + + + /************************************************************************** + * + * @function: + * FT_Add_Module + * + * @description: + * Add a new module to a given library instance. + * + * @inout: + * library :: + * A handle to the library object. + * + * @input: + * clazz :: + * A pointer to class descriptor for the module. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * An error will be returned if a module already exists by that name, or + * if the module requires a version of FreeType that is too great. + */ + FT_EXPORT( FT_Error ) + FT_Add_Module( FT_Library library, + const FT_Module_Class* clazz ); + + + /************************************************************************** + * + * @function: + * FT_Get_Module + * + * @description: + * Find a module by its name. + * + * @input: + * library :: + * A handle to the library object. + * + * module_name :: + * The module's name (as an ASCII string). + * + * @return: + * A module handle. 0~if none was found. + * + * @note: + * FreeType's internal modules aren't documented very well, and you + * should look up the source code for details. + */ + FT_EXPORT( FT_Module ) + FT_Get_Module( FT_Library library, + const char* module_name ); + + + /************************************************************************** + * + * @function: + * FT_Remove_Module + * + * @description: + * Remove a given module from a library instance. + * + * @inout: + * library :: + * A handle to a library object. + * + * @input: + * module :: + * A handle to a module object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The module object is destroyed by the function in case of success. + */ + FT_EXPORT( FT_Error ) + FT_Remove_Module( FT_Library library, + FT_Module module ); + + + /************************************************************************** + * + * @function: + * FT_Property_Set + * + * @description: + * Set a property for a given module. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in section + * @properties. + * + * Note that only a few modules have properties. + * + * value :: + * A generic pointer to a variable or structure that gives the new + * value of the property. The exact definition of `value` is + * dependent on the property; see section @properties. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name` isn't a valid module name, or `property_name` + * doesn't specify a valid property, or if `value` doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example sets property 'bar' (a simple integer) in + * module 'foo' to value~1. + * + * ``` + * FT_UInt bar; + * + * + * bar = 1; + * FT_Property_Set( library, "foo", "bar", &bar ); + * ``` + * + * Note that the FreeType Cache sub-system doesn't recognize module + * property changes. To avoid glyph lookup confusion within the cache + * you should call @FTC_Manager_Reset to completely flush the cache if a + * module property gets changed after @FTC_Manager_New has been called. + * + * It is not possible to set properties of the FreeType Cache sub-system + * itself with FT_Property_Set; use @FTC_Property_Set instead. + * + * @since: + * 2.4.11 + * + */ + FT_EXPORT( FT_Error ) + FT_Property_Set( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + const void* value ); + + + /************************************************************************** + * + * @function: + * FT_Property_Get + * + * @description: + * Get a module's property value. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in section + * @properties. + * + * @inout: + * value :: + * A generic pointer to a variable or structure that gives the value + * of the property. The exact definition of `value` is dependent on + * the property; see section @properties. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name` isn't a valid module name, or `property_name` + * doesn't specify a valid property, or if `value` doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example gets property 'baz' (a range) in module 'foo'. + * + * ``` + * typedef range_ + * { + * FT_Int32 min; + * FT_Int32 max; + * + * } range; + * + * range baz; + * + * + * FT_Property_Get( library, "foo", "baz", &baz ); + * ``` + * + * It is not possible to retrieve properties of the FreeType Cache + * sub-system with FT_Property_Get; use @FTC_Property_Get instead. + * + * @since: + * 2.4.11 + * + */ + FT_EXPORT( FT_Error ) + FT_Property_Get( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + void* value ); + + + /************************************************************************** + * + * @function: + * FT_Set_Default_Properties + * + * @description: + * If compilation option `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES` is + * set, this function reads the `FREETYPE_PROPERTIES` environment + * variable to control driver properties. See section @properties for + * more. + * + * If the compilation option is not set, this function does nothing. + * + * `FREETYPE_PROPERTIES` has the following syntax form (broken here into + * multiple lines for better readability). + * + * ``` + * <optional whitespace> + * <module-name1> ':' + * <property-name1> '=' <property-value1> + * <whitespace> + * <module-name2> ':' + * <property-name2> '=' <property-value2> + * ... + * ``` + * + * Example: + * + * ``` + * FREETYPE_PROPERTIES=truetype:interpreter-version=35 \ + * cff:no-stem-darkening=1 \ + * autofitter:warping=1 + * ``` + * + * @inout: + * library :: + * A handle to a new library object. + * + * @since: + * 2.8 + */ + FT_EXPORT( void ) + FT_Set_Default_Properties( FT_Library library ); + + + /************************************************************************** + * + * @function: + * FT_Reference_Library + * + * @description: + * A counter gets initialized to~1 at the time an @FT_Library structure + * is created. This function increments the counter. @FT_Done_Library + * then only destroys a library if the counter is~1, otherwise it simply + * decrements the counter. + * + * This function helps in managing life-cycles of structures that + * reference @FT_Library objects. + * + * @input: + * library :: + * A handle to a target library object. + * + * @return: + * FreeType error code. 0~means success. + * + * @since: + * 2.4.2 + */ + FT_EXPORT( FT_Error ) + FT_Reference_Library( FT_Library library ); + + + /************************************************************************** + * + * @function: + * FT_New_Library + * + * @description: + * This function is used to create a new FreeType library instance from a + * given memory object. It is thus possible to use libraries with + * distinct memory allocators within the same program. Note, however, + * that the used @FT_Memory structure is expected to remain valid for the + * life of the @FT_Library object. + * + * Normally, you would call this function (followed by a call to + * @FT_Add_Default_Modules or a series of calls to @FT_Add_Module, and a + * call to @FT_Set_Default_Properties) instead of @FT_Init_FreeType to + * initialize the FreeType library. + * + * Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a library + * instance. + * + * @input: + * memory :: + * A handle to the original memory object. + * + * @output: + * alibrary :: + * A pointer to handle of a new library object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * See the discussion of reference counters in the description of + * @FT_Reference_Library. + */ + FT_EXPORT( FT_Error ) + FT_New_Library( FT_Memory memory, + FT_Library *alibrary ); + + + /************************************************************************** + * + * @function: + * FT_Done_Library + * + * @description: + * Discard a given library object. This closes all drivers and discards + * all resource objects. + * + * @input: + * library :: + * A handle to the target library. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * See the discussion of reference counters in the description of + * @FT_Reference_Library. + */ + FT_EXPORT( FT_Error ) + FT_Done_Library( FT_Library library ); + + + /************************************************************************** + * + * @functype: + * FT_DebugHook_Func + * + * @description: + * A drop-in replacement (or rather a wrapper) for the bytecode or + * charstring interpreter's main loop function. + * + * Its job is essentially + * + * - to activate debug mode to enforce single-stepping, + * + * - to call the main loop function to interpret the next opcode, and + * + * - to show the changed context to the user. + * + * An example for such a main loop function is `TT_RunIns` (declared in + * FreeType's internal header file `src/truetype/ttinterp.h`). + * + * Have a look at the source code of the `ttdebug` FreeType demo program + * for an example of a drop-in replacement. + * + * @inout: + * arg :: + * A typeless pointer, to be cast to the main loop function's data + * structure (which depends on the font module). For TrueType fonts + * it is bytecode interpreter's execution context, `TT_ExecContext`, + * which is declared in FreeType's internal header file `tttypes.h`. + */ + typedef FT_Error + (*FT_DebugHook_Func)( void* arg ); + + + /************************************************************************** + * + * @enum: + * FT_DEBUG_HOOK_XXX + * + * @description: + * A list of named debug hook indices. + * + * @values: + * FT_DEBUG_HOOK_TRUETYPE:: + * This hook index identifies the TrueType bytecode debugger. + */ +#define FT_DEBUG_HOOK_TRUETYPE 0 + + + /************************************************************************** + * + * @function: + * FT_Set_Debug_Hook + * + * @description: + * Set a debug hook function for debugging the interpreter of a font + * format. + * + * While this is a public API function, an application needs access to + * FreeType's internal header files to do something useful. + * + * Have a look at the source code of the `ttdebug` FreeType demo program + * for an example of its usage. + * + * @inout: + * library :: + * A handle to the library object. + * + * @input: + * hook_index :: + * The index of the debug hook. You should use defined enumeration + * macros like @FT_DEBUG_HOOK_TRUETYPE. + * + * debug_hook :: + * The function used to debug the interpreter. + * + * @note: + * Currently, four debug hook slots are available, but only one (for the + * TrueType interpreter) is defined. + */ + FT_EXPORT( void ) + FT_Set_Debug_Hook( FT_Library library, + FT_UInt hook_index, + FT_DebugHook_Func debug_hook ); + + + /************************************************************************** + * + * @function: + * FT_Add_Default_Modules + * + * @description: + * Add the set of default drivers to a given library object. This is + * only useful when you create a library object with @FT_New_Library + * (usually to plug a custom memory manager). + * + * @inout: + * library :: + * A handle to a new library object. + */ + FT_EXPORT( void ) + FT_Add_Default_Modules( FT_Library library ); + + + + /************************************************************************** + * + * @section: + * truetype_engine + * + * @title: + * The TrueType Engine + * + * @abstract: + * TrueType bytecode support. + * + * @description: + * This section contains a function used to query the level of TrueType + * bytecode support compiled in this version of the library. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_TrueTypeEngineType + * + * @description: + * A list of values describing which kind of TrueType bytecode engine is + * implemented in a given FT_Library instance. It is used by the + * @FT_Get_TrueType_Engine_Type function. + * + * @values: + * FT_TRUETYPE_ENGINE_TYPE_NONE :: + * The library doesn't implement any kind of bytecode interpreter. + * + * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: + * Deprecated and removed. + * + * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: + * The library implements a bytecode interpreter that covers the full + * instruction set of the TrueType virtual machine (this was governed + * by patents until May 2010, hence the name). + * + * @since: + * 2.2 + * + */ + typedef enum FT_TrueTypeEngineType_ + { + FT_TRUETYPE_ENGINE_TYPE_NONE = 0, + FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, + FT_TRUETYPE_ENGINE_TYPE_PATENTED + + } FT_TrueTypeEngineType; + + + /************************************************************************** + * + * @function: + * FT_Get_TrueType_Engine_Type + * + * @description: + * Return an @FT_TrueTypeEngineType value to indicate which level of the + * TrueType virtual machine a given library instance supports. + * + * @input: + * library :: + * A library instance. + * + * @return: + * A value indicating which level is supported. + * + * @since: + * 2.2 + * + */ + FT_EXPORT( FT_TrueTypeEngineType ) + FT_Get_TrueType_Engine_Type( FT_Library library ); + + /* */ + + +FT_END_HEADER + +#endif /* FTMODAPI_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftmoderr.h b/CMU462/deps/freetype/include/freetype/ftmoderr.h new file mode 100644 index 0000000..e169935 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftmoderr.h @@ -0,0 +1,203 @@ +/**************************************************************************** + * + * ftmoderr.h + * + * FreeType module error offsets (specification). + * + * Copyright (C) 2001-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This file is used to define the FreeType module error codes. + * + * If the macro `FT_CONFIG_OPTION_USE_MODULE_ERRORS` in `ftoption.h` is + * set, the lower byte of an error value identifies the error code as + * usual. In addition, the higher byte identifies the module. For + * example, the error `FT_Err_Invalid_File_Format` has value 0x0003, the + * error `TT_Err_Invalid_File_Format` has value 0x1303, the error + * `T1_Err_Invalid_File_Format` has value 0x1403, etc. + * + * Note that `FT_Err_Ok`, `TT_Err_Ok`, etc. are always equal to zero, + * including the high byte. + * + * If `FT_CONFIG_OPTION_USE_MODULE_ERRORS` isn't set, the higher byte of an + * error value is set to zero. + * + * To hide the various `XXX_Err_` prefixes in the source code, FreeType + * provides some macros in `fttypes.h`. + * + * FT_ERR( err ) + * + * Add current error module prefix (as defined with the `FT_ERR_PREFIX` + * macro) to `err`. For example, in the BDF module the line + * + * ``` + * error = FT_ERR( Invalid_Outline ); + * ``` + * + * expands to + * + * ``` + * error = BDF_Err_Invalid_Outline; + * ``` + * + * For simplicity, you can always use `FT_Err_Ok` directly instead of + * `FT_ERR( Ok )`. + * + * FT_ERR_EQ( errcode, err ) + * FT_ERR_NEQ( errcode, err ) + * + * Compare error code `errcode` with the error `err` for equality and + * inequality, respectively. Example: + * + * ``` + * if ( FT_ERR_EQ( error, Invalid_Outline ) ) + * ... + * ``` + * + * Using this macro you don't have to think about error prefixes. Of + * course, if module errors are not active, the above example is the + * same as + * + * ``` + * if ( error == FT_Err_Invalid_Outline ) + * ... + * ``` + * + * FT_ERROR_BASE( errcode ) + * FT_ERROR_MODULE( errcode ) + * + * Get base error and module error code, respectively. + * + * It can also be used to create a module error message table easily with + * something like + * + * ``` + * #undef FTMODERR_H_ + * #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, + * #define FT_MODERR_START_LIST { + * #define FT_MODERR_END_LIST { 0, 0 } }; + * + * const struct + * { + * int mod_err_offset; + * const char* mod_err_msg + * } ft_mod_errors[] = + * + * #include FT_MODULE_ERRORS_H + * ``` + * + */ + + +#ifndef FTMODERR_H_ +#define FTMODERR_H_ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + +#ifndef FT_MODERRDEF + +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v, +#else +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0, +#endif + +#define FT_MODERR_START_LIST enum { +#define FT_MODERR_END_LIST FT_Mod_Err_Max }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_MODERRDEF */ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST MODULE ERROR BASES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_MODERR_START_LIST + FT_MODERR_START_LIST +#endif + + + FT_MODERRDEF( Base, 0x000, "base module" ) + FT_MODERRDEF( Autofit, 0x100, "autofitter module" ) + FT_MODERRDEF( BDF, 0x200, "BDF module" ) + FT_MODERRDEF( Bzip2, 0x300, "Bzip2 module" ) + FT_MODERRDEF( Cache, 0x400, "cache module" ) + FT_MODERRDEF( CFF, 0x500, "CFF module" ) + FT_MODERRDEF( CID, 0x600, "CID module" ) + FT_MODERRDEF( Gzip, 0x700, "Gzip module" ) + FT_MODERRDEF( LZW, 0x800, "LZW module" ) + FT_MODERRDEF( OTvalid, 0x900, "OpenType validation module" ) + FT_MODERRDEF( PCF, 0xA00, "PCF module" ) + FT_MODERRDEF( PFR, 0xB00, "PFR module" ) + FT_MODERRDEF( PSaux, 0xC00, "PS auxiliary module" ) + FT_MODERRDEF( PShinter, 0xD00, "PS hinter module" ) + FT_MODERRDEF( PSnames, 0xE00, "PS names module" ) + FT_MODERRDEF( Raster, 0xF00, "raster module" ) + FT_MODERRDEF( SFNT, 0x1000, "SFNT module" ) + FT_MODERRDEF( Smooth, 0x1100, "smooth raster module" ) + FT_MODERRDEF( TrueType, 0x1200, "TrueType module" ) + FT_MODERRDEF( Type1, 0x1300, "Type 1 module" ) + FT_MODERRDEF( Type42, 0x1400, "Type 42 module" ) + FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" ) + FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" ) + + +#ifdef FT_MODERR_END_LIST + FT_MODERR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_MODERR_START_LIST +#undef FT_MODERR_END_LIST +#undef FT_MODERRDEF +#undef FT_NEED_EXTERN_C + + +#endif /* FTMODERR_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftotval.h b/CMU462/deps/freetype/include/freetype/ftotval.h new file mode 100644 index 0000000..c034f48 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftotval.h @@ -0,0 +1,207 @@ +/**************************************************************************** + * + * ftotval.h + * + * FreeType API for validating OpenType tables (specification). + * + * Copyright (C) 2004-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +/**************************************************************************** + * + * + * Warning: This module might be moved to a different library in the + * future to avoid a tight dependency between FreeType and the + * OpenType specification. + * + * + */ + + +#ifndef FTOTVAL_H_ +#define FTOTVAL_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * ot_validation + * + * @title: + * OpenType Validation + * + * @abstract: + * An API to validate OpenType tables. + * + * @description: + * This section contains the declaration of functions to validate some + * OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). + * + * @order: + * FT_OpenType_Validate + * FT_OpenType_Free + * + * FT_VALIDATE_OTXXX + * + */ + + + /************************************************************************** + * + * @enum: + * FT_VALIDATE_OTXXX + * + * @description: + * A list of bit-field constants used with @FT_OpenType_Validate to + * indicate which OpenType tables should be validated. + * + * @values: + * FT_VALIDATE_BASE :: + * Validate BASE table. + * + * FT_VALIDATE_GDEF :: + * Validate GDEF table. + * + * FT_VALIDATE_GPOS :: + * Validate GPOS table. + * + * FT_VALIDATE_GSUB :: + * Validate GSUB table. + * + * FT_VALIDATE_JSTF :: + * Validate JSTF table. + * + * FT_VALIDATE_MATH :: + * Validate MATH table. + * + * FT_VALIDATE_OT :: + * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). + * + */ +#define FT_VALIDATE_BASE 0x0100 +#define FT_VALIDATE_GDEF 0x0200 +#define FT_VALIDATE_GPOS 0x0400 +#define FT_VALIDATE_GSUB 0x0800 +#define FT_VALIDATE_JSTF 0x1000 +#define FT_VALIDATE_MATH 0x2000 + +#define FT_VALIDATE_OT ( FT_VALIDATE_BASE | \ + FT_VALIDATE_GDEF | \ + FT_VALIDATE_GPOS | \ + FT_VALIDATE_GSUB | \ + FT_VALIDATE_JSTF | \ + FT_VALIDATE_MATH ) + + + /************************************************************************** + * + * @function: + * FT_OpenType_Validate + * + * @description: + * Validate various OpenType tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without error + * checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the tables to be validated. See + * @FT_VALIDATE_OTXXX for possible values. + * + * @output: + * BASE_table :: + * A pointer to the BASE table. + * + * GDEF_table :: + * A pointer to the GDEF table. + * + * GPOS_table :: + * A pointer to the GPOS table. + * + * GSUB_table :: + * A pointer to the GSUB table. + * + * JSTF_table :: + * A pointer to the JSTF table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with OpenType fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the five tables with + * @FT_OpenType_Free. A `NULL` value indicates that the table either + * doesn't exist in the font, or the application hasn't asked for + * validation. + */ + FT_EXPORT( FT_Error ) + FT_OpenType_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *BASE_table, + FT_Bytes *GDEF_table, + FT_Bytes *GPOS_table, + FT_Bytes *GSUB_table, + FT_Bytes *JSTF_table ); + + + /************************************************************************** + * + * @function: + * FT_OpenType_Free + * + * @description: + * Free the buffer allocated by OpenType validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_OpenType_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_OpenType_Validate only. + */ + FT_EXPORT( void ) + FT_OpenType_Free( FT_Face face, + FT_Bytes table ); + + + /* */ + + +FT_END_HEADER + +#endif /* FTOTVAL_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftoutln.h b/CMU462/deps/freetype/include/freetype/ftoutln.h new file mode 100644 index 0000000..b72327b --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftoutln.h @@ -0,0 +1,593 @@ +/**************************************************************************** + * + * ftoutln.h + * + * Support for the FT_Outline type used to store glyph shapes of + * most scalable font formats (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTOUTLN_H_ +#define FTOUTLN_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * outline_processing + * + * @title: + * Outline Processing + * + * @abstract: + * Functions to create, transform, and render vectorial glyph images. + * + * @description: + * This section contains routines used to create and destroy scalable + * glyph images known as 'outlines'. These can also be measured, + * transformed, and converted into bitmaps and pixmaps. + * + * @order: + * FT_Outline + * FT_Outline_New + * FT_Outline_Done + * FT_Outline_Copy + * FT_Outline_Translate + * FT_Outline_Transform + * FT_Outline_Embolden + * FT_Outline_EmboldenXY + * FT_Outline_Reverse + * FT_Outline_Check + * + * FT_Outline_Get_CBox + * FT_Outline_Get_BBox + * + * FT_Outline_Get_Bitmap + * FT_Outline_Render + * FT_Outline_Decompose + * FT_Outline_Funcs + * FT_Outline_MoveToFunc + * FT_Outline_LineToFunc + * FT_Outline_ConicToFunc + * FT_Outline_CubicToFunc + * + * FT_Orientation + * FT_Outline_Get_Orientation + * + * FT_OUTLINE_XXX + * + */ + + + /************************************************************************** + * + * @function: + * FT_Outline_Decompose + * + * @description: + * Walk over an outline's structure to decompose it into individual + * segments and Bezier arcs. This function also emits 'move to' + * operations to indicate the start of new contours in the outline. + * + * @input: + * outline :: + * A pointer to the source target. + * + * func_interface :: + * A table of 'emitters', i.e., function pointers called during + * decomposition to indicate path operations. + * + * @inout: + * user :: + * A typeless pointer that is passed to each emitter during the + * decomposition. It can be used to store the state during the + * decomposition. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * A contour that contains a single point only is represented by a 'move + * to' operation followed by 'line to' to the same point. In most cases, + * it is best to filter this out before using the outline for stroking + * purposes (otherwise it would result in a visible dot when round caps + * are used). + * + * Similarly, the function returns success for an empty outline also + * (doing nothing, this is, not calling any emitter); if necessary, you + * should filter this out, too. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Decompose( FT_Outline* outline, + const FT_Outline_Funcs* func_interface, + void* user ); + + + /************************************************************************** + * + * @function: + * FT_Outline_New + * + * @description: + * Create a new outline of a given size. + * + * @input: + * library :: + * A handle to the library object from where the outline is allocated. + * Note however that the new outline will **not** necessarily be + * **freed**, when destroying the library, by @FT_Done_FreeType. + * + * numPoints :: + * The maximum number of points within the outline. Must be smaller + * than or equal to 0xFFFF (65535). + * + * numContours :: + * The maximum number of contours within the outline. This value must + * be in the range 0 to `numPoints`. + * + * @output: + * anoutline :: + * A handle to the new outline. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The reason why this function takes a `library` parameter is simply to + * use the library's memory allocator. + */ + FT_EXPORT( FT_Error ) + FT_Outline_New( FT_Library library, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Done + * + * @description: + * Destroy an outline created with @FT_Outline_New. + * + * @input: + * library :: + * A handle of the library object used to allocate the outline. + * + * outline :: + * A pointer to the outline object to be discarded. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the outline's 'owner' field is not set, only the outline descriptor + * will be released. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Done( FT_Library library, + FT_Outline* outline ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Check + * + * @description: + * Check the contents of an outline descriptor. + * + * @input: + * outline :: + * A handle to a source outline. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * An empty outline, or an outline with a single point only is also + * valid. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Check( FT_Outline* outline ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_CBox + * + * @description: + * Return an outline's 'control box'. The control box encloses all the + * outline's points, including Bezier control points. Though it + * coincides with the exact bounding box for most glyphs, it can be + * slightly larger in some situations (like when rotating an outline that + * contains Bezier outside arcs). + * + * Computing the control box is very fast, while getting the bounding box + * can take much more time as it needs to walk over all segments and arcs + * in the outline. To get the latter, you can use the 'ftbbox' + * component, which is dedicated to this single task. + * + * @input: + * outline :: + * A pointer to the source outline descriptor. + * + * @output: + * acbox :: + * The outline's control box. + * + * @note: + * See @FT_Glyph_Get_CBox for a discussion of tricky fonts. + */ + FT_EXPORT( void ) + FT_Outline_Get_CBox( const FT_Outline* outline, + FT_BBox *acbox ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Translate + * + * @description: + * Apply a simple translation to the points of an outline. + * + * @inout: + * outline :: + * A pointer to the target outline descriptor. + * + * @input: + * xOffset :: + * The horizontal offset. + * + * yOffset :: + * The vertical offset. + */ + FT_EXPORT( void ) + FT_Outline_Translate( const FT_Outline* outline, + FT_Pos xOffset, + FT_Pos yOffset ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Copy + * + * @description: + * Copy an outline into another one. Both objects must have the same + * sizes (number of points & number of contours) when this function is + * called. + * + * @input: + * source :: + * A handle to the source outline. + * + * @output: + * target :: + * A handle to the target outline. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Copy( const FT_Outline* source, + FT_Outline *target ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Transform + * + * @description: + * Apply a simple 2x2 matrix to all of an outline's points. Useful for + * applying rotations, slanting, flipping, etc. + * + * @inout: + * outline :: + * A pointer to the target outline descriptor. + * + * @input: + * matrix :: + * A pointer to the transformation matrix. + * + * @note: + * You can use @FT_Outline_Translate if you need to translate the + * outline's points. + */ + FT_EXPORT( void ) + FT_Outline_Transform( const FT_Outline* outline, + const FT_Matrix* matrix ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Embolden + * + * @description: + * Embolden an outline. The new outline will be at most 4~times + * `strength` pixels wider and higher. You may think of the left and + * bottom borders as unchanged. + * + * Negative `strength` values to reduce the outline thickness are + * possible also. + * + * @inout: + * outline :: + * A handle to the target outline. + * + * @input: + * strength :: + * How strong the glyph is emboldened. Expressed in 26.6 pixel format. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The used algorithm to increase or decrease the thickness of the glyph + * doesn't change the number of points; this means that certain + * situations like acute angles or intersections are sometimes handled + * incorrectly. + * + * If you need 'better' metrics values you should call + * @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. + * + * To get meaningful results, font scaling values must be set with + * functions like @FT_Set_Char_Size before calling FT_Render_Glyph. + * + * @example: + * ``` + * FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); + * + * if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE ) + * FT_Outline_Embolden( &face->glyph->outline, strength ); + * ``` + * + */ + FT_EXPORT( FT_Error ) + FT_Outline_Embolden( FT_Outline* outline, + FT_Pos strength ); + + + /************************************************************************** + * + * @function: + * FT_Outline_EmboldenXY + * + * @description: + * Embolden an outline. The new outline will be `xstrength` pixels wider + * and `ystrength` pixels higher. Otherwise, it is similar to + * @FT_Outline_Embolden, which uses the same strength in both directions. + * + * @since: + * 2.4.10 + */ + FT_EXPORT( FT_Error ) + FT_Outline_EmboldenXY( FT_Outline* outline, + FT_Pos xstrength, + FT_Pos ystrength ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Reverse + * + * @description: + * Reverse the drawing direction of an outline. This is used to ensure + * consistent fill conventions for mirrored glyphs. + * + * @inout: + * outline :: + * A pointer to the target outline descriptor. + * + * @note: + * This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in the + * outline's `flags` field. + * + * It shouldn't be used by a normal client application, unless it knows + * what it is doing. + */ + FT_EXPORT( void ) + FT_Outline_Reverse( FT_Outline* outline ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_Bitmap + * + * @description: + * Render an outline within a bitmap. The outline's image is simply + * OR-ed to the target bitmap. + * + * @input: + * library :: + * A handle to a FreeType library object. + * + * outline :: + * A pointer to the source outline descriptor. + * + * @inout: + * abitmap :: + * A pointer to the target bitmap descriptor. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function does **not create** the bitmap, it only renders an + * outline image within the one you pass to it! Consequently, the + * various fields in `abitmap` should be set accordingly. + * + * It will use the raster corresponding to the default glyph format. + * + * The value of the `num_grays` field in `abitmap` is ignored. If you + * select the gray-level rasterizer, and you want less than 256 gray + * levels, you have to use @FT_Outline_Render directly. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_Bitmap( FT_Library library, + FT_Outline* outline, + const FT_Bitmap *abitmap ); + + + /************************************************************************** + * + * @function: + * FT_Outline_Render + * + * @description: + * Render an outline within a bitmap using the current scan-convert. + * + * @input: + * library :: + * A handle to a FreeType library object. + * + * outline :: + * A pointer to the source outline descriptor. + * + * @inout: + * params :: + * A pointer to an @FT_Raster_Params structure used to describe the + * rendering operation. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This advanced function uses @FT_Raster_Params as an argument, + * allowing FreeType rasterizer to be used for direct composition, + * translucency, etc. You should know how to set up @FT_Raster_Params + * for this function to work. + * + * The field `params.source` will be set to `outline` before the scan + * converter is called, which means that the value you give to it is + * actually ignored. + * + * The gray-level rasterizer always uses 256 gray levels. If you want + * less gray levels, you have to provide your own span callback. See the + * @FT_RASTER_FLAG_DIRECT value of the `flags` field in the + * @FT_Raster_Params structure for more details. + */ + FT_EXPORT( FT_Error ) + FT_Outline_Render( FT_Library library, + FT_Outline* outline, + FT_Raster_Params* params ); + + + /************************************************************************** + * + * @enum: + * FT_Orientation + * + * @description: + * A list of values used to describe an outline's contour orientation. + * + * The TrueType and PostScript specifications use different conventions + * to determine whether outline contours should be filled or unfilled. + * + * @values: + * FT_ORIENTATION_TRUETYPE :: + * According to the TrueType specification, clockwise contours must be + * filled, and counter-clockwise ones must be unfilled. + * + * FT_ORIENTATION_POSTSCRIPT :: + * According to the PostScript specification, counter-clockwise + * contours must be filled, and clockwise ones must be unfilled. + * + * FT_ORIENTATION_FILL_RIGHT :: + * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to + * remember that in TrueType, everything that is to the right of the + * drawing direction of a contour must be filled. + * + * FT_ORIENTATION_FILL_LEFT :: + * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to + * remember that in PostScript, everything that is to the left of the + * drawing direction of a contour must be filled. + * + * FT_ORIENTATION_NONE :: + * The orientation cannot be determined. That is, different parts of + * the glyph have different orientation. + * + */ + typedef enum FT_Orientation_ + { + FT_ORIENTATION_TRUETYPE = 0, + FT_ORIENTATION_POSTSCRIPT = 1, + FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE, + FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT, + FT_ORIENTATION_NONE + + } FT_Orientation; + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_Orientation + * + * @description: + * This function analyzes a glyph outline and tries to compute its fill + * orientation (see @FT_Orientation). This is done by integrating the + * total area covered by the outline. The positive integral corresponds + * to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT is + * returned. The negative integral corresponds to the counter-clockwise + * orientation and @FT_ORIENTATION_TRUETYPE is returned. + * + * Note that this will return @FT_ORIENTATION_TRUETYPE for empty + * outlines. + * + * @input: + * outline :: + * A handle to the source outline. + * + * @return: + * The orientation. + * + */ + FT_EXPORT( FT_Orientation ) + FT_Outline_Get_Orientation( FT_Outline* outline ); + + + /* */ + + +FT_END_HEADER + +#endif /* FTOUTLN_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/CMU462/deps/freetype/include/freetype/ftparams.h b/CMU462/deps/freetype/include/freetype/ftparams.h new file mode 100644 index 0000000..c374ee2 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftparams.h @@ -0,0 +1,204 @@ +/**************************************************************************** + * + * ftparams.h + * + * FreeType API for possible FT_Parameter tags (specification only). + * + * Copyright (C) 2017-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTPARAMS_H_ +#define FTPARAMS_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * parameter_tags + * + * @title: + * Parameter Tags + * + * @abstract: + * Macros for driver property and font loading parameter tags. + * + * @description: + * This section contains macros for the @FT_Parameter structure that are + * used with various functions to activate some special functionality or + * different behaviour of various components of FreeType. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY + * + * @description: + * A tag for @FT_Parameter to make @FT_Open_Face ignore typographic + * family names in the 'name' table (introduced in OpenType version 1.4). + * Use this for backward compatibility with legacy systems that have a + * four-faces-per-family restriction. + * + * @since: + * 2.8 + * + */ +#define FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY \ + FT_MAKE_TAG( 'i', 'g', 'p', 'f' ) + + + /* this constant is deprecated */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY \ + FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY + * + * @description: + * A tag for @FT_Parameter to make @FT_Open_Face ignore typographic + * subfamily names in the 'name' table (introduced in OpenType version + * 1.4). Use this for backward compatibility with legacy systems that + * have a four-faces-per-family restriction. + * + * @since: + * 2.8 + * + */ +#define FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY \ + FT_MAKE_TAG( 'i', 'g', 'p', 's' ) + + + /* this constant is deprecated */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY \ + FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_INCREMENTAL + * + * @description: + * An @FT_Parameter tag to be used with @FT_Open_Face to indicate + * incremental glyph loading. + * + */ +#define FT_PARAM_TAG_INCREMENTAL \ + FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_LCD_FILTER_WEIGHTS + * + * @description: + * An @FT_Parameter tag to be used with @FT_Face_Properties. The + * corresponding argument specifies the five LCD filter weights for a + * given face (if using @FT_LOAD_TARGET_LCD, for example), overriding the + * global default values or the values set up with + * @FT_Library_SetLcdFilterWeights. + * + * @since: + * 2.8 + * + */ +#define FT_PARAM_TAG_LCD_FILTER_WEIGHTS \ + FT_MAKE_TAG( 'l', 'c', 'd', 'f' ) + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_RANDOM_SEED + * + * @description: + * An @FT_Parameter tag to be used with @FT_Face_Properties. The + * corresponding 32bit signed integer argument overrides the font + * driver's random seed value with a face-specific one; see @random-seed. + * + * @since: + * 2.8 + * + */ +#define FT_PARAM_TAG_RANDOM_SEED \ + FT_MAKE_TAG( 's', 'e', 'e', 'd' ) + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_STEM_DARKENING + * + * @description: + * An @FT_Parameter tag to be used with @FT_Face_Properties. The + * corresponding Boolean argument specifies whether to apply stem + * darkening, overriding the global default values or the values set up + * with @FT_Property_Set (see @no-stem-darkening). + * + * This is a passive setting that only takes effect if the font driver or + * autohinter honors it, which the CFF, Type~1, and CID drivers always + * do, but the autohinter only in 'light' hinting mode (as of version + * 2.9). + * + * @since: + * 2.8 + * + */ +#define FT_PARAM_TAG_STEM_DARKENING \ + FT_MAKE_TAG( 'd', 'a', 'r', 'k' ) + + + /************************************************************************** + * + * @enum: + * FT_PARAM_TAG_UNPATENTED_HINTING + * + * @description: + * Deprecated, no effect. + * + * Previously: A constant used as the tag of an @FT_Parameter structure + * to indicate that unpatented methods only should be used by the + * TrueType bytecode interpreter for a typeface opened by @FT_Open_Face. + * + */ +#define FT_PARAM_TAG_UNPATENTED_HINTING \ + FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) + + + /* */ + + +FT_END_HEADER + + +#endif /* FTPARAMS_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftpfr.h b/CMU462/deps/freetype/include/freetype/ftpfr.h new file mode 100644 index 0000000..b4eca76 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftpfr.h @@ -0,0 +1,180 @@ +/**************************************************************************** + * + * ftpfr.h + * + * FreeType API for accessing PFR-specific data (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. + * + */ + + +#ifndef FTPFR_H_ +#define FTPFR_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * pfr_fonts + * + * @title: + * PFR Fonts + * + * @abstract: + * PFR/TrueDoc-specific API. + * + * @description: + * This section contains the declaration of PFR-specific functions. + * + */ + + + /************************************************************************** + * + * @function: + * FT_Get_PFR_Metrics + * + * @description: + * Return the outline and metrics resolutions of a given PFR face. + * + * @input: + * face :: + * Handle to the input face. It can be a non-PFR face. + * + * @output: + * aoutline_resolution :: + * Outline resolution. This is equivalent to `face->units_per_EM` for + * non-PFR fonts. Optional (parameter can be `NULL`). + * + * ametrics_resolution :: + * Metrics resolution. This is equivalent to `outline_resolution` for + * non-PFR fonts. Optional (parameter can be `NULL`). + * + * ametrics_x_scale :: + * A 16.16 fixed-point number used to scale distance expressed in + * metrics units to device subpixels. This is equivalent to + * `face->size->x_scale`, but for metrics only. Optional (parameter + * can be `NULL`). + * + * ametrics_y_scale :: + * Same as `ametrics_x_scale` but for the vertical direction. + * optional (parameter can be `NULL`). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the input face is not a PFR, this function will return an error. + * However, in all cases, it will return valid values. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Metrics( FT_Face face, + FT_UInt *aoutline_resolution, + FT_UInt *ametrics_resolution, + FT_Fixed *ametrics_x_scale, + FT_Fixed *ametrics_y_scale ); + + + /************************************************************************** + * + * @function: + * FT_Get_PFR_Kerning + * + * @description: + * Return the kerning pair corresponding to two glyphs in a PFR face. + * The distance is expressed in metrics units, unlike the result of + * @FT_Get_Kerning. + * + * @input: + * face :: + * A handle to the input face. + * + * left :: + * Index of the left glyph. + * + * right :: + * Index of the right glyph. + * + * @output: + * avector :: + * A kerning vector. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function always return distances in original PFR metrics units. + * This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED mode, + * which always returns distances converted to outline units. + * + * You can use the value of the `x_scale` and `y_scale` parameters + * returned by @FT_Get_PFR_Metrics to scale these to device subpixels. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Kerning( FT_Face face, + FT_UInt left, + FT_UInt right, + FT_Vector *avector ); + + + /************************************************************************** + * + * @function: + * FT_Get_PFR_Advance + * + * @description: + * Return a given glyph advance, expressed in original metrics units, + * from a PFR font. + * + * @input: + * face :: + * A handle to the input face. + * + * gindex :: + * The glyph index. + * + * @output: + * aadvance :: + * The glyph advance in metrics units. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You can use the `x_scale` or `y_scale` results of @FT_Get_PFR_Metrics + * to convert the advance to device subpixels (i.e., 1/64th of pixels). + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Advance( FT_Face face, + FT_UInt gindex, + FT_Pos *aadvance ); + + /* */ + + +FT_END_HEADER + +#endif /* FTPFR_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftrender.h b/CMU462/deps/freetype/include/freetype/ftrender.h new file mode 100644 index 0000000..a01c774 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftrender.h @@ -0,0 +1,245 @@ +/**************************************************************************** + * + * ftrender.h + * + * FreeType renderer modules public interface (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTRENDER_H_ +#define FTRENDER_H_ + + +#include <ft2build.h> +#include FT_MODULE_H +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * module_management + * + */ + + + /* create a new glyph object */ + typedef FT_Error + (*FT_Glyph_InitFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + + /* destroys a given glyph object */ + typedef void + (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); + + typedef void + (*FT_Glyph_TransformFunc)( FT_Glyph glyph, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + typedef void + (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, + FT_BBox* abbox ); + + typedef FT_Error + (*FT_Glyph_CopyFunc)( FT_Glyph source, + FT_Glyph target ); + + typedef FT_Error + (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + +/* deprecated */ +#define FT_Glyph_Init_Func FT_Glyph_InitFunc +#define FT_Glyph_Done_Func FT_Glyph_DoneFunc +#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc +#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc +#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc +#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc + + + struct FT_Glyph_Class_ + { + FT_Long glyph_size; + FT_Glyph_Format glyph_format; + + FT_Glyph_InitFunc glyph_init; + FT_Glyph_DoneFunc glyph_done; + FT_Glyph_CopyFunc glyph_copy; + FT_Glyph_TransformFunc glyph_transform; + FT_Glyph_GetBBoxFunc glyph_bbox; + FT_Glyph_PrepareFunc glyph_prepare; + }; + + + typedef FT_Error + (*FT_Renderer_RenderFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_Render_Mode mode, + const FT_Vector* origin ); + + typedef FT_Error + (*FT_Renderer_TransformFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + + typedef void + (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_BBox* cbox ); + + + typedef FT_Error + (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, + FT_ULong mode_tag, + FT_Pointer mode_ptr ); + +/* deprecated identifiers */ +#define FTRenderer_render FT_Renderer_RenderFunc +#define FTRenderer_transform FT_Renderer_TransformFunc +#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc +#define FTRenderer_setMode FT_Renderer_SetModeFunc + + + /************************************************************************** + * + * @struct: + * FT_Renderer_Class + * + * @description: + * The renderer module class descriptor. + * + * @fields: + * root :: + * The root @FT_Module_Class fields. + * + * glyph_format :: + * The glyph image format this renderer handles. + * + * render_glyph :: + * A method used to render the image that is in a given glyph slot into + * a bitmap. + * + * transform_glyph :: + * A method used to transform the image that is in a given glyph slot. + * + * get_glyph_cbox :: + * A method used to access the glyph's cbox. + * + * set_mode :: + * A method used to pass additional parameters. + * + * raster_class :: + * For @FT_GLYPH_FORMAT_OUTLINE renderers only. This is a pointer to + * its raster's class. + */ + typedef struct FT_Renderer_Class_ + { + FT_Module_Class root; + + FT_Glyph_Format glyph_format; + + FT_Renderer_RenderFunc render_glyph; + FT_Renderer_TransformFunc transform_glyph; + FT_Renderer_GetCBoxFunc get_glyph_cbox; + FT_Renderer_SetModeFunc set_mode; + + FT_Raster_Funcs* raster_class; + + } FT_Renderer_Class; + + + /************************************************************************** + * + * @function: + * FT_Get_Renderer + * + * @description: + * Retrieve the current renderer for a given glyph format. + * + * @input: + * library :: + * A handle to the library object. + * + * format :: + * The glyph format. + * + * @return: + * A renderer handle. 0~if none found. + * + * @note: + * An error will be returned if a module already exists by that name, or + * if the module requires a version of FreeType that is too great. + * + * To add a new renderer, simply use @FT_Add_Module. To retrieve a + * renderer by its name, use @FT_Get_Module. + */ + FT_EXPORT( FT_Renderer ) + FT_Get_Renderer( FT_Library library, + FT_Glyph_Format format ); + + + /************************************************************************** + * + * @function: + * FT_Set_Renderer + * + * @description: + * Set the current renderer to use, and set additional mode. + * + * @inout: + * library :: + * A handle to the library object. + * + * @input: + * renderer :: + * A handle to the renderer object. + * + * num_params :: + * The number of additional parameters. + * + * parameters :: + * Additional parameters. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * In case of success, the renderer will be used to convert glyph images + * in the renderer's known format into bitmaps. + * + * This doesn't change the current renderer for other formats. + * + * Currently, no FreeType renderer module uses `parameters`; you should + * thus always pass `NULL` as the value. + */ + FT_EXPORT( FT_Error ) + FT_Set_Renderer( FT_Library library, + FT_Renderer renderer, + FT_UInt num_params, + FT_Parameter* parameters ); + + /* */ + + +FT_END_HEADER + +#endif /* FTRENDER_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftsizes.h b/CMU462/deps/freetype/include/freetype/ftsizes.h new file mode 100644 index 0000000..6c63cef --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftsizes.h @@ -0,0 +1,160 @@ +/**************************************************************************** + * + * ftsizes.h + * + * FreeType size objects management (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * Typical application would normally not need to use these functions. + * However, they have been placed in a public API for the rare cases where + * they are needed. + * + */ + + +#ifndef FTSIZES_H_ +#define FTSIZES_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * sizes_management + * + * @title: + * Size Management + * + * @abstract: + * Managing multiple sizes per face. + * + * @description: + * When creating a new face object (e.g., with @FT_New_Face), an @FT_Size + * object is automatically created and used to store all pixel-size + * dependent information, available in the `face->size` field. + * + * It is however possible to create more sizes for a given face, mostly + * in order to manage several character pixel sizes of the same font + * family and style. See @FT_New_Size and @FT_Done_Size. + * + * Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only modify the + * contents of the current 'active' size; you thus need to use + * @FT_Activate_Size to change it. + * + * 99% of applications won't need the functions provided here, especially + * if they use the caching sub-system, so be cautious when using these. + * + */ + + + /************************************************************************** + * + * @function: + * FT_New_Size + * + * @description: + * Create a new size object from a given face object. + * + * @input: + * face :: + * A handle to a parent face object. + * + * @output: + * asize :: + * A handle to a new size object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You need to call @FT_Activate_Size in order to select the new size for + * upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, + * @FT_Load_Glyph, @FT_Load_Char, etc. + */ + FT_EXPORT( FT_Error ) + FT_New_Size( FT_Face face, + FT_Size* size ); + + + /************************************************************************** + * + * @function: + * FT_Done_Size + * + * @description: + * Discard a given size object. Note that @FT_Done_Face automatically + * discards all size objects allocated with @FT_New_Size. + * + * @input: + * size :: + * A handle to a target size object. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Done_Size( FT_Size size ); + + + /************************************************************************** + * + * @function: + * FT_Activate_Size + * + * @description: + * Even though it is possible to create several size objects for a given + * face (see @FT_New_Size for details), functions like @FT_Load_Glyph or + * @FT_Load_Char only use the one that has been activated last to + * determine the 'current character pixel size'. + * + * This function can be used to 'activate' a previously created size + * object. + * + * @input: + * size :: + * A handle to a target size object. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `face` is the size's parent face object, this function changes the + * value of `face->size` to the input size handle. + */ + FT_EXPORT( FT_Error ) + FT_Activate_Size( FT_Size size ); + + /* */ + + +FT_END_HEADER + +#endif /* FTSIZES_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftsnames.h b/CMU462/deps/freetype/include/freetype/ftsnames.h new file mode 100644 index 0000000..4d43602 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftsnames.h @@ -0,0 +1,273 @@ +/**************************************************************************** + * + * ftsnames.h + * + * Simple interface to access SFNT 'name' tables (which are used + * to hold font names, copyright info, notices, etc.) (specification). + * + * This is _not_ used to retrieve glyph names! + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTSNAMES_H_ +#define FTSNAMES_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_PARAMETER_TAGS_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * sfnt_names + * + * @title: + * SFNT Names + * + * @abstract: + * Access the names embedded in TrueType and OpenType files. + * + * @description: + * The TrueType and OpenType specifications allow the inclusion of a + * special names table ('name') in font files. This table contains + * textual (and internationalized) information regarding the font, like + * family name, copyright, version, etc. + * + * The definitions below are used to access them if available. + * + * Note that this has nothing to do with glyph names! + * + */ + + + /************************************************************************** + * + * @struct: + * FT_SfntName + * + * @description: + * A structure used to model an SFNT 'name' table entry. + * + * @fields: + * platform_id :: + * The platform ID for `string`. See @TT_PLATFORM_XXX for possible + * values. + * + * encoding_id :: + * The encoding ID for `string`. See @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, + * @TT_ISO_ID_XXX, @TT_MS_ID_XXX, and @TT_ADOBE_ID_XXX for possible + * values. + * + * language_id :: + * The language ID for `string`. See @TT_MAC_LANGID_XXX and + * @TT_MS_LANGID_XXX for possible values. + * + * Registered OpenType values for `language_id` are always smaller than + * 0x8000; values equal or larger than 0x8000 usually indicate a + * language tag string (introduced in OpenType version 1.6). Use + * function @FT_Get_Sfnt_LangTag with `language_id` as its argument to + * retrieve the associated language tag. + * + * name_id :: + * An identifier for `string`. See @TT_NAME_ID_XXX for possible + * values. + * + * string :: + * The 'name' string. Note that its format differs depending on the + * (platform,encoding) pair, being either a string of bytes (without a + * terminating `NULL` byte) or containing UTF-16BE entities. + * + * string_len :: + * The length of `string` in bytes. + * + * @note: + * Please refer to the TrueType or OpenType specification for more + * details. + */ + typedef struct FT_SfntName_ + { + FT_UShort platform_id; + FT_UShort encoding_id; + FT_UShort language_id; + FT_UShort name_id; + + FT_Byte* string; /* this string is *not* null-terminated! */ + FT_UInt string_len; /* in bytes */ + + } FT_SfntName; + + + /************************************************************************** + * + * @function: + * FT_Get_Sfnt_Name_Count + * + * @description: + * Retrieve the number of name strings in the SFNT 'name' table. + * + * @input: + * face :: + * A handle to the source face. + * + * @return: + * The number of strings in the 'name' table. + * + * @note: + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`. + */ + FT_EXPORT( FT_UInt ) + FT_Get_Sfnt_Name_Count( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Get_Sfnt_Name + * + * @description: + * Retrieve a string of the SFNT 'name' table for a given index. + * + * @input: + * face :: + * A handle to the source face. + * + * idx :: + * The index of the 'name' string. + * + * @output: + * aname :: + * The indexed @FT_SfntName structure. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The `string` array returned in the `aname` structure is not + * null-terminated. Note that you don't have to deallocate `string` by + * yourself; FreeType takes care of it if you call @FT_Done_Face. + * + * Use @FT_Get_Sfnt_Name_Count to get the total number of available + * 'name' table entries, then do a loop until you get the right platform, + * encoding, and name ID. + * + * 'name' table format~1 entries can use language tags also, see + * @FT_Get_Sfnt_LangTag. + * + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`. + */ + FT_EXPORT( FT_Error ) + FT_Get_Sfnt_Name( FT_Face face, + FT_UInt idx, + FT_SfntName *aname ); + + + /************************************************************************** + * + * @struct: + * FT_SfntLangTag + * + * @description: + * A structure to model a language tag entry from an SFNT 'name' table. + * + * @fields: + * string :: + * The language tag string, encoded in UTF-16BE (without trailing + * `NULL` bytes). + * + * string_len :: + * The length of `string` in **bytes**. + * + * @note: + * Please refer to the TrueType or OpenType specification for more + * details. + * + * @since: + * 2.8 + */ + typedef struct FT_SfntLangTag_ + { + FT_Byte* string; /* this string is *not* null-terminated! */ + FT_UInt string_len; /* in bytes */ + + } FT_SfntLangTag; + + + /************************************************************************** + * + * @function: + * FT_Get_Sfnt_LangTag + * + * @description: + * Retrieve the language tag associated with a language ID of an SFNT + * 'name' table entry. + * + * @input: + * face :: + * A handle to the source face. + * + * langID :: + * The language ID, as returned by @FT_Get_Sfnt_Name. This is always a + * value larger than 0x8000. + * + * @output: + * alangTag :: + * The language tag associated with the 'name' table entry's language + * ID. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The `string` array returned in the `alangTag` structure is not + * null-terminated. Note that you don't have to deallocate `string` by + * yourself; FreeType takes care of it if you call @FT_Done_Face. + * + * Only 'name' table format~1 supports language tags. For format~0 + * tables, this function always returns FT_Err_Invalid_Table. For + * invalid format~1 language ID values, FT_Err_Invalid_Argument is + * returned. + * + * This function always returns an error if the config macro + * `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`. + * + * @since: + * 2.8 + */ + FT_EXPORT( FT_Error ) + FT_Get_Sfnt_LangTag( FT_Face face, + FT_UInt langID, + FT_SfntLangTag *alangTag ); + + + /* */ + + +FT_END_HEADER + +#endif /* FTSNAMES_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftstroke.h b/CMU462/deps/freetype/include/freetype/ftstroke.h old mode 100755 new mode 100644 similarity index 55% rename from CMU462/deps/freetype/include/freetype2/freetype/ftstroke.h rename to CMU462/deps/freetype/include/freetype/ftstroke.h index 738b43c..01a9c18 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftstroke.h +++ b/CMU462/deps/freetype/include/freetype/ftstroke.h @@ -1,23 +1,23 @@ -/***************************************************************************/ -/* */ -/* ftstroke.h */ -/* */ -/* FreeType path stroker (specification). */ -/* */ -/* Copyright 2002, 2003, 2004, 2005, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FT_STROKE_H__ -#define __FT_STROKE_H__ +/**************************************************************************** + * + * ftstroke.h + * + * FreeType path stroker (specification). + * + * Copyright (C) 2002-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTSTROKE_H_ +#define FTSTROKE_H_ #include <ft2build.h> #include FT_OUTLINE_H @@ -27,95 +27,146 @@ FT_BEGIN_HEADER - /************************************************************************ - * - * @section: - * glyph_stroker - * - * @title: - * Glyph Stroker - * - * @abstract: - * Generating bordered and stroked glyphs. - * - * @description: - * This component generates stroked outlines of a given vectorial - * glyph. It also allows you to retrieve the `outside' and/or the - * `inside' borders of the stroke. - * - * This can be useful to generate `bordered' glyph, i.e., glyphs - * displayed with a coloured (and anti-aliased) border around their - * shape. - */ - - - /************************************************************** - * - * @type: - * FT_Stroker - * - * @description: - * Opaque handler to a path stroker object. - */ + /************************************************************************** + * + * @section: + * glyph_stroker + * + * @title: + * Glyph Stroker + * + * @abstract: + * Generating bordered and stroked glyphs. + * + * @description: + * This component generates stroked outlines of a given vectorial glyph. + * It also allows you to retrieve the 'outside' and/or the 'inside' + * borders of the stroke. + * + * This can be useful to generate 'bordered' glyph, i.e., glyphs + * displayed with a coloured (and anti-aliased) border around their + * shape. + * + * @order: + * FT_Stroker + * + * FT_Stroker_LineJoin + * FT_Stroker_LineCap + * FT_StrokerBorder + * + * FT_Outline_GetInsideBorder + * FT_Outline_GetOutsideBorder + * + * FT_Glyph_Stroke + * FT_Glyph_StrokeBorder + * + * FT_Stroker_New + * FT_Stroker_Set + * FT_Stroker_Rewind + * FT_Stroker_ParseOutline + * FT_Stroker_Done + * + * FT_Stroker_BeginSubPath + * FT_Stroker_EndSubPath + * + * FT_Stroker_LineTo + * FT_Stroker_ConicTo + * FT_Stroker_CubicTo + * + * FT_Stroker_GetBorderCounts + * FT_Stroker_ExportBorder + * FT_Stroker_GetCounts + * FT_Stroker_Export + * + */ + + + /************************************************************************** + * + * @type: + * FT_Stroker + * + * @description: + * Opaque handle to a path stroker object. + */ typedef struct FT_StrokerRec_* FT_Stroker; - /************************************************************** + /************************************************************************** * * @enum: * FT_Stroker_LineJoin * * @description: - * These values determine how two joining lines are rendered - * in a stroker. + * These values determine how two joining lines are rendered in a + * stroker. * * @values: * FT_STROKER_LINEJOIN_ROUND :: - * Used to render rounded line joins. Circular arcs are used - * to join two lines smoothly. + * Used to render rounded line joins. Circular arcs are used to join + * two lines smoothly. * * FT_STROKER_LINEJOIN_BEVEL :: - * Used to render beveled line joins; i.e., the two joining lines - * are extended until they intersect. - * + * Used to render beveled line joins. The outer corner of the joined + * lines is filled by enclosing the triangular region of the corner + * with a straight line between the outer corners of each stroke. + * + * FT_STROKER_LINEJOIN_MITER_FIXED :: + * Used to render mitered line joins, with fixed bevels if the miter + * limit is exceeded. The outer edges of the strokes for the two + * segments are extended until they meet at an angle. If the segments + * meet at too sharp an angle (such that the miter would extend from + * the intersection of the segments a distance greater than the product + * of the miter limit value and the border radius), then a bevel join + * (see above) is used instead. This prevents long spikes being + * created. `FT_STROKER_LINEJOIN_MITER_FIXED` generates a miter line + * join as used in PostScript and PDF. + * + * FT_STROKER_LINEJOIN_MITER_VARIABLE :: * FT_STROKER_LINEJOIN_MITER :: - * Same as beveled rendering, except that an additional line - * break is added if the angle between the two joining lines - * is too closed (this is useful to avoid unpleasant spikes - * in beveled rendering). + * Used to render mitered line joins, with variable bevels if the miter + * limit is exceeded. The intersection of the strokes is clipped at a + * line perpendicular to the bisector of the angle between the strokes, + * at the distance from the intersection of the segments equal to the + * product of the miter limit value and the border radius. This + * prevents long spikes being created. + * `FT_STROKER_LINEJOIN_MITER_VARIABLE` generates a mitered line join + * as used in XPS. `FT_STROKER_LINEJOIN_MITER` is an alias for + * `FT_STROKER_LINEJOIN_MITER_VARIABLE`, retained for backward + * compatibility. */ - typedef enum + typedef enum FT_Stroker_LineJoin_ { - FT_STROKER_LINEJOIN_ROUND = 0, - FT_STROKER_LINEJOIN_BEVEL, - FT_STROKER_LINEJOIN_MITER + FT_STROKER_LINEJOIN_ROUND = 0, + FT_STROKER_LINEJOIN_BEVEL = 1, + FT_STROKER_LINEJOIN_MITER_VARIABLE = 2, + FT_STROKER_LINEJOIN_MITER = FT_STROKER_LINEJOIN_MITER_VARIABLE, + FT_STROKER_LINEJOIN_MITER_FIXED = 3 } FT_Stroker_LineJoin; - /************************************************************** + /************************************************************************** * * @enum: * FT_Stroker_LineCap * * @description: - * These values determine how the end of opened sub-paths are - * rendered in a stroke. + * These values determine how the end of opened sub-paths are rendered in + * a stroke. * * @values: * FT_STROKER_LINECAP_BUTT :: - * The end of lines is rendered as a full stop on the last - * point itself. + * The end of lines is rendered as a full stop on the last point + * itself. * * FT_STROKER_LINECAP_ROUND :: - * The end of lines is rendered as a half-circle around the - * last point. + * The end of lines is rendered as a half-circle around the last point. * * FT_STROKER_LINECAP_SQUARE :: - * The end of lines is rendered as a square around the - * last point. + * The end of lines is rendered as a square around the last point. */ - typedef enum + typedef enum FT_Stroker_LineCap_ { FT_STROKER_LINECAP_BUTT = 0, FT_STROKER_LINECAP_ROUND, @@ -124,14 +175,14 @@ FT_BEGIN_HEADER } FT_Stroker_LineCap; - /************************************************************** + /************************************************************************** * * @enum: * FT_StrokerBorder * * @description: - * These values are used to select a given stroke border - * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. + * These values are used to select a given stroke border in + * @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. * * @values: * FT_STROKER_BORDER_LEFT :: @@ -141,15 +192,15 @@ FT_BEGIN_HEADER * Select the right border, relative to the drawing direction. * * @note: - * Applications are generally interested in the `inside' and `outside' + * Applications are generally interested in the 'inside' and 'outside' * borders. However, there is no direct mapping between these and the - * `left' and `right' ones, since this really depends on the glyph's + * 'left' and 'right' ones, since this really depends on the glyph's * drawing orientation, which varies between font formats. * * You can however use @FT_Outline_GetInsideBorder and * @FT_Outline_GetOutsideBorder to get these. */ - typedef enum + typedef enum FT_StrokerBorder_ { FT_STROKER_BORDER_LEFT = 0, FT_STROKER_BORDER_RIGHT @@ -157,35 +208,35 @@ FT_BEGIN_HEADER } FT_StrokerBorder; - /************************************************************** + /************************************************************************** * * @function: * FT_Outline_GetInsideBorder * * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `inside' borders of a given outline. + * Retrieve the @FT_StrokerBorder value corresponding to the 'inside' + * borders of a given outline. * * @input: * outline :: * The source outline handle. * * @return: - * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid + * The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid * outlines. */ FT_EXPORT( FT_StrokerBorder ) FT_Outline_GetInsideBorder( FT_Outline* outline ); - /************************************************************** + /************************************************************************** * * @function: * FT_Outline_GetOutsideBorder * * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `outside' borders of a given outline. + * Retrieve the @FT_StrokerBorder value corresponding to the 'outside' + * borders of a given outline. * * @input: * outline :: @@ -199,7 +250,7 @@ FT_BEGIN_HEADER FT_Outline_GetOutsideBorder( FT_Outline* outline ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_New @@ -213,17 +264,17 @@ FT_BEGIN_HEADER * * @output: * astroker :: - * A new stroker object handle. NULL in case of error. + * A new stroker object handle. `NULL` in case of error. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. */ FT_EXPORT( FT_Error ) FT_Stroker_New( FT_Library library, FT_Stroker *astroker ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_Set @@ -245,12 +296,14 @@ FT_BEGIN_HEADER * The line join style. * * miter_limit :: - * The miter limit for the FT_STROKER_LINEJOIN_MITER style, - * expressed as 16.16 fixed point value. + * The miter limit for the `FT_STROKER_LINEJOIN_MITER_FIXED` and + * `FT_STROKER_LINEJOIN_MITER_VARIABLE` line join styles, expressed as + * 16.16 fixed-point value. * * @note: - * The radius is expressed in the same units that the outline - * coordinates. + * The radius is expressed in the same units as the outline coordinates. + * + * This function calls @FT_Stroker_Rewind automatically. */ FT_EXPORT( void ) FT_Stroker_Set( FT_Stroker stroker, @@ -260,16 +313,15 @@ FT_BEGIN_HEADER FT_Fixed miter_limit ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_Rewind * * @description: - * Reset a stroker object without changing its attributes. - * You should call this function before beginning a new - * series of calls to @FT_Stroker_BeginSubPath or - * @FT_Stroker_EndSubPath. + * Reset a stroker object without changing its attributes. You should + * call this function before beginning a new series of calls to + * @FT_Stroker_BeginSubPath or @FT_Stroker_EndSubPath. * * @input: * stroker :: @@ -279,15 +331,15 @@ FT_BEGIN_HEADER FT_Stroker_Rewind( FT_Stroker stroker ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_ParseOutline * * @description: - * A convenience function used to parse a whole outline with - * the stroker. The resulting outline(s) can be retrieved - * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. + * A convenience function used to parse a whole outline with the stroker. + * The resulting outline(s) can be retrieved later by functions like + * @FT_Stroker_GetCounts and @FT_Stroker_Export. * * @input: * stroker :: @@ -297,18 +349,18 @@ FT_BEGIN_HEADER * The source outline. * * opened :: - * A boolean. If 1, the outline is treated as an open path instead - * of a closed one. + * A boolean. If~1, the outline is treated as an open path instead of + * a closed one. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: - * If `opened' is 0 (the default), the outline is treated as a closed - * path, and the stroker will generate two distinct `border' outlines. + * If `opened` is~0 (the default), the outline is treated as a closed + * path, and the stroker generates two distinct 'border' outlines. * - * If `opened' is 1, the outline is processed as an open path, and the - * stroker will generate a single `stroke' outline. + * If `opened` is~1, the outline is processed as an open path, and the + * stroker generates a single 'stroke' outline. * * This function calls @FT_Stroker_Rewind automatically. */ @@ -318,7 +370,7 @@ FT_BEGIN_HEADER FT_Bool opened ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_BeginSubPath @@ -334,14 +386,14 @@ FT_BEGIN_HEADER * A pointer to the start vector. * * open :: - * A boolean. If 1, the sub-path is treated as an open one. + * A boolean. If~1, the sub-path is treated as an open one. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: - * This function is useful when you need to stroke a path that is - * not stored as an @FT_Outline object. + * This function is useful when you need to stroke a path that is not + * stored as an @FT_Outline object. */ FT_EXPORT( FT_Error ) FT_Stroker_BeginSubPath( FT_Stroker stroker, @@ -349,7 +401,7 @@ FT_BEGIN_HEADER FT_Bool open ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_EndSubPath @@ -362,25 +414,25 @@ FT_BEGIN_HEADER * The target stroker handle. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: - * You should call this function after @FT_Stroker_BeginSubPath. - * If the subpath was not `opened', this function will `draw' a - * single line segment to the start position when needed. + * You should call this function after @FT_Stroker_BeginSubPath. If the + * subpath was not 'opened', this function 'draws' a single line segment + * to the start position when needed. */ FT_EXPORT( FT_Error ) FT_Stroker_EndSubPath( FT_Stroker stroker ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_LineTo * * @description: - * `Draw' a single line segment in the stroker's current sub-path, - * from the last position. + * 'Draw' a single line segment in the stroker's current sub-path, from + * the last position. * * @input: * stroker :: @@ -390,7 +442,7 @@ FT_BEGIN_HEADER * A pointer to the destination point. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * You should call this function between @FT_Stroker_BeginSubPath and @@ -401,13 +453,13 @@ FT_BEGIN_HEADER FT_Vector* to ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_ConicTo * * @description: - * `Draw' a single quadratic Bézier in the stroker's current sub-path, + * 'Draw' a single quadratic Bezier in the stroker's current sub-path, * from the last position. * * @input: @@ -415,13 +467,13 @@ FT_BEGIN_HEADER * The target stroker handle. * * control :: - * A pointer to a Bézier control point. + * A pointer to a Bezier control point. * * to :: * A pointer to the destination point. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * You should call this function between @FT_Stroker_BeginSubPath and @@ -433,30 +485,30 @@ FT_BEGIN_HEADER FT_Vector* to ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_CubicTo * * @description: - * `Draw' a single cubic Bézier in the stroker's current sub-path, - * from the last position. + * 'Draw' a single cubic Bezier in the stroker's current sub-path, from + * the last position. * * @input: * stroker :: * The target stroker handle. * * control1 :: - * A pointer to the first Bézier control point. + * A pointer to the first Bezier control point. * * control2 :: - * A pointer to second Bézier control point. + * A pointer to second Bezier control point. * * to :: * A pointer to the destination point. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * You should call this function between @FT_Stroker_BeginSubPath and @@ -469,16 +521,16 @@ FT_BEGIN_HEADER FT_Vector* to ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_GetBorderCounts * * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It will return the number of points and - * contours necessary to export one of the `border' or `stroke' - * outlines generated by the stroker. + * Call this function once you have finished parsing your paths with the + * stroker. It returns the number of points and contours necessary to + * export one of the 'border' or 'stroke' outlines generated by the + * stroker. * * @input: * stroker :: @@ -495,18 +547,18 @@ FT_BEGIN_HEADER * The number of contours. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right'. + * When an outline, or a sub-path, is 'closed', the stroker generates two + * independent 'border' outlines, named 'left' and 'right'. * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. + * When the outline, or a sub-path, is 'opened', the stroker merges the + * 'border' outlines with caps. The 'left' border receives all points, + * while the 'right' border becomes empty. * - * Use the function @FT_Stroker_GetCounts instead if you want to - * retrieve the counts associated to both borders. + * Use the function @FT_Stroker_GetCounts instead if you want to retrieve + * the counts associated to both borders. */ FT_EXPORT( FT_Error ) FT_Stroker_GetBorderCounts( FT_Stroker stroker, @@ -515,19 +567,17 @@ FT_BEGIN_HEADER FT_UInt *anum_contours ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_ExportBorder * * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export the corresponding border to your own @FT_Outline - * structure. + * Call this function after @FT_Stroker_GetBorderCounts to export the + * corresponding border to your own @FT_Outline structure. * - * Note that this function will append the border points and - * contours to your outline, but will not try to resize its - * arrays. + * Note that this function appends the border points and contours to your + * outline, but does not try to resize its arrays. * * @input: * stroker :: @@ -540,19 +590,19 @@ FT_BEGIN_HEADER * The target outline handle. * * @note: - * Always call this function after @FT_Stroker_GetBorderCounts to - * get sure that there is enough room in your @FT_Outline object to - * receive all new data. + * Always call this function after @FT_Stroker_GetBorderCounts to get + * sure that there is enough room in your @FT_Outline object to receive + * all new data. * - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right' + * When an outline, or a sub-path, is 'closed', the stroker generates two + * independent 'border' outlines, named 'left' and 'right'. * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. + * When the outline, or a sub-path, is 'opened', the stroker merges the + * 'border' outlines with caps. The 'left' border receives all points, + * while the 'right' border becomes empty. * - * Use the function @FT_Stroker_Export instead if you want to - * retrieve all borders at once. + * Use the function @FT_Stroker_Export instead if you want to retrieve + * all borders at once. */ FT_EXPORT( void ) FT_Stroker_ExportBorder( FT_Stroker stroker, @@ -560,16 +610,15 @@ FT_BEGIN_HEADER FT_Outline* outline ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_GetCounts * * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It returns the number of points and - * contours necessary to export all points/borders from the stroked - * outline/path. + * Call this function once you have finished parsing your paths with the + * stroker. It returns the number of points and contours necessary to + * export all points/borders from the stroked outline/path. * * @input: * stroker :: @@ -583,7 +632,7 @@ FT_BEGIN_HEADER * The number of contours. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. */ FT_EXPORT( FT_Error ) FT_Stroker_GetCounts( FT_Stroker stroker, @@ -591,18 +640,17 @@ FT_BEGIN_HEADER FT_UInt *anum_contours ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_Export * * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export the all borders to your own @FT_Outline structure. + * Call this function after @FT_Stroker_GetBorderCounts to export all + * borders to your own @FT_Outline structure. * - * Note that this function will append the border points and - * contours to your outline, but will not try to resize its - * arrays. + * Note that this function appends the border points and contours to your + * outline, but does not try to resize its arrays. * * @input: * stroker :: @@ -616,7 +664,7 @@ FT_BEGIN_HEADER FT_Outline* outline ); - /************************************************************** + /************************************************************************** * * @function: * FT_Stroker_Done @@ -626,13 +674,13 @@ FT_BEGIN_HEADER * * @input: * stroker :: - * A stroker handle. Can be NULL. + * A stroker handle. Can be `NULL`. */ FT_EXPORT( void ) FT_Stroker_Done( FT_Stroker stroker ); - /************************************************************** + /************************************************************************** * * @function: * FT_Glyph_Stroke @@ -649,14 +697,18 @@ FT_BEGIN_HEADER * A stroker handle. * * destroy :: - * A Boolean. If 1, the source glyph object is destroyed - * on success. + * A Boolean. If~1, the source glyph object is destroyed on success. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts to + * account for this added size. */ FT_EXPORT( FT_Error ) FT_Glyph_Stroke( FT_Glyph *pglyph, @@ -664,14 +716,14 @@ FT_BEGIN_HEADER FT_Bool destroy ); - /************************************************************** + /************************************************************************** * * @function: * FT_Glyph_StrokeBorder * * @description: - * Stroke a given outline glyph object with a given stroker, but - * only return either its inside or outside border. + * Stroke a given outline glyph object with a given stroker, but only + * return either its inside or outside border. * * @inout: * pglyph :: @@ -682,18 +734,22 @@ FT_BEGIN_HEADER * A stroker handle. * * inside :: - * A Boolean. If 1, return the inside border, otherwise - * the outside border. + * A Boolean. If~1, return the inside border, otherwise the outside + * border. * * destroy :: - * A Boolean. If 1, the source glyph object is destroyed - * on success. + * A Boolean. If~1, the source glyph object is destroyed on success. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts to + * account for this added size. */ FT_EXPORT( FT_Error ) FT_Glyph_StrokeBorder( FT_Glyph *pglyph, @@ -701,11 +757,11 @@ FT_BEGIN_HEADER FT_Bool inside, FT_Bool destroy ); - /* */ + /* */ FT_END_HEADER -#endif /* __FT_STROKE_H__ */ +#endif /* FTSTROKE_H_ */ /* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftsynth.h b/CMU462/deps/freetype/include/freetype/ftsynth.h new file mode 100644 index 0000000..8754f97 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftsynth.h @@ -0,0 +1,84 @@ +/**************************************************************************** + * + * ftsynth.h + * + * FreeType synthesizing code for emboldening and slanting + * (specification). + * + * Copyright (C) 2000-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /********* *********/ + /********* WARNING, THIS IS ALPHA CODE! THIS API *********/ + /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ + /********* FREETYPE DEVELOPMENT TEAM *********/ + /********* *********/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* Main reason for not lifting the functions in this module to a */ + /* 'standard' API is that the used parameters for emboldening and */ + /* slanting are not configurable. Consider the functions as a */ + /* code resource that should be copied into the application and */ + /* adapted to the particular needs. */ + + +#ifndef FTSYNTH_H_ +#define FTSYNTH_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /* Embolden a glyph by a 'reasonable' value (which is highly a matter of */ + /* taste). This function is actually a convenience function, providing */ + /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */ + /* */ + /* For emboldened outlines the height, width, and advance metrics are */ + /* increased by the strength of the emboldening -- this even affects */ + /* mono-width fonts! */ + /* */ + /* You can also call @FT_Outline_Get_CBox to get precise values. */ + FT_EXPORT( void ) + FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); + + /* Slant an outline glyph to the right by about 12 degrees. */ + FT_EXPORT( void ) + FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); + + /* */ + + +FT_END_HEADER + +#endif /* FTSYNTH_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftsystem.h b/CMU462/deps/freetype/include/freetype/ftsystem.h old mode 100755 new mode 100644 similarity index 61% rename from CMU462/deps/freetype/include/freetype2/freetype/ftsystem.h rename to CMU462/deps/freetype/include/freetype/ftsystem.h index 59cd019..889a6ba --- a/CMU462/deps/freetype/include/freetype2/freetype/ftsystem.h +++ b/CMU462/deps/freetype/include/freetype/ftsystem.h @@ -1,23 +1,23 @@ -/***************************************************************************/ -/* */ -/* ftsystem.h */ -/* */ -/* FreeType low-level system interface definition (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2005 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTSYSTEM_H__ -#define __FTSYSTEM_H__ +/**************************************************************************** + * + * ftsystem.h + * + * FreeType low-level system interface definition (specification). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTSYSTEM_H_ +#define FTSYSTEM_H_ #include <ft2build.h> @@ -26,34 +26,33 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* system_interface */ - /* */ - /* <Title> */ - /* System Interface */ - /* */ - /* <Abstract> */ - /* How FreeType manages memory and i/o. */ - /* */ - /* <Description> */ - /* This section contains various definitions related to memory */ - /* management and i/o access. You need to understand this */ - /* information if you want to use a custom memory manager or you own */ - /* i/o streams. */ - /* */ - /*************************************************************************/ + /************************************************************************** + * + * @section: + * system_interface + * + * @title: + * System Interface + * + * @abstract: + * How FreeType manages memory and i/o. + * + * @description: + * This section contains various definitions related to memory management + * and i/o access. You need to understand this information if you want to + * use a custom memory manager or you own i/o streams. + * + */ - /*************************************************************************/ - /* */ - /* M E M O R Y M A N A G E M E N T */ - /* */ - /*************************************************************************/ + /************************************************************************** + * + * M E M O R Y M A N A G E M E N T + * + */ - /************************************************************************* + /************************************************************************** * * @type: * FT_Memory @@ -66,13 +65,13 @@ FT_BEGIN_HEADER typedef struct FT_MemoryRec_* FT_Memory; - /************************************************************************* + /************************************************************************** * * @functype: * FT_Alloc_Func * * @description: - * A function used to allocate `size' bytes from `memory'. + * A function used to allocate `size` bytes from `memory`. * * @input: * memory :: @@ -82,7 +81,7 @@ FT_BEGIN_HEADER * The size in bytes to allocate. * * @return: - * Address of new memory block. 0 in case of failure. + * Address of new memory block. 0~in case of failure. * */ typedef void* @@ -90,7 +89,7 @@ FT_BEGIN_HEADER long size ); - /************************************************************************* + /************************************************************************** * * @functype: * FT_Free_Func @@ -111,7 +110,7 @@ FT_BEGIN_HEADER void* block ); - /************************************************************************* + /************************************************************************** * * @functype: * FT_Realloc_Func @@ -133,7 +132,7 @@ FT_BEGIN_HEADER * The block's current address. * * @return: - * New block address. 0 in case of memory shortage. + * New block address. 0~in case of memory shortage. * * @note: * In case of error, the old block must still be available. @@ -146,13 +145,13 @@ FT_BEGIN_HEADER void* block ); - /************************************************************************* + /************************************************************************** * * @struct: * FT_MemoryRec * * @description: - * A structure used to describe a given memory manager to FreeType 2. + * A structure used to describe a given memory manager to FreeType~2. * * @fields: * user :: @@ -177,14 +176,14 @@ FT_BEGIN_HEADER }; - /*************************************************************************/ - /* */ - /* I / O M A N A G E M E N T */ - /* */ - /*************************************************************************/ + /************************************************************************** + * + * I / O M A N A G E M E N T + * + */ - /************************************************************************* + /************************************************************************** * * @type: * FT_Stream @@ -192,18 +191,22 @@ FT_BEGIN_HEADER * @description: * A handle to an input stream. * + * @also: + * See @FT_StreamRec for the publicly accessible fields of a given stream + * object. + * */ typedef struct FT_StreamRec_* FT_Stream; - /************************************************************************* + /************************************************************************** * * @struct: * FT_StreamDesc * * @description: * A union type used to store either a long or a pointer. This is used - * to store a file descriptor or a `FILE*' in an input stream. + * to store a file descriptor or a `FILE*` in an input stream. * */ typedef union FT_StreamDesc_ @@ -214,7 +217,7 @@ FT_BEGIN_HEADER } FT_StreamDesc; - /************************************************************************* + /************************************************************************** * * @functype: * FT_Stream_IoFunc @@ -239,8 +242,8 @@ FT_BEGIN_HEADER * The number of bytes effectively read by the stream. * * @note: - * This function might be called to perform a seek or skip operation - * with a `count' of 0. + * This function might be called to perform a seek or skip operation with + * a `count` of~0. A non-zero return value then indicates an error. * */ typedef unsigned long @@ -250,7 +253,7 @@ FT_BEGIN_HEADER unsigned long count ); - /************************************************************************* + /************************************************************************** * * @functype: * FT_Stream_CloseFunc @@ -260,14 +263,14 @@ FT_BEGIN_HEADER * * @input: * stream :: - * A handle to the target stream. + * A handle to the target stream. * */ typedef void (*FT_Stream_CloseFunc)( FT_Stream stream ); - /************************************************************************* + /************************************************************************** * * @struct: * FT_StreamRec @@ -278,18 +281,23 @@ FT_BEGIN_HEADER * @input: * base :: * For memory-based streams, this is the address of the first stream - * byte in memory. This field should always be set to NULL for + * byte in memory. This field should always be set to `NULL` for * disk-based streams. * * size :: * The stream size in bytes. * + * In case of compressed streams where the size is unknown before + * actually doing the decompression, the value is set to 0x7FFFFFFF. + * (Note that this size value can occur for normal streams also; it is + * thus just a hint.) + * * pos :: * The current position within the stream. * * descriptor :: * This field is a union that can hold an integer or a pointer. It is - * used by stream implementations to store file descriptors or `FILE*' + * used by stream implementations to store file descriptors or `FILE*` * pointers. * * pathname :: @@ -301,16 +309,16 @@ FT_BEGIN_HEADER * The stream's input function. * * close :: - * The stream;s close function. + * The stream's close function. * * memory :: - * The memory manager to use to preload frames. This is set - * internally by FreeType and shouldn't be touched by stream - * implementations. + * The memory manager to use to preload frames. This is set internally + * by FreeType and shouldn't be touched by stream implementations. * * cursor :: * This field is set and used internally by FreeType when parsing - * frames. + * frames. In particular, the `FT_GET_XXX` macros use this instead of + * the `pos` field. * * limit :: * This field is set and used internally by FreeType when parsing @@ -334,13 +342,12 @@ FT_BEGIN_HEADER } FT_StreamRec; - /* */ FT_END_HEADER -#endif /* __FTSYSTEM_H__ */ +#endif /* FTSYSTEM_H_ */ /* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/fttrigon.h b/CMU462/deps/freetype/include/freetype/fttrigon.h old mode 100755 new mode 100644 similarity index 72% rename from CMU462/deps/freetype/include/freetype2/freetype/fttrigon.h rename to CMU462/deps/freetype/include/freetype/fttrigon.h index 6b77d2e..37e1412 --- a/CMU462/deps/freetype/include/freetype2/freetype/fttrigon.h +++ b/CMU462/deps/freetype/include/freetype/fttrigon.h @@ -1,23 +1,23 @@ -/***************************************************************************/ -/* */ -/* fttrigon.h */ -/* */ -/* FreeType trigonometric functions (specification). */ -/* */ -/* Copyright 2001, 2003, 2005, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTTRIGON_H__ -#define __FTTRIGON_H__ +/**************************************************************************** + * + * fttrigon.h + * + * FreeType trigonometric functions (specification). + * + * Copyright (C) 2001-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTTRIGON_H_ +#define FTTRIGON_H_ #include FT_FREETYPE_H @@ -31,28 +31,28 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /*************************************************************************/ + /************************************************************************** + * + * @section: + * computations + * + */ - /************************************************************************* + /************************************************************************** * * @type: * FT_Angle * * @description: * This type is used to model angle values in FreeType. Note that the - * angle is a 16.16 fixed float value expressed in degrees. + * angle is a 16.16 fixed-point value expressed in degrees. * */ typedef FT_Fixed FT_Angle; - /************************************************************************* + /************************************************************************** * * @macro: * FT_ANGLE_PI @@ -64,7 +64,7 @@ FT_BEGIN_HEADER #define FT_ANGLE_PI ( 180L << 16 ) - /************************************************************************* + /************************************************************************** * * @macro: * FT_ANGLE_2PI @@ -76,7 +76,7 @@ FT_BEGIN_HEADER #define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) - /************************************************************************* + /************************************************************************** * * @macro: * FT_ANGLE_PI2 @@ -88,7 +88,7 @@ FT_BEGIN_HEADER #define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) - /************************************************************************* + /************************************************************************** * * @macro: * FT_ANGLE_PI4 @@ -100,13 +100,13 @@ FT_BEGIN_HEADER #define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) - /************************************************************************* + /************************************************************************** * * @function: * FT_Sin * * @description: - * Return the sinus of a given angle in fixed point format. + * Return the sinus of a given angle in fixed-point format. * * @input: * angle :: @@ -124,13 +124,13 @@ FT_BEGIN_HEADER FT_Sin( FT_Angle angle ); - /************************************************************************* + /************************************************************************** * * @function: * FT_Cos * * @description: - * Return the cosinus of a given angle in fixed point format. + * Return the cosinus of a given angle in fixed-point format. * * @input: * angle :: @@ -148,13 +148,13 @@ FT_BEGIN_HEADER FT_Cos( FT_Angle angle ); - /************************************************************************* + /************************************************************************** * * @function: * FT_Tan * * @description: - * Return the tangent of a given angle in fixed point format. + * Return the tangent of a given angle in fixed-point format. * * @input: * angle :: @@ -168,14 +168,14 @@ FT_BEGIN_HEADER FT_Tan( FT_Angle angle ); - /************************************************************************* + /************************************************************************** * * @function: * FT_Atan2 * * @description: - * Return the arc-tangent corresponding to a given vector (x,y) in - * the 2d plane. + * Return the arc-tangent corresponding to a given vector (x,y) in the 2d + * plane. * * @input: * x :: @@ -193,7 +193,7 @@ FT_BEGIN_HEADER FT_Fixed y ); - /************************************************************************* + /************************************************************************** * * @function: * FT_Angle_Diff @@ -210,7 +210,7 @@ FT_BEGIN_HEADER * Second angle. * * @return: - * Constrained value of `value2-value1'. + * Constrained value of `angle2-angle1`. * */ FT_EXPORT( FT_Angle ) @@ -218,15 +218,15 @@ FT_BEGIN_HEADER FT_Angle angle2 ); - /************************************************************************* + /************************************************************************** * * @function: * FT_Vector_Unit * * @description: * Return the unit vector corresponding to a given angle. After the - * call, the value of `vec.x' will be `sin(angle)', and the value of - * `vec.y' will be `cos(angle)'. + * call, the value of `vec.x` will be `cos(angle)`, and the value of + * `vec.y` will be `sin(angle)`. * * This function is useful to retrieve both the sinus and cosinus of a * given angle quickly. @@ -237,7 +237,7 @@ FT_BEGIN_HEADER * * @input: * angle :: - * The address of angle. + * The input angle. * */ FT_EXPORT( void ) @@ -245,7 +245,7 @@ FT_BEGIN_HEADER FT_Angle angle ); - /************************************************************************* + /************************************************************************** * * @function: * FT_Vector_Rotate @@ -259,7 +259,7 @@ FT_BEGIN_HEADER * * @input: * angle :: - * The address of angle. + * The input angle. * */ FT_EXPORT( void ) @@ -267,7 +267,7 @@ FT_BEGIN_HEADER FT_Angle angle ); - /************************************************************************* + /************************************************************************** * * @function: * FT_Vector_Length @@ -288,7 +288,7 @@ FT_BEGIN_HEADER FT_Vector_Length( FT_Vector* vec ); - /************************************************************************* + /************************************************************************** * * @function: * FT_Vector_Polarize @@ -314,7 +314,7 @@ FT_BEGIN_HEADER FT_Angle *angle ); - /************************************************************************* + /************************************************************************** * * @function: * FT_Vector_From_Polar @@ -344,7 +344,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __FTTRIGON_H__ */ +#endif /* FTTRIGON_H_ */ /* END */ diff --git a/CMU462/deps/freetype/include/freetype/fttypes.h b/CMU462/deps/freetype/include/freetype/fttypes.h new file mode 100644 index 0000000..1057150 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/fttypes.h @@ -0,0 +1,615 @@ +/**************************************************************************** + * + * fttypes.h + * + * FreeType simple types definitions (specification only). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTTYPES_H_ +#define FTTYPES_H_ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_SYSTEM_H +#include FT_IMAGE_H + +#include <stddef.h> + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * basic_types + * + * @title: + * Basic Data Types + * + * @abstract: + * The basic data types defined by the library. + * + * @description: + * This section contains the basic data types defined by FreeType~2, + * ranging from simple scalar types to bitmap descriptors. More + * font-specific structures are defined in a different section. + * + * @order: + * FT_Byte + * FT_Bytes + * FT_Char + * FT_Int + * FT_UInt + * FT_Int16 + * FT_UInt16 + * FT_Int32 + * FT_UInt32 + * FT_Int64 + * FT_UInt64 + * FT_Short + * FT_UShort + * FT_Long + * FT_ULong + * FT_Bool + * FT_Offset + * FT_PtrDist + * FT_String + * FT_Tag + * FT_Error + * FT_Fixed + * FT_Pointer + * FT_Pos + * FT_Vector + * FT_BBox + * FT_Matrix + * FT_FWord + * FT_UFWord + * FT_F2Dot14 + * FT_UnitVector + * FT_F26Dot6 + * FT_Data + * + * FT_MAKE_TAG + * + * FT_Generic + * FT_Generic_Finalizer + * + * FT_Bitmap + * FT_Pixel_Mode + * FT_Palette_Mode + * FT_Glyph_Format + * FT_IMAGE_TAG + * + */ + + + /************************************************************************** + * + * @type: + * FT_Bool + * + * @description: + * A typedef of unsigned char, used for simple booleans. As usual, + * values 1 and~0 represent true and false, respectively. + */ + typedef unsigned char FT_Bool; + + + /************************************************************************** + * + * @type: + * FT_FWord + * + * @description: + * A signed 16-bit integer used to store a distance in original font + * units. + */ + typedef signed short FT_FWord; /* distance in FUnits */ + + + /************************************************************************** + * + * @type: + * FT_UFWord + * + * @description: + * An unsigned 16-bit integer used to store a distance in original font + * units. + */ + typedef unsigned short FT_UFWord; /* unsigned distance */ + + + /************************************************************************** + * + * @type: + * FT_Char + * + * @description: + * A simple typedef for the _signed_ char type. + */ + typedef signed char FT_Char; + + + /************************************************************************** + * + * @type: + * FT_Byte + * + * @description: + * A simple typedef for the _unsigned_ char type. + */ + typedef unsigned char FT_Byte; + + + /************************************************************************** + * + * @type: + * FT_Bytes + * + * @description: + * A typedef for constant memory areas. + */ + typedef const FT_Byte* FT_Bytes; + + + /************************************************************************** + * + * @type: + * FT_Tag + * + * @description: + * A typedef for 32-bit tags (as used in the SFNT format). + */ + typedef FT_UInt32 FT_Tag; + + + /************************************************************************** + * + * @type: + * FT_String + * + * @description: + * A simple typedef for the char type, usually used for strings. + */ + typedef char FT_String; + + + /************************************************************************** + * + * @type: + * FT_Short + * + * @description: + * A typedef for signed short. + */ + typedef signed short FT_Short; + + + /************************************************************************** + * + * @type: + * FT_UShort + * + * @description: + * A typedef for unsigned short. + */ + typedef unsigned short FT_UShort; + + + /************************************************************************** + * + * @type: + * FT_Int + * + * @description: + * A typedef for the int type. + */ + typedef signed int FT_Int; + + + /************************************************************************** + * + * @type: + * FT_UInt + * + * @description: + * A typedef for the unsigned int type. + */ + typedef unsigned int FT_UInt; + + + /************************************************************************** + * + * @type: + * FT_Long + * + * @description: + * A typedef for signed long. + */ + typedef signed long FT_Long; + + + /************************************************************************** + * + * @type: + * FT_ULong + * + * @description: + * A typedef for unsigned long. + */ + typedef unsigned long FT_ULong; + + + /************************************************************************** + * + * @type: + * FT_F2Dot14 + * + * @description: + * A signed 2.14 fixed-point type used for unit vectors. + */ + typedef signed short FT_F2Dot14; + + + /************************************************************************** + * + * @type: + * FT_F26Dot6 + * + * @description: + * A signed 26.6 fixed-point type used for vectorial pixel coordinates. + */ + typedef signed long FT_F26Dot6; + + + /************************************************************************** + * + * @type: + * FT_Fixed + * + * @description: + * This type is used to store 16.16 fixed-point values, like scaling + * values or matrix coefficients. + */ + typedef signed long FT_Fixed; + + + /************************************************************************** + * + * @type: + * FT_Error + * + * @description: + * The FreeType error code type. A value of~0 is always interpreted as a + * successful operation. + */ + typedef int FT_Error; + + + /************************************************************************** + * + * @type: + * FT_Pointer + * + * @description: + * A simple typedef for a typeless pointer. + */ + typedef void* FT_Pointer; + + + /************************************************************************** + * + * @type: + * FT_Offset + * + * @description: + * This is equivalent to the ANSI~C `size_t` type, i.e., the largest + * _unsigned_ integer type used to express a file size or position, or a + * memory block size. + */ + typedef size_t FT_Offset; + + + /************************************************************************** + * + * @type: + * FT_PtrDist + * + * @description: + * This is equivalent to the ANSI~C `ptrdiff_t` type, i.e., the largest + * _signed_ integer type used to express the distance between two + * pointers. + */ + typedef ft_ptrdiff_t FT_PtrDist; + + + /************************************************************************** + * + * @struct: + * FT_UnitVector + * + * @description: + * A simple structure used to store a 2D vector unit vector. Uses + * FT_F2Dot14 types. + * + * @fields: + * x :: + * Horizontal coordinate. + * + * y :: + * Vertical coordinate. + */ + typedef struct FT_UnitVector_ + { + FT_F2Dot14 x; + FT_F2Dot14 y; + + } FT_UnitVector; + + + /************************************************************************** + * + * @struct: + * FT_Matrix + * + * @description: + * A simple structure used to store a 2x2 matrix. Coefficients are in + * 16.16 fixed-point format. The computation performed is: + * + * ``` + * x' = x*xx + y*xy + * y' = x*yx + y*yy + * ``` + * + * @fields: + * xx :: + * Matrix coefficient. + * + * xy :: + * Matrix coefficient. + * + * yx :: + * Matrix coefficient. + * + * yy :: + * Matrix coefficient. + */ + typedef struct FT_Matrix_ + { + FT_Fixed xx, xy; + FT_Fixed yx, yy; + + } FT_Matrix; + + + /************************************************************************** + * + * @struct: + * FT_Data + * + * @description: + * Read-only binary data represented as a pointer and a length. + * + * @fields: + * pointer :: + * The data. + * + * length :: + * The length of the data in bytes. + */ + typedef struct FT_Data_ + { + const FT_Byte* pointer; + FT_Int length; + + } FT_Data; + + + /************************************************************************** + * + * @functype: + * FT_Generic_Finalizer + * + * @description: + * Describe a function used to destroy the 'client' data of any FreeType + * object. See the description of the @FT_Generic type for details of + * usage. + * + * @input: + * The address of the FreeType object that is under finalization. Its + * client data is accessed through its `generic` field. + */ + typedef void (*FT_Generic_Finalizer)( void* object ); + + + /************************************************************************** + * + * @struct: + * FT_Generic + * + * @description: + * Client applications often need to associate their own data to a + * variety of FreeType core objects. For example, a text layout API + * might want to associate a glyph cache to a given size object. + * + * Some FreeType object contains a `generic` field, of type `FT_Generic`, + * which usage is left to client applications and font servers. + * + * It can be used to store a pointer to client-specific data, as well as + * the address of a 'finalizer' function, which will be called by + * FreeType when the object is destroyed (for example, the previous + * client example would put the address of the glyph cache destructor in + * the `finalizer` field). + * + * @fields: + * data :: + * A typeless pointer to any client-specified data. This field is + * completely ignored by the FreeType library. + * + * finalizer :: + * A pointer to a 'generic finalizer' function, which will be called + * when the object is destroyed. If this field is set to `NULL`, no + * code will be called. + */ + typedef struct FT_Generic_ + { + void* data; + FT_Generic_Finalizer finalizer; + + } FT_Generic; + + + /************************************************************************** + * + * @macro: + * FT_MAKE_TAG + * + * @description: + * This macro converts four-letter tags that are used to label TrueType + * tables into an unsigned long, to be used within FreeType. + * + * @note: + * The produced values **must** be 32-bit integers. Don't redefine this + * macro. + */ +#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ + (FT_Tag) \ + ( ( (FT_ULong)_x1 << 24 ) | \ + ( (FT_ULong)_x2 << 16 ) | \ + ( (FT_ULong)_x3 << 8 ) | \ + (FT_ULong)_x4 ) + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* L I S T M A N A G E M E N T */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************** + * + * @section: + * list_processing + * + */ + + + /************************************************************************** + * + * @type: + * FT_ListNode + * + * @description: + * Many elements and objects in FreeType are listed through an @FT_List + * record (see @FT_ListRec). As its name suggests, an FT_ListNode is a + * handle to a single list element. + */ + typedef struct FT_ListNodeRec_* FT_ListNode; + + + /************************************************************************** + * + * @type: + * FT_List + * + * @description: + * A handle to a list record (see @FT_ListRec). + */ + typedef struct FT_ListRec_* FT_List; + + + /************************************************************************** + * + * @struct: + * FT_ListNodeRec + * + * @description: + * A structure used to hold a single list element. + * + * @fields: + * prev :: + * The previous element in the list. `NULL` if first. + * + * next :: + * The next element in the list. `NULL` if last. + * + * data :: + * A typeless pointer to the listed object. + */ + typedef struct FT_ListNodeRec_ + { + FT_ListNode prev; + FT_ListNode next; + void* data; + + } FT_ListNodeRec; + + + /************************************************************************** + * + * @struct: + * FT_ListRec + * + * @description: + * A structure used to hold a simple doubly-linked list. These are used + * in many parts of FreeType. + * + * @fields: + * head :: + * The head (first element) of doubly-linked list. + * + * tail :: + * The tail (last element) of doubly-linked list. + */ + typedef struct FT_ListRec_ + { + FT_ListNode head; + FT_ListNode tail; + + } FT_ListRec; + + /* */ + + +#define FT_IS_EMPTY( list ) ( (list).head == 0 ) +#define FT_BOOL( x ) ( (FT_Bool)( (x) != 0 ) ) + + /* concatenate C tokens */ +#define FT_ERR_XCAT( x, y ) x ## y +#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) + + /* see `ftmoderr.h` for descriptions of the following macros */ + +#define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) + +#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) +#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) + +#define FT_ERR_EQ( x, e ) \ + ( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) ) +#define FT_ERR_NEQ( x, e ) \ + ( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) ) + + +FT_END_HEADER + +#endif /* FTTYPES_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype/ftwinfnt.h b/CMU462/deps/freetype/include/freetype/ftwinfnt.h new file mode 100644 index 0000000..a2fba90 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/ftwinfnt.h @@ -0,0 +1,277 @@ +/**************************************************************************** + * + * ftwinfnt.h + * + * FreeType API for accessing Windows fnt-specific data. + * + * Copyright (C) 2003-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTWINFNT_H_ +#define FTWINFNT_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * winfnt_fonts + * + * @title: + * Window FNT Files + * + * @abstract: + * Windows FNT-specific API. + * + * @description: + * This section contains the declaration of Windows FNT-specific + * functions. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_WinFNT_ID_XXX + * + * @description: + * A list of valid values for the `charset` byte in @FT_WinFNT_HeaderRec. + * Exact mapping tables for the various 'cpXXXX' encodings (except for + * 'cp1361') can be found at 'ftp://ftp.unicode.org/Public/' in the + * `MAPPINGS/VENDORS/MICSFT/WINDOWS` subdirectory. 'cp1361' is roughly a + * superset of `MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT`. + * + * @values: + * FT_WinFNT_ID_DEFAULT :: + * This is used for font enumeration and font creation as a 'don't + * care' value. Valid font files don't contain this value. When + * querying for information about the character set of the font that is + * currently selected into a specified device context, this return + * value (of the related Windows API) simply denotes failure. + * + * FT_WinFNT_ID_SYMBOL :: + * There is no known mapping table available. + * + * FT_WinFNT_ID_MAC :: + * Mac Roman encoding. + * + * FT_WinFNT_ID_OEM :: + * From Michael Poettgen <michael@poettgen.de>: + * + * The 'Windows Font Mapping' article says that `FT_WinFNT_ID_OEM` is + * used for the charset of vector fonts, like `modern.fon`, + * `roman.fon`, and `script.fon` on Windows. + * + * The 'CreateFont' documentation says: The `FT_WinFNT_ID_OEM` value + * specifies a character set that is operating-system dependent. + * + * The 'IFIMETRICS' documentation from the 'Windows Driver Development + * Kit' says: This font supports an OEM-specific character set. The + * OEM character set is system dependent. + * + * In general OEM, as opposed to ANSI (i.e., 'cp1252'), denotes the + * second default codepage that most international versions of Windows + * have. It is one of the OEM codepages from + * + * https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers + * , + * + * and is used for the 'DOS boxes', to support legacy applications. A + * German Windows version for example usually uses ANSI codepage 1252 + * and OEM codepage 850. + * + * FT_WinFNT_ID_CP874 :: + * A superset of Thai TIS 620 and ISO 8859-11. + * + * FT_WinFNT_ID_CP932 :: + * A superset of Japanese Shift-JIS (with minor deviations). + * + * FT_WinFNT_ID_CP936 :: + * A superset of simplified Chinese GB 2312-1980 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP949 :: + * A superset of Korean Hangul KS~C 5601-1987 (with different ordering + * and minor deviations). + * + * FT_WinFNT_ID_CP950 :: + * A superset of traditional Chinese Big~5 ETen (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP1250 :: + * A superset of East European ISO 8859-2 (with slightly different + * ordering). + * + * FT_WinFNT_ID_CP1251 :: + * A superset of Russian ISO 8859-5 (with different ordering). + * + * FT_WinFNT_ID_CP1252 :: + * ANSI encoding. A superset of ISO 8859-1. + * + * FT_WinFNT_ID_CP1253 :: + * A superset of Greek ISO 8859-7 (with minor modifications). + * + * FT_WinFNT_ID_CP1254 :: + * A superset of Turkish ISO 8859-9. + * + * FT_WinFNT_ID_CP1255 :: + * A superset of Hebrew ISO 8859-8 (with some modifications). + * + * FT_WinFNT_ID_CP1256 :: + * A superset of Arabic ISO 8859-6 (with different ordering). + * + * FT_WinFNT_ID_CP1257 :: + * A superset of Baltic ISO 8859-13 (with some deviations). + * + * FT_WinFNT_ID_CP1258 :: + * For Vietnamese. This encoding doesn't cover all necessary + * characters. + * + * FT_WinFNT_ID_CP1361 :: + * Korean (Johab). + */ + +#define FT_WinFNT_ID_CP1252 0 +#define FT_WinFNT_ID_DEFAULT 1 +#define FT_WinFNT_ID_SYMBOL 2 +#define FT_WinFNT_ID_MAC 77 +#define FT_WinFNT_ID_CP932 128 +#define FT_WinFNT_ID_CP949 129 +#define FT_WinFNT_ID_CP1361 130 +#define FT_WinFNT_ID_CP936 134 +#define FT_WinFNT_ID_CP950 136 +#define FT_WinFNT_ID_CP1253 161 +#define FT_WinFNT_ID_CP1254 162 +#define FT_WinFNT_ID_CP1258 163 +#define FT_WinFNT_ID_CP1255 177 +#define FT_WinFNT_ID_CP1256 178 +#define FT_WinFNT_ID_CP1257 186 +#define FT_WinFNT_ID_CP1251 204 +#define FT_WinFNT_ID_CP874 222 +#define FT_WinFNT_ID_CP1250 238 +#define FT_WinFNT_ID_OEM 255 + + + /************************************************************************** + * + * @struct: + * FT_WinFNT_HeaderRec + * + * @description: + * Windows FNT Header info. + */ + typedef struct FT_WinFNT_HeaderRec_ + { + FT_UShort version; + FT_ULong file_size; + FT_Byte copyright[60]; + FT_UShort file_type; + FT_UShort nominal_point_size; + FT_UShort vertical_resolution; + FT_UShort horizontal_resolution; + FT_UShort ascent; + FT_UShort internal_leading; + FT_UShort external_leading; + FT_Byte italic; + FT_Byte underline; + FT_Byte strike_out; + FT_UShort weight; + FT_Byte charset; + FT_UShort pixel_width; + FT_UShort pixel_height; + FT_Byte pitch_and_family; + FT_UShort avg_width; + FT_UShort max_width; + FT_Byte first_char; + FT_Byte last_char; + FT_Byte default_char; + FT_Byte break_char; + FT_UShort bytes_per_row; + FT_ULong device_offset; + FT_ULong face_name_offset; + FT_ULong bits_pointer; + FT_ULong bits_offset; + FT_Byte reserved; + FT_ULong flags; + FT_UShort A_space; + FT_UShort B_space; + FT_UShort C_space; + FT_UShort color_table_offset; + FT_ULong reserved1[4]; + + } FT_WinFNT_HeaderRec; + + + /************************************************************************** + * + * @struct: + * FT_WinFNT_Header + * + * @description: + * A handle to an @FT_WinFNT_HeaderRec structure. + */ + typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header; + + + /************************************************************************** + * + * @function: + * FT_Get_WinFNT_Header + * + * @description: + * Retrieve a Windows FNT font info header. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * aheader :: + * The WinFNT header. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with Windows FNT faces, returning an error + * otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_WinFNT_Header( FT_Face face, + FT_WinFNT_HeaderRec *aheader ); + + /* */ + + +FT_END_HEADER + +#endif /* FTWINFNT_H_ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/CMU462/deps/freetype/include/freetype/t1tables.h b/CMU462/deps/freetype/include/freetype/t1tables.h new file mode 100644 index 0000000..645e645 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/t1tables.h @@ -0,0 +1,774 @@ +/**************************************************************************** + * + * t1tables.h + * + * Basic Type 1/Type 2 tables definitions and interface (specification + * only). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef T1TABLES_H_ +#define T1TABLES_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * type1_tables + * + * @title: + * Type 1 Tables + * + * @abstract: + * Type~1-specific font tables. + * + * @description: + * This section contains the definition of Type~1-specific tables, + * including structures related to other PostScript font formats. + * + * @order: + * PS_FontInfoRec + * PS_FontInfo + * PS_PrivateRec + * PS_Private + * + * CID_FaceDictRec + * CID_FaceDict + * CID_FaceInfoRec + * CID_FaceInfo + * + * FT_Has_PS_Glyph_Names + * FT_Get_PS_Font_Info + * FT_Get_PS_Font_Private + * FT_Get_PS_Font_Value + * + * T1_Blend_Flags + * T1_EncodingType + * PS_Dict_Keys + * + */ + + + /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ + /* structures in order to support Multiple Master fonts. */ + + + /************************************************************************** + * + * @struct: + * PS_FontInfoRec + * + * @description: + * A structure used to model a Type~1 or Type~2 FontInfo dictionary. + * Note that for Multiple Master fonts, each instance has its own + * FontInfo dictionary. + */ + typedef struct PS_FontInfoRec_ + { + FT_String* version; + FT_String* notice; + FT_String* full_name; + FT_String* family_name; + FT_String* weight; + FT_Long italic_angle; + FT_Bool is_fixed_pitch; + FT_Short underline_position; + FT_UShort underline_thickness; + + } PS_FontInfoRec; + + + /************************************************************************** + * + * @struct: + * PS_FontInfo + * + * @description: + * A handle to a @PS_FontInfoRec structure. + */ + typedef struct PS_FontInfoRec_* PS_FontInfo; + + + /************************************************************************** + * + * @struct: + * T1_FontInfo + * + * @description: + * This type is equivalent to @PS_FontInfoRec. It is deprecated but kept + * to maintain source compatibility between various versions of FreeType. + */ + typedef PS_FontInfoRec T1_FontInfo; + + + /************************************************************************** + * + * @struct: + * PS_PrivateRec + * + * @description: + * A structure used to model a Type~1 or Type~2 private dictionary. Note + * that for Multiple Master fonts, each instance has its own Private + * dictionary. + */ + typedef struct PS_PrivateRec_ + { + FT_Int unique_id; + FT_Int lenIV; + + FT_Byte num_blue_values; + FT_Byte num_other_blues; + FT_Byte num_family_blues; + FT_Byte num_family_other_blues; + + FT_Short blue_values[14]; + FT_Short other_blues[10]; + + FT_Short family_blues [14]; + FT_Short family_other_blues[10]; + + FT_Fixed blue_scale; + FT_Int blue_shift; + FT_Int blue_fuzz; + + FT_UShort standard_width[1]; + FT_UShort standard_height[1]; + + FT_Byte num_snap_widths; + FT_Byte num_snap_heights; + FT_Bool force_bold; + FT_Bool round_stem_up; + + FT_Short snap_widths [13]; /* including std width */ + FT_Short snap_heights[13]; /* including std height */ + + FT_Fixed expansion_factor; + + FT_Long language_group; + FT_Long password; + + FT_Short min_feature[2]; + + } PS_PrivateRec; + + + /************************************************************************** + * + * @struct: + * PS_Private + * + * @description: + * A handle to a @PS_PrivateRec structure. + */ + typedef struct PS_PrivateRec_* PS_Private; + + + /************************************************************************** + * + * @struct: + * T1_Private + * + * @description: + * This type is equivalent to @PS_PrivateRec. It is deprecated but kept + * to maintain source compatibility between various versions of FreeType. + */ + typedef PS_PrivateRec T1_Private; + + + /************************************************************************** + * + * @enum: + * T1_Blend_Flags + * + * @description: + * A set of flags used to indicate which fields are present in a given + * blend dictionary (font info or private). Used to support Multiple + * Masters fonts. + * + * @values: + * T1_BLEND_UNDERLINE_POSITION :: + * T1_BLEND_UNDERLINE_THICKNESS :: + * T1_BLEND_ITALIC_ANGLE :: + * T1_BLEND_BLUE_VALUES :: + * T1_BLEND_OTHER_BLUES :: + * T1_BLEND_STANDARD_WIDTH :: + * T1_BLEND_STANDARD_HEIGHT :: + * T1_BLEND_STEM_SNAP_WIDTHS :: + * T1_BLEND_STEM_SNAP_HEIGHTS :: + * T1_BLEND_BLUE_SCALE :: + * T1_BLEND_BLUE_SHIFT :: + * T1_BLEND_FAMILY_BLUES :: + * T1_BLEND_FAMILY_OTHER_BLUES :: + * T1_BLEND_FORCE_BOLD :: + */ + typedef enum T1_Blend_Flags_ + { + /* required fields in a FontInfo blend dictionary */ + T1_BLEND_UNDERLINE_POSITION = 0, + T1_BLEND_UNDERLINE_THICKNESS, + T1_BLEND_ITALIC_ANGLE, + + /* required fields in a Private blend dictionary */ + T1_BLEND_BLUE_VALUES, + T1_BLEND_OTHER_BLUES, + T1_BLEND_STANDARD_WIDTH, + T1_BLEND_STANDARD_HEIGHT, + T1_BLEND_STEM_SNAP_WIDTHS, + T1_BLEND_STEM_SNAP_HEIGHTS, + T1_BLEND_BLUE_SCALE, + T1_BLEND_BLUE_SHIFT, + T1_BLEND_FAMILY_BLUES, + T1_BLEND_FAMILY_OTHER_BLUES, + T1_BLEND_FORCE_BOLD, + + T1_BLEND_MAX /* do not remove */ + + } T1_Blend_Flags; + + + /* these constants are deprecated; use the corresponding */ + /* `T1_Blend_Flags` values instead */ +#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION +#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS +#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE +#define t1_blend_blue_values T1_BLEND_BLUE_VALUES +#define t1_blend_other_blues T1_BLEND_OTHER_BLUES +#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH +#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT +#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS +#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS +#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE +#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT +#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES +#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES +#define t1_blend_force_bold T1_BLEND_FORCE_BOLD +#define t1_blend_max T1_BLEND_MAX + + /* */ + + + /* maximum number of Multiple Masters designs, as defined in the spec */ +#define T1_MAX_MM_DESIGNS 16 + + /* maximum number of Multiple Masters axes, as defined in the spec */ +#define T1_MAX_MM_AXIS 4 + + /* maximum number of elements in a design map */ +#define T1_MAX_MM_MAP_POINTS 20 + + + /* this structure is used to store the BlendDesignMap entry for an axis */ + typedef struct PS_DesignMap_ + { + FT_Byte num_points; + FT_Long* design_points; + FT_Fixed* blend_points; + + } PS_DesignMapRec, *PS_DesignMap; + + /* backward compatible definition */ + typedef PS_DesignMapRec T1_DesignMap; + + + typedef struct PS_BlendRec_ + { + FT_UInt num_designs; + FT_UInt num_axis; + + FT_String* axis_names[T1_MAX_MM_AXIS]; + FT_Fixed* design_pos[T1_MAX_MM_DESIGNS]; + PS_DesignMapRec design_map[T1_MAX_MM_AXIS]; + + FT_Fixed* weight_vector; + FT_Fixed* default_weight_vector; + + PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1]; + PS_Private privates [T1_MAX_MM_DESIGNS + 1]; + + FT_ULong blend_bitflags; + + FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1]; + + /* since 2.3.0 */ + + /* undocumented, optional: the default design instance; */ + /* corresponds to default_weight_vector -- */ + /* num_default_design_vector == 0 means it is not present */ + /* in the font and associated metrics files */ + FT_UInt default_design_vector[T1_MAX_MM_DESIGNS]; + FT_UInt num_default_design_vector; + + } PS_BlendRec, *PS_Blend; + + + /* backward compatible definition */ + typedef PS_BlendRec T1_Blend; + + + /************************************************************************** + * + * @struct: + * CID_FaceDictRec + * + * @description: + * A structure used to represent data in a CID top-level dictionary. In + * most cases, they are part of the font's '/FDArray' array. Within a + * CID font file, such (internal) subfont dictionaries are enclosed by + * '%ADOBeginFontDict' and '%ADOEndFontDict' comments. + * + * Note that `CID_FaceDictRec` misses a field for the '/FontName' + * keyword, specifying the subfont's name (the top-level font name is + * given by the '/CIDFontName' keyword). This is an oversight, but it + * doesn't limit the 'cid' font module's functionality because FreeType + * neither needs this entry nor gives access to CID subfonts. + */ + typedef struct CID_FaceDictRec_ + { + PS_PrivateRec private_dict; + + FT_UInt len_buildchar; + FT_Fixed forcebold_threshold; + FT_Pos stroke_width; + FT_Fixed expansion_factor; /* this is a duplicate of */ + /* `private_dict->expansion_factor' */ + FT_Byte paint_type; + FT_Byte font_type; + FT_Matrix font_matrix; + FT_Vector font_offset; + + FT_UInt num_subrs; + FT_ULong subrmap_offset; + FT_Int sd_bytes; + + } CID_FaceDictRec; + + + /************************************************************************** + * + * @struct: + * CID_FaceDict + * + * @description: + * A handle to a @CID_FaceDictRec structure. + */ + typedef struct CID_FaceDictRec_* CID_FaceDict; + + + /************************************************************************** + * + * @struct: + * CID_FontDict + * + * @description: + * This type is equivalent to @CID_FaceDictRec. It is deprecated but + * kept to maintain source compatibility between various versions of + * FreeType. + */ + typedef CID_FaceDictRec CID_FontDict; + + + /************************************************************************** + * + * @struct: + * CID_FaceInfoRec + * + * @description: + * A structure used to represent CID Face information. + */ + typedef struct CID_FaceInfoRec_ + { + FT_String* cid_font_name; + FT_Fixed cid_version; + FT_Int cid_font_type; + + FT_String* registry; + FT_String* ordering; + FT_Int supplement; + + PS_FontInfoRec font_info; + FT_BBox font_bbox; + FT_ULong uid_base; + + FT_Int num_xuid; + FT_ULong xuid[16]; + + FT_ULong cidmap_offset; + FT_Int fd_bytes; + FT_Int gd_bytes; + FT_ULong cid_count; + + FT_Int num_dicts; + CID_FaceDict font_dicts; + + FT_ULong data_offset; + + } CID_FaceInfoRec; + + + /************************************************************************** + * + * @struct: + * CID_FaceInfo + * + * @description: + * A handle to a @CID_FaceInfoRec structure. + */ + typedef struct CID_FaceInfoRec_* CID_FaceInfo; + + + /************************************************************************** + * + * @struct: + * CID_Info + * + * @description: + * This type is equivalent to @CID_FaceInfoRec. It is deprecated but kept + * to maintain source compatibility between various versions of FreeType. + */ + typedef CID_FaceInfoRec CID_Info; + + + /************************************************************************** + * + * @function: + * FT_Has_PS_Glyph_Names + * + * @description: + * Return true if a given face provides reliable PostScript glyph names. + * This is similar to using the @FT_HAS_GLYPH_NAMES macro, except that + * certain fonts (mostly TrueType) contain incorrect glyph name tables. + * + * When this function returns true, the caller is sure that the glyph + * names returned by @FT_Get_Glyph_Name are reliable. + * + * @input: + * face :: + * face handle + * + * @return: + * Boolean. True if glyph names are reliable. + * + */ + FT_EXPORT( FT_Int ) + FT_Has_PS_Glyph_Names( FT_Face face ); + + + /************************************************************************** + * + * @function: + * FT_Get_PS_Font_Info + * + * @description: + * Retrieve the @PS_FontInfoRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_info :: + * Output font info structure pointer. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * String pointers within the @PS_FontInfoRec structure are owned by the + * face and don't need to be freed by the caller. Missing entries in + * the font's FontInfo dictionary are represented by `NULL` pointers. + * + * If the font's format is not PostScript-based, this function will + * return the `FT_Err_Invalid_Argument` error code. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Info( FT_Face face, + PS_FontInfo afont_info ); + + + /************************************************************************** + * + * @function: + * FT_Get_PS_Font_Private + * + * @description: + * Retrieve the @PS_PrivateRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_private :: + * Output private dictionary structure pointer. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The string pointers within the @PS_PrivateRec structure are owned by + * the face and don't need to be freed by the caller. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument` error code. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Private( FT_Face face, + PS_Private afont_private ); + + + /************************************************************************** + * + * @enum: + * T1_EncodingType + * + * @description: + * An enumeration describing the 'Encoding' entry in a Type 1 dictionary. + * + * @values: + * T1_ENCODING_TYPE_NONE :: + * T1_ENCODING_TYPE_ARRAY :: + * T1_ENCODING_TYPE_STANDARD :: + * T1_ENCODING_TYPE_ISOLATIN1 :: + * T1_ENCODING_TYPE_EXPERT :: + * + * @since: + * 2.4.8 + */ + typedef enum T1_EncodingType_ + { + T1_ENCODING_TYPE_NONE = 0, + T1_ENCODING_TYPE_ARRAY, + T1_ENCODING_TYPE_STANDARD, + T1_ENCODING_TYPE_ISOLATIN1, + T1_ENCODING_TYPE_EXPERT + + } T1_EncodingType; + + + /************************************************************************** + * + * @enum: + * PS_Dict_Keys + * + * @description: + * An enumeration used in calls to @FT_Get_PS_Font_Value to identify the + * Type~1 dictionary entry to retrieve. + * + * @values: + * PS_DICT_FONT_TYPE :: + * PS_DICT_FONT_MATRIX :: + * PS_DICT_FONT_BBOX :: + * PS_DICT_PAINT_TYPE :: + * PS_DICT_FONT_NAME :: + * PS_DICT_UNIQUE_ID :: + * PS_DICT_NUM_CHAR_STRINGS :: + * PS_DICT_CHAR_STRING_KEY :: + * PS_DICT_CHAR_STRING :: + * PS_DICT_ENCODING_TYPE :: + * PS_DICT_ENCODING_ENTRY :: + * PS_DICT_NUM_SUBRS :: + * PS_DICT_SUBR :: + * PS_DICT_STD_HW :: + * PS_DICT_STD_VW :: + * PS_DICT_NUM_BLUE_VALUES :: + * PS_DICT_BLUE_VALUE :: + * PS_DICT_BLUE_FUZZ :: + * PS_DICT_NUM_OTHER_BLUES :: + * PS_DICT_OTHER_BLUE :: + * PS_DICT_NUM_FAMILY_BLUES :: + * PS_DICT_FAMILY_BLUE :: + * PS_DICT_NUM_FAMILY_OTHER_BLUES :: + * PS_DICT_FAMILY_OTHER_BLUE :: + * PS_DICT_BLUE_SCALE :: + * PS_DICT_BLUE_SHIFT :: + * PS_DICT_NUM_STEM_SNAP_H :: + * PS_DICT_STEM_SNAP_H :: + * PS_DICT_NUM_STEM_SNAP_V :: + * PS_DICT_STEM_SNAP_V :: + * PS_DICT_FORCE_BOLD :: + * PS_DICT_RND_STEM_UP :: + * PS_DICT_MIN_FEATURE :: + * PS_DICT_LEN_IV :: + * PS_DICT_PASSWORD :: + * PS_DICT_LANGUAGE_GROUP :: + * PS_DICT_VERSION :: + * PS_DICT_NOTICE :: + * PS_DICT_FULL_NAME :: + * PS_DICT_FAMILY_NAME :: + * PS_DICT_WEIGHT :: + * PS_DICT_IS_FIXED_PITCH :: + * PS_DICT_UNDERLINE_POSITION :: + * PS_DICT_UNDERLINE_THICKNESS :: + * PS_DICT_FS_TYPE :: + * PS_DICT_ITALIC_ANGLE :: + * + * @since: + * 2.4.8 + */ + typedef enum PS_Dict_Keys_ + { + /* conventionally in the font dictionary */ + PS_DICT_FONT_TYPE, /* FT_Byte */ + PS_DICT_FONT_MATRIX, /* FT_Fixed */ + PS_DICT_FONT_BBOX, /* FT_Fixed */ + PS_DICT_PAINT_TYPE, /* FT_Byte */ + PS_DICT_FONT_NAME, /* FT_String* */ + PS_DICT_UNIQUE_ID, /* FT_Int */ + PS_DICT_NUM_CHAR_STRINGS, /* FT_Int */ + PS_DICT_CHAR_STRING_KEY, /* FT_String* */ + PS_DICT_CHAR_STRING, /* FT_String* */ + PS_DICT_ENCODING_TYPE, /* T1_EncodingType */ + PS_DICT_ENCODING_ENTRY, /* FT_String* */ + + /* conventionally in the font Private dictionary */ + PS_DICT_NUM_SUBRS, /* FT_Int */ + PS_DICT_SUBR, /* FT_String* */ + PS_DICT_STD_HW, /* FT_UShort */ + PS_DICT_STD_VW, /* FT_UShort */ + PS_DICT_NUM_BLUE_VALUES, /* FT_Byte */ + PS_DICT_BLUE_VALUE, /* FT_Short */ + PS_DICT_BLUE_FUZZ, /* FT_Int */ + PS_DICT_NUM_OTHER_BLUES, /* FT_Byte */ + PS_DICT_OTHER_BLUE, /* FT_Short */ + PS_DICT_NUM_FAMILY_BLUES, /* FT_Byte */ + PS_DICT_FAMILY_BLUE, /* FT_Short */ + PS_DICT_NUM_FAMILY_OTHER_BLUES, /* FT_Byte */ + PS_DICT_FAMILY_OTHER_BLUE, /* FT_Short */ + PS_DICT_BLUE_SCALE, /* FT_Fixed */ + PS_DICT_BLUE_SHIFT, /* FT_Int */ + PS_DICT_NUM_STEM_SNAP_H, /* FT_Byte */ + PS_DICT_STEM_SNAP_H, /* FT_Short */ + PS_DICT_NUM_STEM_SNAP_V, /* FT_Byte */ + PS_DICT_STEM_SNAP_V, /* FT_Short */ + PS_DICT_FORCE_BOLD, /* FT_Bool */ + PS_DICT_RND_STEM_UP, /* FT_Bool */ + PS_DICT_MIN_FEATURE, /* FT_Short */ + PS_DICT_LEN_IV, /* FT_Int */ + PS_DICT_PASSWORD, /* FT_Long */ + PS_DICT_LANGUAGE_GROUP, /* FT_Long */ + + /* conventionally in the font FontInfo dictionary */ + PS_DICT_VERSION, /* FT_String* */ + PS_DICT_NOTICE, /* FT_String* */ + PS_DICT_FULL_NAME, /* FT_String* */ + PS_DICT_FAMILY_NAME, /* FT_String* */ + PS_DICT_WEIGHT, /* FT_String* */ + PS_DICT_IS_FIXED_PITCH, /* FT_Bool */ + PS_DICT_UNDERLINE_POSITION, /* FT_Short */ + PS_DICT_UNDERLINE_THICKNESS, /* FT_UShort */ + PS_DICT_FS_TYPE, /* FT_UShort */ + PS_DICT_ITALIC_ANGLE, /* FT_Long */ + + PS_DICT_MAX = PS_DICT_ITALIC_ANGLE + + } PS_Dict_Keys; + + + /************************************************************************** + * + * @function: + * FT_Get_PS_Font_Value + * + * @description: + * Retrieve the value for the supplied key from a PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * key :: + * An enumeration value representing the dictionary key to retrieve. + * + * idx :: + * For array values, this specifies the index to be returned. + * + * value :: + * A pointer to memory into which to write the value. + * + * valen_len :: + * The size, in bytes, of the memory supplied for the value. + * + * @output: + * value :: + * The value matching the above key, if it exists. + * + * @return: + * The amount of memory (in bytes) required to hold the requested value + * (if it exists, -1 otherwise). + * + * @note: + * The values returned are not pointers into the internal structures of + * the face, but are 'fresh' copies, so that the memory containing them + * belongs to the calling application. This also enforces the + * 'read-only' nature of these values, i.e., this function cannot be + * used to manipulate the face. + * + * `value` is a void pointer because the values returned can be of + * various types. + * + * If either `value` is `NULL` or `value_len` is too small, just the + * required memory size for the requested entry is returned. + * + * The `idx` parameter is used, not only to retrieve elements of, for + * example, the FontMatrix or FontBBox, but also to retrieve name keys + * from the CharStrings dictionary, and the charstrings themselves. It + * is ignored for atomic values. + * + * `PS_DICT_BLUE_SCALE` returns a value that is scaled up by 1000. To + * get the value as in the font stream, you need to divide by 65536000.0 + * (to remove the FT_Fixed scale, and the x1000 scale). + * + * IMPORTANT: Only key/value pairs read by the FreeType interpreter can + * be retrieved. So, for example, PostScript procedures such as NP, ND, + * and RD are not available. Arbitrary keys are, obviously, not be + * available either. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument` error code. + * + * @since: + * 2.4.8 + * + */ + FT_EXPORT( FT_Long ) + FT_Get_PS_Font_Value( FT_Face face, + PS_Dict_Keys key, + FT_UInt idx, + void *value, + FT_Long value_len ); + + /* */ + +FT_END_HEADER + +#endif /* T1TABLES_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ttnameid.h b/CMU462/deps/freetype/include/freetype/ttnameid.h old mode 100755 new mode 100644 similarity index 51% rename from CMU462/deps/freetype/include/freetype2/freetype/ttnameid.h rename to CMU462/deps/freetype/include/freetype/ttnameid.h index b9acbda..cc677de --- a/CMU462/deps/freetype/include/freetype2/freetype/ttnameid.h +++ b/CMU462/deps/freetype/include/freetype/ttnameid.h @@ -1,23 +1,23 @@ -/***************************************************************************/ -/* */ -/* ttnameid.h */ -/* */ -/* TrueType name ID definitions (specification only). */ -/* */ -/* Copyright 1996-2002, 2003, 2004, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTNAMEID_H__ -#define __TTNAMEID_H__ +/**************************************************************************** + * + * ttnameid.h + * + * TrueType name ID definitions (specification only). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef TTNAMEID_H_ +#define TTNAMEID_H_ #include <ft2build.h> @@ -26,46 +26,54 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* Possible values for the `platform' identifier code in the name */ - /* records of the TTF `name' table. */ - /* */ - /*************************************************************************/ + /************************************************************************** + * + * @section: + * truetype_tables + */ - /*********************************************************************** + /************************************************************************** + * + * Possible values for the 'platform' identifier code in the name records + * of an SFNT 'name' table. + * + */ + + + /************************************************************************** * * @enum: * TT_PLATFORM_XXX * * @description: - * A list of valid values for the `platform_id' identifier code in + * A list of valid values for the `platform_id` identifier code in * @FT_CharMapRec and @FT_SfntName structures. * * @values: * TT_PLATFORM_APPLE_UNICODE :: * Used by Apple to indicate a Unicode character map and/or name entry. - * See @TT_APPLE_ID_XXX for corresponding `encoding_id' values. Note + * See @TT_APPLE_ID_XXX for corresponding `encoding_id` values. Note * that name entries in this format are coded as big-endian UCS-2 * character codes _only_. * * TT_PLATFORM_MACINTOSH :: - * Used by Apple to indicate a MacOS-specific charmap and/or name entry. - * See @TT_MAC_ID_XXX for corresponding `encoding_id' values. Note that - * most TrueType fonts contain an Apple roman charmap to be usable on - * MacOS systems (even if they contain a Microsoft charmap as well). + * Used by Apple to indicate a MacOS-specific charmap and/or name + * entry. See @TT_MAC_ID_XXX for corresponding `encoding_id` values. + * Note that most TrueType fonts contain an Apple roman charmap to be + * usable on MacOS systems (even if they contain a Microsoft charmap as + * well). * * TT_PLATFORM_ISO :: - * This value was used to specify Unicode charmaps. It is however - * now deprecated. See @TT_ISO_ID_XXX for a list of corresponding - * `encoding_id' values. + * This value was used to specify ISO/IEC 10646 charmaps. It is + * however now deprecated. See @TT_ISO_ID_XXX for a list of + * corresponding `encoding_id` values. * * TT_PLATFORM_MICROSOFT :: * Used by Microsoft to indicate Windows-specific charmaps. See - * @TT_MS_ID_XXX for a list of corresponding `encoding_id' values. + * @TT_MS_ID_XXX for a list of corresponding `encoding_id` values. * Note that most fonts contain a Unicode charmap using - * (TT_PLATFORM_MICROSOFT, @TT_MS_ID_UNICODE_CS). + * (`TT_PLATFORM_MICROSOFT`, @TT_MS_ID_UNICODE_CS). * * TT_PLATFORM_CUSTOM :: * Used to indicate application-specific charmaps. @@ -84,13 +92,13 @@ FT_BEGIN_HEADER #define TT_PLATFORM_ADOBE 7 /* artificial */ - /*********************************************************************** + /************************************************************************** * * @enum: * TT_APPLE_ID_XXX * * @description: - * A list of valid values for the `encoding_id' for + * A list of valid values for the `encoding_id` for * @TT_PLATFORM_APPLE_UNICODE charmaps and name entries. * * @values: @@ -108,59 +116,33 @@ FT_BEGIN_HEADER * * TT_APPLE_ID_UNICODE_32 :: * Unicode 3.1 and beyond, using UTF-32. + * + * TT_APPLE_ID_VARIANT_SELECTOR :: + * From Adobe, not Apple. Not a normal cmap. Specifies variations on + * a real cmap. + * + * TT_APPLE_ID_FULL_UNICODE :: + * Used for fallback fonts that provide complete Unicode coverage with + * a type~13 cmap. */ -#define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ -#define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ -#define TT_APPLE_ID_ISO_10646 2 /* deprecated */ -#define TT_APPLE_ID_UNICODE_2_0 3 /* or later */ -#define TT_APPLE_ID_UNICODE_32 4 /* 2.0 or later, full repertoire */ +#define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ +#define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ +#define TT_APPLE_ID_ISO_10646 2 /* deprecated */ +#define TT_APPLE_ID_UNICODE_2_0 3 /* or later */ +#define TT_APPLE_ID_UNICODE_32 4 /* 2.0 or later, full repertoire */ +#define TT_APPLE_ID_VARIANT_SELECTOR 5 /* variation selector data */ +#define TT_APPLE_ID_FULL_UNICODE 6 /* used with type 13 cmaps */ - /*********************************************************************** + /************************************************************************** * * @enum: * TT_MAC_ID_XXX * * @description: - * A list of valid values for the `encoding_id' for + * A list of valid values for the `encoding_id` for * @TT_PLATFORM_MACINTOSH charmaps and name entries. - * - * @values: - * TT_MAC_ID_ROMAN :: - * TT_MAC_ID_JAPANESE :: - * TT_MAC_ID_TRADITIONAL_CHINESE :: - * TT_MAC_ID_KOREAN :: - * TT_MAC_ID_ARABIC :: - * TT_MAC_ID_HEBREW :: - * TT_MAC_ID_GREEK :: - * TT_MAC_ID_RUSSIAN :: - * TT_MAC_ID_RSYMBOL :: - * TT_MAC_ID_DEVANAGARI :: - * TT_MAC_ID_GURMUKHI :: - * TT_MAC_ID_GUJARATI :: - * TT_MAC_ID_ORIYA :: - * TT_MAC_ID_BENGALI :: - * TT_MAC_ID_TAMIL :: - * TT_MAC_ID_TELUGU :: - * TT_MAC_ID_KANNADA :: - * TT_MAC_ID_MALAYALAM :: - * TT_MAC_ID_SINHALESE :: - * TT_MAC_ID_BURMESE :: - * TT_MAC_ID_KHMER :: - * TT_MAC_ID_THAI :: - * TT_MAC_ID_LAOTIAN :: - * TT_MAC_ID_GEORGIAN :: - * TT_MAC_ID_ARMENIAN :: - * TT_MAC_ID_MALDIVIAN :: - * TT_MAC_ID_SIMPLIFIED_CHINESE :: - * TT_MAC_ID_TIBETAN :: - * TT_MAC_ID_MONGOLIAN :: - * TT_MAC_ID_GEEZ :: - * TT_MAC_ID_SLAVIC :: - * TT_MAC_ID_VIETNAMESE :: - * TT_MAC_ID_SINDHI :: - * TT_MAC_ID_UNINTERP :: */ #define TT_MAC_ID_ROMAN 0 @@ -199,14 +181,14 @@ FT_BEGIN_HEADER #define TT_MAC_ID_UNINTERP 32 - /*********************************************************************** + /************************************************************************** * * @enum: * TT_ISO_ID_XXX * * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_ISO charmaps and name entries. + * A list of valid values for the `encoding_id` for @TT_PLATFORM_ISO + * charmaps and name entries. * * Their use is now deprecated. * @@ -224,64 +206,66 @@ FT_BEGIN_HEADER #define TT_ISO_ID_8859_1 2 - /*********************************************************************** + /************************************************************************** * * @enum: * TT_MS_ID_XXX * * @description: - * A list of valid values for the `encoding_id' for + * A list of valid values for the `encoding_id` for * @TT_PLATFORM_MICROSOFT charmaps and name entries. * * @values: * TT_MS_ID_SYMBOL_CS :: - * Corresponds to Microsoft symbol encoding. See - * @FT_ENCODING_MS_SYMBOL. + * Microsoft symbol encoding. See @FT_ENCODING_MS_SYMBOL. * * TT_MS_ID_UNICODE_CS :: - * Corresponds to a Microsoft WGL4 charmap, matching Unicode. See - * @FT_ENCODING_UNICODE. + * Microsoft WGL4 charmap, matching Unicode. See @FT_ENCODING_UNICODE. * * TT_MS_ID_SJIS :: - * Corresponds to SJIS Japanese encoding. See @FT_ENCODING_SJIS. + * Shift JIS Japanese encoding. See @FT_ENCODING_SJIS. * - * TT_MS_ID_GB2312 :: - * Corresponds to Simplified Chinese as used in Mainland China. See - * @FT_ENCODING_GB2312. + * TT_MS_ID_PRC :: + * Chinese encodings as used in the People's Republic of China (PRC). + * This means the encodings GB~2312 and its supersets GBK and GB~18030. + * See @FT_ENCODING_PRC. * * TT_MS_ID_BIG_5 :: - * Corresponds to Traditional Chinese as used in Taiwan and Hong Kong. - * See @FT_ENCODING_BIG5. + * Traditional Chinese as used in Taiwan and Hong Kong. See + * @FT_ENCODING_BIG5. * * TT_MS_ID_WANSUNG :: - * Corresponds to Korean Wansung encoding. See @FT_ENCODING_WANSUNG. + * Korean Extended Wansung encoding. See @FT_ENCODING_WANSUNG. * * TT_MS_ID_JOHAB :: - * Corresponds to Johab encoding. See @FT_ENCODING_JOHAB. + * Korean Johab encoding. See @FT_ENCODING_JOHAB. * * TT_MS_ID_UCS_4 :: - * Corresponds to UCS-4 or UTF-32 charmaps. This has been added to - * the OpenType specification version 1.4 (mid-2001.) + * UCS-4 or UTF-32 charmaps. This has been added to the OpenType + * specification version 1.4 (mid-2001). */ #define TT_MS_ID_SYMBOL_CS 0 #define TT_MS_ID_UNICODE_CS 1 #define TT_MS_ID_SJIS 2 -#define TT_MS_ID_GB2312 3 +#define TT_MS_ID_PRC 3 #define TT_MS_ID_BIG_5 4 #define TT_MS_ID_WANSUNG 5 #define TT_MS_ID_JOHAB 6 #define TT_MS_ID_UCS_4 10 + /* this value is deprecated */ +#define TT_MS_ID_GB2312 TT_MS_ID_PRC - /*********************************************************************** + + /************************************************************************** * * @enum: * TT_ADOBE_ID_XXX * * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension! + * A list of valid values for the `encoding_id` for @TT_PLATFORM_ADOBE + * charmaps. This is a FreeType-specific extension! * * @values: * TT_ADOBE_ID_STANDARD :: @@ -290,6 +274,8 @@ FT_BEGIN_HEADER * Adobe expert encoding. * TT_ADOBE_ID_CUSTOM :: * Adobe custom encoding. + * TT_ADOBE_ID_LATIN_1 :: + * Adobe Latin~1 encoding. */ #define TT_ADOBE_ID_STANDARD 0 @@ -298,16 +284,22 @@ FT_BEGIN_HEADER #define TT_ADOBE_ID_LATIN_1 3 - /*************************************************************************/ - /* */ - /* Possible values of the language identifier field in the name records */ - /* of the TTF `name' table if the `platform' identifier code is */ - /* TT_PLATFORM_MACINTOSH. */ - /* */ - /* The canonical source for the Apple assigned Language ID's is at */ - /* */ - /* http://fonts.apple.com/TTRefMan/RM06/Chap6name.html */ - /* */ + /************************************************************************** + * + * @enum: + * TT_MAC_LANGID_XXX + * + * @description: + * Possible values of the language identifier field in the name records + * of the SFNT 'name' table if the 'platform' identifier code is + * @TT_PLATFORM_MACINTOSH. These values are also used as return values + * for function @FT_Get_CMap_Language_ID. + * + * The canonical source for Apple's IDs is + * + * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html + */ + #define TT_MAC_LANGID_ENGLISH 0 #define TT_MAC_LANGID_FRENCH 1 #define TT_MAC_LANGID_GERMAN 2 @@ -418,15 +410,6 @@ FT_BEGIN_HEADER #define TT_MAC_LANGID_JAVANESE 138 #define TT_MAC_LANGID_SUNDANESE 139 - -#if 0 /* these seem to be errors that have been dropped */ - -#define TT_MAC_LANGID_SCOTTISH_GAELIC 140 -#define TT_MAC_LANGID_IRISH_GAELIC 141 - -#endif - - /* The following codes are new as of 2000-03-10 */ #define TT_MAC_LANGID_GALICIAN 140 #define TT_MAC_LANGID_AFRIKAANS 141 @@ -441,149 +424,112 @@ FT_BEGIN_HEADER #define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT 150 - /*************************************************************************/ - /* */ - /* Possible values of the language identifier field in the name records */ - /* of the TTF `name' table if the `platform' identifier code is */ - /* TT_PLATFORM_MICROSOFT. */ - /* */ - /* The canonical source for the MS assigned LCID's (seems to) be at */ - /* */ - /* http://www.microsoft.com/globaldev/reference/lcid-all.mspx */ - /* */ - /* It used to be at various places, among them */ - /* */ - /* http://www.microsoft.com/typography/OTSPEC/lcid-cp.txt */ - /* http://www.microsoft.com/globaldev/reference/loclanghome.asp */ - /* http://support.microsoft.com/support/kb/articles/Q224/8/04.ASP */ - /* http://msdn.microsoft.com/library/en-us/passport25/ */ - /* NET_Passport_VBScript_Documentation/Single_Sign_In/ */ - /* Advanced_Single_Sign_In/Localization_and_LCIDs.asp */ - /* */ - /* Hopefully, it seems now that the Globaldev site prevails... */ - /* (updated by Antoine, 2004-02-17) */ + /************************************************************************** + * + * @enum: + * TT_MS_LANGID_XXX + * + * @description: + * Possible values of the language identifier field in the name records + * of the SFNT 'name' table if the 'platform' identifier code is + * @TT_PLATFORM_MICROSOFT. These values are also used as return values + * for function @FT_Get_CMap_Language_ID. + * + * The canonical source for Microsoft's IDs is + * + * https://docs.microsoft.com/en-us/windows/desktop/Intl/language-identifier-constants-and-strings , + * + * however, we only provide macros for language identifiers present in + * the OpenType specification: Microsoft has abandoned the concept of + * LCIDs (language code identifiers), and format~1 of the 'name' table + * provides a better mechanism for languages not covered here. + * + * More legacy values not listed in the reference can be found in the + * @FT_TRUETYPE_IDS_H header file. + */ -#define TT_MS_LANGID_ARABIC_GENERAL 0x0001 #define TT_MS_LANGID_ARABIC_SAUDI_ARABIA 0x0401 #define TT_MS_LANGID_ARABIC_IRAQ 0x0801 -#define TT_MS_LANGID_ARABIC_EGYPT 0x0c01 +#define TT_MS_LANGID_ARABIC_EGYPT 0x0C01 #define TT_MS_LANGID_ARABIC_LIBYA 0x1001 #define TT_MS_LANGID_ARABIC_ALGERIA 0x1401 #define TT_MS_LANGID_ARABIC_MOROCCO 0x1801 -#define TT_MS_LANGID_ARABIC_TUNISIA 0x1c01 +#define TT_MS_LANGID_ARABIC_TUNISIA 0x1C01 #define TT_MS_LANGID_ARABIC_OMAN 0x2001 #define TT_MS_LANGID_ARABIC_YEMEN 0x2401 #define TT_MS_LANGID_ARABIC_SYRIA 0x2801 -#define TT_MS_LANGID_ARABIC_JORDAN 0x2c01 +#define TT_MS_LANGID_ARABIC_JORDAN 0x2C01 #define TT_MS_LANGID_ARABIC_LEBANON 0x3001 #define TT_MS_LANGID_ARABIC_KUWAIT 0x3401 #define TT_MS_LANGID_ARABIC_UAE 0x3801 -#define TT_MS_LANGID_ARABIC_BAHRAIN 0x3c01 +#define TT_MS_LANGID_ARABIC_BAHRAIN 0x3C01 #define TT_MS_LANGID_ARABIC_QATAR 0x4001 #define TT_MS_LANGID_BULGARIAN_BULGARIA 0x0402 -#define TT_MS_LANGID_CATALAN_SPAIN 0x0403 -#define TT_MS_LANGID_CHINESE_GENERAL 0x0004 +#define TT_MS_LANGID_CATALAN_CATALAN 0x0403 #define TT_MS_LANGID_CHINESE_TAIWAN 0x0404 #define TT_MS_LANGID_CHINESE_PRC 0x0804 -#define TT_MS_LANGID_CHINESE_HONG_KONG 0x0c04 +#define TT_MS_LANGID_CHINESE_HONG_KONG 0x0C04 #define TT_MS_LANGID_CHINESE_SINGAPORE 0x1004 - -#if 1 /* this looks like the correct value */ -#define TT_MS_LANGID_CHINESE_MACAU 0x1404 -#else /* but beware, Microsoft may change its mind... - the most recent Word reference has the following: */ -#define TT_MS_LANGID_CHINESE_MACAU TT_MS_LANGID_CHINESE_HONG_KONG -#endif - -#if 0 /* used only with .NET `cultures'; commented out */ -#define TT_MS_LANGID_CHINESE_TRADITIONAL 0x7C04 -#endif - +#define TT_MS_LANGID_CHINESE_MACAO 0x1404 #define TT_MS_LANGID_CZECH_CZECH_REPUBLIC 0x0405 #define TT_MS_LANGID_DANISH_DENMARK 0x0406 #define TT_MS_LANGID_GERMAN_GERMANY 0x0407 #define TT_MS_LANGID_GERMAN_SWITZERLAND 0x0807 -#define TT_MS_LANGID_GERMAN_AUSTRIA 0x0c07 +#define TT_MS_LANGID_GERMAN_AUSTRIA 0x0C07 #define TT_MS_LANGID_GERMAN_LUXEMBOURG 0x1007 -#define TT_MS_LANGID_GERMAN_LIECHTENSTEI 0x1407 +#define TT_MS_LANGID_GERMAN_LIECHTENSTEIN 0x1407 #define TT_MS_LANGID_GREEK_GREECE 0x0408 - - /* don't ask what this one means... It is commented out currently. */ -#if 0 -#define TT_MS_LANGID_GREEK_GREECE2 0x2008 -#endif - -#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009 #define TT_MS_LANGID_ENGLISH_UNITED_STATES 0x0409 #define TT_MS_LANGID_ENGLISH_UNITED_KINGDOM 0x0809 -#define TT_MS_LANGID_ENGLISH_AUSTRALIA 0x0c09 +#define TT_MS_LANGID_ENGLISH_AUSTRALIA 0x0C09 #define TT_MS_LANGID_ENGLISH_CANADA 0x1009 #define TT_MS_LANGID_ENGLISH_NEW_ZEALAND 0x1409 #define TT_MS_LANGID_ENGLISH_IRELAND 0x1809 -#define TT_MS_LANGID_ENGLISH_SOUTH_AFRICA 0x1c09 +#define TT_MS_LANGID_ENGLISH_SOUTH_AFRICA 0x1C09 #define TT_MS_LANGID_ENGLISH_JAMAICA 0x2009 #define TT_MS_LANGID_ENGLISH_CARIBBEAN 0x2409 #define TT_MS_LANGID_ENGLISH_BELIZE 0x2809 -#define TT_MS_LANGID_ENGLISH_TRINIDAD 0x2c09 +#define TT_MS_LANGID_ENGLISH_TRINIDAD 0x2C09 #define TT_MS_LANGID_ENGLISH_ZIMBABWE 0x3009 #define TT_MS_LANGID_ENGLISH_PHILIPPINES 0x3409 -#define TT_MS_LANGID_ENGLISH_INDONESIA 0x3809 -#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3c09 #define TT_MS_LANGID_ENGLISH_INDIA 0x4009 #define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409 #define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809 -#define TT_MS_LANGID_SPANISH_SPAIN_TRADITIONAL_SORT 0x040a -#define TT_MS_LANGID_SPANISH_MEXICO 0x080a -#define TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT 0x0c0a -#define TT_MS_LANGID_SPANISH_GUATEMALA 0x100a -#define TT_MS_LANGID_SPANISH_COSTA_RICA 0x140a -#define TT_MS_LANGID_SPANISH_PANAMA 0x180a -#define TT_MS_LANGID_SPANISH_DOMINICAN_REPUBLIC 0x1c0a -#define TT_MS_LANGID_SPANISH_VENEZUELA 0x200a -#define TT_MS_LANGID_SPANISH_COLOMBIA 0x240a -#define TT_MS_LANGID_SPANISH_PERU 0x280a -#define TT_MS_LANGID_SPANISH_ARGENTINA 0x2c0a -#define TT_MS_LANGID_SPANISH_ECUADOR 0x300a -#define TT_MS_LANGID_SPANISH_CHILE 0x340a -#define TT_MS_LANGID_SPANISH_URUGUAY 0x380a -#define TT_MS_LANGID_SPANISH_PARAGUAY 0x3c0a -#define TT_MS_LANGID_SPANISH_BOLIVIA 0x400a -#define TT_MS_LANGID_SPANISH_EL_SALVADOR 0x440a -#define TT_MS_LANGID_SPANISH_HONDURAS 0x480a -#define TT_MS_LANGID_SPANISH_NICARAGUA 0x4c0a -#define TT_MS_LANGID_SPANISH_PUERTO_RICO 0x500a -#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540a - /* The following ID blatantly violate MS specs by using a */ - /* sublanguage > 0x1F. */ -#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40aU -#define TT_MS_LANGID_FINNISH_FINLAND 0x040b -#define TT_MS_LANGID_FRENCH_FRANCE 0x040c -#define TT_MS_LANGID_FRENCH_BELGIUM 0x080c -#define TT_MS_LANGID_FRENCH_CANADA 0x0c0c -#define TT_MS_LANGID_FRENCH_SWITZERLAND 0x100c -#define TT_MS_LANGID_FRENCH_LUXEMBOURG 0x140c -#define TT_MS_LANGID_FRENCH_MONACO 0x180c -#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1c0c -#define TT_MS_LANGID_FRENCH_REUNION 0x200c -#define TT_MS_LANGID_FRENCH_CONGO 0x240c - /* which was formerly: */ -#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO -#define TT_MS_LANGID_FRENCH_SENEGAL 0x280c -#define TT_MS_LANGID_FRENCH_CAMEROON 0x2c0c -#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300c -#define TT_MS_LANGID_FRENCH_MALI 0x340c -#define TT_MS_LANGID_FRENCH_MOROCCO 0x380c -#define TT_MS_LANGID_FRENCH_HAITI 0x3c0c - /* and another violation of the spec (see 0xE40aU) */ -#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40cU -#define TT_MS_LANGID_HEBREW_ISRAEL 0x040d -#define TT_MS_LANGID_HUNGARIAN_HUNGARY 0x040e -#define TT_MS_LANGID_ICELANDIC_ICELAND 0x040f +#define TT_MS_LANGID_SPANISH_SPAIN_TRADITIONAL_SORT 0x040A +#define TT_MS_LANGID_SPANISH_MEXICO 0x080A +#define TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT 0x0C0A +#define TT_MS_LANGID_SPANISH_GUATEMALA 0x100A +#define TT_MS_LANGID_SPANISH_COSTA_RICA 0x140A +#define TT_MS_LANGID_SPANISH_PANAMA 0x180A +#define TT_MS_LANGID_SPANISH_DOMINICAN_REPUBLIC 0x1C0A +#define TT_MS_LANGID_SPANISH_VENEZUELA 0x200A +#define TT_MS_LANGID_SPANISH_COLOMBIA 0x240A +#define TT_MS_LANGID_SPANISH_PERU 0x280A +#define TT_MS_LANGID_SPANISH_ARGENTINA 0x2C0A +#define TT_MS_LANGID_SPANISH_ECUADOR 0x300A +#define TT_MS_LANGID_SPANISH_CHILE 0x340A +#define TT_MS_LANGID_SPANISH_URUGUAY 0x380A +#define TT_MS_LANGID_SPANISH_PARAGUAY 0x3C0A +#define TT_MS_LANGID_SPANISH_BOLIVIA 0x400A +#define TT_MS_LANGID_SPANISH_EL_SALVADOR 0x440A +#define TT_MS_LANGID_SPANISH_HONDURAS 0x480A +#define TT_MS_LANGID_SPANISH_NICARAGUA 0x4C0A +#define TT_MS_LANGID_SPANISH_PUERTO_RICO 0x500A +#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540A +#define TT_MS_LANGID_FINNISH_FINLAND 0x040B +#define TT_MS_LANGID_FRENCH_FRANCE 0x040C +#define TT_MS_LANGID_FRENCH_BELGIUM 0x080C +#define TT_MS_LANGID_FRENCH_CANADA 0x0C0C +#define TT_MS_LANGID_FRENCH_SWITZERLAND 0x100C +#define TT_MS_LANGID_FRENCH_LUXEMBOURG 0x140C +#define TT_MS_LANGID_FRENCH_MONACO 0x180C +#define TT_MS_LANGID_HEBREW_ISRAEL 0x040D +#define TT_MS_LANGID_HUNGARIAN_HUNGARY 0x040E +#define TT_MS_LANGID_ICELANDIC_ICELAND 0x040F #define TT_MS_LANGID_ITALIAN_ITALY 0x0410 #define TT_MS_LANGID_ITALIAN_SWITZERLAND 0x0810 #define TT_MS_LANGID_JAPANESE_JAPAN 0x0411 -#define TT_MS_LANGID_KOREAN_EXTENDED_WANSUNG_KOREA 0x0412 -#define TT_MS_LANGID_KOREAN_JOHAB_KOREA 0x0812 +#define TT_MS_LANGID_KOREAN_KOREA 0x0412 #define TT_MS_LANGID_DUTCH_NETHERLANDS 0x0413 #define TT_MS_LANGID_DUTCH_BELGIUM 0x0813 #define TT_MS_LANGID_NORWEGIAN_NORWAY_BOKMAL 0x0414 @@ -591,245 +537,315 @@ FT_BEGIN_HEADER #define TT_MS_LANGID_POLISH_POLAND 0x0415 #define TT_MS_LANGID_PORTUGUESE_BRAZIL 0x0416 #define TT_MS_LANGID_PORTUGUESE_PORTUGAL 0x0816 -#define TT_MS_LANGID_RHAETO_ROMANIC_SWITZERLAND 0x0417 +#define TT_MS_LANGID_ROMANSH_SWITZERLAND 0x0417 #define TT_MS_LANGID_ROMANIAN_ROMANIA 0x0418 -#define TT_MS_LANGID_MOLDAVIAN_MOLDAVIA 0x0818 #define TT_MS_LANGID_RUSSIAN_RUSSIA 0x0419 -#define TT_MS_LANGID_RUSSIAN_MOLDAVIA 0x0819 -#define TT_MS_LANGID_CROATIAN_CROATIA 0x041a -#define TT_MS_LANGID_SERBIAN_SERBIA_LATIN 0x081a -#define TT_MS_LANGID_SERBIAN_SERBIA_CYRILLIC 0x0c1a - -#if 0 /* this used to be this value, but it looks like we were wrong */ -#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x101a -#else /* current sources say */ -#define TT_MS_LANGID_CROATIAN_BOSNIA_HERZEGOVINA 0x101a -#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x141a - /* and XPsp2 Platform SDK added (2004-07-26) */ - /* Names are shortened to be significant within 40 chars. */ -#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_LATIN 0x181a -#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC 0x181a -#endif - -#define TT_MS_LANGID_SLOVAK_SLOVAKIA 0x041b -#define TT_MS_LANGID_ALBANIAN_ALBANIA 0x041c -#define TT_MS_LANGID_SWEDISH_SWEDEN 0x041d -#define TT_MS_LANGID_SWEDISH_FINLAND 0x081d -#define TT_MS_LANGID_THAI_THAILAND 0x041e -#define TT_MS_LANGID_TURKISH_TURKEY 0x041f +#define TT_MS_LANGID_CROATIAN_CROATIA 0x041A +#define TT_MS_LANGID_SERBIAN_SERBIA_LATIN 0x081A +#define TT_MS_LANGID_SERBIAN_SERBIA_CYRILLIC 0x0C1A +#define TT_MS_LANGID_CROATIAN_BOSNIA_HERZEGOVINA 0x101A +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x141A +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_LATIN 0x181A +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC 0x1C1A +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC 0x201A +#define TT_MS_LANGID_SLOVAK_SLOVAKIA 0x041B +#define TT_MS_LANGID_ALBANIAN_ALBANIA 0x041C +#define TT_MS_LANGID_SWEDISH_SWEDEN 0x041D +#define TT_MS_LANGID_SWEDISH_FINLAND 0x081D +#define TT_MS_LANGID_THAI_THAILAND 0x041E +#define TT_MS_LANGID_TURKISH_TURKEY 0x041F #define TT_MS_LANGID_URDU_PAKISTAN 0x0420 -#define TT_MS_LANGID_URDU_INDIA 0x0820 #define TT_MS_LANGID_INDONESIAN_INDONESIA 0x0421 #define TT_MS_LANGID_UKRAINIAN_UKRAINE 0x0422 #define TT_MS_LANGID_BELARUSIAN_BELARUS 0x0423 -#define TT_MS_LANGID_SLOVENE_SLOVENIA 0x0424 +#define TT_MS_LANGID_SLOVENIAN_SLOVENIA 0x0424 #define TT_MS_LANGID_ESTONIAN_ESTONIA 0x0425 #define TT_MS_LANGID_LATVIAN_LATVIA 0x0426 #define TT_MS_LANGID_LITHUANIAN_LITHUANIA 0x0427 -#define TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA 0x0827 #define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428 -#define TT_MS_LANGID_FARSI_IRAN 0x0429 -#define TT_MS_LANGID_VIETNAMESE_VIET_NAM 0x042a -#define TT_MS_LANGID_ARMENIAN_ARMENIA 0x042b -#define TT_MS_LANGID_AZERI_AZERBAIJAN_LATIN 0x042c -#define TT_MS_LANGID_AZERI_AZERBAIJAN_CYRILLIC 0x082c -#define TT_MS_LANGID_BASQUE_SPAIN 0x042d -#define TT_MS_LANGID_SORBIAN_GERMANY 0x042e -#define TT_MS_LANGID_MACEDONIAN_MACEDONIA 0x042f -#define TT_MS_LANGID_SUTU_SOUTH_AFRICA 0x0430 -#define TT_MS_LANGID_TSONGA_SOUTH_AFRICA 0x0431 -#define TT_MS_LANGID_TSWANA_SOUTH_AFRICA 0x0432 -#define TT_MS_LANGID_VENDA_SOUTH_AFRICA 0x0433 -#define TT_MS_LANGID_XHOSA_SOUTH_AFRICA 0x0434 -#define TT_MS_LANGID_ZULU_SOUTH_AFRICA 0x0435 +#define TT_MS_LANGID_VIETNAMESE_VIET_NAM 0x042A +#define TT_MS_LANGID_ARMENIAN_ARMENIA 0x042B +#define TT_MS_LANGID_AZERI_AZERBAIJAN_LATIN 0x042C +#define TT_MS_LANGID_AZERI_AZERBAIJAN_CYRILLIC 0x082C +#define TT_MS_LANGID_BASQUE_BASQUE 0x042D +#define TT_MS_LANGID_UPPER_SORBIAN_GERMANY 0x042E +#define TT_MS_LANGID_LOWER_SORBIAN_GERMANY 0x082E +#define TT_MS_LANGID_MACEDONIAN_MACEDONIA 0x042F +#define TT_MS_LANGID_SETSWANA_SOUTH_AFRICA 0x0432 +#define TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA 0x0434 +#define TT_MS_LANGID_ISIZULU_SOUTH_AFRICA 0x0435 #define TT_MS_LANGID_AFRIKAANS_SOUTH_AFRICA 0x0436 #define TT_MS_LANGID_GEORGIAN_GEORGIA 0x0437 #define TT_MS_LANGID_FAEROESE_FAEROE_ISLANDS 0x0438 #define TT_MS_LANGID_HINDI_INDIA 0x0439 -#define TT_MS_LANGID_MALTESE_MALTA 0x043a - /* Added by XPsp2 Platform SDK (2004-07-26) */ -#define TT_MS_LANGID_SAMI_NORTHERN_NORWAY 0x043b -#define TT_MS_LANGID_SAMI_NORTHERN_SWEDEN 0x083b -#define TT_MS_LANGID_SAMI_NORTHERN_FINLAND 0x0C3b -#define TT_MS_LANGID_SAMI_LULE_NORWAY 0x103b -#define TT_MS_LANGID_SAMI_LULE_SWEDEN 0x143b -#define TT_MS_LANGID_SAMI_SOUTHERN_NORWAY 0x183b -#define TT_MS_LANGID_SAMI_SOUTHERN_SWEDEN 0x1C3b -#define TT_MS_LANGID_SAMI_SKOLT_FINLAND 0x203b -#define TT_MS_LANGID_SAMI_INARI_FINLAND 0x243b - /* ... and we also keep our old identifier... */ -#define TT_MS_LANGID_SAAMI_LAPONIA 0x043b - -#if 0 /* this seems to be a previous inversion */ -#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043c -#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083c -#else -#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083c -#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043c -#endif - -#define TT_MS_LANGID_YIDDISH_GERMANY 0x043d -#define TT_MS_LANGID_MALAY_MALAYSIA 0x043e -#define TT_MS_LANGID_MALAY_BRUNEI_DARUSSALAM 0x083e -#define TT_MS_LANGID_KAZAK_KAZAKSTAN 0x043f -#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN /* Cyrillic*/ 0x0440 - /* alias declared in Windows 2000 */ -#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ - TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN - -#define TT_MS_LANGID_SWAHILI_KENYA 0x0441 +#define TT_MS_LANGID_MALTESE_MALTA 0x043A +#define TT_MS_LANGID_SAMI_NORTHERN_NORWAY 0x043B +#define TT_MS_LANGID_SAMI_NORTHERN_SWEDEN 0x083B +#define TT_MS_LANGID_SAMI_NORTHERN_FINLAND 0x0C3B +#define TT_MS_LANGID_SAMI_LULE_NORWAY 0x103B +#define TT_MS_LANGID_SAMI_LULE_SWEDEN 0x143B +#define TT_MS_LANGID_SAMI_SOUTHERN_NORWAY 0x183B +#define TT_MS_LANGID_SAMI_SOUTHERN_SWEDEN 0x1C3B +#define TT_MS_LANGID_SAMI_SKOLT_FINLAND 0x203B +#define TT_MS_LANGID_SAMI_INARI_FINLAND 0x243B +#define TT_MS_LANGID_IRISH_IRELAND 0x083C +#define TT_MS_LANGID_MALAY_MALAYSIA 0x043E +#define TT_MS_LANGID_MALAY_BRUNEI_DARUSSALAM 0x083E +#define TT_MS_LANGID_KAZAKH_KAZAKHSTAN 0x043F +#define TT_MS_LANGID_KYRGYZ_KYRGYZSTAN /* Cyrillic*/ 0x0440 +#define TT_MS_LANGID_KISWAHILI_KENYA 0x0441 #define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442 #define TT_MS_LANGID_UZBEK_UZBEKISTAN_LATIN 0x0443 #define TT_MS_LANGID_UZBEK_UZBEKISTAN_CYRILLIC 0x0843 -#define TT_MS_LANGID_TATAR_TATARSTAN 0x0444 +#define TT_MS_LANGID_TATAR_RUSSIA 0x0444 #define TT_MS_LANGID_BENGALI_INDIA 0x0445 #define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845 #define TT_MS_LANGID_PUNJABI_INDIA 0x0446 -#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846 #define TT_MS_LANGID_GUJARATI_INDIA 0x0447 -#define TT_MS_LANGID_ORIYA_INDIA 0x0448 +#define TT_MS_LANGID_ODIA_INDIA 0x0448 #define TT_MS_LANGID_TAMIL_INDIA 0x0449 -#define TT_MS_LANGID_TELUGU_INDIA 0x044a -#define TT_MS_LANGID_KANNADA_INDIA 0x044b -#define TT_MS_LANGID_MALAYALAM_INDIA 0x044c -#define TT_MS_LANGID_ASSAMESE_INDIA 0x044d -#define TT_MS_LANGID_MARATHI_INDIA 0x044e -#define TT_MS_LANGID_SANSKRIT_INDIA 0x044f +#define TT_MS_LANGID_TELUGU_INDIA 0x044A +#define TT_MS_LANGID_KANNADA_INDIA 0x044B +#define TT_MS_LANGID_MALAYALAM_INDIA 0x044C +#define TT_MS_LANGID_ASSAMESE_INDIA 0x044D +#define TT_MS_LANGID_MARATHI_INDIA 0x044E +#define TT_MS_LANGID_SANSKRIT_INDIA 0x044F #define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450 -#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850 -#define TT_MS_LANGID_TIBETAN_CHINA 0x0451 - /* Don't use the next constant! It has */ - /* (1) the wrong spelling (Dzonghka) */ - /* (2) Microsoft doesn't officially define it -- */ - /* at least it is not in the List of Local */ - /* ID Values. */ - /* (3) Dzongkha is not the same language as */ - /* Tibetan, so merging it is wrong anyway. */ - /* */ - /* TT_MS_LANGID_TIBETAN_BHUTAN is correct, BTW. */ -#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 - -#if 0 - /* the following used to be defined */ -#define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451 - /* ... but it was changed; */ -#else - /* So we will continue to #define it, but with the correct value */ -#define TT_MS_LANGID_TIBETAN_BHUTAN TT_MS_LANGID_DZONGHKA_BHUTAN -#endif - -#define TT_MS_LANGID_WELSH_WALES 0x0452 +#define TT_MS_LANGID_MONGOLIAN_PRC 0x0850 +#define TT_MS_LANGID_TIBETAN_PRC 0x0451 +#define TT_MS_LANGID_WELSH_UNITED_KINGDOM 0x0452 #define TT_MS_LANGID_KHMER_CAMBODIA 0x0453 #define TT_MS_LANGID_LAO_LAOS 0x0454 -#define TT_MS_LANGID_BURMESE_MYANMAR 0x0455 -#define TT_MS_LANGID_GALICIAN_SPAIN 0x0456 +#define TT_MS_LANGID_GALICIAN_GALICIAN 0x0456 #define TT_MS_LANGID_KONKANI_INDIA 0x0457 +#define TT_MS_LANGID_SYRIAC_SYRIA 0x045A +#define TT_MS_LANGID_SINHALA_SRI_LANKA 0x045B +#define TT_MS_LANGID_INUKTITUT_CANADA 0x045D +#define TT_MS_LANGID_INUKTITUT_CANADA_LATIN 0x085D +#define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045E +#define TT_MS_LANGID_TAMAZIGHT_ALGERIA 0x085F +#define TT_MS_LANGID_NEPALI_NEPAL 0x0461 +#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462 +#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 +#define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464 +#define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465 +#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468 +#define TT_MS_LANGID_YORUBA_NIGERIA 0x046A +#define TT_MS_LANGID_QUECHUA_BOLIVIA 0x046B +#define TT_MS_LANGID_QUECHUA_ECUADOR 0x086B +#define TT_MS_LANGID_QUECHUA_PERU 0x0C6B +#define TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA 0x046C +#define TT_MS_LANGID_BASHKIR_RUSSIA 0x046D +#define TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG 0x046E +#define TT_MS_LANGID_GREENLANDIC_GREENLAND 0x046F +#define TT_MS_LANGID_IGBO_NIGERIA 0x0470 +#define TT_MS_LANGID_YI_PRC 0x0478 +#define TT_MS_LANGID_MAPUDUNGUN_CHILE 0x047A +#define TT_MS_LANGID_MOHAWK_MOHAWK 0x047C +#define TT_MS_LANGID_BRETON_FRANCE 0x047E +#define TT_MS_LANGID_UIGHUR_PRC 0x0480 +#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0481 +#define TT_MS_LANGID_OCCITAN_FRANCE 0x0482 +#define TT_MS_LANGID_CORSICAN_FRANCE 0x0483 +#define TT_MS_LANGID_ALSATIAN_FRANCE 0x0484 +#define TT_MS_LANGID_YAKUT_RUSSIA 0x0485 +#define TT_MS_LANGID_KICHE_GUATEMALA 0x0486 +#define TT_MS_LANGID_KINYARWANDA_RWANDA 0x0487 +#define TT_MS_LANGID_WOLOF_SENEGAL 0x0488 +#define TT_MS_LANGID_DARI_AFGHANISTAN 0x048C + + /* */ + + + /* legacy macro definitions not present in OpenType 1.8.1 */ +#define TT_MS_LANGID_ARABIC_GENERAL 0x0001 +#define TT_MS_LANGID_CATALAN_SPAIN \ + TT_MS_LANGID_CATALAN_CATALAN +#define TT_MS_LANGID_CHINESE_GENERAL 0x0004 +#define TT_MS_LANGID_CHINESE_MACAU \ + TT_MS_LANGID_CHINESE_MACAO +#define TT_MS_LANGID_GERMAN_LIECHTENSTEI \ + TT_MS_LANGID_GERMAN_LIECHTENSTEIN +#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009 +#define TT_MS_LANGID_ENGLISH_INDONESIA 0x3809 +#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3C09 +#define TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT \ + TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT +#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40AU +#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1C0C +#define TT_MS_LANGID_FRENCH_REUNION 0x200C +#define TT_MS_LANGID_FRENCH_CONGO 0x240C + /* which was formerly: */ +#define TT_MS_LANGID_FRENCH_ZAIRE \ + TT_MS_LANGID_FRENCH_CONGO +#define TT_MS_LANGID_FRENCH_SENEGAL 0x280C +#define TT_MS_LANGID_FRENCH_CAMEROON 0x2C0C +#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300C +#define TT_MS_LANGID_FRENCH_MALI 0x340C +#define TT_MS_LANGID_FRENCH_MOROCCO 0x380C +#define TT_MS_LANGID_FRENCH_HAITI 0x3C0C +#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40CU +#define TT_MS_LANGID_KOREAN_EXTENDED_WANSUNG_KOREA \ + TT_MS_LANGID_KOREAN_KOREA +#define TT_MS_LANGID_KOREAN_JOHAB_KOREA 0x0812 +#define TT_MS_LANGID_RHAETO_ROMANIC_SWITZERLAND \ + TT_MS_LANGID_ROMANSH_SWITZERLAND +#define TT_MS_LANGID_MOLDAVIAN_MOLDAVIA 0x0818 +#define TT_MS_LANGID_RUSSIAN_MOLDAVIA 0x0819 +#define TT_MS_LANGID_URDU_INDIA 0x0820 +#define TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA 0x0827 +#define TT_MS_LANGID_SLOVENE_SLOVENIA \ + TT_MS_LANGID_SLOVENIAN_SLOVENIA +#define TT_MS_LANGID_FARSI_IRAN 0x0429 +#define TT_MS_LANGID_BASQUE_SPAIN \ + TT_MS_LANGID_BASQUE_BASQUE +#define TT_MS_LANGID_SORBIAN_GERMANY \ + TT_MS_LANGID_UPPER_SORBIAN_GERMANY +#define TT_MS_LANGID_SUTU_SOUTH_AFRICA 0x0430 +#define TT_MS_LANGID_TSONGA_SOUTH_AFRICA 0x0431 +#define TT_MS_LANGID_TSWANA_SOUTH_AFRICA \ + TT_MS_LANGID_SETSWANA_SOUTH_AFRICA +#define TT_MS_LANGID_VENDA_SOUTH_AFRICA 0x0433 +#define TT_MS_LANGID_XHOSA_SOUTH_AFRICA \ + TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA +#define TT_MS_LANGID_ZULU_SOUTH_AFRICA \ + TT_MS_LANGID_ISIZULU_SOUTH_AFRICA +#define TT_MS_LANGID_SAAMI_LAPONIA 0x043B + /* the next two values are incorrectly inverted */ +#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043C +#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083C +#define TT_MS_LANGID_YIDDISH_GERMANY 0x043D +#define TT_MS_LANGID_KAZAK_KAZAKSTAN \ + TT_MS_LANGID_KAZAKH_KAZAKHSTAN +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ + TT_MS_LANGID_KYRGYZ_KYRGYZSTAN +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN \ + TT_MS_LANGID_KYRGYZ_KYRGYZSTAN +#define TT_MS_LANGID_SWAHILI_KENYA \ + TT_MS_LANGID_KISWAHILI_KENYA +#define TT_MS_LANGID_TATAR_TATARSTAN \ + TT_MS_LANGID_TATAR_RUSSIA +#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846 +#define TT_MS_LANGID_ORIYA_INDIA \ + TT_MS_LANGID_ODIA_INDIA +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN \ + TT_MS_LANGID_MONGOLIAN_PRC +#define TT_MS_LANGID_TIBETAN_CHINA \ + TT_MS_LANGID_TIBETAN_PRC +#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 +#define TT_MS_LANGID_TIBETAN_BHUTAN \ + TT_MS_LANGID_DZONGHKA_BHUTAN +#define TT_MS_LANGID_WELSH_WALES \ + TT_MS_LANGID_WELSH_UNITED_KINGDOM +#define TT_MS_LANGID_BURMESE_MYANMAR 0x0455 +#define TT_MS_LANGID_GALICIAN_SPAIN \ + TT_MS_LANGID_GALICIAN_GALICIAN #define TT_MS_LANGID_MANIPURI_INDIA /* Bengali */ 0x0458 #define TT_MS_LANGID_SINDHI_INDIA /* Arabic */ 0x0459 #define TT_MS_LANGID_SINDHI_PAKISTAN 0x0859 - /* Missing a LCID for Sindhi in Devanagari script */ -#define TT_MS_LANGID_SYRIAC_SYRIA 0x045a -#define TT_MS_LANGID_SINHALESE_SRI_LANKA 0x045b -#define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045c -#define TT_MS_LANGID_INUKTITUT_CANADA 0x045d -#define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045e -#define TT_MS_LANGID_TAMAZIGHT_MOROCCO /* Arabic */ 0x045f -#define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN 0x085f - /* Missing a LCID for Tifinagh script */ +#define TT_MS_LANGID_SINHALESE_SRI_LANKA \ + TT_MS_LANGID_SINHALA_SRI_LANKA +#define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045C +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO /* Arabic */ 0x045F +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN \ + TT_MS_LANGID_TAMAZIGHT_ALGERIA #define TT_MS_LANGID_KASHMIRI_PAKISTAN /* Arabic */ 0x0460 - /* Spelled this way by XPsp2 Platform SDK (2004-07-26) */ - /* script is yet unclear... might be Arabic, Nagari or Sharada */ #define TT_MS_LANGID_KASHMIRI_SASIA 0x0860 - /* ... and aliased (by MS) for compatibility reasons. */ -#define TT_MS_LANGID_KASHMIRI_INDIA TT_MS_LANGID_KASHMIRI_SASIA -#define TT_MS_LANGID_NEPALI_NEPAL 0x0461 +#define TT_MS_LANGID_KASHMIRI_INDIA \ + TT_MS_LANGID_KASHMIRI_SASIA #define TT_MS_LANGID_NEPALI_INDIA 0x0861 -#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462 -#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 -#define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464 -#define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465 - /* alias declared in Windows 2000 */ -#define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES +#define TT_MS_LANGID_DIVEHI_MALDIVES \ + TT_MS_LANGID_DHIVEHI_MALDIVES #define TT_MS_LANGID_EDO_NIGERIA 0x0466 #define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467 -#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468 #define TT_MS_LANGID_IBIBIO_NIGERIA 0x0469 -#define TT_MS_LANGID_YORUBA_NIGERIA 0x046a -#define TT_MS_LANGID_QUECHUA_BOLIVIA 0x046b -#define TT_MS_LANGID_QUECHUA_ECUADOR 0x086b -#define TT_MS_LANGID_QUECHUA_PERU 0x0c6b -#define TT_MS_LANGID_SEPEDI_SOUTH_AFRICA 0x046c - /* Also spelled by XPsp2 Platform SDK (2004-07-26) */ +#define TT_MS_LANGID_SEPEDI_SOUTH_AFRICA \ + TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA #define TT_MS_LANGID_SOTHO_SOUTHERN_SOUTH_AFRICA \ - TT_MS_LANGID_SEPEDI_SOUTH_AFRICA - /* language codes 0x046d, 0x046e and 0x046f are (still) unknown. */ -#define TT_MS_LANGID_IGBO_NIGERIA 0x0470 + TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA #define TT_MS_LANGID_KANURI_NIGERIA 0x0471 #define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472 #define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473 #define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873 - /* also spelled in the `Passport SDK' list as: */ -#define TT_MS_LANGID_TIGRIGNA_ERYTREA TT_MS_LANGID_TIGRIGNA_ERYTHREA +#define TT_MS_LANGID_TIGRIGNA_ERYTREA \ + TT_MS_LANGID_TIGRIGNA_ERYTHREA #define TT_MS_LANGID_GUARANI_PARAGUAY 0x0474 #define TT_MS_LANGID_HAWAIIAN_UNITED_STATES 0x0475 #define TT_MS_LANGID_LATIN 0x0476 #define TT_MS_LANGID_SOMALI_SOMALIA 0x0477 - /* Note: Yi does not have a (proper) ISO 639-2 code, since it is mostly */ - /* not written (but OTOH the peculiar writing system is worth */ - /* studying). */ -#define TT_MS_LANGID_YI_CHINA 0x0478 +#define TT_MS_LANGID_YI_CHINA \ + TT_MS_LANGID_YI_PRC #define TT_MS_LANGID_PAPIAMENTU_NETHERLANDS_ANTILLES 0x0479 - /* language codes from 0x047a to 0x047f are (still) unknown. */ -#define TT_MS_LANGID_UIGHUR_CHINA 0x0480 -#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0481 +#define TT_MS_LANGID_UIGHUR_CHINA \ + TT_MS_LANGID_UIGHUR_PRC + + + /************************************************************************** + * + * @enum: + * TT_NAME_ID_XXX + * + * @description: + * Possible values of the 'name' identifier field in the name records of + * an SFNT 'name' table. These values are platform independent. + */ -#if 0 /* not deemed useful for fonts */ -#define TT_MS_LANGID_HUMAN_INTERFACE_DEVICE 0x04ff -#endif - - - /*************************************************************************/ - /* */ - /* Possible values of the `name' identifier field in the name records of */ - /* the TTF `name' table. These values are platform independent. */ - /* */ -#define TT_NAME_ID_COPYRIGHT 0 -#define TT_NAME_ID_FONT_FAMILY 1 -#define TT_NAME_ID_FONT_SUBFAMILY 2 -#define TT_NAME_ID_UNIQUE_ID 3 -#define TT_NAME_ID_FULL_NAME 4 -#define TT_NAME_ID_VERSION_STRING 5 -#define TT_NAME_ID_PS_NAME 6 -#define TT_NAME_ID_TRADEMARK 7 +#define TT_NAME_ID_COPYRIGHT 0 +#define TT_NAME_ID_FONT_FAMILY 1 +#define TT_NAME_ID_FONT_SUBFAMILY 2 +#define TT_NAME_ID_UNIQUE_ID 3 +#define TT_NAME_ID_FULL_NAME 4 +#define TT_NAME_ID_VERSION_STRING 5 +#define TT_NAME_ID_PS_NAME 6 +#define TT_NAME_ID_TRADEMARK 7 /* the following values are from the OpenType spec */ -#define TT_NAME_ID_MANUFACTURER 8 -#define TT_NAME_ID_DESIGNER 9 -#define TT_NAME_ID_DESCRIPTION 10 -#define TT_NAME_ID_VENDOR_URL 11 -#define TT_NAME_ID_DESIGNER_URL 12 -#define TT_NAME_ID_LICENSE 13 -#define TT_NAME_ID_LICENSE_URL 14 +#define TT_NAME_ID_MANUFACTURER 8 +#define TT_NAME_ID_DESIGNER 9 +#define TT_NAME_ID_DESCRIPTION 10 +#define TT_NAME_ID_VENDOR_URL 11 +#define TT_NAME_ID_DESIGNER_URL 12 +#define TT_NAME_ID_LICENSE 13 +#define TT_NAME_ID_LICENSE_URL 14 /* number 15 is reserved */ -#define TT_NAME_ID_PREFERRED_FAMILY 16 -#define TT_NAME_ID_PREFERRED_SUBFAMILY 17 -#define TT_NAME_ID_MAC_FULL_NAME 18 +#define TT_NAME_ID_TYPOGRAPHIC_FAMILY 16 +#define TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY 17 +#define TT_NAME_ID_MAC_FULL_NAME 18 /* The following code is new as of 2000-01-21 */ -#define TT_NAME_ID_SAMPLE_TEXT 19 +#define TT_NAME_ID_SAMPLE_TEXT 19 /* This is new in OpenType 1.3 */ -#define TT_NAME_ID_CID_FINDFONT_NAME 20 +#define TT_NAME_ID_CID_FINDFONT_NAME 20 + + /* This is new in OpenType 1.5 */ +#define TT_NAME_ID_WWS_FAMILY 21 +#define TT_NAME_ID_WWS_SUBFAMILY 22 + /* This is new in OpenType 1.7 */ +#define TT_NAME_ID_LIGHT_BACKGROUND 23 +#define TT_NAME_ID_DARK_BACKGROUND 24 - /*************************************************************************/ - /* */ - /* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ - /* */ - /* Updated 02-Jul-2000. */ - /* */ + /* This is new in OpenType 1.8 */ +#define TT_NAME_ID_VARIATIONS_PREFIX 25 - /* General Scripts Area */ + /* these two values are deprecated */ +#define TT_NAME_ID_PREFERRED_FAMILY TT_NAME_ID_TYPOGRAPHIC_FAMILY +#define TT_NAME_ID_PREFERRED_SUBFAMILY TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY + + + /************************************************************************** + * + * @enum: + * TT_UCR_XXX + * + * @description: + * Possible bit mask values for the `ulUnicodeRangeX` fields in an SFNT + * 'OS/2' table. + */ + + /* ulUnicodeRange1 */ + /* --------------- */ /* Bit 0 Basic Latin */ #define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */ @@ -839,27 +855,44 @@ FT_BEGIN_HEADER #define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */ /* Bit 3 Latin Extended-B */ #define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */ - /* Bit 4 IPA Extensions */ + /* Bit 4 IPA Extensions */ + /* Phonetic Extensions */ + /* Phonetic Extensions Supplement */ #define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */ + /* U+1D00-U+1D7F */ + /* U+1D80-U+1DBF */ /* Bit 5 Spacing Modifier Letters */ + /* Modifier Tone Letters */ #define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */ - /* Bit 6 Combining Diacritical Marks */ -#define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */ + /* U+A700-U+A71F */ + /* Bit 6 Combining Diacritical Marks */ + /* Combining Diacritical Marks Supplement */ +#define TT_UCR_COMBINING_DIACRITICAL_MARKS (1L << 6) /* U+0300-U+036F */ + /* U+1DC0-U+1DFF */ /* Bit 7 Greek and Coptic */ #define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */ - /* Bit 8 is reserved (was: Greek Symbols and Coptic) */ - /* Bit 9 Cyrillic + */ - /* Cyrillic Supplementary */ + /* Bit 8 Coptic */ +#define TT_UCR_COPTIC (1L << 8) /* U+2C80-U+2CFF */ + /* Bit 9 Cyrillic */ + /* Cyrillic Supplement */ + /* Cyrillic Extended-A */ + /* Cyrillic Extended-B */ #define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */ /* U+0500-U+052F */ + /* U+2DE0-U+2DFF */ + /* U+A640-U+A69F */ /* Bit 10 Armenian */ #define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */ /* Bit 11 Hebrew */ #define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */ - /* Bit 12 is reserved (was: Hebrew Extended) */ - /* Bit 13 Arabic */ + /* Bit 12 Vai */ +#define TT_UCR_VAI (1L << 12) /* U+A500-U+A63F */ + /* Bit 13 Arabic */ + /* Arabic Supplement */ #define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */ - /* Bit 14 is reserved (was: Arabic Extended) */ + /* U+0750-U+077F */ + /* Bit 14 NKo */ +#define TT_UCR_NKO (1L << 14) /* U+07C0-U+07FF */ /* Bit 15 Devanagari */ #define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */ /* Bit 16 Bengali */ @@ -882,40 +915,53 @@ FT_BEGIN_HEADER #define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */ /* Bit 25 Lao */ #define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */ - /* Bit 26 Georgian */ + /* Bit 26 Georgian */ + /* Georgian Supplement */ #define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */ - /* Bit 27 is reserved (was Georgian Extended) */ + /* U+2D00-U+2D2F */ + /* Bit 27 Balinese */ +#define TT_UCR_BALINESE (1L << 27) /* U+1B00-U+1B7F */ /* Bit 28 Hangul Jamo */ #define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */ /* Bit 29 Latin Extended Additional */ + /* Latin Extended-C */ + /* Latin Extended-D */ #define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */ + /* U+2C60-U+2C7F */ + /* U+A720-U+A7FF */ /* Bit 30 Greek Extended */ #define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */ + /* Bit 31 General Punctuation */ + /* Supplemental Punctuation */ +#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ + /* U+2E00-U+2E7F */ - /* Symbols Area */ + /* ulUnicodeRange2 */ + /* --------------- */ - /* Bit 31 General Punctuation */ -#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ /* Bit 32 Superscripts And Subscripts */ #define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */ /* Bit 33 Currency Symbols */ #define TT_UCR_CURRENCY_SYMBOLS (1L << 1) /* U+20A0-U+20CF */ /* Bit 34 Combining Diacritical Marks For Symbols */ -#define TT_UCR_COMBINING_DIACRITICS_SYMB (1L << 2) /* U+20D0-U+20FF */ +#define TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB \ + (1L << 2) /* U+20D0-U+20FF */ /* Bit 35 Letterlike Symbols */ #define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */ /* Bit 36 Number Forms */ #define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */ - /* Bit 37 Arrows + */ - /* Supplemental Arrows-A + */ - /* Supplemental Arrows-B */ + /* Bit 37 Arrows */ + /* Supplemental Arrows-A */ + /* Supplemental Arrows-B */ + /* Miscellaneous Symbols and Arrows */ #define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */ /* U+27F0-U+27FF */ /* U+2900-U+297F */ - /* Bit 38 Mathematical Operators + */ - /* Supplemental Mathematical Operators + */ - /* Miscellaneous Mathematical Symbols-A + */ - /* Miscellaneous Mathematical Symbols-B */ + /* U+2B00-U+2BFF */ + /* Bit 38 Mathematical Operators */ + /* Supplemental Mathematical Operators */ + /* Miscellaneous Mathematical Symbols-A */ + /* Miscellaneous Mathematical Symbols-B */ #define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */ /* U+2A00-U+2AFF */ /* U+27C0-U+27EF */ @@ -938,60 +984,53 @@ FT_BEGIN_HEADER #define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */ /* Bit 47 Dingbats */ #define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */ - - /* CJK Phonetics and Symbols Area */ - /* Bit 48 CJK Symbols and Punctuation */ #define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */ /* Bit 49 Hiragana */ #define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */ - /* Bit 50 Katakana + */ - /* Katakana Phonetic Extensions */ + /* Bit 50 Katakana */ + /* Katakana Phonetic Extensions */ #define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */ /* U+31F0-U+31FF */ - /* Bit 51 Bopomofo + */ - /* Bopomofo Extended */ + /* Bit 51 Bopomofo */ + /* Bopomofo Extended */ #define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */ /* U+31A0-U+31BF */ /* Bit 52 Hangul Compatibility Jamo */ #define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */ - /* Bit 53 Kanbun */ -#define TT_UCR_CJK_MISC (1L << 21) /* U+3190-U+319F */ -#define TT_UCR_KANBUN TT_UCR_CJK_MISC + /* Bit 53 Phags-Pa */ +#define TT_UCR_CJK_MISC (1L << 21) /* U+A840-U+A87F */ +#define TT_UCR_KANBUN TT_UCR_CJK_MISC /* deprecated */ +#define TT_UCR_PHAGSPA /* Bit 54 Enclosed CJK Letters and Months */ #define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */ /* Bit 55 CJK Compatibility */ #define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */ - - /* Hangul Syllables Area */ - - /* Bit 56 Hangul */ + /* Bit 56 Hangul Syllables */ #define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */ - - /* Surrogates Area */ - - /* Bit 57 High Surrogates + */ - /* High Private Use Surrogates + */ - /* Low Surrogates */ + /* Bit 57 High Surrogates */ + /* High Private Use Surrogates */ + /* Low Surrogates */ + + /* According to OpenType specs v.1.3+, */ + /* setting bit 57 implies that there is */ + /* at least one codepoint beyond the */ + /* Basic Multilingual Plane that is */ + /* supported by this font. So it really */ + /* means >= U+10000. */ #define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ /* U+DB80-U+DBFF */ /* U+DC00-U+DFFF */ - /* According to OpenType specs v.1.3+, setting bit 57 implies that there */ - /* is at least one codepoint beyond the Basic Multilingual Plane that is */ - /* supported by this font. So it really means: >= U+10000 */ - - /* Bit 58 is reserved for Unicode SubRanges */ - - /* CJK Ideographs Area */ - - /* Bit 59 CJK Unified Ideographs + */ - /* CJK Radicals Supplement + */ - /* Kangxi Radicals + */ - /* Ideographic Description Characters + */ - /* CJK Unified Ideographs Extension A */ - /* CJK Unified Ideographs Extension A + */ - /* CJK Unified Ideographs Extension B + */ - /* Kanbun */ +#define TT_UCR_NON_PLANE_0 TT_UCR_SURROGATES + /* Bit 58 Phoenician */ +#define TT_UCR_PHOENICIAN (1L << 26) /*U+10900-U+1091F*/ + /* Bit 59 CJK Unified Ideographs */ + /* CJK Radicals Supplement */ + /* Kangxi Radicals */ + /* Ideographic Description Characters */ + /* CJK Unified Ideographs Extension A */ + /* CJK Unified Ideographs Extension B */ + /* Kanbun */ #define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */ /* U+2E80-U+2EFF */ /* U+2F00-U+2FDF */ @@ -999,30 +1038,32 @@ FT_BEGIN_HEADER /* U+3400-U+4DB5 */ /*U+20000-U+2A6DF*/ /* U+3190-U+319F */ - - /* Private Use Area */ - /* Bit 60 Private Use */ #define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */ - - /* Compatibility Area and Specials */ - - /* Bit 61 CJK Compatibility Ideographs + */ - /* CJK Compatibility Ideographs Supplement */ -#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+F900-U+FAFF */ + /* Bit 61 CJK Strokes */ + /* CJK Compatibility Ideographs */ + /* CJK Compatibility Ideographs Supplement */ +#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+31C0-U+31EF */ + /* U+F900-U+FAFF */ /*U+2F800-U+2FA1F*/ /* Bit 62 Alphabetic Presentation Forms */ #define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */ /* Bit 63 Arabic Presentation Forms-A */ -#define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */ +#define TT_UCR_ARABIC_PRESENTATION_FORMS_A (1L << 31) /* U+FB50-U+FDFF */ + + /* ulUnicodeRange3 */ + /* --------------- */ + /* Bit 64 Combining Half Marks */ #define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */ - /* Bit 65 CJK Compatibility Forms */ -#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE30-U+FE4F */ + /* Bit 65 Vertical forms */ + /* CJK Compatibility Forms */ +#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE10-U+FE1F */ + /* U+FE30-U+FE4F */ /* Bit 66 Small Form Variants */ #define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */ /* Bit 67 Arabic Presentation Forms-B */ -#define TT_UCR_ARABIC_PRESENTATIONS_B (1L << 3) /* U+FE70-U+FEFE */ +#define TT_UCR_ARABIC_PRESENTATION_FORMS_B (1L << 3) /* U+FE70-U+FEFE */ /* Bit 68 Halfwidth and Fullwidth Forms */ #define TT_UCR_HALFWIDTH_FULLWIDTH_FORMS (1L << 4) /* U+FF00-U+FFEF */ /* Bit 69 Specials */ @@ -1037,8 +1078,12 @@ FT_BEGIN_HEADER #define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */ /* Bit 74 Myanmar */ #define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */ - /* Bit 75 Ethiopic */ + /* Bit 75 Ethiopic */ + /* Ethiopic Supplement */ + /* Ethiopic Extended */ #define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */ + /* U+1380-U+139F */ + /* U+2D80-U+2DDF */ /* Bit 76 Cherokee */ #define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */ /* Bit 77 Unified Canadian Aboriginal Syllabics */ @@ -1047,20 +1092,22 @@ FT_BEGIN_HEADER #define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */ /* Bit 79 Runic */ #define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */ - /* Bit 80 Khmer */ + /* Bit 80 Khmer */ + /* Khmer Symbols */ #define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */ + /* U+19E0-U+19FF */ /* Bit 81 Mongolian */ #define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */ /* Bit 82 Braille Patterns */ #define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */ - /* Bit 83 Yi Syllables + */ - /* Yi Radicals */ + /* Bit 83 Yi Syllables */ + /* Yi Radicals */ #define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */ /* U+A490-U+A4CF */ - /* Bit 84 Tagalog + */ - /* Hanunoo + */ - /* Buhid + */ - /* Tagbanwa */ + /* Bit 84 Tagalog */ + /* Hanunoo */ + /* Buhid */ + /* Tagbanwa */ #define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */ /* U+1720-U+173F */ /* U+1740-U+175F */ @@ -1071,62 +1118,119 @@ FT_BEGIN_HEADER #define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/ /* Bit 87 Deseret */ #define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/ - /* Bit 88 Byzantine Musical Symbols + */ - /* Musical Symbols */ + /* Bit 88 Byzantine Musical Symbols */ + /* Musical Symbols */ + /* Ancient Greek Musical Notation */ #define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/ /*U+1D100-U+1D1FF*/ + /*U+1D200-U+1D24F*/ /* Bit 89 Mathematical Alphanumeric Symbols */ #define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/ - /* Bit 90 Private Use (plane 15) + */ - /* Private Use (plane 16) */ + /* Bit 90 Private Use (plane 15) */ + /* Private Use (plane 16) */ #define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/ /*U+100000-U+10FFFD*/ - /* Bit 91 Variation Selectors */ + /* Bit 91 Variation Selectors */ + /* Variation Selectors Supplement */ #define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */ + /*U+E0100-U+E01EF*/ /* Bit 92 Tags */ #define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/ - - - /*************************************************************************/ - /* */ - /* Some compilers have a very limited length of identifiers. */ - /* */ -#if defined( __TURBOC__ ) && __TURBOC__ < 0x0410 || defined( __PACIFIC__ ) -#define HAVE_LIMIT_ON_IDENTS -#endif - - -#ifndef HAVE_LIMIT_ON_IDENTS - - - /*************************************************************************/ - /* */ - /* Here some alias #defines in order to be clearer. */ - /* */ - /* These are not always #defined to stay within the 31 character limit */ - /* which some compilers have. */ - /* */ - /* Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern */ - /* Borland compilers (read: from BC++ 3.1 on) can increase this limit. */ - /* If you get a warning with such a compiler, use the -i40 switch. */ - /* */ -#define TT_UCR_ARABIC_PRESENTATION_FORMS_A \ - TT_UCR_ARABIC_PRESENTATIONS_A -#define TT_UCR_ARABIC_PRESENTATION_FORMS_B \ - TT_UCR_ARABIC_PRESENTATIONS_B - -#define TT_UCR_COMBINING_DIACRITICAL_MARKS \ - TT_UCR_COMBINING_DIACRITICS -#define TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB \ - TT_UCR_COMBINING_DIACRITICS_SYMB - - -#endif /* !HAVE_LIMIT_ON_IDENTS */ + /* Bit 93 Limbu */ +#define TT_UCR_LIMBU (1L << 29) /* U+1900-U+194F */ + /* Bit 94 Tai Le */ +#define TT_UCR_TAI_LE (1L << 30) /* U+1950-U+197F */ + /* Bit 95 New Tai Lue */ +#define TT_UCR_NEW_TAI_LUE (1L << 31) /* U+1980-U+19DF */ + + /* ulUnicodeRange4 */ + /* --------------- */ + + /* Bit 96 Buginese */ +#define TT_UCR_BUGINESE (1L << 0) /* U+1A00-U+1A1F */ + /* Bit 97 Glagolitic */ +#define TT_UCR_GLAGOLITIC (1L << 1) /* U+2C00-U+2C5F */ + /* Bit 98 Tifinagh */ +#define TT_UCR_TIFINAGH (1L << 2) /* U+2D30-U+2D7F */ + /* Bit 99 Yijing Hexagram Symbols */ +#define TT_UCR_YIJING (1L << 3) /* U+4DC0-U+4DFF */ + /* Bit 100 Syloti Nagri */ +#define TT_UCR_SYLOTI_NAGRI (1L << 4) /* U+A800-U+A82F */ + /* Bit 101 Linear B Syllabary */ + /* Linear B Ideograms */ + /* Aegean Numbers */ +#define TT_UCR_LINEAR_B (1L << 5) /*U+10000-U+1007F*/ + /*U+10080-U+100FF*/ + /*U+10100-U+1013F*/ + /* Bit 102 Ancient Greek Numbers */ +#define TT_UCR_ANCIENT_GREEK_NUMBERS (1L << 6) /*U+10140-U+1018F*/ + /* Bit 103 Ugaritic */ +#define TT_UCR_UGARITIC (1L << 7) /*U+10380-U+1039F*/ + /* Bit 104 Old Persian */ +#define TT_UCR_OLD_PERSIAN (1L << 8) /*U+103A0-U+103DF*/ + /* Bit 105 Shavian */ +#define TT_UCR_SHAVIAN (1L << 9) /*U+10450-U+1047F*/ + /* Bit 106 Osmanya */ +#define TT_UCR_OSMANYA (1L << 10) /*U+10480-U+104AF*/ + /* Bit 107 Cypriot Syllabary */ +#define TT_UCR_CYPRIOT_SYLLABARY (1L << 11) /*U+10800-U+1083F*/ + /* Bit 108 Kharoshthi */ +#define TT_UCR_KHAROSHTHI (1L << 12) /*U+10A00-U+10A5F*/ + /* Bit 109 Tai Xuan Jing Symbols */ +#define TT_UCR_TAI_XUAN_JING (1L << 13) /*U+1D300-U+1D35F*/ + /* Bit 110 Cuneiform */ + /* Cuneiform Numbers and Punctuation */ +#define TT_UCR_CUNEIFORM (1L << 14) /*U+12000-U+123FF*/ + /*U+12400-U+1247F*/ + /* Bit 111 Counting Rod Numerals */ +#define TT_UCR_COUNTING_ROD_NUMERALS (1L << 15) /*U+1D360-U+1D37F*/ + /* Bit 112 Sundanese */ +#define TT_UCR_SUNDANESE (1L << 16) /* U+1B80-U+1BBF */ + /* Bit 113 Lepcha */ +#define TT_UCR_LEPCHA (1L << 17) /* U+1C00-U+1C4F */ + /* Bit 114 Ol Chiki */ +#define TT_UCR_OL_CHIKI (1L << 18) /* U+1C50-U+1C7F */ + /* Bit 115 Saurashtra */ +#define TT_UCR_SAURASHTRA (1L << 19) /* U+A880-U+A8DF */ + /* Bit 116 Kayah Li */ +#define TT_UCR_KAYAH_LI (1L << 20) /* U+A900-U+A92F */ + /* Bit 117 Rejang */ +#define TT_UCR_REJANG (1L << 21) /* U+A930-U+A95F */ + /* Bit 118 Cham */ +#define TT_UCR_CHAM (1L << 22) /* U+AA00-U+AA5F */ + /* Bit 119 Ancient Symbols */ +#define TT_UCR_ANCIENT_SYMBOLS (1L << 23) /*U+10190-U+101CF*/ + /* Bit 120 Phaistos Disc */ +#define TT_UCR_PHAISTOS_DISC (1L << 24) /*U+101D0-U+101FF*/ + /* Bit 121 Carian */ + /* Lycian */ + /* Lydian */ +#define TT_UCR_OLD_ANATOLIAN (1L << 25) /*U+102A0-U+102DF*/ + /*U+10280-U+1029F*/ + /*U+10920-U+1093F*/ + /* Bit 122 Domino Tiles */ + /* Mahjong Tiles */ +#define TT_UCR_GAME_TILES (1L << 26) /*U+1F030-U+1F09F*/ + /*U+1F000-U+1F02F*/ + /* Bit 123-127 Reserved for process-internal usage */ + + /* */ + + /* for backward compatibility with older FreeType versions */ +#define TT_UCR_ARABIC_PRESENTATION_A \ + TT_UCR_ARABIC_PRESENTATION_FORMS_A +#define TT_UCR_ARABIC_PRESENTATION_B \ + TT_UCR_ARABIC_PRESENTATION_FORMS_B + +#define TT_UCR_COMBINING_DIACRITICS \ + TT_UCR_COMBINING_DIACRITICAL_MARKS +#define TT_UCR_COMBINING_DIACRITICS_SYMB \ + TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB FT_END_HEADER -#endif /* __TTNAMEID_H__ */ +#endif /* TTNAMEID_H_ */ /* END */ diff --git a/CMU462/deps/freetype/include/freetype/tttables.h b/CMU462/deps/freetype/include/freetype/tttables.h new file mode 100644 index 0000000..d04f810 --- /dev/null +++ b/CMU462/deps/freetype/include/freetype/tttables.h @@ -0,0 +1,856 @@ +/**************************************************************************** + * + * tttables.h + * + * Basic SFNT/TrueType tables definitions and interface + * (specification only). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef TTTABLES_H_ +#define TTTABLES_H_ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @section: + * truetype_tables + * + * @title: + * TrueType Tables + * + * @abstract: + * TrueType-specific table types and functions. + * + * @description: + * This section contains definitions of some basic tables specific to + * TrueType and OpenType as well as some routines used to access and + * process them. + * + * @order: + * TT_Header + * TT_HoriHeader + * TT_VertHeader + * TT_OS2 + * TT_Postscript + * TT_PCLT + * TT_MaxProfile + * + * FT_Sfnt_Tag + * FT_Get_Sfnt_Table + * FT_Load_Sfnt_Table + * FT_Sfnt_Table_Info + * + * FT_Get_CMap_Language_ID + * FT_Get_CMap_Format + * + * FT_PARAM_TAG_UNPATENTED_HINTING + * + */ + + + /************************************************************************** + * + * @struct: + * TT_Header + * + * @description: + * A structure to model a TrueType font header table. All fields follow + * the OpenType specification. The 64-bit timestamps are stored in + * two-element arrays `Created` and `Modified`, first the upper then + * the lower 32~bits. + */ + typedef struct TT_Header_ + { + FT_Fixed Table_Version; + FT_Fixed Font_Revision; + + FT_Long CheckSum_Adjust; + FT_Long Magic_Number; + + FT_UShort Flags; + FT_UShort Units_Per_EM; + + FT_ULong Created [2]; + FT_ULong Modified[2]; + + FT_Short xMin; + FT_Short yMin; + FT_Short xMax; + FT_Short yMax; + + FT_UShort Mac_Style; + FT_UShort Lowest_Rec_PPEM; + + FT_Short Font_Direction; + FT_Short Index_To_Loc_Format; + FT_Short Glyph_Data_Format; + + } TT_Header; + + + /************************************************************************** + * + * @struct: + * TT_HoriHeader + * + * @description: + * A structure to model a TrueType horizontal header, the 'hhea' table, + * as well as the corresponding horizontal metrics table, 'hmtx'. + * + * @fields: + * Version :: + * The table version. + * + * Ascender :: + * The font's ascender, i.e., the distance from the baseline to the + * top-most of all glyph points found in the font. + * + * This value is invalid in many fonts, as it is usually set by the + * font designer, and often reflects only a portion of the glyphs found + * in the font (maybe ASCII). + * + * You should use the `sTypoAscender` field of the 'OS/2' table instead + * if you want the correct one. + * + * Descender :: + * The font's descender, i.e., the distance from the baseline to the + * bottom-most of all glyph points found in the font. It is negative. + * + * This value is invalid in many fonts, as it is usually set by the + * font designer, and often reflects only a portion of the glyphs found + * in the font (maybe ASCII). + * + * You should use the `sTypoDescender` field of the 'OS/2' table + * instead if you want the correct one. + * + * Line_Gap :: + * The font's line gap, i.e., the distance to add to the ascender and + * descender to get the BTB, i.e., the baseline-to-baseline distance + * for the font. + * + * advance_Width_Max :: + * This field is the maximum of all advance widths found in the font. + * It can be used to compute the maximum width of an arbitrary string + * of text. + * + * min_Left_Side_Bearing :: + * The minimum left side bearing of all glyphs within the font. + * + * min_Right_Side_Bearing :: + * The minimum right side bearing of all glyphs within the font. + * + * xMax_Extent :: + * The maximum horizontal extent (i.e., the 'width' of a glyph's + * bounding box) for all glyphs in the font. + * + * caret_Slope_Rise :: + * The rise coefficient of the cursor's slope of the cursor + * (slope=rise/run). + * + * caret_Slope_Run :: + * The run coefficient of the cursor's slope. + * + * caret_Offset :: + * The cursor's offset for slanted fonts. + * + * Reserved :: + * 8~reserved bytes. + * + * metric_Data_Format :: + * Always~0. + * + * number_Of_HMetrics :: + * Number of HMetrics entries in the 'hmtx' table -- this value can be + * smaller than the total number of glyphs in the font. + * + * long_metrics :: + * A pointer into the 'hmtx' table. + * + * short_metrics :: + * A pointer into the 'hmtx' table. + * + * @note: + * For an OpenType variation font, the values of the following fields can + * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if + * the font contains an 'MVAR' table: `caret_Slope_Rise`, + * `caret_Slope_Run`, and `caret_Offset`. + */ + typedef struct TT_HoriHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Width_Max; /* advance width maximum */ + + FT_Short min_Left_Side_Bearing; /* minimum left-sb */ + FT_Short min_Right_Side_Bearing; /* minimum right-sb */ + FT_Short xMax_Extent; /* xmax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_HMetrics; + + /* The following fields are not defined by the OpenType specification */ + /* but they are used to connect the metrics header to the relevant */ + /* 'hmtx' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_HoriHeader; + + + /************************************************************************** + * + * @struct: + * TT_VertHeader + * + * @description: + * A structure used to model a TrueType vertical header, the 'vhea' + * table, as well as the corresponding vertical metrics table, 'vmtx'. + * + * @fields: + * Version :: + * The table version. + * + * Ascender :: + * The font's ascender, i.e., the distance from the baseline to the + * top-most of all glyph points found in the font. + * + * This value is invalid in many fonts, as it is usually set by the + * font designer, and often reflects only a portion of the glyphs found + * in the font (maybe ASCII). + * + * You should use the `sTypoAscender` field of the 'OS/2' table instead + * if you want the correct one. + * + * Descender :: + * The font's descender, i.e., the distance from the baseline to the + * bottom-most of all glyph points found in the font. It is negative. + * + * This value is invalid in many fonts, as it is usually set by the + * font designer, and often reflects only a portion of the glyphs found + * in the font (maybe ASCII). + * + * You should use the `sTypoDescender` field of the 'OS/2' table + * instead if you want the correct one. + * + * Line_Gap :: + * The font's line gap, i.e., the distance to add to the ascender and + * descender to get the BTB, i.e., the baseline-to-baseline distance + * for the font. + * + * advance_Height_Max :: + * This field is the maximum of all advance heights found in the font. + * It can be used to compute the maximum height of an arbitrary string + * of text. + * + * min_Top_Side_Bearing :: + * The minimum top side bearing of all glyphs within the font. + * + * min_Bottom_Side_Bearing :: + * The minimum bottom side bearing of all glyphs within the font. + * + * yMax_Extent :: + * The maximum vertical extent (i.e., the 'height' of a glyph's + * bounding box) for all glyphs in the font. + * + * caret_Slope_Rise :: + * The rise coefficient of the cursor's slope of the cursor + * (slope=rise/run). + * + * caret_Slope_Run :: + * The run coefficient of the cursor's slope. + * + * caret_Offset :: + * The cursor's offset for slanted fonts. + * + * Reserved :: + * 8~reserved bytes. + * + * metric_Data_Format :: + * Always~0. + * + * number_Of_VMetrics :: + * Number of VMetrics entries in the 'vmtx' table -- this value can be + * smaller than the total number of glyphs in the font. + * + * long_metrics :: + * A pointer into the 'vmtx' table. + * + * short_metrics :: + * A pointer into the 'vmtx' table. + * + * @note: + * For an OpenType variation font, the values of the following fields can + * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if + * the font contains an 'MVAR' table: `Ascender`, `Descender`, + * `Line_Gap`, `caret_Slope_Rise`, `caret_Slope_Run`, and `caret_Offset`. + */ + typedef struct TT_VertHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Height_Max; /* advance height maximum */ + + FT_Short min_Top_Side_Bearing; /* minimum top-sb */ + FT_Short min_Bottom_Side_Bearing; /* minimum bottom-sb */ + FT_Short yMax_Extent; /* ymax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_VMetrics; + + /* The following fields are not defined by the OpenType specification */ + /* but they are used to connect the metrics header to the relevant */ + /* 'vmtx' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_VertHeader; + + + /************************************************************************** + * + * @struct: + * TT_OS2 + * + * @description: + * A structure to model a TrueType 'OS/2' table. All fields comply to + * the OpenType specification. + * + * Note that we now support old Mac fonts that do not include an 'OS/2' + * table. In this case, the `version` field is always set to 0xFFFF. + * + * @note: + * For an OpenType variation font, the values of the following fields can + * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if + * the font contains an 'MVAR' table: `sCapHeight`, `sTypoAscender`, + * `sTypoDescender`, `sTypoLineGap`, `sxHeight`, `usWinAscent`, + * `usWinDescent`, `yStrikeoutPosition`, `yStrikeoutSize`, + * `ySubscriptXOffset`, `ySubScriptXSize`, `ySubscriptYOffset`, + * `ySubscriptYSize`, `ySuperscriptXOffset`, `ySuperscriptXSize`, + * `ySuperscriptYOffset`, and `ySuperscriptYSize`. + * + * Possible values for bits in the `ulUnicodeRangeX` fields are given by + * the @TT_UCR_XXX macros. + */ + + typedef struct TT_OS2_ + { + FT_UShort version; /* 0x0001 - more or 0xFFFF */ + FT_Short xAvgCharWidth; + FT_UShort usWeightClass; + FT_UShort usWidthClass; + FT_UShort fsType; + FT_Short ySubscriptXSize; + FT_Short ySubscriptYSize; + FT_Short ySubscriptXOffset; + FT_Short ySubscriptYOffset; + FT_Short ySuperscriptXSize; + FT_Short ySuperscriptYSize; + FT_Short ySuperscriptXOffset; + FT_Short ySuperscriptYOffset; + FT_Short yStrikeoutSize; + FT_Short yStrikeoutPosition; + FT_Short sFamilyClass; + + FT_Byte panose[10]; + + FT_ULong ulUnicodeRange1; /* Bits 0-31 */ + FT_ULong ulUnicodeRange2; /* Bits 32-63 */ + FT_ULong ulUnicodeRange3; /* Bits 64-95 */ + FT_ULong ulUnicodeRange4; /* Bits 96-127 */ + + FT_Char achVendID[4]; + + FT_UShort fsSelection; + FT_UShort usFirstCharIndex; + FT_UShort usLastCharIndex; + FT_Short sTypoAscender; + FT_Short sTypoDescender; + FT_Short sTypoLineGap; + FT_UShort usWinAscent; + FT_UShort usWinDescent; + + /* only version 1 and higher: */ + + FT_ULong ulCodePageRange1; /* Bits 0-31 */ + FT_ULong ulCodePageRange2; /* Bits 32-63 */ + + /* only version 2 and higher: */ + + FT_Short sxHeight; + FT_Short sCapHeight; + FT_UShort usDefaultChar; + FT_UShort usBreakChar; + FT_UShort usMaxContext; + + /* only version 5 and higher: */ + + FT_UShort usLowerOpticalPointSize; /* in twips (1/20th points) */ + FT_UShort usUpperOpticalPointSize; /* in twips (1/20th points) */ + + } TT_OS2; + + + /************************************************************************** + * + * @struct: + * TT_Postscript + * + * @description: + * A structure to model a TrueType 'post' table. All fields comply to + * the OpenType specification. This structure does not reference a + * font's PostScript glyph names; use @FT_Get_Glyph_Name to retrieve + * them. + * + * @note: + * For an OpenType variation font, the values of the following fields can + * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if + * the font contains an 'MVAR' table: `underlinePosition` and + * `underlineThickness`. + */ + typedef struct TT_Postscript_ + { + FT_Fixed FormatType; + FT_Fixed italicAngle; + FT_Short underlinePosition; + FT_Short underlineThickness; + FT_ULong isFixedPitch; + FT_ULong minMemType42; + FT_ULong maxMemType42; + FT_ULong minMemType1; + FT_ULong maxMemType1; + + /* Glyph names follow in the 'post' table, but we don't */ + /* load them by default. */ + + } TT_Postscript; + + + /************************************************************************** + * + * @struct: + * TT_PCLT + * + * @description: + * A structure to model a TrueType 'PCLT' table. All fields comply to + * the OpenType specification. + */ + typedef struct TT_PCLT_ + { + FT_Fixed Version; + FT_ULong FontNumber; + FT_UShort Pitch; + FT_UShort xHeight; + FT_UShort Style; + FT_UShort TypeFamily; + FT_UShort CapHeight; + FT_UShort SymbolSet; + FT_Char TypeFace[16]; + FT_Char CharacterComplement[8]; + FT_Char FileName[6]; + FT_Char StrokeWeight; + FT_Char WidthType; + FT_Byte SerifStyle; + FT_Byte Reserved; + + } TT_PCLT; + + + /************************************************************************** + * + * @struct: + * TT_MaxProfile + * + * @description: + * The maximum profile ('maxp') table contains many max values, which can + * be used to pre-allocate arrays for speeding up glyph loading and + * hinting. + * + * @fields: + * version :: + * The version number. + * + * numGlyphs :: + * The number of glyphs in this TrueType font. + * + * maxPoints :: + * The maximum number of points in a non-composite TrueType glyph. See + * also `maxCompositePoints`. + * + * maxContours :: + * The maximum number of contours in a non-composite TrueType glyph. + * See also `maxCompositeContours`. + * + * maxCompositePoints :: + * The maximum number of points in a composite TrueType glyph. See + * also `maxPoints`. + * + * maxCompositeContours :: + * The maximum number of contours in a composite TrueType glyph. See + * also `maxContours`. + * + * maxZones :: + * The maximum number of zones used for glyph hinting. + * + * maxTwilightPoints :: + * The maximum number of points in the twilight zone used for glyph + * hinting. + * + * maxStorage :: + * The maximum number of elements in the storage area used for glyph + * hinting. + * + * maxFunctionDefs :: + * The maximum number of function definitions in the TrueType bytecode + * for this font. + * + * maxInstructionDefs :: + * The maximum number of instruction definitions in the TrueType + * bytecode for this font. + * + * maxStackElements :: + * The maximum number of stack elements used during bytecode + * interpretation. + * + * maxSizeOfInstructions :: + * The maximum number of TrueType opcodes used for glyph hinting. + * + * maxComponentElements :: + * The maximum number of simple (i.e., non-composite) glyphs in a + * composite glyph. + * + * maxComponentDepth :: + * The maximum nesting depth of composite glyphs. + * + * @note: + * This structure is only used during font loading. + */ + typedef struct TT_MaxProfile_ + { + FT_Fixed version; + FT_UShort numGlyphs; + FT_UShort maxPoints; + FT_UShort maxContours; + FT_UShort maxCompositePoints; + FT_UShort maxCompositeContours; + FT_UShort maxZones; + FT_UShort maxTwilightPoints; + FT_UShort maxStorage; + FT_UShort maxFunctionDefs; + FT_UShort maxInstructionDefs; + FT_UShort maxStackElements; + FT_UShort maxSizeOfInstructions; + FT_UShort maxComponentElements; + FT_UShort maxComponentDepth; + + } TT_MaxProfile; + + + /************************************************************************** + * + * @enum: + * FT_Sfnt_Tag + * + * @description: + * An enumeration to specify indices of SFNT tables loaded and parsed by + * FreeType during initialization of an SFNT font. Used in the + * @FT_Get_Sfnt_Table API function. + * + * @values: + * FT_SFNT_HEAD :: + * To access the font's @TT_Header structure. + * + * FT_SFNT_MAXP :: + * To access the font's @TT_MaxProfile structure. + * + * FT_SFNT_OS2 :: + * To access the font's @TT_OS2 structure. + * + * FT_SFNT_HHEA :: + * To access the font's @TT_HoriHeader structure. + * + * FT_SFNT_VHEA :: + * To access the font's @TT_VertHeader structure. + * + * FT_SFNT_POST :: + * To access the font's @TT_Postscript structure. + * + * FT_SFNT_PCLT :: + * To access the font's @TT_PCLT structure. + */ + typedef enum FT_Sfnt_Tag_ + { + FT_SFNT_HEAD, + FT_SFNT_MAXP, + FT_SFNT_OS2, + FT_SFNT_HHEA, + FT_SFNT_VHEA, + FT_SFNT_POST, + FT_SFNT_PCLT, + + FT_SFNT_MAX + + } FT_Sfnt_Tag; + + /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag` */ + /* values instead */ +#define ft_sfnt_head FT_SFNT_HEAD +#define ft_sfnt_maxp FT_SFNT_MAXP +#define ft_sfnt_os2 FT_SFNT_OS2 +#define ft_sfnt_hhea FT_SFNT_HHEA +#define ft_sfnt_vhea FT_SFNT_VHEA +#define ft_sfnt_post FT_SFNT_POST +#define ft_sfnt_pclt FT_SFNT_PCLT + + + /************************************************************************** + * + * @function: + * FT_Get_Sfnt_Table + * + * @description: + * Return a pointer to a given SFNT table stored within a face. + * + * @input: + * face :: + * A handle to the source. + * + * tag :: + * The index of the SFNT table. + * + * @return: + * A type-less pointer to the table. This will be `NULL` in case of + * error, or if the corresponding table was not found **OR** loaded from + * the file. + * + * Use a typecast according to `tag` to access the structure elements. + * + * @note: + * The table is owned by the face object and disappears with it. + * + * This function is only useful to access SFNT tables that are loaded by + * the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for a + * list. + * + * @example: + * Here is an example demonstrating access to the 'vhea' table. + * + * ``` + * TT_VertHeader* vert_header; + * + * + * vert_header = + * (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); + * ``` + */ + FT_EXPORT( void* ) + FT_Get_Sfnt_Table( FT_Face face, + FT_Sfnt_Tag tag ); + + + /************************************************************************** + * + * @function: + * FT_Load_Sfnt_Table + * + * @description: + * Load any SFNT font table into client memory. + * + * @input: + * face :: + * A handle to the source face. + * + * tag :: + * The four-byte tag of the table to load. Use value~0 if you want to + * access the whole font file. Otherwise, you can use one of the + * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new + * one with @FT_MAKE_TAG. + * + * offset :: + * The starting offset in the table (or file if tag~==~0). + * + * @output: + * buffer :: + * The target buffer address. The client must ensure that the memory + * array is big enough to hold the data. + * + * @inout: + * length :: + * If the `length` parameter is `NULL`, try to load the whole table. + * Return an error code if it fails. + * + * Else, if `*length` is~0, exit immediately while returning the + * table's (or file) full size in it. + * + * Else the number of bytes to read from the table or file, from the + * starting offset. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If you need to determine the table's length you should first call this + * function with `*length` set to~0, as in the following example: + * + * ``` + * FT_ULong length = 0; + * + * + * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); + * if ( error ) { ... table does not exist ... } + * + * buffer = malloc( length ); + * if ( buffer == NULL ) { ... not enough memory ... } + * + * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); + * if ( error ) { ... could not load table ... } + * ``` + * + * Note that structures like @TT_Header or @TT_OS2 can't be used with + * this function; they are limited to @FT_Get_Sfnt_Table. Reason is that + * those structures depend on the processor architecture, with varying + * size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian). + * + */ + FT_EXPORT( FT_Error ) + FT_Load_Sfnt_Table( FT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); + + + /************************************************************************** + * + * @function: + * FT_Sfnt_Table_Info + * + * @description: + * Return information on an SFNT table. + * + * @input: + * face :: + * A handle to the source face. + * + * table_index :: + * The index of an SFNT table. The function returns + * FT_Err_Table_Missing for an invalid value. + * + * @inout: + * tag :: + * The name tag of the SFNT table. If the value is `NULL`, + * `table_index` is ignored, and `length` returns the number of SFNT + * tables in the font. + * + * @output: + * length :: + * The length of the SFNT table (or the number of SFNT tables, + * depending on `tag`). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * While parsing fonts, FreeType handles SFNT tables with length zero as + * missing. + * + */ + FT_EXPORT( FT_Error ) + FT_Sfnt_Table_Info( FT_Face face, + FT_UInt table_index, + FT_ULong *tag, + FT_ULong *length ); + + + /************************************************************************** + * + * @function: + * FT_Get_CMap_Language_ID + * + * @description: + * Return cmap language ID as specified in the OpenType standard. + * Definitions of language ID values are in file @FT_TRUETYPE_IDS_H. + * + * @input: + * charmap :: + * The target charmap. + * + * @return: + * The language ID of `charmap`. If `charmap` doesn't belong to an SFNT + * face, just return~0 as the default value. + * + * For a format~14 cmap (to access Unicode IVS), the return value is + * 0xFFFFFFFF. + */ + FT_EXPORT( FT_ULong ) + FT_Get_CMap_Language_ID( FT_CharMap charmap ); + + + /************************************************************************** + * + * @function: + * FT_Get_CMap_Format + * + * @description: + * Return the format of an SFNT 'cmap' table. + * + * @input: + * charmap :: + * The target charmap. + * + * @return: + * The format of `charmap`. If `charmap` doesn't belong to an SFNT face, + * return -1. + */ + FT_EXPORT( FT_Long ) + FT_Get_CMap_Format( FT_CharMap charmap ); + + /* */ + + +FT_END_HEADER + +#endif /* TTTABLES_H_ */ + + +/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/tttags.h b/CMU462/deps/freetype/include/freetype/tttags.h old mode 100755 new mode 100644 similarity index 65% rename from CMU462/deps/freetype/include/freetype2/freetype/tttags.h rename to CMU462/deps/freetype/include/freetype/tttags.h index e10244c..bd0986e --- a/CMU462/deps/freetype/include/freetype2/freetype/tttags.h +++ b/CMU462/deps/freetype/include/freetype/tttags.h @@ -1,23 +1,23 @@ -/***************************************************************************/ -/* */ -/* tttags.h */ -/* */ -/* Tags for TrueType and OpenType tables (specification only). */ -/* */ -/* Copyright 1996-2001, 2004, 2005 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTAGS_H__ -#define __TTAGS_H__ +/**************************************************************************** + * + * tttags.h + * + * Tags for TrueType and OpenType tables (specification only). + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef TTAGS_H_ +#define TTAGS_H_ #include <ft2build.h> @@ -40,8 +40,14 @@ FT_BEGIN_HEADER #define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' ) #define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' ) #define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' ) +#define TTAG_CBDT FT_MAKE_TAG( 'C', 'B', 'D', 'T' ) +#define TTAG_CBLC FT_MAKE_TAG( 'C', 'B', 'L', 'C' ) #define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' ) +#define TTAG_CFF2 FT_MAKE_TAG( 'C', 'F', 'F', '2' ) +#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' ) #define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' ) +#define TTAG_COLR FT_MAKE_TAG( 'C', 'O', 'L', 'R' ) +#define TTAG_CPAL FT_MAKE_TAG( 'C', 'P', 'A', 'L' ) #define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' ) #define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' ) #define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' ) @@ -49,6 +55,7 @@ FT_BEGIN_HEADER #define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' ) #define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' ) #define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' ) +#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) #define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' ) #define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' ) #define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' ) @@ -57,6 +64,7 @@ FT_BEGIN_HEADER #define TTAG_GPOS FT_MAKE_TAG( 'G', 'P', 'O', 'S' ) #define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' ) #define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' ) +#define TTAG_HVAR FT_MAKE_TAG( 'H', 'V', 'A', 'R' ) #define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' ) #define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' ) #define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' ) @@ -67,33 +75,49 @@ FT_BEGIN_HEADER #define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' ) #define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' ) #define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' ) +#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) +#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' ) #define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' ) #define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' ) #define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' ) #define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' ) #define TTAG_mort FT_MAKE_TAG( 'm', 'o', 'r', 't' ) #define TTAG_morx FT_MAKE_TAG( 'm', 'o', 'r', 'x' ) +#define TTAG_MVAR FT_MAKE_TAG( 'M', 'V', 'A', 'R' ) #define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' ) #define TTAG_opbd FT_MAKE_TAG( 'o', 'p', 'b', 'd' ) #define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' ) #define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' ) #define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' ) +#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' ) #define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' ) #define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' ) #define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' ) +#define TTAG_sbix FT_MAKE_TAG( 's', 'b', 'i', 'x' ) +#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' ) #define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' ) #define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' ) #define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' ) #define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' ) #define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' ) +#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' ) +#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' ) #define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) #define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' ) #define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) +#define TTAG_VVAR FT_MAKE_TAG( 'V', 'V', 'A', 'R' ) +#define TTAG_wOFF FT_MAKE_TAG( 'w', 'O', 'F', 'F' ) + +/* used by "Keyboard.dfont" on legacy Mac OS X */ +#define TTAG_0xA5kbd FT_MAKE_TAG( 0xA5, 'k', 'b', 'd' ) + +/* used by "LastResort.dfont" on legacy Mac OS X */ +#define TTAG_0xA5lst FT_MAKE_TAG( 0xA5, 'l', 's', 't' ) FT_END_HEADER -#endif /* __TTAGS_H__ */ +#endif /* TTAGS_H_ */ /* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/config/ftconfig.h b/CMU462/deps/freetype/include/freetype2/freetype/config/ftconfig.h deleted file mode 100755 index 3b44750..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/config/ftconfig.h +++ /dev/null @@ -1,350 +0,0 @@ -/* ftconfig.h. Generated from ftconfig.in by configure. */ -/***************************************************************************/ -/* */ -/* ftconfig.in */ -/* */ -/* UNIX-specific configuration file (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This header file contains a number of macro definitions that are used */ - /* by the rest of the engine. Most of the macros here are automatically */ - /* determined at compile time, and you should not need to change it to */ - /* port FreeType, except to compile the library with a non-ANSI */ - /* compiler. */ - /* */ - /* Note however that if some specific modifications are needed, we */ - /* advise you to place a modified copy in your build directory. */ - /* */ - /* The build directory is usually `freetype/builds/<system>', and */ - /* contains system-specific files that are always included first when */ - /* building the library. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ - -#include <ft2build.h> -#include FT_CONFIG_OPTIONS_H -#include FT_CONFIG_STANDARD_LIBRARY_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled to suit a specific system. The current */ - /* ones are defaults used to compile FreeType in an ANSI C environment */ - /* (16bit compilers are also supported). Copy this file to your own */ - /* `freetype/builds/<system>' directory, and edit it to port the engine. */ - /* */ - /*************************************************************************/ - - -#define HAVE_UNISTD_H 1 -#define HAVE_FCNTL_H 1 - -#define SIZEOF_INT 4 -#define SIZEOF_LONG 4 - - -#define FT_SIZEOF_INT SIZEOF_INT -#define FT_SIZEOF_LONG SIZEOF_LONG - -#define FT_CHAR_BIT CHAR_BIT - - /* Preferred alignment of data */ -#define FT_ALIGNMENT 8 - - - /* FT_UNUSED is a macro used to indicate that a given parameter is not */ - /* used -- this is only used to get rid of unpleasant compiler warnings */ -#ifndef FT_UNUSED -#define FT_UNUSED( arg ) ( (arg) = (arg) ) -#endif - - - /*************************************************************************/ - /* */ - /* AUTOMATIC CONFIGURATION MACROS */ - /* */ - /* These macros are computed from the ones defined above. Don't touch */ - /* their definition, unless you know precisely what you are doing. No */ - /* porter should need to mess with them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Mac support */ - /* */ - /* This is the only necessary change, so it is defined here instead */ - /* providing a new configuration file. */ - /* */ -#if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \ - ( defined( __MWERKS__ ) && defined( macintosh ) ) - /* no Carbon frameworks for 64bit 10.4.x */ -#include "AvailabilityMacros.h" -#if defined( __LP64__ ) && \ - ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) -#define DARWIN_NO_CARBON 1 -#else -#define FT_MACINTOSH 1 -#endif -#endif - - - /* Fix compiler warning with sgi compiler */ -#if defined( __sgi ) && !defined( __GNUC__ ) -#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) -#pragma set woff 3505 -#endif -#endif - - - /*************************************************************************/ - /* */ - /* IntN types */ - /* */ - /* Used to guarantee the size of some specific integers. */ - /* */ - typedef signed short FT_Int16; - typedef unsigned short FT_UInt16; - -#if FT_SIZEOF_INT == 4 - - typedef signed int FT_Int32; - typedef unsigned int FT_UInt32; - -#elif FT_SIZEOF_LONG == 4 - - typedef signed long FT_Int32; - typedef unsigned long FT_UInt32; - -#else -#error "no 32bit type found -- please check your configuration files" -#endif - - - /* look up an integer type that is at least 32 bits */ -#if FT_SIZEOF_INT >= 4 - - typedef int FT_Fast; - typedef unsigned int FT_UFast; - -#elif FT_SIZEOF_LONG >= 4 - - typedef long FT_Fast; - typedef unsigned long FT_UFast; - -#endif - - - /* determine whether we have a 64-bit int type for platforms without */ - /* Autoconf */ -#if FT_SIZEOF_LONG == 8 - - /* FT_LONG64 must be defined if a 64-bit type is available */ -#define FT_LONG64 -#define FT_INT64 long - -#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 - -#elif defined( __BORLANDC__ ) /* Borland C++ */ - - /* XXXX: We should probably check the value of __BORLANDC__ in order */ - /* to test the compiler version. */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 - -#elif defined( __WATCOMC__ ) /* Watcom C++ */ - - /* Watcom doesn't provide 64-bit data types */ - -#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ - -#define FT_LONG64 -#define FT_INT64 long long int - -#elif defined( __GNUC__ ) - - /* GCC provides the `long long' type */ -#define FT_LONG64 -#define FT_INT64 long long int - -#endif /* FT_SIZEOF_LONG == 8 */ - - -#define FT_BEGIN_STMNT do { -#define FT_END_STMNT } while ( 0 ) -#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT - - - /*************************************************************************/ - /* */ - /* A 64-bit data type will create compilation problems if you compile */ - /* in strict ANSI mode. To avoid them, we disable their use if */ - /* __STDC__ is defined. You can however ignore this rule by */ - /* defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ - /* */ -#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) - -#ifdef __STDC__ - - /* Undefine the 64-bit macros in strict ANSI compilation mode. */ - /* Since `#undef' doesn't survive in configuration header files */ - /* we use the postprocessing facility of AC_CONFIG_HEADERS to */ - /* replace the leading `/' with `#'. */ -#undef FT_LONG64 -#undef FT_INT64 - -#endif /* __STDC__ */ - -#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ - - -#ifdef FT_MAKE_OPTION_SINGLE_OBJECT - -#define FT_LOCAL( x ) static x -#define FT_LOCAL_DEF( x ) static x - -#else - -#ifdef __cplusplus -#define FT_LOCAL( x ) extern "C" x -#define FT_LOCAL_DEF( x ) extern "C" x -#else -#define FT_LOCAL( x ) extern x -#define FT_LOCAL_DEF( x ) x -#endif - -#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ - - -#ifndef FT_BASE - -#ifdef __cplusplus -#define FT_BASE( x ) extern "C" x -#else -#define FT_BASE( x ) extern x -#endif - -#endif /* !FT_BASE */ - - -#ifndef FT_BASE_DEF - -#ifdef __cplusplus -#define FT_BASE_DEF( x ) x -#else -#define FT_BASE_DEF( x ) x -#endif - -#endif /* !FT_BASE_DEF */ - - -#ifndef FT_EXPORT - -#ifdef __cplusplus -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif - -#endif /* !FT_EXPORT */ - - -#ifndef FT_EXPORT_DEF - -#ifdef __cplusplus -#define FT_EXPORT_DEF( x ) extern "C" x -#else -#define FT_EXPORT_DEF( x ) extern x -#endif - -#endif /* !FT_EXPORT_DEF */ - - -#ifndef FT_EXPORT_VAR - -#ifdef __cplusplus -#define FT_EXPORT_VAR( x ) extern "C" x -#else -#define FT_EXPORT_VAR( x ) extern x -#endif - -#endif /* !FT_EXPORT_VAR */ - - /* The following macros are needed to compile the library with a */ - /* C++ compiler and with 16bit compilers. */ - /* */ - - /* This is special. Within C++, you must specify `extern "C"' for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ - /* */ - /* Some 16bit compilers have to redefine these macros to insert */ - /* the infamous `_cdecl' or `__fastcall' declarations. */ - /* */ -#ifndef FT_CALLBACK_DEF -#ifdef __cplusplus -#define FT_CALLBACK_DEF( x ) extern "C" x -#else -#define FT_CALLBACK_DEF( x ) static x -#endif -#endif /* FT_CALLBACK_DEF */ - -#ifndef FT_CALLBACK_TABLE -#ifdef __cplusplus -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" -#else -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF /* nothing */ -#endif -#endif /* FT_CALLBACK_TABLE */ - - -FT_END_HEADER - - -#endif /* __FTCONFIG_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/config/ftmodule.h b/CMU462/deps/freetype/include/freetype2/freetype/config/ftmodule.h deleted file mode 100755 index c28052b..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/config/ftmodule.h +++ /dev/null @@ -1,22 +0,0 @@ -/* This is a generated file. */ -FT_USE_MODULE(tt_driver_class) -FT_USE_MODULE(t1_driver_class) -FT_USE_MODULE(cff_driver_class) -FT_USE_MODULE(t1cid_driver_class) -FT_USE_MODULE(pfr_driver_class) -FT_USE_MODULE(t42_driver_class) -FT_USE_MODULE(winfnt_driver_class) -FT_USE_MODULE(pcf_driver_class) -FT_USE_MODULE(bdf_driver_class) -FT_USE_MODULE(sfnt_module_class) -FT_USE_MODULE(autofit_module_class) -FT_USE_MODULE(pshinter_module_class) -FT_USE_MODULE(ft_raster1_renderer_class) -FT_USE_MODULE(ft_smooth_renderer_class) -FT_USE_MODULE(ft_smooth_lcd_renderer_class) -FT_USE_MODULE(ft_smooth_lcdv_renderer_class) -FT_USE_MODULE(gxv_module_class) -FT_USE_MODULE(otv_module_class) -FT_USE_MODULE(psaux_module_class) -FT_USE_MODULE(psnames_module_class) -/* EOF */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/config/ftoption.h b/CMU462/deps/freetype/include/freetype2/freetype/config/ftoption.h deleted file mode 100755 index 0b5c66d..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/config/ftoption.h +++ /dev/null @@ -1,695 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoption.h */ -/* */ -/* User-selectable configuration macros (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOPTION_H__ -#define __FTOPTION_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* USER-SELECTABLE CONFIGURATION MACROS */ - /* */ - /* This file contains the default configuration macro definitions for */ - /* a standard build of the FreeType library. There are three ways to */ - /* use this file to build project-specific versions of the library: */ - /* */ - /* - You can modify this file by hand, but this is not recommended in */ - /* cases where you would like to build several versions of the */ - /* library from a single source directory. */ - /* */ - /* - You can put a copy of this file in your build directory, more */ - /* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */ - /* is the name of a directory that is included _before_ the FreeType */ - /* include path during compilation. */ - /* */ - /* The default FreeType Makefiles and Jamfiles use the build */ - /* directory `builds/<system>' by default, but you can easily change */ - /* that for your own projects. */ - /* */ - /* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ - /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ - /* locate this file during the build. For example, */ - /* */ - /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ - /* #include <freetype/config/ftheader.h> */ - /* */ - /* will use `$BUILD/myftoptions.h' instead of this file for macro */ - /* definitions. */ - /* */ - /* Note also that you can similarly pre-define the macro */ - /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ - /* that are statically linked to the library at compile time. By */ - /* default, this file is <freetype/config/ftmodule.h>. */ - /* */ - /* We highly recommend using the third method whenever possible. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Uncomment the line below if you want to activate sub-pixel rendering */ - /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ - /* */ - /* Note that this feature is covered by several Microsoft patents */ - /* and should not be activated in any default build of the library. */ - /* */ - /* This macro has no impact on the FreeType API, only on its */ - /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ - /* FT_Render_Glyph still generates a bitmap that is 3 times larger than */ - /* the original size; the difference will be that each triplet of */ - /* subpixels has R=G=B. */ - /* */ - /* This is done to allow FreeType clients to run unmodified, forcing */ - /* them to display normal gray-level anti-aliased glyphs. */ - /* */ -#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. */ - /* */ -#undef FT_CONFIG_OPTION_FORCE_INT64 - - - /*************************************************************************/ - /* */ - /* LZW-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* `compress' program. This is mostly used to parse many of the PCF */ - /* files that come with various X11 distributions. The implementation */ - /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ - /* (see src/lzw/ftgzip.c). */ - /* */ - /* Define this macro if you want to enable this `feature'. */ - /* */ -#define FT_CONFIG_OPTION_USE_LZW - - - /*************************************************************************/ - /* */ - /* Gzip-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* `gzip' program. This is mostly used to parse many of the PCF files */ - /* that come with XFree86. The implementation uses `zlib' to */ - /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ - /* */ - /* Define this macro if you want to enable this `feature'. See also */ - /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ - /* */ -#define FT_CONFIG_OPTION_USE_ZLIB - - - /*************************************************************************/ - /* */ - /* ZLib library selection */ - /* */ - /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ - /* It allows FreeType's `ftgzip' component to link to the system's */ - /* installation of the ZLib library. This is useful on systems like */ - /* Unix or VMS where it generally is already available. */ - /* */ - /* If you let it undefined, the component will use its own copy */ - /* of the zlib sources instead. These have been modified to be */ - /* included directly within the component and *not* export external */ - /* function names. This allows you to link any program with FreeType */ - /* _and_ ZLib without linking conflicts. */ - /* */ - /* Do not #undef this macro here since the build system might define */ - /* it for certain configurations only. */ - /* */ -/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ - - - /*************************************************************************/ - /* */ - /* DLL export compilation */ - /* */ - /* When compiling FreeType as a DLL, some systems/compilers need a */ - /* special keyword in front OR after the return type of function */ - /* declarations. */ - /* */ - /* Two macros are used within the FreeType source code to define */ - /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ - /* */ - /* FT_EXPORT( return_type ) */ - /* */ - /* is used in a function declaration, as in */ - /* */ - /* FT_EXPORT( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ); */ - /* */ - /* */ - /* FT_EXPORT_DEF( return_type ) */ - /* */ - /* is used in a function definition, as in */ - /* */ - /* FT_EXPORT_DEF( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ) */ - /* { */ - /* ... some code ... */ - /* return FT_Err_Ok; */ - /* } */ - /* */ - /* You can provide your own implementation of FT_EXPORT and */ - /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ - /* will be later automatically defined as `extern return_type' to */ - /* allow normal compilation. */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ -/* #define FT_EXPORT(x) extern x */ -/* #define FT_EXPORT_DEF(x) x */ -#ifndef __GNUC__ -# define __DLL_IMPORT__ __declspec(dllimport) -# define __DLL_EXPORT__ __declspec(dllexport) -#else -# define __DLL_IMPORT__ __attribute__((dllimport)) extern -# define __DLL_EXPORT__ __attribute__((dllexport)) extern -#endif - -#if (defined __WIN32__) || (defined _WIN32) -# ifdef BUILD_FREETYPE2_DLL -# define FREETYPE2_DLL_IMPEXP __DLL_EXPORT__ -# elif defined(FREETYPE2_STATIC) -# define FREETYPE2_DLL_IMPEXP -# elif defined (USE_FREETYPE2_DLL) -# define FREETYPE2_DLL_IMPEXP __DLL_IMPORT__ -# elif defined (USE_FREETYPE2_STATIC) -# define FREETYPE2_DLL_IMPEXP -# else /* assume USE_FREETYPE2_DLL */ -# define FREETYPE2_DLL_IMPEXP __DLL_IMPORT__ -# endif -#else /* __WIN32__ */ -# define FREETYPE2_DLL_IMPEXP -#endif - -#define FT_EXPORT(x) FREETYPE2_DLL_IMPEXP x -#define FT_BASE(x) FREETYPE2_DLL_IMPEXP x - - - /*************************************************************************/ - /* */ - /* Glyph Postscript Names handling */ - /* */ - /* By default, FreeType 2 is compiled with the `PSNames' module. This */ - /* module is in charge of converting a glyph name string into a */ - /* Unicode value, or return a Macintosh standard glyph name for the */ - /* use with the TrueType `post' table. */ - /* */ - /* Undefine this macro if you do not want `PSNames' compiled in your */ - /* build of FreeType. This has the following effects: */ - /* */ - /* - The TrueType driver will provide its own set of glyph names, */ - /* if you build it to support postscript names in the TrueType */ - /* `post' table. */ - /* */ - /* - The Type 1 driver will not be able to synthetize a Unicode */ - /* charmap out of the glyphs found in the fonts. */ - /* */ - /* You would normally undefine this configuration macro when building */ - /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ - /* */ -#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Postscript Names to Unicode Values support */ - /* */ - /* By default, FreeType 2 is built with the `PSNames' module compiled */ - /* in. Among other things, the module is used to convert a glyph name */ - /* into a Unicode value. This is especially useful in order to */ - /* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */ - /* through a big table named the `Adobe Glyph List' (AGL). */ - /* */ - /* Undefine this macro if you do not want the Adobe Glyph List */ - /* compiled in your `PSNames' module. The Type 1 driver will not be */ - /* able to synthetize a Unicode charmap out of the glyphs found in the */ - /* fonts. */ - /* */ -#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - - /*************************************************************************/ - /* */ - /* Support for Mac fonts */ - /* */ - /* Define this macro if you want support for outline fonts in Mac */ - /* format (mac dfont, mac resource, macbinary containing a mac */ - /* resource) on non-Mac platforms. */ - /* */ - /* Note that the `FOND' resource isn't checked. */ - /* */ -#define FT_CONFIG_OPTION_MAC_FONTS - - - /*************************************************************************/ - /* */ - /* Guessing methods to access embedded resource forks */ - /* */ - /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ - /* GNU/Linux). */ - /* */ - /* Resource forks which include fonts data are stored sometimes in */ - /* locations which users or developers don't expected. In some cases, */ - /* resource forks start with some offset from the head of a file. In */ - /* other cases, the actual resource fork is stored in file different */ - /* from what the user specifies. If this option is activated, */ - /* FreeType tries to guess whether such offsets or different file */ - /* names must be used. */ - /* */ - /* Note that normal, direct access of resource forks is controlled via */ - /* the FT_CONFIG_OPTION_MAC_FONTS option. */ - /* */ -#ifdef FT_CONFIG_OPTION_MAC_FONTS -#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK -#endif - - - /*************************************************************************/ - /* */ - /* Allow the use of FT_Incremental_Interface to load typefaces that */ - /* contain no glyph data, but supply it via a callback function. */ - /* This allows FreeType to be used with the PostScript language, using */ - /* the GhostScript interpreter. */ - /* */ -/* #define FT_CONFIG_OPTION_INCREMENTAL */ - - - /*************************************************************************/ - /* */ - /* The size in bytes of the render pool used by the scan-line converter */ - /* to do all of its work. */ - /* */ - /* This must be greater than 4KByte if you use FreeType to rasterize */ - /* glyphs; otherwise, you may set it to zero to avoid unnecessary */ - /* allocation of the render pool. */ - /* */ -#define FT_RENDER_POOL_SIZE 16384L - - - /*************************************************************************/ - /* */ - /* FT_MAX_MODULES */ - /* */ - /* The maximum number of modules that can be registered in a single */ - /* FreeType library object. 32 is the default. */ - /* */ -#define FT_MAX_MODULES 32 - - - /*************************************************************************/ - /* */ - /* Debug level */ - /* */ - /* FreeType can be compiled in debug or trace mode. In debug mode, */ - /* errors are reported through the `ftdebug' component. In trace */ - /* mode, additional messages are sent to the standard output during */ - /* execution. */ - /* */ - /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ - /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ - /* */ - /* Don't define any of these macros to compile in `release' mode! */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ -/* #define FT_DEBUG_LEVEL_ERROR */ -/* #define FT_DEBUG_LEVEL_TRACE */ - - - /*************************************************************************/ - /* */ - /* Memory Debugging */ - /* */ - /* FreeType now comes with an integrated memory debugger that is */ - /* capable of detecting simple errors like memory leaks or double */ - /* deletes. To compile it within your build of the library, you */ - /* should define FT_DEBUG_MEMORY here. */ - /* */ - /* Note that the memory debugger is only activated at runtime when */ - /* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */ - /* */ - /* Do not #undef this macro here since the build system might define */ - /* it for certain configurations only. */ - /* */ -/* #define FT_DEBUG_MEMORY */ - - - /*************************************************************************/ - /* */ - /* Module errors */ - /* */ - /* If this macro is set (which is _not_ the default), the higher byte */ - /* of an error code gives the module in which the error has occurred, */ - /* while the lower byte is the real error code. */ - /* */ - /* Setting this macro makes sense for debugging purposes only, since */ - /* it would break source compatibility of certain programs that use */ - /* FreeType 2. */ - /* */ - /* More details can be found in the files ftmoderr.h and fterrors.h. */ - /* */ -#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS - - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ - /* embedded bitmaps in all formats using the SFNT module (namely */ - /* TrueType & OpenType). */ - /* */ -#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ - /* load and enumerate the glyph Postscript names in a TrueType or */ - /* OpenType file. */ - /* */ - /* Note that when you do not compile the `PSNames' module by undefining */ - /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ - /* contain additional code used to read the PS Names table from a font. */ - /* */ - /* (By default, the module uses `PSNames' to extract glyph names.) */ - /* */ -#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ - /* access the internal name table in a SFNT-based format like TrueType */ - /* or OpenType. The name table contains various strings used to */ - /* describe the font, like family name, copyright, version, etc. It */ - /* does not contain any glyph name though. */ - /* */ - /* Accessing SFNT names is done through the functions declared in */ - /* `freetype/ftnames.h'. */ - /* */ -#define TT_CONFIG_OPTION_SFNT_NAMES - - - /*************************************************************************/ - /* */ - /* TrueType CMap support */ - /* */ - /* Here you can fine-tune which TrueType CMap table format shall be */ - /* supported. */ -#define TT_CONFIG_CMAP_FORMAT_0 -#define TT_CONFIG_CMAP_FORMAT_2 -#define TT_CONFIG_CMAP_FORMAT_4 -#define TT_CONFIG_CMAP_FORMAT_6 -#define TT_CONFIG_CMAP_FORMAT_8 -#define TT_CONFIG_CMAP_FORMAT_10 -#define TT_CONFIG_CMAP_FORMAT_12 - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ - /* a bytecode interpreter in the TrueType driver. Note that there are */ - /* important patent issues related to the use of the interpreter. */ - /* */ - /* By undefining this, you will only compile the code necessary to load */ - /* TrueType glyphs without hinting. */ - /* */ - /* Do not #undef this macro here, since the build system might */ - /* define it for certain configurations only. */ - /* */ -/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - - /*************************************************************************/ - /* */ - /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ - /* of the TrueType bytecode interpreter is used that doesn't implement */ - /* any of the patented opcodes and algorithms. Note that the */ - /* the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you */ - /* define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; with other words, */ - /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ - /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ - /* */ - /* This macro is only useful for a small number of font files (mostly */ - /* for Asian scripts) that require bytecode interpretation to properly */ - /* load glyphs. For all other fonts, this produces unpleasant results, */ - /* thus the unpatented interpreter is never used to load glyphs from */ - /* TrueType fonts unless one of the following two options is used. */ - /* */ - /* - The unpatented interpreter is explicitly activated by the user */ - /* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ - /* when opening the FT_Face. */ - /* */ - /* - FreeType detects that the FT_Face corresponds to one of the */ - /* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */ - /* contains a hard-coded list of font names and other matching */ - /* parameters (see function `tt_face_init' in file */ - /* `src/truetype/ttobjs.c'). */ - /* */ - /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ - /* */ - /* { */ - /* FT_Parameter parameter; */ - /* FT_Open_Args open_args; */ - /* */ - /* */ - /* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ - /* */ - /* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ - /* open_args.pathname = my_font_pathname; */ - /* open_args.num_params = 1; */ - /* open_args.params = ¶meter; */ - /* */ - /* error = FT_Open_Face( library, &open_args, index, &face ); */ - /* ... */ - /* } */ - /* */ -#define TT_CONFIG_OPTION_UNPATENTED_HINTING - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ - /* bytecode interpreter with a huge switch statement, rather than a call */ - /* table. This results in smaller and faster code for a number of */ - /* architectures. */ - /* */ - /* Note however that on some compiler/processor combinations, undefining */ - /* this macro will generate faster, though larger, code. */ - /* */ -#define TT_CONFIG_OPTION_INTERPRETER_SWITCH - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ - /* TrueType glyph loader to use Apple's definition of how to handle */ - /* component offsets in composite glyphs. */ - /* */ - /* Apple and MS disagree on the default behavior of component offsets */ - /* in composites. Apple says that they should be scaled by the 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. */ - /* */ - /* http://partners.adobe.com/asn/developer/opentype/glyf.html */ - /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ - /* */ -#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */ - /* support for Apple's distortable font technology (fvar, gvar, cvar, */ - /* and avar tables). This has many similarities to Type 1 Multiple */ - /* Masters support. */ - /* */ -#define TT_CONFIG_OPTION_GX_VAR_SUPPORT - - - /*************************************************************************/ - /* */ - /* 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 - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */ - /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ - /* required. */ - /* */ -#define T1_MAX_DICT_DEPTH 5 - - - /*************************************************************************/ - /* */ - /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ - /* calls during glyph loading. */ - /* */ -#define T1_MAX_SUBRS_CALLS 16 - - - /*************************************************************************/ - /* */ - /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ - /* minimum of 16 is required. */ - /* */ - /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ - /* */ -#define T1_MAX_CHARSTRINGS_OPERANDS 256 - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ - /* files into an existing face. Note that if set, the T1 driver will be */ - /* unable to produce kerning distances. */ - /* */ -#undef T1_CONFIG_OPTION_NO_AFM - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of the Multiple Masters font support in the Type 1 */ - /* driver. */ - /* */ -#undef T1_CONFIG_OPTION_NO_MM_SUPPORT - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Compile autofit module with CJK script support. */ - /* */ -#define AF_CONFIG_OPTION_CJK - - /*************************************************************************/ - /* */ - /* Compile autofit module with Indic script support. */ - /* */ -#define AF_CONFIG_OPTION_INDIC - - /* */ - - - /* - * Define this variable if you want to keep the layout of internal - * structures that was used prior to FreeType 2.2. This also compiles in - * a few obsolete functions to avoid linking problems on typical Unix - * distributions. - * - * For embedded systems or building a new distribution from scratch, it - * is recommended to disable the macro since it reduces the library's code - * size and activates a few memory-saving optimizations as well. - */ -/* #define FT_CONFIG_OPTION_OLD_INTERNALS */ - - - /* - * This variable is defined if either unpatented or native TrueType - * hinting is requested by the definitions above. - */ -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER -#define TT_USE_BYTECODE_INTERPRETER -#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING -#define TT_USE_BYTECODE_INTERPRETER -#endif - -FT_END_HEADER - - -#endif /* __FTOPTION_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/config/ftstdlib.h b/CMU462/deps/freetype/include/freetype2/freetype/config/ftstdlib.h deleted file mode 100755 index f923f3e..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/config/ftstdlib.h +++ /dev/null @@ -1,180 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftstdlib.h */ -/* */ -/* ANSI-specific library and header configuration file (specification */ -/* only). */ -/* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to group all #includes to the ANSI C library that */ - /* FreeType normally requires. It also defines macros to rename the */ - /* standard functions within the FreeType source code. */ - /* */ - /* Load a file which defines __FTSTDLIB_H__ before this one to override */ - /* it. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTSTDLIB_H__ -#define __FTSTDLIB_H__ - - -#include <stddef.h> - -#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. */ - /* */ - /* IMPORTANT NOTE: We do not define aliases for heap management and */ - /* i/o routines (i.e. malloc/free/fopen/fread/...) */ - /* since these functions should all be encapsulated */ - /* by platform-specific implementations of */ - /* `ftsystem.c'. */ - /* */ - /**********************************************************************/ - - -#include <limits.h> - -#define FT_CHAR_BIT CHAR_BIT -#define FT_INT_MAX INT_MAX -#define FT_UINT_MAX UINT_MAX -#define FT_ULONG_MAX ULONG_MAX - - - /**********************************************************************/ - /* */ - /* character and string processing */ - /* */ - /**********************************************************************/ - - -#include <string.h> - -#define ft_memchr memchr -#define ft_memcmp memcmp -#define ft_memcpy memcpy -#define ft_memmove memmove -#define ft_memset memset -#define ft_strcat strcat -#define ft_strcmp strcmp -#define ft_strcpy strcpy -#define ft_strlen strlen -#define ft_strncmp strncmp -#define ft_strncpy strncpy -#define ft_strrchr strrchr -#define ft_strstr strstr - - - /**********************************************************************/ - /* */ - /* file handling */ - /* */ - /**********************************************************************/ - - -#include <stdio.h> - -#define FT_FILE FILE -#define ft_fclose fclose -#define ft_fopen fopen -#define ft_fread fread -#define ft_fseek fseek -#define ft_ftell ftell -#define ft_sprintf sprintf - - - /**********************************************************************/ - /* */ - /* sorting */ - /* */ - /**********************************************************************/ - - -#include <stdlib.h> - -#define ft_qsort qsort - -#define ft_exit exit /* only used to exit from unhandled exceptions */ - - - /**********************************************************************/ - /* */ - /* memory allocation */ - /* */ - /**********************************************************************/ - - -#define ft_scalloc calloc -#define ft_sfree free -#define ft_smalloc malloc -#define ft_srealloc realloc - - - /**********************************************************************/ - /* */ - /* miscellaneous */ - /* */ - /**********************************************************************/ - - -#define ft_atol atol -#define ft_labs labs - - - /**********************************************************************/ - /* */ - /* 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_longjmp longjmp -#define ft_setjmp( b ) setjmp( *(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 */ - -#include <stdarg.h> - - -#endif /* __FTSTDLIB_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/freetype.h b/CMU462/deps/freetype/include/freetype2/freetype/freetype.h deleted file mode 100755 index dbca087..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/freetype.h +++ /dev/null @@ -1,3434 +0,0 @@ -/***************************************************************************/ -/* */ -/* freetype.h */ -/* */ -/* FreeType high-level API and common types (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef FT_FREETYPE_H -#error "`ft2build.h' hasn't been included yet!" -#error "Please always use macros to include FreeType header files." -#error "Example:" -#error " #include <ft2build.h>" -#error " #include FT_FREETYPE_H" -#endif - - - /*************************************************************************/ - /* */ - /* The `raster' component duplicates some of the declarations in */ - /* freetype.h for stand-alone use if _FREETYPE_ isn't defined. */ - /* */ - /*************************************************************************/ - - -#ifndef __FREETYPE_H__ -#define __FREETYPE_H__ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_ERRORS_H -#include FT_TYPES_H - - -FT_BEGIN_HEADER - - - - /*************************************************************************/ - /* */ - /* <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. With */ - /* other words, it is recommended to use `calloc' (or variants of it) */ - /* instead of `malloc' for allocation. */ - /* */ - /*************************************************************************/ - - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* B A S I C T Y P E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* base_interface */ - /* */ - /* <Title> */ - /* Base Interface */ - /* */ - /* <Abstract> */ - /* The FreeType 2 base font interface. */ - /* */ - /* <Description> */ - /* This section describes the public high-level API of FreeType 2. */ - /* */ - /* <Order> */ - /* FT_Library */ - /* FT_Face */ - /* FT_Size */ - /* FT_GlyphSlot */ - /* FT_CharMap */ - /* FT_Encoding */ - /* */ - /* FT_FaceRec */ - /* */ - /* FT_FACE_FLAG_SCALABLE */ - /* FT_FACE_FLAG_FIXED_SIZES */ - /* FT_FACE_FLAG_FIXED_WIDTH */ - /* FT_FACE_FLAG_HORIZONTAL */ - /* FT_FACE_FLAG_VERTICAL */ - /* FT_FACE_FLAG_SFNT */ - /* FT_FACE_FLAG_KERNING */ - /* FT_FACE_FLAG_MULTIPLE_MASTERS */ - /* FT_FACE_FLAG_GLYPH_NAMES */ - /* FT_FACE_FLAG_EXTERNAL_STREAM */ - /* FT_FACE_FLAG_FAST_GLYPHS */ - /* FT_FACE_FLAG_HINTER */ - /* */ - /* 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_New_Memory_Face */ - /* FT_Open_Face */ - /* FT_Open_Args */ - /* FT_Parameter */ - /* FT_Attach_File */ - /* FT_Attach_Stream */ - /* */ - /* FT_Set_Char_Size */ - /* FT_Set_Pixel_Sizes */ - /* FT_Request_Size */ - /* FT_Select_Size */ - /* FT_Size_Request_Type */ - /* FT_Size_Request */ - /* FT_Set_Transform */ - /* FT_Load_Glyph */ - /* FT_Get_Char_Index */ - /* FT_Get_Name_Index */ - /* FT_Load_Char */ - /* */ - /* FT_OPEN_MEMORY */ - /* FT_OPEN_STREAM */ - /* FT_OPEN_PATHNAME */ - /* FT_OPEN_DRIVER */ - /* FT_OPEN_PARAMS */ - /* */ - /* FT_LOAD_DEFAULT */ - /* FT_LOAD_RENDER */ - /* FT_LOAD_MONOCHROME */ - /* FT_LOAD_LINEAR_DESIGN */ - /* FT_LOAD_NO_SCALE */ - /* FT_LOAD_NO_HINTING */ - /* FT_LOAD_NO_BITMAP */ - /* FT_LOAD_CROP_BITMAP */ - /* */ - /* FT_LOAD_VERTICAL_LAYOUT */ - /* FT_LOAD_IGNORE_TRANSFORM */ - /* FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH */ - /* FT_LOAD_FORCE_AUTOHINT */ - /* FT_LOAD_NO_RECURSE */ - /* FT_LOAD_PEDANTIC */ - /* */ - /* FT_LOAD_TARGET_NORMAL */ - /* FT_LOAD_TARGET_LIGHT */ - /* FT_LOAD_TARGET_MONO */ - /* FT_LOAD_TARGET_LCD */ - /* FT_LOAD_TARGET_LCD_V */ - /* */ - /* FT_Render_Glyph */ - /* FT_Render_Mode */ - /* FT_Get_Kerning */ - /* FT_Kerning_Mode */ - /* FT_Get_Track_Kerning */ - /* FT_Get_Glyph_Name */ - /* FT_Get_Postscript_Name */ - /* */ - /* FT_CharMapRec */ - /* FT_Select_Charmap */ - /* FT_Set_Charmap */ - /* FT_Get_Charmap_Index */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Glyph_Metrics */ - /* */ - /* <Description> */ - /* A structure used to model the metrics of a single glyph. The */ - /* values are expressed in 26.6 fractional pixel format; if the flag */ - /* @FT_LOAD_NO_SCALE 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. */ - /* */ - /* vertAdvance :: */ - /* Advance height for vertical layout. */ - /* */ - typedef struct FT_Glyph_Metrics_ - { - FT_Pos width; - FT_Pos height; - - FT_Pos horiBearingX; - FT_Pos horiBearingY; - FT_Pos horiAdvance; - - FT_Pos vertBearingX; - FT_Pos vertBearingY; - FT_Pos vertAdvance; - - } FT_Glyph_Metrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Bitmap_Size */ - /* */ - /* <Description> */ - /* This structure models the 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. Thus when */ - /* the driver finds it incorrect, it sets `size' to some calculated */ - /* values and sets `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; - FT_Short width; - - FT_Pos size; - - FT_Pos x_ppem; - FT_Pos y_ppem; - - } FT_Bitmap_Size; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* O B J E C T C L A S S E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Library */ - /* */ - /* <Description> */ - /* A handle to a FreeType library instance. Each `library' is */ - /* completely independent from the others; it is the `root' of a set */ - /* of objects like fonts, faces, sizes, etc. */ - /* */ - /* It also embeds a memory manager (see @FT_Memory), as well as a */ - /* scan-line converter object (see @FT_Raster). */ - /* */ - /* For multi-threading applications each thread should have its own */ - /* FT_Library object. */ - /* */ - /* <Note> */ - /* Library objects are normally created by @FT_Init_FreeType, and */ - /* destroyed with @FT_Done_FreeType. */ - /* */ - typedef struct FT_LibraryRec_ *FT_Library; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Module */ - /* */ - /* <Description> */ - /* A handle to a given FreeType module object. Each module can be a */ - /* font driver, a renderer, or anything else that provides services */ - /* to the formers. */ - /* */ - typedef struct FT_ModuleRec_* FT_Module; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Driver */ - /* */ - /* <Description> */ - /* A handle to a given FreeType font driver object. Each font driver */ - /* is a special module capable of creating faces from font files. */ - /* */ - typedef struct FT_DriverRec_* FT_Driver; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Renderer */ - /* */ - /* <Description> */ - /* A handle to a given FreeType renderer. A renderer is a special */ - /* module in charge of converting a glyph image to a bitmap, when */ - /* necessary. Each renderer supports a given glyph image format, and */ - /* one or more target surface depths. */ - /* */ - typedef struct FT_RendererRec_* FT_Renderer; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Face */ - /* */ - /* <Description> */ - /* A handle to a given typographic face object. A face object models */ - /* a given typeface, in a given style. */ - /* */ - /* <Note> */ - /* Each face object also owns a single @FT_GlyphSlot object, as well */ - /* as one or more @FT_Size objects. */ - /* */ - /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */ - /* a given filepathname or a custom input stream. */ - /* */ - /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ - /* */ - /* <Also> */ - /* The @FT_FaceRec details the publicly accessible fields of a given */ - /* face object. */ - /* */ - typedef struct FT_FaceRec_* FT_Face; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Size */ - /* */ - /* <Description> */ - /* A handle to an object used to model a face scaled to a given */ - /* character size. */ - /* */ - /* <Note> */ - /* Each @FT_Face has an _active_ @FT_Size object that is used by */ - /* functions like @FT_Load_Glyph to determine the scaling */ - /* transformation which 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> */ - /* The @FT_SizeRec structure details 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 where it */ - /* is possible to load any one of the glyphs contained in its parent */ - /* face. */ - /* */ - /* In other words, each time you call @FT_Load_Glyph or */ - /* @FT_Load_Char, the slot's content is erased by the new glyph data, */ - /* i.e., the glyph's metrics, its image (bitmap or outline), and */ - /* other control information. */ - /* */ - /* <Also> */ - /* @FT_GlyphSlotRec details the publicly accessible glyph fields. */ - /* */ - typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_CharMap */ - /* */ - /* <Description> */ - /* A handle to a given character map. A charmap is used to translate */ - /* character codes in a given encoding into glyph indexes for its */ - /* parent's face. Some font formats may provide several charmaps per */ - /* font. */ - /* */ - /* Each face object owns zero or more charmaps, but only one of them */ - /* can be `active' and used by @FT_Get_Char_Index or @FT_Load_Char. */ - /* */ - /* The list of available charmaps in a face is available through the */ - /* `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec. */ - /* */ - /* The currently active charmap is available as `face->charmap'. */ - /* You should call @FT_Set_Charmap to change it. */ - /* */ - /* <Note> */ - /* When a new face is created (either through @FT_New_Face or */ - /* @FT_Open_Face), the library looks for a Unicode charmap within */ - /* the list and automatically activates it. */ - /* */ - /* <Also> */ - /* The @FT_CharMapRec details the publicly accessible fields of a */ - /* given character map. */ - /* */ - typedef struct FT_CharMapRec_* FT_CharMap; - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_ENC_TAG */ - /* */ - /* <Description> */ - /* This macro converts four-letter tags into an unsigned long. It is */ - /* used to define `encoding' identifiers (see @FT_Encoding). */ - /* */ - /* <Note> */ - /* Since many 16bit compilers don't like 32bit enumerations, you */ - /* should redefine this macro in case of problems to something like */ - /* this: */ - /* */ - /* { */ - /* #define FT_ENC_TAG( value, a, b, c, d ) value */ - /* } */ - /* */ - /* to get a simple enumeration without assigning special numbers. */ - /* */ - -#ifndef FT_ENC_TAG -#define FT_ENC_TAG( value, a, b, c, d ) \ - value = ( ( (FT_UInt32)(a) << 24 ) | \ - ( (FT_UInt32)(b) << 16 ) | \ - ( (FT_UInt32)(c) << 8 ) | \ - (FT_UInt32)(d) ) - -#endif /* FT_ENC_TAG */ - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Encoding */ - /* */ - /* <Description> */ - /* An enumeration used to specify 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, GB2312_EUC, etc.). */ - /* */ - /* Because of 32-bit charcodes defined in Unicode (i.e., surrogates), */ - /* all character codes must be expressed as FT_Longs. */ - /* */ - /* Other encodings might be defined in the future. */ - /* */ - /* <Values> */ - /* FT_ENCODING_NONE :: */ - /* The encoding value 0 is reserved. */ - /* */ - /* FT_ENCODING_UNICODE :: */ - /* Corresponds to the Unicode character set. This value covers */ - /* all versions of the Unicode repertoire, including ASCII and */ - /* Latin-1. Most fonts include a Unicode charmap, but not all */ - /* of them. */ - /* */ - /* FT_ENCODING_MS_SYMBOL :: */ - /* Corresponds to the Microsoft Symbol encoding, used to encode */ - /* mathematical symbols in the 32..255 character code range. For */ - /* more information, see `http://www.ceviz.net/symbol.htm'. */ - /* */ - /* FT_ENCODING_SJIS :: */ - /* Corresponds to Japanese SJIS encoding. More info at */ - /* at `http://langsupport.japanreference.com/encoding.shtml'. */ - /* See note on multi-byte encodings below. */ - /* */ - /* FT_ENCODING_GB2312 :: */ - /* Corresponds to an encoding system for Simplified Chinese as used */ - /* used in mainland China. */ - /* */ - /* FT_ENCODING_BIG5 :: */ - /* Corresponds to an encoding system for Traditional Chinese as used */ - /* in Taiwan and Hong Kong. */ - /* */ - /* FT_ENCODING_WANSUNG :: */ - /* Corresponds to the Korean encoding system known as Wansung. */ - /* For more information see */ - /* `http://www.microsoft.com/typography/unicode/949.txt'. */ - /* */ - /* FT_ENCODING_JOHAB :: */ - /* The Korean standard character set (KS C-5601-1992), which */ - /* corresponds to MS Windows code page 1361. This character set */ - /* includes all possible Hangeul character combinations. */ - /* */ - /* FT_ENCODING_ADOBE_LATIN_1 :: */ - /* Corresponds to a Latin-1 encoding as defined in a Type 1 */ - /* Postscript font. It is limited to 256 character codes. */ - /* */ - /* FT_ENCODING_ADOBE_STANDARD :: */ - /* Corresponds to the Adobe Standard encoding, as found in Type 1, */ - /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ - /* codes. */ - /* */ - /* FT_ENCODING_ADOBE_EXPERT :: */ - /* Corresponds to the Adobe Expert encoding, as found in Type 1, */ - /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ - /* codes. */ - /* */ - /* FT_ENCODING_ADOBE_CUSTOM :: */ - /* Corresponds to a custom encoding, as found in Type 1, CFF, and */ - /* OpenType/CFF fonts. It is limited to 256 character codes. */ - /* */ - /* FT_ENCODING_APPLE_ROMAN :: */ - /* Corresponds to the 8-bit Apple roman encoding. Many TrueType and */ - /* OpenType fonts contain a charmap for this encoding, since older */ - /* versions of Mac OS are able to use it. */ - /* */ - /* FT_ENCODING_OLD_LATIN_2 :: */ - /* This value is deprecated and was never used nor reported by */ - /* FreeType. Don't use or test for it. */ - /* */ - /* FT_ENCODING_MS_SJIS :: */ - /* Same as FT_ENCODING_SJIS. Deprecated. */ - /* */ - /* FT_ENCODING_MS_GB2312 :: */ - /* Same as FT_ENCODING_GB2312. Deprecated. */ - /* */ - /* FT_ENCODING_MS_BIG5 :: */ - /* Same as FT_ENCODING_BIG5. Deprecated. */ - /* */ - /* FT_ENCODING_MS_WANSUNG :: */ - /* Same as FT_ENCODING_WANSUNG. Deprecated. */ - /* */ - /* FT_ENCODING_MS_JOHAB :: */ - /* Same as FT_ENCODING_JOHAB. Deprecated. */ - /* */ - /* <Note> */ - /* By default, FreeType automatically synthetizes a Unicode charmap */ - /* for Postscript fonts, using their glyph names dictionaries. */ - /* However, it also reports the encodings defined explicitly in the */ - /* font file, for the cases when they are needed, with the Adobe */ - /* values as well. */ - /* */ - /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ - /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ - /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out which */ - /* encoding is really present. If, for example, the `cs_registry' */ - /* field is `KOI8' and the `cs_encoding' field is `R', the font is */ - /* encoded in KOI8-R. */ - /* */ - /* FT_ENCODING_NONE is always set (with a single exception) by the */ - /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ - /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ - /* which encoding is really present. For example, */ - /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ - /* Russian). */ - /* */ - /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ - /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ - /* FT_ENCODING_APPLE_ROMAN). */ - /* */ - /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function c */ - /* @FT_Get_CMap_Language_ID to query the Mac language ID which may be */ - /* needed to be able to distinguish Apple encoding variants. See */ - /* */ - /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */ - /* */ - /* to get an idea how to do that. Basically, if the language ID is 0, */ - /* 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 ), - - FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), - FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ), - - FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ), - FT_ENC_TAG( FT_ENCODING_GB2312, 'g', 'b', ' ', ' ' ), - FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ), - FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ), - FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ), - - /* for backwards compatibility */ - FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, - FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312, - FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, - FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, - FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, - - FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ), - FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ), - FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ), - FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ), - - FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ), - - FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) - - } FT_Encoding; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_encoding_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated; use the corresponding @FT_Encoding */ - /* values instead. */ - /* */ -#define ft_encoding_none FT_ENCODING_NONE -#define ft_encoding_unicode FT_ENCODING_UNICODE -#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL -#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1 -#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2 -#define ft_encoding_sjis FT_ENCODING_SJIS -#define ft_encoding_gb2312 FT_ENCODING_GB2312 -#define ft_encoding_big5 FT_ENCODING_BIG5 -#define ft_encoding_wansung FT_ENCODING_WANSUNG -#define ft_encoding_johab FT_ENCODING_JOHAB - -#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD -#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT -#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM -#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_CharMapRec */ - /* */ - /* <Description> */ - /* The base charmap structure. */ - /* */ - /* <Fields> */ - /* face :: A handle to the parent face object. */ - /* */ - /* encoding :: An @FT_Encoding tag identifying the charmap. Use */ - /* this with @FT_Select_Charmap. */ - /* */ - /* platform_id :: An ID number describing the platform for the */ - /* following encoding ID. This comes directly from */ - /* the TrueType specification and should be emulated */ - /* for other formats. */ - /* */ - /* encoding_id :: A platform specific encoding number. This also */ - /* comes from the TrueType specification and should be */ - /* emulated similarly. */ - /* */ - typedef struct FT_CharMapRec_ - { - FT_Face face; - FT_Encoding encoding; - FT_UShort platform_id; - FT_UShort encoding_id; - - } FT_CharMapRec; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* B A S E O B J E C T C L A S S E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Face_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an `FT_Face_InternalRec' structure, used to */ - /* model private data of a given @FT_Face object. */ - /* */ - /* This structure might change between releases of FreeType 2 and is */ - /* not generally available to client applications. */ - /* */ - typedef struct FT_Face_InternalRec_* FT_Face_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_FaceRec */ - /* */ - /* <Description> */ - /* FreeType root face class structure. A face object models 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 font file. */ - /* */ - /* face_index :: The index of the face in the font file. It */ - /* is set to 0 if there is only one face in */ - /* the font file. */ - /* */ - /* face_flags :: A set of bit flags that give important */ - /* information about the face; see */ - /* @FT_FACE_FLAG_XXX for the details. */ - /* */ - /* style_flags :: A set of bit flags indicating the style of */ - /* the face; see @FT_STYLE_FLAG_XXX for the */ - /* details. */ - /* */ - /* 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. */ - /* */ - /* family_name :: The face's family name. This is an ASCII */ - /* string, usually in English, which describes */ - /* the typeface's family (like `Times New */ - /* Roman', `Bodoni', `Garamond', etc). This */ - /* is a least common denominator used to list */ - /* fonts. Some formats (TrueType & OpenType) */ - /* provide localized and Unicode versions of */ - /* this string. Applications should use the */ - /* format specific interface to access them. */ - /* */ - /* style_name :: The face's style name. This is an ASCII */ - /* string, usually in English, which describes */ - /* the typeface's style (like `Italic', */ - /* `Bold', `Condensed', etc). Not all font */ - /* formats provide a style name, so this field */ - /* is optional, and can be set to NULL. As */ - /* for `family_name', some formats provide */ - /* localized 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. */ - /* */ - /* 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 `maximal */ - /* ascender', and `bbox.yMin' as the `minimal */ - /* descender'. Only relevant for scalable */ - /* formats. */ - /* */ - /* units_per_EM :: The number of font units per EM square for */ - /* this face. This is typically 2048 for */ - /* TrueType fonts, 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 */ - /* usually negative. Only relevant for */ - /* scalable formats. */ - /* */ - /* height :: The height is the vertical distance */ - /* between two consecutive baselines, */ - /* expressed in font units. It is always */ - /* positive. Only relevant for scalable */ - /* formats. */ - /* */ - /* max_advance_width :: The maximal advance width, in font units, */ - /* for all glyphs in this face. This can be */ - /* used to make word wrapping computations */ - /* faster. Only relevant for scalable */ - /* formats. */ - /* */ - /* max_advance_height :: The maximal advance height, in font units, */ - /* for all glyphs in this face. This is only */ - /* relevant for vertical layouts, and 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's the */ - /* center of the underlining stem. Only */ - /* relevant for scalable formats. */ - /* */ - /* underline_thickness :: The thickness, in font units, of the */ - /* underline for this face. Only relevant for */ - /* scalable formats. */ - /* */ - /* glyph :: The face's associated glyph slot(s). */ - /* */ - /* 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. */ - /* */ - typedef struct FT_FaceRec_ - { - FT_Long num_faces; - FT_Long face_index; - - FT_Long face_flags; - FT_Long style_flags; - - FT_Long num_glyphs; - - FT_String* family_name; - FT_String* style_name; - - FT_Int num_fixed_sizes; - FT_Bitmap_Size* available_sizes; - - FT_Int num_charmaps; - FT_CharMap* charmaps; - - FT_Generic generic; - - /*# The following member variables (down to `underline_thickness') */ - /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */ - /*# for bitmap fonts. */ - FT_BBox bbox; - - FT_UShort units_per_EM; - FT_Short ascender; - FT_Short descender; - FT_Short height; - - FT_Short max_advance_width; - FT_Short max_advance_height; - - FT_Short underline_position; - FT_Short underline_thickness; - - FT_GlyphSlot glyph; - FT_Size size; - FT_CharMap charmap; - - /*@private begin */ - - FT_Driver driver; - FT_Memory memory; - FT_Stream stream; - - FT_ListRec sizes_list; - - FT_Generic autohint; - void* extensions; - - FT_Face_Internal internal; - - /*@private end */ - - } FT_FaceRec; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_FACE_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit flags used in the `face_flags' field of the */ - /* @FT_FaceRec structure. They inform client applications of */ - /* properties of the corresponding face. */ - /* */ - /* <Values> */ - /* FT_FACE_FLAG_SCALABLE :: */ - /* Indicates that the face contains outline glyphs. This doesn't */ - /* prevent bitmap strikes, i.e., a face can have both this and */ - /* and @FT_FACE_FLAG_FIXED_SIZES set. */ - /* */ - /* FT_FACE_FLAG_FIXED_SIZES :: */ - /* Indicates that the face contains bitmap strikes. See also the */ - /* `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec. */ - /* */ - /* FT_FACE_FLAG_FIXED_WIDTH :: */ - /* Indicates that the face contains fixed-width characters (like */ - /* Courier, Lucido, MonoType, etc.). */ - /* */ - /* FT_FACE_FLAG_SFNT :: */ - /* Indicates that the face uses the `sfnt' storage scheme. For */ - /* now, this means TrueType and OpenType. */ - /* */ - /* FT_FACE_FLAG_HORIZONTAL :: */ - /* Indicates that the face contains horizontal glyph metrics. This */ - /* should be set for all common formats. */ - /* */ - /* FT_FACE_FLAG_VERTICAL :: */ - /* Indicates that the face contains vertical glyph metrics. This */ - /* is only available in some formats, not all of them. */ - /* */ - /* FT_FACE_FLAG_KERNING :: */ - /* Indicates that the face contains kerning information. If set, */ - /* the kerning distance can be retrieved through the function */ - /* @FT_Get_Kerning. Otherwise the function always return the */ - /* vector (0,0). Note that FreeType doesn't handle kerning data */ - /* from the `GPOS' table (as present in some OpenType fonts). */ - /* */ - /* FT_FACE_FLAG_FAST_GLYPHS :: */ - /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */ - /* */ - /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */ - /* Indicates that the font contains multiple masters and is capable */ - /* of interpolating between them. See the multiple-masters */ - /* specific API for details. */ - /* */ - /* FT_FACE_FLAG_GLYPH_NAMES :: */ - /* Indicates that the font contains glyph names that can be */ - /* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */ - /* fonts contain broken glyph name tables. Use the function */ - /* @FT_Has_PS_Glyph_Names when needed. */ - /* */ - /* FT_FACE_FLAG_EXTERNAL_STREAM :: */ - /* Used internally by FreeType to indicate that a face's stream was */ - /* provided by the client application and should not be destroyed */ - /* when @FT_Done_Face is called. Don't read or test this flag. */ - /* */ - /* FT_FACE_FLAG_HINTER :: */ - /* Set if 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. */ - /* */ -#define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) -#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) -#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) -#define FT_FACE_FLAG_SFNT ( 1L << 3 ) -#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 ) -#define FT_FACE_FLAG_VERTICAL ( 1L << 5 ) -#define FT_FACE_FLAG_KERNING ( 1L << 6 ) -#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 ) -#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 ) -#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 ) -#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) -#define FT_FACE_FLAG_HINTER ( 1L << 11 ) - - /* */ - - - /************************************************************************* - * - * @macro: - * FT_HAS_HORIZONTAL( face ) - * - * @description: - * A macro that returns true whenever a face object contains - * horizontal metrics (this is true for all font formats though). - * - * @also: - * @FT_HAS_VERTICAL can be used to check for vertical metrics. - * - */ -#define FT_HAS_HORIZONTAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) - - - /************************************************************************* - * - * @macro: - * FT_HAS_VERTICAL( face ) - * - * @description: - * A macro that returns true whenever a face object contains vertical - * metrics. - * - */ -#define FT_HAS_VERTICAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_VERTICAL ) - - - /************************************************************************* - * - * @macro: - * FT_HAS_KERNING( face ) - * - * @description: - * A macro that returns true whenever a face object contains kerning - * data that can be accessed with @FT_Get_Kerning. - * - */ -#define FT_HAS_KERNING( face ) \ - ( face->face_flags & FT_FACE_FLAG_KERNING ) - - - /************************************************************************* - * - * @macro: - * FT_IS_SCALABLE( face ) - * - * @description: - * A macro that returns true whenever a face object contains a scalable - * font face (true for TrueType, Type 1, 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 ) - * - * @description: - * A macro that returns true whenever a face object contains a font - * whose format is based on the SFNT storage scheme. This usually - * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded - * bitmap fonts. - * - * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and - * @FT_TRUETYPE_TABLES_H are available. - * - */ -#define FT_IS_SFNT( face ) \ - ( face->face_flags & FT_FACE_FLAG_SFNT ) - - - /************************************************************************* - * - * @macro: - * FT_IS_FIXED_WIDTH( face ) - * - * @description: - * A macro that returns true whenever a face object contains a font face - * that contains fixed-width (or `monospace', `fixed-pitch', etc.) - * glyphs. - * - */ -#define FT_IS_FIXED_WIDTH( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) - - - /************************************************************************* - * - * @macro: - * FT_HAS_FIXED_SIZES( face ) - * - * @description: - * A macro that returns true whenever a face object contains some - * embedded bitmaps. See the `available_sizes' field of the - * @FT_FaceRec structure. - * - */ -#define FT_HAS_FIXED_SIZES( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) - - /* */ - - - /************************************************************************* - * - * @macro: - * FT_HAS_FAST_GLYPHS( face ) - * - * @description: - * Deprecated. - * - */ -#define FT_HAS_FAST_GLYPHS( face ) 0 - - - /************************************************************************* - * - * @macro: - * FT_HAS_GLYPH_NAMES( face ) - * - * @description: - * A macro that returns true whenever a face object contains some glyph - * names that can be accessed through @FT_Get_Glyph_Name. - * - */ -#define FT_HAS_GLYPH_NAMES( face ) \ - ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) - - - /************************************************************************* - * - * @macro: - * FT_HAS_MULTIPLE_MASTERS( face ) - * - * @description: - * A macro that returns true whenever a face object contains some - * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H - * are then available to choose the exact design you want. - * - */ -#define FT_HAS_MULTIPLE_MASTERS( face ) \ - ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) - - - /*************************************************************************/ - /* */ - /* <Constant> */ - /* FT_STYLE_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit-flags used to indicate the style of a given face. */ - /* These are used in the `style_flags' field of @FT_FaceRec. */ - /* */ - /* <Values> */ - /* FT_STYLE_FLAG_ITALIC :: */ - /* Indicates that a given face is italicized. */ - /* */ - /* FT_STYLE_FLAG_BOLD :: */ - /* Indicates that a given face is bold. */ - /* */ -#define FT_STYLE_FLAG_ITALIC ( 1 << 0 ) -#define FT_STYLE_FLAG_BOLD ( 1 << 1 ) - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Size_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an `FT_Size_InternalRec' structure, used to */ - /* model private data of a given FT_Size object. */ - /* */ - typedef struct FT_Size_InternalRec_* FT_Size_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Size_Metrics */ - /* */ - /* <Description> */ - /* The size metrics structure 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 used 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 used 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. See */ - /* @FT_FaceRec for the details. */ - /* */ - /* descender :: The descender in 26.6 fractional pixels. See */ - /* @FT_FaceRec for the details. */ - /* */ - /* height :: The height in 26.6 fractional pixels. See */ - /* @FT_FaceRec for the details. */ - /* */ - /* max_advance :: The maximal advance width in 26.6 fractional */ - /* pixels. 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. */ - /* */ - /* Note that due to glyph hinting, these values might not be exact */ - /* for certain fonts. Thus 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. */ - /* */ - typedef struct FT_Size_Metrics_ - { - FT_UShort x_ppem; /* horizontal pixels per EM */ - FT_UShort y_ppem; /* vertical pixels per EM */ - - FT_Fixed x_scale; /* scaling values used to convert font */ - FT_Fixed y_scale; /* units to 26.6 fractional pixels */ - - FT_Pos ascender; /* ascender in 26.6 frac. pixels */ - FT_Pos descender; /* descender in 26.6 frac. pixels */ - FT_Pos height; /* text height in 26.6 frac. pixels */ - FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ - - } FT_Size_Metrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SizeRec */ - /* */ - /* <Description> */ - /* FreeType root size class structure. A size object models a face */ - /* object at a given size. */ - /* */ - /* <Fields> */ - /* face :: Handle to the parent face object. */ - /* */ - /* generic :: A typeless pointer, which is unused by the FreeType */ - /* library or any of its drivers. It can be used by */ - /* client applications to link their own data to each size */ - /* object. */ - /* */ - /* metrics :: Metrics for this size object. This field is read-only. */ - /* */ - typedef struct FT_SizeRec_ - { - FT_Face face; /* parent face object */ - FT_Generic generic; /* generic pointer for client uses */ - FT_Size_Metrics metrics; /* size metrics */ - FT_Size_Internal internal; - - } FT_SizeRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SubGlyph */ - /* */ - /* <Description> */ - /* The subglyph structure is an internal object used to describe */ - /* subglyphs (for example, in the case of composites). */ - /* */ - /* <Note> */ - /* The subglyph implementation is not part of the high-level API, */ - /* hence the forward structure declaration. */ - /* */ - /* 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. */ - /* */ - 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 which is unused by the */ - /* FreeType library or any of its drivers. It */ - /* can be used by client applications to link */ - /* their own data to each glyph slot object. */ - /* */ - /* metrics :: The metrics of the last loaded glyph in the */ - /* slot. The returned values depend on the last */ - /* load flags (see the @FT_Load_Glyph API */ - /* function) and can be expressed either in 26.6 */ - /* fractional pixels or font units. */ - /* */ - /* Note that even when the glyph image is */ - /* transformed, the metrics are not. */ - /* */ - /* linearHoriAdvance :: 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 is the transformed advance width for the */ - /* glyph. */ - /* */ - /* format :: This field indicates the format of the image */ - /* contained in the glyph slot. Typically */ - /* @FT_GLYPH_FORMAT_BITMAP, */ - /* @FT_GLYPH_FORMAT_OUTLINE, or */ - /* @FT_GLYPH_FORMAT_COMPOSITE, but others are */ - /* possible. */ - /* */ - /* bitmap :: This field is used as a bitmap descriptor */ - /* when the slot format is */ - /* @FT_GLYPH_FORMAT_BITMAP. Note that the */ - /* address and content of the bitmap buffer can */ - /* change between calls of @FT_Load_Glyph and a */ - /* few other functions. */ - /* */ - /* bitmap_left :: This is the bitmap's left bearing expressed */ - /* in integer pixels. Of course, this is only */ - /* valid if the format is */ - /* @FT_GLYPH_FORMAT_BITMAP. */ - /* */ - /* bitmap_top :: This is the bitmap's top bearing expressed in */ - /* integer pixels. Remember that this is the */ - /* distance from the baseline to the top-most */ - /* glyph scanline, upwards y-coordinates being */ - /* *positive*. */ - /* */ - /* outline :: The outline descriptor for the current glyph */ - /* image if its format is */ - /* @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is */ - /* loaded, `outline' can be transformed, */ - /* distorted, embolded, 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. */ - /* For now this is internal to FreeType. */ - /* */ - /* subglyphs :: An array of subglyph descriptors for */ - /* composite glyphs. There are `num_subglyphs' */ - /* elements in there. Currently internal to */ - /* FreeType. */ - /* */ - /* control_data :: Certain font drivers can also return the */ - /* control data for a given glyph image (e.g. */ - /* TrueType bytecode, Type 1 charstrings, etc.). */ - /* This field is a pointer to such data. */ - /* */ - /* control_len :: This is the length in bytes of the control */ - /* data. */ - /* */ - /* other :: Really wicked formats can use this pointer to */ - /* present their own glyph image to client */ - /* applications. Note that the application */ - /* needs to know about the image format. */ - /* */ - /* lsb_delta :: The difference between hinted and unhinted */ - /* left side bearing while autohinting is */ - /* active. Zero otherwise. */ - /* */ - /* rsb_delta :: The difference between hinted and unhinted */ - /* right side bearing while autohinting is */ - /* active. Zero otherwise. */ - /* */ - /* <Note> */ - /* If @FT_Load_Glyph is called with default flags (see */ - /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */ - /* its native format (e.g., an outline glyph for TrueType and Type 1 */ - /* formats). */ - /* */ - /* This image can later be converted into a bitmap by calling */ - /* @FT_Render_Glyph. This function finds the current renderer for */ - /* the native image's format then invokes it. */ - /* */ - /* The renderer is in charge of transforming the native image through */ - /* the slot's face transformation fields, then convert it into a */ - /* bitmap that is returned in `slot->bitmap'. */ - /* */ - /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ - /* to specify the position of the bitmap relative to the current pen */ - /* position (e.g., coordinates (0,0) on the baseline). Of course, */ - /* `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP. */ - /* */ - /* <Note> */ - /* Here a small pseudo code fragment which shows how to use */ - /* `lsb_delta' and `rsb_delta': */ - /* */ - /* { */ - /* FT_Pos origin_x = 0; */ - /* FT_Pos prev_rsb_delta = 0; */ - /* */ - /* */ - /* for all glyphs do */ - /* <compute kern between current and previous glyph and add it to */ - /* `origin_x'> */ - /* */ - /* <load glyph with `FT_Load_Glyph'> */ - /* */ - /* if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 ) */ - /* origin_x -= 64; */ - /* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */ - /* origin_x += 64; */ - /* */ - /* prev_rsb_delta = face->glyph->rsb_delta; */ - /* */ - /* <save glyph image, or render glyph, or ...> */ - /* */ - /* origin_x += face->glyph->advance.x; */ - /* endfor */ - /* } */ - /* */ - typedef struct FT_GlyphSlotRec_ - { - FT_Library library; - FT_Face face; - FT_GlyphSlot next; - FT_UInt reserved; /* retained for binary compatibility */ - FT_Generic generic; - - FT_Glyph_Metrics metrics; - FT_Fixed linearHoriAdvance; - FT_Fixed linearVertAdvance; - FT_Vector advance; - - FT_Glyph_Format format; - - FT_Bitmap bitmap; - FT_Int bitmap_left; - FT_Int bitmap_top; - - FT_Outline outline; - - FT_UInt num_subglyphs; - FT_SubGlyph subglyphs; - - void* control_data; - long control_len; - - FT_Pos lsb_delta; - FT_Pos rsb_delta; - - void* other; - - FT_Slot_Internal internal; - - } FT_GlyphSlotRec; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* F U N C T I O N S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Init_FreeType */ - /* */ - /* <Description> */ - /* 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. */ - /* */ - 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. */ - /* */ - 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. */ - /* */ - /* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */ - /* */ - /* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */ - /* */ - /* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */ - /* */ - /* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */ - /* */ - /* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */ - /* */ - /* <Note> */ - /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ - /* flags are mutually exclusive. */ - /* */ -#define FT_OPEN_MEMORY 0x1 -#define FT_OPEN_STREAM 0x2 -#define FT_OPEN_PATHNAME 0x4 -#define FT_OPEN_DRIVER 0x8 -#define FT_OPEN_PARAMS 0x10 - -#define ft_open_memory FT_OPEN_MEMORY /* deprecated */ -#define ft_open_stream FT_OPEN_STREAM /* deprecated */ -#define ft_open_pathname FT_OPEN_PATHNAME /* deprecated */ -#define ft_open_driver FT_OPEN_DRIVER /* deprecated */ -#define ft_open_params FT_OPEN_PARAMS /* deprecated */ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Parameter */ - /* */ - /* <Description> */ - /* A simple structure used to pass more or less generic parameters */ - /* to @FT_Open_Face. */ - /* */ - /* <Fields> */ - /* tag :: A four-byte identification tag. */ - /* */ - /* data :: A pointer to the parameter data. */ - /* */ - /* <Note> */ - /* The ID and function of parameters are driver-specific. */ - /* */ - typedef struct FT_Parameter_ - { - FT_ULong tag; - FT_Pointer data; - - } FT_Parameter; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Open_Args */ - /* */ - /* <Description> */ - /* A structure used to indicate how to open a new font file 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 to open */ - /* the face. If set to 0, 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' which */ - /* are tested in the following order by @FT_Open_Face: */ - /* */ - /* If the `FT_OPEN_MEMORY' bit is set, assume that this is a */ - /* memory file of `memory_size' bytes, located at `memory_address'. */ - /* The data are 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 backwards compatibility. With */ - /* other words, applications should treat them as read-only. */ - /* */ - typedef struct FT_Open_Args_ - { - FT_UInt flags; - const FT_Byte* memory_base; - FT_Long memory_size; - FT_String* pathname; - FT_Stream stream; - FT_Module driver; - FT_Int num_params; - FT_Parameter* params; - - } FT_Open_Args; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face */ - /* */ - /* <Description> */ - /* This function calls @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 :: The index of the face within the font. The first */ - /* face has index 0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. If `face_index' is */ - /* greater than or equal to zero, it must be non-NULL. */ - /* See @FT_Open_Face for more details. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face( FT_Library library, - const char* filepathname, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Memory_Face */ - /* */ - /* <Description> */ - /* This function calls @FT_Open_Face to open a font which 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 :: The index of the face within the font. The first */ - /* face has index 0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. If `face_index' is */ - /* greater than or equal to zero, it must be non-NULL. */ - /* See @FT_Open_Face for more details. */ - /* */ - /* <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, - FT_Long file_size, - FT_Long face_index, - 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 which must */ - /* be filled by the caller. */ - /* */ - /* face_index :: The index of the face within the font. The first */ - /* face has index 0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. If `face_index' is */ - /* greater than or equal to zero, it must be non-NULL. */ - /* See note below. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Unlike FreeType 1.x, this function automatically creates a glyph */ - /* slot for the face object which can be accessed directly through */ - /* `face->glyph'. */ - /* */ - /* FT_Open_Face can be used to quickly check whether the font */ - /* format of a given font resource is supported by FreeType. If the */ - /* `face_index' field is negative, the function's return value is 0 */ - /* if the font format is recognized, or non-zero otherwise; */ - /* the function returns a more or less empty face handle in `*aface' */ - /* (if `aface' isn't NULL). The only useful field in this special */ - /* case is `face->num_faces' which gives the number of faces within */ - /* the font file. After examination, the returned @FT_Face structure */ - /* should be deallocated with a call to @FT_Done_Face. */ - /* */ - /* Each new face object created with this function also owns a */ - /* default @FT_Size object, accessible as `face->size'. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Open_Face( FT_Library library, - const FT_Open_Args* args, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Attach_File */ - /* */ - /* <Description> */ - /* This function calls @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 which 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 attachments. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Attach_Stream( FT_Face face, - FT_Open_Args* parameters ); - - - /*************************************************************************/ - /* */ - /* <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. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Face( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Select_Size */ - /* */ - /* <Description> */ - /* Select a bitmap strike. */ - /* */ - /* <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. */ - /* */ - 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. */ - /* */ - /* <Values> */ - /* FT_SIZE_REQUEST_TYPE_NOMINAL :: */ - /* The nominal size. The `units_per_EM' field of @FT_FaceRec is */ - /* used to determine both scaling values. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_REAL_DIM :: */ - /* The real dimension. The sum of the the `Ascender' and (minus */ - /* of) the `Descender' fields of @FT_FaceRec are used to determine */ - /* both scaling values. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_BBOX :: */ - /* The font bounding box. The width and height of the `bbox' field */ - /* of @FT_FaceRec are used to determine the horizontal and vertical */ - /* scaling value, respectively. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_CELL :: */ - /* The `max_advance_width' field of @FT_FaceRec is used to */ - /* determine the horizontal scaling value; the vertical scaling */ - /* value is determined the same way as */ - /* @FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling */ - /* values are set to the smaller one. This type is useful if you */ - /* want to specify the font size for, say, a window of a given */ - /* dimension and 80x24 cells. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_SCALES :: */ - /* Specify the scaling values directly. */ - /* */ - /* <Note> */ - /* The above descriptions only apply to scalable formats. For bitmap */ - /* formats, the behaviour is up to the driver. */ - /* */ - /* See the note section of @FT_Size_Metrics if you wonder how size */ - /* requesting relates to scaling values. */ - /* */ - typedef enum FT_Size_Request_Type_ - { - FT_SIZE_REQUEST_TYPE_NOMINAL, - FT_SIZE_REQUEST_TYPE_REAL_DIM, - FT_SIZE_REQUEST_TYPE_BBOX, - FT_SIZE_REQUEST_TYPE_CELL, - FT_SIZE_REQUEST_TYPE_SCALES, - - FT_SIZE_REQUEST_TYPE_MAX - - } FT_Size_Request_Type; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Size_RequestRec */ - /* */ - /* <Description> */ - /* A structure used to model a size request. */ - /* */ - /* <Fields> */ - /* type :: See @FT_Size_Request_Type. */ - /* */ - /* width :: The desired width. */ - /* */ - /* height :: The desired height. */ - /* */ - /* horiResolution :: The horizontal resolution. If set to zero, */ - /* `width' is treated as a 26.6 fractional pixel */ - /* value. */ - /* */ - /* vertResolution :: The vertical resolution. If set to zero, */ - /* `height' is treated as a 26.6 fractional pixel */ - /* value. */ - /* */ - /* <Note> */ - /* If `width' is zero, then the horizontal scaling value is set */ - /* equal to the vertical scaling value, and vice versa. */ - /* */ - typedef struct FT_Size_RequestRec_ - { - FT_Size_Request_Type type; - FT_Long width; - FT_Long height; - FT_UInt horiResolution; - FT_UInt vertResolution; - - } FT_Size_RequestRec, *FT_Size_Request; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Request_Size */ - /* */ - /* <Description> */ - /* Resize the scale of the active @FT_Size object in a face. */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Input> */ - /* req :: A pointer to a @FT_Size_RequestRec. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Although drivers may select the bitmap strike matching the */ - /* request, you should not rely on this if you intend to select a */ - /* particular bitmap strike. Use @FT_Select_Size instead in that */ - /* case. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Request_Size( FT_Face face, - FT_Size_Request req ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Char_Size */ - /* */ - /* <Description> */ - /* This function calls @FT_Request_Size to request the nominal size */ - /* (in points). */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Input> */ - /* char_width :: The nominal width, in 26.6 fractional points. */ - /* */ - /* char_height :: The nominal height, in 26.6 fractional points. */ - /* */ - /* horz_resolution :: The horizontal resolution in dpi. */ - /* */ - /* vert_resolution :: The vertical resolution in dpi. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* If either the character width or height is zero, it is set equal */ - /* to the other value. */ - /* */ - /* If either the horizontal or vertical resolution is zero, it is set */ - /* equal to the other value. */ - /* */ - /* A character width or height smaller than 1pt is set to 1pt; if */ - /* both resolution values are zero, they are set to 72dpi. */ - /* */ - - FT_EXPORT( FT_Error ) - FT_Set_Char_Size( FT_Face face, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Pixel_Sizes */ - /* */ - /* <Description> */ - /* This function calls @FT_Request_Size to request the nominal size */ - /* (in pixels). */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object. */ - /* */ - /* <Input> */ - /* pixel_width :: The nominal width, in pixels. */ - /* */ - /* pixel_height :: The nominal height, in pixels. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Pixel_Sizes( FT_Face face, - FT_UInt pixel_width, - FT_UInt pixel_height ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Load_Glyph */ - /* */ - /* <Description> */ - /* A function used to load a single glyph into the glyph slot of a */ - /* face object. */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object where the glyph */ - /* is loaded. */ - /* */ - /* <Input> */ - /* glyph_index :: The index of the glyph in the font file. For */ - /* CID-keyed fonts (either in PS or in CFF format) */ - /* this argument specifies the CID value. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* @FT_LOAD_XXX constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The loaded glyph may be transformed. See @FT_Set_Transform for */ - /* the details. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Load_Glyph( FT_Face face, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Load_Char */ - /* */ - /* <Description> */ - /* A function used to load a single glyph into the glyph slot of a */ - /* face object, according to its character code. */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object where the glyph */ - /* is loaded. */ - /* */ - /* <Input> */ - /* char_code :: The glyph's character code, according to the */ - /* current charmap used in the face. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* @FT_LOAD_XXX constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Load_Char( FT_Face face, - FT_ULong char_code, - FT_Int32 load_flags ); - - - /************************************************************************* - * - * @enum: - * FT_LOAD_XXX - * - * @description: - * A list of bit-field constants used with @FT_Load_Glyph to indicate - * what kind of operations to perform during glyph loading. - * - * @values: - * FT_LOAD_DEFAULT :: - * Corresponding to 0, this value is used as the default glyph load - * operation. In this case, the following happens: - * - * 1. FreeType looks for a bitmap for the glyph corresponding to the - * face's current size. If one is found, the function returns. - * The bitmap data can be accessed from the glyph slot (see note - * below). - * - * 2. If no embedded bitmap is searched or found, FreeType looks for a - * scalable outline. If one is found, it is loaded from the font - * file, scaled to device pixels, then `hinted' to the pixel grid - * in order to optimize it. The outline data can be accessed from - * the glyph slot (see note below). - * - * Note that by default, the glyph loader doesn't render outlines into - * bitmaps. The following flags are used to modify this default - * behaviour to more specific and useful cases. - * - * FT_LOAD_NO_SCALE :: - * Don't scale the outline glyph loaded, but keep it in font units. - * - * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and - * unsets @FT_LOAD_RENDER. - * - * FT_LOAD_NO_HINTING :: - * Disable hinting. This generally generates `blurrier' bitmap glyph - * when the glyph is rendered in any of the anti-aliased modes. See - * also the note below. - * - * This flag is implied by @FT_LOAD_NO_SCALE. - * - * FT_LOAD_RENDER :: - * Call @FT_Render_Glyph after the glyph is loaded. By default, the - * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be - * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. - * - * This flag is unset by @FT_LOAD_NO_SCALE. - * - * FT_LOAD_NO_BITMAP :: - * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this - * flag. - * - * @FT_LOAD_NO_SCALE always sets this flag. - * - * FT_LOAD_VERTICAL_LAYOUT :: - * Load the glyph for vertical text layout. _Don't_ use it as it is - * problematic currently. - * - * FT_LOAD_FORCE_AUTOHINT :: - * Indicates that the auto-hinter is preferred over the font's native - * hinter. See also the note below. - * - * FT_LOAD_CROP_BITMAP :: - * Indicates that the font driver should crop the loaded bitmap glyph - * (i.e., remove all space around its black bits). Not all drivers - * implement this. - * - * FT_LOAD_PEDANTIC :: - * Indicates that the font driver should perform pedantic verifications - * during glyph loading. This is mostly used to detect broken glyphs - * in fonts. By default, FreeType tries to handle broken fonts also. - * - * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: - * Indicates that the font driver should ignore the global advance - * width defined in the font. By default, that value is used as the - * advance width for all glyphs when the face has - * @FT_FACE_FLAG_FIXED_WIDTH set. - * - * This flag exists for historical reasons (to support buggy CJK - * fonts). - * - * FT_LOAD_NO_RECURSE :: - * This flag is only used internally. It merely indicates that the - * font driver should not load composite glyphs recursively. Instead, - * it should set the `num_subglyph' and `subglyphs' values of the - * glyph slot accordingly, and set `glyph->format' to - * @FT_GLYPH_FORMAT_COMPOSITE. - * - * The description of sub-glyphs is not available to client - * applications for now. - * - * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. - * - * FT_LOAD_IGNORE_TRANSFORM :: - * Indicates that the transform matrix set by @FT_Set_Transform should - * be ignored. - * - * FT_LOAD_MONOCHROME :: - * This flag is used with @FT_LOAD_RENDER to indicate that you want to - * render an outline glyph to a 1-bit monochrome bitmap glyph, with - * 8 pixels packed into each byte of the bitmap data. - * - * Note that this has no effect on the hinting algorithm used. You - * should use @FT_LOAD_TARGET_MONO instead so that the - * monochrome-optimized hinting algorithm is used. - * - * FT_LOAD_LINEAR_DESIGN :: - * Indicates that the `linearHoriAdvance' and `linearVertAdvance' - * fields of @FT_GlyphSlotRec should be kept in font units. See - * @FT_GlyphSlotRec for details. - * - * FT_LOAD_NO_AUTOHINT :: - * Disable auto-hinter. See also the note below. - * - * @note: - * By default, hinting is enabled and the font's native hinter (see - * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can - * disable hinting by setting @FT_LOAD_NO_HINTING or change the - * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set - * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be - * used at all. - * - * Besides deciding which hinter to use, you can also decide which - * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. - */ -#define FT_LOAD_DEFAULT 0x0 -#define FT_LOAD_NO_SCALE 0x1 -#define FT_LOAD_NO_HINTING 0x2 -#define FT_LOAD_RENDER 0x4 -#define FT_LOAD_NO_BITMAP 0x8 -#define FT_LOAD_VERTICAL_LAYOUT 0x10 -#define FT_LOAD_FORCE_AUTOHINT 0x20 -#define FT_LOAD_CROP_BITMAP 0x40 -#define FT_LOAD_PEDANTIC 0x80 -#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH 0x200 -#define FT_LOAD_NO_RECURSE 0x400 -#define FT_LOAD_IGNORE_TRANSFORM 0x800 -#define FT_LOAD_MONOCHROME 0x1000 -#define FT_LOAD_LINEAR_DESIGN 0x2000 - - /* temporary hack! */ -#define FT_LOAD_SBITS_ONLY 0x4000 -#define FT_LOAD_NO_AUTOHINT 0x8000U - - /* */ - - - /************************************************************************** - * - * @enum: - * FT_LOAD_TARGET_XXX - * - * @description: - * A list of values that are used to select a specific hinting algorithm - * to use by the hinter. You should OR one of these values to your - * `load_flags' when calling @FT_Load_Glyph. - * - * Note that font's native hinters may ignore the hinting algorithm you - * have specified (e.g., the TrueType bytecode interpreter). You can set - * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. - * - * Also note that @FT_LOAD_TARGET_LIGHT is an exception, in that it - * always implies @FT_LOAD_FORCE_AUTOHINT. - * - * @values: - * FT_LOAD_TARGET_NORMAL :: - * This corresponds to the default hinting algorithm, optimized for - * standard gray-level rendering. For monochrome output, use - * @FT_LOAD_TARGET_MONO instead. - * - * FT_LOAD_TARGET_LIGHT :: - * A lighter hinting algorithm for non-monochrome modes. Many - * generated glyphs are more fuzzy but better resemble its original - * shape. A bit like rendering on Mac OS X. - * - * As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT. - * - * FT_LOAD_TARGET_MONO :: - * Strong hinting algorithm that should only be used for monochrome - * output. The result is probably unpleasant if the glyph is rendered - * in non-monochrome modes. - * - * FT_LOAD_TARGET_LCD :: - * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally - * decimated LCD displays. - * - * FT_LOAD_TARGET_LCD_V :: - * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically - * decimated LCD displays. - * - * @note: - * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your - * `load_flags'. They can't be ORed. - * - * If @FT_LOAD_RENDER is also set, the glyph is rendered in the - * corresponding mode (i.e., the mode which matches the used algorithm - * best) unless @FT_LOAD_MONOCHROME is set. - * - * You can use a hinting algorithm that doesn't correspond to the same - * rendering mode. As an example, it is possible to use the `light' - * hinting algorithm and have the results rendered in horizontal LCD - * pixel mode, with code like - * - * { - * FT_Load_Glyph( face, glyph_index, - * load_flags | FT_LOAD_TARGET_LIGHT ); - * - * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); - * } - */ - -#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) - -#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) -#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) -#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) -#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) -#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) - - - /* - * @macro: - * FT_LOAD_TARGET_MODE - * - * @description: - * Return the @FT_Render_Mode corresponding to a given - * @FT_LOAD_TARGET_XXX value. - */ - -#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) - - /* */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Transform */ - /* */ - /* <Description> */ - /* A function used to set the transformation that is applied to glyph */ - /* images when they are loaded into a glyph slot through */ - /* @FT_Load_Glyph. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the transformation's 2x2 matrix. Use 0 for */ - /* the identity matrix. */ - /* delta :: A pointer to the translation vector. Use 0 for the null */ - /* vector. */ - /* */ - /* <Note> */ - /* The transformation is only applied to scalable image formats after */ - /* the glyph has been loaded. It means that hinting is unaltered by */ - /* the transformation and is performed on the character size given in */ - /* the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. */ - /* */ - /* Note that this also transforms the `face.glyph.advance' field, but */ - /* *not* the values in `face.glyph.metrics'. */ - /* */ - FT_EXPORT( void ) - FT_Set_Transform( FT_Face face, - FT_Matrix* matrix, - FT_Vector* delta ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Render_Mode */ - /* */ - /* <Description> */ - /* An enumeration type that lists the render modes supported by */ - /* FreeType 2. Each mode corresponds to a specific type of scanline */ - /* conversion performed on the outline. */ - /* */ - /* For bitmap fonts the `bitmap->pixel_mode' field in the */ - /* @FT_GlyphSlotRec structure gives the format of the returned */ - /* bitmap. */ - /* */ - /* <Values> */ - /* FT_RENDER_MODE_NORMAL :: */ - /* This is the default render mode; it corresponds to 8-bit */ - /* anti-aliased bitmaps, using 256 levels of opacity. */ - /* */ - /* FT_RENDER_MODE_LIGHT :: */ - /* This is equivalent to @FT_RENDER_MODE_NORMAL. It is only */ - /* defined as a separate value because render modes are also used */ - /* indirectly to define hinting algorithm selectors. See */ - /* @FT_LOAD_TARGET_XXX for details. */ - /* */ - /* FT_RENDER_MODE_MONO :: */ - /* This mode corresponds to 1-bit bitmaps. */ - /* */ - /* FT_RENDER_MODE_LCD :: */ - /* This mode corresponds to horizontal RGB and BGR sub-pixel */ - /* displays, like LCD-screens. It produces 8-bit bitmaps that are */ - /* 3 times the width of the original glyph outline in pixels, and */ - /* which use the @FT_PIXEL_MODE_LCD mode. */ - /* */ - /* FT_RENDER_MODE_LCD_V :: */ - /* This mode corresponds to vertical RGB and BGR sub-pixel displays */ - /* (like PDA screens, rotated LCD displays, etc.). It produces */ - /* 8-bit bitmaps that are 3 times the height of the original */ - /* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ - /* */ - /* <Note> */ - /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph are */ - /* _not_ _filtered_ to reduce color-fringes. It is up to the caller */ - /* to perform this pass. */ - /* */ - typedef enum FT_Render_Mode_ - { - FT_RENDER_MODE_NORMAL = 0, - FT_RENDER_MODE_LIGHT, - FT_RENDER_MODE_MONO, - FT_RENDER_MODE_LCD, - FT_RENDER_MODE_LCD_V, - - FT_RENDER_MODE_MAX - - } FT_Render_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_render_mode_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated. Use the corresponding */ - /* @FT_Render_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */ - /* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */ - /* */ -#define ft_render_mode_normal FT_RENDER_MODE_NORMAL -#define ft_render_mode_mono FT_RENDER_MODE_MONO - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Render_Glyph */ - /* */ - /* <Description> */ - /* Convert a given glyph image to a bitmap. It does so by inspecting */ - /* the glyph image format, finding the relevant renderer, and */ - /* invoking it. */ - /* */ - /* <InOut> */ - /* slot :: A handle to the glyph slot containing the image to */ - /* convert. */ - /* */ - /* <Input> */ - /* render_mode :: This is the render mode used to render the glyph */ - /* image into a bitmap. See @FT_Render_Mode for a */ - /* list of possible values. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Render_Glyph( FT_GlyphSlot slot, - FT_Render_Mode render_mode ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Kerning_Mode */ - /* */ - /* <Description> */ - /* An enumeration used to specify which kerning values to return in */ - /* @FT_Get_Kerning. */ - /* */ - /* <Values> */ - /* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ - /* distances (value is 0). */ - /* */ - /* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ - /* distances. */ - /* */ - /* FT_KERNING_UNSCALED :: Return the kerning vector in original font */ - /* units. */ - /* */ - typedef enum FT_Kerning_Mode_ - { - FT_KERNING_DEFAULT = 0, - FT_KERNING_UNFITTED, - FT_KERNING_UNSCALED - - } FT_Kerning_Mode; - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_default */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_DEFAULT */ - /* instead. */ - /* */ -#define ft_kerning_default FT_KERNING_DEFAULT - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_unfitted */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_UNFITTED */ - /* instead. */ - /* */ -#define ft_kerning_unfitted FT_KERNING_UNFITTED - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_unscaled */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_UNSCALED */ - /* instead. */ - /* */ -#define ft_kerning_unscaled FT_KERNING_UNSCALED - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Kerning */ - /* */ - /* <Description> */ - /* Return the kerning vector between two glyphs of a same face. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* left_glyph :: The index of the left glyph in the kern pair. */ - /* */ - /* right_glyph :: The index of the right glyph in the kern pair. */ - /* */ - /* kern_mode :: See @FT_Kerning_Mode for more information. */ - /* Determines the scale and dimension of the returned */ - /* kerning vector. */ - /* */ - /* <Output> */ - /* akerning :: The kerning vector. This is either in font units */ - /* or in pixels (26.6 format) for scalable formats, */ - /* and in pixels for fixed-sizes formats. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only horizontal layouts (left-to-right & right-to-left) are */ - /* supported by this method. Other layouts, or more sophisticated */ - /* kernings, are out of the scope of this API function -- they can be */ - /* implemented through format-specific interfaces. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Kerning( FT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_UInt kern_mode, - FT_Vector *akerning ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Track_Kerning */ - /* */ - /* <Description> */ - /* Return the track kerning for a given face object at a given size. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* point_size :: The point size in 16.16 fractional points. */ - /* */ - /* degree :: The degree of tightness. */ - /* */ - /* <Output> */ - /* akerning :: The kerning in 16.16 fractional points. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Track_Kerning( FT_Face face, - FT_Fixed point_size, - FT_Int degree, - FT_Fixed* akerning ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Glyph_Name */ - /* */ - /* <Description> */ - /* Retrieve the ASCII name of a given glyph in a face. This only */ - /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns 1. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* glyph_index :: The glyph index. */ - /* */ - /* buffer_max :: The maximal number of bytes available in the */ - /* buffer. */ - /* */ - /* <Output> */ - /* buffer :: A pointer to a target buffer where the name is */ - /* copied to. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* An error is returned if the face doesn't provide glyph names or if */ - /* the glyph index is invalid. In all cases of failure, the first */ - /* byte of `buffer' is set to 0 to indicate an empty name. */ - /* */ - /* The glyph name is truncated to fit within the buffer if it is too */ - /* long. The returned string is always zero-terminated. */ - /* */ - /* This function is not compiled within the library if the config */ - /* macro `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is defined in */ - /* `include/freetype/config/ftoptions.h'. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Glyph_Name( FT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Postscript_Name */ - /* */ - /* <Description> */ - /* Retrieve the ASCII Postscript name of a given face, if available. */ - /* This only works with Postscript and TrueType fonts. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Return> */ - /* A pointer to the face's Postscript name. NULL if unavailable. */ - /* */ - /* <Note> */ - /* The returned pointer is owned by the face and is destroyed with */ - /* it. */ - /* */ - FT_EXPORT( const char* ) - FT_Get_Postscript_Name( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Select_Charmap */ - /* */ - /* <Description> */ - /* Select a given charmap by its encoding tag (as listed in */ - /* `freetype.h'). */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* encoding :: A handle to the selected encoding. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function returns an error if no charmap in the face */ - /* corresponds to the encoding queried here. */ - /* */ - /* Because many fonts contain more than a single cmap for Unicode */ - /* encoding, this function has some special code to select the one */ - /* which covers Unicode best. It is thus preferable to */ - /* @FT_Set_Charmap in this case. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Select_Charmap( FT_Face face, - FT_Encoding encoding ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Charmap */ - /* */ - /* <Description> */ - /* Select a given charmap for character code to glyph index mapping. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* charmap :: A handle to the selected charmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function returns an error if the charmap is not part of */ - /* the face (i.e., if it is not listed in the `face->charmaps' */ - /* table). */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Charmap( FT_Face face, - FT_CharMap charmap ); - - - /************************************************************************* - * - * @function: - * FT_Get_Charmap_Index - * - * @description: - * Retrieve index of a given charmap. - * - * @input: - * charmap :: - * A handle to a charmap. - * - * @return: - * The index into the array of character maps within the face to which - * `charmap' belongs. - * - */ - FT_EXPORT( FT_Int ) - FT_Get_Charmap_Index( FT_CharMap charmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Char_Index */ - /* */ - /* <Description> */ - /* Return the glyph index of a given character code. This function */ - /* uses a charmap object to do the mapping. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* charcode :: The character code. */ - /* */ - /* <Return> */ - /* The glyph index. 0 means `undefined character code'. */ - /* */ - /* <Note> */ - /* If you use FreeType to manipulate the contents of font files */ - /* directly, be aware that the glyph index returned by this function */ - /* doesn't always correspond to the internal indices used within */ - /* the file. This is done to ensure that value 0 always corresponds */ - /* to the `missing glyph'. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Char_Index( FT_Face face, - FT_ULong charcode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_First_Char */ - /* */ - /* <Description> */ - /* This function is used to return the first character code in the */ - /* current charmap of a given face. It also returns the */ - /* corresponding glyph index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Output> */ - /* agindex :: Glyph index of first character code. 0 if charmap is */ - /* empty. */ - /* */ - /* <Return> */ - /* The charmap's first character code. */ - /* */ - /* <Note> */ - /* You should use this function with @FT_Get_Next_Char to be able to */ - /* parse all character codes available in a given charmap. The code */ - /* should look like this: */ - /* */ - /* { */ - /* FT_ULong charcode; */ - /* FT_UInt gindex; */ - /* */ - /* */ - /* charcode = FT_Get_First_Char( face, &gindex ); */ - /* while ( gindex != 0 ) */ - /* { */ - /* ... do something with (charcode,gindex) pair ... */ - /* */ - /* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */ - /* } */ - /* } */ - /* */ - /* Note that `*agindex' is set to 0 if the charmap is empty. The */ - /* result itself can be 0 in two cases: if the charmap is empty or */ - /* when the value 0 is the first valid character code. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_First_Char( FT_Face face, - FT_UInt *agindex ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Next_Char */ - /* */ - /* <Description> */ - /* This function is used to return the next character code in the */ - /* current charmap of a given face following the value `char_code', */ - /* as well as the corresponding glyph index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* char_code :: The starting character code. */ - /* */ - /* <Output> */ - /* agindex :: Glyph index of first character code. 0 if charmap */ - /* is empty. */ - /* */ - /* <Return> */ - /* The charmap's next character code. */ - /* */ - /* <Note> */ - /* You should use this function with @FT_Get_First_Char to walk */ - /* over all character codes available in a given charmap. See the */ - /* note for this function for a simple code example. */ - /* */ - /* Note that `*agindex' is set to 0 when there are no more codes in */ - /* the charmap. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_Next_Char( FT_Face face, - FT_ULong char_code, - FT_UInt *agindex ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Name_Index */ - /* */ - /* <Description> */ - /* Return the glyph index of a given glyph name. This function uses */ - /* driver specific objects to do the translation. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* glyph_name :: The glyph name. */ - /* */ - /* <Return> */ - /* The glyph index. 0 means `undefined character code'. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Name_Index( FT_Face face, - FT_String* glyph_name ); - - - /************************************************************************* - * - * @macro: - * FT_SUBGLYPH_FLAG_XXX - * - * @description: - * A list of constants used to describe subglyphs. Please refer to the - * TrueType specification for the meaning of the various flags. - * - * @values: - * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: - * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: - * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: - * FT_SUBGLYPH_FLAG_SCALE :: - * FT_SUBGLYPH_FLAG_XY_SCALE :: - * FT_SUBGLYPH_FLAG_2X2 :: - * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: - * - */ -#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 -#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 -#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 -#define FT_SUBGLYPH_FLAG_SCALE 8 -#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 -#define FT_SUBGLYPH_FLAG_2X2 0x80 -#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 - - - /************************************************************************* - * - * @func: - * FT_Get_SubGlyph_Info - * - * @description: - * Retrieve a description of a given subglyph. Only use it if - * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE, or an error is - * returned. - * - * @input: - * glyph :: - * The source glyph slot. - * - * sub_index :: - * The index of subglyph. Must be less than `glyph->num_subglyphs'. - * - * @output: - * p_index :: - * The glyph index of the subglyph. - * - * p_flags :: - * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. - * - * p_arg1 :: - * The subglyph's first argument (if any). - * - * p_arg2 :: - * The subglyph's second argument (if any). - * - * p_transform :: - * The subglyph transformation (if any). - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be - * interpreted depending on the flags returned in `*p_flags'. See the - * TrueType specification for details. - * - */ - FT_EXPORT( FT_Error ) - FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, - FT_UInt sub_index, - FT_Int *p_index, - FT_UInt *p_flags, - FT_Int *p_arg1, - FT_Int *p_arg2, - FT_Matrix *p_transform ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /* <Title> */ - /* Computations */ - /* */ - /* <Abstract> */ - /* Crunching fixed numbers and vectors. */ - /* */ - /* <Description> */ - /* This section contains various functions used to perform */ - /* computations on 16.16 fixed-float numbers or 2d vectors. */ - /* */ - /* <Order> */ - /* FT_MulDiv */ - /* FT_MulFix */ - /* FT_DivFix */ - /* FT_RoundFix */ - /* FT_CeilFix */ - /* FT_FloorFix */ - /* FT_Vector_Transform */ - /* FT_Matrix_Multiply */ - /* FT_Matrix_Invert */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_MulDiv */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation `(a*b)/c' */ - /* with maximal accuracy (it uses a 64-bit intermediate integer */ - /* whenever necessary). */ - /* */ - /* This function isn't necessarily as fast as some processor specific */ - /* operations, but is at least completely portable. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. */ - /* c :: The divisor. */ - /* */ - /* <Return> */ - /* The result of `(a*b)/c'. This function never traps when trying to */ - /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ - /* on the signs of `a' and `b'. */ - /* */ - FT_EXPORT( FT_Long ) - FT_MulDiv( FT_Long a, - FT_Long b, - FT_Long c ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_MulFix */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation */ - /* `(a*b)/0x10000' with maximal accuracy. Most of the time this is */ - /* used to multiply a given value by a 16.16 fixed float factor. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. Use a 16.16 factor here whenever */ - /* possible (see note below). */ - /* */ - /* <Return> */ - /* The result of `(a*b)/0x10000'. */ - /* */ - /* <Note> */ - /* This function has been optimized for the case where the absolute */ - /* value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */ - /* As this happens mainly when scaling from notional units to */ - /* fractional pixels in FreeType, it resulted in noticeable speed */ - /* improvements between versions 2.x and 1.x. */ - /* */ - /* As a conclusion, always try to place a 16.16 factor as the */ - /* _second_ argument of this function; this can make a great */ - /* difference. */ - /* */ - FT_EXPORT( FT_Long ) - FT_MulFix( FT_Long a, - FT_Long b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_DivFix */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation */ - /* `(a*0x10000)/b' with maximal accuracy. Most of the time, this is */ - /* used to divide a given value by a 16.16 fixed float factor. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. Use a 16.16 factor here whenever */ - /* possible (see note below). */ - /* */ - /* <Return> */ - /* The result of `(a*0x10000)/b'. */ - /* */ - /* <Note> */ - /* The optimization for FT_DivFix() is simple: If (a << 16) fits in */ - /* 32 bits, then the division is computed directly. Otherwise, we */ - /* use a specialized version of @FT_MulDiv. */ - /* */ - FT_EXPORT( FT_Long ) - FT_DivFix( FT_Long a, - FT_Long b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_RoundFix */ - /* */ - /* <Description> */ - /* A very simple function used to round a 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number to be rounded. */ - /* */ - /* <Return> */ - /* The result of `(a + 0x8000) & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_RoundFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_CeilFix */ - /* */ - /* <Description> */ - /* A very simple function used to compute the ceiling function of a */ - /* 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number for which the ceiling function is to be computed. */ - /* */ - /* <Return> */ - /* The result of `(a + 0x10000 - 1) & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_CeilFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_FloorFix */ - /* */ - /* <Description> */ - /* A very simple function used to compute the floor function of a */ - /* 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number for which the floor function is to be computed. */ - /* */ - /* <Return> */ - /* The result of `a & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_FloorFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Vector_Transform */ - /* */ - /* <Description> */ - /* Transform a single vector through a 2x2 matrix. */ - /* */ - /* <InOut> */ - /* vector :: The target vector to transform. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the source 2x2 matrix. */ - /* */ - /* <Note> */ - /* The result is undefined if either `vector' or `matrix' is invalid. */ - /* */ - FT_EXPORT( void ) - FT_Vector_Transform( FT_Vector* vec, - const FT_Matrix* matrix ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* version */ - /* */ - /* <Title> */ - /* FreeType Version */ - /* */ - /* <Abstract> */ - /* Functions and macros related to FreeType versions. */ - /* */ - /* <Description> */ - /* Note that those functions and macros are of limited use because */ - /* even a new release of FreeType with only documentation changes */ - /* increases the version number. */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @enum: - * FREETYPE_XXX - * - * @description: - * These three macros identify the FreeType source code version. - * Use @FT_Library_Version to access them at runtime. - * - * @values: - * FREETYPE_MAJOR :: The major version number. - * FREETYPE_MINOR :: The minor version number. - * FREETYPE_PATCH :: The patch level. - * - * @note: - * The version number of FreeType if built as a dynamic link library - * with the `libtool' package is _not_ controlled by these three - * macros. - */ -#define FREETYPE_MAJOR 2 -#define FREETYPE_MINOR 3 -#define FREETYPE_PATCH 5 - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Library_Version */ - /* */ - /* <Description> */ - /* Return the version of the FreeType library being used. This is */ - /* useful when dynamically linking to the library, since one cannot */ - /* use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and */ - /* @FREETYPE_PATCH. */ - /* */ - /* <Input> */ - /* library :: A source library handle. */ - /* */ - /* <Output> */ - /* amajor :: The major version number. */ - /* */ - /* aminor :: The minor version number. */ - /* */ - /* apatch :: The patch version number. */ - /* */ - /* <Note> */ - /* The reason why this function takes a `library' argument is because */ - /* certain programs implement library initialization in a custom way */ - /* that doesn't use @FT_Init_FreeType. */ - /* */ - /* In such cases, the library version might not be available before */ - /* the library object has been created. */ - /* */ - FT_EXPORT( void ) - FT_Library_Version( FT_Library library, - FT_Int *amajor, - FT_Int *aminor, - FT_Int *apatch ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_CheckTrueTypePatents */ - /* */ - /* <Description> */ - /* Parse all bytecode instructions of a TrueType font file to check */ - /* whether any of the patented opcodes are used. This is only useful */ - /* if you want to be able to use the unpatented hinter with */ - /* fonts that do *not* use these opcodes. */ - /* */ - /* Note that this function parses *all* glyph instructions in the */ - /* font file, which may be slow. */ - /* */ - /* <Input> */ - /* face :: A face handle. */ - /* */ - /* <Return> */ - /* 1 if this is a TrueType font that uses one of the patented */ - /* opcodes, 0 otherwise. */ - /* */ - /* <Since> */ - /* 2.3.5 */ - /* */ - FT_EXPORT( FT_Bool ) - FT_Face_CheckTrueTypePatents( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_SetUnpatentedHinting */ - /* */ - /* <Description> */ - /* Enable or disable the unpatented hinter for a given face. */ - /* Only enable it if you have determined that the face doesn't */ - /* use any patented opcodes (see @FT_Face_CheckTrueTypePatents). */ - /* */ - /* <Input> */ - /* face :: A face handle. */ - /* */ - /* value :: New boolean setting. */ - /* */ - /* <Return> */ - /* The old setting value. This will always be false if this is not */ - /* a SFNT font, or if the unpatented hinter is not compiled in this */ - /* instance of the library. */ - /* */ - /* <Since> */ - /* 2.3.5 */ - /* */ - FT_EXPORT( FT_Bool ) - FT_Face_SetUnpatentedHinting( FT_Face face, - FT_Bool value ); - - /* */ - - -FT_END_HEADER - -#endif /* __FREETYPE_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftbbox.h b/CMU462/deps/freetype/include/freetype2/freetype/ftbbox.h deleted file mode 100755 index 5f79c32..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftbbox.h +++ /dev/null @@ -1,94 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbbox.h */ -/* */ -/* FreeType exact bbox computation (specification). */ -/* */ -/* Copyright 1996-2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This component has a _single_ role: to compute exact outline bounding */ - /* boxes. */ - /* */ - /* It is separated from the rest of the engine for various technical */ - /* reasons. It may well be integrated in `ftoutln' later. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTBBOX_H__ -#define __FTBBOX_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_BBox */ - /* */ - /* <Description> */ - /* Computes the exact bounding box of an outline. This is slower */ - /* than computing the control box. However, it uses an advanced */ - /* algorithm which returns _very_ quickly when the two boxes */ - /* coincide. Otherwise, the outline Bézier arcs are walked over to */ - /* extract their extrema. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source outline. */ - /* */ - /* <Output> */ - /* abbox :: The outline's exact bounding box. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Get_BBox( FT_Outline* outline, - FT_BBox *abbox ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTBBOX_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftbdf.h b/CMU462/deps/freetype/include/freetype2/freetype/ftbdf.h deleted file mode 100755 index 9555694..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftbdf.h +++ /dev/null @@ -1,200 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbdf.h */ -/* */ -/* FreeType API for accessing BDF-specific strings (specification). */ -/* */ -/* Copyright 2002, 2003, 2004, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTBDF_H__ -#define __FTBDF_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* bdf_fonts */ - /* */ - /* <Title> */ - /* BDF Files */ - /* */ - /* <Abstract> */ - /* BDF specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of BDF specific functions. */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @enum: - * FT_PropertyType - * - * @description: - * A list of BDF property types. - * - * @values: - * BDF_PROPERTY_TYPE_NONE :: - * Value 0 is used to indicate a missing property. - * - * BDF_PROPERTY_TYPE_ATOM :: - * Property is a string atom. - * - * BDF_PROPERTY_TYPE_INTEGER :: - * Property is a 32-bit signed integer. - * - * BDF_PROPERTY_TYPE_CARDINAL :: - * Property is a 32-bit unsigned integer. - */ - typedef enum BDF_PropertyType_ - { - BDF_PROPERTY_TYPE_NONE = 0, - BDF_PROPERTY_TYPE_ATOM = 1, - BDF_PROPERTY_TYPE_INTEGER = 2, - BDF_PROPERTY_TYPE_CARDINAL = 3 - - } BDF_PropertyType; - - - /********************************************************************** - * - * @type: - * BDF_Property - * - * @description: - * A handle to a @BDF_PropertyRec structure to model a given - * BDF/PCF property. - */ - typedef struct BDF_PropertyRec_* BDF_Property; - - - /********************************************************************** - * - * @struct: - * BDF_PropertyRec - * - * @description: - * This structure models a given BDF/PCF property. - * - * @fields: - * type :: - * The property type. - * - * u.atom :: - * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. - * - * u.integer :: - * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. - * - * u.cardinal :: - * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. - */ - typedef struct BDF_PropertyRec_ - { - BDF_PropertyType type; - union { - const char* atom; - FT_Int32 integer; - FT_UInt32 cardinal; - - } u; - - } BDF_PropertyRec; - - - /********************************************************************** - * - * @function: - * FT_Get_BDF_Charset_ID - * - * @description: - * Retrieves a BDF font character set identity, according to - * the BDF specification. - * - * @input: - * face :: - * A handle to the input face. - * - * @output: - * acharset_encoding :: - * Charset encoding, as a C string, owned by the face. - * - * acharset_registry :: - * Charset registry, as a C string, owned by the face. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function only works with BDF faces, returning an error otherwise. - */ - FT_EXPORT( FT_Error ) - FT_Get_BDF_Charset_ID( FT_Face face, - const char* *acharset_encoding, - const char* *acharset_registry ); - - - /********************************************************************** - * - * @function: - * FT_Get_BDF_Property - * - * @description: - * Retrieves a BDF property from a BDF or PCF font file. - * - * @input: - * face :: A handle to the input face. - * - * name :: The property name. - * - * @output: - * aproperty :: The property. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function works with BDF _and_ PCF fonts. It returns an error - * otherwise. It also returns an error if the property is not in the - * font. - * - * In case of error, `aproperty->type' is always set to - * @BDF_PROPERTY_TYPE_NONE. - */ - FT_EXPORT( FT_Error ) - FT_Get_BDF_Property( FT_Face face, - const char* prop_name, - BDF_PropertyRec *aproperty ); - - /* */ - -FT_END_HEADER - -#endif /* __FTBDF_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftbitmap.h b/CMU462/deps/freetype/include/freetype2/freetype/ftbitmap.h deleted file mode 100755 index 337d888..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftbitmap.h +++ /dev/null @@ -1,206 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbitmap.h */ -/* */ -/* FreeType utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp */ -/* bitmaps into 8bpp format (specification). */ -/* */ -/* Copyright 2004, 2005, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTBITMAP_H__ -#define __FTBITMAP_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* bitmap_handling */ - /* */ - /* <Title> */ - /* Bitmap Handling */ - /* */ - /* <Abstract> */ - /* Handling FT_Bitmap objects. */ - /* */ - /* <Description> */ - /* This section contains functions for converting FT_Bitmap objects. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Bitmap_New */ - /* */ - /* <Description> */ - /* Initialize a pointer to an @FT_Bitmap structure. */ - /* */ - /* <InOut> */ - /* abitmap :: A pointer to the bitmap structure. */ - /* */ - FT_EXPORT( void ) - FT_Bitmap_New( FT_Bitmap *abitmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Bitmap_Copy */ - /* */ - /* <Description> */ - /* Copies an bitmap into another one. */ - /* */ - /* <Input> */ - /* library :: A handle to a library object. */ - /* */ - /* source :: A handle to the source bitmap. */ - /* */ - /* <Output> */ - /* target :: A handle to the target bitmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Bitmap_Copy( FT_Library library, - const FT_Bitmap *source, - FT_Bitmap *target); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Bitmap_Embolden */ - /* */ - /* <Description> */ - /* Embolden a bitmap. The new bitmap will be about `xStrength' */ - /* pixels wider and `yStrength' pixels higher. The left and bottom */ - /* borders are kept unchanged. */ - /* */ - /* <Input> */ - /* library :: A handle to a library object. */ - /* */ - /* xStrength :: How strong the glyph is emboldened horizontally. */ - /* Expressed in 26.6 pixel format. */ - /* */ - /* yStrength :: How strong the glyph is emboldened vertically. */ - /* Expressed in 26.6 pixel format. */ - /* */ - /* <InOut> */ - /* bitmap :: A handle to the target bitmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The current implementation restricts `xStrength' to be less than */ - /* or equal to 8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */ - /* */ - /* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */ - /* you should call `FT_GlyphSlot_Own_Bitmap' on the slot first. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Bitmap_Embolden( FT_Library library, - FT_Bitmap* bitmap, - FT_Pos xStrength, - FT_Pos yStrength ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Bitmap_Convert */ - /* */ - /* <Description> */ - /* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, or 8bpp to a */ - /* bitmap object with depth 8bpp, making the number of used bytes per */ - /* line (a.k.a. the `pitch') a multiple of `alignment'. */ - /* */ - /* <Input> */ - /* library :: A handle to a library object. */ - /* */ - /* source :: The source bitmap. */ - /* */ - /* alignment :: The pitch of the bitmap is a multiple of this */ - /* parameter. Common values are 1, 2, or 4. */ - /* */ - /* <Output> */ - /* target :: The target bitmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* It is possible to call @FT_Bitmap_Convert multiple times without */ - /* calling @FT_Bitmap_Done (the memory is simply reallocated). */ - /* */ - /* Use @FT_Bitmap_Done to finally remove the bitmap object. */ - /* */ - /* The `library' argument is taken to have access to FreeType's */ - /* memory handling functions. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Bitmap_Convert( FT_Library library, - const FT_Bitmap *source, - FT_Bitmap *target, - FT_Int alignment ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Bitmap_Done */ - /* */ - /* <Description> */ - /* Destroy a bitmap object created with @FT_Bitmap_New. */ - /* */ - /* <Input> */ - /* library :: A handle to a library object. */ - /* */ - /* bitmap :: The bitmap object to be freed. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The `library' argument is taken to have access to FreeType's */ - /* memory handling functions. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Bitmap_Done( FT_Library library, - FT_Bitmap *bitmap ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTBITMAP_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftcache.h b/CMU462/deps/freetype/include/freetype2/freetype/ftcache.h deleted file mode 100755 index 721aa16..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftcache.h +++ /dev/null @@ -1,1110 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcache.h */ -/* */ -/* FreeType Cache subsystem (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.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 __FTCACHE_H__ -#define __FTCACHE_H__ - - -#include <ft2build.h> -#include FT_GLYPH_H - - -FT_BEGIN_HEADER - - - /************************************************************************* - * - * <Section> - * cache_subsystem - * - * <Title> - * Cache Sub-System - * - * <Abstract> - * How to cache face, size, and glyph data with FreeType 2. - * - * <Description> - * This section describes the FreeType 2 cache sub-system, which is used - * to limit the number of concurrently opened @FT_Face and @FT_Size - * objects, as well as caching information like character maps and glyph - * images while limiting their maximum memory usage. - * - * Note that all types and functions begin with the `FTC_' prefix. - * - * The cache is highly portable and thus doesn't know anything about the - * fonts installed on your system, or how to access them. This implies - * the following scheme: - * - * First, available or installed font faces are uniquely identified by - * @FTC_FaceID values, provided to the cache by the client. Note that - * the cache only stores and compares these values, and doesn't try to - * interpret them in any way. - * - * Second, the cache calls, only when needed, a client-provided function - * to convert a @FTC_FaceID into a new @FT_Face object. The latter is - * then completely managed by the cache, including its termination - * through @FT_Done_Face. - * - * Clients are free to map face IDs to anything else. The most simple - * usage is to associate them to a (pathname,face_index) pair that is - * used to call @FT_New_Face. However, more complex schemes are also - * possible. - * - * Note that for the cache to work correctly, the face ID values must be - * *persistent*, which means that the contents they point to should not - * change at runtime, or that their value should not become invalid. - * - * If this is unavoidable (e.g., when a font is uninstalled at runtime), - * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let - * the cache get rid of any references to the old @FTC_FaceID it may - * keep internally. Failure to do so will lead to incorrect behaviour - * or even crashes. - * - * To use the cache, start with calling @FTC_Manager_New to create a new - * @FTC_Manager object, which models a single cache instance. You can - * then look up @FT_Face and @FT_Size objects with - * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. - * - * If you want to use the charmap caching, call @FTC_CMapCache_New, then - * later use @FTC_CMapCache_Lookup to perform the equivalent of - * @FT_Get_Char_Index, only much faster. - * - * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then - * later use @FTC_ImageCache_Lookup to retrieve the corresponding - * @FT_Glyph objects from the cache. - * - * If you need lots of small bitmaps, it is much more memory efficient - * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This - * returns @FTC_SBitRec structures, which are used to store small - * bitmaps directly. (A small bitmap is one whose metrics and - * dimensions all fit into 8-bit integers). - * - * We hope to also provide a kerning cache in the near future. - * - * - * <Order> - * FTC_Manager - * FTC_FaceID - * FTC_Face_Requester - * - * FTC_Manager_New - * FTC_Manager_Reset - * FTC_Manager_Done - * FTC_Manager_LookupFace - * FTC_Manager_LookupSize - * FTC_Manager_RemoveFaceID - * - * FTC_Node - * FTC_Node_Unref - * - * FTC_ImageCache - * FTC_ImageCache_New - * FTC_ImageCache_Lookup - * - * FTC_SBit - * FTC_SBitCache - * FTC_SBitCache_New - * FTC_SBitCache_Lookup - * - * FTC_CMapCache - * FTC_CMapCache_New - * FTC_CMapCache_Lookup - * - *************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** BASIC TYPE DEFINITIONS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /************************************************************************* - * - * @type: FTC_FaceID - * - * @description: - * An opaque pointer type that is used to identity face objects. The - * contents of such objects is application-dependent. - * - * These pointers are typically used to point to a user-defined - * structure containing a font file path, and face index. - * - * @note: - * Never use NULL as a valid @FTC_FaceID. - * - * Face IDs are passed by the client to the cache manager, which calls, - * when needed, the @FTC_Face_Requester to translate them into new - * @FT_Face objects. - * - * If the content of a given face ID changes at runtime, or if the value - * becomes invalid (e.g., when uninstalling a font), you should - * immediately call @FTC_Manager_RemoveFaceID before any other cache - * function. - * - * Failure to do so will result in incorrect behaviour or even - * memory leaks and crashes. - */ - typedef struct FTC_FaceIDRec_* FTC_FaceID; - - - /************************************************************************ - * - * @functype: - * FTC_Face_Requester - * - * @description: - * A callback function provided by client applications. It is used by - * the cache manager to translate a given @FTC_FaceID into a new valid - * @FT_Face object, on demand. - * - * <Input> - * face_id :: - * The face ID to resolve. - * - * library :: - * A handle to a FreeType library object. - * - * req_data :: - * Application-provided request data (see note below). - * - * <Output> - * aface :: - * A new @FT_Face handle. - * - * <Return> - * FreeType error code. 0 means success. - * - * <Note> - * The third parameter `req_data' is the same as the one passed by the - * client when @FTC_Manager_New is called. - * - * The face requester should not perform funny things on the returned - * face object, like creating a new @FT_Size for it, or setting a - * transformation through @FT_Set_Transform! - */ - typedef FT_Error - (*FTC_Face_Requester)( FTC_FaceID face_id, - FT_Library library, - FT_Pointer request_data, - FT_Face* aface ); - - /* */ - -#define FT_POINTER_TO_ULONG( p ) ( (FT_ULong)(FT_Pointer)(p) ) - -#define FTC_FACE_ID_HASH( i ) \ - ((FT_UInt32)(( FT_POINTER_TO_ULONG( i ) >> 3 ) ^ \ - ( FT_POINTER_TO_ULONG( i ) << 7 ) ) ) - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CACHE MANAGER OBJECT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_Manager */ - /* */ - /* <Description> */ - /* This object corresponds to one instance of the cache-subsystem. */ - /* It is used to cache one or more @FT_Face objects, along with */ - /* corresponding @FT_Size objects. */ - /* */ - /* The manager intentionally limits the total number of opened */ - /* @FT_Face and @FT_Size objects to control memory usage. See the */ - /* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */ - /* */ - /* The manager is also used to cache `nodes' of various types while */ - /* limiting their total memory usage. */ - /* */ - /* All limitations are enforced by keeping lists of managed objects */ - /* in most-recently-used order, and flushing old nodes to make room */ - /* for new ones. */ - /* */ - typedef struct FTC_ManagerRec_* FTC_Manager; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_Node */ - /* */ - /* <Description> */ - /* An opaque handle to a cache node object. Each cache node is */ - /* reference-counted. A node with a count of 0 might be flushed */ - /* out of a full cache whenever a lookup request is performed. */ - /* */ - /* If you lookup nodes, you have the ability to `acquire' them, i.e., */ - /* to increment their reference count. This will prevent the node */ - /* from being flushed out of the cache until you explicitly `release' */ - /* it (see @FTC_Node_Unref). */ - /* */ - /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ - /* */ - typedef struct FTC_NodeRec_* FTC_Node; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_New */ - /* */ - /* <Description> */ - /* Creates a new cache manager. */ - /* */ - /* <Input> */ - /* library :: The parent FreeType library handle to use. */ - /* */ - /* max_faces :: Maximum number of opened @FT_Face objects managed by */ - /* this cache instance. Use 0 for defaults. */ - /* */ - /* max_sizes :: Maximum number of opened @FT_Size objects managed by */ - /* this cache instance. Use 0 for defaults. */ - /* */ - /* max_bytes :: Maximum number of bytes to use for cached data nodes. */ - /* Use 0 for defaults. Note that this value does not */ - /* account for managed @FT_Face and @FT_Size objects. */ - /* */ - /* requester :: An application-provided callback used to translate */ - /* face IDs into real @FT_Face objects. */ - /* */ - /* req_data :: A generic pointer that is passed to the requester */ - /* each time it is called (see @FTC_Face_Requester). */ - /* */ - /* <Output> */ - /* amanager :: A handle to a new manager object. 0 in case of */ - /* failure. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_New( FT_Library library, - FT_UInt max_faces, - FT_UInt max_sizes, - FT_ULong max_bytes, - FTC_Face_Requester requester, - FT_Pointer req_data, - FTC_Manager *amanager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_Reset */ - /* */ - /* <Description> */ - /* Empties a given cache manager. This simply gets rid of all the */ - /* currently cached @FT_Face and @FT_Size objects within the manager. */ - /* */ - /* <InOut> */ - /* manager :: A handle to the manager. */ - /* */ - FT_EXPORT( void ) - FTC_Manager_Reset( FTC_Manager manager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_Done */ - /* */ - /* <Description> */ - /* Destroys a given manager after emptying it. */ - /* */ - /* <Input> */ - /* manager :: A handle to the target cache manager object. */ - /* */ - FT_EXPORT( void ) - FTC_Manager_Done( FTC_Manager manager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_LookupFace */ - /* */ - /* <Description> */ - /* Retrieves the @FT_Face object that corresponds to a given face ID */ - /* through a cache manager. */ - /* */ - /* <Input> */ - /* manager :: A handle to the cache manager. */ - /* */ - /* face_id :: The ID of the face object. */ - /* */ - /* <Output> */ - /* aface :: A handle to the face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The returned @FT_Face object is always owned by the manager. You */ - /* should never try to discard it yourself. */ - /* */ - /* The @FT_Face object doesn't necessarily have a current size object */ - /* (i.e., face->size can be 0). If you need a specific `font size', */ - /* use @FTC_Manager_LookupSize instead. */ - /* */ - /* Never change the face's transformation matrix (i.e., never call */ - /* the @FT_Set_Transform function) on a returned face! If you need */ - /* to transform glyphs, do it yourself after glyph loading. */ - /* */ - /* When you perform a lookup, out-of-memory errors are detected */ - /* _within_ the lookup and force incremental flushes of the cache */ - /* until enough memory is released for the lookup to succeed. */ - /* */ - /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ - /* already been completely flushed, and still no memory was available */ - /* for the operation. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_LookupFace( FTC_Manager manager, - FTC_FaceID face_id, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_ScalerRec */ - /* */ - /* <Description> */ - /* A structure used to describe a given character size in either */ - /* pixels or points to the cache manager. See */ - /* @FTC_Manager_LookupSize. */ - /* */ - /* <Fields> */ - /* face_id :: The source face ID. */ - /* */ - /* width :: The character width. */ - /* */ - /* height :: The character height. */ - /* */ - /* pixel :: A Boolean. If 1, the `width' and `height' fields are */ - /* interpreted as integer pixel character sizes. */ - /* Otherwise, they are expressed as 1/64th of points. */ - /* */ - /* x_res :: Only used when `pixel' is value 0 to indicate the */ - /* horizontal resolution in dpi. */ - /* */ - /* y_res :: Only used when `pixel' is value 0 to indicate the */ - /* vertical resolution in dpi. */ - /* */ - /* <Note> */ - /* This type is mainly used to retrieve @FT_Size objects through the */ - /* cache manager. */ - /* */ - typedef struct FTC_ScalerRec_ - { - FTC_FaceID face_id; - FT_UInt width; - FT_UInt height; - FT_Int pixel; - FT_UInt x_res; - FT_UInt y_res; - - } FTC_ScalerRec, *FTC_Scaler; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_LookupSize */ - /* */ - /* <Description> */ - /* Retrieve the @FT_Size object that corresponds to a given */ - /* @FTC_ScalerRec pointer through a cache manager. */ - /* */ - /* <Input> */ - /* manager :: A handle to the cache manager. */ - /* */ - /* scaler :: A scaler handle. */ - /* */ - /* <Output> */ - /* asize :: A handle to the size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The returned @FT_Size object is always owned by the manager. You */ - /* should never try to discard it by yourself. */ - /* */ - /* You can access the parent @FT_Face object simply as `size->face' */ - /* if you need it. Note that this object is also owned by the */ - /* manager. */ - /* */ - /* <Note> */ - /* When you perform a lookup, out-of-memory errors are detected */ - /* _within_ the lookup and force incremental flushes of the cache */ - /* until enough memory is released for the lookup to succeed. */ - /* */ - /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ - /* already been completely flushed, and still no memory is available */ - /* for the operation. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_LookupSize( FTC_Manager manager, - FTC_Scaler scaler, - FT_Size *asize ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Node_Unref */ - /* */ - /* <Description> */ - /* Decrement a cache node's internal reference count. When the count */ - /* reaches 0, it is not destroyed but becomes eligible for subsequent */ - /* cache flushes. */ - /* */ - /* <Input> */ - /* node :: The cache node handle. */ - /* */ - /* manager :: The cache manager handle. */ - /* */ - FT_EXPORT( void ) - FTC_Node_Unref( FTC_Node node, - FTC_Manager manager ); - - - /************************************************************************* - * - * @function: - * FTC_Manager_RemoveFaceID - * - * @description: - * A special function used to indicate to the cache manager that - * a given @FTC_FaceID is no longer valid, either because its - * content changed, or because it was deallocated or uninstalled. - * - * @input: - * manager :: - * The cache manager handle. - * - * face_id :: - * The @FTC_FaceID to be removed. - * - * @note: - * This function flushes all nodes from the cache corresponding to this - * `face_id', with the exception of nodes with a non-null reference - * count. - * - * Such nodes are however modified internally so as to never appear - * in later lookups with the same `face_id' value, and to be immediately - * destroyed when released by all their users. - * - */ - FT_EXPORT( void ) - FTC_Manager_RemoveFaceID( FTC_Manager manager, - FTC_FaceID face_id ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - /************************************************************************* - * - * @type: - * FTC_CMapCache - * - * @description: - * An opaque handle used to model a charmap cache. This cache is to - * hold character codes -> glyph indices mappings. - * - */ - typedef struct FTC_CMapCacheRec_* FTC_CMapCache; - - - /************************************************************************* - * - * @function: - * FTC_CMapCache_New - * - * @description: - * Create a new charmap cache. - * - * @input: - * manager :: - * A handle to the cache manager. - * - * @output: - * acache :: - * A new cache handle. NULL in case of error. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * Like all other caches, this one will be destroyed with the cache - * manager. - * - */ - FT_EXPORT( FT_Error ) - FTC_CMapCache_New( FTC_Manager manager, - FTC_CMapCache *acache ); - - - /************************************************************************ - * - * @function: - * FTC_CMapCache_Lookup - * - * @description: - * Translate a character code into a glyph index, using the charmap - * cache. - * - * @input: - * cache :: - * A charmap cache handle. - * - * face_id :: - * The source face ID. - * - * cmap_index :: - * The index of the charmap in the source face. - * - * char_code :: - * The character code (in the corresponding charmap). - * - * @return: - * Glyph index. 0 means `no glyph'. - * - */ - FT_EXPORT( FT_UInt ) - FTC_CMapCache_Lookup( FTC_CMapCache cache, - FTC_FaceID face_id, - FT_Int cmap_index, - FT_UInt32 char_code ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** IMAGE CACHE OBJECT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /************************************************************************* - * - * @struct: - * FTC_ImageTypeRec - * - * @description: - * A structure used to model the type of images in a glyph cache. - * - * @fields: - * face_id :: - * The face ID. - * - * width :: - * The width in pixels. - * - * height :: - * The height in pixels. - * - * flags :: - * The load flags, as in @FT_Load_Glyph. - * - */ - typedef struct FTC_ImageTypeRec_ - { - FTC_FaceID face_id; - FT_Int width; - FT_Int height; - FT_Int32 flags; - - } FTC_ImageTypeRec; - - - /************************************************************************* - * - * @type: - * FTC_ImageType - * - * @description: - * A handle to an @FTC_ImageTypeRec structure. - * - */ - typedef struct FTC_ImageTypeRec_* FTC_ImageType; - - - /* */ - - -#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ - ( (d1)->face_id == (d2)->face_id && \ - (d1)->width == (d2)->width && \ - (d1)->flags == (d2)->flags ) - -#define FTC_IMAGE_TYPE_HASH( d ) \ - (FT_UFast)( FTC_FACE_ID_HASH( (d)->face_id ) ^ \ - ( (d)->width << 8 ) ^ (d)->height ^ \ - ( (d)->flags << 4 ) ) - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_ImageCache */ - /* */ - /* <Description> */ - /* A handle to an glyph image cache object. They are designed to */ - /* hold many distinct glyph images while not exceeding a certain */ - /* memory threshold. */ - /* */ - typedef struct FTC_ImageCacheRec_* FTC_ImageCache; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_New */ - /* */ - /* <Description> */ - /* Creates a new glyph image cache. */ - /* */ - /* <Input> */ - /* manager :: The parent manager for the image cache. */ - /* */ - /* <Output> */ - /* acache :: A handle to the new glyph image cache object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_New( FTC_Manager manager, - FTC_ImageCache *acache ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_Lookup */ - /* */ - /* <Description> */ - /* Retrieves a given glyph image from a glyph image cache. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source glyph image cache. */ - /* */ - /* type :: A pointer to a glyph image type descriptor. */ - /* */ - /* gindex :: The glyph index to retrieve. */ - /* */ - /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ - /* failure. */ - /* */ - /* anode :: Used to return the address of of the corresponding cache */ - /* node after incrementing its reference count (see note */ - /* below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The returned glyph is owned and managed by the glyph image cache. */ - /* Never try to transform or discard it manually! You can however */ - /* create a copy with @FT_Glyph_Copy and modify the new one. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the glyph image, after increasing its reference */ - /* count. This ensures that the node (as well as the @FT_Glyph) will */ - /* always be kept in the cache until you call @FTC_Node_Unref to */ - /* `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the @FT_Glyph could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_Lookup( FTC_ImageCache cache, - FTC_ImageType type, - FT_UInt gindex, - FT_Glyph *aglyph, - FTC_Node *anode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_LookupScaler */ - /* */ - /* <Description> */ - /* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */ - /* to specify the face ID and its size. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source glyph image cache. */ - /* */ - /* scaler :: A pointer to a scaler descriptor. */ - /* */ - /* load_flags :: The corresponding load flags. */ - /* */ - /* gindex :: The glyph index to retrieve. */ - /* */ - /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ - /* failure. */ - /* */ - /* anode :: Used to return the address of of the corresponding */ - /* cache node after incrementing its reference count */ - /* (see note below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The returned glyph is owned and managed by the glyph image cache. */ - /* Never try to transform or discard it manually! You can however */ - /* create a copy with @FT_Glyph_Copy and modify the new one. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the glyph image, after increasing its reference */ - /* count. This ensures that the node (as well as the @FT_Glyph) will */ - /* always be kept in the cache until you call @FTC_Node_Unref to */ - /* `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the @FT_Glyph could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_LookupScaler( FTC_ImageCache cache, - FTC_Scaler scaler, - FT_ULong load_flags, - FT_UInt gindex, - FT_Glyph *aglyph, - FTC_Node *anode ); - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_SBit */ - /* */ - /* <Description> */ - /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ - /* structure for details. */ - /* */ - typedef struct FTC_SBitRec_* FTC_SBit; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_SBitRec */ - /* */ - /* <Description> */ - /* A very compact structure used to describe a small glyph bitmap. */ - /* */ - /* <Fields> */ - /* width :: The bitmap width in pixels. */ - /* */ - /* height :: The bitmap height in pixels. */ - /* */ - /* left :: The horizontal distance from the pen position to the */ - /* left bitmap border (a.k.a. `left side bearing', or */ - /* `lsb'). */ - /* */ - /* top :: The vertical distance from the pen position (on the */ - /* baseline) to the upper bitmap border (a.k.a. `top */ - /* side bearing'). The distance is positive for upwards */ - /* Y coordinates. */ - /* */ - /* format :: The format of the glyph bitmap (monochrome or gray). */ - /* */ - /* max_grays :: Maximum gray level value (in the range 1 to 255). */ - /* */ - /* pitch :: The number of bytes per bitmap line. May be positive */ - /* or negative. */ - /* */ - /* xadvance :: The horizontal advance width in pixels. */ - /* */ - /* yadvance :: The vertical advance height in pixels. */ - /* */ - /* buffer :: A pointer to the bitmap pixels. */ - /* */ - typedef struct FTC_SBitRec_ - { - FT_Byte width; - FT_Byte height; - FT_Char left; - FT_Char top; - - FT_Byte format; - FT_Byte max_grays; - FT_Short pitch; - FT_Char xadvance; - FT_Char yadvance; - - FT_Byte* buffer; - - } FTC_SBitRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_SBitCache */ - /* */ - /* <Description> */ - /* A handle to a small bitmap cache. These are special cache objects */ - /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ - /* much more efficient way than the traditional glyph image cache */ - /* implemented by @FTC_ImageCache. */ - /* */ - typedef struct FTC_SBitCacheRec_* FTC_SBitCache; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_New */ - /* */ - /* <Description> */ - /* Creates a new cache to store small glyph bitmaps. */ - /* */ - /* <Input> */ - /* manager :: A handle to the source cache manager. */ - /* */ - /* <Output> */ - /* acache :: A handle to the new sbit cache. NULL in case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_New( FTC_Manager manager, - FTC_SBitCache *acache ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_Lookup */ - /* */ - /* <Description> */ - /* Looks up a given small glyph bitmap in a given sbit cache and */ - /* `lock' it to prevent its flushing from the cache until needed. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source sbit cache. */ - /* */ - /* type :: A pointer to the glyph image type descriptor. */ - /* */ - /* gindex :: The glyph index. */ - /* */ - /* <Output> */ - /* sbit :: A handle to a small bitmap descriptor. */ - /* */ - /* anode :: Used to return the address of of the corresponding cache */ - /* node after incrementing its reference count (see note */ - /* below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The small bitmap descriptor and its bit buffer are owned by the */ - /* cache and should never be freed by the application. They might */ - /* as well disappear from memory on the next cache lookup, so don't */ - /* treat them as persistent data. */ - /* */ - /* The descriptor's `buffer' field is set to 0 to indicate a missing */ - /* glyph bitmap. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the bitmap, after increasing its reference count. */ - /* This ensures that the node (as well as the image) will always be */ - /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the bitmap could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_Lookup( FTC_SBitCache cache, - FTC_ImageType type, - FT_UInt gindex, - FTC_SBit *sbit, - FTC_Node *anode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_LookupScaler */ - /* */ - /* <Description> */ - /* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */ - /* to specify the face ID and its size. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source sbit cache. */ - /* */ - /* scaler :: A pointer to the scaler descriptor. */ - /* */ - /* load_flags :: The corresponding load flags. */ - /* */ - /* gindex :: The glyph index. */ - /* */ - /* <Output> */ - /* sbit :: A handle to a small bitmap descriptor. */ - /* */ - /* anode :: Used to return the address of of the corresponding */ - /* cache node after incrementing its reference count */ - /* (see note below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The small bitmap descriptor and its bit buffer are owned by the */ - /* cache and should never be freed by the application. They might */ - /* as well disappear from memory on the next cache lookup, so don't */ - /* treat them as persistent data. */ - /* */ - /* The descriptor's `buffer' field is set to 0 to indicate a missing */ - /* glyph bitmap. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the bitmap, after increasing its reference count. */ - /* This ensures that the node (as well as the image) will always be */ - /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the bitmap could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_LookupScaler( FTC_SBitCache cache, - FTC_Scaler scaler, - FT_ULong load_flags, - FT_UInt gindex, - FTC_SBit *sbit, - FTC_Node *anode ); - - - /* */ - -#ifdef FT_CONFIG_OPTION_OLD_INTERNALS - - /*@***********************************************************************/ - /* */ - /* <Struct> */ - /* FTC_FontRec */ - /* */ - /* <Description> */ - /* A simple structure used to describe a given `font' to the cache */ - /* manager. Note that a `font' is the combination of a given face */ - /* with a given character size. */ - /* */ - /* <Fields> */ - /* face_id :: The ID of the face to use. */ - /* */ - /* pix_width :: The character width in integer pixels. */ - /* */ - /* pix_height :: The character height in integer pixels. */ - /* */ - typedef struct FTC_FontRec_ - { - FTC_FaceID face_id; - FT_UShort pix_width; - FT_UShort pix_height; - - } FTC_FontRec; - - - /* */ - - -#define FTC_FONT_COMPARE( f1, f2 ) \ - ( (f1)->face_id == (f2)->face_id && \ - (f1)->pix_width == (f2)->pix_width && \ - (f1)->pix_height == (f2)->pix_height ) - -#define FTC_FONT_HASH( f ) \ - (FT_UInt32)( FTC_FACE_ID_HASH((f)->face_id) ^ \ - ((f)->pix_width << 8) ^ \ - ((f)->pix_height) ) - - typedef FTC_FontRec* FTC_Font; - - - FT_EXPORT( FT_Error ) - FTC_Manager_Lookup_Face( FTC_Manager manager, - FTC_FaceID face_id, - FT_Face *aface ); - - FT_EXPORT( FT_Error ) - FTC_Manager_Lookup_Size( FTC_Manager manager, - FTC_Font font, - FT_Face *aface, - FT_Size *asize ); - -#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ - - - /* */ - -FT_END_HEADER - -#endif /* __FTCACHE_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftchapters.h b/CMU462/deps/freetype/include/freetype2/freetype/ftchapters.h deleted file mode 100755 index bd812c8..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftchapters.h +++ /dev/null @@ -1,100 +0,0 @@ -/***************************************************************************/ -/* */ -/* This file defines the structure of the FreeType reference. */ -/* It is used by the python script which generates the HTML files. */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* general_remarks */ -/* */ -/* <Title> */ -/* General Remarks */ -/* */ -/* <Sections> */ -/* user_allocation */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* core_api */ -/* */ -/* <Title> */ -/* Core API */ -/* */ -/* <Sections> */ -/* version */ -/* basic_types */ -/* base_interface */ -/* glyph_management */ -/* mac_specific */ -/* sizes_management */ -/* header_file_macros */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* format_specific */ -/* */ -/* <Title> */ -/* Format-Specific API */ -/* */ -/* <Sections> */ -/* multiple_masters */ -/* truetype_tables */ -/* type1_tables */ -/* sfnt_names */ -/* bdf_fonts */ -/* pfr_fonts */ -/* winfnt_fonts */ -/* font_formats */ -/* gasp_table */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* cache_subsystem */ -/* */ -/* <Title> */ -/* Cache Sub-System */ -/* */ -/* <Sections> */ -/* cache_subsystem */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* support_api */ -/* */ -/* <Title> */ -/* Support API */ -/* */ -/* <Sections> */ -/* computations */ -/* list_processing */ -/* outline_processing */ -/* bitmap_handling */ -/* raster */ -/* glyph_stroker */ -/* system_interface */ -/* module_management */ -/* gzip */ -/* lzw */ -/* lcd_filtering */ -/* */ -/***************************************************************************/ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/fterrors.h b/CMU462/deps/freetype/include/freetype2/freetype/fterrors.h deleted file mode 100755 index 6600dad..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/fterrors.h +++ /dev/null @@ -1,206 +0,0 @@ -/***************************************************************************/ -/* */ -/* fterrors.h */ -/* */ -/* FreeType error code handling (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2004, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This special header file is used to define the handling of FT2 */ - /* enumeration constants. It can also be used to generate error message */ - /* strings with a small macro trick explained below. */ - /* */ - /* I - Error Formats */ - /* ----------------- */ - /* */ - /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ - /* defined in ftoption.h in order to make the higher byte indicate */ - /* the module where the error has happened (this is not compatible */ - /* with standard builds of FreeType 2). You can then use the macro */ - /* FT_ERROR_BASE macro to extract the generic error code from an */ - /* FT_Error value. */ - /* */ - /* */ - /* II - Error Message strings */ - /* -------------------------- */ - /* */ - /* The error definitions below are made through special macros that */ - /* allow client applications to build a table of error message strings */ - /* if they need it. The strings are not included in a normal build of */ - /* FreeType 2 to save space (most client applications do not use */ - /* them). */ - /* */ - /* To do so, you have to define the following macros before including */ - /* this file: */ - /* */ - /* FT_ERROR_START_LIST :: */ - /* This macro is called before anything else to define the start of */ - /* the error list. It is followed by several FT_ERROR_DEF calls */ - /* (see below). */ - /* */ - /* FT_ERROR_DEF( e, v, s ) :: */ - /* This macro is called to define one single error. */ - /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ - /* `v' is the error numerical value. */ - /* `s' is the corresponding error string. */ - /* */ - /* FT_ERROR_END_LIST :: */ - /* This macro ends the list. */ - /* */ - /* Additionally, you have to undefine __FTERRORS_H__ before #including */ - /* this file. */ - /* */ - /* Here is a simple example: */ - /* */ - /* { */ - /* #undef __FTERRORS_H__ */ - /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ - /* #define FT_ERROR_START_LIST { */ - /* #define FT_ERROR_END_LIST { 0, 0 } }; */ - /* */ - /* const struct */ - /* { */ - /* int err_code; */ - /* const char* err_msg; */ - /* } ft_errors[] = */ - /* */ - /* #include FT_ERRORS_H */ - /* } */ - /* */ - /*************************************************************************/ - - -#ifndef __FTERRORS_H__ -#define __FTERRORS_H__ - - - /* include module base error codes */ -#include FT_MODULE_ERRORS_H - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SETUP MACROS *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#undef FT_NEED_EXTERN_C - -#undef FT_ERR_XCAT -#undef FT_ERR_CAT - -#define FT_ERR_XCAT( x, y ) x ## y -#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) - - - /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ - /* By default, we use `FT_Err_'. */ - /* */ -#ifndef FT_ERR_PREFIX -#define FT_ERR_PREFIX FT_Err_ -#endif - - - /* FT_ERR_BASE is used as the base for module-specific errors. */ - /* */ -#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS - -#ifndef FT_ERR_BASE -#define FT_ERR_BASE FT_Mod_Err_Base -#endif - -#else - -#undef FT_ERR_BASE -#define FT_ERR_BASE 0 - -#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ - - - /* If FT_ERRORDEF is not defined, we need to define a simple */ - /* enumeration type. */ - /* */ -#ifndef FT_ERRORDEF - -#define FT_ERRORDEF( e, v, s ) e = v, -#define FT_ERROR_START_LIST enum { -#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; - -#ifdef __cplusplus -#define FT_NEED_EXTERN_C - extern "C" { -#endif - -#endif /* !FT_ERRORDEF */ - - - /* this macro is used to define an error */ -#define FT_ERRORDEF_( e, v, s ) \ - FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) - - /* this is only used for <module>_Err_Ok, which must be 0! */ -#define FT_NOERRORDEF_( e, v, s ) \ - FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) - - -#ifdef FT_ERROR_START_LIST - FT_ERROR_START_LIST -#endif - - - /* now include the error codes */ -#include FT_ERROR_DEFINITIONS_H - - -#ifdef FT_ERROR_END_LIST - FT_ERROR_END_LIST -#endif - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SIMPLE CLEANUP *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - -#ifdef FT_NEED_EXTERN_C - } -#endif - -#undef FT_ERROR_START_LIST -#undef FT_ERROR_END_LIST - -#undef FT_ERRORDEF -#undef FT_ERRORDEF_ -#undef FT_NOERRORDEF_ - -#undef FT_NEED_EXTERN_C -#undef FT_ERR_CONCAT -#undef FT_ERR_BASE - - /* FT_KEEP_ERR_PREFIX is needed for ftvalid.h */ -#ifndef FT_KEEP_ERR_PREFIX -#undef FT_ERR_PREFIX -#endif - -#endif /* __FTERRORS_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftgasp.h b/CMU462/deps/freetype/include/freetype2/freetype/ftgasp.h deleted file mode 100755 index 97cd330..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftgasp.h +++ /dev/null @@ -1,113 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgasp.h */ -/* */ -/* Access of TrueType's `gasp' table (specification). */ -/* */ -/* Copyright 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef _FT_GASP_H_ -#define _FT_GASP_H_ - -#include <ft2build.h> -#include FT_FREETYPE_H - - /*************************************************************************** - * - * @section: - * gasp_table - * - * @title: - * Gasp Table - * - * @abstract: - * Retrieving TrueType `gasp' table entries - * - * @description: - * The function @FT_Get_Gasp can be used to query a TrueType or OpenType - * font for specific entries in their `gasp' table, if any. This is - * mainly useful when implementing native TrueType hinting with the - * bytecode interpreter to duplicate the Windows text rendering results. - */ - - /************************************************************************* - * - * @enum: - * FT_GASP_XXX - * - * @description: - * A list of values and/or bit-flags returned by the @FT_Get_Gasp - * function. - * - * @values: - * FT_GASP_NO_TABLE :: - * This special value means that there is no GASP table in this face. - * It is up to the client to decide what to do. - * - * FT_GASP_DO_GRIDFIT :: - * Grid-fitting and hinting should be performed at the specified ppem. - * This *really* means TrueType bytecode interpretation. - * - * FT_GASP_DO_GRAY :: - * Anti-aliased rendering should be performed at the specified ppem. - * - * FT_GASP_SYMMETRIC_SMOOTHING :: - * Smoothing along multiple axes must be used with ClearType. - * - * FT_GASP_SYMMETRIC_GRIDFIT :: - * Grid-fitting must be used with ClearType's symmetric smoothing. - * - * @note: - * `ClearType' is Microsoft's implementation of LCD rendering, partly - * protected by patents. - * - * @since: - * 2.3.0 - */ -#define FT_GASP_NO_TABLE -1 -#define FT_GASP_DO_GRIDFIT 0x01 -#define FT_GASP_DO_GRAY 0x02 -#define FT_GASP_SYMMETRIC_SMOOTHING 0x08 -#define FT_GASP_SYMMETRIC_GRIDFIT 0x10 - - - /************************************************************************* - * - * @func: - * FT_Get_Gasp - * - * @description: - * Read the `gasp' table from a TrueType or OpenType font file and - * return the entry corresponding to a given character pixel size. - * - * @input: - * face :: The source face handle. - * ppem :: The vertical character pixel size. - * - * @return: - * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE is there is no - * `gasp' table in the face. - * - * @since: - * 2.3.0 - */ - FT_EXPORT( FT_Int ) - FT_Get_Gasp( FT_Face face, - FT_UInt ppem ); - -/* */ - -#endif /* _FT_GASP_H_ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftglyph.h b/CMU462/deps/freetype/include/freetype2/freetype/ftglyph.h deleted file mode 100755 index 08058da..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftglyph.h +++ /dev/null @@ -1,575 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftglyph.h */ -/* */ -/* FreeType convenience functions to handle glyphs (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file contains the definition of several convenience functions */ - /* that can be used by client applications to easily retrieve glyph */ - /* bitmaps and outlines from a given face. */ - /* */ - /* These functions should be optional if you are writing a font server */ - /* or text layout engine on top of FreeType. However, they are pretty */ - /* handy for many other simple uses of the library. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTGLYPH_H__ -#define __FTGLYPH_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* glyph_management */ - /* */ - /* <Title> */ - /* Glyph Management */ - /* */ - /* <Abstract> */ - /* Generic interface to manage individual glyph data. */ - /* */ - /* <Description> */ - /* This section contains definitions used to manage glyph data */ - /* through generic FT_Glyph objects. Each of them can contain a */ - /* bitmap, a vector outline, or even images in other formats. */ - /* */ - /*************************************************************************/ - - - /* forward declaration to a private type */ - typedef struct FT_Glyph_Class_ FT_Glyph_Class; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Glyph */ - /* */ - /* <Description> */ - /* Handle to an object used to model generic glyph images. It is a */ - /* pointer to the @FT_GlyphRec structure and can contain a glyph */ - /* bitmap or pointer. */ - /* */ - /* <Note> */ - /* Glyph objects are not owned by the library. You must thus release */ - /* them manually (through @FT_Done_Glyph) _before_ calling */ - /* @FT_Done_FreeType. */ - /* */ - typedef struct FT_GlyphRec_* FT_Glyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_GlyphRec */ - /* */ - /* <Description> */ - /* The root glyph structure contains a given glyph image plus its */ - /* advance width in 16.16 fixed float format. */ - /* */ - /* <Fields> */ - /* library :: A handle to the FreeType library object. */ - /* */ - /* clazz :: A pointer to the glyph's class. Private. */ - /* */ - /* format :: The format of the glyph's image. */ - /* */ - /* advance :: A 16.16 vector that gives the glyph's advance width. */ - /* */ - typedef struct FT_GlyphRec_ - { - FT_Library library; - const FT_Glyph_Class* clazz; - FT_Glyph_Format format; - FT_Vector advance; - - } FT_GlyphRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_BitmapGlyph */ - /* */ - /* <Description> */ - /* A handle to an object used to model a bitmap glyph image. This is */ - /* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */ - /* */ - typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_BitmapGlyphRec */ - /* */ - /* <Description> */ - /* A structure used for bitmap glyph images. This really is a */ - /* `sub-class' of @FT_GlyphRec. */ - /* */ - /* <Fields> */ - /* root :: The root @FT_Glyph fields. */ - /* */ - /* left :: The left-side bearing, i.e., the horizontal distance */ - /* from the current pen position to the left border of the */ - /* glyph bitmap. */ - /* */ - /* top :: The top-side bearing, i.e., the vertical distance from */ - /* the current pen position to the top border of the glyph */ - /* bitmap. This distance is positive for upwards-y! */ - /* */ - /* bitmap :: A descriptor for the bitmap. */ - /* */ - /* <Note> */ - /* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */ - /* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */ - /* the bitmap's contents easily. */ - /* */ - /* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */ - /* and is thus created and destroyed with it. */ - /* */ - typedef struct FT_BitmapGlyphRec_ - { - FT_GlyphRec root; - FT_Int left; - FT_Int top; - FT_Bitmap bitmap; - - } FT_BitmapGlyphRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_OutlineGlyph */ - /* */ - /* <Description> */ - /* A handle to an object used to model an outline glyph image. This */ - /* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */ - /* */ - typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_OutlineGlyphRec */ - /* */ - /* <Description> */ - /* A structure used for outline (vectorial) glyph images. This */ - /* really is a `sub-class' of @FT_GlyphRec. */ - /* */ - /* <Fields> */ - /* root :: The root @FT_Glyph fields. */ - /* */ - /* outline :: A descriptor for the outline. */ - /* */ - /* <Note> */ - /* You can typecast a @FT_Glyph to @FT_OutlineGlyph if you have */ - /* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */ - /* the outline's content easily. */ - /* */ - /* As the outline is extracted from a glyph slot, its coordinates are */ - /* expressed normally in 26.6 pixels, unless the flag */ - /* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */ - /* */ - /* The outline's tables are always owned by the object and are */ - /* destroyed with it. */ - /* */ - typedef struct FT_OutlineGlyphRec_ - { - FT_GlyphRec root; - FT_Outline outline; - - } FT_OutlineGlyphRec; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Glyph */ - /* */ - /* <Description> */ - /* A function used to extract a glyph image from a slot. */ - /* */ - /* <Input> */ - /* slot :: A handle to the source glyph slot. */ - /* */ - /* <Output> */ - /* aglyph :: A handle to the glyph object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Glyph( FT_GlyphSlot slot, - FT_Glyph *aglyph ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Copy */ - /* */ - /* <Description> */ - /* A function used to copy a glyph image. Note that the created */ - /* @FT_Glyph object must be released with @FT_Done_Glyph. */ - /* */ - /* <Input> */ - /* source :: A handle to the source glyph object. */ - /* */ - /* <Output> */ - /* target :: A handle to the target glyph object. 0 in case of */ - /* error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_Copy( FT_Glyph source, - FT_Glyph *target ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Transform */ - /* */ - /* <Description> */ - /* Transforms a glyph image if its format is scalable. */ - /* */ - /* <InOut> */ - /* glyph :: A handle to the target glyph object. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to a 2x2 matrix to apply. */ - /* */ - /* delta :: A pointer to a 2d vector to apply. Coordinates are */ - /* expressed in 1/64th of a pixel. */ - /* */ - /* <Return> */ - /* FreeType error code (if not 0, the glyph format is not scalable). */ - /* */ - /* <Note> */ - /* The 2x2 transformation matrix is also applied to the glyph's */ - /* advance vector. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_Transform( FT_Glyph glyph, - FT_Matrix* matrix, - FT_Vector* delta ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Glyph_BBox_Mode */ - /* */ - /* <Description> */ - /* The mode how the values of @FT_Glyph_Get_CBox are returned. */ - /* */ - /* <Values> */ - /* FT_GLYPH_BBOX_UNSCALED :: */ - /* Return unscaled font units. */ - /* */ - /* FT_GLYPH_BBOX_SUBPIXELS :: */ - /* Return unfitted 26.6 coordinates. */ - /* */ - /* FT_GLYPH_BBOX_GRIDFIT :: */ - /* Return grid-fitted 26.6 coordinates. */ - /* */ - /* FT_GLYPH_BBOX_TRUNCATE :: */ - /* Return coordinates in integer pixels. */ - /* */ - /* FT_GLYPH_BBOX_PIXELS :: */ - /* Return grid-fitted pixel coordinates. */ - /* */ - typedef enum FT_Glyph_BBox_Mode_ - { - FT_GLYPH_BBOX_UNSCALED = 0, - FT_GLYPH_BBOX_SUBPIXELS = 0, - FT_GLYPH_BBOX_GRIDFIT = 1, - FT_GLYPH_BBOX_TRUNCATE = 2, - FT_GLYPH_BBOX_PIXELS = 3 - - } FT_Glyph_BBox_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_glyph_bbox_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated. Use the corresponding */ - /* @FT_Glyph_BBox_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_glyph_bbox_unscaled :: See @FT_GLYPH_BBOX_UNSCALED. */ - /* ft_glyph_bbox_subpixels :: See @FT_GLYPH_BBOX_SUBPIXELS. */ - /* ft_glyph_bbox_gridfit :: See @FT_GLYPH_BBOX_GRIDFIT. */ - /* ft_glyph_bbox_truncate :: See @FT_GLYPH_BBOX_TRUNCATE. */ - /* ft_glyph_bbox_pixels :: See @FT_GLYPH_BBOX_PIXELS. */ - /* */ -#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED -#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS -#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT -#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE -#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Get_CBox */ - /* */ - /* <Description> */ - /* Return a glyph's `control box'. The control box encloses all the */ - /* outline's points, including Bézier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ - /* which contains Bézier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ - /* and arcs in the outline. To get the latter, you can use the */ - /* `ftbbox' component which is dedicated to this single task. */ - /* */ - /* <Input> */ - /* glyph :: A handle to the source glyph object. */ - /* */ - /* mode :: The mode which indicates how to interpret the returned */ - /* bounding box values. */ - /* */ - /* <Output> */ - /* acbox :: The glyph coordinate bounding box. Coordinates are */ - /* expressed in 1/64th of pixels if it is grid-fitted. */ - /* */ - /* <Note> */ - /* Coordinates are relative to the glyph origin, using the Y-upwards */ - /* convention. */ - /* */ - /* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */ - /* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */ - /* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */ - /* is another name for this constant. */ - /* */ - /* Note that the maximum coordinates are exclusive, which means that */ - /* one can compute the width and height of the glyph image (be it in */ - /* integer or 26.6 pixels) as: */ - /* */ - /* { */ - /* width = bbox.xMax - bbox.xMin; */ - /* height = bbox.yMax - bbox.yMin; */ - /* } */ - /* */ - /* Note also that for 26.6 coordinates, if `bbox_mode' is set to */ - /* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */ - /* which corresponds to: */ - /* */ - /* { */ - /* bbox.xMin = FLOOR(bbox.xMin); */ - /* bbox.yMin = FLOOR(bbox.yMin); */ - /* bbox.xMax = CEILING(bbox.xMax); */ - /* bbox.yMax = CEILING(bbox.yMax); */ - /* } */ - /* */ - /* To get the bbox in pixel coordinates, set `bbox_mode' to */ - /* @FT_GLYPH_BBOX_TRUNCATE. */ - /* */ - /* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */ - /* to @FT_GLYPH_BBOX_PIXELS. */ - /* */ - FT_EXPORT( void ) - FT_Glyph_Get_CBox( FT_Glyph glyph, - FT_UInt bbox_mode, - FT_BBox *acbox ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_To_Bitmap */ - /* */ - /* <Description> */ - /* Converts a given glyph object to a bitmap glyph object. */ - /* */ - /* <InOut> */ - /* the_glyph :: A pointer to a handle to the target glyph. */ - /* */ - /* <Input> */ - /* render_mode :: An enumeration that describe how the data is */ - /* rendered. */ - /* */ - /* origin :: A pointer to a vector used to translate the glyph */ - /* image before rendering. Can be 0 (if no */ - /* translation). The origin is expressed in */ - /* 26.6 pixels. */ - /* */ - /* destroy :: A boolean that indicates that the original glyph */ - /* image should be destroyed by this function. It is */ - /* never destroyed in case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The glyph image is translated with the `origin' vector before */ - /* rendering. */ - /* */ - /* The first parameter is a pointer to an @FT_Glyph handle, that will */ - /* be replaced by this function. Typically, you would use (omitting */ - /* error handling): */ - /* */ - /* */ - /* { */ - /* FT_Glyph glyph; */ - /* FT_BitmapGlyph glyph_bitmap; */ - /* */ - /* */ - /* // load glyph */ - /* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */ - /* */ - /* // extract glyph image */ - /* error = FT_Get_Glyph( face->glyph, &glyph ); */ - /* */ - /* // convert to a bitmap (default render mode + destroy old) */ - /* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */ - /* { */ - /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT, */ - /* 0, 1 ); */ - /* if ( error ) // glyph unchanged */ - /* ... */ - /* } */ - /* */ - /* // access bitmap content by typecasting */ - /* glyph_bitmap = (FT_BitmapGlyph)glyph; */ - /* */ - /* // do funny stuff with it, like blitting/drawing */ - /* ... */ - /* */ - /* // discard glyph image (bitmap or not) */ - /* FT_Done_Glyph( glyph ); */ - /* } */ - /* */ - /* */ - /* This function does nothing if the glyph format isn't scalable. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, - FT_Render_Mode render_mode, - FT_Vector* origin, - FT_Bool destroy ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Glyph */ - /* */ - /* <Description> */ - /* Destroys a given glyph. */ - /* */ - /* <Input> */ - /* glyph :: A handle to the target glyph object. */ - /* */ - FT_EXPORT( void ) - FT_Done_Glyph( FT_Glyph glyph ); - - /* */ - - - /* other helpful functions */ - - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Matrix_Multiply */ - /* */ - /* <Description> */ - /* Performs the matrix operation `b = a*b'. */ - /* */ - /* <Input> */ - /* a :: A pointer to matrix `a'. */ - /* */ - /* <InOut> */ - /* b :: A pointer to matrix `b'. */ - /* */ - /* <Note> */ - /* The result is undefined if either `a' or `b' is zero. */ - /* */ - FT_EXPORT( void ) - FT_Matrix_Multiply( const FT_Matrix* a, - FT_Matrix* b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Matrix_Invert */ - /* */ - /* <Description> */ - /* Inverts a 2x2 matrix. Returns an error if it can't be inverted. */ - /* */ - /* <InOut> */ - /* matrix :: A pointer to the target matrix. Remains untouched in */ - /* case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Matrix_Invert( FT_Matrix* matrix ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTGLYPH_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftgxval.h b/CMU462/deps/freetype/include/freetype2/freetype/ftgxval.h deleted file mode 100755 index c7ea861..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftgxval.h +++ /dev/null @@ -1,358 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgxval.h */ -/* */ -/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ -/* */ -/* Copyright 2004, 2005, 2006 by */ -/* Masatake YAMATO, Redhat K.K, */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -/***************************************************************************/ -/* */ -/* gxvalid is derived from both gxlayout module and otvalid module. */ -/* Development of gxlayout is supported by the Information-technology */ -/* Promotion Agency(IPA), Japan. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTGXVAL_H__ -#define __FTGXVAL_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* gx_validation */ - /* */ - /* <Title> */ - /* TrueTypeGX/AAT Validation */ - /* */ - /* <Abstract> */ - /* An API to validate TrueTypeGX/AAT tables. */ - /* */ - /* <Description> */ - /* This section contains the declaration of functions to validate */ - /* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */ - /* trak, prop, lcar). */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* */ - /* Warning: Use FT_VALIDATE_XXX to validate a table. */ - /* Following definitions are for gxvalid developers. */ - /* */ - /* */ - /*************************************************************************/ - -#define FT_VALIDATE_feat_INDEX 0 -#define FT_VALIDATE_mort_INDEX 1 -#define FT_VALIDATE_morx_INDEX 2 -#define FT_VALIDATE_bsln_INDEX 3 -#define FT_VALIDATE_just_INDEX 4 -#define FT_VALIDATE_kern_INDEX 5 -#define FT_VALIDATE_opbd_INDEX 6 -#define FT_VALIDATE_trak_INDEX 7 -#define FT_VALIDATE_prop_INDEX 8 -#define FT_VALIDATE_lcar_INDEX 9 -#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX - - - /************************************************************************* - * - * @macro: - * FT_VALIDATE_GX_LENGTH - * - * @description: - * The number of tables checked in this module. Use it as a parameter - * for the `table-length' argument of function @FT_TrueTypeGX_Validate. - */ -#define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1) - - /* */ - - /* Up to 0x1000 is used by otvalid. - Ox2xxx is reserved for feature OT extension. */ -#define FT_VALIDATE_GX_START 0x4000 -#define FT_VALIDATE_GX_BITFIELD( tag ) \ - ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) - - - /********************************************************************** - * - * @enum: - * FT_VALIDATE_GXXXX - * - * @description: - * A list of bit-field constants used with @FT_TrueTypeGX_Validate to - * indicate which TrueTypeGX/AAT Type tables should be validated. - * - * @values: - * FT_VALIDATE_feat :: - * Validate `feat' table. - * - * FT_VALIDATE_mort :: - * Validate `mort' table. - * - * FT_VALIDATE_morx :: - * Validate `morx' table. - * - * FT_VALIDATE_bsln :: - * Validate `bsln' table. - * - * FT_VALIDATE_just :: - * Validate `just' table. - * - * FT_VALIDATE_kern :: - * Validate `kern' table. - * - * FT_VALIDATE_opbd :: - * Validate `opbd' table. - * - * FT_VALIDATE_trak :: - * Validate `trak' table. - * - * FT_VALIDATE_prop :: - * Validate `prop' table. - * - * FT_VALIDATE_lcar :: - * Validate `lcar' table. - * - * FT_VALIDATE_GX :: - * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, - * opbd, trak, prop and lcar). - * - */ - -#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat ) -#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort ) -#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx ) -#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln ) -#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just ) -#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern ) -#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd ) -#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak ) -#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop ) -#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar ) - -#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \ - FT_VALIDATE_mort | \ - FT_VALIDATE_morx | \ - FT_VALIDATE_bsln | \ - FT_VALIDATE_just | \ - FT_VALIDATE_kern | \ - FT_VALIDATE_opbd | \ - FT_VALIDATE_trak | \ - FT_VALIDATE_prop | \ - FT_VALIDATE_lcar ) - - - /* */ - - /********************************************************************** - * - * @function: - * FT_TrueTypeGX_Validate - * - * @description: - * Validate various TrueTypeGX tables to assure that all offsets and - * indices are valid. The idea is that a higher-level library which - * actually does the text layout can access those tables without - * error checking (which can be quite time consuming). - * - * @input: - * face :: - * A handle to the input face. - * - * validation_flags :: - * A bit field which specifies the tables to be validated. See - * @FT_VALIDATE_GXXXX for possible values. - * - * table_length :: - * The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH - * should be passed. - * - * @output: - * tables :: - * The array where all validated sfnt tables are stored. - * The array itself must be allocated by a client. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function only works with TrueTypeGX fonts, returning an error - * otherwise. - * - * After use, the application should deallocate the buffers pointed to by - * each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value - * indicates that the table either doesn't exist in the font, the - * application hasn't asked for validation, or the validator doesn't have - * the ability to validate the sfnt table. - */ - FT_EXPORT( FT_Error ) - FT_TrueTypeGX_Validate( FT_Face face, - FT_UInt validation_flags, - FT_Bytes tables[FT_VALIDATE_GX_LENGTH], - FT_UInt table_length ); - - - /* */ - - /********************************************************************** - * - * @function: - * FT_TrueTypeGX_Free - * - * @description: - * Free the buffer allocated by TrueTypeGX validator. - * - * @input: - * face :: - * A handle to the input face. - * - * table :: - * The pointer to the buffer allocated by - * @FT_TrueTypeGX_Validate. - * - * @note: - * This function must be used to free the buffer allocated by - * @FT_TrueTypeGX_Validate only. - */ - FT_EXPORT( void ) - FT_TrueTypeGX_Free( FT_Face face, - FT_Bytes table ); - - - /* */ - - /********************************************************************** - * - * @enum: - * FT_VALIDATE_CKERNXXX - * - * @description: - * A list of bit-field constants used with @FT_ClassicKern_Validate - * to indicate the classic kern dialect or dialects. If the selected - * type doesn't fit, @FT_ClassicKern_Validate regards the table as - * invalid. - * - * @values: - * FT_VALIDATE_MS :: - * Handle the `kern' table as a classic Microsoft kern table. - * - * FT_VALIDATE_APPLE :: - * Handle the `kern' table as a classic Apple kern table. - * - * FT_VALIDATE_CKERN :: - * Handle the `kern' as either classic Apple or Microsoft kern table. - */ -#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 ) -#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 ) - -#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) - - - /* */ - - /********************************************************************** - * - * @function: - * FT_ClassicKern_Validate - * - * @description: - * Validate classic (16bit format) kern table to assure that the offsets - * and indices are valid. The idea is that a higher-level library which - * actually does the text layout can access those tables without error - * checking (which can be quite time consuming). - * - * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both - * the new 32bit format and the classic 16bit format, while - * FT_ClassicKern_Validate only supports the classic 16bit format. - * - * @input: - * face :: - * A handle to the input face. - * - * validation_flags :: - * A bit field which specifies the dialect to be validated. See - * @FT_VALIDATE_CKERNXXX for possible values. - * - * @output: - * ckern_table :: - * A pointer to the kern table. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * After use, the application should deallocate the buffers pointed to by - * `ckern_table', by calling @FT_ClassicKern_Free. A NULL value - * indicates that the table doesn't exist in the font. - */ - FT_EXPORT( FT_Error ) - FT_ClassicKern_Validate( FT_Face face, - FT_UInt validation_flags, - FT_Bytes *ckern_table ); - - - /* */ - - /********************************************************************** - * - * @function: - * FT_ClassicKern_Free - * - * @description: - * Free the buffer allocated by classic Kern validator. - * - * @input: - * face :: - * A handle to the input face. - * - * table :: - * The pointer to the buffer that is allocated by - * @FT_ClassicKern_Validate. - * - * @note: - * This function must be used to free the buffer allocated by - * @FT_ClassicKern_Validate only. - */ - FT_EXPORT( void ) - FT_ClassicKern_Free( FT_Face face, - FT_Bytes table ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTGXVAL_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftgzip.h b/CMU462/deps/freetype/include/freetype2/freetype/ftgzip.h deleted file mode 100755 index 9893437..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftgzip.h +++ /dev/null @@ -1,102 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgzip.h */ -/* */ -/* Gzip-compressed stream support. */ -/* */ -/* Copyright 2002, 2003, 2004, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTGZIP_H__ -#define __FTGZIP_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* <Section> */ - /* gzip */ - /* */ - /* <Title> */ - /* GZIP Streams */ - /* */ - /* <Abstract> */ - /* Using gzip-compressed font files. */ - /* */ - /* <Description> */ - /* This section contains the declaration of Gzip-specific functions. */ - /* */ - /*************************************************************************/ - - - /************************************************************************ - * - * @function: - * FT_Stream_OpenGzip - * - * @description: - * Open a new stream to parse gzip-compressed font files. This is - * mainly used to support the compressed `*.pcf.gz' fonts that come - * with XFree86. - * - * @input: - * stream :: - * The target embedding stream. - * - * source :: - * The source stream. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The source stream must be opened _before_ calling this function. - * - * Calling the internal function `FT_Stream_Close' on the new stream will - * *not* call `FT_Stream_Close' on the source stream. None of the stream - * objects will be released to the heap. - * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream. - * - * In certain builds of the library, gzip compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a gzipped stream from - * it and re-open the face with it. - * - * This function may return `FT_Err_Unimplemented_Feature' if your build - * of FreeType was not compiled with zlib support. - */ - FT_EXPORT( FT_Error ) - FT_Stream_OpenGzip( FT_Stream stream, - FT_Stream source ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTGZIP_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftimage.h b/CMU462/deps/freetype/include/freetype2/freetype/ftimage.h deleted file mode 100755 index 1c428f1..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftimage.h +++ /dev/null @@ -1,1237 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftimage.h */ -/* */ -/* FreeType glyph image formats and default raster interface */ -/* (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* Note: A `raster' is simply a scan-line converter, used to render */ - /* FT_Outlines into FT_Bitmaps. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTIMAGE_H__ -#define __FTIMAGE_H__ - - -/* _STANDALONE_ is from ftgrays.c */ -#ifndef _STANDALONE_ -#include <ft2build.h> -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Pos */ - /* */ - /* <Description> */ - /* The type FT_Pos is a 32-bit integer used to store vectorial */ - /* coordinates. Depending on the context, these can represent */ - /* distances in integer font units, or 16,16, or 26.6 fixed float */ - /* pixel coordinates. */ - /* */ - typedef signed long FT_Pos; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Vector */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2D vector; coordinates are of */ - /* the FT_Pos type. */ - /* */ - /* <Fields> */ - /* x :: The horizontal coordinate. */ - /* y :: The vertical coordinate. */ - /* */ - typedef struct FT_Vector_ - { - FT_Pos x; - FT_Pos y; - - } FT_Vector; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_BBox */ - /* */ - /* <Description> */ - /* A structure used to hold an outline's bounding box, i.e., the */ - /* coordinates of its extrema in the horizontal and vertical */ - /* directions. */ - /* */ - /* <Fields> */ - /* xMin :: The horizontal minimum (left-most). */ - /* */ - /* yMin :: The vertical minimum (bottom-most). */ - /* */ - /* xMax :: The horizontal maximum (right-most). */ - /* */ - /* yMax :: The vertical maximum (top-most). */ - /* */ - typedef struct FT_BBox_ - { - FT_Pos xMin, yMin; - FT_Pos xMax, yMax; - - } FT_BBox; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Pixel_Mode */ - /* */ - /* <Description> */ - /* An enumeration type used to describe the format of pixels in a */ - /* given bitmap. Note that additional formats may be added in the */ - /* future. */ - /* */ - /* <Values> */ - /* FT_PIXEL_MODE_NONE :: */ - /* Value 0 is reserved. */ - /* */ - /* FT_PIXEL_MODE_MONO :: */ - /* A monochrome bitmap, using 1 bit per pixel. Note that pixels */ - /* are stored in most-significant order (MSB), which means that */ - /* the left-most pixel in a byte has value 128. */ - /* */ - /* FT_PIXEL_MODE_GRAY :: */ - /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ - /* images. Each pixel is stored in one byte. Note that the number */ - /* of value `gray' levels is stored in the `num_bytes' field of */ - /* the @FT_Bitmap structure (it generally is 256). */ - /* */ - /* FT_PIXEL_MODE_GRAY2 :: */ - /* A 2-bit/pixel bitmap, used to represent embedded anti-aliased */ - /* bitmaps in font files according to the OpenType specification. */ - /* We haven't found a single font using this format, however. */ - /* */ - /* FT_PIXEL_MODE_GRAY4 :: */ - /* A 4-bit/pixel bitmap, used to represent embedded anti-aliased */ - /* bitmaps in font files according to the OpenType specification. */ - /* We haven't found a single font using this format, however. */ - /* */ - /* FT_PIXEL_MODE_LCD :: */ - /* An 8-bit bitmap, used to represent RGB or BGR decimated glyph */ - /* images used for display on LCD displays; the bitmap is three */ - /* times wider than the original glyph image. See also */ - /* @FT_RENDER_MODE_LCD. */ - /* */ - /* FT_PIXEL_MODE_LCD_V :: */ - /* An 8-bit bitmap, used to represent RGB or BGR decimated glyph */ - /* images used for display on rotated LCD displays; the bitmap */ - /* is three times taller than the original glyph image. See also */ - /* @FT_RENDER_MODE_LCD_V. */ - /* */ - typedef enum FT_Pixel_Mode_ - { - FT_PIXEL_MODE_NONE = 0, - FT_PIXEL_MODE_MONO, - FT_PIXEL_MODE_GRAY, - FT_PIXEL_MODE_GRAY2, - FT_PIXEL_MODE_GRAY4, - FT_PIXEL_MODE_LCD, - FT_PIXEL_MODE_LCD_V, - - FT_PIXEL_MODE_MAX /* do not remove */ - - } FT_Pixel_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_pixel_mode_xxx */ - /* */ - /* <Description> */ - /* A list of deprecated constants. Use the corresponding */ - /* @FT_Pixel_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_pixel_mode_none :: See @FT_PIXEL_MODE_NONE. */ - /* ft_pixel_mode_mono :: See @FT_PIXEL_MODE_MONO. */ - /* ft_pixel_mode_grays :: See @FT_PIXEL_MODE_GRAY. */ - /* ft_pixel_mode_pal2 :: See @FT_PIXEL_MODE_GRAY2. */ - /* ft_pixel_mode_pal4 :: See @FT_PIXEL_MODE_GRAY4. */ - /* */ -#define ft_pixel_mode_none FT_PIXEL_MODE_NONE -#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO -#define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY -#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 -#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 - - /* */ - -#if 0 - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Palette_Mode */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT! */ - /* */ - /* An enumeration type to describe the format of a bitmap palette, */ - /* used with ft_pixel_mode_pal4 and ft_pixel_mode_pal8. */ - /* */ - /* <Fields> */ - /* ft_palette_mode_rgb :: The palette is an array of 3-bytes RGB */ - /* records. */ - /* */ - /* ft_palette_mode_rgba :: The palette is an array of 4-bytes RGBA */ - /* records. */ - /* */ - /* <Note> */ - /* As ft_pixel_mode_pal2, pal4 and pal8 are currently unused by */ - /* FreeType, these types are not handled by the library itself. */ - /* */ - typedef enum FT_Palette_Mode_ - { - ft_palette_mode_rgb = 0, - ft_palette_mode_rgba, - - ft_palettte_mode_max /* do not remove */ - - } FT_Palette_Mode; - - /* */ - -#endif - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Bitmap */ - /* */ - /* <Description> */ - /* A structure used to describe a bitmap or pixmap to the raster. */ - /* Note that we now manage pixmaps of various depths through the */ - /* `pixel_mode' field. */ - /* */ - /* <Fields> */ - /* rows :: The number of bitmap rows. */ - /* */ - /* width :: The number of pixels in bitmap row. */ - /* */ - /* pitch :: The pitch's absolute value is the number of bytes */ - /* taken by one bitmap row, including padding. */ - /* However, the pitch is positive when the bitmap has */ - /* a `down' flow, and negative when it has an `up' */ - /* flow. In all cases, the pitch is an offset to add */ - /* to a bitmap pointer in order to go down one row. */ - /* */ - /* buffer :: A typeless pointer to the bitmap buffer. This */ - /* value should be aligned on 32-bit boundaries in */ - /* most cases. */ - /* */ - /* num_grays :: This field is only used with */ - /* @FT_PIXEL_MODE_GRAY; it gives the number of gray */ - /* levels used in the bitmap. */ - /* */ - /* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ - /* See @FT_Pixel_Mode for possible values. */ - /* */ - /* palette_mode :: This field is intended for paletted pixel modes; */ - /* it indicates how the palette is stored. Not */ - /* used currently. */ - /* */ - /* palette :: A typeless pointer to the bitmap palette; this */ - /* field is intended for paletted pixel modes. Not */ - /* used currently. */ - /* */ - /* <Note> */ - /* For now, the only pixel modes supported by FreeType are mono and */ - /* grays. However, drivers might be added in the future to support */ - /* more `colorful' options. */ - /* */ - typedef struct FT_Bitmap_ - { - int rows; - int width; - int pitch; - unsigned char* buffer; - short num_grays; - char pixel_mode; - char palette_mode; - void* palette; - - } FT_Bitmap; - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Outline */ - /* */ - /* <Description> */ - /* This structure is used to describe an outline to the scan-line */ - /* converter. */ - /* */ - /* <Fields> */ - /* n_contours :: The number of contours in the outline. */ - /* */ - /* n_points :: The number of points in the outline. */ - /* */ - /* points :: A pointer to an array of `n_points' @FT_Vector */ - /* elements, giving the outline's point coordinates. */ - /* */ - /* tags :: A pointer to an array of `n_points' chars, giving */ - /* each outline point's type. If bit 0 is unset, the */ - /* point is `off' the curve, i.e., a Bézier control */ - /* point, while it is `on' when set. */ - /* */ - /* Bit 1 is meaningful for `off' points only. If set, */ - /* it indicates a third-order Bézier arc control point; */ - /* and a second-order control point if unset. */ - /* */ - /* contours :: An array of `n_contours' shorts, giving the end */ - /* point of each contour within the outline. For */ - /* example, the first contour is defined by the points */ - /* `0' to `contours[0]', the second one is defined by */ - /* the points `contours[0]+1' to `contours[1]', etc. */ - /* */ - /* flags :: A set of bit flags used to characterize the outline */ - /* and give hints to the scan-converter and hinter on */ - /* how to convert/grid-fit it. See @FT_OUTLINE_FLAGS. */ - /* */ - typedef struct FT_Outline_ - { - short n_contours; /* number of contours in glyph */ - short n_points; /* number of points in the glyph */ - - FT_Vector* points; /* the outline's points */ - char* tags; /* the points flags */ - short* contours; /* the contour end points */ - - int flags; /* outline masks */ - - } FT_Outline; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_OUTLINE_FLAGS */ - /* */ - /* <Description> */ - /* A list of bit-field constants use for the flags in an outline's */ - /* `flags' field. */ - /* */ - /* <Values> */ - /* FT_OUTLINE_NONE :: Value 0 is reserved. */ - /* */ - /* FT_OUTLINE_OWNER :: If set, this flag indicates that the */ - /* outline's field arrays (i.e., */ - /* `points', `flags' & `contours') are */ - /* `owned' by the outline object, and */ - /* should thus be freed when it is */ - /* destroyed. */ - /* */ - /* FT_OUTLINE_EVEN_ODD_FILL :: By default, outlines are filled using */ - /* the non-zero winding rule. If set to */ - /* 1, the outline will be filled using */ - /* the even-odd fill rule (only works */ - /* with the smooth raster). */ - /* */ - /* FT_OUTLINE_REVERSE_FILL :: By default, outside contours of an */ - /* outline are oriented in clock-wise */ - /* direction, as defined in the TrueType */ - /* specification. This flag is set if */ - /* the outline uses the opposite */ - /* direction (typically for Type 1 */ - /* fonts). This flag is ignored by the */ - /* scan-converter. */ - /* */ - /* FT_OUTLINE_IGNORE_DROPOUTS :: By default, the scan converter will */ - /* try to detect drop-outs in an outline */ - /* and correct the glyph bitmap to */ - /* ensure consistent shape continuity. */ - /* If set, this flag hints the scan-line */ - /* converter to ignore such cases. */ - /* */ - /* FT_OUTLINE_HIGH_PRECISION :: This flag indicates that the */ - /* scan-line converter should try to */ - /* convert this outline to bitmaps with */ - /* the highest possible quality. It is */ - /* typically set for small character */ - /* sizes. Note that this is only a */ - /* hint, that might be completely */ - /* ignored by a given scan-converter. */ - /* */ - /* FT_OUTLINE_SINGLE_PASS :: This flag is set to force a given */ - /* scan-converter to only use a single */ - /* pass over the outline to render a */ - /* bitmap glyph image. Normally, it is */ - /* set for very large character sizes. */ - /* It is only a hint, that might be */ - /* completely ignored by a given */ - /* scan-converter. */ - /* */ -#define FT_OUTLINE_NONE 0x0 -#define FT_OUTLINE_OWNER 0x1 -#define FT_OUTLINE_EVEN_ODD_FILL 0x2 -#define FT_OUTLINE_REVERSE_FILL 0x4 -#define FT_OUTLINE_IGNORE_DROPOUTS 0x8 - -#define FT_OUTLINE_HIGH_PRECISION 0x100 -#define FT_OUTLINE_SINGLE_PASS 0x200 - - - /************************************************************************* - * - * @enum: - * ft_outline_flags - * - * @description: - * These constants are deprecated. Please use the corresponding - * @FT_OUTLINE_FLAGS values. - * - * @values: - * ft_outline_none :: See @FT_OUTLINE_NONE. - * ft_outline_owner :: See @FT_OUTLINE_OWNER. - * ft_outline_even_odd_fill :: See @FT_OUTLINE_EVEN_ODD_FILL. - * ft_outline_reverse_fill :: See @FT_OUTLINE_REVERSE_FILL. - * ft_outline_ignore_dropouts :: See @FT_OUTLINE_IGNORE_DROPOUTS. - * ft_outline_high_precision :: See @FT_OUTLINE_HIGH_PRECISION. - * ft_outline_single_pass :: See @FT_OUTLINE_SINGLE_PASS. - */ -#define ft_outline_none FT_OUTLINE_NONE -#define ft_outline_owner FT_OUTLINE_OWNER -#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL -#define ft_outline_reverse_fill FT_OUTLINE_REVERSE_FILL -#define ft_outline_ignore_dropouts FT_OUTLINE_IGNORE_DROPOUTS -#define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION -#define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS - - /* */ - -#define FT_CURVE_TAG( flag ) ( flag & 3 ) - -#define FT_CURVE_TAG_ON 1 -#define FT_CURVE_TAG_CONIC 0 -#define FT_CURVE_TAG_CUBIC 2 - -#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */ -#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */ - -#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \ - FT_CURVE_TAG_TOUCH_Y ) - -#define FT_Curve_Tag_On FT_CURVE_TAG_ON -#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC -#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC -#define FT_Curve_Tag_Touch_X FT_CURVE_TAG_TOUCH_X -#define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_MoveToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `move */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `move to' is emitted to start a new contour in an outline. */ - /* */ - /* <Input> */ - /* to :: A pointer to the target point of the `move to'. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of the */ - /* decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - typedef int - (*FT_Outline_MoveToFunc)( const FT_Vector* to, - void* user ); - -#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_LineToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `line */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `line to' is emitted to indicate a segment in the outline. */ - /* */ - /* <Input> */ - /* to :: A pointer to the target point of the `line to'. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of the */ - /* decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - typedef int - (*FT_Outline_LineToFunc)( const FT_Vector* to, - void* user ); - -#define FT_Outline_LineTo_Func FT_Outline_LineToFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_ConicToFunc */ - /* */ - /* <Description> */ - /* A function pointer type use to describe the signature of a `conic */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `conic to' is emitted to indicate a second-order Bézier arc in */ - /* the outline. */ - /* */ - /* <Input> */ - /* control :: An intermediate control point between the last position */ - /* and the new target in `to'. */ - /* */ - /* to :: A pointer to the target end point of the conic arc. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of */ - /* the decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - typedef int - (*FT_Outline_ConicToFunc)( const FT_Vector* control, - const FT_Vector* to, - void* user ); - -#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_CubicToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `cubic */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ - /* */ - /* <Input> */ - /* control1 :: A pointer to the first Bézier control point. */ - /* */ - /* control2 :: A pointer to the second Bézier control point. */ - /* */ - /* to :: A pointer to the target end point. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of */ - /* the decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - typedef int - (*FT_Outline_CubicToFunc)( const FT_Vector* control1, - const FT_Vector* control2, - const FT_Vector* to, - void* user ); - -#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Outline_Funcs */ - /* */ - /* <Description> */ - /* A structure to hold various function pointers used during outline */ - /* decomposition in order to emit segments, conic, and cubic Béziers, */ - /* as well as `move to' and `close to' operations. */ - /* */ - /* <Fields> */ - /* move_to :: The `move to' emitter. */ - /* */ - /* line_to :: The segment emitter. */ - /* */ - /* conic_to :: The second-order Bézier arc emitter. */ - /* */ - /* cubic_to :: The third-order Bézier arc emitter. */ - /* */ - /* shift :: The shift that is applied to coordinates before they */ - /* are sent to the emitter. */ - /* */ - /* delta :: The delta that is applied to coordinates before they */ - /* are sent to the emitter, but after the shift. */ - /* */ - /* <Note> */ - /* The point coordinates sent to the emitters are the transformed */ - /* version of the original coordinates (this is important for high */ - /* accuracy during scan-conversion). The transformation is simple: */ - /* */ - /* { */ - /* x' = (x << shift) - delta */ - /* y' = (x << shift) - delta */ - /* } */ - /* */ - /* Set the value of `shift' and `delta' to 0 to get the original */ - /* point coordinates. */ - /* */ - typedef struct FT_Outline_Funcs_ - { - FT_Outline_MoveToFunc move_to; - FT_Outline_LineToFunc line_to; - FT_Outline_ConicToFunc conic_to; - FT_Outline_CubicToFunc cubic_to; - - int shift; - FT_Pos delta; - - } FT_Outline_Funcs; - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_IMAGE_TAG */ - /* */ - /* <Description> */ - /* This macro converts four-letter tags to an unsigned long type. */ - /* */ - /* <Note> */ - /* Since many 16bit compilers don't like 32bit enumerations, you */ - /* should redefine this macro in case of problems to something like */ - /* this: */ - /* */ - /* { */ - /* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ - /* } */ - /* */ - /* to get a simple enumeration without assigning special numbers. */ - /* */ -#ifndef FT_IMAGE_TAG -#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ - value = ( ( (unsigned long)_x1 << 24 ) | \ - ( (unsigned long)_x2 << 16 ) | \ - ( (unsigned long)_x3 << 8 ) | \ - (unsigned long)_x4 ) -#endif /* FT_IMAGE_TAG */ - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Glyph_Format */ - /* */ - /* <Description> */ - /* An enumeration type used to describe the format of a given glyph */ - /* image. Note that this version of FreeType only supports two image */ - /* formats, even though future font drivers will be able to register */ - /* their own format. */ - /* */ - /* <Values> */ - /* FT_GLYPH_FORMAT_NONE :: */ - /* The value 0 is reserved. */ - /* */ - /* FT_GLYPH_FORMAT_COMPOSITE :: */ - /* The glyph image is a composite of several other images. This */ - /* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to */ - /* report compound glyphs (like accented characters). */ - /* */ - /* FT_GLYPH_FORMAT_BITMAP :: */ - /* The glyph image is a bitmap, and can be described as an */ - /* @FT_Bitmap. You generally need to access the `bitmap' field of */ - /* the @FT_GlyphSlotRec structure to read it. */ - /* */ - /* FT_GLYPH_FORMAT_OUTLINE :: */ - /* The glyph image is a vectorial outline made of line segments */ - /* and Bézier arcs; it can be described as an @FT_Outline; you */ - /* generally want to access the `outline' field of the */ - /* @FT_GlyphSlotRec structure to read it. */ - /* */ - /* FT_GLYPH_FORMAT_PLOTTER :: */ - /* The glyph image is a vectorial path with no inside and outside */ - /* contours. Some Type 1 fonts, like those in the Hershey family, */ - /* contain glyphs in this format. These are described as */ - /* @FT_Outline, but FreeType isn't currently capable of rendering */ - /* them correctly. */ - /* */ - typedef enum FT_Glyph_Format_ - { - FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), - - FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), - FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), - FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), - FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) - - } FT_Glyph_Format; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_glyph_format_xxx */ - /* */ - /* <Description> */ - /* A list of deprecated constants. Use the corresponding */ - /* @FT_Glyph_Format values instead. */ - /* */ - /* <Values> */ - /* ft_glyph_format_none :: See @FT_GLYPH_FORMAT_NONE. */ - /* ft_glyph_format_composite :: See @FT_GLYPH_FORMAT_COMPOSITE. */ - /* ft_glyph_format_bitmap :: See @FT_GLYPH_FORMAT_BITMAP. */ - /* ft_glyph_format_outline :: See @FT_GLYPH_FORMAT_OUTLINE. */ - /* ft_glyph_format_plotter :: See @FT_GLYPH_FORMAT_PLOTTER. */ - /* */ -#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE -#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE -#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP -#define ft_glyph_format_outline FT_GLYPH_FORMAT_OUTLINE -#define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** R A S T E R D E F I N I T I O N S *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* A raster is a scan converter, in charge of rendering an outline into */ - /* a a bitmap. This section contains the public API for rasters. */ - /* */ - /* Note that in FreeType 2, all rasters are now encapsulated within */ - /* specific modules called `renderers'. See `freetype/ftrender.h' for */ - /* more details on renderers. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* raster */ - /* */ - /* <Title> */ - /* Scanline Converter */ - /* */ - /* <Abstract> */ - /* How vectorial outlines are converted into bitmaps and pixmaps. */ - /* */ - /* <Description> */ - /* This section contains technical definitions. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Raster */ - /* */ - /* <Description> */ - /* A handle (pointer) to a raster object. Each object can be used */ - /* independently to convert an outline into a bitmap or pixmap. */ - /* */ - typedef struct FT_RasterRec_* FT_Raster; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Span */ - /* */ - /* <Description> */ - /* A structure used to model a single span of gray (or black) pixels */ - /* when rendering a monochrome or anti-aliased bitmap. */ - /* */ - /* <Fields> */ - /* x :: The span's horizontal start position. */ - /* */ - /* len :: The span's length in pixels. */ - /* */ - /* coverage :: The span color/coverage, ranging from 0 (background) */ - /* to 255 (foreground). Only used for anti-aliased */ - /* rendering. */ - /* */ - /* <Note> */ - /* This structure is used by the span drawing callback type named */ - /* @FT_SpanFunc which takes the y-coordinate of the span as a */ - /* a parameter. */ - /* */ - /* The coverage value is always between 0 and 255. */ - /* */ - typedef struct FT_Span_ - { - short x; - unsigned short len; - unsigned char coverage; - - } FT_Span; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_SpanFunc */ - /* */ - /* <Description> */ - /* A function used as a call-back by the anti-aliased renderer in */ - /* order to let client applications draw themselves the gray pixel */ - /* spans on each scan line. */ - /* */ - /* <Input> */ - /* y :: The scanline's y-coordinate. */ - /* */ - /* count :: The number of spans to draw on this scanline. */ - /* */ - /* spans :: A table of `count' spans to draw on the scanline. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Note> */ - /* This callback allows client applications to directly render the */ - /* gray spans of the anti-aliased bitmap to any kind of surfaces. */ - /* */ - /* This can be used to write anti-aliased outlines directly to a */ - /* given background bitmap, and even perform translucency. */ - /* */ - /* Note that the `count' field cannot be greater than a fixed value */ - /* defined by the `FT_MAX_GRAY_SPANS' configuration macro in */ - /* `ftoption.h'. By default, this value is set to 32, which means */ - /* that if there are more than 32 spans on a given scanline, the */ - /* callback is called several times with the same `y' parameter in */ - /* order to draw all callbacks. */ - /* */ - /* Otherwise, the callback is only called once per scan-line, and */ - /* only for those scanlines that do have `gray' pixels on them. */ - /* */ - typedef void - (*FT_SpanFunc)( int y, - int count, - const FT_Span* spans, - void* user ); - -#define FT_Raster_Span_Func FT_SpanFunc - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_BitTest_Func */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ - /* */ - /* A function used as a call-back by the monochrome scan-converter */ - /* to test whether a given target pixel is already set to the drawing */ - /* `color'. These tests are crucial to implement drop-out control */ - /* per-se the TrueType spec. */ - /* */ - /* <Input> */ - /* y :: The pixel's y-coordinate. */ - /* */ - /* x :: The pixel's x-coordinate. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Return> */ - /* 1 if the pixel is `set', 0 otherwise. */ - /* */ - typedef int - (*FT_Raster_BitTest_Func)( int y, - int x, - void* user ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_BitSet_Func */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ - /* */ - /* A function used as a call-back by the monochrome scan-converter */ - /* to set an individual target pixel. This is crucial to implement */ - /* drop-out control according to the TrueType specification. */ - /* */ - /* <Input> */ - /* y :: The pixel's y-coordinate. */ - /* */ - /* x :: The pixel's x-coordinate. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Return> */ - /* 1 if the pixel is `set', 0 otherwise. */ - /* */ - typedef void - (*FT_Raster_BitSet_Func)( int y, - int x, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_RASTER_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit flag constants as used in the `flags' field of a */ - /* @FT_Raster_Params structure. */ - /* */ - /* <Values> */ - /* FT_RASTER_FLAG_DEFAULT :: This value is 0. */ - /* */ - /* FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ - /* anti-aliased glyph image should be */ - /* generated. Otherwise, it will be */ - /* monochrome (1-bit). */ - /* */ - /* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ - /* rendering. In this mode, client */ - /* applications must provide their own span */ - /* callback. This lets them directly */ - /* draw or compose over an existing bitmap. */ - /* If this bit is not set, the target */ - /* pixmap's buffer _must_ be zeroed before */ - /* rendering. */ - /* */ - /* Note that for now, direct rendering is */ - /* only possible with anti-aliased glyphs. */ - /* */ - /* FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ - /* rendering mode. If set, the output will */ - /* be clipped to a box specified in the */ - /* `clip_box' field of the */ - /* @FT_Raster_Params structure. */ - /* */ - /* Note that by default, the glyph bitmap */ - /* is clipped to the target pixmap, except */ - /* in direct rendering mode where all spans */ - /* are generated if no clipping box is set. */ - /* */ -#define FT_RASTER_FLAG_DEFAULT 0x0 -#define FT_RASTER_FLAG_AA 0x1 -#define FT_RASTER_FLAG_DIRECT 0x2 -#define FT_RASTER_FLAG_CLIP 0x4 - - /* deprecated */ -#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT -#define ft_raster_flag_aa FT_RASTER_FLAG_AA -#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT -#define ft_raster_flag_clip FT_RASTER_FLAG_CLIP - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Raster_Params */ - /* */ - /* <Description> */ - /* A structure to hold the arguments used by a raster's render */ - /* function. */ - /* */ - /* <Fields> */ - /* target :: The target bitmap. */ - /* */ - /* source :: A pointer to the source glyph image (e.g., an */ - /* @FT_Outline). */ - /* */ - /* flags :: The rendering flags. */ - /* */ - /* gray_spans :: The gray span drawing callback. */ - /* */ - /* black_spans :: The black span drawing callback. */ - /* */ - /* bit_test :: The bit test callback. UNIMPLEMENTED! */ - /* */ - /* bit_set :: The bit set callback. UNIMPLEMENTED! */ - /* */ - /* user :: User-supplied data that is passed to each drawing */ - /* callback. */ - /* */ - /* clip_box :: An optional clipping box. It is only used in */ - /* direct rendering mode. Note that coordinates here */ - /* should be expressed in _integer_ pixels (and not in */ - /* 26.6 fixed-point units). */ - /* */ - /* <Note> */ - /* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA */ - /* bit flag is set in the `flags' field, otherwise a monochrome */ - /* bitmap is generated. */ - /* */ - /* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ - /* raster will call the `gray_spans' callback to draw gray pixel */ - /* spans, in the case of an aa glyph bitmap, it will call */ - /* `black_spans', and `bit_test' and `bit_set' in the case of a */ - /* monochrome bitmap. This allows direct composition over a */ - /* pre-existing bitmap through user-provided callbacks to perform the */ - /* span drawing/composition. */ - /* */ - /* Note that the `bit_test' and `bit_set' callbacks are required when */ - /* rendering a monochrome bitmap, as they are crucial to implement */ - /* correct drop-out control as defined in the TrueType specification. */ - /* */ - typedef struct FT_Raster_Params_ - { - const FT_Bitmap* target; - const void* source; - int flags; - FT_SpanFunc gray_spans; - FT_SpanFunc black_spans; - FT_Raster_BitTest_Func bit_test; /* doesn't work! */ - FT_Raster_BitSet_Func bit_set; /* doesn't work! */ - void* user; - FT_BBox clip_box; - - } FT_Raster_Params; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_NewFunc */ - /* */ - /* <Description> */ - /* A function used to create a new raster object. */ - /* */ - /* <Input> */ - /* memory :: A handle to the memory allocator. */ - /* */ - /* <Output> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - /* <Note> */ - /* The `memory' parameter is a typeless pointer in order to avoid */ - /* un-wanted dependencies on the rest of the FreeType code. In */ - /* practice, it is an @FT_Memory object, i.e., a handle to the */ - /* standard FreeType memory allocator. However, this field can be */ - /* completely ignored by a given raster implementation. */ - /* */ - typedef int - (*FT_Raster_NewFunc)( void* memory, - FT_Raster* raster ); - -#define FT_Raster_New_Func FT_Raster_NewFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_DoneFunc */ - /* */ - /* <Description> */ - /* A function used to destroy a given raster object. */ - /* */ - /* <Input> */ - /* raster :: A handle to the raster object. */ - /* */ - typedef void - (*FT_Raster_DoneFunc)( FT_Raster raster ); - -#define FT_Raster_Done_Func FT_Raster_DoneFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_ResetFunc */ - /* */ - /* <Description> */ - /* FreeType provides an area of memory called the `render pool', */ - /* available to all registered rasters. This pool can be freely used */ - /* during a given scan-conversion but is shared by all rasters. Its */ - /* content is thus transient. */ - /* */ - /* This function is called each time the render pool changes, or just */ - /* after a new raster object is created. */ - /* */ - /* <Input> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* pool_base :: The address in memory of the render pool. */ - /* */ - /* pool_size :: The size in bytes of the render pool. */ - /* */ - /* <Note> */ - /* Rasters can ignore the render pool and rely on dynamic memory */ - /* allocation if they want to (a handle to the memory allocator is */ - /* passed to the raster constructor). However, this is not */ - /* recommended for efficiency purposes. */ - /* */ - typedef void - (*FT_Raster_ResetFunc)( FT_Raster raster, - unsigned char* pool_base, - unsigned long pool_size ); - -#define FT_Raster_Reset_Func FT_Raster_ResetFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_SetModeFunc */ - /* */ - /* <Description> */ - /* This function is a generic facility to change modes or attributes */ - /* in a given raster. This can be used for debugging purposes, or */ - /* simply to allow implementation-specific `features' in a given */ - /* raster module. */ - /* */ - /* <Input> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* mode :: A 4-byte tag used to name the mode or property. */ - /* */ - /* args :: A pointer to the new mode/property to use. */ - /* */ - typedef int - (*FT_Raster_SetModeFunc)( FT_Raster raster, - unsigned long mode, - void* args ); - -#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_RenderFunc */ - /* */ - /* <Description> */ - /* Invokes a given raster to scan-convert a given glyph image into a */ - /* target bitmap. */ - /* */ - /* <Input> */ - /* raster :: A handle to the raster object. */ - /* */ - /* params :: A pointer to an @FT_Raster_Params structure used to */ - /* store the rendering parameters. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - /* <Note> */ - /* The exact format of the source image depends on the raster's glyph */ - /* format defined in its @FT_Raster_Funcs structure. It can be an */ - /* @FT_Outline or anything else in order to support a large array of */ - /* glyph formats. */ - /* */ - /* Note also that the render function can fail and return a */ - /* `FT_Err_Unimplemented_Feature' error code if the raster used does */ - /* not support direct composition. */ - /* */ - /* XXX: For now, the standard raster doesn't support direct */ - /* composition but this should change for the final release (see */ - /* the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c' */ - /* for examples of distinct implementations which support direct */ - /* composition). */ - /* */ - typedef int - (*FT_Raster_RenderFunc)( FT_Raster raster, - const FT_Raster_Params* params ); - -#define FT_Raster_Render_Func FT_Raster_RenderFunc - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Raster_Funcs */ - /* */ - /* <Description> */ - /* A structure used to describe a given raster class to the library. */ - /* */ - /* <Fields> */ - /* glyph_format :: The supported glyph format for this raster. */ - /* */ - /* raster_new :: The raster constructor. */ - /* */ - /* raster_reset :: Used to reset the render pool within the raster. */ - /* */ - /* raster_render :: A function to render a glyph into a given bitmap. */ - /* */ - /* raster_done :: The raster destructor. */ - /* */ - typedef struct FT_Raster_Funcs_ - { - FT_Glyph_Format glyph_format; - FT_Raster_NewFunc raster_new; - FT_Raster_ResetFunc raster_reset; - FT_Raster_SetModeFunc raster_set_mode; - FT_Raster_RenderFunc raster_render; - FT_Raster_DoneFunc raster_done; - - } FT_Raster_Funcs; - - - /* */ - - -FT_END_HEADER - -#endif /* __FTIMAGE_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftincrem.h b/CMU462/deps/freetype/include/freetype2/freetype/ftincrem.h deleted file mode 100755 index 46bc8bd..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftincrem.h +++ /dev/null @@ -1,331 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftincrem.h */ -/* */ -/* FreeType incremental loading (specification). */ -/* */ -/* Copyright 2002, 2003, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTINCREM_H__ -#define __FTINCREM_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************** - * - * @section: - * incremental - * - * @title: - * Incremental Loading - * - * @abstract: - * Custom Glyph Loading. - * - * @description: - * This section contains various functions used to perform so-called - * `incremental' glyph loading. This is a mode where all glyphs loaded - * from a given @FT_Face are provided by the client application, - * - * Apart from that, all other tables are loaded normally from the font - * file. This mode is useful when FreeType is used within another - * engine, e.g., a Postscript Imaging Processor. - * - * To enable this mode, you must use @FT_Open_Face, passing an - * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an - * @FT_Incremental_Interface value. See the comments for - * @FT_Incremental_InterfaceRec for an example. - * - */ - - - /*************************************************************************** - * - * @type: - * FT_Incremental - * - * @description: - * An opaque type describing a user-provided object used to implement - * `incremental' glyph loading within FreeType. This is used to support - * embedded fonts in certain environments (e.g., Postscript interpreters), - * where the glyph data isn't in the font file, or must be overridden by - * different values. - * - * @note: - * It is up to client applications to create and implement @FT_Incremental - * objects, as long as they provide implementations for the methods - * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc - * and @FT_Incremental_GetGlyphMetricsFunc. - * - * See the description of @FT_Incremental_InterfaceRec to understand how - * to use incremental objects with FreeType. - */ - typedef struct FT_IncrementalRec_* FT_Incremental; - - - /*************************************************************************** - * - * @struct: - * FT_Incremental_Metrics - * - * @description: - * A small structure used to contain the basic glyph metrics returned - * by the @FT_Incremental_GetGlyphMetricsFunc method. - * - * @fields: - * bearing_x :: - * Left bearing, in font units. - * - * bearing_y :: - * Top bearing, in font units. - * - * advance :: - * Glyph advance, in font units. - * - * @note: - * These correspond to horizontal or vertical metrics depending on the - * value of the `vertical' argument to the function - * @FT_Incremental_GetGlyphMetricsFunc. - */ - typedef struct FT_Incremental_MetricsRec_ - { - FT_Long bearing_x; - FT_Long bearing_y; - FT_Long advance; - - } FT_Incremental_MetricsRec, *FT_Incremental_Metrics; - - - /*************************************************************************** - * - * @type: - * FT_Incremental_GetGlyphDataFunc - * - * @description: - * A function called by FreeType to access a given glyph's data bytes - * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is - * enabled. - * - * Note that the format of the glyph's data bytes depends on the font - * file format. For TrueType, it must correspond to the raw bytes within - * the `glyf' table. For Postscript formats, it must correspond to the - * *unencrypted* charstring bytes, without any `lenIV' header. It is - * undefined for any other format. - * - * @input: - * incremental :: - * Handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * glyph_index :: - * Index of relevant glyph. - * - * @output: - * adata :: - * A structure describing the returned glyph data bytes (which will be - * accessed as a read-only byte block). - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * If this function returns successfully the method - * @FT_Incremental_FreeGlyphDataFunc will be called later to release - * the data bytes. - * - * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for - * compound glyphs. - */ - typedef FT_Error - (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, - FT_UInt glyph_index, - FT_Data* adata ); - - - /*************************************************************************** - * - * @type: - * FT_Incremental_FreeGlyphDataFunc - * - * @description: - * A function used to release the glyph data bytes returned by a - * successful call to @FT_Incremental_GetGlyphDataFunc. - * - * @input: - * incremental :: - * A handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * data :: - * A structure describing the glyph data bytes (which will be accessed - * as a read-only byte block). - */ - typedef void - (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, - FT_Data* data ); - - - /*************************************************************************** - * - * @type: - * FT_Incremental_GetGlyphMetricsFunc - * - * @description: - * A function used to retrieve the basic metrics of a given glyph index - * before accessing its data. This is necessary because, in certain - * formats like TrueType, the metrics are stored in a different place from - * the glyph images proper. - * - * @input: - * incremental :: - * A handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * glyph_index :: - * Index of relevant glyph. - * - * vertical :: - * If true, return vertical metrics. - * - * ametrics :: - * This parameter is used for both input and output. - * The original glyph metrics, if any, in font units. If metrics are - * not available all the values must be set to zero. - * - * @output: - * ametrics :: - * The replacement glyph metrics in font units. - * - */ - typedef FT_Error - (*FT_Incremental_GetGlyphMetricsFunc) - ( FT_Incremental incremental, - FT_UInt glyph_index, - FT_Bool vertical, - FT_Incremental_MetricsRec *ametrics ); - - - /************************************************************************** - * - * @struct: - * FT_Incremental_FuncsRec - * - * @description: - * A table of functions for accessing fonts that load data - * incrementally. Used in @FT_Incremental_InterfaceRec. - * - * @fields: - * get_glyph_data :: - * The function to get glyph data. Must not be null. - * - * free_glyph_data :: - * The function to release glyph data. Must not be null. - * - * get_glyph_metrics :: - * The function to get glyph metrics. May be null if the font does - * not provide overriding glyph metrics. - */ - typedef struct FT_Incremental_FuncsRec_ - { - FT_Incremental_GetGlyphDataFunc get_glyph_data; - FT_Incremental_FreeGlyphDataFunc free_glyph_data; - FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; - - } FT_Incremental_FuncsRec; - - - /*************************************************************************** - * - * @struct: - * FT_Incremental_InterfaceRec - * - * @description: - * A structure to be used with @FT_Open_Face to indicate that the user - * wants to support incremental glyph loading. You should use it with - * @FT_PARAM_TAG_INCREMENTAL as in the following example: - * - * { - * FT_Incremental_InterfaceRec inc_int; - * FT_Parameter parameter; - * FT_Open_Args open_args; - * - * - * // set up incremental descriptor - * inc_int.funcs = my_funcs; - * inc_int.object = my_object; - * - * // set up optional parameter - * parameter.tag = FT_PARAM_TAG_INCREMENTAL; - * parameter.data = &inc_int; - * - * // set up FT_Open_Args structure - * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; - * open_args.pathname = my_font_pathname; - * open_args.num_params = 1; - * open_args.params = ¶meter; // we use one optional argument - * - * // open the font - * error = FT_Open_Face( library, &open_args, index, &face ); - * ... - * } - */ - typedef struct FT_Incremental_InterfaceRec_ - { - const FT_Incremental_FuncsRec* funcs; - FT_Incremental object; - - } FT_Incremental_InterfaceRec; - - - /*************************************************************************** - * - * @type: - * FT_Incremental_Interface - * - * @description: - * A pointer to an @FT_Incremental_InterfaceRec structure. - * - */ - typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; - - - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_INCREMENTAL - * - * @description: - * A constant used as the tag of @FT_Parameter structures to indicate - * an incremental loading object to be used by FreeType. - * - */ -#define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) - - /* */ - -FT_END_HEADER - -#endif /* __FTINCREM_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftlcdfil.h b/CMU462/deps/freetype/include/freetype2/freetype/ftlcdfil.h deleted file mode 100755 index 9a61377..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftlcdfil.h +++ /dev/null @@ -1,166 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftlcdfil.h */ -/* */ -/* FreeType API for color filtering of subpixel bitmap glyphs */ -/* (specification). */ -/* */ -/* Copyright 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FT_LCD_FILTER_H__ -#define __FT_LCD_FILTER_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - - -FT_BEGIN_HEADER - - /*************************************************************************** - * - * @section: - * lcd_filtering - * - * @title: - * LCD Filtering - * - * @abstract: - * Reduce color fringes of LCD-optimized bitmaps. - * - * @description: - * The @FT_Library_SetLcdFilter API can be used to specify a low-pass - * filter which is then applied to LCD-optimized bitmaps generated - * through @FT_Render_Glyph. This is useful to reduce color fringes - * which would occur with unfiltered rendering. - * - * Note that no filter is active by default, and that this function is - * *not* implemented in default builds of the library. You need to - * #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file - * in order to activate it. - */ - - - /**************************************************************************** - * - * @func: - * FT_LcdFilter - * - * @description: - * A list of values to identify various types of LCD filters. - * - * @values: - * FT_LCD_FILTER_NONE :: - * Do not perform filtering. When used with subpixel rendering, this - * results in sometimes severe color fringes. - * - * FT_LCD_FILTER_DEFAULT :: - * The default filter reduces color fringes considerably, at the cost - * of a slight blurriness in the output. - * - * FT_LCD_FILTER_LIGHT :: - * The light filter is a variant that produces less blurriness at the - * cost of slightly more color fringes than the default one. It might - * be better, depending on taste, your monitor, or your personal vision. - * - * FT_LCD_FILTER_LEGACY :: - * This filter corresponds to the original libXft color filter. It - * provides high contrast output but can exhibit really bad color - * fringes if glyphs are not extremely well hinted to the pixel grid. - * In other words, it only works well if the TrueType bytecode - * interpreter is enabled *and* high-quality hinted fonts are used. - * - * This filter is only provided for comparison purposes, and might be - * disabled or stay unsupported in the future. - * - * @since: - * 2.3.0 - */ - typedef enum - { - FT_LCD_FILTER_NONE = 0, - FT_LCD_FILTER_DEFAULT = 1, - FT_LCD_FILTER_LIGHT = 2, - FT_LCD_FILTER_LEGACY = 16, - - FT_LCD_FILTER_MAX /* do not remove */ - - } FT_LcdFilter; - - - /************************************************************************** - * - * @func: - * FT_Library_SetLcdFilter - * - * @description: - * This function is used to apply color filtering to LCD decimated - * bitmaps, like the ones used when calling @FT_Render_Glyph with - * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. - * - * @input: - * library :: - * A handle to the target library instance. - * - * filter :: - * The filter type. - * - * You can use @FT_LCD_FILTER_NONE here to disable this feature, or - * @FT_LCD_FILTER_DEFAULT to use a default filter that should work - * well on most LCD screens. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This feature is always disabled by default. Clients must make an - * explicit call to this function with a `filter' value other than - * @FT_LCD_FILTER_NONE in order to enable it. - * - * Due to *PATENTS* covering subpixel rendering, this function doesn't - * do anything except returning `FT_Err_Unimplemented_Feature' if the - * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not - * defined in your build of the library, which should correspond to all - * default builds of FreeType. - * - * The filter affects glyph bitmaps rendered through @FT_Render_Glyph, - * @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char. - * - * It does _not_ affect the output of @FT_Outline_Render and - * @FT_Outline_Get_Bitmap. - * - * If this feature is activated, the dimensions of LCD glyph bitmaps are - * either larger or taller than the dimensions of the corresponding - * outline with regards to the pixel grid. For example, for - * @FT_RENDER_MODE_LCD, the filter adds up to 3 pixels to the left, and - * up to 3 pixels to the right. - * - * The bitmap offset values are adjusted correctly, so clients shouldn't - * need to modify their layout and glyph positioning code when enabling - * the filter. - * - * @since: - * 2.3.0 - */ - FT_EXPORT( FT_Error ) - FT_Library_SetLcdFilter( FT_Library library, - FT_LcdFilter filter ); - - /* */ - - -FT_END_HEADER - -#endif /* __FT_LCD_FILTER_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftlist.h b/CMU462/deps/freetype/include/freetype2/freetype/ftlist.h deleted file mode 100755 index f3223ee..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftlist.h +++ /dev/null @@ -1,273 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftlist.h */ -/* */ -/* Generic list support for FreeType (specification). */ -/* */ -/* Copyright 1996-2001, 2003, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file implements functions relative to list processing. Its */ - /* data structures are defined in `freetype.h'. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTLIST_H__ -#define __FTLIST_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* list_processing */ - /* */ - /* <Title> */ - /* List Processing */ - /* */ - /* <Abstract> */ - /* Simple management of lists. */ - /* */ - /* <Description> */ - /* This section contains various definitions related to list */ - /* processing using doubly-linked nodes. */ - /* */ - /* <Order> */ - /* FT_List */ - /* FT_ListNode */ - /* FT_ListRec */ - /* FT_ListNodeRec */ - /* */ - /* FT_List_Add */ - /* FT_List_Insert */ - /* FT_List_Find */ - /* FT_List_Remove */ - /* FT_List_Up */ - /* FT_List_Iterate */ - /* FT_List_Iterator */ - /* FT_List_Finalize */ - /* FT_List_Destructor */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Find */ - /* */ - /* <Description> */ - /* Finds the list node for a given listed object. */ - /* */ - /* <Input> */ - /* list :: A pointer to the parent list. */ - /* data :: The address of the listed object. */ - /* */ - /* <Return> */ - /* List node. NULL if it wasn't found. */ - /* */ - FT_EXPORT( FT_ListNode ) - FT_List_Find( FT_List list, - void* data ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Add */ - /* */ - /* <Description> */ - /* Appends an element to the end of a list. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* node :: The node to append. */ - /* */ - FT_EXPORT( void ) - FT_List_Add( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Insert */ - /* */ - /* <Description> */ - /* Inserts an element at the head of a list. */ - /* */ - /* <InOut> */ - /* list :: A pointer to parent list. */ - /* node :: The node to insert. */ - /* */ - FT_EXPORT( void ) - FT_List_Insert( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Remove */ - /* */ - /* <Description> */ - /* Removes a node from a list. This function doesn't check whether */ - /* the node is in the list! */ - /* */ - /* <Input> */ - /* node :: The node to remove. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* */ - FT_EXPORT( void ) - FT_List_Remove( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Up */ - /* */ - /* <Description> */ - /* Moves a node to the head/top of a list. Used to maintain LRU */ - /* lists. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* node :: The node to move. */ - /* */ - FT_EXPORT( void ) - FT_List_Up( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_List_Iterator */ - /* */ - /* <Description> */ - /* An FT_List iterator function which is called during a list parse */ - /* by @FT_List_Iterate. */ - /* */ - /* <Input> */ - /* node :: The current iteration list node. */ - /* */ - /* user :: A typeless pointer passed to @FT_List_Iterate. */ - /* Can be used to point to the iteration's state. */ - /* */ - typedef FT_Error - (*FT_List_Iterator)( FT_ListNode node, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Iterate */ - /* */ - /* <Description> */ - /* Parses a list and calls a given iterator function on each element. */ - /* Note that parsing is stopped as soon as one of the iterator calls */ - /* returns a non-zero value. */ - /* */ - /* <Input> */ - /* list :: A handle to the list. */ - /* iterator :: An iterator function, called on each node of the list. */ - /* user :: A user-supplied field which is passed as the second */ - /* argument to the iterator. */ - /* */ - /* <Return> */ - /* The result (a FreeType error code) of the last iterator call. */ - /* */ - FT_EXPORT( FT_Error ) - FT_List_Iterate( FT_List list, - FT_List_Iterator iterator, - void* user ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_List_Destructor */ - /* */ - /* <Description> */ - /* An @FT_List iterator function which is called during a list */ - /* finalization by @FT_List_Finalize to destroy all elements in a */ - /* given list. */ - /* */ - /* <Input> */ - /* system :: The current system object. */ - /* */ - /* data :: The current object to destroy. */ - /* */ - /* user :: A typeless pointer passed to @FT_List_Iterate. It can */ - /* be used to point to the iteration's state. */ - /* */ - typedef void - (*FT_List_Destructor)( FT_Memory memory, - void* data, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Finalize */ - /* */ - /* <Description> */ - /* Destroys all elements in the list as well as the list itself. */ - /* */ - /* <Input> */ - /* list :: A handle to the list. */ - /* */ - /* destroy :: A list destructor that will be applied to each element */ - /* of the list. */ - /* */ - /* memory :: The current memory object which handles deallocation. */ - /* */ - /* user :: A user-supplied field which is passed as the last */ - /* argument to the destructor. */ - /* */ - FT_EXPORT( void ) - FT_List_Finalize( FT_List list, - FT_List_Destructor destroy, - FT_Memory memory, - void* user ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTLIST_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftlzw.h b/CMU462/deps/freetype/include/freetype2/freetype/ftlzw.h deleted file mode 100755 index d950653..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftlzw.h +++ /dev/null @@ -1,99 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftlzw.h */ -/* */ -/* LZW-compressed stream support. */ -/* */ -/* Copyright 2004, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTLZW_H__ -#define __FTLZW_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* <Section> */ - /* lzw */ - /* */ - /* <Title> */ - /* LZW Streams */ - /* */ - /* <Abstract> */ - /* Using LZW-compressed font files. */ - /* */ - /* <Description> */ - /* This section contains the declaration of LZW-specific functions. */ - /* */ - /*************************************************************************/ - - /************************************************************************ - * - * @function: - * FT_Stream_OpenLZW - * - * @description: - * Open a new stream to parse LZW-compressed font files. This is - * mainly used to support the compressed `*.pcf.Z' fonts that come - * with XFree86. - * - * @input: - * stream :: The target embedding stream. - * - * source :: The source stream. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The source stream must be opened _before_ calling this function. - * - * Calling the internal function `FT_Stream_Close' on the new stream will - * *not* call `FT_Stream_Close' on the source stream. None of the stream - * objects will be released to the heap. - * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream - * - * In certain builds of the library, LZW compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a LZW stream from it - * and re-open the face with it. - * - * This function may return `FT_Err_Unimplemented_Feature' if your build - * of FreeType was not compiled with LZW support. - */ - FT_EXPORT( FT_Error ) - FT_Stream_OpenLZW( FT_Stream stream, - FT_Stream source ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTLZW_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftmac.h b/CMU462/deps/freetype/include/freetype2/freetype/ftmac.h deleted file mode 100755 index 3c6fafe..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftmac.h +++ /dev/null @@ -1,272 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmac.h */ -/* */ -/* Additional Mac-specific API. */ -/* */ -/* Copyright 1996-2001, 2004, 2006, 2007 by */ -/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* NOTE: Include this file after <freetype/freetype.h> and after the */ -/* Mac-specific <Types.h> header (or any other Mac header that */ -/* includes <Types.h>); we use Handle type. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTMAC_H__ -#define __FTMAC_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - -/* gcc-3.4.1 and later can warn about functions tagged as deprecated */ -#ifndef FT_DEPRECATED_ATTRIBUTE -#if defined(__GNUC__) && \ - ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) -#define FT_DEPRECATED_ATTRIBUTE __attribute__((deprecated)) -#else -#define FT_DEPRECATED_ATTRIBUTE -#endif -#endif - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* mac_specific */ - /* */ - /* <Title> */ - /* Mac Specific Interface */ - /* */ - /* <Abstract> */ - /* Only available on the Macintosh. */ - /* */ - /* <Description> */ - /* The following definitions are only available if FreeType is */ - /* compiled on a Macintosh. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FOND */ - /* */ - /* <Description> */ - /* Create a new face object from a FOND resource. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* fond :: A FOND resource. */ - /* */ - /* face_index :: Only supported for the -1 `sanity check' special */ - /* case. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Notes> */ - /* This function can be used to create @FT_Face objects from fonts */ - /* that are installed in the system as follows. */ - /* */ - /* { */ - /* fond = GetResource( 'FOND', fontName ); */ - /* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */ - /* } */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FOND( FT_Library library, - Handle fond, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GetFile_From_Mac_Name */ - /* */ - /* <Description> */ - /* Return an FSSpec for the disk file containing the named font. */ - /* */ - /* <Input> */ - /* fontName :: Mac OS name of the font (e.g., Times New Roman */ - /* Bold). */ - /* */ - /* <Output> */ - /* pathSpec :: FSSpec to the file. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* face_index :: Index of the face. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GetFile_From_Mac_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - FT_DEPRECATED_ATTRIBUTE; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GetFile_From_Mac_ATS_Name */ - /* */ - /* <Description> */ - /* Return an FSSpec for the disk file containing the named font. */ - /* */ - /* <Input> */ - /* fontName :: Mac OS name of the font in ATS framework. */ - /* */ - /* <Output> */ - /* pathSpec :: FSSpec to the file. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* face_index :: Index of the face. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GetFile_From_Mac_ATS_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - FT_DEPRECATED_ATTRIBUTE; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GetFilePath_From_Mac_ATS_Name */ - /* */ - /* <Description> */ - /* Return a pathname of the disk file and face index for given font */ - /* name which is handled by ATS framework. */ - /* */ - /* <Input> */ - /* fontName :: Mac OS name of the font in ATS framework. */ - /* */ - /* <Output> */ - /* path :: Buffer to store pathname of the file. For passing */ - /* to @FT_New_Face. The client must allocate this */ - /* buffer before calling this function. */ - /* */ - /* maxPathSize :: Lengths of the buffer `path' that client allocated. */ - /* */ - /* face_index :: Index of the face. For passing to @FT_New_Face. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, - UInt8* path, - UInt32 maxPathSize, - FT_Long* face_index ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FSSpec */ - /* */ - /* <Description> */ - /* Create a new face object from a given resource and typeface index */ - /* using an FSSpec to the font file. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* spec :: FSSpec to the font file. */ - /* */ - /* face_index :: The index of the face within the resource. The */ - /* first face has index 0. */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ - /* it accepts an FSSpec instead of a path. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FSSpec( FT_Library library, - const FSSpec *spec, - FT_Long face_index, - FT_Face *aface ) - FT_DEPRECATED_ATTRIBUTE; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FSRef */ - /* */ - /* <Description> */ - /* Create a new face object from a given resource and typeface index */ - /* using an FSRef to the font file. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* spec :: FSRef to the font file. */ - /* */ - /* face_index :: The index of the face within the resource. The */ - /* first face has index 0. */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */ - /* it accepts an FSRef instead of a path. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FSRef( FT_Library library, - const FSRef *ref, - FT_Long face_index, - FT_Face *aface ) - FT_DEPRECATED_ATTRIBUTE; - - /* */ - - -FT_END_HEADER - - -#endif /* __FTMAC_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftmm.h b/CMU462/deps/freetype/include/freetype2/freetype/ftmm.h deleted file mode 100755 index a9ccfe7..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftmm.h +++ /dev/null @@ -1,378 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmm.h */ -/* */ -/* FreeType Multiple Master font interface (specification). */ -/* */ -/* Copyright 1996-2001, 2003, 2004, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTMM_H__ -#define __FTMM_H__ - - -#include <ft2build.h> -#include FT_TYPE1_TABLES_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* multiple_masters */ - /* */ - /* <Title> */ - /* Multiple Masters */ - /* */ - /* <Abstract> */ - /* How to manage Multiple Masters fonts. */ - /* */ - /* <Description> */ - /* The following types and functions are used to manage Multiple */ - /* Master fonts, i.e., the selection of specific design instances by */ - /* setting design axis coordinates. */ - /* */ - /* George Williams has extended this interface to make it work with */ - /* both Type 1 Multiple Masters fonts and GX distortable (var) */ - /* fonts. Some of these routines only work with MM fonts, others */ - /* will work with both types. They are similar enough that a */ - /* consistent interface makes sense. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_MM_Axis */ - /* */ - /* <Description> */ - /* A simple structure used to model a given axis in design space for */ - /* Multiple Masters fonts. */ - /* */ - /* This structure can't be used for GX var fonts. */ - /* */ - /* <Fields> */ - /* name :: The axis's name. */ - /* */ - /* minimum :: The axis's minimum design coordinate. */ - /* */ - /* maximum :: The axis's maximum design coordinate. */ - /* */ - typedef struct FT_MM_Axis_ - { - FT_String* name; - FT_Long minimum; - FT_Long maximum; - - } FT_MM_Axis; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Multi_Master */ - /* */ - /* <Description> */ - /* A structure used to model the axes and space of a Multiple Masters */ - /* font. */ - /* */ - /* This structure can't be used for GX var fonts. */ - /* */ - /* <Fields> */ - /* num_axis :: Number of axes. Cannot exceed 4. */ - /* */ - /* num_designs :: Number of designs; should be normally 2^num_axis */ - /* even though the Type 1 specification strangely */ - /* allows for intermediate designs to be present. This */ - /* number cannot exceed 16. */ - /* */ - /* axis :: A table of axis descriptors. */ - /* */ - typedef struct FT_Multi_Master_ - { - FT_UInt num_axis; - FT_UInt num_designs; - FT_MM_Axis axis[T1_MAX_MM_AXIS]; - - } FT_Multi_Master; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Var_Axis */ - /* */ - /* <Description> */ - /* A simple structure used to model a given axis in design space for */ - /* Multiple Masters and GX var fonts. */ - /* */ - /* <Fields> */ - /* name :: The axis's name. */ - /* Not always meaningful for GX. */ - /* */ - /* minimum :: The axis's minimum design coordinate. */ - /* */ - /* def :: The axis's default design coordinate. */ - /* FreeType computes meaningful default values for MM; it */ - /* is then an integer value, not in 16.16 format. */ - /* */ - /* maximum :: The axis's maximum design coordinate. */ - /* */ - /* tag :: The axis's tag (the GX equivalent to `name'). */ - /* FreeType provides default values for MM if possible. */ - /* */ - /* strid :: The entry in `name' table (another GX version of */ - /* `name'). */ - /* Not meaningful for MM. */ - /* */ - typedef struct FT_Var_Axis_ - { - FT_String* name; - - FT_Fixed minimum; - FT_Fixed def; - FT_Fixed maximum; - - FT_ULong tag; - FT_UInt strid; - - } FT_Var_Axis; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Var_Named_Style */ - /* */ - /* <Description> */ - /* A simple structure used to model a named style in a GX var font. */ - /* */ - /* This structure can't be used for MM fonts. */ - /* */ - /* <Fields> */ - /* coords :: The design coordinates for this style. */ - /* This is an array with one entry for each axis. */ - /* */ - /* strid :: The entry in `name' table identifying this style. */ - /* */ - typedef struct FT_Var_Named_Style_ - { - FT_Fixed* coords; - FT_UInt strid; - - } FT_Var_Named_Style; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_MM_Var */ - /* */ - /* <Description> */ - /* A structure used to model the axes and space of a Multiple Masters */ - /* or GX var distortable font. */ - /* */ - /* Some fields are specific to one format and not to the other. */ - /* */ - /* <Fields> */ - /* num_axis :: The number of axes. The maximum value is 4 for */ - /* MM; no limit in GX. */ - /* */ - /* num_designs :: The number of designs; should be normally */ - /* 2^num_axis for MM fonts. Not meaningful for GX */ - /* (where every glyph could have a different */ - /* number of designs). */ - /* */ - /* num_namedstyles :: The number of named styles; only meaningful for */ - /* GX which allows certain design coordinates to */ - /* have a string ID (in the `name' table) */ - /* associated with them. The font can tell the */ - /* user that, for example, Weight=1.5 is `Bold'. */ - /* */ - /* axis :: A table of axis descriptors. */ - /* GX fonts contain slightly more data than MM. */ - /* */ - /* namedstyles :: A table of named styles. */ - /* Only meaningful with GX. */ - /* */ - typedef struct FT_MM_Var_ - { - FT_UInt num_axis; - FT_UInt num_designs; - FT_UInt num_namedstyles; - FT_Var_Axis* axis; - FT_Var_Named_Style* namedstyle; - - } FT_MM_Var; - - - /* */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Multi_Master */ - /* */ - /* <Description> */ - /* Retrieves the Multiple Master descriptor of a given font. */ - /* */ - /* This function can't be used with GX fonts. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Output> */ - /* amaster :: The Multiple Masters descriptor. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Multi_Master( FT_Face face, - FT_Multi_Master *amaster ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_MM_Var */ - /* */ - /* <Description> */ - /* Retrieves the Multiple Master/GX var descriptor of a given font. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Output> */ - /* amaster :: The Multiple Masters descriptor. */ - /* Allocates a data structure, which the user must free */ - /* (a single call to FT_FREE will do it). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_MM_Var( FT_Face face, - FT_MM_Var* *amaster ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_MM_Design_Coordinates */ - /* */ - /* <Description> */ - /* For Multiple Masters fonts, choose an interpolated font design */ - /* through design coordinates. */ - /* */ - /* This function can't be used with GX fonts. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face. */ - /* */ - /* <Input> */ - /* num_coords :: The number of design coordinates (must be equal to */ - /* the number of axes in the font). */ - /* */ - /* coords :: An array of design coordinates. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_MM_Design_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Long* coords ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Var_Design_Coordinates */ - /* */ - /* <Description> */ - /* For Multiple Master or GX Var fonts, choose an interpolated font */ - /* design through design coordinates. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face. */ - /* */ - /* <Input> */ - /* num_coords :: The number of design coordinates (must be equal to */ - /* the number of axes in the font). */ - /* */ - /* coords :: An array of design coordinates. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Var_Design_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_MM_Blend_Coordinates */ - /* */ - /* <Description> */ - /* For Multiple Masters and GX var fonts, choose an interpolated font */ - /* design through normalized blend coordinates. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face. */ - /* */ - /* <Input> */ - /* num_coords :: The number of design coordinates (must be equal to */ - /* the number of axes in the font). */ - /* */ - /* coords :: The design coordinates array (each element must be */ - /* between 0 and 1.0). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_MM_Blend_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Var_Blend_Coordinates */ - /* */ - /* <Description> */ - /* This is another name of @FT_Set_MM_Blend_Coordinates. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Var_Blend_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTMM_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftmodapi.h b/CMU462/deps/freetype/include/freetype2/freetype/ftmodapi.h deleted file mode 100755 index 9cc32af..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftmodapi.h +++ /dev/null @@ -1,406 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmodapi.h */ -/* */ -/* FreeType modules public interface (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTMODAPI_H__ -#define __FTMODAPI_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* module_management */ - /* */ - /* <Title> */ - /* Module Management */ - /* */ - /* <Abstract> */ - /* How to add, upgrade, and remove modules from FreeType. */ - /* */ - /* <Description> */ - /* The definitions below are used to manage modules within FreeType. */ - /* Modules can be added, upgraded, and removed at runtime. */ - /* */ - /*************************************************************************/ - - - /* module bit flags */ -#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ -#define FT_MODULE_RENDERER 2 /* this module is a renderer */ -#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ -#define FT_MODULE_STYLER 8 /* this module is a styler */ - -#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ - /* scalable fonts */ -#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ - /* support vector outlines */ -#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ - /* own hinter */ - - - /* deprecated values */ -#define ft_module_font_driver FT_MODULE_FONT_DRIVER -#define ft_module_renderer FT_MODULE_RENDERER -#define ft_module_hinter FT_MODULE_HINTER -#define ft_module_styler FT_MODULE_STYLER - -#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE -#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES -#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER - - - typedef FT_Pointer FT_Module_Interface; - - typedef FT_Error - (*FT_Module_Constructor)( FT_Module module ); - - typedef void - (*FT_Module_Destructor)( FT_Module module ); - - typedef FT_Module_Interface - (*FT_Module_Requester)( FT_Module module, - const char* name ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Module_Class */ - /* */ - /* <Description> */ - /* The module class descriptor. */ - /* */ - /* <Fields> */ - /* module_flags :: Bit flags describing the module. */ - /* */ - /* module_size :: The size of one module object/instance in */ - /* bytes. */ - /* */ - /* module_name :: The name of the module. */ - /* */ - /* module_version :: The version, as a 16.16 fixed number */ - /* (major.minor). */ - /* */ - /* module_requires :: The version of FreeType this module requires, */ - /* as a 16.16 fixed number (major.minor). Starts */ - /* at version 2.0, i.e., 0x20000. */ - /* */ - /* module_init :: A function used to initialize (not create) a */ - /* new module object. */ - /* */ - /* module_done :: A function used to finalize (not destroy) a */ - /* given module object */ - /* */ - /* get_interface :: Queries a given module for a specific */ - /* interface by name. */ - /* */ - typedef struct FT_Module_Class_ - { - FT_ULong module_flags; - FT_Long module_size; - const FT_String* module_name; - FT_Fixed module_version; - FT_Fixed module_requires; - - const void* module_interface; - - FT_Module_Constructor module_init; - FT_Module_Destructor module_done; - FT_Module_Requester get_interface; - - } FT_Module_Class; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Add_Module */ - /* */ - /* <Description> */ - /* Adds a new module to a given library instance. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* clazz :: A pointer to class descriptor for the module. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* An error will be returned if a module already exists by that name, */ - /* or if the module requires a version of FreeType that is too great. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Add_Module( FT_Library library, - const FT_Module_Class* clazz ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Module */ - /* */ - /* <Description> */ - /* Finds a module by its name. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object. */ - /* */ - /* module_name :: The module's name (as an ASCII string). */ - /* */ - /* <Return> */ - /* A module handle. 0 if none was found. */ - /* */ - /* <Note> */ - /* FreeType's internal modules aren't documented very well, and you */ - /* should look up the source code for details. */ - /* */ - FT_EXPORT( FT_Module ) - FT_Get_Module( FT_Library library, - const char* module_name ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Remove_Module */ - /* */ - /* <Description> */ - /* Removes a given module from a library instance. */ - /* */ - /* <InOut> */ - /* library :: A handle to a library object. */ - /* */ - /* <Input> */ - /* module :: A handle to a module object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The module object is destroyed by the function in case of success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Remove_Module( FT_Library library, - FT_Module module ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Library */ - /* */ - /* <Description> */ - /* This function is used to create a new FreeType library instance */ - /* from a given memory object. It is thus possible to use libraries */ - /* with distinct memory allocators within the same program. */ - /* */ - /* <Input> */ - /* memory :: A handle to the original memory object. */ - /* */ - /* <Output> */ - /* alibrary :: A pointer to handle of a new library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Library( FT_Memory memory, - FT_Library *alibrary ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Library */ - /* */ - /* <Description> */ - /* Discards a given library object. This closes all drivers and */ - /* discards all resource objects. */ - /* */ - /* <Input> */ - /* library :: A handle to the target library. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Library( FT_Library library ); - -/* */ - - typedef void - (*FT_DebugHook_Func)( void* arg ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Debug_Hook */ - /* */ - /* <Description> */ - /* Sets a debug hook function for debugging the interpreter of a font */ - /* format. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* hook_index :: The index of the debug hook. You should use the */ - /* values defined in `ftobjs.h', e.g., */ - /* `FT_DEBUG_HOOK_TRUETYPE'. */ - /* */ - /* debug_hook :: The function used to debug the interpreter. */ - /* */ - /* <Note> */ - /* Currently, four debug hook slots are available, but only two (for */ - /* the TrueType and the Type 1 interpreter) are defined. */ - /* */ - /* Since the internal headers of FreeType are no longer installed, */ - /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ - /* This is a bug and will be fixed in a forthcoming release. */ - /* */ - FT_EXPORT( void ) - FT_Set_Debug_Hook( FT_Library library, - FT_UInt hook_index, - FT_DebugHook_Func debug_hook ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Add_Default_Modules */ - /* */ - /* <Description> */ - /* Adds the set of default drivers to a given library object. */ - /* This is only useful when you create a library object with */ - /* @FT_New_Library (usually to plug a custom memory manager). */ - /* */ - /* <InOut> */ - /* library :: A handle to a new library object. */ - /* */ - FT_EXPORT( void ) - FT_Add_Default_Modules( FT_Library library ); - - - - /************************************************************************** - * - * @section: - * truetype_engine - * - * @title: - * The TrueType Engine - * - * @abstract: - * TrueType bytecode support. - * - * @description: - * This section contains a function used to query the level of TrueType - * bytecode support compiled in this version of the library. - * - */ - - - /************************************************************************** - * - * @enum: - * FT_TrueTypeEngineType - * - * @description: - * A list of values describing which kind of TrueType bytecode - * engine is implemented in a given FT_Library instance. It is used - * by the @FT_Get_TrueType_Engine_Type function. - * - * @values: - * FT_TRUETYPE_ENGINE_TYPE_NONE :: - * The library doesn't implement any kind of bytecode interpreter. - * - * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: - * The library implements a bytecode interpreter that doesn't - * support the patented operations of the TrueType virtual machine. - * - * Its main use is to load certain Asian fonts which position and - * scale glyph components with bytecode instructions. It produces - * bad output for most other fonts. - * - * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: - * The library implements a bytecode interpreter that covers - * the full instruction set of the TrueType virtual machine. - * See the file `docs/PATENTS' for legal aspects. - * - * @since: - * 2.2 - * - */ - typedef enum - { - FT_TRUETYPE_ENGINE_TYPE_NONE = 0, - FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, - FT_TRUETYPE_ENGINE_TYPE_PATENTED - - } FT_TrueTypeEngineType; - - - /************************************************************************** - * - * @func: - * FT_Get_TrueType_Engine_Type - * - * @description: - * Return a @FT_TrueTypeEngineType value to indicate which level of - * the TrueType virtual machine a given library instance supports. - * - * @input: - * library :: - * A library instance. - * - * @return: - * A value indicating which level is supported. - * - * @since: - * 2.2 - * - */ - FT_EXPORT( FT_TrueTypeEngineType ) - FT_Get_TrueType_Engine_Type( FT_Library library ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTMODAPI_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftmoderr.h b/CMU462/deps/freetype/include/freetype2/freetype/ftmoderr.h deleted file mode 100755 index b0115dd..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftmoderr.h +++ /dev/null @@ -1,155 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmoderr.h */ -/* */ -/* FreeType module error offsets (specification). */ -/* */ -/* Copyright 2001, 2002, 2003, 2004, 2005 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the FreeType module error offsets. */ - /* */ - /* The lower byte gives the error code, the higher byte gives the */ - /* module. The base module has error offset 0. For example, the error */ - /* `FT_Err_Invalid_File_Format' has value 0x003, the error */ - /* `TT_Err_Invalid_File_Format' has value 0x1103, the error */ - /* `T1_Err_Invalid_File_Format' has value 0x1203, etc. */ - /* */ - /* Undefine the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in ftoption.h */ - /* to make the higher byte always zero (disabling the module error */ - /* mechanism). */ - /* */ - /* It can also be used to create a module error message table easily */ - /* with something like */ - /* */ - /* { */ - /* #undef __FTMODERR_H__ */ - /* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */ - /* #define FT_MODERR_START_LIST { */ - /* #define FT_MODERR_END_LIST { 0, 0 } }; */ - /* */ - /* const struct */ - /* { */ - /* int mod_err_offset; */ - /* const char* mod_err_msg */ - /* } ft_mod_errors[] = */ - /* */ - /* #include FT_MODULE_ERRORS_H */ - /* } */ - /* */ - /* To use such a table, all errors must be ANDed with 0xFF00 to remove */ - /* the error code. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTMODERR_H__ -#define __FTMODERR_H__ - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SETUP MACROS *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#undef FT_NEED_EXTERN_C - -#ifndef FT_MODERRDEF - -#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS -#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v, -#else -#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0, -#endif - -#define FT_MODERR_START_LIST enum { -#define FT_MODERR_END_LIST FT_Mod_Err_Max }; - -#ifdef __cplusplus -#define FT_NEED_EXTERN_C - extern "C" { -#endif - -#endif /* !FT_MODERRDEF */ - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** LIST MODULE ERROR BASES *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#ifdef FT_MODERR_START_LIST - FT_MODERR_START_LIST -#endif - - - FT_MODERRDEF( Base, 0x000, "base module" ) - FT_MODERRDEF( Autofit, 0x100, "autofitter module" ) - FT_MODERRDEF( BDF, 0x200, "BDF module" ) - FT_MODERRDEF( Cache, 0x300, "cache module" ) - FT_MODERRDEF( CFF, 0x400, "CFF module" ) - FT_MODERRDEF( CID, 0x500, "CID module" ) - FT_MODERRDEF( Gzip, 0x600, "Gzip module" ) - FT_MODERRDEF( LZW, 0x700, "LZW module" ) - FT_MODERRDEF( OTvalid, 0x800, "OpenType validation module" ) - FT_MODERRDEF( PCF, 0x900, "PCF module" ) - FT_MODERRDEF( PFR, 0xA00, "PFR module" ) - FT_MODERRDEF( PSaux, 0xB00, "PS auxiliary module" ) - FT_MODERRDEF( PShinter, 0xC00, "PS hinter module" ) - FT_MODERRDEF( PSnames, 0xD00, "PS names module" ) - FT_MODERRDEF( Raster, 0xE00, "raster module" ) - FT_MODERRDEF( SFNT, 0xF00, "SFNT module" ) - FT_MODERRDEF( Smooth, 0x1000, "smooth raster module" ) - FT_MODERRDEF( TrueType, 0x1100, "TrueType module" ) - FT_MODERRDEF( Type1, 0x1200, "Type 1 module" ) - FT_MODERRDEF( Type42, 0x1300, "Type 42 module" ) - FT_MODERRDEF( Winfonts, 0x1400, "Windows FON/FNT module" ) - - -#ifdef FT_MODERR_END_LIST - FT_MODERR_END_LIST -#endif - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** CLEANUP *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#ifdef FT_NEED_EXTERN_C - } -#endif - -#undef FT_MODERR_START_LIST -#undef FT_MODERR_END_LIST -#undef FT_MODERRDEF -#undef FT_NEED_EXTERN_C - - -#endif /* __FTMODERR_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftotval.h b/CMU462/deps/freetype/include/freetype2/freetype/ftotval.h deleted file mode 100755 index 7c488fd..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftotval.h +++ /dev/null @@ -1,198 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftotval.h */ -/* */ -/* FreeType API for validating OpenType tables (specification). */ -/* */ -/* Copyright 2004, 2005, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* */ -/* Warning: This module might be moved to a different library in the */ -/* future to avoid a tight dependency between FreeType and the */ -/* OpenType specification. */ -/* */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOTVAL_H__ -#define __FTOTVAL_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* ot_validation */ - /* */ - /* <Title> */ - /* OpenType Validation */ - /* */ - /* <Abstract> */ - /* An API to validate OpenType tables. */ - /* */ - /* <Description> */ - /* This section contains the declaration of functions to validate */ - /* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF). */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @enum: - * FT_VALIDATE_OTXXX - * - * @description: - * A list of bit-field constants used with @FT_OpenType_Validate to - * indicate which OpenType tables should be validated. - * - * @values: - * FT_VALIDATE_BASE :: - * Validate BASE table. - * - * FT_VALIDATE_GDEF :: - * Validate GDEF table. - * - * FT_VALIDATE_GPOS :: - * Validate GPOS table. - * - * FT_VALIDATE_GSUB :: - * Validate GSUB table. - * - * FT_VALIDATE_JSTF :: - * Validate JSTF table. - * - * FT_VALIDATE_OT :: - * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF). - * - */ -#define FT_VALIDATE_BASE 0x0100 -#define FT_VALIDATE_GDEF 0x0200 -#define FT_VALIDATE_GPOS 0x0400 -#define FT_VALIDATE_GSUB 0x0800 -#define FT_VALIDATE_JSTF 0x1000 - -#define FT_VALIDATE_OT FT_VALIDATE_BASE | \ - FT_VALIDATE_GDEF | \ - FT_VALIDATE_GPOS | \ - FT_VALIDATE_GSUB | \ - FT_VALIDATE_JSTF - - /* */ - - /********************************************************************** - * - * @function: - * FT_OpenType_Validate - * - * @description: - * Validate various OpenType tables to assure that all offsets and - * indices are valid. The idea is that a higher-level library which - * actually does the text layout can access those tables without - * error checking (which can be quite time consuming). - * - * @input: - * face :: - * A handle to the input face. - * - * validation_flags :: - * A bit field which specifies the tables to be validated. See - * @FT_VALIDATE_OTXXX for possible values. - * - * @output: - * BASE_table :: - * A pointer to the BASE table. - * - * GDEF_table :: - * A pointer to the GDEF table. - * - * GPOS_table :: - * A pointer to the GPOS table. - * - * GSUB_table :: - * A pointer to the GSUB table. - * - * JSTF_table :: - * A pointer to the JSTF table. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function only works with OpenType fonts, returning an error - * otherwise. - * - * After use, the application should deallocate the five tables with - * @FT_OpenType_Free. A NULL value indicates that the table either - * doesn't exist in the font, or the application hasn't asked for - * validation. - */ - FT_EXPORT( FT_Error ) - FT_OpenType_Validate( FT_Face face, - FT_UInt validation_flags, - FT_Bytes *BASE_table, - FT_Bytes *GDEF_table, - FT_Bytes *GPOS_table, - FT_Bytes *GSUB_table, - FT_Bytes *JSTF_table ); - - /* */ - - /********************************************************************** - * - * @function: - * FT_OpenType_Free - * - * @description: - * Free the buffer allocated by OpenType validator. - * - * @input: - * face :: - * A handle to the input face. - * - * table :: - * The pointer to the buffer that is allocated by - * @FT_OpenType_Validate. - * - * @note: - * This function must be used to free the buffer allocated by - * @FT_OpenType_Validate only. - */ - FT_EXPORT( void ) - FT_OpenType_Free( FT_Face face, - FT_Bytes table ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTOTVAL_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftoutln.h b/CMU462/deps/freetype/include/freetype2/freetype/ftoutln.h deleted file mode 100755 index 786ae13..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftoutln.h +++ /dev/null @@ -1,526 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoutln.h */ -/* */ -/* Support for the FT_Outline type used to store glyph shapes of */ -/* most scalable font formats (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOUTLN_H__ -#define __FTOUTLN_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /* <Title> */ - /* Outline Processing */ - /* */ - /* <Abstract> */ - /* Functions to create, transform, and render vectorial glyph images. */ - /* */ - /* <Description> */ - /* This section contains routines used to create and destroy scalable */ - /* glyph images known as `outlines'. These can also be measured, */ - /* transformed, and converted into bitmaps and pixmaps. */ - /* */ - /* <Order> */ - /* FT_Outline */ - /* FT_OUTLINE_FLAGS */ - /* FT_Outline_New */ - /* FT_Outline_Done */ - /* FT_Outline_Copy */ - /* FT_Outline_Translate */ - /* FT_Outline_Transform */ - /* FT_Outline_Embolden */ - /* FT_Outline_Reverse */ - /* FT_Outline_Check */ - /* */ - /* FT_Outline_Get_CBox */ - /* FT_Outline_Get_BBox */ - /* */ - /* FT_Outline_Get_Bitmap */ - /* FT_Outline_Render */ - /* */ - /* FT_Outline_Decompose */ - /* FT_Outline_Funcs */ - /* FT_Outline_MoveTo_Func */ - /* FT_Outline_LineTo_Func */ - /* FT_Outline_ConicTo_Func */ - /* FT_Outline_CubicTo_Func */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Decompose */ - /* */ - /* <Description> */ - /* Walks over an outline's structure to decompose it into individual */ - /* segments and Bézier arcs. This function is also able to emit */ - /* `move to' and `close to' operations to indicate the start and end */ - /* of new contours in the outline. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source target. */ - /* */ - /* func_interface :: A table of `emitters', i.e,. function pointers */ - /* called during decomposition to indicate path */ - /* operations. */ - /* */ - /* <InOut> */ - /* user :: A typeless pointer which is passed to each */ - /* emitter during the decomposition. It can be */ - /* used to store the state during the */ - /* decomposition. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Decompose( FT_Outline* outline, - const FT_Outline_Funcs* func_interface, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_New */ - /* */ - /* <Description> */ - /* Creates a new outline of a given size. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object from where the */ - /* outline is allocated. Note however that the new */ - /* outline will *not* necessarily be *freed*, when */ - /* destroying the library, by @FT_Done_FreeType. */ - /* */ - /* numPoints :: The maximal number of points within the outline. */ - /* */ - /* numContours :: The maximal number of contours within the outline. */ - /* */ - /* <Output> */ - /* anoutline :: A handle to the new outline. NULL in case of */ - /* error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The reason why this function takes a `library' parameter is simply */ - /* to use the library's memory allocator. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_New( FT_Library library, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ); - - - FT_EXPORT( FT_Error ) - FT_Outline_New_Internal( FT_Memory memory, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Done */ - /* */ - /* <Description> */ - /* Destroys an outline created with @FT_Outline_New. */ - /* */ - /* <Input> */ - /* library :: A handle of the library object used to allocate the */ - /* outline. */ - /* */ - /* outline :: A pointer to the outline object to be discarded. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* If the outline's `owner' field is not set, only the outline */ - /* descriptor will be released. */ - /* */ - /* The reason why this function takes an `library' parameter is */ - /* simply to use ft_mem_free(). */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Done( FT_Library library, - FT_Outline* outline ); - - - FT_EXPORT( FT_Error ) - FT_Outline_Done_Internal( FT_Memory memory, - FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Check */ - /* */ - /* <Description> */ - /* Check the contents of an outline descriptor. */ - /* */ - /* <Input> */ - /* outline :: A handle to a source outline. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Check( FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_CBox */ - /* */ - /* <Description> */ - /* Returns an outline's `control box'. The control box encloses all */ - /* the outline's points, including Bézier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ - /* which contains Bézier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ - /* and arcs in the outline. To get the latter, you can use the */ - /* `ftbbox' component which is dedicated to this single task. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <Output> */ - /* acbox :: The outline's control box. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Get_CBox( const FT_Outline* outline, - FT_BBox *acbox ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Translate */ - /* */ - /* <Description> */ - /* Applies a simple translation to the points of an outline. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Input> */ - /* xOffset :: The horizontal offset. */ - /* */ - /* yOffset :: The vertical offset. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Translate( const FT_Outline* outline, - FT_Pos xOffset, - FT_Pos yOffset ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Copy */ - /* */ - /* <Description> */ - /* Copies an outline into another one. Both objects must have the */ - /* same sizes (number of points & number of contours) when this */ - /* function is called. */ - /* */ - /* <Input> */ - /* source :: A handle to the source outline. */ - /* */ - /* <Output> */ - /* target :: A handle to the target outline. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Copy( const FT_Outline* source, - FT_Outline *target ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Transform */ - /* */ - /* <Description> */ - /* Applies a simple 2x2 matrix to all of an outline's points. Useful */ - /* for applying rotations, slanting, flipping, etc. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the transformation matrix. */ - /* */ - /* <Note> */ - /* You can use @FT_Outline_Translate if you need to translate the */ - /* outline's points. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Transform( const FT_Outline* outline, - const FT_Matrix* matrix ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Embolden */ - /* */ - /* <Description> */ - /* Emboldens an outline. The new outline will be at most 4 times */ - /* `strength' pixels wider and higher. You may think of the left and */ - /* bottom borders as unchanged. */ - /* */ - /* Negative `strength' values to reduce the outline thickness are */ - /* possible also. */ - /* */ - /* <InOut> */ - /* outline :: A handle to the target outline. */ - /* */ - /* <Input> */ - /* strength :: How strong the glyph is emboldened. Expressed in */ - /* 26.6 pixel format. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The used algorithm to increase or decrease the thickness of the */ - /* glyph doesn't change the number of points; this means that certain */ - /* situations like acute angles or intersections are sometimes */ - /* handled incorrectly. */ - /* */ - /* Example call: */ - /* */ - /* { */ - /* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */ - /* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */ - /* FT_Outline_Embolden( &face->slot->outline, strength ); */ - /* } */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Embolden( FT_Outline* outline, - FT_Pos strength ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Reverse */ - /* */ - /* <Description> */ - /* Reverses the drawing direction of an outline. This is used to */ - /* ensure consistent fill conventions for mirrored glyphs. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Note> */ - /* This functions toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ - /* the outline's `flags' field. */ - /* */ - /* It shouldn't be used by a normal client application, unless it */ - /* knows what it is doing. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Reverse( FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_Bitmap */ - /* */ - /* <Description> */ - /* Renders an outline within a bitmap. The outline's image is simply */ - /* OR-ed to the target bitmap. */ - /* */ - /* <Input> */ - /* library :: A handle to a FreeType library object. */ - /* */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <InOut> */ - /* abitmap :: A pointer to the target bitmap descriptor. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function does NOT CREATE the bitmap, it only renders an */ - /* outline image within the one you pass to it! */ - /* */ - /* It will use the raster corresponding to the default glyph format. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Get_Bitmap( FT_Library library, - FT_Outline* outline, - const FT_Bitmap *abitmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Render */ - /* */ - /* <Description> */ - /* Renders an outline within a bitmap using the current scan-convert. */ - /* This functions uses an @FT_Raster_Params structure as an argument, */ - /* allowing advanced features like direct composition, translucency, */ - /* etc. */ - /* */ - /* <Input> */ - /* library :: A handle to a FreeType library object. */ - /* */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <InOut> */ - /* params :: A pointer to an @FT_Raster_Params structure used to */ - /* describe the rendering operation. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* You should know what you are doing and how @FT_Raster_Params works */ - /* to use this function. */ - /* */ - /* The field `params.source' will be set to `outline' before the scan */ - /* converter is called, which means that the value you give to it is */ - /* actually ignored. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Render( FT_Library library, - FT_Outline* outline, - FT_Raster_Params* params ); - - - /************************************************************************** - * - * @enum: - * FT_Orientation - * - * @description: - * A list of values used to describe an outline's contour orientation. - * - * The TrueType and Postscript specifications use different conventions - * to determine whether outline contours should be filled or unfilled. - * - * @values: - * FT_ORIENTATION_TRUETYPE :: - * According to the TrueType specification, clockwise contours must - * be filled, and counter-clockwise ones must be unfilled. - * - * FT_ORIENTATION_POSTSCRIPT :: - * According to the Postscript specification, counter-clockwise contours - * must be filled, and clockwise ones must be unfilled. - * - * FT_ORIENTATION_FILL_RIGHT :: - * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to - * remember that in TrueType, everything that is to the right of - * the drawing direction of a contour must be filled. - * - * FT_ORIENTATION_FILL_LEFT :: - * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to - * remember that in Postscript, everything that is to the left of - * the drawing direction of a contour must be filled. - * - * FT_ORIENTATION_NONE :: - * The orientation cannot be determined. That is, different parts of - * the glyph have different orientation. - * - */ - typedef enum - { - FT_ORIENTATION_TRUETYPE = 0, - FT_ORIENTATION_POSTSCRIPT = 1, - FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE, - FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT, - FT_ORIENTATION_NONE - - } FT_Orientation; - - - /************************************************************************** - * - * @function: - * FT_Outline_Get_Orientation - * - * @description: - * This function analyzes a glyph outline and tries to compute its - * fill orientation (see @FT_Orientation). This is done by computing - * the direction of each global horizontal and/or vertical extrema - * within the outline. - * - * Note that this will return @FT_ORIENTATION_TRUETYPE for empty - * outlines. - * - * @input: - * outline :: - * A handle to the source outline. - * - * @return: - * The orientation. - * - */ - FT_EXPORT( FT_Orientation ) - FT_Outline_Get_Orientation( FT_Outline* outline ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTOUTLN_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftpfr.h b/CMU462/deps/freetype/include/freetype2/freetype/ftpfr.h deleted file mode 100755 index e2801fd..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftpfr.h +++ /dev/null @@ -1,172 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftpfr.h */ -/* */ -/* FreeType API for accessing PFR-specific data (specification only). */ -/* */ -/* Copyright 2002, 2003, 2004, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTPFR_H__ -#define __FTPFR_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* pfr_fonts */ - /* */ - /* <Title> */ - /* PFR Fonts */ - /* */ - /* <Abstract> */ - /* PFR/TrueDoc specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of PFR-specific functions. */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Metrics - * - * @description: - * Return the outline and metrics resolutions of a given PFR face. - * - * @input: - * face :: Handle to the input face. It can be a non-PFR face. - * - * @output: - * aoutline_resolution :: - * Outline resolution. This is equivalent to `face->units_per_EM'. - * Optional (parameter can be NULL). - * - * ametrics_resolution :: - * Metrics resolution. This is equivalent to `outline_resolution' - * for non-PFR fonts. Optional (parameter can be NULL). - * - * ametrics_x_scale :: - * A 16.16 fixed-point number used to scale distance expressed - * in metrics units to device sub-pixels. This is equivalent to - * `face->size->x_scale', but for metrics only. Optional (parameter - * can be NULL) - * - * ametrics_y_scale :: - * Same as `ametrics_x_scale' but for the vertical direction. - * optional (parameter can be NULL) - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * If the input face is not a PFR, this function will return an error. - * However, in all cases, it will return valid values. - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Metrics( FT_Face face, - FT_UInt *aoutline_resolution, - FT_UInt *ametrics_resolution, - FT_Fixed *ametrics_x_scale, - FT_Fixed *ametrics_y_scale ); - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Kerning - * - * @description: - * Return the kerning pair corresponding to two glyphs in a PFR face. - * The distance is expressed in metrics units, unlike the result of - * @FT_Get_Kerning. - * - * @input: - * face :: A handle to the input face. - * - * left :: Index of the left glyph. - * - * right :: Index of the right glyph. - * - * @output: - * avector :: A kerning vector. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function always return distances in original PFR metrics - * units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED - * mode, which always returns distances converted to outline units. - * - * You can use the value of the `x_scale' and `y_scale' parameters - * returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels. - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Kerning( FT_Face face, - FT_UInt left, - FT_UInt right, - FT_Vector *avector ); - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Advance - * - * @description: - * Return a given glyph advance, expressed in original metrics units, - * from a PFR font. - * - * @input: - * face :: A handle to the input face. - * - * gindex :: The glyph index. - * - * @output: - * aadvance :: The glyph advance in metrics units. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics - * to convert the advance to device sub-pixels (i.e., 1/64th of pixels). - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Advance( FT_Face face, - FT_UInt gindex, - FT_Pos *aadvance ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTPFR_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftrender.h b/CMU462/deps/freetype/include/freetype2/freetype/ftrender.h deleted file mode 100755 index 5b07f08..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftrender.h +++ /dev/null @@ -1,229 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftrender.h */ -/* */ -/* FreeType renderer modules public interface (specification). */ -/* */ -/* Copyright 1996-2001, 2005, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTRENDER_H__ -#define __FTRENDER_H__ - - -#include <ft2build.h> -#include FT_MODULE_H -#include FT_GLYPH_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* module_management */ - /* */ - /*************************************************************************/ - - - /* create a new glyph object */ - typedef FT_Error - (*FT_Glyph_InitFunc)( FT_Glyph glyph, - FT_GlyphSlot slot ); - - /* destroys a given glyph object */ - typedef void - (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); - - typedef void - (*FT_Glyph_TransformFunc)( FT_Glyph glyph, - const FT_Matrix* matrix, - const FT_Vector* delta ); - - typedef void - (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, - FT_BBox* abbox ); - - typedef FT_Error - (*FT_Glyph_CopyFunc)( FT_Glyph source, - FT_Glyph target ); - - typedef FT_Error - (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, - FT_GlyphSlot slot ); - -/* deprecated */ -#define FT_Glyph_Init_Func FT_Glyph_InitFunc -#define FT_Glyph_Done_Func FT_Glyph_DoneFunc -#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc -#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc -#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc -#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc - - - struct FT_Glyph_Class_ - { - FT_Long glyph_size; - FT_Glyph_Format glyph_format; - FT_Glyph_InitFunc glyph_init; - FT_Glyph_DoneFunc glyph_done; - FT_Glyph_CopyFunc glyph_copy; - FT_Glyph_TransformFunc glyph_transform; - FT_Glyph_GetBBoxFunc glyph_bbox; - FT_Glyph_PrepareFunc glyph_prepare; - }; - - - typedef FT_Error - (*FT_Renderer_RenderFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_UInt mode, - const FT_Vector* origin ); - - typedef FT_Error - (*FT_Renderer_TransformFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - const FT_Matrix* matrix, - const FT_Vector* delta ); - - - typedef void - (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_BBox* cbox ); - - - typedef FT_Error - (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, - FT_ULong mode_tag, - FT_Pointer mode_ptr ); - -/* deprecated identifiers */ -#define FTRenderer_render FT_Renderer_RenderFunc -#define FTRenderer_transform FT_Renderer_TransformFunc -#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc -#define FTRenderer_setMode FT_Renderer_SetModeFunc - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Renderer_Class */ - /* */ - /* <Description> */ - /* The renderer module class descriptor. */ - /* */ - /* <Fields> */ - /* root :: The root @FT_Module_Class fields. */ - /* */ - /* glyph_format :: The glyph image format this renderer handles. */ - /* */ - /* render_glyph :: A method used to render the image that is in a */ - /* given glyph slot into a bitmap. */ - /* */ - /* set_mode :: A method used to pass additional parameters. */ - /* */ - /* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. This */ - /* is a pointer to its raster's class. */ - /* */ - /* raster :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. This */ - /* is a pointer to the corresponding raster object, */ - /* if any. */ - /* */ - typedef struct FT_Renderer_Class_ - { - FT_Module_Class root; - - FT_Glyph_Format glyph_format; - - FT_Renderer_RenderFunc render_glyph; - FT_Renderer_TransformFunc transform_glyph; - FT_Renderer_GetCBoxFunc get_glyph_cbox; - FT_Renderer_SetModeFunc set_mode; - - FT_Raster_Funcs* raster_class; - - } FT_Renderer_Class; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Renderer */ - /* */ - /* <Description> */ - /* Retrieves the current renderer for a given glyph format. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object. */ - /* */ - /* format :: The glyph format. */ - /* */ - /* <Return> */ - /* A renderer handle. 0 if none found. */ - /* */ - /* <Note> */ - /* An error will be returned if a module already exists by that name, */ - /* or if the module requires a version of FreeType that is too great. */ - /* */ - /* To add a new renderer, simply use @FT_Add_Module. To retrieve a */ - /* renderer by its name, use @FT_Get_Module. */ - /* */ - FT_EXPORT( FT_Renderer ) - FT_Get_Renderer( FT_Library library, - FT_Glyph_Format format ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Renderer */ - /* */ - /* <Description> */ - /* Sets the current renderer to use, and set additional mode. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* renderer :: A handle to the renderer object. */ - /* */ - /* num_params :: The number of additional parameters. */ - /* */ - /* parameters :: Additional parameters. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* In case of success, the renderer will be used to convert glyph */ - /* images in the renderer's known format into bitmaps. */ - /* */ - /* This doesn't change the current renderer for other formats. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Renderer( FT_Library library, - FT_Renderer renderer, - FT_UInt num_params, - FT_Parameter* parameters ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTRENDER_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftsizes.h b/CMU462/deps/freetype/include/freetype2/freetype/ftsizes.h deleted file mode 100755 index 622df16..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftsizes.h +++ /dev/null @@ -1,159 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsizes.h */ -/* */ -/* FreeType size objects management (specification). */ -/* */ -/* Copyright 1996-2001, 2003, 2004, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Typical application would normally not need to use these functions. */ - /* However, they have been placed in a public API for the rare cases */ - /* where they are needed. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTSIZES_H__ -#define __FTSIZES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* sizes_management */ - /* */ - /* <Title> */ - /* Size Management */ - /* */ - /* <Abstract> */ - /* Managing multiple sizes per face. */ - /* */ - /* <Description> */ - /* When creating a new face object (e.g., with @FT_New_Face), an */ - /* @FT_Size object is automatically created and used to store all */ - /* pixel-size dependent information, available in the `face->size' */ - /* field. */ - /* */ - /* It is however possible to create more sizes for a given face, */ - /* mostly in order to manage several character pixel sizes of the */ - /* same font family and style. See @FT_New_Size and @FT_Done_Size. */ - /* */ - /* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */ - /* modify the contents of the current `active' size; you thus need */ - /* to use @FT_Activate_Size to change it. */ - /* */ - /* 99% of applications won't need the functions provided here, */ - /* especially if they use the caching sub-system, so be cautious */ - /* when using these. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Size */ - /* */ - /* <Description> */ - /* Create a new size object from a given face object. */ - /* */ - /* <Input> */ - /* face :: A handle to a parent face object. */ - /* */ - /* <Output> */ - /* asize :: A handle to a new size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* You need to call @FT_Activate_Size in order to select the new size */ - /* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */ - /* @FT_Load_Glyph, @FT_Load_Char, etc. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Size( FT_Face face, - FT_Size* size ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Size */ - /* */ - /* <Description> */ - /* Discard a given size object. Note that @FT_Done_Face */ - /* automatically discards all size objects allocated with */ - /* @FT_New_Size. */ - /* */ - /* <Input> */ - /* size :: A handle to a target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Size( FT_Size size ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Activate_Size */ - /* */ - /* <Description> */ - /* Even though it is possible to create several size objects for a */ - /* given face (see @FT_New_Size for details), functions like */ - /* @FT_Load_Glyph or @FT_Load_Char only use the last-created one to */ - /* determine the `current character pixel size'. */ - /* */ - /* This function can be used to `activate' a previously created size */ - /* object. */ - /* */ - /* <Input> */ - /* size :: A handle to a target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* If `face' is the size's parent face object, this function changes */ - /* the value of `face->size' to the input size handle. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Activate_Size( FT_Size size ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTSIZES_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftsnames.h b/CMU462/deps/freetype/include/freetype2/freetype/ftsnames.h deleted file mode 100755 index 003cbcd..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftsnames.h +++ /dev/null @@ -1,170 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsnames.h */ -/* */ -/* Simple interface to access SFNT name tables (which are used */ -/* to hold font names, copyright info, notices, etc.) (specification). */ -/* */ -/* This is _not_ used to retrieve glyph names! */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FT_SFNT_NAMES_H__ -#define __FT_SFNT_NAMES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* sfnt_names */ - /* */ - /* <Title> */ - /* SFNT Names */ - /* */ - /* <Abstract> */ - /* Access the names embedded in TrueType and OpenType files. */ - /* */ - /* <Description> */ - /* The TrueType and OpenType specification allow the inclusion of */ - /* a special `names table' in font files. This table contains */ - /* textual (and internationalized) information regarding the font, */ - /* like family name, copyright, version, etc. */ - /* */ - /* The definitions below are used to access them if available. */ - /* */ - /* Note that this has nothing to do with glyph names! */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SfntName */ - /* */ - /* <Description> */ - /* A structure used to model an SFNT `name' table entry. */ - /* */ - /* <Fields> */ - /* platform_id :: The platform ID for `string'. */ - /* */ - /* encoding_id :: The encoding ID for `string'. */ - /* */ - /* language_id :: The language ID for `string'. */ - /* */ - /* name_id :: An identifier for `string'. */ - /* */ - /* string :: The `name' string. Note that its format differs */ - /* depending on the (platform,encoding) pair. It can */ - /* be a Pascal String, a UTF-16 one, etc. */ - /* */ - /* Generally speaking, the string is not */ - /* zero-terminated. Please refer to the TrueType */ - /* specification for details. */ - /* */ - /* string_len :: The length of `string' in bytes. */ - /* */ - /* <Note> */ - /* Possible values for `platform_id', `encoding_id', `language_id', */ - /* and `name_id' are given in the file `ttnameid.h'. For details */ - /* please refer to the TrueType or OpenType specification. */ - /* */ - /* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */ - /* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */ - /* */ - typedef struct FT_SfntName_ - { - FT_UShort platform_id; - FT_UShort encoding_id; - FT_UShort language_id; - FT_UShort name_id; - - FT_Byte* string; /* this string is *not* null-terminated! */ - FT_UInt string_len; /* in bytes */ - - } FT_SfntName; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Name_Count */ - /* */ - /* <Description> */ - /* Retrieves the number of name strings in the SFNT `name' table. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Return> */ - /* The number of strings in the `name' table. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Sfnt_Name_Count( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Name */ - /* */ - /* <Description> */ - /* Retrieves a string of the SFNT `name' table for a given index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* idx :: The index of the `name' string. */ - /* */ - /* <Output> */ - /* aname :: The indexed @FT_SfntName structure. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The `string' array returned in the `aname' structure is not */ - /* null-terminated. */ - /* */ - /* Use @FT_Get_Sfnt_Name_Count to get the total number of available */ - /* `name' table entries, then do a loop until you get the right */ - /* platform, encoding, and name ID. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Sfnt_Name( FT_Face face, - FT_UInt idx, - FT_SfntName *aname ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FT_SFNT_NAMES_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftsynth.h b/CMU462/deps/freetype/include/freetype2/freetype/ftsynth.h deleted file mode 100755 index 36984bf..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftsynth.h +++ /dev/null @@ -1,73 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsynth.h */ -/* */ -/* FreeType synthesizing code for emboldening and slanting */ -/* (specification). */ -/* */ -/* Copyright 2000-2001, 2003, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********* *********/ - /********* WARNING, THIS IS ALPHA CODE, THIS API *********/ - /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ - /********* FREETYPE DEVELOPMENT TEAM *********/ - /********* *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#ifndef __FTSYNTH_H__ -#define __FTSYNTH_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /* Make sure slot owns slot->bitmap. */ - FT_EXPORT( FT_Error ) - FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); - - /* Do not use this function directly! Copy the code to */ - /* your application and modify it to suit your need. */ - FT_EXPORT( void ) - FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); - - - FT_EXPORT( void ) - FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); - - /* */ - -FT_END_HEADER - -#endif /* __FTSYNTH_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/fttypes.h b/CMU462/deps/freetype/include/freetype2/freetype/fttypes.h deleted file mode 100755 index 2340bac..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/fttypes.h +++ /dev/null @@ -1,583 +0,0 @@ -/***************************************************************************/ -/* */ -/* fttypes.h */ -/* */ -/* FreeType simple types definitions (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2004, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTTYPES_H__ -#define __FTTYPES_H__ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_SYSTEM_H -#include FT_IMAGE_H - -#include <stddef.h> - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /* <Title> */ - /* Basic Data Types */ - /* */ - /* <Abstract> */ - /* The basic data types defined by the library. */ - /* */ - /* <Description> */ - /* This section contains the basic data types defined by FreeType 2, */ - /* ranging from simple scalar types to bitmap descriptors. More */ - /* font-specific structures are defined in a different section. */ - /* */ - /* <Order> */ - /* FT_Byte */ - /* FT_Bytes */ - /* FT_Char */ - /* FT_Int */ - /* FT_UInt */ - /* FT_Short */ - /* FT_UShort */ - /* FT_Long */ - /* FT_ULong */ - /* FT_Bool */ - /* FT_Offset */ - /* FT_PtrDist */ - /* FT_String */ - /* FT_Tag */ - /* FT_Error */ - /* FT_Fixed */ - /* FT_Pointer */ - /* FT_Pos */ - /* FT_Vector */ - /* FT_BBox */ - /* FT_Matrix */ - /* FT_FWord */ - /* FT_UFWord */ - /* FT_F2Dot14 */ - /* FT_UnitVector */ - /* FT_F26Dot6 */ - /* */ - /* */ - /* FT_Generic */ - /* FT_Generic_Finalizer */ - /* */ - /* FT_Bitmap */ - /* FT_Pixel_Mode */ - /* FT_Palette_Mode */ - /* FT_Glyph_Format */ - /* FT_IMAGE_TAG */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Bool */ - /* */ - /* <Description> */ - /* A typedef of unsigned char, used for simple booleans. As usual, */ - /* values 1 and 0 represent true and false, respectively. */ - /* */ - typedef unsigned char FT_Bool; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_FWord */ - /* */ - /* <Description> */ - /* A signed 16-bit integer used to store a distance in original font */ - /* units. */ - /* */ - typedef signed short FT_FWord; /* distance in FUnits */ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UFWord */ - /* */ - /* <Description> */ - /* An unsigned 16-bit integer used to store a distance in original */ - /* font units. */ - /* */ - typedef unsigned short FT_UFWord; /* unsigned distance */ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Char */ - /* */ - /* <Description> */ - /* A simple typedef for the _signed_ char type. */ - /* */ - typedef signed char FT_Char; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Byte */ - /* */ - /* <Description> */ - /* A simple typedef for the _unsigned_ char type. */ - /* */ - typedef unsigned char FT_Byte; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Bytes */ - /* */ - /* <Description> */ - /* A typedef for constant memory areas. */ - /* */ - typedef const FT_Byte* FT_Bytes; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Tag */ - /* */ - /* <Description> */ - /* A typedef for 32bit tags (as used in the SFNT format). */ - /* */ - typedef FT_UInt32 FT_Tag; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_String */ - /* */ - /* <Description> */ - /* A simple typedef for the char type, usually used for strings. */ - /* */ - typedef char FT_String; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Short */ - /* */ - /* <Description> */ - /* A typedef for signed short. */ - /* */ - typedef signed short FT_Short; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UShort */ - /* */ - /* <Description> */ - /* A typedef for unsigned short. */ - /* */ - typedef unsigned short FT_UShort; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Int */ - /* */ - /* <Description> */ - /* A typedef for the int type. */ - /* */ - typedef signed int FT_Int; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UInt */ - /* */ - /* <Description> */ - /* A typedef for the unsigned int type. */ - /* */ - typedef unsigned int FT_UInt; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Long */ - /* */ - /* <Description> */ - /* A typedef for signed long. */ - /* */ - typedef signed long FT_Long; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_ULong */ - /* */ - /* <Description> */ - /* A typedef for unsigned long. */ - /* */ - typedef unsigned long FT_ULong; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_F2Dot14 */ - /* */ - /* <Description> */ - /* A signed 2.14 fixed float type used for unit vectors. */ - /* */ - typedef signed short FT_F2Dot14; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_F26Dot6 */ - /* */ - /* <Description> */ - /* A signed 26.6 fixed float type used for vectorial pixel */ - /* coordinates. */ - /* */ - typedef signed long FT_F26Dot6; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Fixed */ - /* */ - /* <Description> */ - /* This type is used to store 16.16 fixed float values, like scaling */ - /* values or matrix coefficients. */ - /* */ - typedef signed long FT_Fixed; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Error */ - /* */ - /* <Description> */ - /* The FreeType error code type. A value of 0 is always interpreted */ - /* as a successful operation. */ - /* */ - typedef int FT_Error; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Pointer */ - /* */ - /* <Description> */ - /* A simple typedef for a typeless pointer. */ - /* */ - typedef void* FT_Pointer; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Offset */ - /* */ - /* <Description> */ - /* This is equivalent to the ANSI C `size_t' type, i.e., the largest */ - /* _unsigned_ integer type used to express a file size or position, */ - /* or a memory block size. */ - /* */ - typedef size_t FT_Offset; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_PtrDist */ - /* */ - /* <Description> */ - /* This is equivalent to the ANSI C `ptrdiff_t' type, i.e., the */ - /* largest _signed_ integer type used to express the distance */ - /* between two pointers. */ - /* */ - typedef ft_ptrdiff_t FT_PtrDist; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_UnitVector */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2D vector unit vector. Uses */ - /* FT_F2Dot14 types. */ - /* */ - /* <Fields> */ - /* x :: Horizontal coordinate. */ - /* */ - /* y :: Vertical coordinate. */ - /* */ - typedef struct FT_UnitVector_ - { - FT_F2Dot14 x; - FT_F2Dot14 y; - - } FT_UnitVector; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Matrix */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2x2 matrix. Coefficients are */ - /* in 16.16 fixed float format. The computation performed is: */ - /* */ - /* { */ - /* x' = x*xx + y*xy */ - /* y' = x*yx + y*yy */ - /* } */ - /* */ - /* <Fields> */ - /* xx :: Matrix coefficient. */ - /* */ - /* xy :: Matrix coefficient. */ - /* */ - /* yx :: Matrix coefficient. */ - /* */ - /* yy :: Matrix coefficient. */ - /* */ - typedef struct FT_Matrix_ - { - FT_Fixed xx, xy; - FT_Fixed yx, yy; - - } FT_Matrix; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Data */ - /* */ - /* <Description> */ - /* Read-only binary data represented as a pointer and a length. */ - /* */ - /* <Fields> */ - /* pointer :: The data. */ - /* */ - /* length :: The length of the data in bytes. */ - /* */ - typedef struct FT_Data_ - { - const FT_Byte* pointer; - FT_Int length; - - } FT_Data; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Generic_Finalizer */ - /* */ - /* <Description> */ - /* Describes a function used to destroy the `client' data of any */ - /* FreeType object. See the description of the @FT_Generic type for */ - /* details of usage. */ - /* */ - /* <Input> */ - /* The address of the FreeType object which is under finalization. */ - /* Its client data is accessed through its `generic' field. */ - /* */ - typedef void (*FT_Generic_Finalizer)(void* object); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Generic */ - /* */ - /* <Description> */ - /* Client applications often need to associate their own data to a */ - /* variety of FreeType core objects. For example, a text layout API */ - /* might want to associate a glyph cache to a given size object. */ - /* */ - /* Most FreeType object contains a `generic' field, of type */ - /* FT_Generic, which usage is left to client applications and font */ - /* servers. */ - /* */ - /* It can be used to store a pointer to client-specific data, as well */ - /* as the address of a `finalizer' function, which will be called by */ - /* FreeType when the object is destroyed (for example, the previous */ - /* client example would put the address of the glyph cache destructor */ - /* in the `finalizer' field). */ - /* */ - /* <Fields> */ - /* data :: A typeless pointer to any client-specified data. This */ - /* field is completely ignored by the FreeType library. */ - /* */ - /* finalizer :: A pointer to a `generic finalizer' function, which */ - /* will be called when the object is destroyed. If this */ - /* field is set to NULL, no code will be called. */ - /* */ - typedef struct FT_Generic_ - { - void* data; - FT_Generic_Finalizer finalizer; - - } FT_Generic; - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_MAKE_TAG */ - /* */ - /* <Description> */ - /* This macro converts four-letter tags which are used to label */ - /* TrueType tables into an unsigned long to be used within FreeType. */ - /* */ - /* <Note> */ - /* The produced values *must* be 32bit integers. Don't redefine this */ - /* macro. */ - /* */ -#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ - ( ( (FT_ULong)_x1 << 24 ) | \ - ( (FT_ULong)_x2 << 16 ) | \ - ( (FT_ULong)_x3 << 8 ) | \ - (FT_ULong)_x4 ) - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* L I S T M A N A G E M E N T */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* list_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_ListNode */ - /* */ - /* <Description> */ - /* Many elements and objects in FreeType are listed through an */ - /* @FT_List record (see @FT_ListRec). As its name suggests, an */ - /* FT_ListNode is a handle to a single list element. */ - /* */ - typedef struct FT_ListNodeRec_* FT_ListNode; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_List */ - /* */ - /* <Description> */ - /* A handle to a list record (see @FT_ListRec). */ - /* */ - typedef struct FT_ListRec_* FT_List; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_ListNodeRec */ - /* */ - /* <Description> */ - /* A structure used to hold a single list element. */ - /* */ - /* <Fields> */ - /* prev :: The previous element in the list. NULL if first. */ - /* */ - /* next :: The next element in the list. NULL if last. */ - /* */ - /* data :: A typeless pointer to the listed object. */ - /* */ - typedef struct FT_ListNodeRec_ - { - FT_ListNode prev; - FT_ListNode next; - void* data; - - } FT_ListNodeRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_ListRec */ - /* */ - /* <Description> */ - /* A structure used to hold a simple doubly-linked list. These are */ - /* used in many parts of FreeType. */ - /* */ - /* <Fields> */ - /* head :: The head (first element) of doubly-linked list. */ - /* */ - /* tail :: The tail (last element) of doubly-linked list. */ - /* */ - typedef struct FT_ListRec_ - { - FT_ListNode head; - FT_ListNode tail; - - } FT_ListRec; - - - /* */ - -#define FT_IS_EMPTY( list ) ( (list).head == 0 ) - - /* return base error code (without module-specific prefix) */ -#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) - - /* return module error code */ -#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) - -#define FT_BOOL( x ) ( (FT_Bool)( x ) ) - -FT_END_HEADER - -#endif /* __FTTYPES_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftwinfnt.h b/CMU462/deps/freetype/include/freetype2/freetype/ftwinfnt.h deleted file mode 100755 index a0063cc..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftwinfnt.h +++ /dev/null @@ -1,263 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftwinfnt.h */ -/* */ -/* FreeType API for accessing Windows fnt-specific data. */ -/* */ -/* Copyright 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTWINFNT_H__ -#define __FTWINFNT_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* winfnt_fonts */ - /* */ - /* <Title> */ - /* Window FNT Files */ - /* */ - /* <Abstract> */ - /* Windows FNT specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of Windows FNT specific */ - /* functions. */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @enum: - * FT_WinFNT_ID_XXX - * - * @description: - * A list of valid values for the `charset' byte in - * @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX - * encodings (except for cp1361) can be found at ftp://ftp.unicode.org - * in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory. cp1361 is - * roughly a superset of MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT. - * - * @values: - * FT_WinFNT_ID_DEFAULT :: - * This is used for font enumeration and font creation as a - * `don't care' value. Valid font files don't contain this value. - * When querying for information about the character set of the font - * that is currently selected into a specified device context, this - * return value (of the related Windows API) simply denotes failure. - * - * FT_WinFNT_ID_SYMBOL :: - * There is no known mapping table available. - * - * FT_WinFNT_ID_MAC :: - * Mac Roman encoding. - * - * FT_WinFNT_ID_OEM :: - * From Michael Pöttgen <michael@poettgen.de>: - * - * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM - * is used for the charset of vector fonts, like `modern.fon', - * `roman.fon', and `script.fon' on Windows. - * - * The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value - * specifies a character set that is operating-system dependent. - * - * The `IFIMETRICS' documentation from the `Windows Driver - * Development Kit' says: This font supports an OEM-specific - * character set. The OEM character set is system dependent. - * - * In general OEM, as opposed to ANSI (i.e., cp1252), denotes the - * second default codepage that most international versions of - * Windows have. It is one of the OEM codepages from - * - * http://www.microsoft.com/globaldev/reference/cphome.mspx, - * - * and is used for the `DOS boxes', to support legacy applications. - * A German Windows version for example usually uses ANSI codepage - * 1252 and OEM codepage 850. - * - * FT_WinFNT_ID_CP874 :: - * A superset of Thai TIS 620 and ISO 8859-11. - * - * FT_WinFNT_ID_CP932 :: - * A superset of Japanese Shift-JIS (with minor deviations). - * - * FT_WinFNT_ID_CP936 :: - * A superset of simplified Chinese GB 2312-1980 (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP949 :: - * A superset of Korean Hangul KS C 5601-1987 (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP950 :: - * A superset of traditional Chinese Big 5 ETen (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP1250 :: - * A superset of East European ISO 8859-2 (with slightly different - * ordering). - * - * FT_WinFNT_ID_CP1251 :: - * A superset of Russian ISO 8859-5 (with different ordering). - * - * FT_WinFNT_ID_CP1252 :: - * ANSI encoding. A superset of ISO 8859-1. - * - * FT_WinFNT_ID_CP1253 :: - * A superset of Greek ISO 8859-7 (with minor modifications). - * - * FT_WinFNT_ID_CP1254 :: - * A superset of Turkish ISO 8859-9. - * - * FT_WinFNT_ID_CP1255 :: - * A superset of Hebrew ISO 8859-8 (with some modifications). - * - * FT_WinFNT_ID_CP1256 :: - * A superset of Arabic ISO 8859-6 (with different ordering). - * - * FT_WinFNT_ID_CP1257 :: - * A superset of Baltic ISO 8859-13 (with some deviations). - * - * FT_WinFNT_ID_CP1258 :: - * For Vietnamese. This encoding doesn't cover all necessary - * characters. - * - * FT_WinFNT_ID_CP1361 :: - * Korean (Johab). - */ - -#define FT_WinFNT_ID_CP1252 0 -#define FT_WinFNT_ID_DEFAULT 1 -#define FT_WinFNT_ID_SYMBOL 2 -#define FT_WinFNT_ID_MAC 77 -#define FT_WinFNT_ID_CP932 128 -#define FT_WinFNT_ID_CP949 129 -#define FT_WinFNT_ID_CP1361 130 -#define FT_WinFNT_ID_CP936 134 -#define FT_WinFNT_ID_CP950 136 -#define FT_WinFNT_ID_CP1253 161 -#define FT_WinFNT_ID_CP1254 162 -#define FT_WinFNT_ID_CP1258 163 -#define FT_WinFNT_ID_CP1255 177 -#define FT_WinFNT_ID_CP1256 178 -#define FT_WinFNT_ID_CP1257 186 -#define FT_WinFNT_ID_CP1251 204 -#define FT_WinFNT_ID_CP874 222 -#define FT_WinFNT_ID_CP1250 238 -#define FT_WinFNT_ID_OEM 255 - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_WinFNT_HeaderRec */ - /* */ - /* <Description> */ - /* Windows FNT Header info. */ - /* */ - typedef struct FT_WinFNT_HeaderRec_ - { - FT_UShort version; - FT_ULong file_size; - FT_Byte copyright[60]; - FT_UShort file_type; - FT_UShort nominal_point_size; - FT_UShort vertical_resolution; - FT_UShort horizontal_resolution; - FT_UShort ascent; - FT_UShort internal_leading; - FT_UShort external_leading; - FT_Byte italic; - FT_Byte underline; - FT_Byte strike_out; - FT_UShort weight; - FT_Byte charset; - FT_UShort pixel_width; - FT_UShort pixel_height; - FT_Byte pitch_and_family; - FT_UShort avg_width; - FT_UShort max_width; - FT_Byte first_char; - FT_Byte last_char; - FT_Byte default_char; - FT_Byte break_char; - FT_UShort bytes_per_row; - FT_ULong device_offset; - FT_ULong face_name_offset; - FT_ULong bits_pointer; - FT_ULong bits_offset; - FT_Byte reserved; - FT_ULong flags; - FT_UShort A_space; - FT_UShort B_space; - FT_UShort C_space; - FT_UShort color_table_offset; - FT_ULong reserved1[4]; - - } FT_WinFNT_HeaderRec, *FT_WinFNT_Header; - - - /********************************************************************** - * - * @function: - * FT_Get_WinFNT_Header - * - * @description: - * Retrieve a Windows FNT font info header. - * - * @input: - * face :: A handle to the input face. - * - * @output: - * aheader :: The WinFNT header. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function only works with Windows FNT faces, returning an error - * otherwise. - */ - FT_EXPORT( FT_Error ) - FT_Get_WinFNT_Header( FT_Face face, - FT_WinFNT_HeaderRec *aheader ); - - - /* */ - -FT_END_HEADER - -#endif /* __FTWINFNT_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ftxf86.h b/CMU462/deps/freetype/include/freetype2/freetype/ftxf86.h deleted file mode 100755 index ea82abb..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ftxf86.h +++ /dev/null @@ -1,80 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftxf86.h */ -/* */ -/* Support functions for X11. */ -/* */ -/* Copyright 2002, 2003, 2004, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTXF86_H__ -#define __FTXF86_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* font_formats */ - /* */ - /* <Title> */ - /* Font Formats */ - /* */ - /* <Abstract> */ - /* Getting the font format. */ - /* */ - /* <Description> */ - /* The single function in this section can be used to get the font */ - /* format. Note that this information is not needed normally; */ - /* however, there are special cases (like in PDF devices) where it is */ - /* important to differentiate, in spite of FreeType's uniform API. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_X11_Font_Format */ - /* */ - /* <Description> */ - /* Return a string describing the format of a given face, using values */ - /* which can be used as an X11 FONT_PROPERTY. Possible values are */ - /* `TrueType', `Type 1', `BDF', `PCF', `Type 42', `CID Type 1', `CFF', */ - /* `PFR', and `Windows FNT'. */ - /* */ - /* <Input> */ - /* face :: */ - /* Input face handle. */ - /* */ - /* <Return> */ - /* Font format string. NULL in case of error. */ - /* */ - FT_EXPORT( const char* ) - FT_Get_X11_Font_Format( FT_Face face ); - - /* */ - -FT_END_HEADER - -#endif /* __FTXF86_H__ */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/t1tables.h b/CMU462/deps/freetype/include/freetype2/freetype/t1tables.h deleted file mode 100755 index 250629d..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/t1tables.h +++ /dev/null @@ -1,450 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1tables.h */ -/* */ -/* Basic Type 1/Type 2 tables definitions and interface (specification */ -/* only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1TABLES_H__ -#define __T1TABLES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* type1_tables */ - /* */ - /* <Title> */ - /* Type 1 Tables */ - /* */ - /* <Abstract> */ - /* Type 1 (PostScript) specific font tables. */ - /* */ - /* <Description> */ - /* This section contains the definition of Type 1-specific tables, */ - /* including structures related to other PostScript font formats. */ - /* */ - /*************************************************************************/ - - - /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ - /* structures in order to support Multiple Master fonts. */ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_FontInfoRec */ - /* */ - /* <Description> */ - /* A structure used to model a Type1/Type2 FontInfo dictionary. Note */ - /* that for Multiple Master fonts, each instance has its own */ - /* FontInfo dictionary. */ - /* */ - typedef struct PS_FontInfoRec - { - FT_String* version; - FT_String* notice; - FT_String* full_name; - FT_String* family_name; - FT_String* weight; - FT_Long italic_angle; - FT_Bool is_fixed_pitch; - FT_Short underline_position; - FT_UShort underline_thickness; - - } PS_FontInfoRec, *PS_FontInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* T1_FontInfo */ - /* */ - /* <Description> */ - /* This type is equivalent to @PS_FontInfoRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef PS_FontInfoRec T1_FontInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_PrivateRec */ - /* */ - /* <Description> */ - /* A structure used to model a Type1/Type2 private dictionary. Note */ - /* that for Multiple Master fonts, each instance has its own Private */ - /* dictionary. */ - /* */ - typedef struct PS_PrivateRec_ - { - FT_Int unique_id; - FT_Int lenIV; - - FT_Byte num_blue_values; - FT_Byte num_other_blues; - FT_Byte num_family_blues; - FT_Byte num_family_other_blues; - - FT_Short blue_values[14]; - FT_Short other_blues[10]; - - FT_Short family_blues [14]; - FT_Short family_other_blues[10]; - - FT_Fixed blue_scale; - FT_Int blue_shift; - FT_Int blue_fuzz; - - FT_UShort standard_width[1]; - FT_UShort standard_height[1]; - - FT_Byte num_snap_widths; - FT_Byte num_snap_heights; - FT_Bool force_bold; - FT_Bool round_stem_up; - - FT_Short snap_widths [13]; /* including std width */ - FT_Short snap_heights[13]; /* including std height */ - - FT_Fixed expansion_factor; - - FT_Long language_group; - FT_Long password; - - FT_Short min_feature[2]; - - } PS_PrivateRec, *PS_Private; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* T1_Private */ - /* */ - /* <Description> */ - /* This type is equivalent to @PS_PrivateRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef PS_PrivateRec T1_Private; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* T1_Blend_Flags */ - /* */ - /* <Description> */ - /* A set of flags used to indicate which fields are present in a */ - /* given blend dictionary (font info or private). Used to support */ - /* Multiple Masters fonts. */ - /* */ - typedef enum - { - /*# required fields in a FontInfo blend dictionary */ - T1_BLEND_UNDERLINE_POSITION = 0, - T1_BLEND_UNDERLINE_THICKNESS, - T1_BLEND_ITALIC_ANGLE, - - /*# required fields in a Private blend dictionary */ - T1_BLEND_BLUE_VALUES, - T1_BLEND_OTHER_BLUES, - T1_BLEND_STANDARD_WIDTH, - T1_BLEND_STANDARD_HEIGHT, - T1_BLEND_STEM_SNAP_WIDTHS, - T1_BLEND_STEM_SNAP_HEIGHTS, - T1_BLEND_BLUE_SCALE, - T1_BLEND_BLUE_SHIFT, - T1_BLEND_FAMILY_BLUES, - T1_BLEND_FAMILY_OTHER_BLUES, - T1_BLEND_FORCE_BOLD, - - /*# never remove */ - T1_BLEND_MAX - - } T1_Blend_Flags; - - /* */ - - - /*# backwards compatible definitions */ -#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION -#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS -#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE -#define t1_blend_blue_values T1_BLEND_BLUE_VALUES -#define t1_blend_other_blues T1_BLEND_OTHER_BLUES -#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH -#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT -#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS -#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS -#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE -#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT -#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES -#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES -#define t1_blend_force_bold T1_BLEND_FORCE_BOLD -#define t1_blend_max T1_BLEND_MAX - - - /* maximum number of Multiple Masters designs, as defined in the spec */ -#define T1_MAX_MM_DESIGNS 16 - - /* maximum number of Multiple Masters axes, as defined in the spec */ -#define T1_MAX_MM_AXIS 4 - - /* maximum number of elements in a design map */ -#define T1_MAX_MM_MAP_POINTS 20 - - - /* this structure is used to store the BlendDesignMap entry for an axis */ - typedef struct PS_DesignMap_ - { - FT_Byte num_points; - FT_Long* design_points; - FT_Fixed* blend_points; - - } PS_DesignMapRec, *PS_DesignMap; - - /* backwards-compatible definition */ - typedef PS_DesignMapRec T1_DesignMap; - - - typedef struct PS_BlendRec_ - { - FT_UInt num_designs; - FT_UInt num_axis; - - FT_String* axis_names[T1_MAX_MM_AXIS]; - FT_Fixed* design_pos[T1_MAX_MM_DESIGNS]; - PS_DesignMapRec design_map[T1_MAX_MM_AXIS]; - - FT_Fixed* weight_vector; - FT_Fixed* default_weight_vector; - - PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1]; - PS_Private privates [T1_MAX_MM_DESIGNS + 1]; - - FT_ULong blend_bitflags; - - FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1]; - - /* since 2.3.0 */ - - /* undocumented, optional: the default design instance; */ - /* corresponds to default_weight_vector -- */ - /* num_default_design_vector == 0 means it is not present */ - /* in the font and associated metrics files */ - FT_UInt default_design_vector[T1_MAX_MM_DESIGNS]; - FT_UInt num_default_design_vector; - - } PS_BlendRec, *PS_Blend; - - - /* backwards-compatible definition */ - typedef PS_BlendRec T1_Blend; - - - typedef struct CID_FaceDictRec_ - { - PS_PrivateRec private_dict; - - FT_UInt len_buildchar; - FT_Fixed forcebold_threshold; - FT_Pos stroke_width; - FT_Fixed expansion_factor; - - FT_Byte paint_type; - FT_Byte font_type; - FT_Matrix font_matrix; - FT_Vector font_offset; - - FT_UInt num_subrs; - FT_ULong subrmap_offset; - FT_Int sd_bytes; - - } CID_FaceDictRec, *CID_FaceDict; - - - /* backwards-compatible definition */ - typedef CID_FaceDictRec CID_FontDict; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_FaceInfoRec */ - /* */ - /* <Description> */ - /* A structure used to represent CID Face information. */ - /* */ - typedef struct CID_FaceInfoRec_ - { - FT_String* cid_font_name; - FT_Fixed cid_version; - FT_Int cid_font_type; - - FT_String* registry; - FT_String* ordering; - FT_Int supplement; - - PS_FontInfoRec font_info; - FT_BBox font_bbox; - FT_ULong uid_base; - - FT_Int num_xuid; - FT_ULong xuid[16]; - - FT_ULong cidmap_offset; - FT_Int fd_bytes; - FT_Int gd_bytes; - FT_ULong cid_count; - - FT_Int num_dicts; - CID_FaceDict font_dicts; - - FT_ULong data_offset; - - } CID_FaceInfoRec, *CID_FaceInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_Info */ - /* */ - /* <Description> */ - /* This type is equivalent to @CID_FaceInfoRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef CID_FaceInfoRec CID_Info; - - /* */ - - - /************************************************************************ - * - * @function: - * FT_Has_PS_Glyph_Names - * - * @description: - * Return true if a given face provides reliable Postscript glyph - * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro, - * except that certain fonts (mostly TrueType) contain incorrect - * glyph name tables. - * - * When this function returns true, the caller is sure that the glyph - * names returned by @FT_Get_Glyph_Name are reliable. - * - * @input: - * face :: - * face handle - * - * @return: - * Boolean. True if glyph names are reliable. - */ - FT_EXPORT( FT_Int ) - FT_Has_PS_Glyph_Names( FT_Face face ); - - - /************************************************************************ - * - * @function: - * FT_Get_PS_Font_Info - * - * @description: - * Retrieve the @PS_FontInfoRec structure corresponding to a given - * Postscript font. - * - * @input: - * face :: - * Postscript face handle. - * - * @output: - * afont_info :: - * Output font info structure pointer. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The string pointers within the font info structure are owned by - * the face and don't need to be freed by the caller. - * - * If the font's format is not Postscript-based, this function will - * return the `FT_Err_Invalid_Argument' error code. - */ - FT_EXPORT( FT_Error ) - FT_Get_PS_Font_Info( FT_Face face, - PS_FontInfoRec *afont_info ); - - - /************************************************************************ - * - * @function: - * FT_Get_PS_Font_Private - * - * @description: - * Retrieve the @PS_PrivateRec structure corresponding to a given - * Postscript font. - * - * @input: - * face :: - * Postscript face handle. - * - * @output: - * afont_private :: - * Output private dictionary structure pointer. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The string pointers within the font info structure are owned by - * the face and don't need to be freed by the caller. - * - * If the font's format is not Postscript-based, this function will - * return the `FT_Err_Invalid_Argument' error code. - */ - FT_EXPORT( FT_Error ) - FT_Get_PS_Font_Private( FT_Face face, - PS_PrivateRec *afont_private ); - - /* */ - - - -FT_END_HEADER - -#endif /* __T1TABLES_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/tttables.h b/CMU462/deps/freetype/include/freetype2/freetype/tttables.h deleted file mode 100755 index 43eca2e..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/tttables.h +++ /dev/null @@ -1,756 +0,0 @@ -/***************************************************************************/ -/* */ -/* tttables.h */ -/* */ -/* Basic SFNT/TrueType tables definitions and interface */ -/* (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTTABLES_H__ -#define __TTTABLES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* <Section> */ - /* truetype_tables */ - /* */ - /* <Title> */ - /* TrueType Tables */ - /* */ - /* <Abstract> */ - /* TrueType specific table types and functions. */ - /* */ - /* <Description> */ - /* This section contains the definition of TrueType-specific tables */ - /* as well as some routines used to access and process them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Header */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType font header table. All */ - /* fields follow the TrueType specification. */ - /* */ - typedef struct TT_Header_ - { - FT_Fixed Table_Version; - FT_Fixed Font_Revision; - - FT_Long CheckSum_Adjust; - FT_Long Magic_Number; - - FT_UShort Flags; - FT_UShort Units_Per_EM; - - FT_Long Created [2]; - FT_Long Modified[2]; - - FT_Short xMin; - FT_Short yMin; - FT_Short xMax; - FT_Short yMax; - - FT_UShort Mac_Style; - FT_UShort Lowest_Rec_PPEM; - - FT_Short Font_Direction; - FT_Short Index_To_Loc_Format; - FT_Short Glyph_Data_Format; - - } TT_Header; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_HoriHeader */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType horizontal header, the `hhea' */ - /* table, as well as the corresponding horizontal metrics table, */ - /* i.e., the `hmtx' table. */ - /* */ - /* <Fields> */ - /* Version :: The table version. */ - /* */ - /* Ascender :: The font's ascender, i.e., the distance */ - /* from the baseline to the top-most of all */ - /* glyph points found in the font. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of the */ - /* glyphs found in the font (maybe ASCII). */ - /* */ - /* You should use the `sTypoAscender' field */ - /* of the OS/2 table instead if you want */ - /* the correct one. */ - /* */ - /* Descender :: The font's descender, i.e., the distance */ - /* from the baseline to the bottom-most of */ - /* all glyph points found in the font. It */ - /* is negative. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of the */ - /* glyphs found in the font (maybe ASCII). */ - /* */ - /* You should use the `sTypoDescender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Line_Gap :: The font's line gap, i.e., the distance */ - /* to add to the ascender and descender to */ - /* get the BTB, i.e., the */ - /* baseline-to-baseline distance for the */ - /* font. */ - /* */ - /* advance_Width_Max :: This field is the maximum of all advance */ - /* widths found in the font. It can be */ - /* used to compute the maximum width of an */ - /* arbitrary string of text. */ - /* */ - /* min_Left_Side_Bearing :: The minimum left side bearing of all */ - /* glyphs within the font. */ - /* */ - /* min_Right_Side_Bearing :: The minimum right side bearing of all */ - /* glyphs within the font. */ - /* */ - /* xMax_Extent :: The maximum horizontal extent (i.e., the */ - /* `width' of a glyph's bounding box) for */ - /* all glyphs in the font. */ - /* */ - /* caret_Slope_Rise :: The rise coefficient of the cursor's */ - /* slope of the cursor (slope=rise/run). */ - /* */ - /* caret_Slope_Run :: The run coefficient of the cursor's */ - /* slope. */ - /* */ - /* Reserved :: 10 reserved bytes. */ - /* */ - /* metric_Data_Format :: Always 0. */ - /* */ - /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ - /* table -- this value can be smaller than */ - /* the total number of glyphs in the font. */ - /* */ - /* long_metrics :: A pointer into the `hmtx' table. */ - /* */ - /* short_metrics :: A pointer into the `hmtx' table. */ - /* */ - /* <Note> */ - /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ - /* be identical except for the names of their fields which */ - /* are different. */ - /* */ - /* This ensures that a single function in the `ttload' */ - /* module is able to read both the horizontal and vertical */ - /* headers. */ - /* */ - typedef struct TT_HoriHeader_ - { - FT_Fixed Version; - FT_Short Ascender; - FT_Short Descender; - FT_Short Line_Gap; - - FT_UShort advance_Width_Max; /* advance width maximum */ - - FT_Short min_Left_Side_Bearing; /* minimum left-sb */ - FT_Short min_Right_Side_Bearing; /* minimum right-sb */ - FT_Short xMax_Extent; /* xmax extents */ - FT_Short caret_Slope_Rise; - FT_Short caret_Slope_Run; - FT_Short caret_Offset; - - FT_Short Reserved[4]; - - FT_Short metric_Data_Format; - FT_UShort number_Of_HMetrics; - - /* The following fields are not defined by the TrueType specification */ - /* but they are used to connect the metrics header to the relevant */ - /* `HMTX' table. */ - - void* long_metrics; - void* short_metrics; - - } TT_HoriHeader; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_VertHeader */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType vertical header, the `vhea' */ - /* table, as well as the corresponding vertical metrics table, i.e., */ - /* the `vmtx' table. */ - /* */ - /* <Fields> */ - /* Version :: The table version. */ - /* */ - /* Ascender :: The font's ascender, i.e., the distance */ - /* from the baseline to the top-most of */ - /* all glyph points found in the font. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of */ - /* the glyphs found in the font (maybe */ - /* ASCII). */ - /* */ - /* You should use the `sTypoAscender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Descender :: The font's descender, i.e., the */ - /* distance from the baseline to the */ - /* bottom-most of all glyph points found */ - /* in the font. It is negative. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of */ - /* the glyphs found in the font (maybe */ - /* ASCII). */ - /* */ - /* You should use the `sTypoDescender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Line_Gap :: The font's line gap, i.e., the distance */ - /* to add to the ascender and descender to */ - /* get the BTB, i.e., the */ - /* baseline-to-baseline distance for the */ - /* font. */ - /* */ - /* advance_Height_Max :: This field is the maximum of all */ - /* advance heights found in the font. It */ - /* can be used to compute the maximum */ - /* height of an arbitrary string of text. */ - /* */ - /* min_Top_Side_Bearing :: The minimum top side bearing of all */ - /* glyphs within the font. */ - /* */ - /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ - /* glyphs within the font. */ - /* */ - /* yMax_Extent :: The maximum vertical extent (i.e., the */ - /* `height' of a glyph's bounding box) for */ - /* all glyphs in the font. */ - /* */ - /* caret_Slope_Rise :: The rise coefficient of the cursor's */ - /* slope of the cursor (slope=rise/run). */ - /* */ - /* caret_Slope_Run :: The run coefficient of the cursor's */ - /* slope. */ - /* */ - /* caret_Offset :: The cursor's offset for slanted fonts. */ - /* This value is `reserved' in vmtx */ - /* version 1.0. */ - /* */ - /* Reserved :: 8 reserved bytes. */ - /* */ - /* metric_Data_Format :: Always 0. */ - /* */ - /* number_Of_HMetrics :: Number of VMetrics entries in the */ - /* `vmtx' table -- this value can be */ - /* smaller than the total number of glyphs */ - /* in the font. */ - /* */ - /* long_metrics :: A pointer into the `vmtx' table. */ - /* */ - /* short_metrics :: A pointer into the `vmtx' table. */ - /* */ - /* <Note> */ - /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ - /* be identical except for the names of their fields which */ - /* are different. */ - /* */ - /* This ensures that a single function in the `ttload' */ - /* module is able to read both the horizontal and vertical */ - /* headers. */ - /* */ - typedef struct TT_VertHeader_ - { - FT_Fixed Version; - FT_Short Ascender; - FT_Short Descender; - FT_Short Line_Gap; - - FT_UShort advance_Height_Max; /* advance height maximum */ - - FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */ - FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */ - FT_Short yMax_Extent; /* xmax or ymax extents */ - FT_Short caret_Slope_Rise; - FT_Short caret_Slope_Run; - FT_Short caret_Offset; - - FT_Short Reserved[4]; - - FT_Short metric_Data_Format; - FT_UShort number_Of_VMetrics; - - /* The following fields are not defined by the TrueType specification */ - /* but they're used to connect the metrics header to the relevant */ - /* `HMTX' or `VMTX' table. */ - - void* long_metrics; - void* short_metrics; - - } TT_VertHeader; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_OS2 */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType OS/2 table. This is the long */ - /* table version. All fields comply to the TrueType specification. */ - /* */ - /* Note that we now support old Mac fonts which do not include an */ - /* OS/2 table. In this case, the `version' field is always set to */ - /* 0xFFFF. */ - /* */ - typedef struct TT_OS2_ - { - FT_UShort version; /* 0x0001 - more or 0xFFFF */ - FT_Short xAvgCharWidth; - FT_UShort usWeightClass; - FT_UShort usWidthClass; - FT_Short fsType; - FT_Short ySubscriptXSize; - FT_Short ySubscriptYSize; - FT_Short ySubscriptXOffset; - FT_Short ySubscriptYOffset; - FT_Short ySuperscriptXSize; - FT_Short ySuperscriptYSize; - FT_Short ySuperscriptXOffset; - FT_Short ySuperscriptYOffset; - FT_Short yStrikeoutSize; - FT_Short yStrikeoutPosition; - FT_Short sFamilyClass; - - FT_Byte panose[10]; - - FT_ULong ulUnicodeRange1; /* Bits 0-31 */ - FT_ULong ulUnicodeRange2; /* Bits 32-63 */ - FT_ULong ulUnicodeRange3; /* Bits 64-95 */ - FT_ULong ulUnicodeRange4; /* Bits 96-127 */ - - FT_Char achVendID[4]; - - FT_UShort fsSelection; - FT_UShort usFirstCharIndex; - FT_UShort usLastCharIndex; - FT_Short sTypoAscender; - FT_Short sTypoDescender; - FT_Short sTypoLineGap; - FT_UShort usWinAscent; - FT_UShort usWinDescent; - - /* only version 1 tables: */ - - FT_ULong ulCodePageRange1; /* Bits 0-31 */ - FT_ULong ulCodePageRange2; /* Bits 32-63 */ - - /* only version 2 tables: */ - - FT_Short sxHeight; - FT_Short sCapHeight; - FT_UShort usDefaultChar; - FT_UShort usBreakChar; - FT_UShort usMaxContext; - - } TT_OS2; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Postscript */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType Postscript table. All fields */ - /* comply to the TrueType specification. This structure does not */ - /* reference the Postscript glyph names, which can be nevertheless */ - /* accessed with the `ttpost' module. */ - /* */ - typedef struct TT_Postscript_ - { - FT_Fixed FormatType; - FT_Fixed italicAngle; - FT_Short underlinePosition; - FT_Short underlineThickness; - FT_ULong isFixedPitch; - FT_ULong minMemType42; - FT_ULong maxMemType42; - FT_ULong minMemType1; - FT_ULong maxMemType1; - - /* Glyph names follow in the file, but we don't */ - /* load them by default. See the ttpost.c file. */ - - } TT_Postscript; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_PCLT */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType PCLT table. All fields */ - /* comply to the TrueType specification. */ - /* */ - typedef struct TT_PCLT_ - { - FT_Fixed Version; - FT_ULong FontNumber; - FT_UShort Pitch; - FT_UShort xHeight; - FT_UShort Style; - FT_UShort TypeFamily; - FT_UShort CapHeight; - FT_UShort SymbolSet; - FT_Char TypeFace[16]; - FT_Char CharacterComplement[8]; - FT_Char FileName[6]; - FT_Char StrokeWeight; - FT_Char WidthType; - FT_Byte SerifStyle; - FT_Byte Reserved; - - } TT_PCLT; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_MaxProfile */ - /* */ - /* <Description> */ - /* The maximum profile is a table containing many max values which */ - /* can be used to pre-allocate arrays. This ensures that no memory */ - /* allocation occurs during a glyph load. */ - /* */ - /* <Fields> */ - /* version :: The version number. */ - /* */ - /* numGlyphs :: The number of glyphs in this TrueType */ - /* font. */ - /* */ - /* maxPoints :: The maximum number of points in a */ - /* non-composite TrueType glyph. See also */ - /* the structure element */ - /* `maxCompositePoints'. */ - /* */ - /* maxContours :: The maximum number of contours in a */ - /* non-composite TrueType glyph. See also */ - /* the structure element */ - /* `maxCompositeContours'. */ - /* */ - /* maxCompositePoints :: The maximum number of points in a */ - /* composite TrueType glyph. See also the */ - /* structure element `maxPoints'. */ - /* */ - /* maxCompositeContours :: The maximum number of contours in a */ - /* composite TrueType glyph. See also the */ - /* structure element `maxContours'. */ - /* */ - /* maxZones :: The maximum number of zones used for */ - /* glyph hinting. */ - /* */ - /* maxTwilightPoints :: The maximum number of points in the */ - /* twilight zone used for glyph hinting. */ - /* */ - /* maxStorage :: The maximum number of elements in the */ - /* storage area used for glyph hinting. */ - /* */ - /* maxFunctionDefs :: The maximum number of function */ - /* definitions in the TrueType bytecode for */ - /* this font. */ - /* */ - /* maxInstructionDefs :: The maximum number of instruction */ - /* definitions in the TrueType bytecode for */ - /* this font. */ - /* */ - /* maxStackElements :: The maximum number of stack elements used */ - /* during bytecode interpretation. */ - /* */ - /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ - /* used for glyph hinting. */ - /* */ - /* maxComponentElements :: The maximum number of simple (i.e., non- */ - /* composite) glyphs in a composite glyph. */ - /* */ - /* maxComponentDepth :: The maximum nesting depth of composite */ - /* glyphs. */ - /* */ - /* <Note> */ - /* This structure is only used during font loading. */ - /* */ - typedef struct TT_MaxProfile_ - { - FT_Fixed version; - FT_UShort numGlyphs; - FT_UShort maxPoints; - FT_UShort maxContours; - FT_UShort maxCompositePoints; - FT_UShort maxCompositeContours; - FT_UShort maxZones; - FT_UShort maxTwilightPoints; - FT_UShort maxStorage; - FT_UShort maxFunctionDefs; - FT_UShort maxInstructionDefs; - FT_UShort maxStackElements; - FT_UShort maxSizeOfInstructions; - FT_UShort maxComponentElements; - FT_UShort maxComponentDepth; - - } TT_MaxProfile; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Sfnt_Tag */ - /* */ - /* <Description> */ - /* An enumeration used to specify the index of an SFNT table. */ - /* Used in the @FT_Get_Sfnt_Table API function. */ - /* */ - typedef enum - { - ft_sfnt_head = 0, - ft_sfnt_maxp = 1, - ft_sfnt_os2 = 2, - ft_sfnt_hhea = 3, - ft_sfnt_vhea = 4, - ft_sfnt_post = 5, - ft_sfnt_pclt = 6, - - sfnt_max /* internal end mark */ - - } FT_Sfnt_Tag; - - /* */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Table */ - /* */ - /* <Description> */ - /* Returns a pointer to a given SFNT table within a face. */ - /* */ - /* <Input> */ - /* face :: A handle to the source. */ - /* */ - /* tag :: The index of the SFNT table. */ - /* */ - /* <Return> */ - /* A type-less pointer to the table. This will be 0 in case of */ - /* error, or if the corresponding table was not found *OR* loaded */ - /* from the file. */ - /* */ - /* <Note> */ - /* The table is owned by the face object and disappears with it. */ - /* */ - /* This function is only useful to access SFNT tables that are loaded */ - /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ - /* a list. */ - /* */ - FT_EXPORT( void* ) - FT_Get_Sfnt_Table( FT_Face face, - FT_Sfnt_Tag tag ); - - - /************************************************************************** - * - * @function: - * FT_Load_Sfnt_Table - * - * @description: - * Loads any font table into client memory. - * - * @input: - * face :: - * A handle to the source face. - * - * tag :: - * The four-byte tag of the table to load. Use the value 0 if you want - * to access the whole font file. Otherwise, you can use one of the - * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new - * one with @FT_MAKE_TAG. - * - * offset :: - * The starting offset in the table (or file if tag == 0). - * - * @output: - * buffer :: - * The target buffer address. The client must ensure that the memory - * array is big enough to hold the data. - * - * @inout: - * length :: - * If the `length' parameter is NULL, then try to load the whole table. - * Return an error code if it fails. - * - * Else, if `*length' is 0, exit immediately while returning the - * table's (or file) full size in it. - * - * Else the number of bytes to read from the table or file, from the - * starting offset. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * If you need to determine the table's length you should first call this - * function with `*length' set to 0, as in the following example: - * - * { - * FT_ULong length = 0; - * - * - * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); - * if ( error ) { ... table does not exist ... } - * - * buffer = malloc( length ); - * if ( buffer == NULL ) { ... not enough memory ... } - * - * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); - * if ( error ) { ... could not load table ... } - * } - */ - FT_EXPORT( FT_Error ) - FT_Load_Sfnt_Table( FT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte* buffer, - FT_ULong* length ); - - - /************************************************************************** - * - * @function: - * FT_Sfnt_Table_Info - * - * @description: - * Returns information on an SFNT table. - * - * @input: - * face :: - * A handle to the source face. - * - * table_index :: - * The index of an SFNT table. The function returns - * FT_Err_Table_Missing for an invalid value. - * - * @output: - * tag :: - * The name tag of the SFNT table. - * - * length :: - * The length of the SFNT table. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * SFNT tables with length zero are treated as missing by Windows. - * - */ - FT_EXPORT( FT_Error ) - FT_Sfnt_Table_Info( FT_Face face, - FT_UInt table_index, - FT_ULong *tag, - FT_ULong *length ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_CMap_Language_ID */ - /* */ - /* <Description> */ - /* Return TrueType/sfnt specific cmap language ID. Definitions of */ - /* language ID values are in `freetype/ttnameid.h'. */ - /* */ - /* <Input> */ - /* charmap :: */ - /* The target charmap. */ - /* */ - /* <Return> */ - /* The language ID of `charmap'. If `charmap' doesn't belong to a */ - /* TrueType/sfnt face, just return 0 as the default value. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_CMap_Language_ID( FT_CharMap charmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_CMap_Format */ - /* */ - /* <Description> */ - /* Return TrueType/sfnt specific cmap format. */ - /* */ - /* <Input> */ - /* charmap :: */ - /* The target charmap. */ - /* */ - /* <Return> */ - /* The format of `charmap'. If `charmap' doesn't belong to a */ - /* TrueType/sfnt face, return -1. */ - /* */ - FT_EXPORT( FT_Long ) - FT_Get_CMap_Format( FT_CharMap charmap ); - - /* */ - - -FT_END_HEADER - -#endif /* __TTTABLES_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/freetype2/freetype/ttunpat.h b/CMU462/deps/freetype/include/freetype2/freetype/ttunpat.h deleted file mode 100755 index a016275..0000000 --- a/CMU462/deps/freetype/include/freetype2/freetype/ttunpat.h +++ /dev/null @@ -1,59 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttunpat.h */ -/* */ -/* Definitions for the unpatented TrueType hinting system */ -/* */ -/* Copyright 2003, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* Written by Graham Asher <graham.asher@btinternet.com> */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTUNPAT_H__ -#define __TTUNPAT_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_UNPATENTED_HINTING - * - * @description: - * A constant used as the tag of an @FT_Parameter structure to indicate - * that unpatented methods only should be used by the TrueType bytecode - * interpreter for a typeface opened by @FT_Open_Face. - * - */ -#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) - - /* */ - -FT_END_HEADER - - -#endif /* __TTUNPAT_H__ */ - - -/* END */ diff --git a/CMU462/deps/freetype/include/ft2build.h b/CMU462/deps/freetype/include/ft2build.h index 6a3b8d9..e3f4887 100755 --- a/CMU462/deps/freetype/include/ft2build.h +++ b/CMU462/deps/freetype/include/ft2build.h @@ -1,61 +1,44 @@ -/***************************************************************************/ -/* */ -/* ft2build.h */ -/* */ -/* Build macros of the FreeType 2 library. */ -/* */ -/* Copyright 1996-2001, 2003, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This is a Unix-specific version of <ft2build.h> that should be used */ - /* exclusively *after* installation of the library. */ - /* */ - /* It assumes that `/usr/local/include/freetype2' (or whatever is */ - /* returned by the `freetype-config --cflags' or `pkg-config --cflags' */ - /* command) is in your compilation include path. */ - /* */ - /* We don't need to do anything special in this release. However, for */ - /* a future FreeType 2 release, the following installation changes will */ - /* be performed: */ - /* */ - /* - The contents of `freetype-2.x/include/freetype' will be installed */ - /* to `/usr/local/include/freetype2' instead of */ - /* `/usr/local/include/freetype2/freetype'. */ - /* */ - /* - This file will #include <freetype2/config/ftheader.h>, instead */ - /* of <freetype/config/ftheader.h>. */ - /* */ - /* - The contents of `ftheader.h' will be processed with `sed' to */ - /* replace all `<freetype/xxx>' with `<freetype2/xxx>'. */ - /* */ - /* - Adding `/usr/local/include/freetype2' to your compilation include */ - /* path will not be necessary anymore. */ - /* */ - /* These changes will be transparent to client applications which use */ - /* freetype-config (or pkg-config). No modifications will be necessary */ - /* to compile with the new scheme. */ - /* */ - /*************************************************************************/ - - -#ifndef __FT2_BUILD_UNIX_H__ -#define __FT2_BUILD_UNIX_H__ - - /* `<prefix>/include/freetype2' must be in your current inclusion path */ +/**************************************************************************** + * + * ft2build.h + * + * FreeType 2 build and setup macros. + * + * Copyright (C) 1996-2019 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This is the 'entry point' for FreeType header file inclusions. It is + * the only header file which should be included directly; all other + * FreeType header files should be accessed with macro names (after + * including `ft2build.h`). + * + * A typical example is + * + * ``` + * #include <ft2build.h> + * #include FT_FREETYPE_H + * ``` + * + */ + + +#ifndef FT2BUILD_H_ +#define FT2BUILD_H_ + #include <freetype/config/ftheader.h> -#endif /* __FT2_BUILD_UNIX_H__ */ +#endif /* FT2BUILD_H_ */ /* END */ diff --git a/CMU462/deps/freetype/lib/freetype-bcc.lib b/CMU462/deps/freetype/lib/freetype-bcc.lib deleted file mode 100755 index f2ae65ed8dd127073a596e3093ecb65d5d1e3ff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32256 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 LM(E}*=l}i}sdDX= diff --git a/CMU462/deps/freetype/lib/freetype.lib b/CMU462/deps/freetype/lib/freetype.lib index 983d4ddd749fa4d94ffb973ba5f6159565a3984c..61ca78cc37235c17e9201e036c03c8f797de5fee 100755 GIT binary patch literal 46362 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 P$N77MW$)fsFo*vS11aW4 literal 55978 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 H)P(;FsKp?i diff --git a/CMU462/deps/freetype/lib/freetype6.def b/CMU462/deps/freetype/lib/freetype6.def deleted file mode 100755 index 469c862..0000000 --- a/CMU462/deps/freetype/lib/freetype6.def +++ /dev/null @@ -1,249 +0,0 @@ -LIBRARY freetype6.dll -EXPORTS -DllGetVersion -FTC_CMapCache_Lookup -FTC_CMapCache_New -FTC_ImageCache_Lookup -FTC_ImageCache_LookupScaler -FTC_ImageCache_New -FTC_Manager_Done -FTC_Manager_LookupFace -FTC_Manager_LookupSize -FTC_Manager_New -FTC_Manager_RemoveFaceID -FTC_Manager_Reset -FTC_Node_Unref -FTC_SBitCache_Lookup -FTC_SBitCache_LookupScaler -FTC_SBitCache_New -FT_Activate_Size -FT_Add_Default_Modules -FT_Add_Module -FT_Angle_Diff -FT_Atan2 -FT_Attach_File -FT_Attach_Stream -FT_Bitmap_Convert -FT_Bitmap_Copy -FT_Bitmap_Done -FT_Bitmap_Embolden -FT_Bitmap_New -FT_CMap_Done -FT_CMap_New -FT_CeilFix -FT_ClassicKern_Free -FT_ClassicKern_Validate -FT_Cos -FT_DivFix -FT_Done_Face -FT_Done_FreeType -FT_Done_Glyph -FT_Done_GlyphSlot -FT_Done_Library -FT_Done_Memory -FT_Done_Size -FT_Face_CheckTrueTypePatents -FT_Face_SetUnpatentedHinting -FT_FloorFix -FT_Get_BDF_Charset_ID -FT_Get_BDF_Property -FT_Get_CMap_Format -FT_Get_CMap_Language_ID -FT_Get_Char_Index -FT_Get_Charmap_Index -FT_Get_First_Char -FT_Get_Gasp -FT_Get_Glyph -FT_Get_Glyph_Name -FT_Get_Kerning -FT_Get_MM_Var -FT_Get_Module -FT_Get_Module_Interface -FT_Get_Multi_Master -FT_Get_Name_Index -FT_Get_Next_Char -FT_Get_PFR_Advance -FT_Get_PFR_Kerning -FT_Get_PFR_Metrics -FT_Get_PS_Font_Info -FT_Get_PS_Font_Private -FT_Get_Postscript_Name -FT_Get_Renderer -FT_Get_Sfnt_Name -FT_Get_Sfnt_Name_Count -FT_Get_Sfnt_Table -FT_Get_SubGlyph_Info -FT_Get_Track_Kerning -FT_Get_TrueType_Engine_Type -FT_Get_WinFNT_Header -FT_Get_X11_Font_Format -FT_GlyphLoader_Add -FT_GlyphLoader_CheckPoints -FT_GlyphLoader_CheckSubGlyphs -FT_GlyphLoader_CopyPoints -FT_GlyphLoader_CreateExtra -FT_GlyphLoader_Done -FT_GlyphLoader_New -FT_GlyphLoader_Prepare -FT_GlyphLoader_Reset -FT_GlyphLoader_Rewind -FT_GlyphSlot_Embolden -FT_GlyphSlot_Oblique -FT_GlyphSlot_Own_Bitmap -FT_Glyph_Copy -FT_Glyph_Get_CBox -FT_Glyph_Stroke -FT_Glyph_StrokeBorder -FT_Glyph_To_Bitmap -FT_Glyph_Transform -FT_Has_PS_Glyph_Names -FT_Init_FreeType -FT_Library_SetLcdFilter -FT_Library_Version -FT_List_Add -FT_List_Finalize -FT_List_Find -FT_List_Insert -FT_List_Iterate -FT_List_Remove -FT_List_Up -FT_Load_Char -FT_Load_Glyph -FT_Load_Sfnt_Table -FT_Lookup_Renderer -FT_Match_Size -FT_Matrix_Invert -FT_Matrix_Multiply -FT_MulDiv -FT_MulDiv_No_Round -FT_MulFix -FT_New_Face -FT_New_GlyphSlot -FT_New_Library -FT_New_Memory -FT_New_Memory_Face -FT_New_Size -FT_OpenType_Free -FT_OpenType_Validate -FT_Open_Face -FT_Outline_Check -FT_Outline_Copy -FT_Outline_Decompose -FT_Outline_Done -FT_Outline_Done_Internal -FT_Outline_Embolden -FT_Outline_GetInsideBorder -FT_Outline_GetOutsideBorder -FT_Outline_Get_BBox -FT_Outline_Get_Bitmap -FT_Outline_Get_CBox -FT_Outline_Get_Orientation -FT_Outline_New -FT_Outline_New_Internal -FT_Outline_Render -FT_Outline_Reverse -FT_Outline_Transform -FT_Outline_Translate -FT_Raccess_Get_DataOffsets -FT_Raccess_Get_HeaderInfo -FT_Raccess_Guess -FT_Remove_Module -FT_Render_Glyph -FT_Render_Glyph_Internal -FT_Request_Metrics -FT_Request_Size -FT_RoundFix -FT_Select_Charmap -FT_Select_Metrics -FT_Select_Size -FT_Set_Char_Size -FT_Set_Charmap -FT_Set_Debug_Hook -FT_Set_MM_Blend_Coordinates -FT_Set_MM_Design_Coordinates -FT_Set_Pixel_Sizes -FT_Set_Renderer -FT_Set_Transform -FT_Set_Var_Blend_Coordinates -FT_Set_Var_Design_Coordinates -FT_Sfnt_Table_Info -FT_Sin -FT_SqrtFixed -FT_Stream_Close -FT_Stream_EnterFrame -FT_Stream_ExitFrame -FT_Stream_ExtractFrame -FT_Stream_Free -FT_Stream_GetChar -FT_Stream_GetLong -FT_Stream_GetLongLE -FT_Stream_GetOffset -FT_Stream_GetShort -FT_Stream_GetShortLE -FT_Stream_New -FT_Stream_Open -FT_Stream_OpenGzip -FT_Stream_OpenLZW -FT_Stream_OpenMemory -FT_Stream_Pos -FT_Stream_Read -FT_Stream_ReadAt -FT_Stream_ReadChar -FT_Stream_ReadFields -FT_Stream_ReadLong -FT_Stream_ReadLongLE -FT_Stream_ReadOffset -FT_Stream_ReadShort -FT_Stream_ReadShortLE -FT_Stream_ReleaseFrame -FT_Stream_Seek -FT_Stream_Skip -FT_Stream_TryRead -FT_Stroker_BeginSubPath -FT_Stroker_ConicTo -FT_Stroker_CubicTo -FT_Stroker_Done -FT_Stroker_EndSubPath -FT_Stroker_Export -FT_Stroker_ExportBorder -FT_Stroker_GetBorderCounts -FT_Stroker_GetCounts -FT_Stroker_LineTo -FT_Stroker_New -FT_Stroker_ParseOutline -FT_Stroker_Rewind -FT_Stroker_Set -FT_Tan -FT_Trace_Get_Count -FT_Trace_Get_Name -FT_TrueTypeGX_Free -FT_TrueTypeGX_Validate -FT_Vector_From_Polar -FT_Vector_Length -FT_Vector_Polarize -FT_Vector_Rotate -FT_Vector_Transform -FT_Vector_Unit -TT_New_Context -TT_RunIns -ft_corner_is_flat -ft_corner_orientation -ft_debug_init -ft_glyphslot_alloc_bitmap -ft_glyphslot_free_bitmap -ft_glyphslot_set_bitmap -ft_highpow2 -ft_mem_alloc -ft_mem_dup -ft_mem_free -ft_mem_qalloc -ft_mem_qrealloc -ft_mem_realloc -ft_mem_strcpyn -ft_mem_strdup -ft_module_get_service -ft_service_list_lookup -ft_synthesize_vertical_metrics -ft_validator_error -ft_validator_init -ft_validator_run diff --git a/CMU462/deps/freetype/lib/pkgconfig/freetype2.pc b/CMU462/deps/freetype/lib/pkgconfig/freetype2.pc deleted file mode 100755 index 58b3086..0000000 --- a/CMU462/deps/freetype/lib/pkgconfig/freetype2.pc +++ /dev/null @@ -1,11 +0,0 @@ -prefix=C:/PROGRA~2/GnuWin32 -exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${prefix}/include - -Name: FreeType 2 -Description: A free, high-quality, and portable font engine. -Version: 9.16.3 -Requires: -Libs: -L${libdir} -lfreetype -lz -Cflags: -I${includedir}/freetype2 -I${includedir} diff --git a/src/reference/drawsvg_ref.lib b/src/reference/drawsvg_ref.lib index 67b442c7e1352a5acd3defddbcecb30a806b2f08..3cba93dc3b6e9b2c4cf1b512724790ccf57899fb 100755 GIT binary patch literal 94842 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¥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 D4Xwe- literal 55300 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 -- GitLab