From 4f3a0d620faf60ac85f8c47b8abe6d5831753b05 Mon Sep 17 00:00:00 2001 From: Chlumsky Date: Mon, 8 Apr 2019 20:20:12 +0200 Subject: [PATCH] V1.6: Core algorithm refactor, pseudo-distance evaluation rework, error correction update, scanline rasterization and distance sign correction, dependencies update --- .gitignore | 7 + CHANGELOG.md | 45 + Msdfgen.sln | 20 +- Msdfgen.vcxproj | 174 +- Msdfgen.vcxproj.filters | 24 + README.md | 24 +- bin/freetype6.dll | Bin 522240 -> 0 bytes bin/zlib1.dll | Bin 107520 -> 0 bytes core/Contour.h | 2 +- core/Scanline.cpp | 70 + core/Scanline.h | 40 + core/Shape.cpp | 22 +- core/Shape.h | 5 +- core/contour-combiners.cpp | 122 + core/contour-combiners.h | 49 + core/edge-coloring.cpp | 8 +- core/edge-segments.cpp | 122 +- core/edge-segments.h | 5 + core/edge-selectors.cpp | 131 + core/edge-selectors.h | 83 + core/equation-solver.cpp | 2 +- core/msdfgen.cpp | 413 +-- core/rasterization.cpp | 117 + core/rasterization.h | 24 + core/render-sdf.cpp | 4 +- core/shape-description.cpp | 2 +- {lib => freetype}/FTL.TXT | 0 freetype/include/freetype/config/ftconfig.h | 571 +++ .../include}/freetype/config/ftheader.h | 289 +- freetype/include/freetype/config/ftmodule.h | 32 + .../include}/freetype/config/ftoption.h | 582 ++- .../include}/freetype/config/ftstdlib.h | 37 +- .../include}/freetype/freetype.h | 2667 ++++++++++---- freetype/include/freetype/ftadvanc.h | 187 + .../include}/freetype/ftbbox.h | 25 +- .../include}/freetype/ftbdf.h | 100 +- .../include}/freetype/ftbitmap.h | 74 +- .../include/freetype/ftbzip2.h | 44 +- .../include}/freetype/ftcache.h | 222 +- .../include}/freetype/ftchapters.h | 41 +- freetype/include/freetype/ftcid.h | 168 + freetype/include/freetype/ftdriver.h | 1225 +++++++ .../include}/freetype/fterrdef.h | 235 +- .../include}/freetype/fterrors.h | 134 +- .../include/freetype/ftfntfmt.h | 39 +- .../include}/freetype/ftgasp.h | 55 +- .../include}/freetype/ftglyph.h | 139 +- .../include}/freetype/ftgxval.h | 59 +- freetype/include/freetype/ftgzip.h | 151 + .../include}/freetype/ftimage.h | 608 ++-- freetype/include/freetype/ftincrem.h | 343 ++ freetype/include/freetype/ftlcdfil.h | 309 ++ .../include}/freetype/ftlist.h | 39 +- .../include}/freetype/ftlzw.h | 12 +- .../include}/freetype/ftmac.h | 47 +- freetype/include/freetype/ftmm.h | 638 ++++ freetype/include/freetype/ftmodapi.h | 711 ++++ .../include}/freetype/ftmoderr.h | 109 +- .../include}/freetype/ftotval.h | 46 +- .../include}/freetype/ftoutln.h | 170 +- freetype/include/freetype/ftparams.h | 205 ++ .../include}/freetype/ftpfr.h | 30 +- .../include}/freetype/ftrender.h | 48 +- .../include}/freetype/ftsizes.h | 18 +- .../include}/freetype/ftsnames.h | 131 +- .../include}/freetype/ftstroke.h | 183 +- .../include}/freetype/ftsynth.h | 37 +- .../include}/freetype/ftsystem.h | 29 +- .../include}/freetype/fttrigon.h | 24 +- .../include}/freetype/fttypes.h | 73 +- .../include}/freetype/ftwinfnt.h | 80 +- freetype/include/freetype/t1tables.h | 770 ++++ .../include}/freetype/ttnameid.h | 1076 +++--- .../include}/freetype/tttables.h | 454 ++- .../include}/freetype/tttags.h | 30 +- freetype/include/ft2build.h | 42 + freetype/win32/freetype.lib | Bin 0 -> 935774 bytes freetype/win64/freetype.lib | Bin 0 -> 1737310 bytes include/freetype/config/ftconfig.h | 350 -- include/freetype/config/ftmodule.h | 22 - include/freetype/ftincrem.h | 331 -- include/freetype/ftlcdfil.h | 166 - include/freetype/ftmm.h | 378 -- include/freetype/ftmodapi.h | 406 --- include/freetype/t1tables.h | 450 --- include/freetype/ttunpat.h | 59 - include/ft2build.h | 61 - include/lodepng.h | 359 +- include/tinyxml2.h | 591 +++- lib/freetype.lib | Bin 55978 -> 0 bytes lib/lodepng.cpp | 3149 ++++++++--------- lib/tinyxml2.cpp | 798 +++-- main.cpp | 136 +- msdfgen-ext.h | 4 +- msdfgen.h | 20 +- 95 files changed, 14473 insertions(+), 7660 deletions(-) create mode 100644 CHANGELOG.md delete mode 100644 bin/freetype6.dll delete mode 100644 bin/zlib1.dll create mode 100644 core/Scanline.cpp create mode 100644 core/Scanline.h create mode 100644 core/contour-combiners.cpp create mode 100644 core/contour-combiners.h create mode 100644 core/edge-selectors.cpp create mode 100644 core/edge-selectors.h create mode 100644 core/rasterization.cpp create mode 100644 core/rasterization.h rename {lib => freetype}/FTL.TXT (100%) create mode 100644 freetype/include/freetype/config/ftconfig.h rename {include => freetype/include}/freetype/config/ftheader.h (78%) create mode 100644 freetype/include/freetype/config/ftmodule.h rename {include => freetype/include}/freetype/config/ftoption.h (56%) rename {include => freetype/include}/freetype/config/ftstdlib.h (86%) rename {include => freetype/include}/freetype/freetype.h (57%) create mode 100644 freetype/include/freetype/ftadvanc.h rename {include => freetype/include}/freetype/ftbbox.h (80%) rename {include => freetype/include}/freetype/ftbdf.h (69%) rename {include => freetype/include}/freetype/ftbitmap.h (77%) rename include/freetype/ftgzip.h => freetype/include/freetype/ftbzip2.h (73%) rename {include => freetype/include}/freetype/ftcache.h (88%) rename {include => freetype/include}/freetype/ftchapters.h (70%) create mode 100644 freetype/include/freetype/ftcid.h create mode 100644 freetype/include/freetype/ftdriver.h rename {include => freetype/include}/freetype/fterrdef.h (75%) rename {include => freetype/include}/freetype/fterrors.h (54%) rename include/freetype/ftxf86.h => freetype/include/freetype/ftfntfmt.h (77%) rename {include => freetype/include}/freetype/ftgasp.h (66%) rename {include => freetype/include}/freetype/ftglyph.h (85%) rename {include => freetype/include}/freetype/ftgxval.h (87%) create mode 100644 freetype/include/freetype/ftgzip.h rename {include => freetype/include}/freetype/ftimage.h (76%) create mode 100644 freetype/include/freetype/ftincrem.h create mode 100644 freetype/include/freetype/ftlcdfil.h rename {include => freetype/include}/freetype/ftlist.h (91%) rename {include => freetype/include}/freetype/ftlzw.h (95%) rename {include => freetype/include}/freetype/ftmac.h (91%) create mode 100644 freetype/include/freetype/ftmm.h create mode 100644 freetype/include/freetype/ftmodapi.h rename {include => freetype/include}/freetype/ftmoderr.h (52%) rename {include => freetype/include}/freetype/ftotval.h (84%) rename {include => freetype/include}/freetype/ftoutln.h (78%) create mode 100644 freetype/include/freetype/ftparams.h rename {include => freetype/include}/freetype/ftpfr.h (91%) rename {include => freetype/include}/freetype/ftrender.h (86%) rename {include => freetype/include}/freetype/ftsizes.h (94%) rename {include => freetype/include}/freetype/ftsnames.h (55%) rename {include => freetype/include}/freetype/ftstroke.h (74%) rename {include => freetype/include}/freetype/ftsynth.h (67%) rename {include => freetype/include}/freetype/ftsystem.h (92%) rename {include => freetype/include}/freetype/fttrigon.h (93%) rename {include => freetype/include}/freetype/fttypes.h (93%) rename {include => freetype/include}/freetype/ftwinfnt.h (82%) create mode 100644 freetype/include/freetype/t1tables.h rename {include => freetype/include}/freetype/ttnameid.h (54%) rename {include => freetype/include}/freetype/tttables.h (69%) rename {include => freetype/include}/freetype/tttags.h (78%) create mode 100644 freetype/include/ft2build.h create mode 100644 freetype/win32/freetype.lib create mode 100644 freetype/win64/freetype.lib delete mode 100644 include/freetype/config/ftconfig.h delete mode 100644 include/freetype/config/ftmodule.h delete mode 100644 include/freetype/ftincrem.h delete mode 100644 include/freetype/ftlcdfil.h delete mode 100644 include/freetype/ftmm.h delete mode 100644 include/freetype/ftmodapi.h delete mode 100644 include/freetype/t1tables.h delete mode 100644 include/freetype/ttunpat.h delete mode 100644 include/ft2build.h delete mode 100644 lib/freetype.lib diff --git a/.gitignore b/.gitignore index 9cdcff2b..d3bf7908 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ Debug/ Release/ +Debug Library/ +Release Library/ +x86/ +x64/ *.exe *.user *.sdf @@ -8,7 +12,10 @@ Release/ *.iobj *.suo *.VC.opendb +*.VC.db +bin/*.lib output.png render.png out/ +build/ build_xcode/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..a427adb8 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,45 @@ + +## Version 1.6 (2019-04-06) + +- Core algorithm rewritten to split up advanced edge selection logic into modular template arguments. +- Pseudo-distance evaluation reworked to eliminate discontinuities at the midpoint between edges. +- MSDF error correction reworked to also fix distances away from edges and consider diagonal pairs. Code simplified. +- Added scanline rasterization support for `Shape`. +- Added a scanline pass in the standalone version, which corrects the signs in the distance field according to the selected fill rule (`-fillrule`). Can be disabled using `-noscanline`. +- Fixed autoframe scaling, which previously caused the output to have unnecessary empty border. +- `-guessorder` switch no longer enabled by default, as the functionality is now provided by the scanline pass. +- Updated FreeType and other libraries, changed to static linkage +- Added 64-bit and static library builds to the Visual Studio solution + +## Version 1.5 (2017-07-23) + +- Fixed rounding error in cubic curve splitting. +- SVG parser fixes and support for additional path commands. +- Added CMake build script. + +## Version 1.4 (2017-02-09) + +- Reworked contour combining logic to support overlapping contours. Original algorithm preserved in functions with `_legacy` suffix, which are invoked by the new `-legacy` switch. +- Fixed a severe bug in cubic curve distance computation, where a control point lies at the endpoint. +- Standalone version now automatically detects if the input has the wrong orientation and adjusts the distance field accordingly. Can be disabled by `-keeporder` or `-reverseorder` switch. +- SVG parser fixes and improvements. + +## Version 1.3 (2016-12-07) + +- Fixed `-reverseorder` switch. +- Fixed glyph loading to use the proper method of acquiring the outlines from FreeType. + +## Version 1.2 (2016-07-20) + +- Added option to specify that shape vertices are listed in reverse order (`-reverseorder`). +- Added option to set a seed for the edge coloring heuristic (-seed \), which can be used to adjust the output. +- Fixed parsing of glyph contours starting that start with a curve control point. + +## Version 1.1 (2016-05-08) + +- Switched to MIT license due to popular demand. +- Fixed SDF rendering anti-aliasing when the output is smaller than the distance field. + +## Version 1.0 (2016-04-28) + +- Project published. diff --git a/Msdfgen.sln b/Msdfgen.sln index 92ee98d6..22bc005a 100644 --- a/Msdfgen.sln +++ b/Msdfgen.sln @@ -1,18 +1,36 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 +VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Msdfgen", "Msdfgen.vcxproj", "{84BE2D91-F071-4151-BE12-61460464C494}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug Library|x64 = Debug Library|x64 + Debug Library|x86 = Debug Library|x86 + Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release Library|x64 = Release Library|x64 + Release Library|x86 = Release Library|x86 + Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {84BE2D91-F071-4151-BE12-61460464C494}.Debug Library|x64.ActiveCfg = Debug Library|x64 + {84BE2D91-F071-4151-BE12-61460464C494}.Debug Library|x64.Build.0 = Debug Library|x64 + {84BE2D91-F071-4151-BE12-61460464C494}.Debug Library|x86.ActiveCfg = Debug Library|Win32 + {84BE2D91-F071-4151-BE12-61460464C494}.Debug Library|x86.Build.0 = Debug Library|Win32 + {84BE2D91-F071-4151-BE12-61460464C494}.Debug|x64.ActiveCfg = Debug|x64 + {84BE2D91-F071-4151-BE12-61460464C494}.Debug|x64.Build.0 = Debug|x64 {84BE2D91-F071-4151-BE12-61460464C494}.Debug|x86.ActiveCfg = Debug|Win32 {84BE2D91-F071-4151-BE12-61460464C494}.Debug|x86.Build.0 = Debug|Win32 + {84BE2D91-F071-4151-BE12-61460464C494}.Release Library|x64.ActiveCfg = Release Library|x64 + {84BE2D91-F071-4151-BE12-61460464C494}.Release Library|x64.Build.0 = Release Library|x64 + {84BE2D91-F071-4151-BE12-61460464C494}.Release Library|x86.ActiveCfg = Release Library|Win32 + {84BE2D91-F071-4151-BE12-61460464C494}.Release Library|x86.Build.0 = Release Library|Win32 + {84BE2D91-F071-4151-BE12-61460464C494}.Release|x64.ActiveCfg = Release|x64 + {84BE2D91-F071-4151-BE12-61460464C494}.Release|x64.Build.0 = Release|x64 {84BE2D91-F071-4151-BE12-61460464C494}.Release|x86.ActiveCfg = Release|Win32 {84BE2D91-F071-4151-BE12-61460464C494}.Release|x86.Build.0 = Release|Win32 EndGlobalSection diff --git a/Msdfgen.vcxproj b/Msdfgen.vcxproj index ce77c2f5..b4a20f97 100644 --- a/Msdfgen.vcxproj +++ b/Msdfgen.vcxproj @@ -1,10 +1,26 @@  + + Debug Library + Win32 + + + Debug Library + x64 + Debug Win32 + + Release Library + Win32 + + + Release Library + x64 + Release Win32 @@ -30,6 +46,12 @@ v140 MultiByte + + StaticLibrary + true + v140 + MultiByte + Application false @@ -37,12 +59,25 @@ true MultiByte + + StaticLibrary + false + v140 + true + MultiByte + Application true v140 MultiByte + + StaticLibrary + true + v140 + MultiByte + Application false @@ -50,6 +85,13 @@ true MultiByte + + StaticLibrary + false + v140 + true + MultiByte + @@ -58,23 +100,54 @@ + + + + + + + + + + + + msdfgen + + msdfgen + msdfgen $(SolutionDir)\bin\ + + msdfgen + $(SolutionDir)\bin\ + + + msdfgen + + + msdfgen + + + msdfgen + + + msdfgen + Level3 @@ -82,19 +155,58 @@ true MSDFGEN_STANDALONE;MSDFGEN_USE_CPP11;%(PreprocessorDefinitions) MultiThreadedDebug - include;%(AdditionalIncludeDirectories) + include;freetype/include;%(AdditionalIncludeDirectories) Console - lib;%(AdditionalLibraryDirectories) + freetype/win32;%(AdditionalLibraryDirectories) + + + Level3 + Disabled + true + MSDFGEN_USE_CPP11;%(PreprocessorDefinitions) + MultiThreadedDebug + include;freetype/include;%(AdditionalIncludeDirectories) + + + Console + freetype;%(AdditionalLibraryDirectories) + + + MachineX86 + freetype/win32;%(AdditionalLibraryDirectories) + + + Level3 Disabled true + include;freetype/include;%(AdditionalIncludeDirectories) + MSDFGEN_STANDALONE;MSDFGEN_USE_CPP11;%(PreprocessorDefinitions) + MultiThreadedDebug + + Console + freetype/win64;%(AdditionalLibraryDirectories) + + + + + Level3 + Disabled + true + MSDFGEN_USE_CPP11;%(PreprocessorDefinitions) + include;freetype/include;%(AdditionalIncludeDirectories) + MultiThreadedDebug + + + freetype/win64;%(AdditionalLibraryDirectories) + @@ -105,7 +217,26 @@ true MSDFGEN_STANDALONE;MSDFGEN_USE_CPP11;%(PreprocessorDefinitions) MultiThreaded - include;%(AdditionalIncludeDirectories) + include;freetype/include;%(AdditionalIncludeDirectories) + + + true + true + Console + freetype/win32;%(AdditionalLibraryDirectories) + No + + + + + Level3 + MaxSpeed + true + true + true + MSDFGEN_USE_CPP11;%(PreprocessorDefinitions) + MultiThreaded + include;freetype/include;%(AdditionalIncludeDirectories) true @@ -114,6 +245,10 @@ lib;%(AdditionalLibraryDirectories) No + + MachineX86 + freetype/win32;%(AdditionalLibraryDirectories) + @@ -122,23 +257,52 @@ true true true + include;freetype/include;%(AdditionalIncludeDirectories) + MSDFGEN_STANDALONE;MSDFGEN_USE_CPP11;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + Console + freetype/win64;%(AdditionalLibraryDirectories) + false + + + + + Level3 + MaxSpeed + true + true + true + include;freetype/include;%(AdditionalIncludeDirectories) + MSDFGEN_USE_CPP11;%(PreprocessorDefinitions) + MultiThreaded true true + + freetype/win64;%(AdditionalLibraryDirectories) + + + + + @@ -152,13 +316,17 @@ + + + + diff --git a/Msdfgen.vcxproj.filters b/Msdfgen.vcxproj.filters index 5fd31834..9008ea47 100644 --- a/Msdfgen.vcxproj.filters +++ b/Msdfgen.vcxproj.filters @@ -78,6 +78,18 @@ Extensions + + Core + + + Core + + + Core + + + Core + @@ -137,6 +149,18 @@ Core + + Core + + + Core + + + Core + + + Core + diff --git a/README.md b/README.md index ce800e6d..50098cf3 100644 --- a/README.md +++ b/README.md @@ -14,16 +14,8 @@ The following comparison demonstrates the improvement in image quality. ![demo-sdf16](https://cloud.githubusercontent.com/assets/18639794/14770360/20c51156-0a70-11e6-8f03-ed7632d07997.png) ![demo-sdf32](https://cloud.githubusercontent.com/assets/18639794/14770361/251a4406-0a70-11e6-95a7-e30e235ac729.png) -## New in version 1.4 - - The procedure of how contours are combined together has been reworked, and now supports overlapping contours, - which are often present in fonts with auto-generated accented glyphs. Since this is a major change to the core algorithm, - the original versions of all functions in [msdfgen.h](msdfgen.h) have been preserved with `_legacy` suffix, - and can be enabled in the command line tool with **-legacy** switch. - - A major bug has been fixed in the evaluation of signed distance of cubic curves, in which at least one of the control points - lies at the endpoint. If you use an older version, you should update now. - - In the standalone program, the orientation of the input is now being automatically detected by sampling the signed distance - at an arbitrary point outside the shape's bounding box, and the output adjusted accordingly. This can be disabled - by new option **-keeporder** or the pre-existing **-reverseorder**. +- To learn more about this method, you can read my [Master's thesis](https://github.com/Chlumsky/msdfgen/files/3050967/thesis.pdf). +- Check what's new in the [changelog](CHANGELOG.md). ## Getting started @@ -38,7 +30,9 @@ and [LodePNG](http://lodev.org/lodepng/). Additionaly, there is the [main.cpp](main.cpp), which wraps the functionality into a comprehensive standalone console program. To start using the program immediately, -there is a Windows binary available for download in the "Releases" section. +there is a Windows binary available for download in the ["Releases" section](https://github.com/Chlumsky/msdfgen/releases). +To build the project, you may use the included [Visual Studio solution](Msdfgen.sln) +or [CMake script](CMakeLists.txt). ## Console commands @@ -68,11 +62,11 @@ Some of the important ones are: - **-size \ \** – specifies the dimensions of the output distance field (in pixels). - **-range \**, **-pxrange \** – specifies the width of the range around the shape between the minimum and maximum representable signed distance in shape units or distance field pixels, respectivelly. - - **-autoframe** – automatically frames the shape to fit the distance field. If the output must be precisely aligned, - you should manually position it using -translate and -scale instead. - **-scale \** – sets the scale used to convert shape units to distance field pixels. - **-translate \ \** – sets the translation of the shape in shape units. Otherwise the origin (0, 0) lies in the bottom left corner. + - **-autoframe** – automatically frames the shape to fit the distance field. If the output must be precisely aligned, + you should manually position it using -translate and -scale instead. - **-angle \** – specifies the maximum angle to be considered a corner. Can be expressed in radians (3.0) or degrees with D at the end (171.9D). - **-testrender \ \ \** - tests the generated distance field by using it to render an image @@ -90,6 +84,8 @@ msdfgen.exe msdf -font C:\Windows\Fonts\arialbd.ttf 'M' -o msdf.png -size 32 32 will take the glyph capital M from the Arial Bold typeface, generate a 32×32 multi-channel distance field with a 4 pixels wide distance range, store it into msdf.png, and create a test render of the glyph as render.png. +**Note:** Do not use `-autoframe` to generate character maps! It is intended as a quick preview only. + ## Library API If you choose to use this utility inside your own program, there are a few simple steps you need to perform @@ -169,6 +165,8 @@ void main() { } ``` +**Note:** This is an example shader only and probably is not optimal for your use case! Please do not blindly copy & paste. + ## Shape description syntax The text shape description has the following syntax. diff --git a/bin/freetype6.dll b/bin/freetype6.dll deleted file mode 100644 index e35edc6bb07a741798aef2b642c13005b8b8ffde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522240 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

3;kYxczwOC% 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%0Dy#{TMfqvmj8^ln4r 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%0A5g2>GmO5?lQxf5rzm1XuM}&aUaB9{ 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%0D`EY1S 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%0DS=- zfXM(eAOVmC*a#>G90yzg+ylIH2Xz6c0fPZw0DJ&uz+6BoU=^SMuoJK!@FSoZ@F$@C z-FDR0z!xwZkOWu>*aFxGXarmb{0(^JPviyY18@h72lxP{ z0pPd#Ac4e0z9T^-n1ql} zVkTi^8VM&6B$7mt>0}0(NoJARq#ETCmYB{Qb0D5LQ+IF zlP#o}Y$YXR8`(~FkW#Xfl#y~$L3WYdWDlt%Rb(%zCN*RqsU`bK9XUV_l6rE8941G| zQF4qNCnv~Ba*CWLXUJL7KpM%9 z?O_fzvN%Ejm$j$C_n(5tVFF@--8Q+g#t`##BaJ=G!vb-vF~S(hhKx4*8NI&@4LAC; zuj2-qB44OX+dx@eq)%Ml-UECiP16mLMsL1w-UIynygiKmhN$33?@?yIs9<9Ra$lOHI+hMU>SdYGp3k!eZ1`Q~IZVv`sTHl*n6*CD~P!U8Sd#s!<%+Ogk9 zntZ|y;cWHT_fcqM*{eWznu+(IK%;Na`0ywr&A|(W3XNn7#C{xSjQlb*j14sU4K;;E znnD9;zMjEmb2wjK^a<~Q9-c_Z5Du2{X8Fil2=xj#hk@{HS!ftbK2LLah=DDx7&Oul z8W05rmqn)udJhZrGqN;gF%d#r(<0E*6dr+e@rjmjA!FWV@z9A4wRJX2DPn-z+v8lLjz1; zaDks`Dickio}cN4ETQa^R4T5XGG?L8H_}Y8sBmC0WkD<_dzrzd9Ie`Z5(@j` zS992`e~AY%5@{SfGcw%JHaFU_+J^CxfF%iEPOord7)(!XF$L-BEyo>eoM8%;sztlB zw_FghxNPVcpJ3CpC@EDga7HLEtHj*Uew>u!T8R>S&_FZSpV+((&fr2b#l$ zmSC~Qn_oy6jT{=`kA6(^8fu83Y{_Lp8HpwFuuxN^h3w+Rk~gHvNMApQY`(_`;nL9R zJ<^0e&9^c8>}d*x&}0WQ?jr(NQn6o$g+}nwoqI*Xym)2bxj~MWlzsh@l@7FlM6toX zu;pj5=qF2V=SEp?dDj_bh{VVv2vfX;n`WXT2;&SNz>0^kU{(O)8FHTHz&&}7HhYgn z4`VBWAYP(^jl=z;l-H?qT#bhro`@GLsm{cM|zKNQCA=YsyoTv$=o_ZbiGA{EQMi%0A)o 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

r&XcBGALU%*XsJ zz=CHMBP_}u7(otfF$Msb&SJ-4P%w{dtX0NQny13#V>$Ac6 zx+iSPW?!y;$M&Z?@Nh5paX%06AP@0-^r#4r@&}Hv&f{G1Bywn)XLy$9c%DD;0x$9s zFY^ko@@J&eI&bhMf8jQ7@iu?u9o|K!>G3`v@F5@ZF`w`$pK*uJ`GPO`im&;GZ~2bz z`GFttLc7=S8Ga*R1dWh!Z-kAA5j7qRVo+4!d;NW`yrHo&y&@_yqJsW96id7e9|3V? zY0H6J$fFFa6q449>Z`drsC(-lQ|R$@?mSUE$9E2kAhAipT11OtRwo+Ol3E6C^60La z!g@rHg2<$v($kjB@n@}sA!ABvF} zi-~YV6xEuQIa!j=vL+j{DPM4k4$f_%mTIH6YJ)x(cno6Rilcs0kLkzEV-_>$ooDIt zj*d~l-PB_?x`W#p9NfhYH5fqM5!74u0@aur2}JSrA=8o!KC_ zf2y(-+u=h80gy;QUlznwK$#7)`k=`HK|9=g0HhEj32PT%>N@P)fsx0s@CxSjz_wu+ zHVLa1;vWWc?UlrQod!EukrR3Ggju_YbXx{XRq-rp$iEHI6feRCTW#?wI-)Dykl*`a z0M_2mZ7OCsySZ3^y_Hytjo6Bv*o%^^%DU{xE;bT9%xeQVlp{IDZel8D(!u<;kW0Ce zYq^nI>_YbP09rlDt9;6@0xF^&6j5=dz;8xnRbD-*qAIJ3dR8^n0MWK;t5?-kJ+M7g zBQ;SoOr7qtTH{&mK>HD&h45NF%a1)p&QKbmesaituE$} zp4GS3$R^vwF0oG>5=YDxcOK>b6T@w0_(_j1kRq9qIp)wM*`ee6(eFdrJ+gmB%W8S; zNsFLb2n??DQ0)G@bum3xf?EgMSQO6wX6q*0`9^!7Xh4S`X@VWt3_Q6#JbE!^30C~( z!zqmIy87LAuIv8Jbl=?eZZ_9zpPlw@G}mW~E0eh%b1fFQ7_0;$`{#TxMK<`A&V4Wg zu-k)(e}~aqDnFR~Ao7Dpm&SuQiV)0r+m&Ugttbkctwy;He{RMKJ#5}P` zERkw&*m3SWHFqQYFW4!OGIDU0Jj1$m>@%9!mD;35+DOG6OK5MJG<`%ir$garH1D~L`{{J-~%%%y7-evoc$z4a;K_VvLz z%LUG^IbD27 xa7XkP?{7<0w}$!sIVx@_bjp;G{$ETvA3Cg50~rZ~vK}zW^q-^nCyT diff --git a/bin/zlib1.dll b/bin/zlib1.dll deleted file mode 100644 index 9ea38d5cf3e0ddbeaccc0122ce3cdb6c3741a3e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107520 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

|MhCkB4mr`;oB! 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 +#include "arithmetics.hpp" + +namespace msdfgen { + +static int compareIntersections(const void *a, const void *b) { + return sign(reinterpret_cast(a)->x-reinterpret_cast(b)->x); +} + +Scanline::Scanline() : lastIndex(0) { } + +void Scanline::preprocess() { + lastIndex = 0; + if (!this->intersections.empty()) { + qsort(&this->intersections[0], this->intersections.size(), sizeof(Intersection), compareIntersections); + int totalDirection = 0; + for (std::vector::iterator intersection = intersections.begin(); intersection != intersections.end(); ++intersection) { + totalDirection += intersection->direction; + intersection->direction = totalDirection; + } + } +} + +void Scanline::setIntersections(const std::vector &intersections) { + this->intersections = intersections; + preprocess(); +} + +#ifdef MSDFGEN_USE_CPP11 +void Scanline::setIntersections(std::vector &&intersections) { + this->intersections = (std::vector &&) intersections; + preprocess(); +} +#endif + +int Scanline::moveTo(double x) const { + if (intersections.empty()) + return -1; + int index = lastIndex; + if (x < intersections[index].x) { + do { + if (index == 0) { + lastIndex = 0; + return -1; + } + --index; + } while (x < intersections[index].x); + } else { + while (index < (int) intersections.size()-1 && x >= intersections[index+1].x) + ++index; + } + lastIndex = index; + return index; +} + +int Scanline::countIntersections(double x) const { + return moveTo(x)+1; +} + +int Scanline::sumIntersections(double x) const { + int index = moveTo(x); + if (index >= 0) + return intersections[index].direction; + return 0; +} + +} diff --git a/core/Scanline.h b/core/Scanline.h new file mode 100644 index 00000000..1da2e675 --- /dev/null +++ b/core/Scanline.h @@ -0,0 +1,40 @@ + +#pragma once + +#include + +namespace msdfgen { + +/// Represents a horizontal scanline intersecting a shape. +class Scanline { + +public: + /// An intersection with the scanline. + struct Intersection { + /// X coordinate + double x; + /// Normalized Y direction of the oriented edge at the point of intersection + int direction; + }; + + Scanline(); + /// Populates the intersection list. + void setIntersections(const std::vector &intersections); +#ifdef MSDFGEN_USE_CPP11 + void setIntersections(std::vector &&intersections); +#endif + /// Returns the number of intersections left of x. + int countIntersections(double x) const; + /// Returns the total sign of intersections left of x. + int sumIntersections(double x) const; + +private: + std::vector intersections; + mutable int lastIndex; + + void preprocess(); + int moveTo(double x) const; + +}; + +} diff --git a/core/Shape.cpp b/core/Shape.cpp index fc4050d8..6d41b109 100644 --- a/core/Shape.cpp +++ b/core/Shape.cpp @@ -23,7 +23,7 @@ Contour & Shape::addContour() { bool Shape::validate() const { for (std::vector::const_iterator contour = contours.begin(); contour != contours.end(); ++contour) { if (!contour->edges.empty()) { - Point2 corner = (*(contour->edges.end()-1))->point(1); + Point2 corner = contour->edges.back()->point(1); for (std::vector::const_iterator edge = contour->edges.begin(); edge != contour->edges.end(); ++edge) { if (!*edge) return false; @@ -53,4 +53,24 @@ void Shape::bounds(double &l, double &b, double &r, double &t) const { contour->bounds(l, b, r, t); } +void Shape::scanline(Scanline &line, double y) const { + std::vector intersections; + double x[3]; + int dy[3]; + for (std::vector::const_iterator contour = contours.begin(); contour != contours.end(); ++contour) { + for (std::vector::const_iterator edge = contour->edges.begin(); edge != contour->edges.end(); ++edge) { + int n = (*edge)->scanlineIntersections(x, dy, y); + for (int i = 0; i < n; ++i) { + Scanline::Intersection intersection = { x[i], dy[i] }; + intersections.push_back(intersection); + } + } + } +#ifdef MSDFGEN_USE_CPP11 + line.setIntersections((std::vector &&) intersections); +#else + line.setIntersections(intersections); +#endif +} + } diff --git a/core/Shape.h b/core/Shape.h index 0c125417..4834b9ec 100644 --- a/core/Shape.h +++ b/core/Shape.h @@ -3,6 +3,7 @@ #include #include "Contour.h" +#include "Scanline.h" namespace msdfgen { @@ -27,8 +28,10 @@ class Shape { void normalize(); /// Performs basic checks to determine if the object represents a valid shape. bool validate() const; - /// Computes the shape's bounding box. + /// Adjusts the bounding box to fit the shape. void bounds(double &l, double &b, double &r, double &t) const; + /// Outputs the scanline that intersects the shape at y. + void scanline(Scanline &line, double y) const; }; diff --git a/core/contour-combiners.cpp b/core/contour-combiners.cpp new file mode 100644 index 00000000..61b5dfbe --- /dev/null +++ b/core/contour-combiners.cpp @@ -0,0 +1,122 @@ + +#include "contour-combiners.h" + +#include "arithmetics.hpp" + +namespace msdfgen { + +static void initDistance(double &distance) { + distance = SignedDistance::INFINITE.distance; +} + +static void initDistance(MultiDistance &distance) { + distance.r = SignedDistance::INFINITE.distance; + distance.g = SignedDistance::INFINITE.distance; + distance.b = SignedDistance::INFINITE.distance; +} + +static double resolveDistance(double distance) { + return distance; +} + +static double resolveDistance(const MultiDistance &distance) { + return median(distance.r, distance.g, distance.b); +} + +template +SimpleContourCombiner::SimpleContourCombiner(const Shape &shape) { } + +template +void SimpleContourCombiner::reset(const Point2 &p) { + shapeEdgeSelector = EdgeSelector(p); +} + +template +void SimpleContourCombiner::setContourEdge(int i, const EdgeSelector &edgeSelector) { + shapeEdgeSelector.merge(edgeSelector); +} + +template +typename SimpleContourCombiner::DistanceType SimpleContourCombiner::distance() const { + return shapeEdgeSelector.distance(); +} + +template class SimpleContourCombiner; +template class SimpleContourCombiner; +template class SimpleContourCombiner; + +template +OverlappingContourCombiner::OverlappingContourCombiner(const Shape &shape) { + windings.reserve(shape.contours.size()); + for (std::vector::const_iterator contour = shape.contours.begin(); contour != shape.contours.end(); ++contour) + windings.push_back(contour->winding()); + edgeSelectors.resize(shape.contours.size()); +} + +template +void OverlappingContourCombiner::reset(const Point2 &p) { + shapeEdgeSelector = EdgeSelector(p); + innerEdgeSelector = EdgeSelector(p); + outerEdgeSelector = EdgeSelector(p); +} + +template +void OverlappingContourCombiner::setContourEdge(int i, const EdgeSelector &edgeSelector) { + DistanceType edgeDistance = edgeSelector.distance(); + edgeSelectors[i] = edgeSelector; + shapeEdgeSelector.merge(edgeSelector); + if (windings[i] > 0 && resolveDistance(edgeDistance) >= 0) + innerEdgeSelector.merge(edgeSelector); + if (windings[i] < 0 && resolveDistance(edgeDistance) <= 0) + outerEdgeSelector.merge(edgeSelector); +} + +template +typename OverlappingContourCombiner::DistanceType OverlappingContourCombiner::distance() const { + DistanceType shapeDistance = shapeEdgeSelector.distance(); + DistanceType innerDistance = innerEdgeSelector.distance(); + DistanceType outerDistance = outerEdgeSelector.distance(); + double innerScalarDistance = resolveDistance(innerDistance); + double outerScalarDistance = resolveDistance(outerDistance); + DistanceType distance; + initDistance(distance); + int contourCount = (int) windings.size(); + + int winding = 0; + if (innerScalarDistance >= 0 && fabs(innerScalarDistance) <= fabs(outerScalarDistance)) { + distance = innerDistance; + winding = 1; + for (int i = 0; i < contourCount; ++i) + if (windings[i] > 0) { + DistanceType contourDistance = edgeSelectors[i].distance(); + if (fabs(resolveDistance(contourDistance)) < fabs(outerScalarDistance) && resolveDistance(contourDistance) > resolveDistance(distance)) + distance = contourDistance; + } + } else if (outerScalarDistance <= 0 && fabs(outerScalarDistance) < fabs(innerScalarDistance)) { + distance = outerDistance; + winding = -1; + for (int i = 0; i < contourCount; ++i) + if (windings[i] < 0) { + DistanceType contourDistance = edgeSelectors[i].distance(); + if (fabs(resolveDistance(contourDistance)) < fabs(innerScalarDistance) && resolveDistance(contourDistance) < resolveDistance(distance)) + distance = contourDistance; + } + } else + return shapeDistance; + + for (int i = 0; i < contourCount; ++i) + if (windings[i] != winding) { + DistanceType contourDistance = edgeSelectors[i].distance(); + if (resolveDistance(contourDistance)*resolveDistance(distance) >= 0 && fabs(resolveDistance(contourDistance)) < fabs(resolveDistance(distance))) + distance = contourDistance; + } + if (resolveDistance(distance) == resolveDistance(shapeDistance)) + distance = shapeDistance; + return distance; +} + +template class OverlappingContourCombiner; +template class OverlappingContourCombiner; +template class OverlappingContourCombiner; + +} diff --git a/core/contour-combiners.h b/core/contour-combiners.h new file mode 100644 index 00000000..c0579683 --- /dev/null +++ b/core/contour-combiners.h @@ -0,0 +1,49 @@ + +#pragma once + +#include "Shape.h" +#include "edge-selectors.h" + +namespace msdfgen { + +/// Simply selects the nearest contour. +template +class SimpleContourCombiner { + +public: + typedef EdgeSelector EdgeSelectorType; + typedef typename EdgeSelector::DistanceType DistanceType; + + explicit SimpleContourCombiner(const Shape &shape); + void reset(const Point2 &p); + void setContourEdge(int i, const EdgeSelector &edgeSelector); + DistanceType distance() const; + +private: + EdgeSelector shapeEdgeSelector; + +}; + +/// Selects the nearest contour that actually forms a border between filled and unfilled area. +template +class OverlappingContourCombiner { + +public: + typedef EdgeSelector EdgeSelectorType; + typedef typename EdgeSelector::DistanceType DistanceType; + + explicit OverlappingContourCombiner(const Shape &shape); + void reset(const Point2 &p); + void setContourEdge(int i, const EdgeSelector &edgeSelector); + DistanceType distance() const; + +private: + std::vector windings; + std::vector edgeSelectors; + EdgeSelector shapeEdgeSelector; + EdgeSelector innerEdgeSelector; + EdgeSelector outerEdgeSelector; + +}; + +} diff --git a/core/edge-coloring.cpp b/core/edge-coloring.cpp index 334671b8..97b9e75e 100644 --- a/core/edge-coloring.cpp +++ b/core/edge-coloring.cpp @@ -31,7 +31,7 @@ void edgeColoringSimple(Shape &shape, double angleThreshold, unsigned long long // Identify corners corners.clear(); if (!contour->edges.empty()) { - Vector2 prevDirection = (*(contour->edges.end()-1))->direction(1); + Vector2 prevDirection = contour->edges.back()->direction(1); int index = 0; for (std::vector::const_iterator edge = contour->edges.begin(); edge != contour->edges.end(); ++edge, ++index) { if (isCorner(prevDirection.normalize(), (*edge)->direction(0).normalize(), crossThreshold)) @@ -51,7 +51,7 @@ void edgeColoringSimple(Shape &shape, double angleThreshold, unsigned long long switchColor(colors[2] = colors[0], seed); int corner = corners[0]; if (contour->edges.size() >= 3) { - int m = contour->edges.size(); + int m = (int) contour->edges.size(); for (int i = 0; i < m; ++i) contour->edges[(corner+i)%m]->color = (colors+1)[int(3+2.875*i/(m-1)-1.4375+.5)-3]; } else if (contour->edges.size() >= 1) { @@ -75,10 +75,10 @@ void edgeColoringSimple(Shape &shape, double angleThreshold, unsigned long long } // Multiple corners else { - int cornerCount = corners.size(); + int cornerCount = (int) corners.size(); int spline = 0; int start = corners[0]; - int m = contour->edges.size(); + int m = (int) contour->edges.size(); EdgeColor color = WHITE; switchColor(color, seed); EdgeColor initialColor = color; diff --git a/core/edge-segments.cpp b/core/edge-segments.cpp index 169f2bb7..1f8bbef8 100644 --- a/core/edge-segments.cpp +++ b/core/edge-segments.cpp @@ -111,7 +111,7 @@ SignedDistance LinearSegment::signedDistance(Point2 origin, double ¶m) const SignedDistance QuadraticSegment::signedDistance(Point2 origin, double ¶m) const { Vector2 qa = p[0]-origin; Vector2 ab = p[1]-p[0]; - Vector2 br = p[0]+p[2]-p[1]-p[1]; + Vector2 br = p[2]-p[1]-ab; double a = dotProduct(br, br); double b = 3*dotProduct(ab, br); double c = 2*dotProduct(ab, ab)+dotProduct(qa, br); @@ -193,6 +193,126 @@ SignedDistance CubicSegment::signedDistance(Point2 origin, double ¶m) const return SignedDistance(minDistance, fabs(dotProduct(direction(1).normalize(), (p[3]-origin).normalize()))); } +int LinearSegment::scanlineIntersections(double x[3], int dy[3], double y) const { + if ((y >= p[0].y && y < p[1].y) || (y >= p[1].y && y < p[0].y)) { + double param = (y-p[0].y)/(p[1].y-p[0].y); + x[0] = mix(p[0].x, p[1].x, param); + dy[0] = sign(p[1].y-p[0].y); + return 1; + } + return 0; +} + +int QuadraticSegment::scanlineIntersections(double x[3], int dy[3], double y) const { + int total = 0; + int nextDY = y > p[0].y ? 1 : -1; + x[total] = p[0].x; + if (p[0].y == y) { + if (p[0].y < p[1].y || (p[0].y == p[1].y && p[0].y < p[2].y)) + dy[total++] = 1; + else + nextDY = 1; + } + { + Vector2 ab = p[1]-p[0]; + Vector2 br = p[2]-p[1]-ab; + double t[2]; + int solutions = solveQuadratic(t, br.y, 2*ab.y, p[0].y-y); + // Sort solutions + double tmp; + if (solutions >= 2 && t[0] > t[1]) + tmp = t[0], t[0] = t[1], t[1] = tmp; + for (int i = 0; i < solutions && total < 2; ++i) { + if (t[i] > 0 && t[i] < 1) { + x[total] = p[0].x+2*t[i]*ab.x+t[i]*t[i]*br.x; + if (nextDY*(ab.y+t[i]*br.y) >= 0) { + dy[total++] = nextDY; + nextDY = -nextDY; + } + } + } + } + if (p[2].y == y) { + if (nextDY > 0 && total > 0) { + --total; + nextDY = -1; + } + if ((p[2].y < p[1].y || (p[2].y == p[1].y && p[2].y < p[0].y)) && total < 2) { + x[total] = p[2].x; + if (nextDY < 0) { + dy[total++] = -1; + nextDY = 1; + } + } + } + if (nextDY != (y >= p[2].y ? 1 : -1)) { + if (total > 0) + --total; + else + dy[total++] = nextDY; + } + return total; +} + +int CubicSegment::scanlineIntersections(double x[3], int dy[3], double y) const { + int total = 0; + int nextDY = y > p[0].y ? 1 : -1; + x[total] = p[0].x; + if (p[0].y == y) { + if (p[0].y < p[1].y || (p[0].y == p[1].y && (p[0].y < p[2].y || (p[0].y == p[2].y && p[0].y < p[3].y)))) + dy[total++] = 1; + else + nextDY = 1; + } + { + Vector2 ab = p[1]-p[0]; + Vector2 br = p[2]-p[1]-ab; + Vector2 as = (p[3]-p[2])-(p[2]-p[1])-br; + double t[3]; + int solutions = solveCubic(t, as.y, 3*br.y, 3*ab.y, p[0].y-y); + // Sort solutions + double tmp; + if (solutions >= 2) { + if (t[0] > t[1]) + tmp = t[0], t[0] = t[1], t[1] = tmp; + if (solutions >= 3 && t[1] > t[2]) { + tmp = t[1], t[1] = t[2], t[2] = tmp; + if (t[0] > t[1]) + tmp = t[0], t[0] = t[1], t[1] = tmp; + } + } + for (int i = 0; i < solutions && total < 3; ++i) { + if (t[i] > 0 && t[i] < 1) { + x[total] = p[0].x+3*t[i]*ab.x+3*t[i]*t[i]*br.x+t[i]*t[i]*t[i]*as.x; + if (nextDY*(ab.y+2*t[i]*br.y+t[i]*t[i]*as.y) >= 0) { + dy[total++] = nextDY; + nextDY = -nextDY; + } + } + } + } + if (p[3].y == y) { + if (nextDY > 0 && total > 0) { + --total; + nextDY = -1; + } + if ((p[3].y < p[2].y || (p[3].y == p[2].y && (p[3].y < p[1].y || (p[3].y == p[1].y && p[3].y < p[0].y)))) && total < 3) { + x[total] = p[3].x; + if (nextDY < 0) { + dy[total++] = -1; + nextDY = 1; + } + } + } + if (nextDY != (y >= p[3].y ? 1 : -1)) { + if (total > 0) + --total; + else + dy[total++] = nextDY; + } + return total; +} + static void pointBounds(Point2 p, double &l, double &b, double &r, double &t) { if (p.x < l) l = p.x; if (p.y < b) b = p.y; diff --git a/core/edge-segments.h b/core/edge-segments.h index d201ab86..1e9572b2 100644 --- a/core/edge-segments.h +++ b/core/edge-segments.h @@ -29,6 +29,8 @@ class EdgeSegment { virtual SignedDistance signedDistance(Point2 origin, double ¶m) const = 0; /// Converts a previously retrieved signed distance from origin to pseudo-distance. virtual void distanceToPseudoDistance(SignedDistance &distance, Point2 origin, double param) const; + /// Outputs a list of (at most three) intersections (their X coordinates) with an infinite horizontal scanline at y and returns how many there are. + virtual int scanlineIntersections(double x[3], int dy[3], double y) const = 0; /// Adjusts the bounding box to fit the edge segment. virtual void bounds(double &l, double &b, double &r, double &t) const = 0; @@ -52,6 +54,7 @@ class LinearSegment : public EdgeSegment { Point2 point(double param) const; Vector2 direction(double param) const; SignedDistance signedDistance(Point2 origin, double ¶m) const; + int scanlineIntersections(double x[3], int dy[3], double y) const; void bounds(double &l, double &b, double &r, double &t) const; void moveStartPoint(Point2 to); @@ -71,6 +74,7 @@ class QuadraticSegment : public EdgeSegment { Point2 point(double param) const; Vector2 direction(double param) const; SignedDistance signedDistance(Point2 origin, double ¶m) const; + int scanlineIntersections(double x[3], int dy[3], double y) const; void bounds(double &l, double &b, double &r, double &t) const; void moveStartPoint(Point2 to); @@ -90,6 +94,7 @@ class CubicSegment : public EdgeSegment { Point2 point(double param) const; Vector2 direction(double param) const; SignedDistance signedDistance(Point2 origin, double ¶m) const; + int scanlineIntersections(double x[3], int dy[3], double y) const; void bounds(double &l, double &b, double &r, double &t) const; void moveStartPoint(Point2 to); diff --git a/core/edge-selectors.cpp b/core/edge-selectors.cpp new file mode 100644 index 00000000..c1679dd1 --- /dev/null +++ b/core/edge-selectors.cpp @@ -0,0 +1,131 @@ + +#include "edge-selectors.h" + +namespace msdfgen { + +TrueDistanceSelector::TrueDistanceSelector(const Point2 &p) : p(p) { } + +void TrueDistanceSelector::addEdge(const EdgeSegment *prevEdge, const EdgeSegment *edge, const EdgeSegment *nextEdge) { + double dummy; + SignedDistance distance = edge->signedDistance(p, dummy); + if (distance < minDistance) + minDistance = distance; +} + +void TrueDistanceSelector::merge(const TrueDistanceSelector &other) { + if (other.minDistance < minDistance) + minDistance = other.minDistance; +} + +TrueDistanceSelector::DistanceType TrueDistanceSelector::distance() const { + return minDistance.distance; +} + +bool PseudoDistanceSelectorBase::pointFacingEdge(const EdgeSegment *prevEdge, const EdgeSegment *edge, const EdgeSegment *nextEdge, const Point2 &p, double param) { + if (param < 0) { + Vector2 prevEdgeDir = -prevEdge->direction(1).normalize(true); + Vector2 edgeDir = edge->direction(0).normalize(true); + Vector2 pointDir = p-edge->point(0); + return dotProduct(pointDir, edgeDir) >= dotProduct(pointDir, prevEdgeDir); + } + if (param > 1) { + Vector2 edgeDir = -edge->direction(1).normalize(true); + Vector2 nextEdgeDir = nextEdge->direction(0).normalize(true); + Vector2 pointDir = p-edge->point(1); + return dotProduct(pointDir, edgeDir) >= dotProduct(pointDir, nextEdgeDir); + } + return true; +} + +PseudoDistanceSelectorBase::PseudoDistanceSelectorBase() : nearEdge(NULL), nearEdgeParam(0) { } + +void PseudoDistanceSelectorBase::addEdgeTrueDistance(const EdgeSegment *edge, const SignedDistance &distance, double param) { + if (distance < minTrueDistance) { + minTrueDistance = distance; + nearEdge = edge; + nearEdgeParam = param; + } +} + +void PseudoDistanceSelectorBase::addEdgePseudoDistance(const SignedDistance &distance) { + SignedDistance &minPseudoDistance = distance.distance < 0 ? minNegativePseudoDistance : minPositivePseudoDistance; + if (distance < minPseudoDistance) + minPseudoDistance = distance; +} + +void PseudoDistanceSelectorBase::merge(const PseudoDistanceSelectorBase &other) { + if (other.minTrueDistance < minTrueDistance) { + minTrueDistance = other.minTrueDistance; + nearEdge = other.nearEdge; + nearEdgeParam = other.nearEdgeParam; + } + if (other.minNegativePseudoDistance < minNegativePseudoDistance) + minNegativePseudoDistance = other.minNegativePseudoDistance; + if (other.minPositivePseudoDistance < minPositivePseudoDistance) + minPositivePseudoDistance = other.minPositivePseudoDistance; +} + +double PseudoDistanceSelectorBase::computeDistance(const Point2 &p) const { + double minDistance = minTrueDistance.distance < 0 ? minNegativePseudoDistance.distance : minPositivePseudoDistance.distance; + if (nearEdge) { + SignedDistance distance = minTrueDistance; + nearEdge->distanceToPseudoDistance(distance, p, nearEdgeParam); + if (fabs(distance.distance) < fabs(minDistance)) + minDistance = distance.distance; + } + return minDistance; +} + +PseudoDistanceSelector::PseudoDistanceSelector(const Point2 &p) : p(p) { } + +void PseudoDistanceSelector::addEdge(const EdgeSegment *prevEdge, const EdgeSegment *edge, const EdgeSegment *nextEdge) { + double param; + SignedDistance distance = edge->signedDistance(p, param); + addEdgeTrueDistance(edge, distance, param); + if (pointFacingEdge(prevEdge, edge, nextEdge, p, param)) { + edge->distanceToPseudoDistance(distance, p, param); + addEdgePseudoDistance(distance); + } +} + +PseudoDistanceSelector::DistanceType PseudoDistanceSelector::distance() const { + return computeDistance(p); +} + +MultiDistanceSelector::MultiDistanceSelector(const Point2 &p) : p(p) { } + +void MultiDistanceSelector::addEdge(const EdgeSegment *prevEdge, const EdgeSegment *edge, const EdgeSegment *nextEdge) { + double param; + SignedDistance distance = edge->signedDistance(p, param); + if (edge->color&RED) + r.addEdgeTrueDistance(edge, distance, param); + if (edge->color&GREEN) + g.addEdgeTrueDistance(edge, distance, param); + if (edge->color&BLUE) + b.addEdgeTrueDistance(edge, distance, param); + if (PseudoDistanceSelector::pointFacingEdge(prevEdge, edge, nextEdge, p, param)) { + edge->distanceToPseudoDistance(distance, p, param); + if (edge->color&RED) + r.addEdgePseudoDistance(distance); + if (edge->color&GREEN) + g.addEdgePseudoDistance(distance); + if (edge->color&BLUE) + b.addEdgePseudoDistance(distance); + } +} + +void MultiDistanceSelector::merge(const MultiDistanceSelector &other) { + r.merge(other.r); + g.merge(other.g); + b.merge(other.b); +} + +MultiDistanceSelector::DistanceType MultiDistanceSelector::distance() const { + MultiDistance multiDistance; + multiDistance.r = r.computeDistance(p); + multiDistance.g = g.computeDistance(p); + multiDistance.b = b.computeDistance(p); + return multiDistance; +} + +} diff --git a/core/edge-selectors.h b/core/edge-selectors.h new file mode 100644 index 00000000..b474941d --- /dev/null +++ b/core/edge-selectors.h @@ -0,0 +1,83 @@ + +#pragma once + +#include "Vector2.h" +#include "SignedDistance.h" +#include "edge-segments.h" + +namespace msdfgen { + +struct MultiDistance { + double r, g, b; +}; + +/// Selects the nearest edge by its true distance. +class TrueDistanceSelector { + +public: + typedef double DistanceType; + + explicit TrueDistanceSelector(const Point2 &p = Point2()); + void addEdge(const EdgeSegment *prevEdge, const EdgeSegment *edge, const EdgeSegment *nextEdge); + void merge(const TrueDistanceSelector &other); + DistanceType distance() const; + +private: + Point2 p; + SignedDistance minDistance; + +}; + +class PseudoDistanceSelectorBase { + +public: + static bool pointFacingEdge(const EdgeSegment *prevEdge, const EdgeSegment *edge, const EdgeSegment *nextEdge, const Point2 &p, double param); + + PseudoDistanceSelectorBase(); + void addEdgeTrueDistance(const EdgeSegment *edge, const SignedDistance &distance, double param); + void addEdgePseudoDistance(const SignedDistance &distance); + void merge(const PseudoDistanceSelectorBase &other); + double computeDistance(const Point2 &p) const; + +private: + SignedDistance minTrueDistance; + SignedDistance minNegativePseudoDistance; + SignedDistance minPositivePseudoDistance; + const EdgeSegment *nearEdge; + double nearEdgeParam; + +}; + +/// Selects the nearest edge by its pseudo-distance. +class PseudoDistanceSelector : public PseudoDistanceSelectorBase { + +public: + typedef double DistanceType; + + explicit PseudoDistanceSelector(const Point2 &p = Point2()); + void addEdge(const EdgeSegment *prevEdge, const EdgeSegment *edge, const EdgeSegment *nextEdge); + DistanceType distance() const; + +private: + Point2 p; + +}; + +/// Selects the nearest edge for each of the three channels by its pseudo-distance. +class MultiDistanceSelector { + +public: + typedef MultiDistance DistanceType; + + explicit MultiDistanceSelector(const Point2 &p = Point2()); + void addEdge(const EdgeSegment *prevEdge, const EdgeSegment *edge, const EdgeSegment *nextEdge); + void merge(const MultiDistanceSelector &other); + DistanceType distance() const; + +private: + Point2 p; + PseudoDistanceSelectorBase r, g, b; + +}; + +} diff --git a/core/equation-solver.cpp b/core/equation-solver.cpp index 769be306..cac8e0bc 100644 --- a/core/equation-solver.cpp +++ b/core/equation-solver.cpp @@ -29,7 +29,7 @@ int solveQuadratic(double x[2], double a, double b, double c) { return 0; } -int solveCubicNormed(double *x, double a, double b, double c) { +static int solveCubicNormed(double x[3], double a, double b, double c) { double a2 = a*a; double q = (a2 - 3*b)/9; double r = (a*(2*a2-9*b) + 27*c)/54; diff --git a/core/msdfgen.cpp b/core/msdfgen.cpp index 2d9d0df8..fcc46c31 100644 --- a/core/msdfgen.cpp +++ b/core/msdfgen.cpp @@ -1,338 +1,167 @@ #include "../msdfgen.h" -#include "arithmetics.hpp" +#include +#include "edge-selectors.h" +#include "contour-combiners.h" namespace msdfgen { -struct MultiDistance { - double r, g, b; - double med; -}; +template +class DistancePixelConversion; -static inline bool pixelClash(const FloatRGB &a, const FloatRGB &b, double threshold) { - // Only consider pair where both are on the inside or both are on the outside - bool aIn = (a.r > .5f)+(a.g > .5f)+(a.b > .5f) >= 2; - bool bIn = (b.r > .5f)+(b.g > .5f)+(b.b > .5f) >= 2; - if (aIn != bIn) return false; - // If the change is 0 <-> 1 or 2 <-> 3 channels and not 1 <-> 1 or 2 <-> 2, it is not a clash - if ((a.r > .5f && a.g > .5f && a.b > .5f) || (a.r < .5f && a.g < .5f && a.b < .5f) - || (b.r > .5f && b.g > .5f && b.b > .5f) || (b.r < .5f && b.g < .5f && b.b < .5f)) - return false; - // Find which color is which: _a, _b = the changing channels, _c = the remaining one - float aa, ab, ba, bb, ac, bc; - if ((a.r > .5f) != (b.r > .5f) && (a.r < .5f) != (b.r < .5f)) { - aa = a.r, ba = b.r; - if ((a.g > .5f) != (b.g > .5f) && (a.g < .5f) != (b.g < .5f)) { - ab = a.g, bb = b.g; - ac = a.b, bc = b.b; - } else if ((a.b > .5f) != (b.b > .5f) && (a.b < .5f) != (b.b < .5f)) { - ab = a.b, bb = b.b; - ac = a.g, bc = b.g; - } else - return false; // this should never happen - } else if ((a.g > .5f) != (b.g > .5f) && (a.g < .5f) != (b.g < .5f) - && (a.b > .5f) != (b.b > .5f) && (a.b < .5f) != (b.b < .5f)) { - aa = a.g, ba = b.g; - ab = a.b, bb = b.b; - ac = a.r, bc = b.r; - } else - return false; - // Find if the channels are in fact discontinuous - return (fabsf(aa-ba) >= threshold) - && (fabsf(ab-bb) >= threshold) - && fabsf(ac-.5f) >= fabsf(bc-.5f); // Out of the pair, only flag the pixel farther from a shape edge -} +template <> +class DistancePixelConversion { +public: + typedef float PixelType; + inline static PixelType convert(double distance, double range) { + return PixelType(distance/range+.5); + } +}; -void msdfErrorCorrection(Bitmap &output, const Vector2 &threshold) { - std::vector > clashes; - int w = output.width(), h = output.height(); - for (int y = 0; y < h; ++y) - for (int x = 0; x < w; ++x) { - if ((x > 0 && pixelClash(output(x, y), output(x-1, y), threshold.x)) - || (x < w-1 && pixelClash(output(x, y), output(x+1, y), threshold.x)) - || (y > 0 && pixelClash(output(x, y), output(x, y-1), threshold.y)) - || (y < h-1 && pixelClash(output(x, y), output(x, y+1), threshold.y))) - clashes.push_back(std::make_pair(x, y)); - } - for (std::vector >::const_iterator clash = clashes.begin(); clash != clashes.end(); ++clash) { - FloatRGB &pixel = output(clash->first, clash->second); - float med = median(pixel.r, pixel.g, pixel.b); - pixel.r = med, pixel.g = med, pixel.b = med; +template <> +class DistancePixelConversion { +public: + typedef FloatRGB PixelType; + inline static PixelType convert(const MultiDistance &distance, double range) { + PixelType pixel; + pixel.r = float(distance.r/range+.5); + pixel.g = float(distance.g/range+.5); + pixel.b = float(distance.b/range+.5); + return pixel; } -} +}; -void generateSDF(Bitmap &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate) { - int contourCount = shape.contours.size(); +template +void generateDistanceField(Bitmap::PixelType> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate) { int w = output.width(), h = output.height(); - std::vector windings; - windings.reserve(contourCount); - for (std::vector::const_iterator contour = shape.contours.begin(); contour != shape.contours.end(); ++contour) - windings.push_back(contour->winding()); #ifdef MSDFGEN_USE_OPENMP #pragma omp parallel #endif { - std::vector contourSD; - contourSD.resize(contourCount); + ContourCombiner contourCombiner(shape); + Point2 p; #ifdef MSDFGEN_USE_OPENMP #pragma omp for #endif for (int y = 0; y < h; ++y) { int row = shape.inverseYAxis ? h-y-1 : y; + p.y = (y+.5)/scale.y-translate.y; for (int x = 0; x < w; ++x) { - double dummy; - Point2 p = Vector2(x+.5, y+.5)/scale-translate; - double negDist = -SignedDistance::INFINITE.distance; - double posDist = SignedDistance::INFINITE.distance; - int winding = 0; + p.x = (x+.5)/scale.x-translate.x; - std::vector::const_iterator contour = shape.contours.begin(); - for (int i = 0; i < contourCount; ++i, ++contour) { - SignedDistance minDistance; - for (std::vector::const_iterator edge = contour->edges.begin(); edge != contour->edges.end(); ++edge) { - SignedDistance distance = (*edge)->signedDistance(p, dummy); - if (distance < minDistance) - minDistance = distance; - } - contourSD[i] = minDistance.distance; - if (windings[i] > 0 && minDistance.distance >= 0 && fabs(minDistance.distance) < fabs(posDist)) - posDist = minDistance.distance; - if (windings[i] < 0 && minDistance.distance <= 0 && fabs(minDistance.distance) < fabs(negDist)) - negDist = minDistance.distance; - } + contourCombiner.reset(p); + + for (std::vector::const_iterator contour = shape.contours.begin(); contour != shape.contours.end(); ++contour) { + if (!contour->edges.empty()) { + ContourCombiner::EdgeSelectorType edgeSelector(p); + + const EdgeSegment *prevEdge = contour->edges.size() >= 2 ? *(contour->edges.end()-2) : *contour->edges.begin(); + const EdgeSegment *curEdge = contour->edges.back(); + for (std::vector::const_iterator edge = contour->edges.begin(); edge != contour->edges.end(); ++edge) { + const EdgeSegment *nextEdge = *edge; + edgeSelector.addEdge(prevEdge, curEdge, nextEdge); + prevEdge = curEdge; + curEdge = nextEdge; + } - double sd = SignedDistance::INFINITE.distance; - if (posDist >= 0 && fabs(posDist) <= fabs(negDist)) { - sd = posDist; - winding = 1; - for (int i = 0; i < contourCount; ++i) - if (windings[i] > 0 && contourSD[i] > sd && fabs(contourSD[i]) < fabs(negDist)) - sd = contourSD[i]; - } else if (negDist <= 0 && fabs(negDist) <= fabs(posDist)) { - sd = negDist; - winding = -1; - for (int i = 0; i < contourCount; ++i) - if (windings[i] < 0 && contourSD[i] < sd && fabs(contourSD[i]) < fabs(posDist)) - sd = contourSD[i]; + contourCombiner.setContourEdge(int(contour-shape.contours.begin()), edgeSelector); + } } - for (int i = 0; i < contourCount; ++i) - if (windings[i] != winding && fabs(contourSD[i]) < fabs(sd)) - sd = contourSD[i]; - output(x, row) = float(sd/range+.5); + ContourCombiner::DistanceType distance = contourCombiner.distance(); + output(x, row) = DistancePixelConversion::convert(distance, range); } } } } -void generatePseudoSDF(Bitmap &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate) { - int contourCount = shape.contours.size(); - int w = output.width(), h = output.height(); - std::vector windings; - windings.reserve(contourCount); - for (std::vector::const_iterator contour = shape.contours.begin(); contour != shape.contours.end(); ++contour) - windings.push_back(contour->winding()); - -#ifdef MSDFGEN_USE_OPENMP - #pragma omp parallel -#endif - { - std::vector contourSD; - contourSD.resize(contourCount); -#ifdef MSDFGEN_USE_OPENMP - #pragma omp for -#endif - for (int y = 0; y < h; ++y) { - int row = shape.inverseYAxis ? h-y-1 : y; - for (int x = 0; x < w; ++x) { - Point2 p = Vector2(x+.5, y+.5)/scale-translate; - double sd = SignedDistance::INFINITE.distance; - double negDist = -SignedDistance::INFINITE.distance; - double posDist = SignedDistance::INFINITE.distance; - int winding = 0; +void generateSDF(Bitmap &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate, bool overlapSupport) { + if (overlapSupport) + generateDistanceField >(output, shape, range, scale, translate); + else + generateDistanceField >(output, shape, range, scale, translate); +} - std::vector::const_iterator contour = shape.contours.begin(); - for (int i = 0; i < contourCount; ++i, ++contour) { - SignedDistance minDistance; - const EdgeHolder *nearEdge = NULL; - double nearParam = 0; - for (std::vector::const_iterator edge = contour->edges.begin(); edge != contour->edges.end(); ++edge) { - double param; - SignedDistance distance = (*edge)->signedDistance(p, param); - if (distance < minDistance) { - minDistance = distance; - nearEdge = &*edge; - nearParam = param; - } - } - if (fabs(minDistance.distance) < fabs(sd)) { - sd = minDistance.distance; - winding = -windings[i]; - } - if (nearEdge) - (*nearEdge)->distanceToPseudoDistance(minDistance, p, nearParam); - contourSD[i] = minDistance.distance; - if (windings[i] > 0 && minDistance.distance >= 0 && fabs(minDistance.distance) < fabs(posDist)) - posDist = minDistance.distance; - if (windings[i] < 0 && minDistance.distance <= 0 && fabs(minDistance.distance) < fabs(negDist)) - negDist = minDistance.distance; - } +void generatePseudoSDF(Bitmap &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate, bool overlapSupport) { + if (overlapSupport) + generateDistanceField >(output, shape, range, scale, translate); + else + generateDistanceField >(output, shape, range, scale, translate); +} - double psd = SignedDistance::INFINITE.distance; - if (posDist >= 0 && fabs(posDist) <= fabs(negDist)) { - psd = posDist; - winding = 1; - for (int i = 0; i < contourCount; ++i) - if (windings[i] > 0 && contourSD[i] > psd && fabs(contourSD[i]) < fabs(negDist)) - psd = contourSD[i]; - } else if (negDist <= 0 && fabs(negDist) <= fabs(posDist)) { - psd = negDist; - winding = -1; - for (int i = 0; i < contourCount; ++i) - if (windings[i] < 0 && contourSD[i] < psd && fabs(contourSD[i]) < fabs(posDist)) - psd = contourSD[i]; - } - for (int i = 0; i < contourCount; ++i) - if (windings[i] != winding && fabs(contourSD[i]) < fabs(psd)) - psd = contourSD[i]; +void generateMSDF(Bitmap &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate, double edgeThreshold, bool overlapSupport) { + if (overlapSupport) + generateDistanceField >(output, shape, range, scale, translate); + else + generateDistanceField >(output, shape, range, scale, translate); + if (edgeThreshold > 0) + msdfErrorCorrection(output, edgeThreshold/(scale*range)); +} - output(x, row) = float(psd/range+.5); - } +inline static bool detectClash(const FloatRGB &a, const FloatRGB &b, double threshold) { + // Sort channels so that pairs (a0, b0), (a1, b1), (a2, b2) go from biggest to smallest absolute difference + float a0 = a.r, a1 = a.g, a2 = a.b; + float b0 = b.r, b1 = b.g, b2 = b.b; + float tmp; + if (fabsf(b0-a0) < fabsf(b1-a1)) { + tmp = a0, a0 = a1, a1 = tmp; + tmp = b0, b0 = b1, b1 = tmp; + } + if (fabsf(b1-a1) < fabsf(b2-a2)) { + tmp = a1, a1 = a2, a2 = tmp; + tmp = b1, b1 = b2, b2 = tmp; + if (fabsf(b0-a0) < fabsf(b1-a1)) { + tmp = a0, a0 = a1, a1 = tmp; + tmp = b0, b0 = b1, b1 = tmp; } } + return (fabsf(b1-a1) >= threshold) && + !(b0 == b1 && b0 == b2) && // Ignore if other pixel has been equalized + fabsf(a2-.5f) >= fabsf(b2-.5f); // Out of the pair, only flag the pixel farther from a shape edge } -void generateMSDF(Bitmap &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate, double edgeThreshold) { - int contourCount = shape.contours.size(); +void msdfErrorCorrection(Bitmap &output, const Vector2 &threshold) { + std::vector > clashes; int w = output.width(), h = output.height(); - std::vector windings; - windings.reserve(contourCount); - for (std::vector::const_iterator contour = shape.contours.begin(); contour != shape.contours.end(); ++contour) - windings.push_back(contour->winding()); - -#ifdef MSDFGEN_USE_OPENMP - #pragma omp parallel -#endif - { - std::vector contourSD; - contourSD.resize(contourCount); -#ifdef MSDFGEN_USE_OPENMP - #pragma omp for -#endif - for (int y = 0; y < h; ++y) { - int row = shape.inverseYAxis ? h-y-1 : y; - for (int x = 0; x < w; ++x) { - Point2 p = Vector2(x+.5, y+.5)/scale-translate; - - struct EdgePoint { - SignedDistance minDistance; - const EdgeHolder *nearEdge; - double nearParam; - } sr, sg, sb; - sr.nearEdge = sg.nearEdge = sb.nearEdge = NULL; - sr.nearParam = sg.nearParam = sb.nearParam = 0; - double d = fabs(SignedDistance::INFINITE.distance); - double negDist = -SignedDistance::INFINITE.distance; - double posDist = SignedDistance::INFINITE.distance; - int winding = 0; - - std::vector::const_iterator contour = shape.contours.begin(); - for (int i = 0; i < contourCount; ++i, ++contour) { - EdgePoint r, g, b; - r.nearEdge = g.nearEdge = b.nearEdge = NULL; - r.nearParam = g.nearParam = b.nearParam = 0; - - for (std::vector::const_iterator edge = contour->edges.begin(); edge != contour->edges.end(); ++edge) { - double param; - SignedDistance distance = (*edge)->signedDistance(p, param); - if ((*edge)->color&RED && distance < r.minDistance) { - r.minDistance = distance; - r.nearEdge = &*edge; - r.nearParam = param; - } - if ((*edge)->color&GREEN && distance < g.minDistance) { - g.minDistance = distance; - g.nearEdge = &*edge; - g.nearParam = param; - } - if ((*edge)->color&BLUE && distance < b.minDistance) { - b.minDistance = distance; - b.nearEdge = &*edge; - b.nearParam = param; - } - } - if (r.minDistance < sr.minDistance) - sr = r; - if (g.minDistance < sg.minDistance) - sg = g; - if (b.minDistance < sb.minDistance) - sb = b; - - double medMinDistance = fabs(median(r.minDistance.distance, g.minDistance.distance, b.minDistance.distance)); - if (medMinDistance < d) { - d = medMinDistance; - winding = -windings[i]; - } - if (r.nearEdge) - (*r.nearEdge)->distanceToPseudoDistance(r.minDistance, p, r.nearParam); - if (g.nearEdge) - (*g.nearEdge)->distanceToPseudoDistance(g.minDistance, p, g.nearParam); - if (b.nearEdge) - (*b.nearEdge)->distanceToPseudoDistance(b.minDistance, p, b.nearParam); - medMinDistance = median(r.minDistance.distance, g.minDistance.distance, b.minDistance.distance); - contourSD[i].r = r.minDistance.distance; - contourSD[i].g = g.minDistance.distance; - contourSD[i].b = b.minDistance.distance; - contourSD[i].med = medMinDistance; - if (windings[i] > 0 && medMinDistance >= 0 && fabs(medMinDistance) < fabs(posDist)) - posDist = medMinDistance; - if (windings[i] < 0 && medMinDistance <= 0 && fabs(medMinDistance) < fabs(negDist)) - negDist = medMinDistance; - } - if (sr.nearEdge) - (*sr.nearEdge)->distanceToPseudoDistance(sr.minDistance, p, sr.nearParam); - if (sg.nearEdge) - (*sg.nearEdge)->distanceToPseudoDistance(sg.minDistance, p, sg.nearParam); - if (sb.nearEdge) - (*sb.nearEdge)->distanceToPseudoDistance(sb.minDistance, p, sb.nearParam); - - MultiDistance msd; - msd.r = msd.g = msd.b = msd.med = SignedDistance::INFINITE.distance; - if (posDist >= 0 && fabs(posDist) <= fabs(negDist)) { - msd.med = SignedDistance::INFINITE.distance; - winding = 1; - for (int i = 0; i < contourCount; ++i) - if (windings[i] > 0 && contourSD[i].med > msd.med && fabs(contourSD[i].med) < fabs(negDist)) - msd = contourSD[i]; - } else if (negDist <= 0 && fabs(negDist) <= fabs(posDist)) { - msd.med = -SignedDistance::INFINITE.distance; - winding = -1; - for (int i = 0; i < contourCount; ++i) - if (windings[i] < 0 && contourSD[i].med < msd.med && fabs(contourSD[i].med) < fabs(posDist)) - msd = contourSD[i]; - } - for (int i = 0; i < contourCount; ++i) - if (windings[i] != winding && fabs(contourSD[i].med) < fabs(msd.med)) - msd = contourSD[i]; - if (median(sr.minDistance.distance, sg.minDistance.distance, sb.minDistance.distance) == msd.med) { - msd.r = sr.minDistance.distance; - msd.g = sg.minDistance.distance; - msd.b = sb.minDistance.distance; - } - - output(x, row).r = float(msd.r/range+.5); - output(x, row).g = float(msd.g/range+.5); - output(x, row).b = float(msd.b/range+.5); - } + for (int y = 0; y < h; ++y) + for (int x = 0; x < w; ++x) { + if ( + (x > 0 && detectClash(output(x, y), output(x-1, y), threshold.x)) || + (x < w-1 && detectClash(output(x, y), output(x+1, y), threshold.x)) || + (y > 0 && detectClash(output(x, y), output(x, y-1), threshold.y)) || + (y < h-1 && detectClash(output(x, y), output(x, y+1), threshold.y)) + ) + clashes.push_back(std::make_pair(x, y)); } + for (std::vector >::const_iterator clash = clashes.begin(); clash != clashes.end(); ++clash) { + FloatRGB &pixel = output(clash->first, clash->second); + float med = median(pixel.r, pixel.g, pixel.b); + pixel.r = med, pixel.g = med, pixel.b = med; } - - if (edgeThreshold > 0) - msdfErrorCorrection(output, edgeThreshold/(scale*range)); +#ifndef MSDFGEN_NO_DIAGONAL_CLASH_DETECTION + clashes.clear(); + for (int y = 0; y < h; ++y) + for (int x = 0; x < w; ++x) { + if ( + (x > 0 && y > 0 && detectClash(output(x, y), output(x-1, y-1), threshold.x+threshold.y)) || + (x < w-1 && y > 0 && detectClash(output(x, y), output(x+1, y-1), threshold.x+threshold.y)) || + (x > 0 && y < h-1 && detectClash(output(x, y), output(x-1, y+1), threshold.x+threshold.y)) || + (x < w-1 && y < h-1 && detectClash(output(x, y), output(x+1, y+1), threshold.x+threshold.y)) + ) + clashes.push_back(std::make_pair(x, y)); + } + for (std::vector >::const_iterator clash = clashes.begin(); clash != clashes.end(); ++clash) { + FloatRGB &pixel = output(clash->first, clash->second); + float med = median(pixel.r, pixel.g, pixel.b); + pixel.r = med, pixel.g = med, pixel.b = med; + } +#endif } +// Legacy version + void generateSDF_legacy(Bitmap &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate) { int w = output.width(), h = output.height(); #ifdef MSDFGEN_USE_OPENMP diff --git a/core/rasterization.cpp b/core/rasterization.cpp new file mode 100644 index 00000000..ac0a4cc7 --- /dev/null +++ b/core/rasterization.cpp @@ -0,0 +1,117 @@ + +#include "rasterization.h" + +#include +#include "arithmetics.hpp" +#include "Scanline.h" + +namespace msdfgen { + +static bool interpretFillRule(int intersections, FillRule fillRule) { + switch (fillRule) { + case FILL_NONZERO: + return intersections != 0; + case FILL_ODD: + return intersections&1; + case FILL_POSITIVE: + return intersections > 0; + case FILL_NEGATIVE: + return intersections < 0; + } + return false; +} + +void rasterize(Bitmap &output, const Shape &shape, const Vector2 &scale, const Vector2 &translate, FillRule fillRule) { + int w = output.width(), h = output.height(); + Point2 p; + Scanline scanline; + for (int y = 0; y < h; ++y) { + int row = shape.inverseYAxis ? h-y-1 : y; + p.y = (y+.5)/scale.y-translate.y; + shape.scanline(scanline, p.y); + for (int x = 0; x < w; ++x) { + p.x = (x+.5)/scale.x-translate.x; + int intersections = scanline.sumIntersections(p.x); + bool fill = interpretFillRule(intersections, fillRule); + output(x, row) = (float) fill; + } + } +} + +void distanceSignCorrection(Bitmap &sdf, const Shape &shape, const Vector2 &scale, const Vector2 &translate, FillRule fillRule) { + int w = sdf.width(), h = sdf.height(); + Point2 p; + Scanline scanline; + for (int y = 0; y < h; ++y) { + int row = shape.inverseYAxis ? h-y-1 : y; + p.y = (y+.5)/scale.y-translate.y; + shape.scanline(scanline, p.y); + for (int x = 0; x < w; ++x) { + p.x = (x+.5)/scale.x-translate.x; + int intersections = scanline.sumIntersections(p.x); + bool fill = interpretFillRule(intersections, fillRule); + float &sd = sdf(x, row); + if ((sd > .5f) != fill) + sd = 1.f-sd; + } + } +} + +void distanceSignCorrection(Bitmap &sdf, const Shape &shape, const Vector2 &scale, const Vector2 &translate, FillRule fillRule) { + int w = sdf.width(), h = sdf.height(); + if (!(w*h)) + return; + Point2 p; + Scanline scanline; + bool ambiguous = false; + std::vector matchMap; + matchMap.resize(w*h); + char *match = &matchMap[0]; + for (int y = 0; y < h; ++y) { + int row = shape.inverseYAxis ? h-y-1 : y; + p.y = (y+.5)/scale.y-translate.y; + shape.scanline(scanline, p.y); + for (int x = 0; x < w; ++x) { + p.x = (x+.5)/scale.x-translate.x; + int intersections = scanline.sumIntersections(p.x); + bool fill = interpretFillRule(intersections, fillRule); + FloatRGB &msd = sdf(x, row); + float sd = median(msd.r, msd.g, msd.b); + if (sd == .5f) + ambiguous = true; + else if ((sd > .5f) != fill) { + msd.r = 1.f-msd.r; + msd.g = 1.f-msd.g; + msd.b = 1.f-msd.b; + *match = -1; + } else + *match = 1; + ++match; + } + } + // This step is necessary to avoid artifacts when whole shape is inverted + if (ambiguous) { + match = &matchMap[0]; + for (int y = 0; y < h; ++y) { + int row = shape.inverseYAxis ? h-y-1 : y; + for (int x = 0; x < w; ++x) { + if (!*match) { + int neighborMatch = 0; + if (x > 0) neighborMatch += *(match-1); + if (x < w-1) neighborMatch += *(match+1); + if (y > 0) neighborMatch += *(match-w); + if (y < h-1) neighborMatch += *(match+w); + if (neighborMatch < 0) { + FloatRGB &msd = sdf(x, row); + msd.r = 1.f-msd.r; + msd.g = 1.f-msd.g; + msd.b = 1.f-msd.b; + } + } + ++match; + } + } + } +} + +} diff --git a/core/rasterization.h b/core/rasterization.h new file mode 100644 index 00000000..10e8f41d --- /dev/null +++ b/core/rasterization.h @@ -0,0 +1,24 @@ + +#pragma once + +#include "Vector2.h" +#include "Shape.h" +#include "Bitmap.h" + +namespace msdfgen { + +/// Fill rule dictates how intersection total is interpreted during rasterization. +enum FillRule { + FILL_NONZERO, + FILL_ODD, // "even-odd" + FILL_POSITIVE, + FILL_NEGATIVE +}; + +/// Rasterizes the shape into a monochrome bitmap. +void rasterize(Bitmap &output, const Shape &shape, const Vector2 &scale, const Vector2 &translate, FillRule fillRule = FILL_NONZERO); +/// Fixes the sign of the input signed distance field, so that it matches the shape's rasterized fill. +void distanceSignCorrection(Bitmap &sdf, const Shape &shape, const Vector2 &scale, const Vector2 &translate, FillRule fillRule = FILL_NONZERO); +void distanceSignCorrection(Bitmap &sdf, const Shape &shape, const Vector2 &scale, const Vector2 &translate, FillRule fillRule = FILL_NONZERO); + +} diff --git a/core/render-sdf.cpp b/core/render-sdf.cpp index 22222472..7a9cc121 100644 --- a/core/render-sdf.cpp +++ b/core/render-sdf.cpp @@ -33,8 +33,8 @@ static T sample(const Bitmap &bitmap, Point2 pos) { static float distVal(float dist, double pxRange) { if (!pxRange) - return dist > .5; - return (float) clamp((dist-.5)*pxRange+.5); + return dist > .5f; + return (float) clamp((dist-.5f)*pxRange+.5); } void renderSDF(Bitmap &output, const Bitmap &sdf, double pxRange) { diff --git a/core/shape-description.cpp b/core/shape-description.cpp index 7962bf3b..97d09cf4 100644 --- a/core/shape-description.cpp +++ b/core/shape-description.cpp @@ -235,7 +235,7 @@ bool writeShapeDescription(FILE *output, const Shape &shape) { case MAGENTA: colorCode = 'm'; break; case CYAN: colorCode = 'c'; break; case WHITE: colorCode = 'w'; break; - default: break; + default:; } { const LinearSegment *e = dynamic_cast(&**edge); diff --git a/lib/FTL.TXT b/freetype/FTL.TXT similarity index 100% rename from lib/FTL.TXT rename to freetype/FTL.TXT diff --git a/freetype/include/freetype/config/ftconfig.h b/freetype/include/freetype/config/ftconfig.h new file mode 100644 index 00000000..eedebf40 --- /dev/null +++ b/freetype/include/freetype/config/ftconfig.h @@ -0,0 +1,571 @@ +/***************************************************************************/ +/* */ +/* ftconfig.h */ +/* */ +/* ANSI-specific configuration file (specification only). */ +/* */ +/* Copyright 1996-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* 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/', 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 +#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/' 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 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( __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 +#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 + + + /*************************************************************************/ + /* */ + /*

*/ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* */ + /* FT_Int16 */ + /* */ + /* */ + /* A typedef for a 16bit signed integer type. */ + /* */ + typedef signed short FT_Int16; + + + /*************************************************************************/ + /* */ + /* */ + /* FT_UInt16 */ + /* */ + /* */ + /* A typedef for a 16bit unsigned integer type. */ + /* */ + typedef unsigned short FT_UInt16; + + /* */ + + + /* this #if 0 ... #endif clause is for documentation purposes */ +#if 0 + + /*************************************************************************/ + /* */ + /* */ + /* FT_Int32 */ + /* */ + /* */ + /* A typedef for a 32bit signed integer type. The size depends on */ + /* the configuration. */ + /* */ + typedef signed XXX FT_Int32; + + + /*************************************************************************/ + /* */ + /* */ + /* FT_UInt32 */ + /* */ + /* A typedef for a 32bit unsigned integer type. The size depends on */ + /* the configuration. */ + /* */ + typedef unsigned XXX FT_UInt32; + + + /*************************************************************************/ + /* */ + /* */ + /* 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; + + + /*************************************************************************/ + /* */ + /* */ + /* 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 ) || 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( __cplusplus ) +#define FT_EXPORT( x ) extern "C" x +#else +#define FT_EXPORT( x ) extern x +#endif + +#else + +#if defined( FT2_DLLIMPORT ) +#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/include/freetype/config/ftheader.h b/freetype/include/freetype/config/ftheader.h similarity index 78% rename from include/freetype/config/ftheader.h rename to freetype/include/freetype/config/ftheader.h index b957d05b..702f77cc 100644 --- a/include/freetype/config/ftheader.h +++ b/freetype/include/freetype/config/ftheader.h @@ -4,7 +4,7 @@ /* */ /* Build macros of the FreeType 2 library. */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -15,8 +15,8 @@ /* */ /***************************************************************************/ -#ifndef __FT_HEADER_H__ -#define __FT_HEADER_H__ +#ifndef FTHEADER_H_ +#define FTHEADER_H_ /*@***********************************************************************/ @@ -74,7 +74,7 @@ /* */ /* */ /* The following macros are defined to the name of specific */ - /* FreeType 2 header files. They can be used directly in #include */ + /* FreeType~2 header files. They can be used directly in #include */ /* statements as in: */ /* */ /* { */ @@ -85,11 +85,11 @@ /* */ /* 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 */ + /* 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. */ + /* way FreeType~2 is installed on a given system. */ /* */ /*************************************************************************/ @@ -103,7 +103,7 @@ * * @description: * A macro used in #include statements to name the file containing - * FreeType 2 configuration data. + * FreeType~2 configuration data. * */ #ifndef FT_CONFIG_CONFIG_H @@ -118,7 +118,7 @@ * * @description: * A macro used in #include statements to name the file containing - * FreeType 2 interface to the standard C library functions. + * FreeType~2 interface to the standard C library functions. * */ #ifndef FT_CONFIG_STANDARD_LIBRARY_H @@ -133,7 +133,7 @@ * * @description: * A macro used in #include statements to name the file containing - * FreeType 2 project-specific configuration options. + * FreeType~2 project-specific configuration options. * */ #ifndef FT_CONFIG_OPTIONS_H @@ -148,7 +148,7 @@ * * @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 + * list of FreeType~2 modules that are statically linked to new library * instances in @FT_Init_FreeType. * */ @@ -156,6 +156,7 @@ #define FT_CONFIG_MODULES_H #endif + /* */ /* public headers */ @@ -166,7 +167,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * base FreeType 2 API. + * base FreeType~2 API. * */ #define FT_FREETYPE_H @@ -179,7 +180,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * list of FreeType 2 error codes (and messages). + * list of FreeType~2 error codes (and messages). * * It is included by @FT_FREETYPE_H. * @@ -194,7 +195,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * list of FreeType 2 module error offsets (and messages). + * list of FreeType~2 module error offsets (and messages). * */ #define FT_MODULE_ERRORS_H @@ -207,7 +208,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 interface to low-level operations (i.e., memory management + * FreeType~2 interface to low-level operations (i.e., memory management * and stream i/o). * * It is included by @FT_FREETYPE_H. @@ -239,7 +240,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * basic data types defined by FreeType 2. + * basic data types defined by FreeType~2. * * It is included by @FT_FREETYPE_H. * @@ -254,7 +255,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * list management API of FreeType 2. + * list management API of FreeType~2. * * (Most applications will never need to include this file.) * @@ -269,7 +270,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * scalable outline management API of FreeType 2. + * scalable outline management API of FreeType~2. * */ #define FT_OUTLINE_H @@ -295,7 +296,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * module management API of FreeType 2. + * module management API of FreeType~2. * */ #define FT_MODULE_H @@ -308,12 +309,85 @@ * * @description: * A macro used in #include statements to name the file containing the - * renderer module management API of FreeType 2. + * renderer module management API of FreeType~2. * */ #define FT_RENDER_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 + + + /************************************************************************* + * + * @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: @@ -321,7 +395,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * types and API specific to the Type 1 format. + * types and API specific to the Type~1 format. * */ #define FT_TYPE1_TABLES_H @@ -386,149 +460,119 @@ /************************************************************************* * * @macro: - * FT_GZIP_H - * - * @description: - * 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 - - - /************************************************************************* - * - * @macro: - * FT_LZW_H + * FT_CID_H * * @description: * A macro used in #include statements to name the file containing the - * definitions of an API which supports LZW-compressed files. + * definitions of an API which access CID font information from a + * face. * */ -#define FT_LZW_H +#define FT_CID_H /************************************************************************* * * @macro: - * FT_WINFONTS_H + * FT_GZIP_H * * @description: * A macro used in #include statements to name the file containing the - * definitions of an API which supports Windows FNT files. + * definitions of an API which supports gzip-compressed files. * */ -#define FT_WINFONTS_H +#define FT_GZIP_H /************************************************************************* * * @macro: - * FT_GLYPH_H + * FT_LZW_H * * @description: * A macro used in #include statements to name the file containing the - * API of the optional glyph management component. + * definitions of an API which supports LZW-compressed files. * */ -#define FT_GLYPH_H +#define FT_LZW_H /************************************************************************* * * @macro: - * FT_BITMAP_H + * FT_BZIP2_H * * @description: * A macro used in #include statements to name the file containing the - * API of the optional bitmap conversion component. + * definitions of an API which supports bzip2-compressed files. * */ -#define FT_BITMAP_H +#define FT_BZIP2_H /************************************************************************* * * @macro: - * FT_BBOX_H + * FT_WINFONTS_H * * @description: * A macro used in #include statements to name the file containing the - * API of the optional exact bounding box computation routines. + * definitions of an API which supports Windows FNT files. * */ -#define FT_BBOX_H +#define FT_WINFONTS_H /************************************************************************* * * @macro: - * FT_CACHE_H + * FT_GLYPH_H * * @description: * A macro used in #include statements to name the file containing the - * API of the optional FreeType 2 cache sub-system. + * API of the optional glyph management component. * */ -#define FT_CACHE_H +#define FT_GLYPH_H /************************************************************************* * * @macro: - * FT_CACHE_IMAGE_H + * FT_BITMAP_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. + * API of the optional bitmap conversion component. * */ -#define FT_CACHE_IMAGE_H FT_CACHE_H +#define FT_BITMAP_H /************************************************************************* * * @macro: - * FT_CACHE_SMALL_BITMAPS_H + * FT_BBOX_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. + * API of the optional exact bounding box computation routines. * */ -#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H +#define FT_BBOX_H /************************************************************************* * * @macro: - * FT_CACHE_CHARMAP_H + * FT_CACHE_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. + * API of the optional FreeType~2 cache sub-system. * */ -#define FT_CACHE_CHARMAP_H FT_CACHE_H +#define FT_CACHE_H /************************************************************************* @@ -538,7 +582,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * Macintosh-specific FreeType 2 API. The latter is used to access + * 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 @@ -555,7 +599,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * optional multiple-masters management API of FreeType 2. + * optional multiple-masters management API of FreeType~2. * */ #define FT_MULTIPLE_MASTERS_H @@ -568,7 +612,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * optional FreeType 2 API which accesses embedded `name' strings in + * optional FreeType~2 API which accesses embedded `name' strings in * SFNT-based font formats (i.e., TrueType and OpenType). * */ @@ -582,7 +626,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * optional FreeType 2 API which validates OpenType tables (BASE, GDEF, + * optional FreeType~2 API which validates OpenType tables (BASE, GDEF, * GPOS, GSUB, JSTF). * */ @@ -596,7 +640,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * optional FreeType 2 API which validates TrueTypeGX/AAT tables (feat, + * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat, * mort, morx, bsln, just, kern, opbd, trak, prop). * */ @@ -610,7 +654,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which accesses PFR-specific data. + * FreeType~2 API which accesses PFR-specific data. * */ #define FT_PFR_H @@ -623,7 +667,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which provides functions to stroke outline paths. + * FreeType~2 API which provides functions to stroke outline paths. */ #define FT_STROKER_H @@ -635,7 +679,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which performs artificial obliquing and emboldening. + * FreeType~2 API which performs artificial obliquing and emboldening. */ #define FT_SYNTHESIS_H @@ -643,14 +687,16 @@ /************************************************************************* * * @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. + * FreeType~2 API which provides functions specific to font formats. */ -#define FT_XFREE86_H +#define FT_FONT_FORMATS_H + + /* deprecated */ +#define FT_XFREE86_H FT_FONT_FORMATS_H /************************************************************************* @@ -660,7 +706,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which performs trigonometric computations (e.g., + * FreeType~2 API which performs trigonometric computations (e.g., * cosines and arc tangents). */ #define FT_TRIGONOMETRY_H @@ -673,11 +719,23 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which performs color filtering for subpixel rendering. + * FreeType~2 API which performs color filtering for subpixel rendering. */ #define FT_LCD_FILTER_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 + + /************************************************************************* * * @macro: @@ -685,36 +743,53 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which returns entries from the TrueType GASP table. + * FreeType~2 API which returns entries from the TrueType GASP table. */ #define FT_GASP_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 + + /* */ + /* These header files don't need to be included by the user. */ #define FT_ERROR_DEFINITIONS_H +#define FT_PARAMETER_TAGS_H + + /* Deprecated macros. */ +#define FT_UNPATENTED_HINTING_H +#define FT_TRUETYPE_UNPATENTED_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. */ /* */ -#define FT_CACHE_MANAGER_H -#define FT_CACHE_INTERNAL_MRU_H -#define FT_CACHE_INTERNAL_MANAGER_H -#define FT_CACHE_INTERNAL_CACHE_H -#define FT_CACHE_INTERNAL_GLYPH_H -#define FT_CACHE_INTERNAL_IMAGE_H -#define FT_CACHE_INTERNAL_SBITS_H - - -#define FT_INCREMENTAL_H - -#define FT_TRUETYPE_UNPATENTED_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 + * Include internal headers definitions from * only when building the library. */ #ifdef FT2_BUILD_LIBRARY @@ -723,7 +798,7 @@ #endif /* FT2_BUILD_LIBRARY */ -#endif /* __FT2_BUILD_H__ */ +#endif /* FTHEADER_H_ */ /* END */ diff --git a/freetype/include/freetype/config/ftmodule.h b/freetype/include/freetype/config/ftmodule.h new file mode 100644 index 00000000..76d271a7 --- /dev/null +++ b/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 `/objs/') based on information + * from `/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/include/freetype/config/ftoption.h b/freetype/include/freetype/config/ftoption.h similarity index 56% rename from include/freetype/config/ftoption.h rename to freetype/include/freetype/config/ftoption.h index 0b5c66d4..4bcab2af 100644 --- a/include/freetype/config/ftoption.h +++ b/freetype/include/freetype/config/ftoption.h @@ -4,7 +4,7 @@ /* */ /* User-selectable configuration macros (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTOPTION_H__ -#define __FTOPTION_H__ +#ifndef FTOPTION_H_ +#define FTOPTION_H_ #include @@ -61,7 +61,7 @@ FT_BEGIN_HEADER /* that are statically linked to the library at compile time. By */ /* default, this file is . */ /* */ - /* We highly recommend using the third method whenever possible. */ + /* We highly recommend using the third method whenever possible. */ /* */ /*************************************************************************/ @@ -75,24 +75,54 @@ FT_BEGIN_HEADER /*************************************************************************/ + /*#***********************************************************************/ + /* */ + /* 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). */ + /* */ + /* { */ + /* */ + /* ':' */ + /* '=' */ + /* */ + /* ':' */ + /* '=' */ + /* ... */ + /* } */ + /* */ + /* 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 sub-pixel rendering */ - /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ + /* 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. */ /* */ - /* 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 +/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ /*************************************************************************/ @@ -112,7 +142,28 @@ FT_BEGIN_HEADER /* file `ftconfig.h' either statically or through the */ /* `configure' script on supported platforms. */ /* */ -#undef FT_CONFIG_OPTION_FORCE_INT64 +#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 /*************************************************************************/ @@ -163,94 +214,96 @@ FT_BEGIN_HEADER /* Do not #undef this macro here since the build system might define */ /* it for certain configurations only. */ /* */ -/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ + /* If you use a build system like cmake or the `configure' script, */ + /* options set by those programs have precendence, overwriting the */ + /* value here with the configured one. */ + /* */ +/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ /*************************************************************************/ /* */ - /* DLL export compilation */ + /* Bzip2-compressed file support. */ /* */ - /* When compiling FreeType as a DLL, some systems/compilers need a */ - /* special keyword in front OR after the return type of function */ - /* declarations. */ + /* 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. */ /* */ - /* Two macros are used within the FreeType source code to define */ - /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ + /* Define this macro if you want to enable this `feature'. */ /* */ - /* FT_EXPORT( return_type ) */ + /* If you use a build system like cmake or the `configure' script, */ + /* options set by those programs have precendence, overwriting the */ + /* value here with the configured one. */ /* */ - /* is used in a function declaration, as in */ +/* #define FT_CONFIG_OPTION_USE_BZIP2 */ + + + /*************************************************************************/ /* */ - /* FT_EXPORT( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ); */ + /* 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 */ + + + /*************************************************************************/ /* */ - /* FT_EXPORT_DEF( return_type ) */ + /* PNG bitmap support. */ /* */ - /* is used in a function definition, as in */ + /* 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. */ /* */ - /* FT_EXPORT_DEF( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ) */ - /* { */ - /* ... some code ... */ - /* return FT_Err_Ok; */ - /* } */ + /* Define this macro if you want to enable this `feature'. */ /* */ - /* 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. */ + /* If you use a build system like cmake or the `configure' script, */ + /* options set by those programs have precendence, overwriting the */ + /* value here with the configured one. */ /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ +/* #define FT_CONFIG_OPTION_USE_PNG */ + + + /*************************************************************************/ /* */ -/* #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 + /* HarfBuzz support. */ + /* */ + /* FreeType uses the HarfBuzz library to improve auto-hinting of */ + /* OpenType fonts. If available, many glyphs not directly addressable */ + /* by a font's character map will be hinted also. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ + /* If you use a build system like cmake or the `configure' script, */ + /* options set by those programs have precendence, overwriting the */ + /* value here with the configured one. */ + /* */ +/* #define FT_CONFIG_OPTION_USE_HARFBUZZ */ /*************************************************************************/ /* */ /* Glyph Postscript Names handling */ /* */ - /* By default, FreeType 2 is compiled with the `PSNames' module. This */ + /* 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 */ + /* 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. */ + /* `post' table, but will not synthesize a missing Unicode charmap. */ /* */ - /* - The Type 1 driver will not be able to synthetize a Unicode */ + /* - 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 */ @@ -266,12 +319,12 @@ FT_BEGIN_HEADER /* 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 */ + /* 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 synthetize a Unicode charmap out of the glyphs found in the */ + /* able to synthesize a Unicode charmap out of the glyphs found in the */ /* fonts. */ /* */ #define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST @@ -317,10 +370,11 @@ FT_BEGIN_HEADER /* */ /* 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. */ + /* 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 */ +#define FT_CONFIG_OPTION_INCREMENTAL /*************************************************************************/ @@ -328,10 +382,6 @@ FT_BEGIN_HEADER /* 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 @@ -366,6 +416,41 @@ FT_BEGIN_HEADER /* #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 */ @@ -401,6 +486,34 @@ FT_BEGIN_HEADER #undef FT_CONFIG_OPTION_USE_MODULE_ERRORS + /*************************************************************************/ + /* */ + /* Position Independent Code */ + /* */ + /* If this macro is set (which is _not_ the default), FreeType2 will */ + /* avoid creating constants that require address fixups. Instead the */ + /* constants will be moved into a struct and additional intialization */ + /* code will be used. */ + /* */ + /* Setting this macro is needed for systems that prohibit address */ + /* fixups, such as BREW. [Note that standard compilers like gcc or */ + /* clang handle PIC generation automatically; you don't have to set */ + /* FT_CONFIG_OPTION_PIC, which is only necessary for very special */ + /* compilers.] */ + /* */ + /* Note that FT_CONFIG_OPTION_PIC support is not available for all */ + /* modules (see `modules.cfg' for a complete list). For building with */ + /* FT_CONFIG_OPTION_PIC support, do the following. */ + /* */ + /* 0. Clone the repository. */ + /* 1. Define FT_CONFIG_OPTION_PIC. */ + /* 2. Remove all subdirectories in `src' that don't have */ + /* FT_CONFIG_OPTION_PIC support. */ + /* 3. Comment out the corresponding modules in `modules.cfg'. */ + /* 4. Compile. */ + /* */ +/* #define FT_CONFIG_OPTION_PIC */ + /*************************************************************************/ /*************************************************************************/ @@ -444,7 +557,7 @@ FT_BEGIN_HEADER /* does not contain any glyph name though. */ /* */ /* Accessing SFNT names is done through the functions declared in */ - /* `freetype/ftnames.h'. */ + /* `ftsnames.h'. */ /* */ #define TT_CONFIG_OPTION_SFNT_NAMES @@ -462,6 +575,8 @@ FT_BEGIN_HEADER #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 /*************************************************************************/ @@ -475,8 +590,7 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* 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. */ + /* a bytecode interpreter in the TrueType driver. */ /* */ /* By undefining this, you will only compile the code necessary to load */ /* TrueType glyphs without hinting. */ @@ -484,67 +598,68 @@ FT_BEGIN_HEADER /* 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_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. */ + /* 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. */ /* */ - /* 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. */ + /* 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. */ /* */ - /* - The unpatented interpreter is explicitly activated by the user */ - /* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ - /* when opening the FT_Face. */ + /* There are three possible values. */ /* */ - /* - 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'). */ + /* 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. */ /* */ - /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ + /* The corresponding interpreter version is v38. */ /* */ - /* { */ - /* FT_Parameter parameter; */ - /* FT_Open_Args open_args; */ + /* 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. */ /* */ - /* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ + /* Value 3: */ + /* Compile both, making both v38 and v40 available (the latter is the */ + /* default). */ /* */ - /* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ - /* open_args.pathname = my_font_pathname; */ - /* open_args.num_params = 1; */ - /* open_args.params = ¶meter; */ + /* 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'). */ /* */ - /* error = FT_Open_Face( library, &open_args, index, &face ); */ - /* ... */ - /* } */ + /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ + /* defined. */ /* */ -#define TT_CONFIG_OPTION_UNPATENTED_HINTING - - - /*************************************************************************/ + /* [1] https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ /* */ - /* 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_SUBPIXEL_HINTING 1 */ +#define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2 +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) */ /*************************************************************************/ @@ -560,8 +675,8 @@ FT_BEGIN_HEADER /* 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 */ + /* 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 @@ -584,6 +699,24 @@ FT_BEGIN_HEADER #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 + + /*************************************************************************/ /*************************************************************************/ /**** ****/ @@ -595,7 +728,7 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ - /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */ + /* 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. */ /* */ @@ -639,6 +772,86 @@ FT_BEGIN_HEADER #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 */ + + /*************************************************************************/ /*************************************************************************/ /**** ****/ @@ -650,46 +863,115 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ - /* Compile autofit module with CJK script support. */ + /* Compile autofit module with CJK (Chinese, Japanese, Korean) script */ + /* support. */ /* */ #define AF_CONFIG_OPTION_CJK /*************************************************************************/ /* */ - /* Compile autofit module with Indic script support. */ + /* Compile autofit module with fallback Indic script support, covering */ + /* some scripts that the `latin' submodule of the autofit module doesn't */ + /* (yet) handle. */ /* */ #define AF_CONFIG_OPTION_INDIC + /*************************************************************************/ + /* */ + /* Compile autofit module with warp hinting. The idea of the warping */ + /* code is to slightly scale and shift a glyph within a single dimension */ + /* so that as much of its segments are aligned (more or less) on the */ + /* grid. To find out the optimal scaling and shifting value, various */ + /* parameter combinations are tried and scored. */ + /* */ + /* This experimental option is active only if the rendering mode is */ + /* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the */ + /* `warping' property of the auto-hinter (see file `ftdriver.h' for more */ + /* information; by default it is switched off). */ + /* */ +#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 */ + /* */ + /* [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 */ + /* */ /* - * 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. + * This macro is obsolete. Support has been removed in FreeType + * version 2.5. */ /* #define FT_CONFIG_OPTION_OLD_INTERNALS */ /* - * This variable is defined if either unpatented or native TrueType - * hinting is requested by the definitions above. + * This macro is defined if 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 + +#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__ */ +#endif /* FTOPTION_H_ */ /* END */ diff --git a/include/freetype/config/ftstdlib.h b/freetype/include/freetype/config/ftstdlib.h similarity index 86% rename from include/freetype/config/ftstdlib.h rename to freetype/include/freetype/config/ftstdlib.h index f923f3e4..42f9a06e 100644 --- a/include/freetype/config/ftstdlib.h +++ b/freetype/include/freetype/config/ftstdlib.h @@ -5,7 +5,7 @@ /* ANSI-specific library and header configuration file (specification */ /* only). */ /* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 2002-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,14 +23,13 @@ /* 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. */ + /* Load a file which defines FTSTDLIB_H_ before this one to override it. */ /* */ /*************************************************************************/ -#ifndef __FTSTDLIB_H__ -#define __FTSTDLIB_H__ +#ifndef FTSTDLIB_H_ +#define FTSTDLIB_H_ #include @@ -54,21 +53,19 @@ /* 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 -#define FT_CHAR_BIT CHAR_BIT -#define FT_INT_MAX INT_MAX -#define FT_UINT_MAX UINT_MAX -#define FT_ULONG_MAX ULONG_MAX +#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 /**********************************************************************/ @@ -124,8 +121,6 @@ #define ft_qsort qsort -#define ft_exit exit /* only used to exit from unhandled exceptions */ - /**********************************************************************/ /* */ @@ -147,8 +142,8 @@ /**********************************************************************/ -#define ft_atol atol -#define ft_labs labs +#define ft_strtol strtol +#define ft_getenv getenv /**********************************************************************/ @@ -165,7 +160,7 @@ /* on certain platforms */ #define ft_longjmp longjmp -#define ft_setjmp( b ) setjmp( *(jmp_buf*) &(b) ) /* same thing here */ +#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */ /* the following is only used for debugging purposes, i.e., if */ @@ -174,7 +169,7 @@ #include -#endif /* __FTSTDLIB_H__ */ +#endif /* FTSTDLIB_H_ */ /* END */ diff --git a/include/freetype/freetype.h b/freetype/include/freetype/freetype.h similarity index 57% rename from include/freetype/freetype.h rename to freetype/include/freetype/freetype.h index dbca087e..96644046 100644 --- a/include/freetype/freetype.h +++ b/freetype/include/freetype/freetype.h @@ -4,7 +4,7 @@ /* */ /* FreeType high-level API and common types (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,6 +16,10 @@ /***************************************************************************/ +#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." @@ -25,28 +29,48 @@ #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 #include FT_CONFIG_CONFIG_H -#include FT_ERRORS_H #include FT_TYPES_H +#include FT_ERRORS_H FT_BEGIN_HEADER + /*************************************************************************/ + /* */ + /*
*/ + /* header_inclusion */ + /* */ + /* */ + /* FreeType's header inclusion scheme */ + /* */ + /* <Abstract> */ + /* How client applications should include FreeType header files. */ + /* */ + /* <Description> */ + /* To be as flexible as possible (and for historical reasons), */ + /* FreeType uses a very special inclusion scheme to load header */ + /* files, for example */ + /* */ + /* { */ + /* #include <ft2build.h> */ + /* */ + /* #include FT_FREETYPE_H */ + /* #include FT_OUTLINE_H */ + /* } */ + /* */ + /* A compiler and its preprocessor only needs an include path to find */ + /* the file `ft2build.h'; the exact locations and names of the other */ + /* FreeType header files are hidden by preprocessor macro names, */ + /* loaded by `ft2build.h'. The API documentation always gives the */ + /* header macro name needed for a particular function. */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ /* */ /* <Section> */ @@ -60,8 +84,8 @@ FT_BEGIN_HEADER /* */ /* <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) */ + /* 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. */ /* */ /*************************************************************************/ @@ -86,10 +110,11 @@ FT_BEGIN_HEADER /* Base Interface */ /* */ /* <Abstract> */ - /* The FreeType 2 base font interface. */ + /* The FreeType~2 base font interface. */ /* */ /* <Description> */ - /* This section describes the public high-level API of FreeType 2. */ + /* This section describes the most important public high-level API */ + /* functions of FreeType~2. */ /* */ /* <Order> */ /* FT_Library */ @@ -98,6 +123,7 @@ FT_BEGIN_HEADER /* FT_GlyphSlot */ /* FT_CharMap */ /* FT_Encoding */ + /* FT_ENC_TAG */ /* */ /* FT_FaceRec */ /* */ @@ -106,14 +132,33 @@ FT_BEGIN_HEADER /* 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_FAST_GLYPHS */ /* 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 */ /* */ @@ -131,7 +176,9 @@ FT_BEGIN_HEADER /* */ /* FT_New_Face */ /* FT_Done_Face */ + /* FT_Reference_Face */ /* FT_New_Memory_Face */ + /* FT_Face_Properties */ /* FT_Open_Face */ /* FT_Open_Args */ /* FT_Parameter */ @@ -143,10 +190,13 @@ FT_BEGIN_HEADER /* 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 */ /* */ @@ -163,11 +213,11 @@ FT_BEGIN_HEADER /* FT_LOAD_NO_SCALE */ /* FT_LOAD_NO_HINTING */ /* FT_LOAD_NO_BITMAP */ - /* FT_LOAD_CROP_BITMAP */ + /* FT_LOAD_NO_AUTOHINT */ + /* FT_LOAD_COLOR */ /* */ /* 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 */ @@ -178,6 +228,8 @@ FT_BEGIN_HEADER /* FT_LOAD_TARGET_LCD */ /* FT_LOAD_TARGET_LCD_V */ /* */ + /* FT_LOAD_TARGET_MODE */ + /* */ /* FT_Render_Glyph */ /* FT_Render_Mode */ /* FT_Get_Kerning */ @@ -191,6 +243,23 @@ FT_BEGIN_HEADER /* 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 */ + /* */ /*************************************************************************/ @@ -200,8 +269,8 @@ FT_BEGIN_HEADER /* 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 */ + /* 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. */ /* */ @@ -225,10 +294,25 @@ FT_BEGIN_HEADER /* Left side bearing for vertical layout. */ /* */ /* vertBearingY :: */ - /* Top side bearing for vertical layout. */ + /* Top side bearing for vertical layout. Larger positive values */ + /* mean further below the vertical glyph origin. */ /* */ /* vertAdvance :: */ - /* Advance height for vertical layout. */ + /* 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_ { @@ -274,10 +358,10 @@ FT_BEGIN_HEADER /* */ /* <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. */ + /* 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 */ @@ -318,25 +402,37 @@ FT_BEGIN_HEADER /* 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. */ + /* In multi-threaded applications it is easiest to use one */ + /* `FT_Library' object per thread. In case this is too cumbersome, */ + /* a single `FT_Library' object across threads is possible also */ + /* (since FreeType version 2.5.6), as long as a mutex lock is used */ + /* around @FT_New_Face and @FT_Done_Face. */ /* */ /* <Note> */ /* Library objects are normally created by @FT_Init_FreeType, and */ - /* destroyed with @FT_Done_FreeType. */ + /* 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. Each module can be a */ + /* 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 formers. */ + /* to the former. */ /* */ typedef struct FT_ModuleRec_* FT_Module; @@ -347,8 +443,8 @@ FT_BEGIN_HEADER /* 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. */ + /* 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; @@ -359,35 +455,50 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 given typographic face object. A face object models */ - /* a given typeface, in a given style. */ + /* A handle to a 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 */ + /* 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 filepathname or a custom input stream. */ + /* 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> */ - /* The @FT_FaceRec details the publicly accessible fields of a given */ - /* face object. */ + /* See @FT_FaceRec for the publicly accessible fields of a given face */ + /* object. */ /* */ typedef struct FT_FaceRec_* FT_Face; @@ -398,13 +509,14 @@ FT_BEGIN_HEADER /* FT_Size */ /* */ /* <Description> */ - /* A handle to an object used to model a face scaled to a given */ + /* A handle to an object that models a face scaled to a given */ /* character size. */ /* */ /* <Note> */ - /* Each @FT_Face has an _active_ @FT_Size object that is used by */ + /* An @FT_Face has one _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. */ + /* 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 */ @@ -416,8 +528,8 @@ FT_BEGIN_HEADER /* activated at any given time per face. */ /* */ /* <Also> */ - /* The @FT_SizeRec structure details the publicly accessible fields */ - /* of a given size object. */ + /* See @FT_SizeRec for the publicly accessible fields of a given size */ + /* object. */ /* */ typedef struct FT_SizeRec_* FT_Size; @@ -428,9 +540,8 @@ FT_BEGIN_HEADER /* 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. */ + /* 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, */ @@ -438,7 +549,7 @@ FT_BEGIN_HEADER /* other control information. */ /* */ /* <Also> */ - /* @FT_GlyphSlotRec details the publicly accessible glyph fields. */ + /* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */ /* */ typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; @@ -449,13 +560,14 @@ FT_BEGIN_HEADER /* 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. */ + /* 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' and used by @FT_Get_Char_Index or @FT_Load_Char. */ + /* 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. */ @@ -466,11 +578,12 @@ FT_BEGIN_HEADER /* <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. */ + /* the list and automatically activates it. If there is no Unicode */ + /* charmap, FreeType doesn't set an `active' charmap. */ /* */ /* <Also> */ - /* The @FT_CharMapRec details the publicly accessible fields of a */ - /* given character map. */ + /* See @FT_CharMapRec for the publicly accessible fields of a given */ + /* character map. */ /* */ typedef struct FT_CharMapRec_* FT_CharMap; @@ -485,7 +598,7 @@ FT_BEGIN_HEADER /* used to define `encoding' identifiers (see @FT_Encoding). */ /* */ /* <Note> */ - /* Since many 16bit compilers don't like 32bit enumerations, you */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ /* should redefine this macro in case of problems to something like */ /* this: */ /* */ @@ -512,137 +625,143 @@ FT_BEGIN_HEADER /* FT_Encoding */ /* */ /* <Description> */ - /* An enumeration used to specify character sets supported by */ - /* charmaps. Used in the @FT_Select_Charmap API function. */ + /* 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, GB2312_EUC, etc.). */ - /* */ - /* Because of 32-bit charcodes defined in Unicode (i.e., surrogates), */ - /* all character codes must be expressed as FT_Longs. */ + /* UTF-8, UTF-16, etc.). */ /* */ /* Other encodings might be defined in the future. */ /* */ /* <Values> */ - /* FT_ENCODING_NONE :: */ - /* The encoding value 0 is reserved. */ + /* FT_ENCODING_NONE :: */ + /* The encoding value~0 is reserved. */ + /* */ + /* FT_ENCODING_UNICODE :: */ + /* The Unicode character set. This value covers all versions of */ + /* the Unicode repertoire, including ASCII and Latin-1. Most fonts */ + /* include a Unicode charmap, but not all of them. */ /* */ - /* 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. */ + /* 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 :: */ - /* 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_MS_SYMBOL :: */ + /* Microsoft Symbol encoding, used to encode mathematical symbols */ + /* and wingdings. For more information, see */ + /* `https://www.microsoft.com/typography/otspec/recom.htm', */ + /* `http://www.kostis.net/charsets/symbol.htm', and */ + /* `http://www.kostis.net/charsets/wingding.htm'. */ /* */ - /* 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. */ + /* This encoding uses character codes from the PUA (Private Unicode */ + /* Area) in the range U+F020-U+F0FF. */ /* */ - /* FT_ENCODING_GB2312 :: */ - /* Corresponds to an encoding system for Simplified Chinese as used */ - /* used in mainland China. */ + /* 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_BIG5 :: */ - /* Corresponds to an encoding system for Traditional Chinese as used */ - /* in Taiwan and Hong Kong. */ + /* 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_WANSUNG :: */ - /* Corresponds to the Korean encoding system known as Wansung. */ - /* For more information see */ - /* `http://www.microsoft.com/typography/unicode/949.txt'. */ + /* FT_ENCODING_BIG5 :: */ + /* Corresponds to an encoding system for Traditional Chinese as */ + /* used in Taiwan and Hong Kong. */ /* */ - /* 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_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_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_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_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_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_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_STANDARD :: */ + /* Adobe Standard 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_ADOBE_EXPERT :: */ + /* Adobe Expert 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_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_OLD_LATIN_2 :: */ - /* This value is deprecated and was never used nor reported by */ - /* FreeType. Don't use or test for it. */ + /* 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_MS_SJIS :: */ - /* Same as FT_ENCODING_SJIS. Deprecated. */ + /* 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_GB2312 :: */ - /* Same as FT_ENCODING_GB2312. Deprecated. */ + /* FT_ENCODING_MS_SJIS :: */ + /* Same as FT_ENCODING_SJIS. Deprecated. */ /* */ - /* FT_ENCODING_MS_BIG5 :: */ - /* Same as FT_ENCODING_BIG5. Deprecated. */ + /* FT_ENCODING_MS_GB2312 :: */ + /* Same as FT_ENCODING_PRC. Deprecated. */ /* */ - /* FT_ENCODING_MS_WANSUNG :: */ - /* Same as FT_ENCODING_WANSUNG. Deprecated. */ + /* FT_ENCODING_MS_BIG5 :: */ + /* Same as FT_ENCODING_BIG5. Deprecated. */ /* */ - /* FT_ENCODING_MS_JOHAB :: */ - /* Same as FT_ENCODING_JOHAB. 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. */ + /* 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_ { @@ -652,14 +771,15 @@ FT_BEGIN_HEADER 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_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 backwards compatibility */ + /* for backward compatibility */ + FT_ENCODING_GB2312 = FT_ENCODING_PRC, FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, - FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312, + 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, @@ -676,22 +796,15 @@ FT_BEGIN_HEADER } FT_Encoding; - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_encoding_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated; use the corresponding @FT_Encoding */ - /* values instead. */ - /* */ + /* 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_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 @@ -718,11 +831,11 @@ FT_BEGIN_HEADER /* */ /* 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. */ + /* the TrueType specification and gets emulated for */ + /* other formats. */ /* */ /* encoding_id :: A platform specific encoding number. This also */ - /* comes from the TrueType specification and should be */ + /* comes from the TrueType specification and gets */ /* emulated similarly. */ /* */ typedef struct FT_CharMapRec_ @@ -750,10 +863,10 @@ FT_BEGIN_HEADER /* FT_Face_Internal */ /* */ /* <Description> */ - /* An opaque handle to an `FT_Face_InternalRec' structure, used to */ - /* model private data of a given @FT_Face object. */ + /* 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 */ + /* 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; @@ -771,27 +884,61 @@ FT_BEGIN_HEADER /* <Fields> */ /* num_faces :: The number of faces in the font file. Some */ /* font formats can have multiple faces in */ - /* a font file. */ + /* a single 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 */ + /* 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 :: A set of bit flags indicating the style of */ - /* the face; see @FT_STYLE_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, which describes */ + /* 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 */ @@ -799,9 +946,16 @@ FT_BEGIN_HEADER /* 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, which describes */ + /* 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 */ @@ -820,6 +974,10 @@ FT_BEGIN_HEADER /* 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. */ @@ -831,14 +989,18 @@ FT_BEGIN_HEADER /* 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 */ + /* `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. */ + /* TrueType fonts, and 1000 for Type~1 fonts. */ /* Only relevant for scalable formats. */ /* */ /* ascender :: The typographic ascender of the face, */ @@ -851,22 +1013,25 @@ FT_BEGIN_HEADER /* 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. */ + /* negative for values below the baseline. */ + /* Only relevant for scalable formats. */ /* */ - /* height :: The height is the vertical distance */ + /* height :: This value 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, */ + /* 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 maximal advance height, in font units, */ + /* 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 */ @@ -874,7 +1039,7 @@ FT_BEGIN_HEADER /* scalable formats. */ /* */ /* underline_position :: The position, in font units, of the */ - /* underline line for this face. It's the */ + /* underline line for this face. It is the */ /* center of the underlining stem. Only */ /* relevant for scalable formats. */ /* */ @@ -889,8 +1054,17 @@ FT_BEGIN_HEADER /* charmap :: The current active charmap for this face. */ /* */ /* <Note> */ - /* Fields may be changed after a call to @FT_Attach_File or */ - /* @FT_Attach_Stream. */ + /* 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_ { @@ -941,8 +1115,8 @@ FT_BEGIN_HEADER FT_ListRec sizes_list; - FT_Generic autohint; - void* extensions; + FT_Generic autohint; /* face-specific auto-hinter data */ + void* extensions; /* unused */ FT_Face_Internal internal; @@ -963,49 +1137,51 @@ FT_BEGIN_HEADER /* */ /* <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. */ + /* 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 :: */ - /* Indicates that the face contains bitmap strikes. See also the */ + /* 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.). */ + /* The face contains fixed-width characters (like Courier, Lucida, */ + /* MonoType, etc.). */ /* */ /* FT_FACE_FLAG_SFNT :: */ - /* Indicates that the face uses the `sfnt' storage scheme. For */ - /* now, this means TrueType and OpenType. */ + /* 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. */ + /* 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. */ + /* 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). */ + /* 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 :: */ - /* Indicates that the font contains multiple masters and is capable */ - /* of interpolating between them. See the multiple-masters */ - /* specific API for details. */ + /* 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 :: */ - /* 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 */ + /* 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 :: */ @@ -1014,10 +1190,51 @@ FT_BEGIN_HEADER /* 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. */ + /* The font driver has a hinting machine of its own. For example, */ + /* with TrueType fonts, it makes sense to use data from the SFNT */ + /* `gasp' table only if the native TrueType hinting engine (with */ + /* the bytecode interpreter) is available and active. */ + /* */ + /* FT_FACE_FLAG_CID_KEYED :: */ + /* The face is CID-keyed. In that case, the face is not accessed */ + /* by glyph indices but by CID values. For subsetted CID-keyed */ + /* fonts this has the consequence that not all index values are a */ + /* valid argument to @FT_Load_Glyph. Only the CID values for which */ + /* corresponding glyphs in the subsetted font exist make */ + /* `FT_Load_Glyph' return successfully; in all other cases you get */ + /* an `FT_Err_Invalid_Argument' error. */ + /* */ + /* Note that CID-keyed fonts that are in an SFNT wrapper (this is, */ + /* all OpenType/CFF fonts) don't have this flag set since the */ + /* glyphs are accessed in the normal way (using contiguous */ + /* indices); the `CID-ness' isn't visible to the application. */ + /* */ + /* FT_FACE_FLAG_TRICKY :: */ + /* The face is `tricky', this is, it always needs the font format's */ + /* native hinting engine to get a reasonable result. A typical */ + /* example is the old Chinese font `mingli.ttf' (but not */ + /* `mingliu.ttc') that uses TrueType bytecode instructions to move */ + /* and scale all of its subglyphs. */ + /* */ + /* It is not possible to auto-hint such fonts using */ + /* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */ + /* @FT_LOAD_NO_HINTING. You have to set both @FT_LOAD_NO_HINTING */ + /* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */ + /* probably never want this except for demonstration purposes. */ + /* */ + /* Currently, there are about a dozen TrueType fonts in the list of */ + /* tricky fonts; they are hard-coded in file `ttobjs.c'. */ + /* */ + /* FT_FACE_FLAG_COLOR :: */ + /* [Since 2.5.1] The face has color glyph tables. To access color */ + /* glyphs use @FT_LOAD_COLOR. */ + /* */ + /* FT_FACE_FLAG_VARIATION :: */ + /* [Since 2.9] Set if the current face (or named instance) has been */ + /* altered with @FT_Set_MM_Design_Coordinates, */ + /* @FT_Set_Var_Design_Coordinates, or */ + /* @FT_Set_Var_Blend_Coordinates. This flag is unset by a call to */ + /* @FT_Set_Named_Instance. */ /* */ #define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) #define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) @@ -1031,8 +1248,10 @@ FT_BEGIN_HEADER #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 ) /************************************************************************* @@ -1049,7 +1268,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_HORIZONTAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) + ( (face)->face_flags & FT_FACE_FLAG_HORIZONTAL ) /************************************************************************* @@ -1058,12 +1277,12 @@ FT_BEGIN_HEADER * FT_HAS_VERTICAL( face ) * * @description: - * A macro that returns true whenever a face object contains vertical - * metrics. + * 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 ) + ( (face)->face_flags & FT_FACE_FLAG_VERTICAL ) /************************************************************************* @@ -1077,7 +1296,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_KERNING( face ) \ - ( face->face_flags & FT_FACE_FLAG_KERNING ) + ( (face)->face_flags & FT_FACE_FLAG_KERNING ) /************************************************************************* @@ -1087,12 +1306,12 @@ FT_BEGIN_HEADER * * @description: * A macro that returns true whenever a face object contains a scalable - * font face (true for TrueType, Type 1, Type 42, CID, OpenType/CFF, - * and PFR font formats. + * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, + * and PFR font formats). * */ #define FT_IS_SCALABLE( face ) \ - ( face->face_flags & FT_FACE_FLAG_SCALABLE ) + ( (face)->face_flags & FT_FACE_FLAG_SCALABLE ) /************************************************************************* @@ -1111,7 +1330,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_SFNT( face ) \ - ( face->face_flags & FT_FACE_FLAG_SFNT ) + ( (face)->face_flags & FT_FACE_FLAG_SFNT ) /************************************************************************* @@ -1126,7 +1345,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_FIXED_WIDTH( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) + ( (face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) /************************************************************************* @@ -1141,9 +1360,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_FIXED_SIZES( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) - - /* */ + ( (face)->face_flags & FT_FACE_FLAG_FIXED_SIZES ) /************************************************************************* @@ -1169,7 +1386,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_GLYPH_NAMES( face ) \ - ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) + ( (face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) /************************************************************************* @@ -1184,24 +1401,119 @@ FT_BEGIN_HEADER * */ #define FT_HAS_MULTIPLE_MASTERS( face ) \ - ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) + ( (face)->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) + + + /************************************************************************* + * + * @macro: + * FT_IS_NAMED_INSTANCE( face ) + * + * @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( face ) + * + * @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( face ) + * + * @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( face ) + * + * @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( face ) + * + * @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 ) /*************************************************************************/ /* */ - /* <Constant> */ + /* <Const> */ /* 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. */ + /* 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 :: */ - /* Indicates that a given face is italicized. */ + /* The face style is italic or oblique. */ /* */ /* FT_STYLE_FLAG_BOLD :: */ - /* Indicates that a given face is 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 ) @@ -1214,7 +1526,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* An opaque handle to an `FT_Size_InternalRec' structure, used to */ - /* model private data of a given FT_Size object. */ + /* model private data of a given @FT_Size object. */ /* */ typedef struct FT_Size_InternalRec_* FT_Size_Internal; @@ -1236,43 +1548,93 @@ FT_BEGIN_HEADER /* 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 */ + /* 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 used to convert */ + /* 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. See */ - /* @FT_FaceRec for the details. */ + /* 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. 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. 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 maximal advance width in 26.6 fractional */ - /* pixels. 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. */ + /* 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, 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! */ + /* 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. */ + /* 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_ { @@ -1302,9 +1664,9 @@ FT_BEGIN_HEADER /* <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 */ + /* 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. */ @@ -1345,7 +1707,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* An opaque handle to an `FT_Slot_InternalRec' structure, used to */ - /* model private data of a given FT_GlyphSlot object. */ + /* model private data of a given @FT_GlyphSlot object. */ /* */ typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; @@ -1372,10 +1734,10 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 */ @@ -1400,46 +1762,45 @@ FT_BEGIN_HEADER /* important to perform correct WYSIWYG layout. */ /* Only relevant for outline glyphs. */ /* */ - /* advance :: This is the transformed advance width for the */ - /* glyph. */ + /* 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 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*. */ + /* @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, embolded, etc. However, it must */ + /* distorted, emboldened, etc. However, it must */ /* not be freed. */ /* */ /* num_subglyphs :: The number of subglyphs in a composite glyph. */ /* This field is only valid for the composite */ /* glyph format that should normally only be */ /* loaded with the @FT_LOAD_NO_RECURSE flag. */ - /* For now this is internal to FreeType. */ /* */ /* subglyphs :: An array of subglyph descriptors for */ /* composite glyphs. There are `num_subglyphs' */ @@ -1448,37 +1809,37 @@ FT_BEGIN_HEADER /* */ /* 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. */ + /* 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. */ + /* data. Currently internal to FreeType. */ /* */ - /* 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. */ + /* other :: Reserved. */ /* */ /* lsb_delta :: The difference between hinted and unhinted */ - /* left side bearing while autohinting is */ + /* left side bearing while auto-hinting is */ /* active. Zero otherwise. */ /* */ /* rsb_delta :: The difference between hinted and unhinted */ - /* right side bearing while autohinting is */ + /* 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). */ + /* 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 finds the current renderer for */ - /* the native image's format then invokes it. */ + /* @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 convert it into a */ + /* 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 */ @@ -1486,34 +1847,65 @@ FT_BEGIN_HEADER /* 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': */ + /* Here is a small pseudo code fragment that shows how to use */ + /* `lsb_delta' and `rsb_delta' to do fractional positioning of */ + /* glyphs: */ + /* */ + /* { */ + /* FT_GlyphSlot slot = face->glyph; */ + /* FT_Pos origin_x = 0; */ + /* */ + /* */ + /* for all glyphs do */ + /* <load glyph with `FT_Load_Glyph'> */ + /* */ + /* FT_Outline_Translate( slot->outline, origin_x & 63, 0 ); */ + /* */ + /* <save glyph image, or render glyph, or ...> */ + /* */ + /* <compute kern between current and next glyph */ + /* and add it to `origin_x'> */ + /* */ + /* origin_x += slot->advance.x; */ + /* origin_x += slot->rsb_delta - slot->lsb_delta; */ + /* endfor */ + /* } */ + /* */ + /* Here is another small pseudo code fragment that shows how to use */ + /* `lsb_delta' and `rsb_delta' to improve integer positioning of */ + /* glyphs: */ /* */ /* { */ - /* FT_Pos origin_x = 0; */ - /* FT_Pos prev_rsb_delta = 0; */ + /* 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'> */ + /* <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 ) */ + /* if ( prev_rsb_delta - slot->lsb_delta > 32 ) */ /* origin_x -= 64; */ - /* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */ + /* else if ( prev_rsb_delta - slot->lsb_delta < -31 ) */ /* origin_x += 64; */ /* */ - /* prev_rsb_delta = face->glyph->rsb_delta; */ + /* prev_rsb_delta = slot->rsb_delta; */ /* */ /* <save glyph image, or render glyph, or ...> */ /* */ - /* origin_x += face->glyph->advance.x; */ + /* 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; @@ -1573,7 +1965,24 @@ FT_BEGIN_HEADER /* alibrary :: A handle to a new library object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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 ); @@ -1592,7 +2001,7 @@ FT_BEGIN_HEADER /* library :: A handle to the target library object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Done_FreeType( FT_Library library ); @@ -1604,30 +2013,20 @@ FT_BEGIN_HEADER /* FT_OPEN_XXX */ /* */ /* <Description> */ - /* A list of bit-field constants used within the `flags' field of the */ + /* 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 :: This is a memory-based stream. */ /* */ - /* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */ + /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ /* */ - /* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */ + /* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */ + /* name. */ /* */ - /* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */ + /* FT_OPEN_DRIVER :: Use the `driver' field. */ /* */ - /* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */ - /* */ - /* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */ + /* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ /* */ /* <Note> */ /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ @@ -1639,11 +2038,14 @@ FT_BEGIN_HEADER #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 */ + + /* 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 /*************************************************************************/ @@ -1652,8 +2054,8 @@ FT_BEGIN_HEADER /* FT_Parameter */ /* */ /* <Description> */ - /* A simple structure used to pass more or less generic parameters */ - /* to @FT_Open_Face. */ + /* 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. */ @@ -1661,7 +2063,8 @@ FT_BEGIN_HEADER /* data :: A pointer to the parameter data. */ /* */ /* <Note> */ - /* The ID and function of parameters are driver-specific. */ + /* The ID and function of parameters are driver-specific. See */ + /* section @parameter_tags for more information. */ /* */ typedef struct FT_Parameter_ { @@ -1677,9 +2080,9 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 */ @@ -1694,9 +2097,10 @@ FT_BEGIN_HEADER /* 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. */ + /* 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. */ /* */ @@ -1704,29 +2108,29 @@ FT_BEGIN_HEADER /* opening a new face. */ /* */ /* <Note> */ - /* The stream type is determined by the contents of `flags' which */ + /* 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 */ + /* 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 */ + /* 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 */ + /* 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 */ + /* 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 */ + /* 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 */ + /* 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 */ + /* as `const'; this is missing for API backward compatibility. In */ /* other words, applications should treat them as read-only. */ /* */ typedef struct FT_Open_Args_ @@ -1749,7 +2153,7 @@ FT_BEGIN_HEADER /* FT_New_Face */ /* */ /* <Description> */ - /* This function calls @FT_Open_Face to open a font by its pathname. */ + /* Call @FT_Open_Face to open a font by its pathname. */ /* */ /* <InOut> */ /* library :: A handle to the library resource. */ @@ -1757,16 +2161,19 @@ FT_BEGIN_HEADER /* <Input> */ /* pathname :: A path to the font file. */ /* */ - /* face_index :: The index of the face within the font. The first */ - /* face has index 0. */ + /* 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. */ - /* See @FT_Open_Face for more details. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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, @@ -1781,8 +2188,8 @@ FT_BEGIN_HEADER /* FT_New_Memory_Face */ /* */ /* <Description> */ - /* This function calls @FT_Open_Face to open a font which has been */ - /* loaded into memory. */ + /* Call @FT_Open_Face to open a font that has been loaded into */ + /* memory. */ /* */ /* <InOut> */ /* library :: A handle to the library resource. */ @@ -1792,16 +2199,15 @@ FT_BEGIN_HEADER /* */ /* 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. */ + /* 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. */ - /* See @FT_Open_Face for more details. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* You must not deallocate the memory before calling @FT_Done_Face. */ @@ -1827,38 +2233,134 @@ FT_BEGIN_HEADER /* library :: A handle to the library resource. */ /* */ /* <Input> */ - /* args :: A pointer to an `FT_Open_Args' structure which must */ + /* args :: A pointer to an `FT_Open_Args' structure that must */ /* be filled by the caller. */ /* */ - /* face_index :: The index of the face within the font. The first */ - /* face has index 0. */ + /* 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. */ - /* See note below. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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 */ + /* slot for the face object that 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'. */ /* */ + /* One @FT_Library instance can have multiple face objects, this is, */ + /* @FT_Open_Face and its siblings can be called multiple times using */ + /* the same `library' argument. */ + /* */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Face. */ + /* */ + /* To loop over all faces, use code similar to the following snippet */ + /* (omitting the error handling). */ + /* */ + /* { */ + /* ... */ + /* FT_Face face; */ + /* FT_Long i, num_faces; */ + /* */ + /* */ + /* error = FT_Open_Face( library, args, -1, &face ); */ + /* if ( error ) { ... } */ + /* */ + /* num_faces = face->num_faces; */ + /* FT_Done_Face( face ); */ + /* */ + /* for ( i = 0; i < num_faces; i++ ) */ + /* { */ + /* ... */ + /* error = FT_Open_Face( library, args, i, &face ); */ + /* ... */ + /* FT_Done_Face( face ); */ + /* ... */ + /* } */ + /* } */ + /* */ + /* To loop over all valid values for `face_index', use something */ + /* similar to the following snippet, again without error handling. */ + /* The code accesses all faces immediately (thus only a single call */ + /* of `FT_Open_Face' within the do-loop), with and without named */ + /* instances. */ + /* */ + /* { */ + /* ... */ + /* FT_Face face; */ + /* */ + /* FT_Long num_faces = 0; */ + /* FT_Long num_instances = 0; */ + /* */ + /* FT_Long face_idx = 0; */ + /* FT_Long instance_idx = 0; */ + /* */ + /* */ + /* do */ + /* { */ + /* FT_Long id = ( instance_idx << 16 ) + face_idx; */ + /* */ + /* */ + /* error = FT_Open_Face( library, args, id, &face ); */ + /* if ( error ) { ... } */ + /* */ + /* num_faces = face->num_faces; */ + /* num_instances = face->style_flags >> 16; */ + /* */ + /* ... */ + /* */ + /* FT_Done_Face( face ); */ + /* */ + /* if ( instance_idx < num_instances ) */ + /* instance_idx++; */ + /* else */ + /* { */ + /* face_idx++; */ + /* instance_idx = 0; */ + /* } */ + /* */ + /* } while ( face_idx < num_faces ) */ + /* } */ + /* */ FT_EXPORT( FT_Error ) FT_Open_Face( FT_Library library, const FT_Open_Args* args, @@ -1872,7 +2374,7 @@ FT_BEGIN_HEADER /* FT_Attach_File */ /* */ /* <Description> */ - /* This function calls @FT_Attach_Stream to attach a file. */ + /* Call @FT_Attach_Stream to attach a file. */ /* */ /* <InOut> */ /* face :: The target face object. */ @@ -1881,7 +2383,7 @@ FT_BEGIN_HEADER /* filepathname :: The pathname. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Attach_File( FT_Face face, @@ -1896,18 +2398,18 @@ FT_BEGIN_HEADER /* <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 */ + /* 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 */ + /* parameters :: A pointer to @FT_Open_Args that must be filled by */ /* the caller. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The meaning of the `attach' (i.e., what really happens when the */ @@ -1916,13 +2418,40 @@ FT_BEGIN_HEADER /* */ /* Client applications are expected to know what they are doing */ /* when invoking this function. Most drivers simply do not implement */ - /* file attachments. */ + /* 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> */ @@ -1936,7 +2465,11 @@ FT_BEGIN_HEADER /* face :: A handle to a target face object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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 ); @@ -1948,7 +2481,10 @@ FT_BEGIN_HEADER /* FT_Select_Size */ /* */ /* <Description> */ - /* Select a bitmap strike. */ + /* 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. */ @@ -1958,7 +2494,21 @@ FT_BEGIN_HEADER /* `available_sizes' field of @FT_FaceRec structure. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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, @@ -1971,17 +2521,26 @@ FT_BEGIN_HEADER /* FT_Size_Request_Type */ /* */ /* <Description> */ - /* An enumeration type that lists the supported size request types. */ + /* 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 the `Ascender' and (minus */ - /* of) the `Descender' fields of @FT_FaceRec are used to determine */ - /* both scaling values. */ + /* 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 */ @@ -2026,26 +2585,35 @@ FT_BEGIN_HEADER /* FT_Size_RequestRec */ /* */ /* <Description> */ - /* A structure used to model a size request. */ + /* A structure to model a size request. */ /* */ /* <Fields> */ /* type :: See @FT_Size_Request_Type. */ /* */ - /* width :: The desired width. */ + /* width :: The desired width, given as a 26.6 fractional */ + /* point value (with 72pt = 1in). */ /* */ - /* height :: The desired height. */ + /* height :: The desired height, given as a 26.6 fractional */ + /* point value (with 72pt = 1in). */ /* */ - /* horiResolution :: The horizontal resolution. If set to zero, */ - /* `width' is treated as a 26.6 fractional pixel */ - /* value. */ + /* 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. If set to zero, */ - /* `height' is treated as a 26.6 fractional pixel */ - /* value. */ + /* 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, then the horizontal scaling value is set */ - /* equal to the vertical scaling value, and vice versa. */ + /* 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_ { @@ -2055,25 +2623,36 @@ FT_BEGIN_HEADER FT_UInt horiResolution; FT_UInt vertResolution; - } FT_Size_RequestRec, *FT_Size_Request; + } FT_Size_RequestRec; /*************************************************************************/ /* */ - /* <Function> */ - /* FT_Request_Size */ + /* <Struct> */ + /* FT_Size_Request */ /* */ /* <Description> */ - /* Resize the scale of the active @FT_Size object in a face. */ + /* A handle to a size request structure. */ /* */ - /* <InOut> */ + 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. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* Although drivers may select the bitmap strike matching the */ @@ -2081,6 +2660,18 @@ FT_BEGIN_HEADER /* 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 ); @@ -2092,8 +2683,7 @@ FT_BEGIN_HEADER /* FT_Set_Char_Size */ /* */ /* <Description> */ - /* This function calls @FT_Request_Size to request the nominal size */ - /* (in points). */ + /* Call @FT_Request_Size to request the nominal size (in points). */ /* */ /* <InOut> */ /* face :: A handle to a target face object. */ @@ -2108,9 +2698,13 @@ FT_BEGIN_HEADER /* vert_resolution :: The vertical resolution in dpi. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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. */ /* */ @@ -2120,7 +2714,8 @@ FT_BEGIN_HEADER /* 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, @@ -2135,8 +2730,7 @@ FT_BEGIN_HEADER /* FT_Set_Pixel_Sizes */ /* */ /* <Description> */ - /* This function calls @FT_Request_Size to request the nominal size */ - /* (in pixels). */ + /* Call @FT_Request_Size to request the nominal size (in pixels). */ /* */ /* <InOut> */ /* face :: A handle to the target face object. */ @@ -2147,7 +2741,14 @@ FT_BEGIN_HEADER /* pixel_height :: The nominal height, in pixels. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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, @@ -2161,8 +2762,7 @@ FT_BEGIN_HEADER /* FT_Load_Glyph */ /* */ /* <Description> */ - /* A function used to load a single glyph into the glyph slot of a */ - /* face object. */ + /* Load a glyph into the glyph slot of a face object. */ /* */ /* <InOut> */ /* face :: A handle to the target face object where the glyph */ @@ -2180,12 +2780,21 @@ FT_BEGIN_HEADER /* whether to hint the outline, etc). */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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, @@ -2198,8 +2807,8 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 */ @@ -2216,11 +2825,19 @@ FT_BEGIN_HEADER /* whether to hint the outline, etc). */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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, @@ -2233,12 +2850,12 @@ FT_BEGIN_HEADER * 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. + * 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 + * 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 @@ -2246,25 +2863,31 @@ FT_BEGIN_HEADER * 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). + * 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 + * 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. + * 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 glyph - * when the glyph is rendered in any of the anti-aliased modes. See + * 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. @@ -2283,64 +2906,87 @@ FT_BEGIN_HEADER * @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. + * 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. * - * FT_LOAD_FORCE_AUTOHINT :: - * Indicates that the auto-hinter is preferred over the font's native - * hinter. See also the note below. + * 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_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_FORCE_AUTOHINT :: + * Prefer the auto-hinter over the font's native hinter. See also + * the note below. * * 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. + * Make the font driver perform pedantic verifications during glyph + * loading. This is mostly used to detect broken glyphs in fonts. + * By default, FreeType tries to handle broken fonts also. * - * 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). + * 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 :: - * 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. + * Don't load composite glyphs recursively. Instead, the font + * driver should set the `num_subglyph' and `subglyphs' values of + * the glyph slot accordingly, and set `glyph->format' to + * @FT_GLYPH_FORMAT_COMPOSITE. The description of subglyphs can + * then be accessed with @FT_Get_SubGlyph_Info. * * 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. + * 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. + * 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 + * should rather use @FT_LOAD_TARGET_MONO 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. + * Keep `linearHoriAdvance' and `linearVertAdvance' fields of + * @FT_GlyphSlotRec in font units. See @FT_GlyphSlotRec for + * details. * * FT_LOAD_NO_AUTOHINT :: - * Disable auto-hinter. See also the note below. + * Disable the auto-hinter. See also the note below. + * + * FT_LOAD_COLOR :: + * [Since 2.5] Load embedded color bitmap images. The resulting color + * bitmaps, if available, will have the @FT_PIXEL_MODE_BGRA format. + * If the flag is not set and color bitmaps are found, they are + * converted to 256-level gray bitmaps transparently, using the + * @FT_PIXEL_MODE_GRAY format. + * + * 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 @@ -2350,30 +2996,46 @@ FT_BEGIN_HEADER * @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 0x1 -#define FT_LOAD_NO_HINTING 0x2 -#define FT_LOAD_RENDER 0x4 -#define FT_LOAD_NO_BITMAP 0x8 -#define FT_LOAD_VERTICAL_LAYOUT 0x10 -#define FT_LOAD_FORCE_AUTOHINT 0x20 -#define FT_LOAD_CROP_BITMAP 0x40 -#define FT_LOAD_PEDANTIC 0x80 -#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH 0x200 -#define FT_LOAD_NO_RECURSE 0x400 -#define FT_LOAD_IGNORE_TRANSFORM 0x800 -#define FT_LOAD_MONOCHROME 0x1000 -#define FT_LOAD_LINEAR_DESIGN 0x2000 - - /* temporary hack! */ -#define FT_LOAD_SBITS_ONLY 0x4000 -#define FT_LOAD_NO_AUTOHINT 0x8000U +#define FT_LOAD_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 ) + /************************************************************************** * @@ -2381,29 +3043,40 @@ FT_BEGIN_HEADER * 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. + * 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 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. + * 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 :: - * This corresponds to the default hinting algorithm, optimized for - * standard gray-level rendering. For monochrome output, use - * @FT_LOAD_TARGET_MONO instead. + * 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. + * 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). * - * As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT. + * 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 @@ -2411,7 +3084,7 @@ FT_BEGIN_HEADER * in non-monochrome modes. * * FT_LOAD_TARGET_LCD :: - * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally + * A variant of @FT_LOAD_TARGET_LIGHT optimized for horizontally * decimated LCD displays. * * FT_LOAD_TARGET_LCD_V :: @@ -2423,8 +3096,9 @@ FT_BEGIN_HEADER * `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. + * 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' @@ -2437,30 +3111,36 @@ FT_BEGIN_HEADER * * 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_( 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 ) +#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 ) ) - /* */ - /*************************************************************************/ /* */ @@ -2468,18 +3148,17 @@ FT_BEGIN_HEADER /* 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. */ + /* 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. */ + /* 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 */ @@ -2502,18 +3181,22 @@ FT_BEGIN_HEADER /* 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. */ + /* 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. */ /* */ - /* For bitmap fonts 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 :: */ - /* This is the default render mode; it corresponds to 8-bit */ - /* anti-aliased bitmaps, using 256 levels of opacity. */ + /* 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 */ @@ -2522,24 +3205,34 @@ FT_BEGIN_HEADER /* @FT_LOAD_TARGET_XXX for details. */ /* */ /* FT_RENDER_MODE_MONO :: */ - /* This mode corresponds to 1-bit bitmaps. */ + /* This mode corresponds to 1-bit bitmaps (with 2~levels of */ + /* opacity). */ /* */ /* 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 */ + /* 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 sub-pixel displays */ + /* 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 */ + /* 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. */ + /* 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_ { @@ -2554,19 +3247,8 @@ FT_BEGIN_HEADER } 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 */ - /* */ + /* 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 @@ -2586,12 +3268,93 @@ FT_BEGIN_HEADER /* 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. */ + /* render_mode :: The render mode used to render the glyph image into */ + /* a bitmap. See @FT_Render_Mode for a list of */ + /* possible values. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* To get meaningful results, font scaling values must be set with */ + /* functions like @FT_Set_Char_Size before calling `FT_Render_Glyph'. */ + /* */ + /* When FreeType outputs a bitmap of a glyph, it really outputs an */ + /* alpha coverage map. If a pixel is completely covered by a */ + /* filled-in outline, the bitmap contains 0xFF at that pixel, meaning */ + /* that 0xFF/0xFF fraction of that pixel is covered, meaning the */ + /* pixel is 100% black (or 0% bright). If a pixel is only 50% */ + /* covered (value 0x80), the pixel is made 50% black (50% bright or a */ + /* middle shade of grey). 0% covered means 0% black (100% bright or */ + /* white). */ + /* */ + /* On high-DPI screens like on smartphones and tablets, the pixels */ + /* are so small that their chance of being completely covered and */ + /* therefore completely black are fairly good. On the low-DPI */ + /* screens, however, the situation is different. The pixels are too */ + /* large for most of the details of a glyph and shades of gray are */ + /* the norm rather than the exception. */ + /* */ + /* This is relevant because all our screens have a second problem: */ + /* they are not linear. 1~+~1 is not~2. Twice the value does not */ + /* result in twice the brightness. When a pixel is only 50% covered, */ + /* the coverage map says 50% black, and this translates to a pixel */ + /* value of 128 when you use 8~bits per channel (0-255). However, */ + /* this does not translate to 50% brightness for that pixel on our */ + /* sRGB and gamma~2.2 screens. Due to their non-linearity, they */ + /* dwell longer in the darks and only a pixel value of about 186 */ + /* results in 50% brightness -- 128 ends up too dark on both bright */ + /* and dark backgrounds. The net result is that dark text looks */ + /* burnt-out, pixely and blotchy on bright background, bright text */ + /* too frail on dark backgrounds, and colored text on colored */ + /* background (for example, red on green) seems to have dark halos or */ + /* `dirt' around it. The situation is especially ugly for diagonal */ + /* stems like in `w' glyph shapes where the quality of FreeType's */ + /* anti-aliasing depends on the correct display of grays. On */ + /* high-DPI screens where smaller, fully black pixels reign supreme, */ + /* this doesn't matter, but on our low-DPI screens with all the gray */ + /* shades, it does. 0% and 100% brightness are the same things in */ + /* linear and non-linear space, just all the shades in-between */ + /* aren't. */ + /* */ + /* The blending function for placing text over a background is */ + /* */ + /* { */ + /* dst = alpha * src + (1 - alpha) * dst , */ + /* } */ + /* */ + /* which is known as the OVER operator. */ + /* */ + /* To correctly composite an antialiased pixel of a glyph onto a */ + /* surface, */ + /* */ + /* 1. take the foreground and background colors (e.g., in sRGB space) */ + /* and apply gamma to get them in a linear space, */ + /* */ + /* 2. use OVER to blend the two linear colors using the glyph pixel */ + /* as the alpha value (remember, the glyph bitmap is an alpha */ + /* coverage bitmap), and */ + /* */ + /* 3. apply inverse gamma to the blended pixel and write it back to */ + /* the image. */ + /* */ + /* Internal testing at Adobe found that a target inverse gamma of~1.8 */ + /* for step~3 gives good results across a wide range of displays with */ + /* an sRGB gamma curve or a similar one. */ + /* */ + /* This process can cost performance. There is an approximation that */ + /* does not need to know about the background color; see */ + /* https://bel.fi/alankila/lcd/ and */ + /* https://bel.fi/alankila/lcd/alpcor.html for details. */ + /* */ + /* *ATTENTION*: Linear blending is even more important when dealing */ + /* with subpixel-rendered glyphs to prevent color-fringing! A */ + /* subpixel-rendered glyph must first be filtered with a filter that */ + /* gives equal weight to the three color primaries and does not */ + /* exceed a sum of 0x100, see section @lcd_filtering. Then the */ + /* only difference to gray linear blending is that subpixel-rendered */ + /* linear blending is done 3~times per pixel: red foreground subpixel */ + /* to red background subpixel and so on for green and blue. */ /* */ FT_EXPORT( FT_Error ) FT_Render_Glyph( FT_GlyphSlot slot, @@ -2604,61 +3367,41 @@ FT_BEGIN_HEADER /* FT_Kerning_Mode */ /* */ /* <Description> */ - /* An enumeration used to specify which kerning values to return in */ + /* An enumeration to specify the format of kerning values returned by */ /* @FT_Get_Kerning. */ /* */ /* <Values> */ - /* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ - /* distances (value is 0). */ + /* FT_KERNING_DEFAULT :: Return grid-fitted kerning distances in */ + /* 26.6 fractional pixels. */ /* */ - /* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ - /* distances. */ + /* 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_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. */ - /* */ + /* these constants are deprecated; use the corresponding */ + /* `FT_Kerning_Mode' values 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 @@ -2668,7 +3411,7 @@ FT_BEGIN_HEADER /* FT_Get_Kerning */ /* */ /* <Description> */ - /* Return the kerning vector between two glyphs of a same face. */ + /* Return the kerning vector between two glyphs of the same face. */ /* */ /* <Input> */ /* face :: A handle to a source face object. */ @@ -2682,12 +3425,13 @@ FT_BEGIN_HEADER /* 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. */ + /* 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. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* Only horizontal layouts (left-to-right & right-to-left) are */ @@ -2695,6 +3439,10 @@ FT_BEGIN_HEADER /* 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, @@ -2712,17 +3460,29 @@ FT_BEGIN_HEADER /* Return the track kerning for a given face object at a given size. */ /* */ /* <Input> */ - /* face :: A handle to a source face object. */ + /* face :: A handle to a source face object. */ /* */ - /* point_size :: The point size in 16.16 fractional points. */ + /* point_size :: The point size in 16.16 fractional points. */ /* */ - /* degree :: The degree of tightness. */ + /* 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. */ + /* akerning :: The kerning in 16.16 fractional points, to be */ + /* uniformly applied between all glyphs. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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, @@ -2738,14 +3498,14 @@ FT_BEGIN_HEADER /* */ /* <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. */ + /* 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_max :: The maximum number of bytes available in the */ /* buffer. */ /* */ /* <Output> */ @@ -2753,19 +3513,22 @@ FT_BEGIN_HEADER /* copied to. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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. */ + /* 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'. */ + /* 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, @@ -2780,19 +3543,33 @@ FT_BEGIN_HEADER /* FT_Get_Postscript_Name */ /* */ /* <Description> */ - /* Retrieve the ASCII Postscript name of a given face, if available. */ - /* This only works with Postscript and TrueType fonts. */ + /* 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. */ + /* 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 ); @@ -2813,7 +3590,7 @@ FT_BEGIN_HEADER /* encoding :: A handle to the selected encoding. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* This function returns an error if no charmap in the face */ @@ -2821,7 +3598,8 @@ FT_BEGIN_HEADER /* */ /* 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 */ + /* 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 ) @@ -2844,13 +3622,16 @@ FT_BEGIN_HEADER /* charmap :: A handle to the selected charmap. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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 ); @@ -2870,7 +3651,7 @@ FT_BEGIN_HEADER * * @return: * The index into the array of character maps within the face to which - * `charmap' belongs. + * `charmap' belongs. If an error occurs, -1 is returned. * */ FT_EXPORT( FT_Int ) @@ -2884,7 +3665,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* Return the glyph index of a given character code. This function */ - /* uses a charmap object to do the mapping. */ + /* uses the currently selected charmap to do the mapping. */ /* */ /* <Input> */ /* face :: A handle to the source face object. */ @@ -2892,14 +3673,20 @@ FT_BEGIN_HEADER /* charcode :: The character code. */ /* */ /* <Return> */ - /* The glyph index. 0 means `undefined character code'. */ + /* 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'. */ + /* 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, @@ -2912,22 +3699,21 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 */ + /* 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 */ + /* 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: */ /* */ @@ -2945,9 +3731,16 @@ FT_BEGIN_HEADER /* } */ /* } */ /* */ - /* 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. */ + /* 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, @@ -2960,16 +3753,17 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 */ + /* agindex :: Glyph index of next character code. 0~if charmap */ /* is empty. */ /* */ /* <Return> */ @@ -2978,9 +3772,9 @@ FT_BEGIN_HEADER /* <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 for that function for a simple code example. */ /* */ - /* Note that `*agindex' is set to 0 when there are no more codes in */ + /* Note that `*agindex' is set to~0 when there are no more codes in */ /* the charmap. */ /* */ FT_EXPORT( FT_ULong ) @@ -2989,14 +3783,112 @@ FT_BEGIN_HEADER 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. + * + * @note: + * Here 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. This function uses */ - /* driver specific objects to do the translation. */ + /* Return the glyph index of a given glyph name. */ /* */ /* <Input> */ /* face :: A handle to the source face object. */ @@ -3004,7 +3896,7 @@ FT_BEGIN_HEADER /* glyph_name :: The glyph name. */ /* */ /* <Return> */ - /* The glyph index. 0 means `undefined character code'. */ + /* The glyph index. 0~means `undefined character code'. */ /* */ FT_EXPORT( FT_UInt ) FT_Get_Name_Index( FT_Face face, @@ -3017,8 +3909,10 @@ FT_BEGIN_HEADER * 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. + * 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). * * @values: * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: @@ -3046,15 +3940,16 @@ FT_BEGIN_HEADER * * @description: * Retrieve a description of a given subglyph. Only use it if - * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE, or an error is - * returned. + * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is + * returned otherwise. * * @input: * glyph :: * The source glyph slot. * * sub_index :: - * The index of subglyph. Must be less than `glyph->num_subglyphs'. + * The index of the subglyph. Must be less than + * `glyph->num_subglyphs'. * * @output: * p_index :: @@ -3073,12 +3968,12 @@ FT_BEGIN_HEADER * The subglyph transformation (if any). * * @return: - * FreeType error code. 0 means success. + * 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. + * OpenType specification for details. * */ FT_EXPORT( FT_Error ) @@ -3091,6 +3986,326 @@ FT_BEGIN_HEADER FT_Matrix *p_transform ); + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_FSTYPE_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used in the `fsType' field of the OS/2 table */ + /* in a TrueType or OpenType font and the `FSType' entry in a */ + /* PostScript font. These bit flags are returned by */ + /* @FT_Get_FSType_Flags; they inform client applications of embedding */ + /* and subsetting restrictions associated with a font. */ + /* */ + /* See */ + /* https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf */ + /* for more details. */ + /* */ + /* <Values> */ + /* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */ + /* Fonts with no fsType bit set may be embedded and permanently */ + /* installed on the remote system by an application. */ + /* */ + /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */ + /* Fonts that have only this bit set must not be modified, embedded */ + /* or exchanged in any manner without first obtaining permission of */ + /* the font software copyright owner. */ + /* */ + /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */ + /* The font may be embedded and temporarily loaded on the remote */ + /* system. Documents containing Preview & Print fonts must be */ + /* opened `read-only'; no edits can be applied to the document. */ + /* */ + /* FT_FSTYPE_EDITABLE_EMBEDDING :: */ + /* The font may be embedded but must only be installed temporarily */ + /* on other systems. In contrast to Preview & Print fonts, */ + /* documents containing editable fonts may be opened for reading, */ + /* editing is permitted, and changes may be saved. */ + /* */ + /* FT_FSTYPE_NO_SUBSETTING :: */ + /* The font may not be subsetted prior to embedding. */ + /* */ + /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */ + /* Only bitmaps contained in the font may be embedded; no outline */ + /* data may be embedded. If there are no bitmaps available in the */ + /* font, then the font is unembeddable. */ + /* */ + /* <Note> */ + /* The flags are ORed together, thus more than a single value can be */ + /* returned. */ + /* */ + /* While the `fsType' flags can indicate that a font may be embedded, */ + /* a license with the font vendor may be separately required to use */ + /* the font in this way. */ + /* */ +#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 `cmap'. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character codepoint in Unicode. */ + /* */ + /* variantSelector :: */ + /* The Unicode codepoint of the variation selector. */ + /* */ + /* <Return> */ + /* 1~if found in the standard (Unicode) cmap, 0~if found in the */ + /* variation selector cmap, or -1 if it is not a variation. */ + /* */ + /* <Note> */ + /* This function is only meaningful if the font has a variation */ + /* selector cmap subtable. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + 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> */ @@ -3126,16 +4341,17 @@ FT_BEGIN_HEADER /* 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). */ + /* 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> */ @@ -3155,12 +4371,12 @@ FT_BEGIN_HEADER /* 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. */ + /* 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). */ /* */ @@ -3189,23 +4405,17 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 first multiplier. */ - /* b :: The second multiplier. Use a 16.16 factor here whenever */ - /* possible (see note below). */ + /* a :: The numerator. */ + /* */ + /* b :: The denominator. Use a 16.16 factor here. */ /* */ /* <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 ); @@ -3217,13 +4427,17 @@ FT_BEGIN_HEADER /* FT_RoundFix */ /* */ /* <Description> */ - /* A very simple function used to round a 16.16 fixed number. */ + /* Round a 16.16 fixed number. */ /* */ /* <Input> */ /* a :: The number to be rounded. */ /* */ /* <Return> */ - /* The result of `(a + 0x8000) & -0x10000'. */ + /* `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 ); @@ -3235,14 +4449,16 @@ FT_BEGIN_HEADER /* FT_CeilFix */ /* */ /* <Description> */ - /* A very simple function used to compute the ceiling function of a */ - /* 16.16 fixed number. */ + /* 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> */ - /* The result of `(a + 0x10000 - 1) & -0x10000'. */ + /* `a' rounded towards plus infinity. */ + /* */ + /* <Note> */ + /* The function uses wrap-around arithmetic. */ /* */ FT_EXPORT( FT_Fixed ) FT_CeilFix( FT_Fixed a ); @@ -3254,14 +4470,13 @@ FT_BEGIN_HEADER /* FT_FloorFix */ /* */ /* <Description> */ - /* A very simple function used to compute the floor function of a */ - /* 16.16 fixed number. */ + /* 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> */ - /* The result of `a & -0x10000'. */ + /* `a' rounded towards minus infinity. */ /* */ FT_EXPORT( FT_Fixed ) FT_FloorFix( FT_Fixed a ); @@ -3305,31 +4520,44 @@ FT_BEGIN_HEADER /* even a new release of FreeType with only documentation changes */ /* increases the version number. */ /* */ + /* <Order> */ + /* FT_Library_Version */ + /* */ + /* FREETYPE_MAJOR */ + /* FREETYPE_MINOR */ + /* FREETYPE_PATCH */ + /* */ + /* FT_Face_CheckTrueTypePatents */ + /* FT_Face_SetUnpatentedHinting */ + /* */ + /* FREETYPE_XXX */ + /* */ /*************************************************************************/ /************************************************************************* * - * @enum: - * FREETYPE_XXX + * @enum: + * FREETYPE_XXX * - * @description: - * These three macros identify the FreeType source code version. - * Use @FT_Library_Version to access them at runtime. + * @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. + * @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. * - * @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 +#define FREETYPE_MINOR 9 +#define FREETYPE_PATCH 1 /*************************************************************************/ @@ -3374,20 +4602,16 @@ FT_BEGIN_HEADER /* 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. */ + /* Deprecated, does nothing. */ /* */ /* <Input> */ /* face :: A face handle. */ /* */ /* <Return> */ - /* 1 if this is a TrueType font that uses one of the patented */ - /* opcodes, 0 otherwise. */ + /* Always returns false. */ + /* */ + /* <Note> */ + /* Since May 2010, TrueType hinting is no longer patented. */ /* */ /* <Since> */ /* 2.3.5 */ @@ -3402,9 +4626,7 @@ FT_BEGIN_HEADER /* 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). */ + /* Deprecated, does nothing. */ /* */ /* <Input> */ /* face :: A face handle. */ @@ -3412,9 +4634,10 @@ FT_BEGIN_HEADER /* 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. */ + /* Always returns false. */ + /* */ + /* <Note> */ + /* Since May 2010, TrueType hinting is no longer patented. */ /* */ /* <Since> */ /* 2.3.5 */ @@ -3428,7 +4651,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __FREETYPE_H__ */ +#endif /* FREETYPE_H_ */ /* END */ diff --git a/freetype/include/freetype/ftadvanc.h b/freetype/include/freetype/ftadvanc.h new file mode 100644 index 00000000..f78e8b1a --- /dev/null +++ b/freetype/include/freetype/ftadvanc.h @@ -0,0 +1,187 @@ +/***************************************************************************/ +/* */ +/* ftadvanc.h */ +/* */ +/* Quick computation of advance widths (specification only). */ +/* */ +/* Copyright 2008-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#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 + * + */ + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* FT_ADVANCE_FLAG_FAST_ONLY */ + /* */ + /* <Description> */ + /* A bit-flag to be OR-ed with the `flags' parameter of the */ + /* @FT_Get_Advance and @FT_Get_Advances functions. */ + /* */ + /* If set, it indicates that you want these functions to fail if the */ + /* corresponding hinting mode or font driver doesn't allow for very */ + /* quick advance computation. */ + /* */ + /* Typically, glyphs that are either unscaled, unhinted, bitmapped, */ + /* or light-hinted can have their advance width computed very */ + /* quickly. */ + /* */ + /* Normal and bytecode hinted modes that require loading, scaling, */ + /* and hinting of the glyph outline, are extremely slow by */ + /* comparison. */ + /* */ +#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/include/freetype/ftbbox.h b/freetype/include/freetype/ftbbox.h similarity index 80% rename from include/freetype/ftbbox.h rename to freetype/include/freetype/ftbbox.h index 5f79c327..f9eb70b1 100644 --- a/include/freetype/ftbbox.h +++ b/freetype/include/freetype/ftbbox.h @@ -4,7 +4,7 @@ /* */ /* FreeType exact bbox computation (specification). */ /* */ -/* Copyright 1996-2001, 2003 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,8 +27,8 @@ /*************************************************************************/ -#ifndef __FTBBOX_H__ -#define __FTBBOX_H__ +#ifndef FTBBOX_H_ +#define FTBBOX_H_ #include <ft2build.h> @@ -58,10 +58,10 @@ FT_BEGIN_HEADER /* FT_Outline_Get_BBox */ /* */ /* <Description> */ - /* Computes the exact bounding box of an outline. This is slower */ + /* Compute 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 */ + /* algorithm that returns _very_ quickly when the two boxes */ + /* coincide. Otherwise, the outline Bezier arcs are traversed to */ /* extract their extrema. */ /* */ /* <Input> */ @@ -71,19 +71,26 @@ FT_BEGIN_HEADER /* abbox :: The outline's exact bounding box. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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__ */ +#endif /* FTBBOX_H_ */ /* END */ diff --git a/include/freetype/ftbdf.h b/freetype/include/freetype/ftbdf.h similarity index 69% rename from include/freetype/ftbdf.h rename to freetype/include/freetype/ftbdf.h index 95556948..1b6dea65 100644 --- a/include/freetype/ftbdf.h +++ b/freetype/include/freetype/ftbdf.h @@ -4,7 +4,7 @@ /* */ /* FreeType API for accessing BDF-specific strings (specification). */ /* */ -/* Copyright 2002, 2003, 2004, 2006 by */ +/* Copyright 2002-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTBDF_H__ -#define __FTBDF_H__ +#ifndef FTBDF_H_ +#define FTBDF_H_ #include <ft2build.h> #include FT_FREETYPE_H @@ -38,38 +38,39 @@ FT_BEGIN_HEADER /* bdf_fonts */ /* */ /* <Title> */ - /* BDF Files */ + /* BDF and PCF Files */ /* */ /* <Abstract> */ - /* BDF specific API. */ + /* BDF and PCF specific API. */ /* */ /* <Description> */ - /* This section contains the declaration of BDF specific functions. */ + /* This section contains the declaration of functions specific to BDF */ + /* and PCF fonts. */ /* */ /*************************************************************************/ - /********************************************************************** - * - * @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. - */ + /********************************************************************** + * + * @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, @@ -80,15 +81,15 @@ FT_BEGIN_HEADER } BDF_PropertyType; - /********************************************************************** - * - * @type: - * BDF_Property - * - * @description: - * A handle to a @BDF_PropertyRec structure to model a given - * BDF/PCF property. - */ + /********************************************************************** + * + * @type: + * BDF_Property + * + * @description: + * A handle to a @BDF_PropertyRec structure to model a given + * BDF/PCF property. + */ typedef struct BDF_PropertyRec_* BDF_Property; @@ -105,7 +106,8 @@ FT_BEGIN_HEADER * The property type. * * u.atom :: - * The atom string, if type is @BDF_PROPERTY_TYPE_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. @@ -132,7 +134,7 @@ FT_BEGIN_HEADER * FT_Get_BDF_Charset_ID * * @description: - * Retrieves a BDF font character set identity, according to + * Retrieve a BDF font character set identity, according to * the BDF specification. * * @input: @@ -141,13 +143,13 @@ FT_BEGIN_HEADER * * @output: * acharset_encoding :: - * Charset encoding, as a C string, owned by the face. + * Charset encoding, as a C~string, owned by the face. * * acharset_registry :: - * Charset registry, as a C string, owned by the face. + * Charset registry, as a C~string, owned by the face. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function only works with BDF faces, returning an error otherwise. @@ -164,7 +166,7 @@ FT_BEGIN_HEADER * FT_Get_BDF_Property * * @description: - * Retrieves a BDF property from a BDF or PCF font file. + * Retrieve a BDF property from a BDF or PCF font file. * * @input: * face :: A handle to the input face. @@ -175,13 +177,21 @@ FT_BEGIN_HEADER * aproperty :: The property. * * @return: - * FreeType error code. 0 means success. + * 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. */ @@ -190,11 +200,11 @@ FT_BEGIN_HEADER const char* prop_name, BDF_PropertyRec *aproperty ); - /* */ + /* */ FT_END_HEADER -#endif /* __FTBDF_H__ */ +#endif /* FTBDF_H_ */ /* END */ diff --git a/include/freetype/ftbitmap.h b/freetype/include/freetype/ftbitmap.h similarity index 77% rename from include/freetype/ftbitmap.h rename to freetype/include/freetype/ftbitmap.h index 337d888e..a43187ca 100644 --- a/include/freetype/ftbitmap.h +++ b/freetype/include/freetype/ftbitmap.h @@ -2,10 +2,9 @@ /* */ /* ftbitmap.h */ /* */ -/* FreeType utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp */ -/* bitmaps into 8bpp format (specification). */ +/* FreeType utility functions for bitmaps (specification). */ /* */ -/* Copyright 2004, 2005, 2006 by */ +/* Copyright 2004-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -17,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTBITMAP_H__ -#define __FTBITMAP_H__ +#ifndef FTBITMAP_H_ +#define FTBITMAP_H_ #include <ft2build.h> @@ -46,7 +45,9 @@ FT_BEGIN_HEADER /* Handling FT_Bitmap objects. */ /* */ /* <Description> */ - /* This section contains functions for converting FT_Bitmap objects. */ + /* This section contains functions for handling @FT_Bitmap objects. */ + /* Note that none of the functions changes the bitmap's `flow' (as */ + /* indicated by the sign of the `pitch' field in `FT_Bitmap'). */ /* */ /*************************************************************************/ @@ -54,7 +55,7 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* <Function> */ - /* FT_Bitmap_New */ + /* FT_Bitmap_Init */ /* */ /* <Description> */ /* Initialize a pointer to an @FT_Bitmap structure. */ @@ -62,6 +63,14 @@ FT_BEGIN_HEADER /* <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 ); @@ -72,7 +81,7 @@ FT_BEGIN_HEADER /* FT_Bitmap_Copy */ /* */ /* <Description> */ - /* Copies an bitmap into another one. */ + /* Copy a bitmap into another one. */ /* */ /* <Input> */ /* library :: A handle to a library object. */ @@ -83,12 +92,12 @@ FT_BEGIN_HEADER /* target :: A handle to the target bitmap. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Bitmap_Copy( FT_Library library, const FT_Bitmap *source, - FT_Bitmap *target); + FT_Bitmap *target ); /*************************************************************************/ @@ -114,14 +123,17 @@ FT_BEGIN_HEADER /* bitmap :: A handle to the target bitmap. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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. */ + /* 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. */ + /* 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, @@ -136,9 +148,9 @@ FT_BEGIN_HEADER /* 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'. */ + /* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp */ + /* to a bitmap object with depth 8bpp, making the number of used */ + /* bytes line (a.k.a. the `pitch') a multiple of `alignment'. */ /* */ /* <Input> */ /* library :: A handle to a library object. */ @@ -152,7 +164,7 @@ FT_BEGIN_HEADER /* target :: The target bitmap. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* It is possible to call @FT_Bitmap_Convert multiple times without */ @@ -170,13 +182,35 @@ FT_BEGIN_HEADER FT_Int alignment ); + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GlyphSlot_Own_Bitmap */ + /* */ + /* <Description> */ + /* Make sure that a glyph slot owns `slot->bitmap'. */ + /* */ + /* <Input> */ + /* slot :: The glyph slot. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function is to be used in combination with */ + /* @FT_Bitmap_Embolden. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); + + /*************************************************************************/ /* */ /* <Function> */ /* FT_Bitmap_Done */ /* */ /* <Description> */ - /* Destroy a bitmap object created with @FT_Bitmap_New. */ + /* Destroy a bitmap object initialized with @FT_Bitmap_Init. */ /* */ /* <Input> */ /* library :: A handle to a library object. */ @@ -184,7 +218,7 @@ FT_BEGIN_HEADER /* bitmap :: The bitmap object to be freed. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The `library' argument is taken to have access to FreeType's */ @@ -200,7 +234,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __FTBITMAP_H__ */ +#endif /* FTBITMAP_H_ */ /* END */ diff --git a/include/freetype/ftgzip.h b/freetype/include/freetype/ftbzip2.h similarity index 73% rename from include/freetype/ftgzip.h rename to freetype/include/freetype/ftbzip2.h index 9893437b..6edfa031 100644 --- a/include/freetype/ftgzip.h +++ b/freetype/include/freetype/ftbzip2.h @@ -1,11 +1,11 @@ /***************************************************************************/ /* */ -/* ftgzip.h */ +/* ftbzip2.h */ /* */ -/* Gzip-compressed stream support. */ +/* Bzip2-compressed stream support. */ /* */ -/* Copyright 2002, 2003, 2004, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* Copyright 2010-2018 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 */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTGZIP_H__ -#define __FTGZIP_H__ +#ifndef FTBZIP2_H_ +#define FTBZIP2_H_ #include <ft2build.h> #include FT_FREETYPE_H @@ -34,16 +34,16 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* <Section> */ - /* gzip */ + /* bzip2 */ /* */ /* <Title> */ - /* GZIP Streams */ + /* BZIP2 Streams */ /* */ /* <Abstract> */ - /* Using gzip-compressed font files. */ + /* Using bzip2-compressed font files. */ /* */ /* <Description> */ - /* This section contains the declaration of Gzip-specific functions. */ + /* This section contains the declaration of Bzip2-specific functions. */ /* */ /*************************************************************************/ @@ -51,11 +51,11 @@ FT_BEGIN_HEADER /************************************************************************ * * @function: - * FT_Stream_OpenGzip + * FT_Stream_OpenBzip2 * * @description: - * Open a new stream to parse gzip-compressed font files. This is - * mainly used to support the compressed `*.pcf.gz' fonts that come + * 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: @@ -66,7 +66,7 @@ FT_BEGIN_HEADER * The source stream. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * The source stream must be opened _before_ calling this function. @@ -78,25 +78,25 @@ FT_BEGIN_HEADER * 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 + * 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 gzipped stream from - * it and re-open the face with it. + * 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 zlib support. + * of FreeType was not compiled with bzip2 support. */ FT_EXPORT( FT_Error ) - FT_Stream_OpenGzip( FT_Stream stream, - FT_Stream source ); + FT_Stream_OpenBzip2( FT_Stream stream, + FT_Stream source ); - /* */ + /* */ FT_END_HEADER -#endif /* __FTGZIP_H__ */ +#endif /* FTBZIP2_H_ */ /* END */ diff --git a/include/freetype/ftcache.h b/freetype/include/freetype/ftcache.h similarity index 88% rename from include/freetype/ftcache.h rename to freetype/include/freetype/ftcache.h index 721aa16f..52d5f00e 100644 --- a/include/freetype/ftcache.h +++ b/freetype/include/freetype/ftcache.h @@ -4,7 +4,7 @@ /* */ /* FreeType Cache subsystem (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTCACHE_H__ -#define __FTCACHE_H__ +#ifndef FTCACHE_H_ +#define FTCACHE_H_ #include <ft2build.h> @@ -36,10 +36,10 @@ FT_BEGIN_HEADER * Cache Sub-System * * <Abstract> - * How to cache face, size, and glyph data with FreeType 2. + * How to cache face, size, and glyph data with FreeType~2. * * <Description> - * This section describes the FreeType 2 cache sub-system, which is used + * 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. @@ -56,9 +56,12 @@ FT_BEGIN_HEADER * 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 + * 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. + * 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 @@ -153,7 +156,7 @@ FT_BEGIN_HEADER * @note: * Never use NULL as a valid @FTC_FaceID. * - * Face IDs are passed by the client to the cache manager, which calls, + * 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. * @@ -165,7 +168,7 @@ FT_BEGIN_HEADER * Failure to do so will result in incorrect behaviour or even * memory leaks and crashes. */ - typedef struct FTC_FaceIDRec_* FTC_FaceID; + typedef FT_Pointer FTC_FaceID; /************************************************************************ @@ -193,7 +196,7 @@ FT_BEGIN_HEADER * A new @FT_Face handle. * * <Return> - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * <Note> * The third parameter `req_data' is the same as the one passed by the @@ -206,16 +209,10 @@ FT_BEGIN_HEADER typedef FT_Error (*FTC_Face_Requester)( FTC_FaceID face_id, FT_Library library, - FT_Pointer request_data, + FT_Pointer req_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 ) ) ) + /* */ /*************************************************************************/ @@ -260,13 +257,13 @@ FT_BEGIN_HEADER /* */ /* <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 */ + /* 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). */ + /* 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. */ /* */ @@ -279,19 +276,19 @@ FT_BEGIN_HEADER /* FTC_Manager_New */ /* */ /* <Description> */ - /* Creates a new cache manager. */ + /* 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. */ + /* 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. */ + /* 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 */ + /* 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 */ @@ -301,11 +298,11 @@ FT_BEGIN_HEADER /* each time it is called (see @FTC_Face_Requester). */ /* */ /* <Output> */ - /* amanager :: A handle to a new manager object. 0 in case of */ + /* amanager :: A handle to a new manager object. 0~in case of */ /* failure. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FTC_Manager_New( FT_Library library, @@ -323,7 +320,7 @@ FT_BEGIN_HEADER /* FTC_Manager_Reset */ /* */ /* <Description> */ - /* Empties a given cache manager. This simply gets rid of all the */ + /* Empty a given cache manager. This simply gets rid of all the */ /* currently cached @FT_Face and @FT_Size objects within the manager. */ /* */ /* <InOut> */ @@ -339,7 +336,7 @@ FT_BEGIN_HEADER /* FTC_Manager_Done */ /* */ /* <Description> */ - /* Destroys a given manager after emptying it. */ + /* Destroy a given manager after emptying it. */ /* */ /* <Input> */ /* manager :: A handle to the target cache manager object. */ @@ -354,7 +351,7 @@ FT_BEGIN_HEADER /* FTC_Manager_LookupFace */ /* */ /* <Description> */ - /* Retrieves the @FT_Face object that corresponds to a given face ID */ + /* Retrieve the @FT_Face object that corresponds to a given face ID */ /* through a cache manager. */ /* */ /* <Input> */ @@ -366,14 +363,14 @@ FT_BEGIN_HEADER /* aface :: A handle to the face object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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', */ + /* (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 */ @@ -415,10 +412,10 @@ FT_BEGIN_HEADER /* 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 */ + /* 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 */ + /* y_res :: Only used when `pixel' is value~0 to indicate the */ /* vertical resolution in dpi. */ /* */ /* <Note> */ @@ -434,7 +431,18 @@ FT_BEGIN_HEADER FT_UInt x_res; FT_UInt y_res; - } FTC_ScalerRec, *FTC_Scaler; + } FTC_ScalerRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_Scaler */ + /* */ + /* <Description> */ + /* A handle to an @FTC_ScalerRec structure. */ + /* */ + typedef struct FTC_ScalerRec_* FTC_Scaler; /*************************************************************************/ @@ -455,7 +463,7 @@ FT_BEGIN_HEADER /* asize :: A handle to the size object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The returned @FT_Size object is always owned by the manager. You */ @@ -532,13 +540,6 @@ FT_BEGIN_HEADER FTC_FaceID face_id ); - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - /************************************************************************* * * @type: @@ -569,7 +570,7 @@ FT_BEGIN_HEADER * A new cache handle. NULL in case of error. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * Like all other caches, this one will be destroyed with the cache @@ -598,13 +599,14 @@ FT_BEGIN_HEADER * The source face ID. * * cmap_index :: - * The index of the charmap in the source face. + * 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'. + * Glyph index. 0~means `no glyph'. * */ FT_EXPORT( FT_UInt ) @@ -614,14 +616,6 @@ FT_BEGIN_HEADER FT_UInt32 char_code ); - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ @@ -658,8 +652,8 @@ FT_BEGIN_HEADER typedef struct FTC_ImageTypeRec_ { FTC_FaceID face_id; - FT_Int width; - FT_Int height; + FT_UInt width; + FT_UInt height; FT_Int32 flags; } FTC_ImageTypeRec; @@ -685,11 +679,6 @@ FT_BEGIN_HEADER (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 ) ) - /*************************************************************************/ /* */ @@ -697,7 +686,7 @@ FT_BEGIN_HEADER /* FTC_ImageCache */ /* */ /* <Description> */ - /* A handle to an glyph image cache object. They are designed to */ + /* A handle to a glyph image cache object. They are designed to */ /* hold many distinct glyph images while not exceeding a certain */ /* memory threshold. */ /* */ @@ -710,7 +699,7 @@ FT_BEGIN_HEADER /* FTC_ImageCache_New */ /* */ /* <Description> */ - /* Creates a new glyph image cache. */ + /* Create a new glyph image cache. */ /* */ /* <Input> */ /* manager :: The parent manager for the image cache. */ @@ -719,7 +708,7 @@ FT_BEGIN_HEADER /* acache :: A handle to the new glyph image cache object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FTC_ImageCache_New( FTC_Manager manager, @@ -732,7 +721,7 @@ FT_BEGIN_HEADER /* FTC_ImageCache_Lookup */ /* */ /* <Description> */ - /* Retrieves a given glyph image from a glyph image cache. */ + /* Retrieve a given glyph image from a glyph image cache. */ /* */ /* <Input> */ /* cache :: A handle to the source glyph image cache. */ @@ -742,15 +731,15 @@ FT_BEGIN_HEADER /* gindex :: The glyph index to retrieve. */ /* */ /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ /* failure. */ /* */ - /* anode :: Used to return the address of of the corresponding cache */ + /* 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. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The returned glyph is owned and managed by the glyph image cache. */ @@ -795,15 +784,15 @@ FT_BEGIN_HEADER /* gindex :: The glyph index to retrieve. */ /* */ /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ /* failure. */ /* */ - /* anode :: Used to return the address of of the corresponding */ + /* 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. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The returned glyph is owned and managed by the glyph image cache. */ @@ -821,6 +810,9 @@ FT_BEGIN_HEADER /* 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, @@ -862,11 +854,11 @@ FT_BEGIN_HEADER /* 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. */ + /* y~coordinates. */ /* */ /* format :: The format of the glyph bitmap (monochrome or gray). */ /* */ - /* max_grays :: Maximum gray level value (in the range 1 to 255). */ + /* 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. */ @@ -915,7 +907,7 @@ FT_BEGIN_HEADER /* FTC_SBitCache_New */ /* */ /* <Description> */ - /* Creates a new cache to store small glyph bitmaps. */ + /* Create a new cache to store small glyph bitmaps. */ /* */ /* <Input> */ /* manager :: A handle to the source cache manager. */ @@ -924,7 +916,7 @@ FT_BEGIN_HEADER /* acache :: A handle to the new sbit cache. NULL in case of error. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FTC_SBitCache_New( FTC_Manager manager, @@ -937,7 +929,7 @@ FT_BEGIN_HEADER /* FTC_SBitCache_Lookup */ /* */ /* <Description> */ - /* Looks up a given small glyph bitmap in a given sbit cache and */ + /* 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> */ @@ -950,12 +942,12 @@ FT_BEGIN_HEADER /* <Output> */ /* sbit :: A handle to a small bitmap descriptor. */ /* */ - /* anode :: Used to return the address of of the corresponding cache */ + /* 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. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The small bitmap descriptor and its bit buffer are owned by the */ @@ -963,7 +955,7 @@ FT_BEGIN_HEADER /* 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 */ + /* 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 */ @@ -1005,12 +997,12 @@ FT_BEGIN_HEADER /* <Output> */ /* sbit :: A handle to a small bitmap descriptor. */ /* */ - /* anode :: Used to return the address of of the corresponding */ + /* 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. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The small bitmap descriptor and its bit buffer are owned by the */ @@ -1018,7 +1010,7 @@ FT_BEGIN_HEADER /* 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 */ + /* 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 */ @@ -1039,72 +1031,12 @@ FT_BEGIN_HEADER 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__ */ +#endif /* FTCACHE_H_ */ /* END */ diff --git a/include/freetype/ftchapters.h b/freetype/include/freetype/ftchapters.h similarity index 70% rename from include/freetype/ftchapters.h rename to freetype/include/freetype/ftchapters.h index bd812c8e..51257bb7 100644 --- a/include/freetype/ftchapters.h +++ b/freetype/include/freetype/ftchapters.h @@ -1,7 +1,7 @@ /***************************************************************************/ /* */ /* This file defines the structure of the FreeType reference. */ -/* It is used by the python script which generates the HTML files. */ +/* It is used by the python script that generates the HTML files. */ /* */ /***************************************************************************/ @@ -15,6 +15,7 @@ /* General Remarks */ /* */ /* <Sections> */ +/* header_inclusion */ /* user_allocation */ /* */ /***************************************************************************/ @@ -32,6 +33,7 @@ /* version */ /* basic_types */ /* base_interface */ +/* glyph_variants */ /* glyph_management */ /* mac_specific */ /* sizes_management */ @@ -54,6 +56,7 @@ /* type1_tables */ /* sfnt_names */ /* bdf_fonts */ +/* cid_fonts */ /* pfr_fonts */ /* winfnt_fonts */ /* font_formats */ @@ -62,6 +65,26 @@ /***************************************************************************/ +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* module_specific */ +/* */ +/* <Title> */ +/* Controlling FreeType Modules */ +/* */ +/* <Sections> */ +/* auto_hinter */ +/* cff_driver */ +/* t1_cid_driver */ +/* tt_driver */ +/* pcf_driver */ +/* properties */ +/* parameter_tags */ +/* */ +/***************************************************************************/ + + /***************************************************************************/ /* */ /* <Chapter> */ @@ -88,6 +111,7 @@ /* computations */ /* list_processing */ /* outline_processing */ +/* quick_advance */ /* bitmap_handling */ /* raster */ /* glyph_stroker */ @@ -95,6 +119,21 @@ /* module_management */ /* gzip */ /* lzw */ +/* bzip2 */ /* lcd_filtering */ /* */ /***************************************************************************/ + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* error_codes */ +/* */ +/* <Title> */ +/* Error Codes */ +/* */ +/* <Sections> */ +/* error_enumerations */ +/* error_code_values */ +/* */ +/***************************************************************************/ diff --git a/freetype/include/freetype/ftcid.h b/freetype/include/freetype/ftcid.h new file mode 100644 index 00000000..5e9100a6 --- /dev/null +++ b/freetype/include/freetype/ftcid.h @@ -0,0 +1,168 @@ +/***************************************************************************/ +/* */ +/* ftcid.h */ +/* */ +/* FreeType API for accessing CID font information (specification). */ +/* */ +/* Copyright 2007-2018 by */ +/* Dereg Clegg and Michael Toftdal. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#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/freetype/include/freetype/ftdriver.h b/freetype/include/freetype/ftdriver.h new file mode 100644 index 00000000..e90475b2 --- /dev/null +++ b/freetype/include/freetype/ftdriver.h @@ -0,0 +1,1225 @@ +/***************************************************************************/ +/* */ +/* ftdriver.h */ +/* */ +/* FreeType API for controlling driver modules (specification only). */ +/* */ +/* Copyright 2017-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#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://www.beatstamm.com/typography/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://www.beatstamm.com/typography/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://www.beatstamm.com/typography/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://www.beatstamm.com/typography/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. + * + * The following example code demonstrates how to select Adobe's hinting + * engine for the `cff' module (omitting the error handling). + * + * { + * FT_Library library; + * FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "hinting-engine", &hinting_engine ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES' environment + * variable (using values `adobe' or `freetype'). + * + * @since: + * 2.4.12 (for `cff' module) + * + * 2.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. + * + * { + * FT_Library library; + * FT_Bool no_stem_darkening = TRUE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "no-stem-darkening", &no_stem_darkening ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES' environment + * variable (using values 1 and 0 for `on' and `off', respectively). + * It can also be set per face using @FT_Face_Properties with + * @FT_PARAM_TAG_STEM_DARKENING. + * + * @since: + * 2.4.12 (for `cff' module) + * + * 2.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, as the following + * example demonstrates for the Type~1 driver. + * + * { + * 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 ); + * } + * + * The x~values give the stem width, and the y~values the darkening + * amount. The unit is 1000th of pixels. All coordinate values must be + * positive; the x~values must be monotonically increasing; the + * y~values must be monotonically decreasing and smaller than or + * equal to 500 (corresponding to half a pixel); the slope of each + * linear piece must be shallower than -1 (e.g., -.4). + * + * The auto-hinter provides this property, too, as an experimental + * feature. See @no-stem-darkening for more. + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES' environment + * variable, using eight comma-separated integers without spaces. Here + * the above example, using `\' to break the line for readability. + * + * { + * FREETYPE_PROPERTIES=\ + * type1:darkening-parameters=500,300,1000,200,1500,100,2000,0 + * } + * + * @since: + * 2.5.1 (for `cff' module) + * + * 2.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. + * + * { + * 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 ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES' environment + * variable (using values 1 and 0 for `on' and `off', respectively). + * + * @since: + * 2.8 + */ + + + /************************************************************************** + * + * @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. + * + * 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 ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES' environment + * variable (using values `35', `38', or `40'). + * + * @since: + * 2.5 + */ + + + /************************************************************************** + * + * @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. + * + * 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. + * + * { + * FT_Library library; + * FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "fallback-script", &fallback_script ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the + * fallback script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the fallback script will affect this face. + * + * @since: + * 2.4.11 + * + */ + + + /************************************************************************** + * + * @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. + * + * { + * FT_Library library; + * FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "default-script", &default_script ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the + * default script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the default script will affect this face. + * + * @since: + * 2.5.3 + * + */ + + + /************************************************************************** + * + * @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. + * + * { + * 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 ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * Set this value right after calling @FT_Set_Char_Size, but before + * loading any glyph (using the auto-hinter). + * + * @since: + * 2.4.11 + * + */ + + + /************************************************************************** + * + * @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. The example below shows how to switch on + * warping (omitting the error handling). + * + * { + * FT_Library library; + * FT_Bool warping = 1; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "warping", &warping ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * This property can be set via the `FREETYPE_PROPERTIES' environment + * variable (using values 1 and 0 for `on' and `off', respectively). + * + * The warping code can also change advance widths. Have a look at the + * `lsb_delta' and `rsb_delta' fields in the @FT_GlyphSlotRec structure + * for details on improving inter-glyph distances while rendering. + * + * Since warping is a global property of the auto-hinter it is best to + * change its value before rendering any face. Otherwise, you should + * reload all faces that get auto-hinted in `normal' hinting mode. + * + * @since: + * 2.6 + * + */ + + + /* */ + + +FT_END_HEADER + + +#endif /* FTDRIVER_H_ */ + + +/* END */ diff --git a/include/freetype/fterrdef.h b/freetype/include/freetype/fterrdef.h similarity index 75% rename from include/freetype/fterrdef.h rename to freetype/include/freetype/fterrdef.h index d7ad256b..8ffd346c 100644 --- a/include/freetype/fterrdef.h +++ b/freetype/include/freetype/fterrdef.h @@ -4,7 +4,7 @@ /* */ /* FreeType error codes (specification). */ /* */ -/* Copyright 2002, 2004, 2006, 2007 by */ +/* Copyright 2002-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,224 +16,265 @@ /***************************************************************************/ - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** LIST OF ERROR CODES/MESSAGES *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ + /*************************************************************************/ + /* */ + /* <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. */ + /* */ + /*************************************************************************/ - /* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */ - /* including this file. */ - + /*************************************************************************/ + /* */ + /* <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/include/freetype/fterrors.h b/freetype/include/freetype/fterrors.h similarity index 54% rename from include/freetype/fterrors.h rename to freetype/include/freetype/fterrors.h index 6600dadd..f6ee5c24 100644 --- a/include/freetype/fterrors.h +++ b/freetype/include/freetype/fterrors.h @@ -4,7 +4,7 @@ /* */ /* FreeType error code handling (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2004, 2007 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,71 +18,98 @@ /*************************************************************************/ /* */ - /* 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. */ + /* <Section> */ + /* error_enumerations */ /* */ - /* I - Error Formats */ - /* ----------------- */ + /* <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 */ + /* 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. */ + /* with standard builds of FreeType~2, however). See the file */ + /* `ftmoderr.h' for more details. */ /* */ + /* *Error* *Message* *Strings* */ /* */ - /* 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). */ + /* 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: */ + /* this file. */ + /* */ + /* { */ + /* FT_ERROR_START_LIST */ + /* } */ /* */ - /* 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). */ + /* 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. FT_Err_Invalid_Argument). */ - /* `v' is the error numerical value. */ - /* `s' is the corresponding error string. */ + /* { */ + /* FT_ERROR_DEF( e, v, s ) */ + /* } */ /* */ - /* FT_ERROR_END_LIST :: */ - /* This macro ends the list. */ + /* 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. */ /* */ - /* Additionally, you have to undefine __FTERRORS_H__ before #including */ + /* { */ + /* 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: */ + /* 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 */ /* { */ - /* #undef __FTERRORS_H__ */ - /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ - /* #define FT_ERROR_START_LIST { */ - /* #define FT_ERROR_END_LIST { 0, 0 } }; */ + /* int err_code; */ + /* const char* err_msg; */ + /* } ft_errors[] = */ /* */ - /* const struct */ - /* { */ - /* int err_code; */ - /* const char* err_msg; */ - /* } ft_errors[] = */ + /* #include FT_ERRORS_H */ + /* } */ /* */ - /* #include FT_ERRORS_H */ - /* } */ + /* Note that `FT_Err_Ok' is _not_ defined with `FT_ERRORDEF' but with */ + /* `FT_NOERRORDEF'; it is always zero. */ /* */ /*************************************************************************/ - -#ifndef __FTERRORS_H__ + /* */ + + /* 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__ @@ -101,12 +128,6 @@ #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_'. */ @@ -150,11 +171,11 @@ /* this macro is used to define an error */ -#define FT_ERRORDEF_( e, v, s ) \ +#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 ) \ +#define FT_NOERRORDEF_( e, v, s ) \ FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) @@ -192,15 +213,14 @@ #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 + /* FT_ERR_PREFIX is needed internally */ +#ifndef FT2_BUILD_LIBRARY #undef FT_ERR_PREFIX #endif -#endif /* __FTERRORS_H__ */ +#endif /* !(FTERRORS_H_ && __FTERRORS_H__) */ /* END */ diff --git a/include/freetype/ftxf86.h b/freetype/include/freetype/ftfntfmt.h similarity index 77% rename from include/freetype/ftxf86.h rename to freetype/include/freetype/ftfntfmt.h index ea82abb0..cc86efac 100644 --- a/include/freetype/ftxf86.h +++ b/freetype/include/freetype/ftfntfmt.h @@ -1,10 +1,10 @@ /***************************************************************************/ /* */ -/* ftxf86.h */ +/* ftfntfmt.h */ /* */ -/* Support functions for X11. */ +/* Support functions for font formats. */ /* */ -/* Copyright 2002, 2003, 2004, 2006, 2007 by */ +/* Copyright 2002-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTXF86_H__ -#define __FTXF86_H__ +#ifndef FTFNTFMT_H_ +#define FTFNTFMT_H_ #include <ft2build.h> #include FT_FREETYPE_H @@ -55,13 +55,14 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* <Function> */ - /* FT_Get_X11_Font_Format */ + /* FT_Get_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'. */ + /* 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 :: */ @@ -70,11 +71,25 @@ FT_BEGIN_HEADER /* <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 /* __FTXF86_H__ */ +#endif /* FTFNTFMT_H_ */ + + +/* END */ diff --git a/include/freetype/ftgasp.h b/freetype/include/freetype/ftgasp.h similarity index 66% rename from include/freetype/ftgasp.h rename to freetype/include/freetype/ftgasp.h index 97cd3301..fc1248ff 100644 --- a/include/freetype/ftgasp.h +++ b/freetype/include/freetype/ftgasp.h @@ -4,7 +4,7 @@ /* */ /* Access of TrueType's `gasp' table (specification). */ /* */ -/* Copyright 2007 by */ +/* Copyright 2007-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,12 +16,22 @@ /***************************************************************************/ -#ifndef _FT_GASP_H_ -#define _FT_GASP_H_ +#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: @@ -31,11 +41,11 @@ * Gasp Table * * @abstract: - * Retrieving TrueType `gasp' table entries + * Retrieving TrueType `gasp' table entries. * * @description: * The function @FT_Get_Gasp can be used to query a TrueType or OpenType - * font for specific entries in their `gasp' table, if any. This is + * 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. */ @@ -56,18 +66,26 @@ * * FT_GASP_DO_GRIDFIT :: * Grid-fitting and hinting should be performed at the specified ppem. - * This *really* means TrueType bytecode interpretation. + * 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 :: - * Smoothing along multiple axes must be used with ClearType. + * 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. * @@ -77,8 +95,8 @@ #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 -#define FT_GASP_SYMMETRIC_GRIDFIT 0x10 /************************************************************************* @@ -87,17 +105,25 @@ * 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. + * 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 is there is no + * 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 */ @@ -105,9 +131,12 @@ FT_Get_Gasp( FT_Face face, FT_UInt ppem ); -/* */ + /* */ + + +FT_END_HEADER -#endif /* _FT_GASP_H_ */ +#endif /* FTGASP_H_ */ /* END */ diff --git a/include/freetype/ftglyph.h b/freetype/include/freetype/ftglyph.h similarity index 85% rename from include/freetype/ftglyph.h rename to freetype/include/freetype/ftglyph.h index 08058dad..5f3fc009 100644 --- a/include/freetype/ftglyph.h +++ b/freetype/include/freetype/ftglyph.h @@ -4,7 +4,7 @@ /* */ /* FreeType convenience functions to handle glyphs (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2006 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -29,8 +29,8 @@ /*************************************************************************/ -#ifndef __FTGLYPH_H__ -#define __FTGLYPH_H__ +#ifndef FTGLYPH_H_ +#define FTGLYPH_H_ #include <ft2build.h> @@ -94,7 +94,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* The root glyph structure contains a given glyph image plus its */ - /* advance width in 16.16 fixed float format. */ + /* advance width in 16.16 fixed-point format. */ /* */ /* <Fields> */ /* library :: A handle to the FreeType library object. */ @@ -145,7 +145,7 @@ FT_BEGIN_HEADER /* */ /* 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. This distance is positive for upwards~y! */ /* */ /* bitmap :: A descriptor for the bitmap. */ /* */ @@ -194,7 +194,7 @@ FT_BEGIN_HEADER /* outline :: A descriptor for the outline. */ /* */ /* <Note> */ - /* You can typecast a @FT_Glyph to @FT_OutlineGlyph if you have */ + /* 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. */ /* */ @@ -219,7 +219,8 @@ FT_BEGIN_HEADER /* FT_Get_Glyph */ /* */ /* <Description> */ - /* A function used to extract a glyph image from a slot. */ + /* 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. */ @@ -228,7 +229,13 @@ FT_BEGIN_HEADER /* aglyph :: A handle to the glyph object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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, @@ -248,11 +255,11 @@ FT_BEGIN_HEADER /* source :: A handle to the source glyph object. */ /* */ /* <Output> */ - /* target :: A handle to the target glyph object. 0 in case of */ + /* target :: A handle to the target glyph object. 0~in case of */ /* error. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Glyph_Copy( FT_Glyph source, @@ -265,7 +272,7 @@ FT_BEGIN_HEADER /* FT_Glyph_Transform */ /* */ /* <Description> */ - /* Transforms a glyph image if its format is scalable. */ + /* Transform a glyph image if its format is scalable. */ /* */ /* <InOut> */ /* glyph :: A handle to the target glyph object. */ @@ -324,22 +331,8 @@ FT_BEGIN_HEADER } 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. */ - /* */ + /* 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 @@ -354,20 +347,20 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* Return a glyph's `control box'. The control box encloses all the */ - /* outline's points, including Bézier control points. Though it */ + /* outline's points, including Bezier control points. Though it */ /* coincides with the exact bounding box for most glyphs, it can be */ /* slightly larger in some situations (like when rotating an outline */ - /* which contains Bézier outside arcs). */ + /* 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. */ + /* `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 */ + /* mode :: The mode that indicates how to interpret the returned */ /* bounding box values. */ /* */ /* <Output> */ @@ -375,7 +368,7 @@ FT_BEGIN_HEADER /* expressed in 1/64th of pixels if it is grid-fitted. */ /* */ /* <Note> */ - /* Coordinates are relative to the glyph origin, using the Y-upwards */ + /* 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' */ @@ -383,6 +376,13 @@ FT_BEGIN_HEADER /* 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: */ @@ -421,17 +421,17 @@ FT_BEGIN_HEADER /* FT_Glyph_To_Bitmap */ /* */ /* <Description> */ - /* Converts a given glyph object to a bitmap glyph object. */ + /* 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 describe how the data is */ + /* 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 */ + /* image before rendering. Can be~0 (if no */ /* translation). The origin is expressed in */ /* 26.6 pixels. */ /* */ @@ -440,15 +440,17 @@ FT_BEGIN_HEADER /* never destroyed in case of error. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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. Typically, you would use (omitting */ - /* error handling): */ + /* be _replaced_ by this function (with newly allocated data). */ + /* Typically, you would use (omitting error handling): */ /* */ /* */ /* { */ @@ -457,17 +459,17 @@ FT_BEGIN_HEADER /* */ /* */ /* // load glyph */ - /* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */ + /* 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 + destroy old) */ + /* // 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_DEFAULT, */ + /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */ /* 0, 1 ); */ - /* if ( error ) // glyph unchanged */ + /* if ( error ) // `glyph' unchanged */ /* ... */ /* } */ /* */ @@ -482,7 +484,42 @@ FT_BEGIN_HEADER /* } */ /* */ /* */ - /* This function does nothing if the glyph format isn't scalable. */ + /* Here another example, again without error handling: */ + /* */ + /* */ + /* { */ + /* FT_Glyph glyphs[MAX_GLYPHS] */ + /* */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */ + /* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* { */ + /* FT_Glyph bitmap = glyphs[idx]; */ + /* */ + /* */ + /* ... */ + /* */ + /* // after this call, `bitmap' no longer points into */ + /* // the `glyphs' array (and the old value isn't destroyed) */ + /* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */ + /* */ + /* ... */ + /* */ + /* FT_Done_Glyph( bitmap ); */ + /* } */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* FT_Done_Glyph( glyphs[idx] ); */ + /* } */ /* */ FT_EXPORT( FT_Error ) FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, @@ -497,7 +534,7 @@ FT_BEGIN_HEADER /* FT_Done_Glyph */ /* */ /* <Description> */ - /* Destroys a given glyph. */ + /* Destroy a given glyph. */ /* */ /* <Input> */ /* glyph :: A handle to the target glyph object. */ @@ -524,7 +561,7 @@ FT_BEGIN_HEADER /* FT_Matrix_Multiply */ /* */ /* <Description> */ - /* Performs the matrix operation `b = a*b'. */ + /* Perform the matrix operation `b = a*b'. */ /* */ /* <Input> */ /* a :: A pointer to matrix `a'. */ @@ -535,9 +572,12 @@ FT_BEGIN_HEADER /* <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 ); + FT_Matrix* b ); /*************************************************************************/ @@ -546,25 +586,24 @@ FT_BEGIN_HEADER /* FT_Matrix_Invert */ /* */ /* <Description> */ - /* Inverts a 2x2 matrix. Returns an error if it can't be inverted. */ + /* 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. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Matrix_Invert( FT_Matrix* matrix ); - /* */ FT_END_HEADER -#endif /* __FTGLYPH_H__ */ +#endif /* FTGLYPH_H_ */ /* END */ diff --git a/include/freetype/ftgxval.h b/freetype/include/freetype/ftgxval.h similarity index 87% rename from include/freetype/ftgxval.h rename to freetype/include/freetype/ftgxval.h index c7ea861a..8382d599 100644 --- a/include/freetype/ftgxval.h +++ b/freetype/include/freetype/ftgxval.h @@ -4,7 +4,7 @@ /* */ /* FreeType API for validating TrueTypeGX/AAT tables (specification). */ /* */ -/* Copyright 2004, 2005, 2006 by */ +/* Copyright 2004-2018 by */ /* Masatake YAMATO, Redhat K.K, */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ @@ -25,8 +25,8 @@ /***************************************************************************/ -#ifndef __FTGXVAL_H__ -#define __FTGXVAL_H__ +#ifndef FTGXVAL_H_ +#define FTGXVAL_H_ #include <ft2build.h> #include FT_FREETYPE_H @@ -57,9 +57,19 @@ FT_BEGIN_HEADER /* 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 */ + /* */ /*************************************************************************/ - /*************************************************************************/ /* */ /* */ @@ -91,15 +101,15 @@ FT_BEGIN_HEADER * 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) +#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 ) +#define FT_VALIDATE_GX_START 0x4000 +#define FT_VALIDATE_GX_BITFIELD( tag ) \ + ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) /********************************************************************** @@ -171,8 +181,6 @@ FT_BEGIN_HEADER FT_VALIDATE_lcar ) - /* */ - /********************************************************************** * * @function: @@ -180,7 +188,7 @@ FT_BEGIN_HEADER * * @description: * Validate various TrueTypeGX tables to assure that all offsets and - * indices are valid. The idea is that a higher-level library which + * 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). * @@ -189,7 +197,7 @@ FT_BEGIN_HEADER * A handle to the input face. * * validation_flags :: - * A bit field which specifies the tables to be validated. See + * A bit field that specifies the tables to be validated. See * @FT_VALIDATE_GXXXX for possible values. * * table_length :: @@ -202,7 +210,7 @@ FT_BEGIN_HEADER * The array itself must be allocated by a client. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function only works with TrueTypeGX fonts, returning an error @@ -221,8 +229,6 @@ FT_BEGIN_HEADER FT_UInt table_length ); - /* */ - /********************************************************************** * * @function: @@ -248,8 +254,6 @@ FT_BEGIN_HEADER FT_Bytes table ); - /* */ - /********************************************************************** * * @enum: @@ -277,29 +281,27 @@ FT_BEGIN_HEADER #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 + * 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 32bit format and the classic 16bit format, while - * FT_ClassicKern_Validate only supports the classic 16bit format. + * 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 which specifies the dialect to be validated. See + * A bit field that specifies the dialect to be validated. See * @FT_VALIDATE_CKERNXXX for possible values. * * @output: @@ -307,7 +309,7 @@ FT_BEGIN_HEADER * A pointer to the kern table. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * After use, the application should deallocate the buffers pointed to by @@ -320,8 +322,6 @@ FT_BEGIN_HEADER FT_Bytes *ckern_table ); - /* */ - /********************************************************************** * * @function: @@ -346,13 +346,12 @@ FT_BEGIN_HEADER FT_ClassicKern_Free( FT_Face face, FT_Bytes table ); - - /* */ + /* */ FT_END_HEADER -#endif /* __FTGXVAL_H__ */ +#endif /* FTGXVAL_H_ */ /* END */ diff --git a/freetype/include/freetype/ftgzip.h b/freetype/include/freetype/ftgzip.h new file mode 100644 index 00000000..db033da0 --- /dev/null +++ b/freetype/include/freetype/ftgzip.h @@ -0,0 +1,151 @@ +/***************************************************************************/ +/* */ +/* ftgzip.h */ +/* */ +/* Gzip-compressed stream support. */ +/* */ +/* Copyright 2002-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#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/include/freetype/ftimage.h b/freetype/include/freetype/ftimage.h similarity index 76% rename from include/freetype/ftimage.h rename to freetype/include/freetype/ftimage.h index 1c428f11..79ede195 100644 --- a/include/freetype/ftimage.h +++ b/freetype/include/freetype/ftimage.h @@ -5,7 +5,7 @@ /* FreeType glyph image formats and default raster interface */ /* (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -24,12 +24,12 @@ /*************************************************************************/ -#ifndef __FTIMAGE_H__ -#define __FTIMAGE_H__ +#ifndef FTIMAGE_H_ +#define FTIMAGE_H_ -/* _STANDALONE_ is from ftgrays.c */ -#ifndef _STANDALONE_ + /* STANDALONE_ is from ftgrays.c */ +#ifndef STANDALONE_ #include <ft2build.h> #endif @@ -51,10 +51,9 @@ FT_BEGIN_HEADER /* 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. */ + /* 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; @@ -99,6 +98,20 @@ FT_BEGIN_HEADER /* */ /* 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; @@ -119,41 +132,51 @@ FT_BEGIN_HEADER /* */ /* <Values> */ /* FT_PIXEL_MODE_NONE :: */ - /* Value 0 is reserved. */ + /* Value~0 is reserved. */ /* */ /* FT_PIXEL_MODE_MONO :: */ - /* A monochrome bitmap, using 1 bit per pixel. Note that pixels */ + /* 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). */ + /* 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/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. */ + /* 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/pixel bitmap, used to represent embedded anti-aliased */ + /* 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, 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 */ + /* 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, 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 */ + /* 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, @@ -163,73 +186,21 @@ FT_BEGIN_HEADER 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; - /*************************************************************************/ - /* */ - /* <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. */ - /* */ + /* 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 - /* */ - -#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 - /*************************************************************************/ /* */ @@ -253,6 +224,21 @@ FT_BEGIN_HEADER /* 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. */ @@ -272,20 +258,15 @@ FT_BEGIN_HEADER /* 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; + unsigned int rows; + unsigned int width; int pitch; unsigned char* buffer; - short num_grays; - char pixel_mode; - char palette_mode; + unsigned short num_grays; + unsigned char pixel_mode; + unsigned char palette_mode; void* palette; } FT_Bitmap; @@ -317,14 +298,23 @@ FT_BEGIN_HEADER /* 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. */ + /* each outline point's type. */ /* */ - /* Bit 1 is meaningful for `off' points only. If set, */ - /* it indicates a third-order Bézier arc control point; */ + /* 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 */ @@ -333,7 +323,13 @@ FT_BEGIN_HEADER /* */ /* 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. */ + /* 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_ { @@ -348,94 +344,100 @@ FT_BEGIN_HEADER } 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_FLAGS */ + /* FT_OUTLINE_XXX */ /* */ /* <Description> */ /* A list of bit-field constants use for the flags in an outline's */ /* `flags' field. */ /* */ /* <Values> */ - /* FT_OUTLINE_NONE :: Value 0 is reserved. */ - /* */ - /* FT_OUTLINE_OWNER :: If set, this flag indicates that the */ - /* outline's field arrays (i.e., */ - /* `points', `flags' & `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. */ + /* 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 - /************************************************************************* - * - * @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. - */ + /* 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 @@ -448,21 +450,24 @@ FT_BEGIN_HEADER #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_ON 1 +#define FT_CURVE_TAG_CONIC 0 +#define FT_CURVE_TAG_CUBIC 2 + +#define FT_CURVE_TAG_HAS_SCANMODE 4 -#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */ -#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */ +#define FT_CURVE_TAG_TOUCH_X 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_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 -#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 /*************************************************************************/ /* */ @@ -478,11 +483,11 @@ FT_BEGIN_HEADER /* <Input> */ /* to :: A pointer to the target point of the `move to'. */ /* */ - /* user :: A typeless pointer which is passed from the caller of the */ + /* user :: A typeless pointer, which is passed from the caller of the */ /* decomposition function. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ typedef int (*FT_Outline_MoveToFunc)( const FT_Vector* to, @@ -490,6 +495,7 @@ FT_BEGIN_HEADER #define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc + /*************************************************************************/ /* */ /* <FuncType> */ @@ -504,17 +510,18 @@ FT_BEGIN_HEADER /* <Input> */ /* to :: A pointer to the target point of the `line to'. */ /* */ - /* user :: A typeless pointer which is passed from the caller of the */ + /* user :: A typeless pointer, which is passed from the caller of the */ /* decomposition function. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ typedef int (*FT_Outline_LineToFunc)( const FT_Vector* to, void* user ); -#define FT_Outline_LineTo_Func FT_Outline_LineToFunc +#define FT_Outline_LineTo_Func FT_Outline_LineToFunc + /*************************************************************************/ /* */ @@ -522,10 +529,10 @@ FT_BEGIN_HEADER /* FT_Outline_ConicToFunc */ /* */ /* <Description> */ - /* A function pointer type use to describe the signature of a `conic */ - /* to' function during outline walking/decomposition. */ + /* 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 Bézier arc in */ + /* A `conic to' is emitted to indicate a second-order Bezier arc in */ /* the outline. */ /* */ /* <Input> */ @@ -534,18 +541,19 @@ FT_BEGIN_HEADER /* */ /* to :: A pointer to the target end point of the conic arc. */ /* */ - /* user :: A typeless pointer which is passed from the caller of */ + /* user :: A typeless pointer, which is passed from the caller of */ /* the decomposition function. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* 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 +#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc + /*************************************************************************/ /* */ @@ -554,22 +562,22 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* A function pointer type used to describe the signature of a `cubic */ - /* to' function during outline walking/decomposition. */ + /* to' function during outline walking or decomposition. */ /* */ - /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ + /* A `cubic to' is emitted to indicate a third-order Bezier arc. */ /* */ /* <Input> */ - /* control1 :: A pointer to the first Bézier control point. */ + /* control1 :: A pointer to the first Bezier control point. */ /* */ - /* control2 :: A pointer to the second Bézier 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 */ + /* user :: A typeless pointer, which is passed from the caller of */ /* the decomposition function. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ typedef int (*FT_Outline_CubicToFunc)( const FT_Vector* control1, @@ -577,7 +585,7 @@ FT_BEGIN_HEADER const FT_Vector* to, void* user ); -#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc +#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc /*************************************************************************/ @@ -587,17 +595,16 @@ FT_BEGIN_HEADER /* */ /* <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. */ + /* 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 Bézier arc emitter. */ + /* conic_to :: The second-order Bezier arc emitter. */ /* */ - /* cubic_to :: The third-order Bézier 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. */ @@ -612,10 +619,10 @@ FT_BEGIN_HEADER /* */ /* { */ /* x' = (x << shift) - delta */ - /* y' = (x << shift) - delta */ + /* y' = (y << shift) - delta */ /* } */ /* */ - /* Set the value of `shift' and `delta' to 0 to get the original */ + /* Set the values of `shift' and `delta' to~0 to get the original */ /* point coordinates. */ /* */ typedef struct FT_Outline_Funcs_ @@ -648,7 +655,7 @@ FT_BEGIN_HEADER /* This macro converts four-letter tags to an unsigned long type. */ /* */ /* <Note> */ - /* Since many 16bit compilers don't like 32bit enumerations, you */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ /* should redefine this macro in case of problems to something like */ /* this: */ /* */ @@ -680,7 +687,7 @@ FT_BEGIN_HEADER /* */ /* <Values> */ /* FT_GLYPH_FORMAT_NONE :: */ - /* The value 0 is reserved. */ + /* The value~0 is reserved. */ /* */ /* FT_GLYPH_FORMAT_COMPOSITE :: */ /* The glyph image is a composite of several other images. This */ @@ -694,13 +701,13 @@ FT_BEGIN_HEADER /* */ /* 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 */ + /* 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, */ + /* 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. */ @@ -717,22 +724,8 @@ FT_BEGIN_HEADER } 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. */ - /* */ + /* 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 @@ -754,11 +747,11 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* A raster is a scan converter, in charge of rendering an outline into */ - /* a a bitmap. This section contains the public API for rasters. */ + /* 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. */ + /* specific modules called `renderers'. See `ftrender.h' for more */ + /* details on renderers. */ /* */ /*************************************************************************/ @@ -777,6 +770,21 @@ FT_BEGIN_HEADER /* <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 */ + /* */ /*************************************************************************/ @@ -786,8 +794,8 @@ FT_BEGIN_HEADER /* 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. */ + /* 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; @@ -798,8 +806,8 @@ FT_BEGIN_HEADER /* FT_Span */ /* */ /* <Description> */ - /* A structure used to model a single span of gray (or black) pixels */ - /* when rendering a monochrome or anti-aliased bitmap. */ + /* 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. */ @@ -807,15 +815,15 @@ FT_BEGIN_HEADER /* 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. */ + /* to 255 (foreground). */ /* */ /* <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. */ + /* @FT_SpanFunc that takes the y~coordinate of the span as a */ + /* parameter. */ /* */ - /* The coverage value is always between 0 and 255. */ + /* 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_ { @@ -837,7 +845,7 @@ FT_BEGIN_HEADER /* spans on each scan line. */ /* */ /* <Input> */ - /* y :: The scanline's y-coordinate. */ + /* y :: The scanline's y~coordinate. */ /* */ /* count :: The number of spans to draw on this scanline. */ /* */ @@ -852,23 +860,13 @@ FT_BEGIN_HEADER /* 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 +#define FT_Raster_Span_Func FT_SpanFunc /*************************************************************************/ @@ -877,22 +875,7 @@ FT_BEGIN_HEADER /* 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. */ + /* Deprecated, unimplemented. */ /* */ typedef int (*FT_Raster_BitTest_Func)( int y, @@ -906,21 +889,7 @@ FT_BEGIN_HEADER /* 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. */ + /* Deprecated, unimplemented. */ /* */ typedef void (*FT_Raster_BitSet_Func)( int y, @@ -954,8 +923,8 @@ FT_BEGIN_HEADER /* pixmap's buffer _must_ be zeroed before */ /* rendering. */ /* */ - /* Note that for now, direct rendering is */ - /* only possible with anti-aliased glyphs. */ + /* 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 */ @@ -973,7 +942,8 @@ FT_BEGIN_HEADER #define FT_RASTER_FLAG_DIRECT 0x2 #define FT_RASTER_FLAG_CLIP 0x4 - /* deprecated */ + /* 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 @@ -999,11 +969,11 @@ FT_BEGIN_HEADER /* */ /* gray_spans :: The gray span drawing callback. */ /* */ - /* black_spans :: The black span drawing callback. */ + /* black_spans :: Unused. */ /* */ - /* bit_test :: The bit test callback. UNIMPLEMENTED! */ + /* bit_test :: Unused. */ /* */ - /* bit_set :: The bit set callback. UNIMPLEMENTED! */ + /* bit_set :: Unused. */ /* */ /* user :: User-supplied data that is passed to each drawing */ /* callback. */ @@ -1020,15 +990,9 @@ FT_BEGIN_HEADER /* */ /* 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. */ + /* 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_ { @@ -1036,9 +1000,9 @@ FT_BEGIN_HEADER 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! */ + 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; @@ -1060,7 +1024,7 @@ FT_BEGIN_HEADER /* raster :: A handle to the new raster object. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ /* <Note> */ /* The `memory' parameter is a typeless pointer in order to avoid */ @@ -1073,7 +1037,8 @@ FT_BEGIN_HEADER (*FT_Raster_NewFunc)( void* memory, FT_Raster* raster ); -#define FT_Raster_New_Func FT_Raster_NewFunc +#define FT_Raster_New_Func FT_Raster_NewFunc + /*************************************************************************/ /* */ @@ -1089,7 +1054,8 @@ FT_BEGIN_HEADER typedef void (*FT_Raster_DoneFunc)( FT_Raster raster ); -#define FT_Raster_Done_Func FT_Raster_DoneFunc +#define FT_Raster_Done_Func FT_Raster_DoneFunc + /*************************************************************************/ /* */ @@ -1097,33 +1063,33 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 each time the render pool changes, or just */ - /* after a new raster object is created. */ + /* This function is called 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_base :: Previously, the address in memory of the render pool. */ + /* Set this to NULL. */ /* */ - /* pool_size :: The size in bytes of the render pool. */ + /* pool_size :: Previously, the size in bytes of the render pool. */ + /* Set this to 0. */ /* */ /* <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. */ + /* 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 +#define FT_Raster_Reset_Func FT_Raster_ResetFunc + /*************************************************************************/ /* */ @@ -1148,7 +1114,8 @@ FT_BEGIN_HEADER unsigned long mode, void* args ); -#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc +#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc + /*************************************************************************/ /* */ @@ -1156,8 +1123,8 @@ FT_BEGIN_HEADER /* FT_Raster_RenderFunc */ /* */ /* <Description> */ - /* Invokes a given raster to scan-convert a given glyph image into a */ - /* target bitmap. */ + /* Invoke a given raster to scan-convert a given glyph image into a */ + /* target bitmap. */ /* */ /* <Input> */ /* raster :: A handle to the raster object. */ @@ -1166,7 +1133,7 @@ FT_BEGIN_HEADER /* store the rendering parameters. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ /* <Note> */ /* The exact format of the source image depends on the raster's glyph */ @@ -1181,14 +1148,15 @@ FT_BEGIN_HEADER /* 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 */ + /* for examples of distinct implementations that support direct */ /* composition). */ /* */ typedef int (*FT_Raster_RenderFunc)( FT_Raster raster, const FT_Raster_Params* params ); -#define FT_Raster_Render_Func FT_Raster_RenderFunc +#define FT_Raster_Render_Func FT_Raster_RenderFunc + /*************************************************************************/ /* */ @@ -1211,22 +1179,22 @@ FT_BEGIN_HEADER /* */ 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_Glyph_Format glyph_format; - } FT_Raster_Funcs; + 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__ */ +#endif /* FTIMAGE_H_ */ /* END */ diff --git a/freetype/include/freetype/ftincrem.h b/freetype/include/freetype/ftincrem.h new file mode 100644 index 00000000..44619f94 --- /dev/null +++ b/freetype/include/freetype/ftincrem.h @@ -0,0 +1,343 @@ +/***************************************************************************/ +/* */ +/* ftincrem.h */ +/* */ +/* FreeType incremental loading (specification). */ +/* */ +/* Copyright 2002-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#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/freetype/include/freetype/ftlcdfil.h b/freetype/include/freetype/ftlcdfil.h new file mode 100644 index 00000000..2a27196c --- /dev/null +++ b/freetype/include/freetype/ftlcdfil.h @@ -0,0 +1,309 @@ +/***************************************************************************/ +/* */ +/* ftlcdfil.h */ +/* */ +/* FreeType API for color filtering of subpixel bitmap glyphs */ +/* (specification). */ +/* */ +/* Copyright 2006-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#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_filtering + * + * @title: + * LCD Filtering + * + * @abstract: + * Reduce color fringes of subpixel-rendered bitmaps. + * + * @description: + * Should you #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your + * `ftoption.h', which enables patented ClearType-style rendering, + * the LCD-optimized glyph bitmaps should be filtered to reduce color + * fringes inherent to this technology. The default FreeType LCD + * rendering uses different technology, and API described below, + * although available, does nothing. + * + * ClearType-style LCD rendering exploits the color-striped structure of + * LCD pixels, increasing the available resolution in the direction of + * the stripe (usually horizontal RGB) by a factor of~3. Since these + * subpixels are color pixels, using them unfiltered creates severe + * color fringes. Use the @FT_Library_SetLcdFilter API to specify a + * low-pass filter, which is then applied to subpixel-rendered bitmaps + * generated through @FT_Render_Glyph. The filter sacrifices some of + * the higher resolution to reduce color fringes, making the glyph image + * slightly blurrier. Positional improvements will remain. + * + * A filter should have two properties: + * + * 1) It should be normalized, meaning the sum of the 5~components + * should be 256 (0x100). It is possible to go above or under this + * target sum, however: going under means tossing out contrast, going + * over means invoking clamping and thereby non-linearities that + * increase contrast somewhat at the expense of greater distortion + * and color-fringing. Contrast is better enhanced through stem + * darkening. + * + * 2) It should be color-balanced, meaning a filter `{~a, b, c, b, a~}' + * where a~+ b~=~c. It distributes the computed coverage for one + * subpixel to all subpixels equally, sacrificing some won resolution + * but drastically reducing color-fringing. Positioning improvements + * remain! Note that color-fringing can only really be minimized + * when using a color-balanced filter and alpha-blending the glyph + * onto a surface in linear space; see @FT_Render_Glyph. + * + * Regarding the form, a filter can be a `boxy' filter or a `beveled' + * filter. Boxy filters are sharper but are less forgiving of non-ideal + * gamma curves of a screen (viewing angles!), beveled filters are + * fuzzier but more tolerant. + * + * Examples: + * + * - [0x10 0x40 0x70 0x40 0x10] is beveled and neither balanced nor + * normalized. + * + * - [0x1A 0x33 0x4D 0x33 0x1A] is beveled and balanced but not + * normalized. + * + * - [0x19 0x33 0x66 0x4c 0x19] is beveled and normalized but not + * balanced. + * + * - [0x00 0x4c 0x66 0x4c 0x00] is boxily beveled and normalized but not + * balanced. + * + * - [0x00 0x55 0x56 0x55 0x00] is boxy, normalized, and almost + * balanced. + * + * - [0x08 0x4D 0x56 0x4D 0x08] is beveled, normalized and, almost + * balanced. + * + * The filter affects glyph bitmaps rendered through @FT_Render_Glyph, + * @FT_Load_Glyph, and @FT_Load_Char. It does _not_ affect the output + * of @FT_Outline_Render and @FT_Outline_Get_Bitmap. + * + * If this feature is activated, the dimensions of LCD glyph bitmaps are + * either wider or taller than the dimensions of the corresponding + * outline with regard to the pixel grid. For example, for + * @FT_RENDER_MODE_LCD, the filter adds 3~subpixels to the left, and + * 3~subpixels to the right. The bitmap offset values are adjusted + * accordingly, so clients shouldn't need to modify their layout and + * glyph positioning code when enabling the filter. + * + * It is important to understand that linear alpha blending and gamma + * correction is critical for correctly rendering glyphs onto surfaces + * without artifacts and even more critical when subpixel rendering is + * involved. + * + * Each of the 3~alpha values (subpixels) is independently used to blend + * one color channel. That is, red alpha blends the red channel of the + * text color with the red channel of the background pixel. The + * distribution of density values by the color-balanced filter assumes + * alpha blending is done in linear space; only then color artifacts + * cancel out. + */ + + + /**************************************************************************** + * + * @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 :: + * The default filter reduces color fringes considerably, at the cost + * of a slight blurriness in the output. + * + * It is a beveled, normalized, and color-balanced five-tap filter + * that is more forgiving to screens with non-ideal gamma curves and + * viewing angles. Note that while color-fringing is reduced, it can + * only be minimized by using linear alpha blending and gamma + * correction to render glyphs onto surfaces. The default filter + * weights are [0x08 0x4D 0x56 0x4D 0x08]. + * + * FT_LCD_FILTER_LIGHT :: + * The light filter is a variant that is sharper at the cost of + * slightly more color fringes than the default one. + * + * It is a boxy, normalized, and color-balanced three-tap filter that + * is less forgiving to screens with non-ideal gamma curves and + * viewing angles. This filter works best when the rendering system + * uses linear alpha blending and gamma correction to render glyphs + * onto surfaces. The light filter weights are + * [0x00 0x55 0x56 0x55 0x00]. + * + * 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. + * + * FT_LCD_FILTER_LEGACY1 :: + * For historical reasons, the FontConfig library returns a different + * enumeration value for legacy LCD filtering. To make code work that + * (incorrectly) forwards FontConfig's enumeration value to + * @FT_Library_SetLcdFilter without proper mapping, it is thus easiest + * to have another enumeration value, which is completely equal to + * `FT_LCD_FILTER_LEGACY'. + * + * @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; + + + /************************************************************************** + * + * @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. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilter( FT_Library library, + FT_LcdFilter filter ); + + + /************************************************************************** + * + * @func: + * 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. + * + * @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]; + + + /* */ + + +FT_END_HEADER + +#endif /* FTLCDFIL_H_ */ + + +/* END */ diff --git a/include/freetype/ftlist.h b/freetype/include/freetype/ftlist.h similarity index 91% rename from include/freetype/ftlist.h rename to freetype/include/freetype/ftlist.h index f3223ee8..117473b9 100644 --- a/include/freetype/ftlist.h +++ b/freetype/include/freetype/ftlist.h @@ -4,7 +4,7 @@ /* */ /* Generic list support for FreeType (specification). */ /* */ -/* Copyright 1996-2001, 2003, 2007 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -24,8 +24,8 @@ /*************************************************************************/ -#ifndef __FTLIST_H__ -#define __FTLIST_H__ +#ifndef FTLIST_H_ +#define FTLIST_H_ #include <ft2build.h> @@ -81,7 +81,7 @@ FT_BEGIN_HEADER /* FT_List_Find */ /* */ /* <Description> */ - /* Finds the list node for a given listed object. */ + /* Find the list node for a given listed object. */ /* */ /* <Input> */ /* list :: A pointer to the parent list. */ @@ -101,7 +101,7 @@ FT_BEGIN_HEADER /* FT_List_Add */ /* */ /* <Description> */ - /* Appends an element to the end of a list. */ + /* Append an element to the end of a list. */ /* */ /* <InOut> */ /* list :: A pointer to the parent list. */ @@ -118,7 +118,7 @@ FT_BEGIN_HEADER /* FT_List_Insert */ /* */ /* <Description> */ - /* Inserts an element at the head of a list. */ + /* Insert an element at the head of a list. */ /* */ /* <InOut> */ /* list :: A pointer to parent list. */ @@ -135,7 +135,7 @@ FT_BEGIN_HEADER /* FT_List_Remove */ /* */ /* <Description> */ - /* Removes a node from a list. This function doesn't check whether */ + /* Remove a node from a list. This function doesn't check whether */ /* the node is in the list! */ /* */ /* <Input> */ @@ -155,7 +155,7 @@ FT_BEGIN_HEADER /* FT_List_Up */ /* */ /* <Description> */ - /* Moves a node to the head/top of a list. Used to maintain LRU */ + /* Move a node to the head/top of a list. Used to maintain LRU */ /* lists. */ /* */ /* <InOut> */ @@ -173,7 +173,7 @@ FT_BEGIN_HEADER /* FT_List_Iterator */ /* */ /* <Description> */ - /* An FT_List iterator function which is called during a list parse */ + /* An FT_List iterator function that is called during a list parse */ /* by @FT_List_Iterate. */ /* */ /* <Input> */ @@ -193,14 +193,14 @@ FT_BEGIN_HEADER /* FT_List_Iterate */ /* */ /* <Description> */ - /* Parses a list and calls a given iterator function on each element. */ + /* 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 which is passed as the second */ + /* user :: A user-supplied field that is passed as the second */ /* argument to the iterator. */ /* */ /* <Return> */ @@ -218,7 +218,7 @@ FT_BEGIN_HEADER /* FT_List_Destructor */ /* */ /* <Description> */ - /* An @FT_List iterator function which is called during a list */ + /* An @FT_List iterator function that is called during a list */ /* finalization by @FT_List_Finalize to destroy all elements in a */ /* given list. */ /* */ @@ -242,32 +242,35 @@ FT_BEGIN_HEADER /* FT_List_Finalize */ /* */ /* <Description> */ - /* Destroys all elements in the list as well as the list itself. */ + /* 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. */ + /* of the list. Set this to NULL if not needed. */ /* */ - /* memory :: The current memory object which handles deallocation. */ + /* memory :: The current memory object that handles deallocation. */ /* */ - /* user :: A user-supplied field which is passed as the last */ + /* 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__ */ +#endif /* FTLIST_H_ */ /* END */ diff --git a/include/freetype/ftlzw.h b/freetype/include/freetype/ftlzw.h similarity index 95% rename from include/freetype/ftlzw.h rename to freetype/include/freetype/ftlzw.h index d950653e..1615912d 100644 --- a/include/freetype/ftlzw.h +++ b/freetype/include/freetype/ftlzw.h @@ -4,7 +4,7 @@ /* */ /* LZW-compressed stream support. */ /* */ -/* Copyright 2004, 2006 by */ +/* Copyright 2004-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTLZW_H__ -#define __FTLZW_H__ +#ifndef FTLZW_H_ +#define FTLZW_H_ #include <ft2build.h> #include FT_FREETYPE_H @@ -63,7 +63,7 @@ FT_BEGIN_HEADER * source :: The source stream. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * The source stream must be opened _before_ calling this function. @@ -88,12 +88,12 @@ FT_BEGIN_HEADER FT_Stream_OpenLZW( FT_Stream stream, FT_Stream source ); - /* */ + /* */ FT_END_HEADER -#endif /* __FTLZW_H__ */ +#endif /* FTLZW_H_ */ /* END */ diff --git a/include/freetype/ftmac.h b/freetype/include/freetype/ftmac.h similarity index 91% rename from include/freetype/ftmac.h rename to freetype/include/freetype/ftmac.h index 3c6fafe5..c1e497ca 100644 --- a/include/freetype/ftmac.h +++ b/freetype/include/freetype/ftmac.h @@ -4,7 +4,7 @@ /* */ /* Additional Mac-specific API. */ /* */ -/* Copyright 1996-2001, 2004, 2006, 2007 by */ +/* Copyright 1996-2018 by */ /* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,15 +18,15 @@ /***************************************************************************/ /* */ -/* 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. */ +/* 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__ +#ifndef FTMAC_H_ +#define FTMAC_H_ #include <ft2build.h> @@ -35,11 +35,12 @@ FT_BEGIN_HEADER -/* gcc-3.4.1 and later can warn about functions tagged as deprecated */ + /* 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)) +#if defined( __GNUC__ ) && \ + ( ( __GNUC__ >= 4 ) || \ + ( ( __GNUC__ == 3 ) && ( __GNUC_MINOR__ >= 1 ) ) ) +#define FT_DEPRECATED_ATTRIBUTE __attribute__(( deprecated )) #else #define FT_DEPRECATED_ATTRIBUTE #endif @@ -85,7 +86,7 @@ FT_BEGIN_HEADER /* aface :: A handle to a new face object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Notes> */ /* This function can be used to create @FT_Face objects from fonts */ @@ -100,7 +101,8 @@ FT_BEGIN_HEADER FT_New_Face_From_FOND( FT_Library library, Handle fond, FT_Long face_index, - FT_Face *aface ); + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; /*************************************************************************/ @@ -123,7 +125,7 @@ FT_BEGIN_HEADER /* @FT_New_Face_From_FSSpec. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_GetFile_From_Mac_Name( const char* fontName, @@ -151,7 +153,7 @@ FT_BEGIN_HEADER /* @FT_New_Face_From_FSSpec. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_GetFile_From_Mac_ATS_Name( const char* fontName, @@ -167,7 +169,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* Return a pathname of the disk file and face index for given font */ - /* name which is handled by ATS framework. */ + /* name that is handled by ATS framework. */ /* */ /* <Input> */ /* fontName :: Mac OS name of the font in ATS framework. */ @@ -182,13 +184,14 @@ FT_BEGIN_HEADER /* face_index :: Index of the face. For passing to @FT_New_Face. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; /*************************************************************************/ @@ -207,12 +210,12 @@ FT_BEGIN_HEADER /* spec :: FSSpec to the font file. */ /* */ /* face_index :: The index of the face within the resource. The */ - /* first face has index 0. */ + /* first face has index~0. */ /* <Output> */ /* aface :: A handle to a new face object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ @@ -242,12 +245,12 @@ FT_BEGIN_HEADER /* spec :: FSRef to the font file. */ /* */ /* face_index :: The index of the face within the resource. The */ - /* first face has index 0. */ + /* first face has index~0. */ /* <Output> */ /* aface :: A handle to a new face object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */ @@ -266,7 +269,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __FTMAC_H__ */ +#endif /* FTMAC_H_ */ /* END */ diff --git a/freetype/include/freetype/ftmm.h b/freetype/include/freetype/ftmm.h new file mode 100644 index 00000000..9948102c --- /dev/null +++ b/freetype/include/freetype/ftmm.h @@ -0,0 +1,638 @@ +/***************************************************************************/ +/* */ +/* ftmm.h */ +/* */ +/* FreeType Multiple Master font interface (specification). */ +/* */ +/* Copyright 1996-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#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 ); + + + /*************************************************************************/ + /* */ + /* <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/freetype/include/freetype/ftmodapi.h b/freetype/include/freetype/ftmodapi.h new file mode 100644 index 00000000..a6eb876e --- /dev/null +++ b/freetype/include/freetype/ftmodapi.h @@ -0,0 +1,711 @@ +/***************************************************************************/ +/* */ +/* ftmodapi.h */ +/* */ +/* FreeType modules public interface (specification). */ +/* */ +/* Copyright 1996-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#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. */ + /* */ + /* <Fields> */ + /* module_flags :: Bit flags describing the module. */ + /* */ + /* module_size :: The size of one module object/instance in */ + /* bytes. */ + /* */ + /* module_name :: The name of the module. */ + /* */ + /* module_version :: The version, as a 16.16 fixed number */ + /* (major.minor). */ + /* */ + /* module_requires :: The version of FreeType this module requires, */ + /* as a 16.16 fixed number (major.minor). Starts */ + /* at version 2.0, i.e., 0x20000. */ + /* */ + /* module_init :: The initializing function. */ + /* */ + /* module_done :: The finalizing function. */ + /* */ + /* get_interface :: The interface requesting function. */ + /* */ + 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 ); + + /* */ + + typedef void + (*FT_DebugHook_Func)( void* arg ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Debug_Hook */ + /* */ + /* <Description> */ + /* Set a debug hook function for debugging the interpreter of a font */ + /* format. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* hook_index :: The index of the debug hook. You should use the */ + /* values defined in `ftobjs.h', e.g., */ + /* `FT_DEBUG_HOOK_TRUETYPE'. */ + /* */ + /* debug_hook :: The function used to debug the interpreter. */ + /* */ + /* <Note> */ + /* Currently, four debug hook slots are available, but only two (for */ + /* the TrueType and the Type~1 interpreter) are defined. */ + /* */ + /* Since the internal headers of FreeType are no longer installed, */ + /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ + /* This is a bug and will be fixed in a forthcoming release. */ + /* */ + 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; + + + /************************************************************************** + * + * @func: + * 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/include/freetype/ftmoderr.h b/freetype/include/freetype/ftmoderr.h similarity index 52% rename from include/freetype/ftmoderr.h rename to freetype/include/freetype/ftmoderr.h index b0115dd0..e0fc1312 100644 --- a/include/freetype/ftmoderr.h +++ b/freetype/include/freetype/ftmoderr.h @@ -4,7 +4,7 @@ /* */ /* FreeType module error offsets (specification). */ /* */ -/* Copyright 2001, 2002, 2003, 2004, 2005 by */ +/* Copyright 2001-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,23 +18,63 @@ /*************************************************************************/ /* */ - /* This file is used to define the FreeType module error offsets. */ + /* This file is used to define the FreeType module error codes. */ /* */ - /* 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. */ + /* 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. */ /* */ - /* 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__ */ + /* #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 } }; */ @@ -48,14 +88,11 @@ /* #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__ +#ifndef FTMODERR_H_ +#define FTMODERR_H_ /*******************************************************************/ @@ -105,24 +142,26 @@ 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" ) + 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 @@ -149,7 +188,7 @@ #undef FT_NEED_EXTERN_C -#endif /* __FTMODERR_H__ */ +#endif /* FTMODERR_H_ */ /* END */ diff --git a/include/freetype/ftotval.h b/freetype/include/freetype/ftotval.h similarity index 84% rename from include/freetype/ftotval.h rename to freetype/include/freetype/ftotval.h index 7c488fdf..26731c2b 100644 --- a/include/freetype/ftotval.h +++ b/freetype/include/freetype/ftotval.h @@ -4,7 +4,7 @@ /* */ /* FreeType API for validating OpenType tables (specification). */ /* */ -/* Copyright 2004, 2005, 2006 by */ +/* Copyright 2004-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,8 +27,8 @@ /***************************************************************************/ -#ifndef __FTOTVAL_H__ -#define __FTOTVAL_H__ +#ifndef FTOTVAL_H_ +#define FTOTVAL_H_ #include <ft2build.h> #include FT_FREETYPE_H @@ -56,7 +56,13 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* This section contains the declaration of functions to validate */ - /* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF). */ + /* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). */ + /* */ + /* <Order> */ + /* FT_OpenType_Validate */ + /* FT_OpenType_Free */ + /* */ + /* FT_VALIDATE_OTXXX */ /* */ /*************************************************************************/ @@ -86,8 +92,11 @@ FT_BEGIN_HEADER * FT_VALIDATE_JSTF :: * Validate JSTF table. * + * FT_VALIDATE_MATH :: + * Validate MATH table. + * * FT_VALIDATE_OT :: - * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF). + * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). * */ #define FT_VALIDATE_BASE 0x0100 @@ -95,14 +104,14 @@ FT_BEGIN_HEADER #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 - - /* */ +#define FT_VALIDATE_OT ( FT_VALIDATE_BASE | \ + FT_VALIDATE_GDEF | \ + FT_VALIDATE_GPOS | \ + FT_VALIDATE_GSUB | \ + FT_VALIDATE_JSTF | \ + FT_VALIDATE_MATH ) /********************************************************************** * @@ -111,7 +120,7 @@ FT_BEGIN_HEADER * * @description: * Validate various OpenType tables to assure that all offsets and - * indices are valid. The idea is that a higher-level library which + * 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). * @@ -120,7 +129,7 @@ FT_BEGIN_HEADER * A handle to the input face. * * validation_flags :: - * A bit field which specifies the tables to be validated. See + * A bit field that specifies the tables to be validated. See * @FT_VALIDATE_OTXXX for possible values. * * @output: @@ -140,7 +149,7 @@ FT_BEGIN_HEADER * A pointer to the JSTF table. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function only works with OpenType fonts, returning an error @@ -160,8 +169,6 @@ FT_BEGIN_HEADER FT_Bytes *GSUB_table, FT_Bytes *JSTF_table ); - /* */ - /********************************************************************** * * @function: @@ -186,13 +193,12 @@ FT_BEGIN_HEADER FT_OpenType_Free( FT_Face face, FT_Bytes table ); - - /* */ + /* */ FT_END_HEADER -#endif /* __FTOTVAL_H__ */ +#endif /* FTOTVAL_H_ */ /* END */ diff --git a/include/freetype/ftoutln.h b/freetype/include/freetype/ftoutln.h similarity index 78% rename from include/freetype/ftoutln.h rename to freetype/include/freetype/ftoutln.h index 786ae13e..89389a49 100644 --- a/include/freetype/ftoutln.h +++ b/freetype/include/freetype/ftoutln.h @@ -5,7 +5,7 @@ /* 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 */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -17,8 +17,8 @@ /***************************************************************************/ -#ifndef __FTOUTLN_H__ -#define __FTOUTLN_H__ +#ifndef FTOUTLN_H_ +#define FTOUTLN_H_ #include <ft2build.h> @@ -52,13 +52,13 @@ FT_BEGIN_HEADER /* */ /* <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_EmboldenXY */ /* FT_Outline_Reverse */ /* FT_Outline_Check */ /* */ @@ -67,13 +67,17 @@ FT_BEGIN_HEADER /* */ /* 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 */ + /* FT_Outline_MoveToFunc */ + /* FT_Outline_LineToFunc */ + /* FT_Outline_ConicToFunc */ + /* FT_Outline_CubicToFunc */ + /* */ + /* FT_Orientation */ + /* FT_Outline_Get_Orientation */ + /* */ + /* FT_OUTLINE_XXX */ /* */ /*************************************************************************/ @@ -84,26 +88,36 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 */ + /* 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 */ + /* 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. */ + /* 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, @@ -117,7 +131,7 @@ FT_BEGIN_HEADER /* FT_Outline_New */ /* */ /* <Description> */ - /* Creates a new outline of a given size. */ + /* Create a new outline of a given size. */ /* */ /* <Input> */ /* library :: A handle to the library object from where the */ @@ -125,16 +139,17 @@ FT_BEGIN_HEADER /* outline will *not* necessarily be *freed*, when */ /* destroying the library, by @FT_Done_FreeType. */ /* */ - /* numPoints :: The maximal number of points within the outline. */ + /* numPoints :: The maximum number of points within the outline. */ + /* Must be smaller than or equal to 0xFFFF (65535). */ /* */ - /* numContours :: The maximal number of contours within the outline. */ + /* 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. NULL in case of */ - /* error. */ + /* anoutline :: A handle to the new outline. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The reason why this function takes a `library' parameter is simply */ @@ -160,7 +175,7 @@ FT_BEGIN_HEADER /* FT_Outline_Done */ /* */ /* <Description> */ - /* Destroys an outline created with @FT_Outline_New. */ + /* Destroy an outline created with @FT_Outline_New. */ /* */ /* <Input> */ /* library :: A handle of the library object used to allocate the */ @@ -169,15 +184,12 @@ FT_BEGIN_HEADER /* outline :: A pointer to the outline object to be discarded. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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 ); @@ -200,7 +212,11 @@ FT_BEGIN_HEADER /* outline :: A handle to a source outline. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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 ); @@ -212,16 +228,16 @@ FT_BEGIN_HEADER /* 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 */ + /* 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 */ - /* which contains Bézier outside arcs). */ + /* 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. */ + /* `ftbbox' component, which is dedicated to this single task. */ /* */ /* <Input> */ /* outline :: A pointer to the source outline descriptor. */ @@ -229,6 +245,9 @@ FT_BEGIN_HEADER /* <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 ); @@ -240,7 +259,7 @@ FT_BEGIN_HEADER /* FT_Outline_Translate */ /* */ /* <Description> */ - /* Applies a simple translation to the points of an outline. */ + /* Apply a simple translation to the points of an outline. */ /* */ /* <InOut> */ /* outline :: A pointer to the target outline descriptor. */ @@ -262,7 +281,7 @@ FT_BEGIN_HEADER /* FT_Outline_Copy */ /* */ /* <Description> */ - /* Copies an outline into another one. Both objects must have the */ + /* Copy an outline into another one. Both objects must have the */ /* same sizes (number of points & number of contours) when this */ /* function is called. */ /* */ @@ -273,7 +292,7 @@ FT_BEGIN_HEADER /* target :: A handle to the target outline. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Outline_Copy( const FT_Outline* source, @@ -286,7 +305,7 @@ FT_BEGIN_HEADER /* FT_Outline_Transform */ /* */ /* <Description> */ - /* Applies a simple 2x2 matrix to all of an outline's points. Useful */ + /* Apply a simple 2x2 matrix to all of an outline's points. Useful */ /* for applying rotations, slanting, flipping, etc. */ /* */ /* <InOut> */ @@ -310,7 +329,7 @@ FT_BEGIN_HEADER /* FT_Outline_Embolden */ /* */ /* <Description> */ - /* Emboldens an outline. The new outline will be at most 4 times */ + /* 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. */ /* */ @@ -325,7 +344,7 @@ FT_BEGIN_HEADER /* 26.6 pixel format. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The used algorithm to increase or decrease the thickness of the */ @@ -333,33 +352,59 @@ FT_BEGIN_HEADER /* situations like acute angles or intersections are sometimes */ /* handled incorrectly. */ /* */ + /* If you need `better' metrics values you should call */ + /* @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. */ + /* */ /* Example call: */ /* */ /* { */ /* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */ - /* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */ - /* FT_Outline_Embolden( &face->slot->outline, strength ); */ + /* if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE ) */ + /* FT_Outline_Embolden( &face->glyph->outline, strength ); */ /* } */ /* */ + /* To get meaningful results, font scaling values must be set with */ + /* functions like @FT_Set_Char_Size before calling FT_Render_Glyph. */ + /* */ 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> */ - /* Reverses the drawing direction of an outline. This is used to */ + /* 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 functions toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ + /* 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 */ @@ -375,7 +420,7 @@ FT_BEGIN_HEADER /* FT_Outline_Get_Bitmap */ /* */ /* <Description> */ - /* Renders an outline within a bitmap. The outline's image is simply */ + /* Render an outline within a bitmap. The outline's image is simply */ /* OR-ed to the target bitmap. */ /* */ /* <Input> */ @@ -387,14 +432,19 @@ FT_BEGIN_HEADER /* abitmap :: A pointer to the target bitmap descriptor. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* 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! */ + /* 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, @@ -407,8 +457,8 @@ FT_BEGIN_HEADER /* 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, */ + /* Render an outline within a bitmap using the current scan-convert. */ + /* This function uses an @FT_Raster_Params structure as an argument, */ /* allowing advanced features like direct composition, translucency, */ /* etc. */ /* */ @@ -422,7 +472,7 @@ FT_BEGIN_HEADER /* describe the rendering operation. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* You should know what you are doing and how @FT_Raster_Params works */ @@ -432,6 +482,11 @@ FT_BEGIN_HEADER /* 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, @@ -446,7 +501,7 @@ FT_BEGIN_HEADER * @description: * A list of values used to describe an outline's contour orientation. * - * The TrueType and Postscript specifications use different conventions + * The TrueType and PostScript specifications use different conventions * to determine whether outline contours should be filled or unfilled. * * @values: @@ -455,7 +510,7 @@ FT_BEGIN_HEADER * be filled, and counter-clockwise ones must be unfilled. * * FT_ORIENTATION_POSTSCRIPT :: - * According to the Postscript specification, counter-clockwise contours + * According to the PostScript specification, counter-clockwise contours * must be filled, and clockwise ones must be unfilled. * * FT_ORIENTATION_FILL_RIGHT :: @@ -465,7 +520,7 @@ FT_BEGIN_HEADER * * 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 + * remember that in PostScript, everything that is to the left of * the drawing direction of a contour must be filled. * * FT_ORIENTATION_NONE :: @@ -473,7 +528,7 @@ FT_BEGIN_HEADER * the glyph have different orientation. * */ - typedef enum + typedef enum FT_Orientation_ { FT_ORIENTATION_TRUETYPE = 0, FT_ORIENTATION_POSTSCRIPT = 1, @@ -491,9 +546,11 @@ FT_BEGIN_HEADER * * @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. + * 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. @@ -509,13 +566,12 @@ FT_BEGIN_HEADER FT_EXPORT( FT_Orientation ) FT_Outline_Get_Orientation( FT_Outline* outline ); - /* */ FT_END_HEADER -#endif /* __FTOUTLN_H__ */ +#endif /* FTOUTLN_H_ */ /* END */ diff --git a/freetype/include/freetype/ftparams.h b/freetype/include/freetype/ftparams.h new file mode 100644 index 00000000..5a9006c5 --- /dev/null +++ b/freetype/include/freetype/ftparams.h @@ -0,0 +1,205 @@ +/***************************************************************************/ +/* */ +/* ftparams.h */ +/* */ +/* FreeType API for possible FT_Parameter tags (specification only). */ +/* */ +/* Copyright 2017-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#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. + * + */ + + + /*************************************************************************** + * + * @constant: + * 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 + + + /*************************************************************************** + * + * @constant: + * 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 + + + /*************************************************************************** + * + * @constant: + * 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' ) + + + /************************************************************************** + * + * @constant: + * 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' ) + + + /************************************************************************** + * + * @constant: + * 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' ) + + + /************************************************************************** + * + * @constant: + * 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' ) + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_UNPATENTED_HINTING + * + * @description: + * Deprecated, no effect. + * + * Previously: A constant used as the tag of an @FT_Parameter structure to + * indicate that unpatented methods only should be used by the TrueType + * bytecode interpreter for a typeface opened by @FT_Open_Face. + * + */ +#define FT_PARAM_TAG_UNPATENTED_HINTING \ + FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) + + + /* */ + + +FT_END_HEADER + + +#endif /* FTPARAMS_H_ */ + + +/* END */ diff --git a/include/freetype/ftpfr.h b/freetype/include/freetype/ftpfr.h similarity index 91% rename from include/freetype/ftpfr.h rename to freetype/include/freetype/ftpfr.h index e2801fd0..a69cc482 100644 --- a/include/freetype/ftpfr.h +++ b/freetype/include/freetype/ftpfr.h @@ -4,7 +4,7 @@ /* */ /* FreeType API for accessing PFR-specific data (specification only). */ /* */ -/* Copyright 2002, 2003, 2004, 2006 by */ +/* Copyright 2002-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTPFR_H__ -#define __FTPFR_H__ +#ifndef FTPFR_H_ +#define FTPFR_H_ #include <ft2build.h> #include FT_FREETYPE_H @@ -62,8 +62,8 @@ FT_BEGIN_HEADER * * @output: * aoutline_resolution :: - * Outline resolution. This is equivalent to `face->units_per_EM'. - * Optional (parameter can be NULL). + * 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' @@ -71,16 +71,16 @@ FT_BEGIN_HEADER * * 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 + * in metrics units to device subpixels. This is equivalent to * `face->size->x_scale', but for metrics only. Optional (parameter - * can be NULL) + * can be NULL). * * ametrics_y_scale :: * Same as `ametrics_x_scale' but for the vertical direction. - * optional (parameter can be NULL) + * optional (parameter can be NULL). * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * If the input face is not a PFR, this function will return an error. @@ -115,7 +115,7 @@ FT_BEGIN_HEADER * avector :: A kerning vector. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function always return distances in original PFR metrics @@ -123,7 +123,7 @@ FT_BEGIN_HEADER * 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. + * returned by @FT_Get_PFR_Metrics to scale these to device subpixels. */ FT_EXPORT( FT_Error ) FT_Get_PFR_Kerning( FT_Face face, @@ -150,23 +150,23 @@ FT_BEGIN_HEADER * aadvance :: The glyph advance in metrics units. * * @return: - * FreeType error code. 0 means success. + * 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). + * 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__ */ +#endif /* FTPFR_H_ */ /* END */ diff --git a/include/freetype/ftrender.h b/freetype/include/freetype/ftrender.h similarity index 86% rename from include/freetype/ftrender.h rename to freetype/include/freetype/ftrender.h index 5b07f08c..fa8ad22b 100644 --- a/include/freetype/ftrender.h +++ b/freetype/include/freetype/ftrender.h @@ -4,7 +4,7 @@ /* */ /* FreeType renderer modules public interface (specification). */ /* */ -/* Copyright 1996-2001, 2005, 2006 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTRENDER_H__ -#define __FTRENDER_H__ +#ifndef FTRENDER_H_ +#define FTRENDER_H_ #include <ft2build.h> @@ -75,6 +75,7 @@ FT_BEGIN_HEADER { FT_Long glyph_size; FT_Glyph_Format glyph_format; + FT_Glyph_InitFunc glyph_init; FT_Glyph_DoneFunc glyph_done; FT_Glyph_CopyFunc glyph_copy; @@ -87,7 +88,7 @@ FT_BEGIN_HEADER typedef FT_Error (*FT_Renderer_RenderFunc)( FT_Renderer renderer, FT_GlyphSlot slot, - FT_UInt mode, + FT_Render_Mode mode, const FT_Vector* origin ); typedef FT_Error @@ -124,27 +125,28 @@ FT_BEGIN_HEADER /* The renderer module class descriptor. */ /* */ /* <Fields> */ - /* root :: The root @FT_Module_Class fields. */ + /* root :: The root @FT_Module_Class fields. */ + /* */ + /* glyph_format :: The glyph image format this renderer handles. */ /* */ - /* 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. */ /* */ - /* 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. */ /* */ - /* set_mode :: A method used to pass additional parameters. */ + /* get_glyph_cbox :: A method used to access the glyph's cbox. */ /* */ - /* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. This */ - /* is a pointer to its raster's class. */ + /* set_mode :: A method used to pass additional parameters. */ /* */ - /* raster :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. This */ - /* is a pointer to the corresponding raster object, */ - /* if any. */ + /* 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_Module_Class root; - FT_Glyph_Format glyph_format; + FT_Glyph_Format glyph_format; FT_Renderer_RenderFunc render_glyph; FT_Renderer_TransformFunc transform_glyph; @@ -162,7 +164,7 @@ FT_BEGIN_HEADER /* FT_Get_Renderer */ /* */ /* <Description> */ - /* Retrieves the current renderer for a given glyph format. */ + /* Retrieve the current renderer for a given glyph format. */ /* */ /* <Input> */ /* library :: A handle to the library object. */ @@ -170,7 +172,7 @@ FT_BEGIN_HEADER /* format :: The glyph format. */ /* */ /* <Return> */ - /* A renderer handle. 0 if none found. */ + /* A renderer handle. 0~if none found. */ /* */ /* <Note> */ /* An error will be returned if a module already exists by that name, */ @@ -190,7 +192,7 @@ FT_BEGIN_HEADER /* FT_Set_Renderer */ /* */ /* <Description> */ - /* Sets the current renderer to use, and set additional mode. */ + /* Set the current renderer to use, and set additional mode. */ /* */ /* <InOut> */ /* library :: A handle to the library object. */ @@ -203,7 +205,7 @@ FT_BEGIN_HEADER /* parameters :: Additional parameters. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* In case of success, the renderer will be used to convert glyph */ @@ -211,19 +213,21 @@ FT_BEGIN_HEADER /* */ /* 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__ */ +#endif /* FTRENDER_H_ */ /* END */ diff --git a/include/freetype/ftsizes.h b/freetype/include/freetype/ftsizes.h similarity index 94% rename from include/freetype/ftsizes.h rename to freetype/include/freetype/ftsizes.h index 622df162..72cb08bf 100644 --- a/include/freetype/ftsizes.h +++ b/freetype/include/freetype/ftsizes.h @@ -4,7 +4,7 @@ /* */ /* FreeType size objects management (specification). */ /* */ -/* Copyright 1996-2001, 2003, 2004, 2006 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -25,8 +25,8 @@ /*************************************************************************/ -#ifndef __FTSIZES_H__ -#define __FTSIZES_H__ +#ifndef FTSIZES_H_ +#define FTSIZES_H_ #include <ft2build.h> @@ -89,7 +89,7 @@ FT_BEGIN_HEADER /* asize :: A handle to a new size object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* You need to call @FT_Activate_Size in order to select the new size */ @@ -115,7 +115,7 @@ FT_BEGIN_HEADER /* size :: A handle to a target size object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Done_Size( FT_Size size ); @@ -129,8 +129,8 @@ FT_BEGIN_HEADER /* <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'. */ + /* @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. */ @@ -139,7 +139,7 @@ FT_BEGIN_HEADER /* size :: A handle to a target size object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* If `face' is the size's parent face object, this function changes */ @@ -153,7 +153,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __FTSIZES_H__ */ +#endif /* FTSIZES_H_ */ /* END */ diff --git a/include/freetype/ftsnames.h b/freetype/include/freetype/ftsnames.h similarity index 55% rename from include/freetype/ftsnames.h rename to freetype/include/freetype/ftsnames.h index 003cbcd1..8eb8d70f 100644 --- a/include/freetype/ftsnames.h +++ b/freetype/include/freetype/ftsnames.h @@ -2,12 +2,12 @@ /* */ /* ftsnames.h */ /* */ -/* Simple interface to access SFNT name tables (which are used */ +/* 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 */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,12 +19,13 @@ /***************************************************************************/ -#ifndef __FT_SFNT_NAMES_H__ -#define __FT_SFNT_NAMES_H__ +#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!" @@ -48,8 +49,8 @@ FT_BEGIN_HEADER /* 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 */ + /* 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. */ /* */ @@ -70,30 +71,37 @@ FT_BEGIN_HEADER /* */ /* <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. 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. */ + /* 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> */ - /* 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. */ + /* Please refer to the TrueType or OpenType specification for more */ + /* details. */ /* */ typedef struct FT_SfntName_ { @@ -103,7 +111,7 @@ FT_BEGIN_HEADER FT_UShort name_id; FT_Byte* string; /* this string is *not* null-terminated! */ - FT_UInt string_len; /* in bytes */ + FT_UInt string_len; /* in bytes */ } FT_SfntName; @@ -114,7 +122,7 @@ FT_BEGIN_HEADER /* FT_Get_Sfnt_Name_Count */ /* */ /* <Description> */ - /* Retrieves the number of name strings in the SFNT `name' table. */ + /* Retrieve the number of name strings in the SFNT `name' table. */ /* */ /* <Input> */ /* face :: A handle to the source face. */ @@ -132,7 +140,7 @@ FT_BEGIN_HEADER /* FT_Get_Sfnt_Name */ /* */ /* <Description> */ - /* Retrieves a string of the SFNT `name' table for a given index. */ + /* Retrieve a string of the SFNT `name' table for a given index. */ /* */ /* <Input> */ /* face :: A handle to the source face. */ @@ -143,28 +151,103 @@ FT_BEGIN_HEADER /* aname :: The indexed @FT_SfntName structure. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The `string' array returned in the `aname' structure is not */ - /* null-terminated. */ + /* 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. */ + /* */ 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. */ + /* */ + /* <Since> */ + /* 2.8 */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Sfnt_LangTag( FT_Face face, + FT_UInt langID, + FT_SfntLangTag *alangTag ); + + /* */ FT_END_HEADER -#endif /* __FT_SFNT_NAMES_H__ */ +#endif /* FTSNAMES_H_ */ /* END */ diff --git a/include/freetype/ftstroke.h b/freetype/include/freetype/ftstroke.h similarity index 74% rename from include/freetype/ftstroke.h rename to freetype/include/freetype/ftstroke.h index 738b43c1..44b6fbe1 100644 --- a/include/freetype/ftstroke.h +++ b/freetype/include/freetype/ftstroke.h @@ -4,7 +4,7 @@ /* */ /* FreeType path stroker (specification). */ /* */ -/* Copyright 2002, 2003, 2004, 2005, 2006 by */ +/* Copyright 2002-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FT_STROKE_H__ -#define __FT_STROKE_H__ +#ifndef FTSTROKE_H_ +#define FTSTROKE_H_ #include <ft2build.h> #include FT_OUTLINE_H @@ -46,6 +46,38 @@ FT_BEGIN_HEADER * 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 + * */ @@ -55,7 +87,7 @@ FT_BEGIN_HEADER * FT_Stroker * * @description: - * Opaque handler to a path stroker object. + * Opaque handle to a path stroker object. */ typedef struct FT_StrokerRec_* FT_Stroker; @@ -75,20 +107,44 @@ FT_BEGIN_HEADER * 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; @@ -115,7 +171,7 @@ FT_BEGIN_HEADER * 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, @@ -149,7 +205,7 @@ FT_BEGIN_HEADER * 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 @@ -171,7 +227,7 @@ FT_BEGIN_HEADER * 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 ) @@ -216,7 +272,7 @@ FT_BEGIN_HEADER * 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, @@ -245,12 +301,15 @@ 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 + * 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, @@ -297,18 +356,18 @@ FT_BEGIN_HEADER * The source outline. * * opened :: - * A boolean. If 1, the outline is treated as an open path instead + * 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. */ @@ -334,10 +393,10 @@ 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 @@ -362,11 +421,11 @@ 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 + * If the subpath was not `opened', this function `draws' a * single line segment to the start position when needed. */ FT_EXPORT( FT_Error ) @@ -390,7 +449,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 @@ -407,7 +466,7 @@ FT_BEGIN_HEADER * 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 +474,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 @@ -439,7 +498,7 @@ FT_BEGIN_HEADER * FT_Stroker_CubicTo * * @description: - * `Draw' a single cubic Bézier in the stroker's current sub-path, + * `Draw' a single cubic Bezier in the stroker's current sub-path, * from the last position. * * @input: @@ -447,16 +506,16 @@ FT_BEGIN_HEADER * 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 @@ -476,7 +535,7 @@ FT_BEGIN_HEADER * * @description: * Call this function once you have finished parsing your paths - * with the stroker. It will return the number of points and + * 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. * @@ -495,7 +554,7 @@ 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 @@ -525,8 +584,8 @@ FT_BEGIN_HEADER * 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 + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its * arrays. * * @input: @@ -545,10 +604,10 @@ FT_BEGIN_HEADER * receive all new data. * * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right' + * 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 + * 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 @@ -583,7 +642,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, @@ -598,10 +657,10 @@ FT_BEGIN_HEADER * * @description: * Call this function after @FT_Stroker_GetBorderCounts to - * export the all borders to your own @FT_Outline structure. + * 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 + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its * arrays. * * @input: @@ -649,14 +708,19 @@ FT_BEGIN_HEADER * A stroker handle. * * destroy :: - * A Boolean. If 1, the source glyph object is destroyed + * 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, @@ -682,18 +746,23 @@ FT_BEGIN_HEADER * A stroker handle. * * inside :: - * A Boolean. If 1, return the inside border, otherwise + * A Boolean. If~1, return the inside border, otherwise * the outside border. * * destroy :: - * A Boolean. If 1, the source glyph object is destroyed + * 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 +770,11 @@ FT_BEGIN_HEADER FT_Bool inside, FT_Bool destroy ); - /* */ + /* */ FT_END_HEADER -#endif /* __FT_STROKE_H__ */ +#endif /* FTSTROKE_H_ */ /* END */ diff --git a/include/freetype/ftsynth.h b/freetype/include/freetype/ftsynth.h similarity index 67% rename from include/freetype/ftsynth.h rename to freetype/include/freetype/ftsynth.h index 36984bf1..ff9fb43d 100644 --- a/include/freetype/ftsynth.h +++ b/freetype/include/freetype/ftsynth.h @@ -5,7 +5,7 @@ /* FreeType synthesizing code for emboldening and slanting */ /* (specification). */ /* */ -/* Copyright 2000-2001, 2003, 2006 by */ +/* Copyright 2000-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,7 +23,7 @@ /*************************************************************************/ /*************************************************************************/ /********* *********/ - /********* WARNING, THIS IS ALPHA CODE, THIS API *********/ + /********* WARNING, THIS IS ALPHA CODE! THIS API *********/ /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ /********* FREETYPE DEVELOPMENT TEAM *********/ /********* *********/ @@ -34,8 +34,15 @@ /*************************************************************************/ -#ifndef __FTSYNTH_H__ -#define __FTSYNTH_H__ + /* 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> @@ -50,24 +57,28 @@ 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. */ + /* 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__ */ +#endif /* FTSYNTH_H_ */ /* END */ diff --git a/include/freetype/ftsystem.h b/freetype/include/freetype/ftsystem.h similarity index 92% rename from include/freetype/ftsystem.h rename to freetype/include/freetype/ftsystem.h index 59cd0198..f6b1629e 100644 --- a/include/freetype/ftsystem.h +++ b/freetype/include/freetype/ftsystem.h @@ -4,7 +4,7 @@ /* */ /* FreeType low-level system interface definition (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2005 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTSYSTEM_H__ -#define __FTSYSTEM_H__ +#ifndef FTSYSTEM_H_ +#define FTSYSTEM_H_ #include <ft2build.h> @@ -82,7 +82,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* @@ -133,7 +133,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. @@ -152,7 +152,7 @@ FT_BEGIN_HEADER * 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 :: @@ -192,6 +192,10 @@ 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; @@ -240,7 +244,8 @@ FT_BEGIN_HEADER * * @note: * This function might be called to perform a seek or skip operation - * with a `count' of 0. + * with a `count' of~0. A non-zero return value then indicates an + * error. * */ typedef unsigned long @@ -284,6 +289,11 @@ FT_BEGIN_HEADER * 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. * @@ -301,7 +311,7 @@ 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 @@ -334,13 +344,12 @@ FT_BEGIN_HEADER } FT_StreamRec; - /* */ FT_END_HEADER -#endif /* __FTSYSTEM_H__ */ +#endif /* FTSYSTEM_H_ */ /* END */ diff --git a/include/freetype/fttrigon.h b/freetype/include/freetype/fttrigon.h similarity index 93% rename from include/freetype/fttrigon.h rename to freetype/include/freetype/fttrigon.h index 6b77d2ee..2e3f3f1f 100644 --- a/include/freetype/fttrigon.h +++ b/freetype/include/freetype/fttrigon.h @@ -4,7 +4,7 @@ /* */ /* FreeType trigonometric functions (specification). */ /* */ -/* Copyright 2001, 2003, 2005, 2007 by */ +/* Copyright 2001-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTTRIGON_H__ -#define __FTTRIGON_H__ +#ifndef FTTRIGON_H_ +#define FTTRIGON_H_ #include FT_FREETYPE_H @@ -46,7 +46,7 @@ FT_BEGIN_HEADER * * @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; @@ -106,7 +106,7 @@ FT_BEGIN_HEADER * 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 :: @@ -130,7 +130,7 @@ FT_BEGIN_HEADER * 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 :: @@ -154,7 +154,7 @@ FT_BEGIN_HEADER * 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 :: @@ -225,8 +225,8 @@ FT_BEGIN_HEADER * * @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 ) @@ -259,7 +259,7 @@ FT_BEGIN_HEADER * * @input: * angle :: - * The address of angle. + * The input angle. * */ FT_EXPORT( void ) @@ -344,7 +344,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __FTTRIGON_H__ */ +#endif /* FTTRIGON_H_ */ /* END */ diff --git a/include/freetype/fttypes.h b/freetype/include/freetype/fttypes.h similarity index 93% rename from include/freetype/fttypes.h rename to freetype/include/freetype/fttypes.h index 2340bacd..f638c2e5 100644 --- a/include/freetype/fttypes.h +++ b/freetype/include/freetype/fttypes.h @@ -4,7 +4,7 @@ /* */ /* FreeType simple types definitions (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2004, 2006, 2007 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTTYPES_H__ -#define __FTTYPES_H__ +#ifndef FTTYPES_H_ +#define FTTYPES_H_ #include <ft2build.h> @@ -43,7 +43,7 @@ FT_BEGIN_HEADER /* The basic data types defined by the library. */ /* */ /* <Description> */ - /* This section contains the basic data types defined by FreeType 2, */ + /* 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. */ /* */ @@ -53,6 +53,12 @@ FT_BEGIN_HEADER /* FT_Char */ /* FT_Int */ /* FT_UInt */ + /* FT_Int16 */ + /* FT_UInt16 */ + /* FT_Int32 */ + /* FT_UInt32 */ + /* FT_Int64 */ + /* FT_UInt64 */ /* FT_Short */ /* FT_UShort */ /* FT_Long */ @@ -74,7 +80,9 @@ FT_BEGIN_HEADER /* FT_F2Dot14 */ /* FT_UnitVector */ /* FT_F26Dot6 */ + /* FT_Data */ /* */ + /* FT_MAKE_TAG */ /* */ /* FT_Generic */ /* FT_Generic_Finalizer */ @@ -95,7 +103,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* A typedef of unsigned char, used for simple booleans. As usual, */ - /* values 1 and 0 represent true and false, respectively. */ + /* values 1 and~0 represent true and false, respectively. */ /* */ typedef unsigned char FT_Bool; @@ -163,7 +171,7 @@ FT_BEGIN_HEADER /* FT_Tag */ /* */ /* <Description> */ - /* A typedef for 32bit tags (as used in the SFNT format). */ + /* A typedef for 32-bit tags (as used in the SFNT format). */ /* */ typedef FT_UInt32 FT_Tag; @@ -251,7 +259,7 @@ FT_BEGIN_HEADER /* FT_F2Dot14 */ /* */ /* <Description> */ - /* A signed 2.14 fixed float type used for unit vectors. */ + /* A signed 2.14 fixed-point type used for unit vectors. */ /* */ typedef signed short FT_F2Dot14; @@ -262,7 +270,7 @@ FT_BEGIN_HEADER /* FT_F26Dot6 */ /* */ /* <Description> */ - /* A signed 26.6 fixed float type used for vectorial pixel */ + /* A signed 26.6 fixed-point type used for vectorial pixel */ /* coordinates. */ /* */ typedef signed long FT_F26Dot6; @@ -274,7 +282,7 @@ FT_BEGIN_HEADER /* FT_Fixed */ /* */ /* <Description> */ - /* This type is used to store 16.16 fixed float values, like scaling */ + /* This type is used to store 16.16 fixed-point values, like scaling */ /* values or matrix coefficients. */ /* */ typedef signed long FT_Fixed; @@ -286,7 +294,7 @@ FT_BEGIN_HEADER /* FT_Error */ /* */ /* <Description> */ - /* The FreeType error code type. A value of 0 is always interpreted */ + /* The FreeType error code type. A value of~0 is always interpreted */ /* as a successful operation. */ /* */ typedef int FT_Error; @@ -309,7 +317,7 @@ FT_BEGIN_HEADER /* FT_Offset */ /* */ /* <Description> */ - /* This is equivalent to the ANSI C `size_t' type, i.e., the largest */ + /* 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. */ /* */ @@ -322,7 +330,7 @@ FT_BEGIN_HEADER /* FT_PtrDist */ /* */ /* <Description> */ - /* This is equivalent to the ANSI C `ptrdiff_t' type, i.e., the */ + /* 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. */ /* */ @@ -358,7 +366,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* A simple structure used to store a 2x2 matrix. Coefficients are */ - /* in 16.16 fixed float format. The computation performed is: */ + /* in 16.16 fixed-point format. The computation performed is: */ /* */ /* { */ /* x' = x*xx + y*xy */ @@ -409,15 +417,15 @@ FT_BEGIN_HEADER /* FT_Generic_Finalizer */ /* */ /* <Description> */ - /* Describes a function used to destroy the `client' data of any */ + /* 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 which is under finalization. */ + /* 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); + typedef void (*FT_Generic_Finalizer)( void* object ); /*************************************************************************/ @@ -430,7 +438,7 @@ FT_BEGIN_HEADER /* 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 */ + /* Some FreeType object contains a `generic' field, of type */ /* FT_Generic, which usage is left to client applications and font */ /* servers. */ /* */ @@ -462,14 +470,15 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 32bit integers. Don't redefine this */ - /* macro. */ + /* 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 ) | \ @@ -562,22 +571,32 @@ FT_BEGIN_HEADER } FT_ListRec; - /* */ + #define FT_IS_EMPTY( list ) ( (list).head == 0 ) +#define FT_BOOL( x ) ( (FT_Bool)( x ) ) - /* return base error code (without module-specific prefix) */ -#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) + /* concatenate C tokens */ +#define FT_ERR_XCAT( x, y ) x ## y +#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) - /* return module error code */ + /* 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_BOOL( x ) ( (FT_Bool)( x ) ) +#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__ */ +#endif /* FTTYPES_H_ */ /* END */ diff --git a/include/freetype/ftwinfnt.h b/freetype/include/freetype/ftwinfnt.h similarity index 82% rename from include/freetype/ftwinfnt.h rename to freetype/include/freetype/ftwinfnt.h index a0063cc7..461c65b7 100644 --- a/include/freetype/ftwinfnt.h +++ b/freetype/include/freetype/ftwinfnt.h @@ -4,7 +4,7 @@ /* */ /* FreeType API for accessing Windows fnt-specific data. */ /* */ -/* Copyright 2003, 2004 by */ +/* Copyright 2003-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTWINFNT_H__ -#define __FTWINFNT_H__ +#ifndef FTWINFNT_H_ +#define FTWINFNT_H_ #include <ft2build.h> #include FT_FREETYPE_H @@ -58,9 +58,10 @@ FT_BEGIN_HEADER * @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. + * 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 :: @@ -77,7 +78,7 @@ FT_BEGIN_HEADER * Mac Roman encoding. * * FT_WinFNT_ID_OEM :: - * From Michael Pöttgen <michael@poettgen.de>: + * 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', @@ -94,7 +95,7 @@ FT_BEGIN_HEADER * 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, + * https://msdn.microsoft.com/en-us/goglobal/bb964655, * * and is used for the `DOS boxes', to support legacy applications. * A German Windows version for example usually uses ANSI codepage @@ -111,11 +112,11 @@ FT_BEGIN_HEADER * ordering and minor deviations). * * FT_WinFNT_ID_CP949 :: - * A superset of Korean Hangul KS C 5601-1987 (with different + * 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 + * A superset of traditional Chinese Big~5 ETen (with different * ordering and minor deviations). * * FT_WinFNT_ID_CP1250 :: @@ -219,40 +220,51 @@ FT_BEGIN_HEADER FT_UShort color_table_offset; FT_ULong reserved1[4]; - } FT_WinFNT_HeaderRec, *FT_WinFNT_Header; + } FT_WinFNT_HeaderRec; - /********************************************************************** - * - * @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. - */ + /*************************************************************************/ + /* */ + /* <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__ */ +#endif /* FTWINFNT_H_ */ /* END */ diff --git a/freetype/include/freetype/t1tables.h b/freetype/include/freetype/t1tables.h new file mode 100644 index 00000000..3503c261 --- /dev/null +++ b/freetype/include/freetype/t1tables.h @@ -0,0 +1,770 @@ +/***************************************************************************/ +/* */ +/* t1tables.h */ +/* */ +/* Basic Type 1/Type 2 tables definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#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. */ + /* */ + /* <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. */ + /* */ + 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; + + + /*************************************************************************/ + /* */ + /* <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/include/freetype/ttnameid.h b/freetype/include/freetype/ttnameid.h similarity index 54% rename from include/freetype/ttnameid.h rename to freetype/include/freetype/ttnameid.h index b9acbdad..8605183d 100644 --- a/include/freetype/ttnameid.h +++ b/freetype/include/freetype/ttnameid.h @@ -4,7 +4,7 @@ /* */ /* TrueType name ID definitions (specification only). */ /* */ -/* Copyright 1996-2002, 2003, 2004, 2006, 2007 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __TTNAMEID_H__ -#define __TTNAMEID_H__ +#ifndef TTNAMEID_H_ +#define TTNAMEID_H_ #include <ft2build.h> @@ -26,10 +26,17 @@ FT_BEGIN_HEADER + /*************************************************************************/ + /* */ + /* <Section> */ + /* truetype_tables */ + /* */ + + /*************************************************************************/ /* */ /* Possible values for the `platform' identifier code in the name */ - /* records of the TTF `name' table. */ + /* records of an SFNT `name' table. */ /* */ /*************************************************************************/ @@ -57,7 +64,7 @@ FT_BEGIN_HEADER * 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 + * 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. * @@ -108,13 +115,23 @@ 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 */ /*********************************************************************** @@ -125,42 +142,6 @@ FT_BEGIN_HEADER * @description: * A list of valid values for the `encoding_id' for * @TT_PLATFORM_MACINTOSH charmaps and name entries. - * - * @values: - * TT_MAC_ID_ROMAN :: - * TT_MAC_ID_JAPANESE :: - * TT_MAC_ID_TRADITIONAL_CHINESE :: - * TT_MAC_ID_KOREAN :: - * TT_MAC_ID_ARABIC :: - * TT_MAC_ID_HEBREW :: - * TT_MAC_ID_GREEK :: - * TT_MAC_ID_RUSSIAN :: - * TT_MAC_ID_RSYMBOL :: - * TT_MAC_ID_DEVANAGARI :: - * TT_MAC_ID_GURMUKHI :: - * TT_MAC_ID_GUJARATI :: - * TT_MAC_ID_ORIYA :: - * TT_MAC_ID_BENGALI :: - * TT_MAC_ID_TAMIL :: - * TT_MAC_ID_TELUGU :: - * TT_MAC_ID_KANNADA :: - * TT_MAC_ID_MALAYALAM :: - * TT_MAC_ID_SINHALESE :: - * TT_MAC_ID_BURMESE :: - * TT_MAC_ID_KHMER :: - * TT_MAC_ID_THAI :: - * TT_MAC_ID_LAOTIAN :: - * TT_MAC_ID_GEORGIAN :: - * TT_MAC_ID_ARMENIAN :: - * TT_MAC_ID_MALDIVIAN :: - * TT_MAC_ID_SIMPLIFIED_CHINESE :: - * TT_MAC_ID_TIBETAN :: - * TT_MAC_ID_MONGOLIAN :: - * TT_MAC_ID_GEEZ :: - * TT_MAC_ID_SLAVIC :: - * TT_MAC_ID_VIETNAMESE :: - * TT_MAC_ID_SINDHI :: - * TT_MAC_ID_UNINTERP :: */ #define TT_MAC_ID_ROMAN 0 @@ -235,44 +216,47 @@ FT_BEGIN_HEADER * * @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 + * 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 + /*********************************************************************** * @@ -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://www.microsoft.com/globaldev/reference/lcid-all.mspx , + * + * 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 -#if 0 /* not deemed useful for fonts */ -#define TT_MS_LANGID_HUMAN_INTERFACE_DEVICE 0x04ff -#endif + /*********************************************************************** + * + * @enum: + * TT_NAME_ID_XXX + * + * @description: + * Possible values of the `name' identifier field in the name records of + * an SFNT `name' table. These values are platform independent. + */ - /*************************************************************************/ - /* */ - /* Possible values of the `name' identifier field in the name records of */ - /* 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 - /*************************************************************************/ - /* */ - /* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ - /* */ - /* Updated 02-Jul-2000. */ - /* */ + /* This is new in OpenType 1.7 */ +#define TT_NAME_ID_LIGHT_BACKGROUND 23 +#define TT_NAME_ID_DARK_BACKGROUND 24 + + /* This is new in OpenType 1.8 */ +#define TT_NAME_ID_VARIATIONS_PREFIX 25 + + /* 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 - /* General Scripts Area */ + + /*********************************************************************** + * + * @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/include/freetype/tttables.h b/freetype/include/freetype/tttables.h similarity index 69% rename from include/freetype/tttables.h rename to freetype/include/freetype/tttables.h index 43eca2e2..ce6a6177 100644 --- a/include/freetype/tttables.h +++ b/freetype/include/freetype/tttables.h @@ -5,7 +5,7 @@ /* Basic SFNT/TrueType tables definitions and interface */ /* (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -17,8 +17,8 @@ /***************************************************************************/ -#ifndef __TTTABLES_H__ -#define __TTTABLES_H__ +#ifndef TTTABLES_H_ +#define TTTABLES_H_ #include <ft2build.h> @@ -45,8 +45,28 @@ FT_BEGIN_HEADER /* 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. */ + /* 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 */ /* */ /*************************************************************************/ @@ -57,8 +77,8 @@ FT_BEGIN_HEADER /* TT_Header */ /* */ /* <Description> */ - /* A structure used to model a TrueType font header table. All */ - /* fields follow the TrueType specification. */ + /* A structure to model a TrueType font header table. All fields */ + /* follow the OpenType specification. */ /* */ typedef struct TT_Header_ { @@ -95,9 +115,9 @@ FT_BEGIN_HEADER /* TT_HoriHeader */ /* */ /* <Description> */ - /* A structure used to model a TrueType horizontal header, the `hhea' */ + /* A structure to model a TrueType horizontal header, the `hhea' */ /* table, as well as the corresponding horizontal metrics table, */ - /* i.e., the `hmtx' table. */ + /* `hmtx'. */ /* */ /* <Fields> */ /* Version :: The table version. */ @@ -112,7 +132,7 @@ FT_BEGIN_HEADER /* glyphs found in the font (maybe ASCII). */ /* */ /* You should use the `sTypoAscender' field */ - /* of the OS/2 table instead if you want */ + /* of the `OS/2' table instead if you want */ /* the correct one. */ /* */ /* Descender :: The font's descender, i.e., the distance */ @@ -126,7 +146,7 @@ FT_BEGIN_HEADER /* glyphs found in the font (maybe ASCII). */ /* */ /* You should use the `sTypoDescender' */ - /* field of the OS/2 table instead if you */ + /* field of the `OS/2' table instead if you */ /* want the correct one. */ /* */ /* Line_Gap :: The font's line gap, i.e., the distance */ @@ -156,9 +176,11 @@ FT_BEGIN_HEADER /* caret_Slope_Run :: The run coefficient of the cursor's */ /* slope. */ /* */ - /* Reserved :: 10 reserved bytes. */ + /* caret_Offset :: The cursor's offset for slanted fonts. */ + /* */ + /* Reserved :: 8~reserved bytes. */ /* */ - /* metric_Data_Format :: Always 0. */ + /* metric_Data_Format :: Always~0. */ /* */ /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ /* table -- this value can be smaller than */ @@ -169,13 +191,10 @@ FT_BEGIN_HEADER /* 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. */ + /* 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_ { @@ -198,9 +217,9 @@ FT_BEGIN_HEADER FT_Short metric_Data_Format; FT_UShort number_Of_HMetrics; - /* The following fields are not defined by the TrueType specification */ + /* The following fields are not defined by the OpenType specification */ /* but they are used to connect the metrics header to the relevant */ - /* `HMTX' table. */ + /* `hmtx' table. */ void* long_metrics; void* short_metrics; @@ -215,8 +234,8 @@ FT_BEGIN_HEADER /* */ /* <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. */ + /* table, as well as the corresponding vertical metrics table, */ + /* `vmtx'. */ /* */ /* <Fields> */ /* Version :: The table version. */ @@ -232,8 +251,8 @@ FT_BEGIN_HEADER /* ASCII). */ /* */ /* You should use the `sTypoAscender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ + /* 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 */ @@ -247,8 +266,8 @@ FT_BEGIN_HEADER /* ASCII). */ /* */ /* You should use the `sTypoDescender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ + /* 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 */ @@ -278,30 +297,26 @@ FT_BEGIN_HEADER /* slope. */ /* */ /* caret_Offset :: The cursor's offset for slanted fonts. */ - /* This value is `reserved' in vmtx */ - /* version 1.0. */ /* */ - /* Reserved :: 8 reserved bytes. */ + /* Reserved :: 8~reserved bytes. */ /* */ - /* metric_Data_Format :: Always 0. */ + /* metric_Data_Format :: Always~0. */ /* */ - /* number_Of_HMetrics :: Number of VMetrics entries in the */ + /* 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. */ + /* long_metrics :: A pointer into the `vmtx' table. */ /* */ - /* short_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. */ + /* 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_ { @@ -312,9 +327,9 @@ FT_BEGIN_HEADER 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 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; @@ -324,9 +339,9 @@ FT_BEGIN_HEADER 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. */ + /* 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; @@ -340,20 +355,35 @@ FT_BEGIN_HEADER /* 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. */ + /* A structure to model a TrueType `OS/2' table. All fields comply */ + /* to the OpenType 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 */ + /* 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_Short fsType; + FT_UShort fsType; FT_Short ySubscriptXSize; FT_Short ySubscriptYSize; FT_Short ySubscriptXOffset; @@ -384,12 +414,12 @@ FT_BEGIN_HEADER FT_UShort usWinAscent; FT_UShort usWinDescent; - /* only version 1 tables: */ + /* only version 1 and higher: */ FT_ULong ulCodePageRange1; /* Bits 0-31 */ FT_ULong ulCodePageRange2; /* Bits 32-63 */ - /* only version 2 tables: */ + /* only version 2 and higher: */ FT_Short sxHeight; FT_Short sCapHeight; @@ -397,6 +427,11 @@ FT_BEGIN_HEADER 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; @@ -406,10 +441,16 @@ FT_BEGIN_HEADER /* 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. */ + /* 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_ { @@ -423,8 +464,8 @@ FT_BEGIN_HEADER 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. */ + /* Glyph names follow in the `post' table, but we don't */ + /* load them by default. */ } TT_Postscript; @@ -435,8 +476,8 @@ FT_BEGIN_HEADER /* TT_PCLT */ /* */ /* <Description> */ - /* A structure used to model a TrueType PCLT table. All fields */ - /* comply to the TrueType specification. */ + /* A structure to model a TrueType `PCLT' table. All fields comply */ + /* to the OpenType specification. */ /* */ typedef struct TT_PCLT_ { @@ -465,9 +506,9 @@ FT_BEGIN_HEADER /* 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. */ + /* 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. */ @@ -477,21 +518,19 @@ FT_BEGIN_HEADER /* */ /* 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'. */ + /* composite TrueType glyph. See also */ + /* `maxPoints'. */ /* */ /* maxCompositeContours :: The maximum number of contours in a */ - /* composite TrueType glyph. See also the */ - /* structure element `maxContours'. */ + /* composite TrueType glyph. See also */ + /* `maxContours'. */ /* */ /* maxZones :: The maximum number of zones used for */ /* glyph hinting. */ @@ -552,24 +591,48 @@ FT_BEGIN_HEADER /* FT_Sfnt_Tag */ /* */ /* <Description> */ - /* An enumeration used to specify the index of an SFNT table. */ - /* Used in the @FT_Get_Sfnt_Table API function. */ + /* 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. */ /* */ - typedef enum + /* 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 = 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, + FT_SFNT_HEAD, + FT_SFNT_MAXP, + FT_SFNT_OS2, + FT_SFNT_HHEA, + FT_SFNT_VHEA, + FT_SFNT_POST, + FT_SFNT_PCLT, - sfnt_max /* internal end mark */ + 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 /*************************************************************************/ @@ -578,7 +641,7 @@ FT_BEGIN_HEADER /* FT_Get_Sfnt_Table */ /* */ /* <Description> */ - /* Returns a pointer to a given SFNT table within a face. */ + /* Return a pointer to a given SFNT table stored within a face. */ /* */ /* <Input> */ /* face :: A handle to the source. */ @@ -586,10 +649,13 @@ FT_BEGIN_HEADER /* tag :: The index of the SFNT table. */ /* */ /* <Return> */ - /* A type-less pointer to the table. This will be 0 in case of */ + /* 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. */ /* */ @@ -597,69 +663,85 @@ FT_BEGIN_HEADER /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ /* a list. */ /* */ + /* Here an example how to access the `vhea' table: */ + /* */ + /* { */ + /* TT_VertHeader* vert_header; */ + /* */ + /* */ + /* vert_header = */ + /* (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); */ + /* } */ + /* */ 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 ... } - * } - */ + /************************************************************************** + * + * @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, @@ -668,36 +750,41 @@ FT_BEGIN_HEADER 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. - * - */ + /************************************************************************** + * + * @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, @@ -711,16 +798,19 @@ FT_BEGIN_HEADER /* FT_Get_CMap_Language_ID */ /* */ /* <Description> */ - /* Return TrueType/sfnt specific cmap language ID. Definitions of */ - /* language ID values are in `freetype/ttnameid.h'. */ + /* 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 a */ - /* TrueType/sfnt face, just return 0 as the default value. */ + /* 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 ); @@ -732,15 +822,15 @@ FT_BEGIN_HEADER /* FT_Get_CMap_Format */ /* */ /* <Description> */ - /* Return TrueType/sfnt specific cmap format. */ + /* Return the format of an SFNT `cmap' table. */ /* */ /* <Input> */ /* charmap :: */ /* The target charmap. */ /* */ /* <Return> */ - /* The format of `charmap'. If `charmap' doesn't belong to a */ - /* TrueType/sfnt face, return -1. */ + /* 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 ); @@ -750,7 +840,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __TTTABLES_H__ */ +#endif /* TTTABLES_H_ */ /* END */ diff --git a/include/freetype/tttags.h b/freetype/include/freetype/tttags.h similarity index 78% rename from include/freetype/tttags.h rename to freetype/include/freetype/tttags.h index e10244ca..e5cee68a 100644 --- a/include/freetype/tttags.h +++ b/freetype/include/freetype/tttags.h @@ -4,7 +4,7 @@ /* */ /* Tags for TrueType and OpenType tables (specification only). */ /* */ -/* Copyright 1996-2001, 2004, 2005 by */ +/* Copyright 1996-2018 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __TTAGS_H__ -#define __TTAGS_H__ +#ifndef TTAGS_H_ +#define TTAGS_H_ #include <ft2build.h> @@ -40,7 +40,11 @@ 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_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' ) #define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' ) @@ -49,6 +53,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 +62,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 +73,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/freetype/include/ft2build.h b/freetype/include/ft2build.h new file mode 100644 index 00000000..e7ce99bc --- /dev/null +++ b/freetype/include/ft2build.h @@ -0,0 +1,42 @@ +/***************************************************************************/ +/* */ +/* ft2build.h */ +/* */ +/* FreeType 2 build and setup macros. */ +/* */ +/* Copyright 1996-2018 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* 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 /* FT2BUILD_H_ */ + + +/* END */ diff --git a/freetype/win32/freetype.lib b/freetype/win32/freetype.lib new file mode 100644 index 0000000000000000000000000000000000000000..bd545f97079ced45aa8d031c894c3efbc40e42a4 GIT binary patch literal 935774 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%0A7j$tpXv&4)V^C0|!w%N(6y{N9G+_al}R5YcnJ; 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μ%4Nq$2w%#rX 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∋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 literal 0 HcmV?d00001 diff --git a/freetype/win64/freetype.lib b/freetype/win64/freetype.lib new file mode 100644 index 0000000000000000000000000000000000000000..f0867b8d953459aecde337270e3701fa323875a0 GIT binary patch literal 1737310 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� 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 {r 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�e_~l+k8AC%(2JR8BGQPjkG=LRCK~7;QB`?FqtEl`p{8}YnwEj&W35_3 z*gf=Mj>>9!tPoj16FUWHcFz%kasBCCZZBr&Pv=pXnOnkk`q;ab8!$MoBXmxS9}fmY z@L+&<XWO@RIR|2p#B;&d_}NDwy3G-Yej!INwGfR&p*+AE_mR5O6xO0NhcIc(XjCR; z-052PG*n8w#g94nKk40!H^9CwV8frsc%zJ7+X5}JV%=?o8a*5jR3dIDTV8ndyB&Q( zLya4aei!UJc{&0yzf;c}SJRa+5!C2-oY0y*o|^D-RyJVNHWW70gZ0N0c}8!#0&J!e zxeO3qLRmBI8zfdt68u<QxR5$L{Xvs>c()q&<ELTq?LO90z%p)CMrSmt=^5Ln#xh>@ z=e@W513V~ZOREB?Bw-)Dv<d~9!yZS@hXM8j#aDY`IC=Cim1PW6;<Map^KvZA-ozJY z)##UU1aB9f_B_Rlm1jz|$BSo@7I>hq>EQmTsQ%cE5?;El+0JK{(U&u|n$2smk|(P7 zt-0t8_x%+dZ2;H^v3sC)gQ}0}g)joq7pbY>p<q4EIbX6Ll}S%h`&eDU{+@Wyq-S^d zscc3%e}{)jBHrPN&NZP6LKizX!0r~%T|l3xm8hV{+tFA7ineAdc`s5Rs~$1nTG>A- z*l3jWGHXeIy{!j?rbYu9CR8iLgW1(s1z7?g@e{1UuqPy%Jc<5^dPC9A{sofgQ_n@) z5V#UZ;-Mh|Nign)Bzo69$RqLi@O?r$3oTgqDGBM6k$t5T<O`&}Esomsd1={*kQ72_ znYj9KrK}de807*^v@n;BK2w*RkczqA>29awJ~UR!!e(BXZ=WwYXK-`;_ol=in&4z5 zq~VYR`*BG3i{K#X*3IEuCc@!*BUWaNh+hUU!Y<jQ9Z7U&7ysGZt~|WIG(3E!G<?w+ z((v)8OT*<6Qf5f-X!@o*S{4*JASB9xtAvFC4r##nzS4jT`_>YAwobwID;$C)Bw{TT ztiEYd-wQ?FpO(a+CM_63A_k3%>C)+a(xg7L1_7rtNGouZb|FzI3I?H;;n1C(?PbEY z2GQ+O?i%46Aqcx<Gol+!AkCaeQr`4S<jn&~EE+FFN`*vexgm+=lm<)_IeJ49>)QlN zNW`MqXSyU0bxK1Q;h51+8jA85dSNCn58ClacSj+JFoi_yb%H%8O&T<9KsF(19-+G* zAqa+$h|$a$rw?^VLk~HmJ~PPAU{Og3ER}?is1*nn*`}ZD=+4gm9l}19_oDthHades z5)5-Ff<dSP-Eaa)<svx5zE9YuI{R54)TaSFHag2})rh-b5$XXPx)XY{{oe@tfF#Gp zj1fEvOV}lw)KBWp&hGCMc9U~3m0gh^WU~W2-PzgwW5O<>^pa0ySCk>ye5Dt=f97^i z8QotxRsKmD*ww$YUrV1_$Gr6Hw2+8TCl>6ePc(Yme+vaa_vL(whmff3ws61GooSNu z5TymXWbw0@j|&{-s*tGm2?n8RlX^ot+b;;)nmygFIea4oVV7*ueqFk=v)d~2A$y=S za{O1)Ncl4<^T434jLrcq&f0$S`f7QRiM*gu!N?2R$4YnJL|zDq@`CaoZJv73X`&b1 zsl#!l@l>>0Ara#Z5tCu~(QchF?&U&5d1i#X5_h^g1%j|6B(n1kx5Inm8KS=E4AKf5 zSrihLf?yDeo<?*h^ps2?5&J`7TZ0gToEam~6oRlzHffC1ot@oJxLtXOQyMZOLmD!E zpfqF}N}+b(JYs#IQ*otI5GfWC#p+*zjmJ1gzJQ)8F8oZ(F@hl^VtmONJdehUg47wL z6*x+PkSLD?gHS~{bZ2M#-@>*A(d|+wM)*bu!Y<h?)r}^QX3lpam01I%tVK9x^p~>6 zJEg1(haMQxB}S580--y4K`Bx#BuZCYSQyez8uF=D$LIA6_01NXU+Yv{>1Cy03yIk1 z?%{X3%OSZA;Zvz$QMYs!<(9xwZV8D-6~Q9ZWRcO3bUk?(_6G|4TrWwwT{A|YDJ)@^ zY|@Txx)XXcXE3*W%4vP@!-w-Ew5*V5kCNm@Dk-)`+nS;q!qu0^10hi!3=?sjG(ehk z=xk}+XXi+#zdcGiX~(&ebJ6*nt6QL+Q}C#s3ds#gSRm92*w>w1Sf`otL$^z5GvXs8 z$`4_eY|_}GJ3G7dG8*M54Zy#-osCUy&ygggK|&g&|5h3(oL}`47CjlHOJ3Tde_Yj~ zd#-lK^h;3qRN~j`<Fd0i$WnvwN#2K^jHb&;9k-U8<UQzN7?_9kgeI=Z`^uArblI)x z+H-EH761K79(tuAOq%I4rKCxhkvrV|EAk*#ASpC*dfO+AnMG@4>2f~;!L9!IjBy5Q zvG9}#V`kB8+4y+pCllPiFj!3*i!f#ug_15GKoqA#S~n$)7MnEp2klB25$k7lmE_iZ zUN!k7??_H{JYA;VnxyfC?rX#^1c>kfo#601g%V6=(GqRCOnNH0J9ho<dV_TUKIHoM zU{MaI%X+W(&~Eps1`Cyhy8)a<BK?@+DO`ElO`%ibjZc2wQ2AbkVP_OY2yS4)4vo;8 z;M3C%wW4%6o8WLSUv`W3>j=7=q1nmcc9PS60<`Heoyq-e$}f?*8kj%jknahcMbb@B zd6Dp*p;K>~E{i?{s|wZIA?kMY7CngDNe<n`S$gru_FX*8V9`vMoT~>b6Ta!P&f2}= zqlE^Ge%VAWle0*A4L<aLiXzVB(*>Uflh3#Cq5n+O(v`Fq>R{m0Wy)J}WtTQzrPoWe zL9JO4#$3aPz{iN;o*4~)Fj%8B7Gcb+6FKW7oXLIie%jv+7X5II9AV5X8l{X6%}$>7 zI2x4(mTu4l!kAeUN;<v!<nDpj;tLGc!y1b)X4c8@G167=YTEM#>qU)47_gG|VMU>W zMR`b&_4l~v80FQav4-*TO78t=1Ty*-Y0qJlvIdq8Y64-*G32weM0x${vy3MV)*$LE z;Rs`9q3I$ls*U7^?R)hGgLQ$%B8-{!Gx!*F;|q@q9i$$^*&2&5W)_X7=`!^><f6Hs z&N5inYb?T;S*O9rV5!f~MlYd<b)Uu}jG09*7>)9J^P7!HHHyEVgq|>F7N6b8)Ps_H zceZnj5!MG<ScEaN-0(4alA8(wiorUfu?S;koz7W$So{C5rO03n*QzIB%&ap^thzs( z#tfD|Pa}+(btY%&IbV3zM~@h+%eAlwV`h0wVO{*v!M_=->ogW&%&fCGi~19CoB#05 ze+<@L8jCPy7UnZarF`-WI|>cfUo;kB%&c=bOYaZc9@~N!OnTjTQ)3av%o@d6dJL!h z&9%m0{aa%Z#>_gGv-JKjKCV9+jUHAe>OVQcm|5q+$EX{3SJwVyuyQmOVa%-2oJIX4 zxx(j`JZrFKX)MB+S!3X1d?<a)?<0){t3hKC#>^VaS$b~#t$4&_gY`#^MHn*+lO%+N zfrGpFZ%aNgSRERRFlH8p#-vi7v+a=;25YazB8-_uBYV0`<1D!a^IOrW>p9=Auka;| znRNkt(i3g@clYkEH&|md7GcaRT3a&Gb#d7ZZ3b(q#v+WFmBU$jdCmB;cAvqzMq?4i z%o@*GC*n-*<8v4wdb;k^ScEaNCcww&dk@QnUmL8KG!|jZEKG^O(tCh2Cd^A}m7i)X z!kAeXah9f*{`~!xN+T?N%1jtDE0?qM@*47=y7vs$X<9`ijF~lwv-B8VGIHH^gO#tb z2xDfUvL=<+Z%(Yg!(h$VScEaN@=UBhJbuMZ25XJRB8-_uPjW^cKC$|VyA9TFH5Osa ztcy8I@1wqN@;+&>S~M16%q(<d2uo+Z*|vAH!TMBV5ys5Al(Y0cYU7%>s|}Vz8)^t+ zW_dY_=5pk2yyu~74Awas%L|Q}rNGCSrR*!d=^29+(pZEsv+_->J6>-8lfkOiScEaN z3OGy8ja~DGl^U$|8jCPymXEXaKI-g;-q~fa9@AKaF|+(8)^`uwd8)yBRbvsx%qldo zBEt$XCDGgRK8-~fGpmTR^g17#G5K<X<<z_hV`izGr5Tmp|9*9i!8%7{5ys34aF(8j zX^+o2*I@ZI7Gcb+shma69pqMgHfEo}TCA}MV`de@CtcS2!)yD~UMhNS+^(?*16I;( zImlUhSYLe}{JAk(eqLh*CAZ}nwuG~0b8DEh#b=;XmvKk#RgG2BgM|u&7)EfWcnuiS zkZ!Q{Xsps6tTN7eKx18h|BDL^*5?|ltOqN^SvSxb#|7)ILS*$A9@1E$9<0kai{3F2 z<h;i&|GmNLqgCq5da$N(7Oi0qf;8fajc$W=qQ;umgEgJA?!=kgi0B_bH&~}@tm!>i zGk`T#d&cFD{-wdXKx575!J5fgw7O6AW7wfJ=$>Ur<P?oHQ?QbrMrT25^u1sG*PU-0 zHEO2DB8<5nQmruhs2{IBIcl)*f{Hs)bCRFG&<MfO+t;cI54~Zq=vkQ@Va#D&0iSf* zu9drA*Pe$&>2>}|jYSwUYYu#j7+zi(Lb2<tS2Px3%q`_g&Z4)-R5yNgr0WThhsmvJ zF2~S1UtdTU?|!VIC*~@Sp*JEYK)Uw6J^OlMuI8AXIFs9y)v49q<gm)2NtbCAo6`T# zhUrIp+L^~O^zQs;kPhyPKi3m8pJQlUnBvpfHVvaWj7m!@mM+B?av_m(BR8<eNzKBg zwZcR92`|HVCmdnO{g;-9f<-=G_wf0yhfg29o8*>>bz%=6cMqTQd-&w_@R`=b=b9cq zH}>$kzlYDCd-$~U@Y&VF=kGmyzUtwVo<Zp)r|03Y9zNrG`1m!Sd0<g5hm|+Y=gNf7 zf*!2pJ$zUXpN*Q&RS7$P(tNH?__Sy~<q4lRG@tnipN}=4xe1>Gnvapv#Bv}oX;kYL z)~@7<!AbL>Eps$SKI4*hvt9uIbU6!W8OK}iWG|k_+XKN*p$ZMhG19oCy{#9*SIp-r z-&zlT`lG?h)>s^43TqK(x#^7KoZJ8UhQTV-SR7*ti&~Ho*0cF};|<o;8jE90VO4S# zjms3)`B{JS8LZ_Ri(^b-EjER9U}eEngLRw6;uup{OE`=2klg-FXP<LrA`c(YSR7*t zs|r{nU2~pz`dx$dyvE`fQ&`s|SQOS-uU~OiNg}K_H5SL1!n!uWqTKk$(SMd3tbb`N zjxmK*%~|@G^1Ds%A1Y0R^@GOZ7*kkFO<^7Ny!bDJHG~FuIF2!eRRiC2c_^K6eA3YJ zguyyTV{wcrtYw@<O@df`u3q(PgLR3<;uup{)B}q(SYn;LYv0udYo^BH7*kl7*d>)$ zbM^8U4OX?r;uup{bqN*(sbNH)ugVg67}Z!DV+yN2!J-(tf7|r5!Maalaf~S}YUIXK zc4Tqm>`)@CCp8wwn8Kp@q)`vsnkRo_u-Y{i$C$!e&RJAm<kl4|Jakzitbb@MjxmLG z9k51N{hvDZOoR0wjm0shuvT!EUJui6zxC#6iLeH^D16NFao{~sQXfT~pb^%ELvA_A zV7WCG$C$#pp0lVeQ_f#{|2c0PtO**6V@zT3c`{$eCf0~`?~gNBL5;;Rrm$A=u=G0r zyz{c<25X_l;uup{H*%I<=kHo7l^d+<H5SL1!dlH)db)<Ro;$)|{X%1Lj43QEF(l=o zd&i1@8>~$li(^b-HE@>R_pV$w`*VZ!lE&f~Q&?+EVRe-*{MKN-tFbu76xPkAunsQ0 z?H+^mrN-hIQ&>?`SYuYad!xZ}P{iRl#uQc~e2sqN<0F56++h7oV{wcrtR~LV%WLh~ zTW1)o3pEzUn8I4iS#F$ZTrRu4IXW{@=K~sxV@zSK<19U_M^F6h=LV}nV{wcrto59w z*Tb_8UcS^|HE1l3F@+T~g|%<XAD=W>4`?ioF@<#tXOWs(ivPR6b{MQ@H5SL1!eXYd z`US38X0YDVSR7*t>sHS4;7oaV%5MuVyeg50hcp()n8Io{h4uYkfBK8T8aNnAIF2!e zbsKz*=db9(LC;^E2<vo>#WAL^Zs#n$yjD!>Kh|JP)>s^43Tp#rQF&3ihCDPb!<h(c zn#ST7Q&_(+h4tJmBmZi!YBd(en8L#2G18^i4d<XA^9@$B#^M-LSa<|V>Ngg}?;B{a z9@khLV+!j|&Z2^$x-om6I>2DPrm;B26xLm)umay*i{A|NfgiaqG#1C0!nzw;kuJiW zJv4Z*e}dJ22>IcwGC0g*%01+h=;z<Q=I{3yEVstu7*kmHa+W@Ry*cS+*MLM=6Ezmc zn9_BhDXf2vz2QrPHB)18j47;Nah6_Qqb6>+)nL_YERHdS^=ngDRlBZx*<jtFu{g#Q z*8QBNmzS%3%nXC|SB=Fnrm$!w%E-fwx9wkHu-?*G9AgUWLC&J_i(J`Hzbq+F<l(<H z7RQ*v`VFu~Sh-twzh<xooXAZ{9AgS=BWF<_k~{FgfnUu}gyq&)8=*1Rjo*?_qHg?Q z(-(CH>mrTCF{ZE{;w*h!u2}c}g9fWaV{wcrUB5Gh^>m5rM}t+Nu{g#Q*2A2omsfHA z3$Gch8#NZkn8NzKDXgQFHLDHQT^fsHOkq8eNEh`{e}7`mU2_w8_=Lvd7*kk(Foktt z;R1YoN^i^U8jE90VQu0p>gTE7_-NuLd{Rqib!jY)F@^Q0DXgJKKj|=7-)k(6F@^OQ zXX$zP@#7P&HCQKWRfc0sVg1n*R`rIbJ~LPsXe^E~h4naR>FGM>(B<g{E2yzJ#uU~Q zrm%iH=E!z~wOC_u3~<<$UGpJ1O}Z0zmtI<4;4RNCP`p!%)X>zaQwzP9dI}10<cFqT zI*ES{>e5L$myXZAbb|gxs7ohl+xuSXQ53IkVp4u#S+K02sLY%AP?SkO(O(kG50!;N z-b*jw-;XkBCzOWrON)ZRQVKqR4@==PRUr88!sUzVs<7Q}`NC@Kfs5Un%C+r@SC-Rq zNAmq*++#c9^4j@z^%don*l)HRTOiY>w3^SN^7(uxUU6HY?^Ih}DYmL5Ze>+P^`i2+ ziiOy0x1L*r)pBF&<Z`}iG9l|L>Xuh6tSCne5`K^g&V%OLDf8$gc~-0lqr0%s6G-CX zTV07@tLn=EP23W#vToVZ^2OCFYnPN)VFTk8CR+qZ7)!*@*v&a9+<Lw6O1!00i&dql zG~}gdUph%_9BnG1px5UM1@enaf?kyWr4wia<Vz=9V8Y}VdW(FasbxOYBO|-W92un? zGQ$<GUnvWe6-`x4aEiVOm=i4V`^$oA84o(S+EHZG;()&p77}R`TuLZqCg1T3rCXt= zc0xgENia}USmNb%%M?<Hx1hM7sI*imrl1NDZ`w!N1POTyePu=Yg-S?=X!~57P$k|# zenDY=shTjvGb}mox&BbTztmS+;MF(9Hd)A3ON#Rg)%>YmeXDGfI_ULJEe!-iB?Vq% z2W=DLqJq-WLRIxEUTt4(leW|w%r7Yj6)OdljKnV1Cd@^prA5U76=~2m;WlgY^GlR~ zTINTg^DVkf+T38Mptz(gUnTQ=J8YBsqJmICXlkf9=+(CIHfbkLRf|xtKGiEW_ckeW z3q!tw!Xm%w)wldMse|6);*wCAzqHV6>;!H?Ohg4OnOcb6M(hu6Qlj931-^W>DCAAr zHrxa$^_GQ#rJ=H*H+eI06C@wGS`a8f`S`s(HW@b~ecs~yK*3aBu*5(nHXk=ZCl&?* z=p}uAuh^2@q?{Bg^#y!IYLPdwQMpN<OI5a@SP6QmR`;lkWnLdjx=bxBMs-Ts)!by` zqOz&J{2<zeSKI5{q@7e+tdyZj`niRkMUFf{ZT6RzmKAw>?2K-*l<)KA7pW!r`TjD* z*1BW530mSU3Ko_40!2j_coG|_n;^MmB~yz^%TyooS8T6tQcoxd1d59b%StIyfmtS9 znKv{QdFm@D_L}x$H-U0XgKB=rj|!vj&~8#s3WSuRfIq*;o7lJAtS|Bvl=y-LWkOH8 zxtsL4fly&^YGJ5^>uHa7lN$YUu`f^(EDLbG*!taqC@7e!1On(Oj7{H7h!SsE0M$9* zQ?w?-H;Okw^7FlgCBcHJQ+??F_-67cY)uHM{(}6%AnFKhD{nF~p)5aCJT+JnBHb*r zF6b>SE(#Ttm6m#qJ?KsBNu{X1zQST+Ydh1M^+jd*3Wl+S+FX{C@_oL5f^1CGC=)x^ zpI=fE43!3W`=FieP3nt6{$gKg&`-TT-|ya}4SIv61qEdVluKw`VjFxDB46=_ii-k; z3c7pC_V{L8fp;qEy>DviR6Z56?wl{cd=Rf*7A{}3tfoQ?|8!SXQzd3U^;OqbB<bkR ztgEZQcLwSOn8rp!&F>OswRu;9tlcN{^%QLNviTTlX+EM4vAHFsMFmP(5KThca?_N^ z2_>ZkK}9LfhZ-AknsgTx7OEjkCW~oQr0qFP+VQ?XNL2&sR4;AXX;Mwd4;7&cRQzZM z^A}z#bcHj@OCr_y;)4XqSG8P|rr`q;i!`|ibA*y*iz4`(LM0}P6-&$KS644vsNd98 zm~QDSt)$XtR@L~L1u|gSwfH~-f-sDg2Wqg>D4%!0f11ee@{$V7MHkj{3oC2zeFk1q z7y|JLi}}?EU8uo8Z&opXX?a;~MNLV?(q;H!hT%EAqT<@5TYS7C>26xZ{6&^q1z*uf zSoBl83hU@Q9Z8-ms=__}Fi&0B!(03GtUyym<TL5I@|ue4cunLL2p<orA@gOCFnwNw z=Su<qT7=;@qYfX5sGc9@@z8<Xlct~CR#MHPkofJj6)X8yFcLwRFQP9>&@FNdb8-w{ zV*0$KVnum)S^0vhn)%4S^75kT>in8T_}Xp3l8S}b!lS-oVWh4qys~^Dd6X|iF;-Pb zo=DAgm{)re0f@AD`1^()z6+P&yC9yN9{vK|(_i4nr@;60Pl}9@vq^DD@=SvAcF9|9 z5;Vy(8Jg%TlA(sDh;TNKu+gt**dE>jeStl?hqpBvJz|{bxsnTo$3pMHtdUOmC)wtC zWVM~-X@&CcEy*y43eV*9C3%a|7U@g!7U&CkZX|gNbPsQV7FD1Jx`($wPq4S$!&{&y z+M|1T3-m?y=pNol*=HROk}|P}N(7?SAj>#nu3lE9U~09=s!T459$_X$HK}h&ie<8| z6|DC>R(QfciO_TXA&F(9OwJ4&wMdl6D;srkhS;c+v&2TNMO)M83nW^6t-dC3kL42+ zsi#&?r7+r4uO~B=UQcH#y`Ioi`W^+uhmIa4BYcy<Ndrp~IN4W^nPnK#(4wmL#EUK< z*<Ylfr+-pp%)?qzd@KqPCDCtKR3a2xm0*ef!<J>M5-ib=*s|<Y$pf$$de5JbJ;|Nq zE|@T3{KTAz+1c4io)9m{&Yn1NB3&=ID0@8V<_%c1_5r!;qetf+Op_(Iwj`YVzrVEV zIT^?OUXqgBfJ`a*|9?rd5y!h;oRXYZ%FIvxO(CfU;#jUEfgrjwL-Xu#YmO6ls~s-s zm!=fj5v<+b1KjPiMA(<%;*~;PYq$g8|I8Hvqn}g7uhkA`376hp?y}&#*zG;}*Qpea z1IGtFaM?X@^fQo;d*FK7qb2(N$AP1@`uK6+D1NRvI3+o6X3zLh`JUJV*E4?ofg53m zOZxRV1+@srIlwUuOYyKP4|+%RSBpJ69EJOu9nMm26wccg98a$$ekTLB$AYs9_Y&Z~ zIu6`S;Kp2ueTs09lX2MD8x4O3%;sKjCjr-@VIXp6XOD3290zVCBJ>4t3$GHk`r%?{ zZ!7#C1!n%$0!Qzj>~QzO9=4a3hRqYWzA11uz)c5c+kAne?#j*{)#ra}7=g6MQMA$* zAbvQ=rQxu%_W&wP1ehV!9L9Glvcuf~b>AA48xC@*?A;07T^fc1ak8^V`E~9x9U-n9 zXQ`)DpT}5mynnIO(`S%>6M*}wR@h3_j;LOp{BwcP&vx-spj3dnS;NA-Z8~Tdj9Y<m z)C+6WAKKY_6S!5tltctBmA&0i&j#k)<pP(gUi}^FB49l9gE_cV<-rh8E-<Yt1TIzm z+Xr<Vn7u0nE>-=z4C+&_$1m@3kV~Y)Qf|bLXc!K}DOG=pZ&aF`UHK{qs0p|>s)%r@ z(s3BNH2iGt2>o;pE>%6C-|)C^l%ywckW1vBB^`sI+ooYS5GT9%QM=r2!P(V=c?jrJ z;PM-UwM70|>ND-c76j(4H3F9?4@>;$cO`vp78w1UYWzK+2M*(#C0xq3!N4_Z*hKzW z!lnN7Z$0ew90#eKUhRSF8SY)cbplrrg#eeTd{2Syx4=BB;S%|0i68YFJ2VX0BWG7` zFT($I;8-Jvq^t*&&%e<y0%>pWJShKQ!P)g|RGx2IaCYs3^5I=OoTc1oGyRW%+r3uA zF4eeo3DjBZ1V%sG)l(YZW*rBP><wCvx{8BbqC70|`%N0`0rQ_*1TIzi(){WICNTQh zE`EfYa-6uL<HSun4jlCdR~-lLAHdZBS8}UJMWX#$@}+M&<_Ewu(GUILQsEXMW48eF zvtI}tveR~)`4Niqff+*sF&xd4?egzD2j)4z484!T_<t|i;RYancLTGLe#!+$^Fce@ zQ55K^2k`9kFo#K}r@+y?q~-UR8$Tj&sp`vOs7C>FdoQ>a7`P9ZD>eyxsq$|D)C`y} zHC(Fv`x9{TquBok2RUSuZF*lqxO;%P=Z_qg5_c)oFKHNow72&=*!u~%-_nnB;Hdwy z%jZ47eGklA6j8WT>3tEnK2KrX|Fgj1*4Eyu@P8ecd;TJDsrn5nhQDhVfwZ?r`5gT# z{)-I<xm5XFhI;iKFzOb8OBL=8sBZ&i8g)o;sqF2Cy-HxFJuh(dqd>d-n+E^BF9?i& zw!;;m04@ja*KGoosvS`?yP_TS3J1AV<#7%w(#Q_%jImST=sDLe+)nuK2IisH1uj+n zOM~K7V0OMKa9Jtry$%28cMFVuwhNc)!G^bVgt&5C(tnGQuM@`{GMeQ0xWyNc49^UR z3xKQ9uqYle|FhVmdDE@OY43jEHuYkU!fiWFd%J=AxEFgK*!uw(_d5{a66vr>?<K%Y zwc>2jy9AgOR-BE!yMcMginG|G__YA@nH6VaFYR57)i}r{(qXYj<uL}BDOQ|~y*a>C zT5&e^8Z`_L7^hVA<xb!>_F`{1_%8zUffZ*Hzazjn-V>o7E4^m`bD<SyV=n~ETr19! zUW(uKz}#)c+1Ps;m=-I}Vvow>V_?3r;%w|??7`d)2f0+~rS>~f!*C!@smkLL;HLIs zZz%XnfLUe5*~ITxz&v8bS<*}Pb^x=-inFnI7?`y8MJiIIm-5dIOtuwgW3LpLIaZt{ zeq?V2Fzc;28+(rc^A{`5Vvo|>3Cw3!oQ=J-572&bkULg-#{e_MinFmd2bfAL&JsVW z&y5;}2aHpy`mzzY$9u6y>3#J$?R^Z~7roeX!=Cd)oRVCs_>BT?yoODcf7Cvv9jCoH zz*Y8QkJ8%+%)M5eO?hkvX1f(<DG#cDUBDc$;%w{<`Uq<^ILM_+FU2nxn4lGBWA7SZ zmRoT)@w*e4hpjjpd)tB8WyM+SQF-jwFq95*smk{d;r`AcDbq{&H$uY*WNLfkfScTl zy(}2H9GF@w&L+LL0rM*>&XQg#kFCJ$wBl^+eF4m2E6!q%(mV8HtP|oOm#7Ce_VR%# zwc>2-RRgoiinFozD_|b6;w<)tBThSj>9XQ%?EM7H0D7>7OQgeMkJ39z!*C!@sp?BE zaK2vbQT!GFv)YQYiQoOeY_j5P;@1YuyH=cyy+efQ!U2~mz0^KNbP>XEsnUCP7v?!Q z$Q{dGsEb1qr&RVX2X2vuO=XYf<2P#<h}@;JcUu?Q2M%(n>`{8Rb`ipGsqD3Mp&j8M zm&%?Sx-Ys=uRehQN6*Qr><tCRt>IGHqxtwHz%0;k@-ggH1G7TIrLsr$`ECsZk-Jp! zdjz<@^kR?tmrh_lv*K*(U)rabZ{Q%8Dt=^d3@~0R&c@!=z+7X+*|d-Kz}#!a+1T3* z%yuiz#$FdN2dp?7dxQRo@e&8QROzMqoU36t5T{h-;R7zzi@j0c*8p?36=xH_r-5m) z;%w6UF)&|QaW?icKEv|@4sz)@cseZhD1H-xx!Q`ev9}7C^;Vq49`&b>0JGhSv$59& z%zi7*Vvp+Ifd4`th=W`r9X9r+0Ha!Q7JJm*DuG#U#o5@q6PS%woW&m1mlrh*#gAO7 z`tmAp@AhJk^6wBZnV)l0$4u`yU?y8}miUpq%Yg}7aW?7wB`^<KaTa@&f6oK6(~7gP z_XRMAtvHK4ir>(G;rR^*xnq@YDKK-aIEy{1FDrn#)rzx;-($dRw&E=ID7|k3^O+TA zV=rwl`coX_66vtmqxv#N!*C!@sp<=T0ovD#J<7iY$7ydhaJTeg&k1{*j?>;#z&+oK zJt~h6fceUbv&p}Vedw=nkV}<+R2~z7DYW8j>@5O@_Pr&S%AOOt+cXRZ;*_d9?gs9m zUhGkNTaMG-+rV`lhrOSG8S;gQT_PPe>CFaaiWO(6e-yttz|>fAHui1>=3Xn#VvovW zGcavdoQ=KDfH`2r+1MM@js6}7xnrew3NWe_XR$}=t<*5wAWo^u_j=&g_F|9H`|xqv zdm6ZwUhGl)J_hEX6=#!wnfvk0A{^ur`C^ma$-tCaaW?j<fmvb2S?p1I?*`@(E6&E= z4q!U1IEy`cp8g7$zF$%*lG0&g&jU=h6=$(W@hjCZ+#pV=%J*vEuIa@dmB)Hu?ziG> z;`b~tZC0F3{5}KbkQHZRZ^&1u_c+L<D&Gv~rf3)r#3@yJRp4gyVvo{W2h3V4&L(~j z1M`#>XGt&F+Xc+0R-BDJ>1%wC3<tSX>80{L517eToQ=K9fmvk5S>i|bZU*L;R-BE! zr+|6hinG|G^7uf*K;$k}d3+As!Q-%(c|f;xY<t6j8>L}W<sX$t;c?oV16*Y<_9(rL z$7yc^aQF9OkNSgWkJH|6;6Cof9*yTe9H%|UH<)MRAa|_%8wX6j6=zdl<^fY}#aZeL zmB%f>JZQz)*n1wB4lB-LFBA4Y2j;L9XJc>ZL9B1!Aa|_vUINTC4JQMesy@#JW=Svh zJm9Yd<}oYICVm~jylur<(o6N_ATR^|4FN8Z4jX%;fEjPaS?p2%O#^0u6=!3w0hn8@ zIEy`s-($dRx8iK<bpf;AinG|G_zgIObqgHij+NeAV0>1bjlBgLMp#T;zIDK@?#13v z7`Y#qr>r=e^zH)Y11ruZen)_D{zt^_Sm`|*m<z2q8+#!Q(_4D!3l!D8*rWdMmgBT{ zH*gR2VvowV<v8ti0{2lb_Nf0mdYtys4&!+h2f0K(+vMLE4I_}L>&q12)L!gS`=|tF zwH0SmU+xEHlNDzZzcygrwc>2-9U{!PA{D99OYs{4%tR~B#@-BI=2>wz@mmedZC0F( zy~lysYQ<UXQTe{BVMIz&m&eDzebI}(p)le+qFWNzRQ>&M;6`cKRQX5oD?CnnrNGVU z#U90P1u(Z-aW?t)7%-cyI7|LfdwUz0ࢽuiXHec&LMD!tSnjL|S0h*PTk%LUHY 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%0Am;-OAhO<*wmwu!)CY<X}nwk9|jTN50N ztuc;wFt#SpG57Y3K-Z)u*g2^Sc2DYz=Y23Ib;b*?lTPBH=zWujbTUw*CI7oiv>2#m z8Sc5<TRrI2$*cv-eS&)%icgSop8!|2=4~oILCWpqd9&$_Eo{&=wCk;@u`42$(-E(` zL!C|`HD(uu)tH>lF`cj)<8+DXgw^;a&CDjfSH?GO-Ws2TGs<t%@k!nqpM>p&OWqom zXhQkDJshEmycoaj$BWq_GePYW$+d;{@KS|_><~u!3cb<%E+cQWEn*DLmxIkag5Y6_ z=XCBZw7m>v>3Sqc(}ktC*o-Pr9OwqU)rmVSfu=Or5ijlSiI+Ez7R(^Me6T#w8F~*@ zpfjd42;)1ff-sc^drt4iV%pntQ*L-VoAV@k`CxgVGx+`jcnepcJGML^*td8E3|A3Q zJnsPuSl+te;JvkWxy#P>)*9EltGu<wja3_*#Gvb)N^h-k>3*JffVbA<#;P^0cc};6 zShdEbXB1-Q#;OhOAoqT};Qo=S5UmnklFV<}3o*U50a?AVFCgpM5SibF7b4o4P>J8C z7pmF1aFO537jD|haFyQh7cQEraLv9WG2C>u;WEE-Fx<73p(?+<Fx0el!6OFG7q-@{ zdhZeAtqmSA-rC?1<E;%IG2U9^dXE@yEf3bc9Sh%Z6?oeukGclP4!;J>&O;5Dosb$Z zJ2N$4c8Y4i>|E7=nbx`_)_|GTYQ#)yUE^!5M$EL<Exy)j!~)C1`@Y%0vQU+B7^%0$ z$`PcCO~2{BTvwP`45=^%-F<}_Ar-zZxp(LK`XuH4PDzcwS5o8emed$W`Xx2Sp>qQb zMQV%_R%0Bx7Y%j7YGeZJn{nmc$TA5bbta5XA|bV=ld)=zOHbLybYs;9JB)u1pwGX+ zcgF_%tgB5l&A5%$fM=J41D;t92TThz+2KIQ)P?my&7KBACQt*W4{8oIU|OKR+l6=1 zv``HY+!6FwjB56TuRhoSJ|RJGNe}KtsWLsMqu=&iDow9rR2oz5d%qc@GT2poSy0Gg zGsQtX?A;=^_nx|-Xx~>4@1YM)inlUkTD;XE6XUHmwpuUV>X7B+tv0q=E8gmmrR1$P zHvL)HPKmeL*fFbvQ)WM4AUI#H#zd-}?dnWkc%AX++-tk)^TO+boy3L5A9)b$r?)bw znm;szEC*W=RIows2PcF_D#8p^oyB6bQaxkZQRlK4?Nra0cIcs+o%$H<RL_`p)LM<v zPW6mwM=i@3?Nra0cIbr;HH@ozhIcwVIqCnr3*OmbHL_CN$6U}SV#xaNm4^thv^<}f z5n}oPGhjNtT;o2(a|p&lOe=J>#X?Lg)gq=9TENw}QY{ibDc%nY37-{3#F!Sv#F!Vw zn0Dw`@(xKcrk&~;(+(X=HMCPbW7?r(sfKo{XJnG`Fr!bGFdw@jbL+1Vh2G*G>I7;; z65f1riv$H~M8ZDME0esR?ILD)b%@R%0TW`{8kXR&mIs~g!&=yjQ7Njth`{%^8h=HY zVm@j{qQv2vFsZ=vJ`3ocIHrOX``I!T_<1y(pv$D~kk6`-K802KGGK+8547>+NV!?V z9TII1q{beR!5ZUqj_HKe7^h22C#=ReU1K_7HOA={(+R8bO<JMnvsLWiO_^!Dy=&Y{ z`b!NfQ{iR(rG}L$@Us3=!^+UTtiRN-GGs67FXc%{(;s%k>&9Pd8g8HHFE?u@SZ??Z zG5BD);XB6QgXM<r6oU_z+anA=$|>fjHrXSsddLo~uzJiMO*LS4AT?m7HTc_W^`SgW zcM`Ry8&3fvVV_II;}5N}6IjhhSJ~;S4l%=}SBu8{2rO==2FUG(>f+o^s17nM(ci*r z>QfDnX^H;YT~kXnK&B=78+c7E)d2C1a~~k4KUa+BI##V;uE0--bDuZnmwmM?>(3}- z$5&`~fv?!?zK)5$VncWG7u#dRM|-=$ACBhjge_8Cu!X7vwot{}LKSWc4cXar)D{}j zSIC_#uI5wQxYN}l-e%kfym>__WE3u2^1Pq$#&Dq6426!#Fg~Qh81%A~Fe9Wwx>WA_ zkU8m9pvDsus54VdNr5`!(E%N(v%4K;Ay8*LdKFBd&Mt!39v${Eyzn}n6nn?3Ka<2? zDl_O_5f2~2C$pzY%}8j^sd6)lV7X_;LU@`<Rc?41l`1#w2g?oL6<-k)!UxL@-z^3o zEa%DbegvWCy~ly#5PYn>RoRPEG2`Xx3owFTWx@NRMy$H#O3XK3RM(V6s%yr6Nk(<; zI3~0q`a+FR-PD9i@|7E*rl-0Zoxho*nieckO(X6*JgR9%n9zpw=Te5Y<3r4<ZJ(%D zfDf{VV6~8GsY5(1)c~26I>ysd4UlQ6b38580GXD$#?w*_kZGw~JT27#g)V{WK7KTG zK~yW4&ia=}wMzJ6sa7#5{#8+}Vp9G`if_7npTX*z8-J~TBK-CKQTyxtL-g1C$K$W( z&ciFu@OdtJmW)0Umb)D+w}HVL8x^cE4*jVrG$pLYIP?T#s1sIW9D4FT)CsFG4n0vH z>V(yVOq%`J+>m*5RVIr5(&?gHrQOlq*>jb~q-SkonK3GjsVCSqYcgY08dFcR&x}!N zOg-5?Ge#v(EL<9y&mLBvHOx~RqcU7AvmZztF1u>}x~hRmS^WoOB=^nANh*XdY3SV@ zK1h0EUZwhmsIL7}Q{Zc>`XwjfSJL$EqQ6?IQ)WtLPHNxe)TI2P0_AlX*gq{bEh{TI zsS-SGb<WJ}liqJYYX79{Aw#m2)~R2=tn}ox%&esR!a`MZUiN^@%&g=AnMsxKT{+mO zs_xb=IXfk-f6Bn53FbSTRBdKbPIhYljQ#_%lIZ!|-rWm|^7TMd(v$k8<@C=^>z|$k zA9c@P=!A2EGlQQy?Q3yhN=pBf<gC;re1zP)JAFf#Le9(1NF9)xnVwV$)%Y}Tg{sa> zO6`|1pkJT#<Rrc_hHr0DMAyDq15z^jW~9*^cJ8PuQ<9U?GBPt$(o#}nM!Lfncfbes z8?dCRxHz}ee1yOKhB6#wzqCGCS=m`ha2-1#ieGotyE}ZJ1q={Azg>4ACn>FOa&mJ2 z{>e$>;F)_uy$SYf&$3c7GojIpq`ZRCF?ychThIEYXJ=;i&B#hBDec|8qB1%WX5U47 zzdmhXQYP$zw0=2#lHiNF3Q7U2h(>u`<>vOA2%kis0^cDK@qWCv`C#pHJ9O;QDM7Xl zUAlDc+Nn$T?%kveZ*^$jzH8U6@PDVS9XrGS2??X?7tB~v>$6W6kE}DeR-^-eao;%w z@bT%DlldFe&36j^nZjSRXaB3;AaYItew9<=U|aME+}P{mk|GUKyx&HMEPkiq{i%3M zwxkA0Nq!E$eej7mIQ-_o6>)I*EtYS`!Qpo$z8?pNxx2%-O8APh#EI_v1&@L+9NZ6F z-E<IOLocC0&S?L5@jHE2FoPU!Ve|59awM_|xHU5kb73vuA~}Ki!|&fryxTDLUuw_S zKl~2GbAjv0EOgiO&&TzH@@!vwG!7qk7;yK*!F>qa{lHC{3pZfHZ^#Ur7aYe6%piwb z*f`cg`8ppL*1t;NuDK@?`3rt<gD;5;9WO5B)9#H#a^VNJSo4D4-&z686y{)egtmv= zbYO0%folrfZOp(;+QP<B4mC@GJN-VxVEbVlE~yKEnaf<vaX`frz&th2w0CTb_S!;u zuLlfc{|(E%6)ML9x0l&i^Md23^&re4{NNUA9JoIo1?F4kVvS<~aQm5oo3w@X?;GgQ z{qPN?SO3>Ac)lUd^X;ivQy+dBJ%qPp3p+0H+hh~s;OYW*R)A|CIDT;+&W(e^^IGQs z7d)RL*DFpgEe;OnD>Dubb1#mA!+Fk+gTwRH#5g$2of-#+x!1(O;eMMP;DY-N`*&M_ z3+@lheIO1F&rgd2Trd~!SDy%Q!CdU$$~ZWjzt`j7a2;%pgTwjT5#WO3z}%eyE_@t6 z#=+tJ(cb|sJa>P93+CefIP78g$Fn6h2ygF*02gcz$9r5H9OgC-aKT)h=Tqb0F!ziA z7wjLdm$TyFuzy_wT(Ezb+daUA=O)L&;dloIxL_{c{|pXr4Fcy~9LJCV7i<sD&%@*3 z@HoFDzy-&P+}JocoWDtNaM-`80WLTW9PgEJa?|7FX2ikaIBpDZ!FfUM_Bc2k$9(}V zI9^=O4+gkkE^?2@!PN%t`2ZKp#c{kC;2_s`{fyUtFZ;N#>k@pt@TrdryDq-sF!*kG z;3h5t0XBSm6Lvj>xxF7lLbfn&8VvYi;68ZVa5(-j?jAVcb^~+GlIpoXp!zOm3>n^D z4zxFOX(Y03nW6A_4$EB*3*jqZ?pkg*JU@hSqoIL!f$8v^;bM*BI+(vcz-)ZcaJbIG z+QWw)zX3DzCBwz)-#!Ss9hf<*s^^Y?2JQytfz^h?^%Iu+G<4`EU>;m&IJyqS$Cv(f z1>^V|n1&k+ht~^X?Tv@rXMt(<hT&pek57f_9A*p|-d<zK-3Z(lZy739E)MhRw<D4B z-!WXQd2R>&ivn}|Cd0+*-%6-n56o4Y4F}x_9q%D1e}EZ7hI4x%cixsr<c_U|inU(q zLeL^$mVRKkSh>5Q`Ym9d#RtN$#TxHh@WA*}U>5B#T&(qsL--n)XFfMvtp2TracltQ z+Aj?UzlP3BGF03I%%-oZZ?7W+eFaRzZ>n$aGZ;rRVD|rLxLE6X732>137!x5#c;9a zuP#hj3t-yf2?RFx{DE)Xw}XmFz&yCmaIwbw1ynr7j3LA41&_;_2O^PM4jL-fIR1q@ z^v{9$tR5ytBGnz2-Hxmk8GN+iVjUm7VIuwjreg!c;q^k;@r%dh-OOMvZeiT9u-}e5 zzE<S46HR-^#^4$Pw-}h!Csog#4hLetMztd2PBk3fKZWI<4(08e){11q4{rEx7<V+3 zUj$6F25t~EPzuZ|r&Zq`uA{e@ft$32<#vafO~4(|toruq!n_>M3^x}#j<yioIH6V~ z<xJCFtaVx++M5Z??JW%F&IeNp;7by1LL`FovVs{~N{>J2k36=-a2tTz$}EnbIA42s zzyB*RN4GS&jtgn84KQ8(Tu6IEfGP8HA?@7^%zb{&*B%}ZF9P$1p9^Vk7cjs3IbVCY zE*rF}6-k62+^QRI3NTrI&etCHuNaui{ai@@?gM6_pYyec=aco!VE=H7wSV6RZd(oQ zVgL5T*<Rh&wIV0L4{mN=Li*R983N&-Sp7Q>xU?GD!~HQP&h{n)H@$}T@c38|XM0P4 zd$ET0@c8%;nBV<e$o_3`R;@@=_`xmK{NZ?e0F&kCLfR_^W{RKl?GN0)cLTG~&xN$N z9+)kDE~LGmf%(_Zg|yeSO|3|4_`xmKcyT?aGeaQ!6KlO>0XL$C_F98K1(*eXE~I~J zfO*r;g^c$*VE*=VA?-D4TPxBWesGI5UfjP)%n*pb<MTry?F|8LbPeq_0sqQ4+q)aM zhvI1O<v82h2HegX+QaeIKHJPmP2+6@Tyth)%^!|837Fx2E@b{D12f&vh3wx2z&z#W zLfYE|%yvKLYY*4+-^|oB-UvKcIT|0Zz*gOO+W?c|=R*278kk}~=j&f0WZekNGCvp6 z-rK-z^K-uT=>7wky65=D5z<~FFzx+ZNPAhpjPi3K?OhJcOh4yq57*y9W^kTyi*>xM z0B%DK?cx628E1Px0{3?f?P32Kom(r?27YjJ>mX#j8NdwjbH4H7{ZTnEH~YDe_Lczi zqM!4%hyD8ynD6~uNPG3#*NQZRAKctHeC^?S=?F}Up9^VkG%&?}E~LF1fw|Amg|zn~ zFzfwXNPAx~Lj!?-Vy&0of%~_H_V9Y6X$LbWHMQ3oxX#SRnm;^#2LUsgIczyr|E>mR zP7UqhdU+g}4RN%$1(;83Xb;!RK46aR=vxON`{Qh2&hv92`(qd|g?=uiz3YIv)zA6b z!~QJ;W}Tl4Y3~bQe)My`_HaGd?-bwuJq5Uy%*NWk3D8~|Fa>@tq<_<ax!KS8`iJXp z2{Uk$wpi=sMc~%g&|U(x@D(t%JJ-B_6M#9}&-wa?^Vc7k5q>UYyi<U=&d>SU!|Q{G zn1P$L#TxGl;5O9I9`<i%obCOITo>QG`1*(YqZu=%cd?J(Ho$eQp*`&1kT}~b0IsZt z_VD<)8JLIsT*&@-8JM^IoNv6?zwd$B=jTG&Ytj`Scf${Ev5pTsU!?#uiaDfX?cZ_0 zRMyZQj`wz87W%o6{;daQi=PV_@6W*e>*qq+YuXJSAHff9vBr!2O9y6zp9^Vk3NY9C zIbZ+q{^KEFHZWJ+{A~f|(;C{t{kxADxJg^A{ZaqCT9HQZgIlce;_=%Vm`pzxGT!mP zO!jlW@nU;-0<*-=g|zo3FdzCkUwb&-KY^*!-8YVq_L>88j-Lx@FB6!NelDcFX~4|z zbH4U)ypI60in;3c?*?GD*3e!8wD&784SLi(-gAKI;pcq)!}%Ky%s4+6GTs@$-0tUm z?cw?KDQ4g%ZL!whD&XFzp*=j_b^)``&xQ1_Nl!Rm!4GcLt>+YAM)<jq_ND-HouBiK z7w7LGV4m@FA?<Ae=2Jfx(%wE`>i6=EBc#37z;yO=zV>i`3}Oc71-DrHV-#@XYiJM0 zJ2TGq?g8$R8rsAAk9EN8@N*&KJpfF-^L_K;8!xVxmcaDzb0O^w2d2Q!`P#$rP6y_8 zKNr&8Q^2h9b0O_*2j+V}7t&t6|G?un_`xmKddB(d$P9t-Ppti$1>A@l+QacqiL<?# zz};Cxd)U8cfZ62dLdN?eFn{~GkojxW8?M{o2RAn_A?>9BljG-n?cwtWCCpHR@K3Dy zn+)9a8rsA4w*Z)D{ai@@wgR)m&-wa?`{MvGM<>-h-ZsE=^>ZQZ4PmCH@fHAARzrKZ ze{YVny~lxjzJ~U2yzj@^-cI0tt)V^a-?8w=@izDea@eX{FB!lL@pB>bR}Rc{KNqrp z7XY)w&-vQJ_4g(-)Is<s*81BD+>RRB!}I-tINPh20_PX_!OhK!uYb6nJ2FEc{1dBx z>A(%Dp*_4FDg$Pwp9`74g}^-H=R*3o1(=<FE~LHMsqj1q{NNUAytw|(2Bw#v3u$iz zFok~3*FW4J*D-^+xW$^kTY;NbLwopmVFfTd{9H)?4ggaxt@`oO{UtCx{9H(T!+|OA zbH4H7{7nbuc0U)=-c!J=@^c~WZ3pIiKNr$oy*{v>;Rm<s_HRdK2!wxP?T-}TvTA4# z_iu5W?M(shx*FQU^VLJZtYHpE6RUr30P}tg?cx6Y9hkc5zIh3mzeHf#`#InKz~eUy zm_k1n(%yBz-0J6i?csV^2Fw~i7t-FRz<lTDLfWg_7arHb4{mN9gtXTgm?S?J(%vX$ zs6qHA*8V5~ZdwiP;r!hL%u{|Yq<@=$+3x3j{loqHH!w$M)I8ocz;yL<zV>i`3<0LV z&xQ1FIxsi;xsdjj0JF-^g|xRFm|cF(*B%~kb^4jH!cE#@?T-e)HD%VV17CZsp@km6 zjPY|J{ks~NIeyO99?sw6z^w3dA?<AgW~ZO?wTIUSwfo06-ul2bVm8)zvAxc5w$}@| zj2ha*^;ZbYG(Q(I-g|&~#LxN0i}SY*n5}*;q`hB(IpF7f?P32;84%z6odaACW@F7C zwl^G@Vm}wszZ-$M+t2y>hvR(~nDu@xq`j|z`Pt9;+Qa@Gof+SF6M#FL*;wPn^HqOf z#`w9A{#^~s96#sl9~~dStnhOo?QH{Qr=Rn+hvTh1Fuw6N0<Jl;vBrz-B>^+U&xQ1_ z9GENpoUea4-g&?*@pB>Vy$Q^Re$Lk(ULX7kOoJ>lX8bqS`R^29S~6GNc+-Fx?&m`K zHyN1ee$LlF9Pa{Pp7L`c?QH^PyPxy5mjLbk%?#Y6E!KFOWW)1+@Pk{d@g_iB3NT}s zt8V^^ftgZ6d$>RD2IiSK+FJ$88#T0t$J;Ju;3jRc#``aD^>eBpFZQoBFlo$HH{L8@ zM#RzH6kzU*qrC@#dAx@9@OXOzm{0v&$a>iaOx+8rA1}6-2+VnYE~LF-z>M*8zV(Og zT@B2gelDcFXMkDb=X~wq@$o4zKl-_l_UaFU`*ZlgE!KL*_BsQT=I27%8v{&<p9|^V z9AM`8xsdi&0JFi*`QDF>{oBb5jsv%(204NE@getT2$ztMPzS1hgCF?xfynSkt>fXp zNLr7PY0=3eGyA0sN*>g&&)|`T<x%>q6?dau$8)-$(_!S8s-oh8uAN=+IR!=KBl)}D zM&?yjmKGLOo>Mwze56OD*YS}tk;s<FiO~MsQMKIv1B>#@ODjqXD-&7|Ix8W&tg>ig z(KPsok%ZLJiDgB_QG82$A$(=`n7sT6?JDxii^?h^1<}I1s^UufYf(vlc@#bnq}`Nu z<Dx}l$5loy%_}d1HX`l=M%u|on?y=V+u_HLv~!h_j9DWS8)VEXPHd7ft1>a+!sKDe z7iL`hV?x^ONlh|l@0(rJG~=d|Xkw0geriI-?B6nGZ|*mH+jm%W{mWJ3GiLYfv^C@U zLsdtwI1`FyuiHHj)>X#r8(xIpGG?VECS?HDK6CbljGKnQFS9q3I(y6YFK5h#+NzT> zZaM}V%b3N=Eic1w*Ke(=moYmDdX`!b+Qe&j?uTswT5Zf~|JikZo1Iaw)627t+TARa zJYrVc-F1RBowh<Ng)js)fKRYD{|5$8cXm<})BRc4q8a9K&(~?3acEtSwBrv|9g}hG zzIs(ZrOoWw>E$2B1;^KEc6#Eh!)B+qo|Rf>cKX@aR(ktcsYlOF?>sBD!R++&W~DZq zo!)C!YLnUNNwZR$LMzRKt<*p6`Sdep9tM?%zlaZVGG>oV%*dEsoS2g_yE1Wj#<lAc zl5>+s<-XbiDo=x-I+63>-`C)M2z4SAaBD8zx*l%bOShK7Exg*V6M?tGG50du+DK&| z!N2%f9d#o31|-u89%T5wk~)!pTp7NE!nBMJyiLo+a0`#ZI+2^;7M>yNMDBuHrj_^L zR%0sr#Ff!!8MUi~Wle`iJNS$taA1(|BOBlm==%Rl8?O5V_-O_|C&Lf+`#AW)$;Nl* zz#C#B*n|J+b_lkA;b%Ym{0%>Q_~%FXAAi2`{n&ELp@S~Af!qHyA9?II_8-TA<H2#^ z_;8#!-URshKeheu%u!f&yn7n&`Qq7dJ;k%(JcVukap61n;@R*WLh)>PEXK3pJI~_T za9_u>;ZYvXhU+GtjqV2G0P#!`w)y87*J?Z)ULnM@(e*(b;0bXsh~VWwJR2TwVVi%v zbT=Ia`pO#levkDlo@>K4e=a_<h-brdMm*ao@j$?w8YhR3RN~q2zAv5)&wKG~_zuT- zwuE>fV9tn>YaS<u_gnF7_?Mx0wifX~z_g5$YZWKgI!^AaIJq`)a`*{Y@oZ<u0|C=6 zPVSsIxpU*>+Q-Rth?DCWC)X)Xu5+ARmpHkuadO?_<nU@a-pzaNjQ4&v-nRcQ_y3I< zz<q3g?6ouY46jSE9RJ5_F}wfqIuy(Cf4mm4<#^qR<@i5dE7)>u6U*^`yf3%qcwLF* z_&?q^+H$;(#BzGaxu+bj8?hY!$8)^pv2R$8|KmB%mgE0ej{oC1$d==EAeQ6*cnsQd zyzawt{J)2%9Ix}R9RKePKX$|GI&V4N#tpCIyyf=#9_PwiZm;L@I?Y>-^Mo5-mwC(W zbvVwgx7=QL<8_y}++Jtnb(Xgr=Lt957v6F^4|pAg<v6}R@MFvIx(Um1d;>h?c%6jh zIKCWDIbIiGIgW3zryTb+mgD$Fc*^m*2g`AMd7g5-&cSjVU!kWQuWPUz$5#YDcEjr! zZ#mw^EdhSK<#xZE;VZZMrMa)%?w2!t<#xZ|n)J4B_e%?3x!o@<edTt)wDOhP`ESkT zxZld)$CjVP<+$G_d&=8zIqtX1J>__eU_WucT@63B9lYPia@=n-Jmq*lkL9@E=6K5S zn8I@0Z?|~L@qQf3alhT}DR0l^xZm!9AG_iGH1f6_Z{vpd%ieOkzdHHK?f%01T`zC< z7arr@a=X8}`pWJ8!uwG#Z}%78Z+gq^{_5^4xATeT5ae+^&W9gc-jmA{;Qxi5@?Kni z2K>L&Q+_^|<9d9`Q~n<=$Mv|}Q;z2-%*FNiqNh9wZsUgQaW(wd{v^X~<Z(T&@sy`< zIj+Z7Jmslej_Yx~r#y|zaXr56DeuGOZQ%dSp7L}q$Mv|?Q{I=$aXoJHlxJ``uE$S3 z<^8xE*W(wS^8Q?o>+x$(Ii9<4ytp2BdCD`n9M|J+Px(MD$MyK5r#y?xaXtR&DbI%6 zxF&Hu;%4VL2X13Iu1DN#`2}zr%W*y8X3Gb`Z7jFfb+&vkl;N>}>v1pq*z(BkT9I7% zaa-L;<PiMiz`{NRKMP<XAA+Bp{qX-mIEVZT|HDt@=US0N@biDS|2qT!f0}{zaDu-D zeoln-+!%iBW>@k8JYoEAZ1#TUS3JP}A8h~I`cbta|BJSFfsd*>_rG_N0S1ihpj1;! zb+=91XlzXl*2JN8Hq5{tnLrdTv?@?(Q>eB@Nfeb!l1VV*W*}Ttyg@`zK*bP32p}XO zKmt|_D1zD^66%Ezt>|eXS|#uIS$j{2wC9}v`=0;1KY8~0t?ORbXFcm#YfY|&;!ovs zj8iE76fyC1L-EJY#6J=0c?R(-RZ!1^;4}xJp(>SlQ2eP(Owf)%@u%{9{Gn+tXj(lK ze~Mtl-NKCHkC*&GJ&y-}NCf;Vpf(tEH{>VJ%b_9!gaslb#2@nRgMJ3(LF1swP(CyV z+H5$~wwiRHo`)T=v9c=`f6gO3`7MH$i^(^SKpJ_!qF4S~Q%DD@AP@Du@==M~Ymg{1 zekAeY4`rPw<!wvQu7KiCW)k0r;?FdgbGI;PCirfd<lUzThTPr5lyL;l>1D5=j=G_5 z(`U!_>bKe&@(snGBHFaOSG%?$uyu>j<~~Kq*rE7Sguvbno&6X%%z-K)NnWaEJyZkL zL0h42NG8QOP!TkiL68T%3~h#vK<`7{kW5N{gsKn}w~MfdpqByN3Ec<X56yv!peLXP zs2dUiuN%?~;zN~C9kc~{9m@L-{REms-9HG;hUP%Bc$)(m&l3;28#)Dj0d+%}6zEoH z67)wY9Cg}P>h(?LwL=L2=edJC{0=HIIEe(!ByFMiQ}iwR2h>0xdA(OZSxW$+YG?zr z8QKC>Q5SVk8}uG@Icfh2n&HxunDx*!gZx9Y_?FN#@+{N^eGc75o+nDa-KTXW<$`*i zbBPc2JoMS+P#cZe4NW3*b0mZA)6frhDE{P8mN~u3qb1Xiq4-n9nCk8|u8P1f_qH<z zkMtUcdHBug?N8pid*!d_9PCj1DI#x2dgV_R*mI!xlldd;P|q_EJJj>6V%^<~|H;B- zY_D-33;8*{zNeAbD|+Qu7OdS+&oc-+R79WZhBO4kBhU$`8xq0rTF4JAhbp0NNc#yv zp-gB2Q~@oADxrF)0r~_w0d+%K7A7QuV0|wBP&cHF!CX$e(ROoWK)%R0J4Anix*^$g z?*4-HG_u(xP$o1Ml0o{34Ad&x3)0rZpCFBm=83Y|j8u5!IXdF=iQ2WB5;Z?`2_4jc zUf!3eRY9M0;@^e4{G6-%1l~^2t~*O^?9-R;Ll;4#p^4Bmm)^qsGjs%c5Bd-~1|5e! zhTimQT08UxB=Tl8W3dquc~j^fmkKb2?saJfrqBZ}&BPR%?NU6yzkqj6gyK)mS@Y$I z=Qt(<#h>E-{F*QHic5`{JE7NHI*R#M=(J1mcsIa%$3Z<0b7~^=Lue>8(xo2%{{no% znEw<y`-w1TMxpq8`A70R2U-TnyxH@RuSDn?mrP6x%5_QR&s(57Ael#H-ux7jx$|rD zr<>sI%#{<N|MF@3`n(qpS3H0lEzm12HDb0vueo#-^RLhsQ1AKg0p<!J`9<O~Xxk<9 z2k15Eb?7h95$I#+6X+}GG!%alNG}l@=8}ndJv0rv8!B`u9{$9#mGcZ<W%4SQ*8+Jh zk=GL%uM$Cz3VKn{I(coC*DLbcuJKwaXtli7$m=C})yS((UR!vrD$))=Zya7_yj^O% z9Wf4XG7i^ihu0d1UvMyv+S^6io9m5(rN+TU#=)5JX0`F=2II{d<KQEjxRfg#F%CW? zz6Td5_f^Kh=Z%9e7zYWq-FR!Rad3ln@EPOaM&qp#<KQ;q;IqcTO~zYA##?3D!7Afm z9RUmpK*V(tK-^at2Un{^UNjC?8wa--Z$*r^inS9JFBTcRise-yuP4vAX~&;<-Z=im zYUB8mPeM_s7%GQefL_M`CHyx)wb)<8TmfwpKd4%3d#=oAd+r%%CA1oP5qb%#h91${ zo_h#$IaCSN8*R@QLFLe6_$|h50d#hJCvN-G6-N8h<y!mGWta~`^T8#U5hx1H!(Qat z=elk-<^pJ;*8bR2M*E{RMteoE(Z1+eqkZ8E(0rqP$wH(3u`2v)@!yEw^MoPIh4a8M z*MEi9zId_GzW5P{Z!G4!i%X66M}+v+(r2~yM~I``@qa}8AA_Da<6p7XXn&lr&n_kX z6{Ni#OqeBeHRb-;I^4G6w@lo?&p?D*ypR@p_<7pu;TPmZkF9u^?pX2gdU??kD;}oX zRy<s<@p@K}3cLwqOJh6H=(ZJhR6DV-G-B{#Xe=y^%Ik4?J*LIoo)qiT%1vI2#p6+E z1GGY1miD$h-rKUWw`En_qO~ueH1jFh{1=V(1=P~~m6*?BK8N{;c6{9;<M_Ij5WVW9 z8fZKCG3aTiUOT?-QQTeuFNP{1df-chUAGF_O8Rw}6}WANwrWSK=NU(<=R=jo(GANm zg({$x*dNx8ZUAps>iS7I*MGxP;41BCbqsR>^bBE^V+t*VR$;fbqZ_~*9(VmDoa?{g zY1|fRCn_pqRCXm5TT!_|UeZvN)ObbZVtGj$v83ZgQ&dzwEHA3v^-wW3inT)H1^cR~ zgnd<1KB~1YG+GxKt&bS3%Z=8@jMimF>oZ2{OTFAzf6aY=nbBHrv~Dx@mm94cjn+*@ z>vm&*v9`a+*dH<Wmy&)3tgxb@R9?2c9+Q{!xC-eyy?m92Fbn!IFX@F9lGTcOd2QBs z!7Y3HipRo;*0%ByqYW0@20LzBITu<5JrBVcR@Q25aOk#`6%Y&n9^JMQ#;^*;u*!z! zY5!yVRmFshXzk?;ymGpi%>awREXtoW+M|`&VFGpq{^hvguG|Qt!ZRps+~%#;+9QjM z_6UPKvIJtFM;M$D!bP5jp3~YRgo`{1k#2;+8Cea%L?R5_$TH1w6TAwFhm$aCpcl0> z=`P34z>Y8kA`Ar;{&}svWWCW|0`n=^47~#3S3+7P8=x)P8M}lb-4ce6ibEMnUeJ!# z6dOlt9)n7tQm71i2wDO?svWH<$7E>KJPOh6Ya-BG$c9#EM{5`sHFWKo#n2-VUA*Q= zh+$Cktac_%Nl*Ocd-5%YQq9v^do>J}q0nAUeyi&s>a&`<tfu~|Yqa)i>ax1pwNoe6 z)MGW}sD2sRrX8&!zg47NwH6}(Ris_@F!Tb%uv7kVcL~F=ts-wK%o6-J8b{aTzy1l_ zYM^Rp3wFv-1zQmRxVwZ|PaUkMyef>0g?ZKV*m<?QV$%6zGAiaV=U2pJoW^7%&O<hE zg7o&#_ANH{Ei(2!V(fd=*tgW!x7^sbMiZAM%4M13sO_sZ_SG5tYK(og#=fn_zU|t+ z^~S!9#=gzQzIx;JBIEUl@p`H8dQ^qnVC>su?0dy{z1VntuJQUq#_Q!;+gfJUwalz* z860cpK~F-=sB5c?wilk$+SWb_ehgX)ErXbG*D}D?GUKj&N^|hTU<TO>46?P=j#1n8 zLac4=6Uu$<Q;t!Gm)7<I!|R0zR7&Vam38ft%0-M)0z8K&<M{=$^}-tHC9Q2WV}3Q+ zSp7Kk1oRX{)>jj5b)EJ<`;+a}WP5cKLMT`bZ&<SdlWeacQ>)=6ad-6{NuMIFrWz#u zHRNdx-&#YS){v()FKLGs8iy7ehn5(J9y1O-VH|qWIP|n}=o#g{w8v^3dQLm^yb7?~ zIP|P>XqDDhO=ha8Gv<)C>Sv+4w(9K|s~zJx$Ed>4+N#M|HJN7qX`{2ZZ6G5X$ixOD zp$#u-$6<oUkw%ZNM6z0GLq$+bI}Q^(zH({Yj=2Ii=Dn5AU@pXb3R))kI5I2N<FL=; zE0<u?+Ls~HEJKW02KQP9cUZ>gT2`yIFDq(azKAzA2T3>wmGmGuqlypbT!v`13~srM zQM-)My6kbNT5DgnK&68)v+RlX<&s>rauDwo?aS&3u~<2{;o6r=Vx`KdxF@9Z;U!K2 zWy;x2EgpGUJ<*<2K1)=x&%?f-e@1J69@*^q&05<QYIF-z#1^KGEzdwqC0l6bEwsv( zhcw4u{OEF9Vvx8q^{6l_w6-mbmMtrw<<Qew+tw1JZ7cnHE7Q~#T6qhtyoC|8WgBjD zF<;hhG%O=%{L&a}j4-Y@#%Yc%tn4>o&o`zTzccPMer?=gOwkIBdyN^!1I8bX-x$-4 z$=V-`d%k9$X54N3mhks$M@x!~qb0E564+h|Y`UaebKGF7C9po_SFW{hTmhSU1v@Oa z1lC>hn0B-TR$T(?Dp>@<u1jFmC9u<tOcxuOHa0#>Jf??@bcT(v*o|xOe?mK2TxIOo zU>q%m6Bcj6nWn5kB(7oRsd>fm-fZlsmOzdpY`li4Xk)R~zVRW<a%h3Ex60THBd<li zDqfFI6xT(@-VMg9D~wl})oPguY7xvfK5FbGg^l#@#m^YW7qhxpydFY!Tf7E(0@?^| z(2gTnA74x#U%U*Gu&h89v$|M}thcyEYpYpgwAIjRH4JjH+g3vh*Q^z@ZDY)}DYRBQ z6ONuyQwzZhRd{+!4c)njVNk>XC@O`Rq>7lJimAC`Ru#pz=D4#mP<{vkMF;{aOx&O0 zRYa{6vpOhdbx}MQJAy#bOImvobx}mPBGN08aMXS=-zsKk6-Tur6~>XMab%HkWVvzV zQRB!{#*s?n$SUnfk#S_Hapak}b%Al@N#lsE9hq+&iQ{%Avi9{<?RxUN9sy+i3TPD* zQk4j2RZHddyjYRzUAO1rZi}{q7K>cEc#*tB5M{Li5&>|L$eWAjYM?4XDxC5VA#U+} zUi{}DUb4_wv`t<z5z=_PWWro5%aFw?J=P8ti$%m;EP~?Vbs8_p8m-Msd8la5h*ef9 zPPkePv{I~+=f!pM+AJ@TIUSExVimc0(Ol3XDdi$r!!D8%Es}365;1yFrM#Zic*!)r zNR>mykQscDh}%vK6>g1od<Fe(1^sRXeQiYv1m9i3nq&p*j}=d9jvK4u6<Z+IDJ$la z_QFR<hktj<3%x?c!bjyL?XXaCy>P3>Yq=oF$U<2GEEMr#p~%b&MW|RPMO-NLw(u1# z?j|+35Jp$a6jDnUuYDR~-m9&Fwm>kZO>?!j+J#^kq4I~J)zZ~#VRW_3e~i4g+LtjU z9%6#TseP$!6MRh!iB;<uFJox!>)`n7SahyKc3rm(s)EY3_H_)8b<70o7y>NE9Cy0< zI+(z^sMfxYA+VuTJHB?VaeVC(h$=(;IKK7;?f6=h2WwFptX-$It)na~@!D9vwXI|5 z62FZ!+twi)tb0OpFlAi_b7u+Ygcm=C`#Oem6^ywGQKt$wWWKg4n0giItbbW+Lndsi zBCRUoS5fvV%DSHEcKwT5TODqj5pgynz|=7*)QMT`xYsce)FBttQBTT`I;<nF%AGo| zTduWjE+K9ND#e}Yylw%63{&?Ub|#m)3c?@~Y^E(XFV>E3M0VW>Bi@L-xe?j41}+Qp zJX*6E`+V*AV=?3SQtD^v;}Bi$Q6ak65=4SWnC^S~KSp<S+?{YJ3EtcKsPW#`7mfF} zRT}SYpKH8dw9t6Jyvlfg(LCe*r!ZgMY`k9;gVr1GQ>G8f7aAX+)cD}>661rXBE|<# zuQEO?*<u`vY%`7#@7UV4#<7=cjAQkW8y!W^wug<G#`|-hG~TZu#ZA@52c`9-u)_FY z>2m00Qi7@$8XuNDZ+tkv%J^`>cH_f}xyFY}RvRB~TW1`5uGl!XHD+{_JZp56VLmj^ z=y=pNI-cBQbUamUbUeMn=y+zk_Fmmu<Gs2q#(P^JRjO5ImCXKn=~ylHF5TBl7Clok z`Mz7KnS5a@U!XKkRvPcGqx_K#lxTsQ<K@POkJK6;K4lvpqBK&uFDf&RJw%-_ijO_} z4E6F5v=n-h`XTql^P$C*uGA^n(<|co#)asj>!C(y2ecE~1vR^LF}iP|`16A`>^DO3 zXA?T+ZP0F)_F%pN{l%qtxVTx&-igpFF4bcS?RM!;n6E)cp}#`$XFYo=LN(AUPz&@L zboMg=he^<Emrx^XlHGMs6(swHLb7)#^a`{c`k(d*<NJUY8uFioH0|dum9qyX)CGM3 z{g=<VY*9i!Xc&|Wje+ifCPVS(M=9)?KvzOnL)W<UGt8eu<Dp+b6QD`Z-B1Bk;!+vr zTqx$!`xIVi=30m1-|6hff8&O}aw+cqe`*#{vBgjgv`Z@atY<G}5;_3A)vJ86Pgw#z z1HA;rpAz=Kgc_h7&}%Nm{j12oP&HHoZG!5c?NB|`=u$kqItWYu@woJJOg}Udx*56y znhc%&{DeLwG!(i98U>Ak&VCH`@V*QE5E=?y4f&w>lR*9xp<ymviz#G60Vo%`8M*_S z48@;B>Qbn$OXpw;eINP(6n`$uWIqpz@8iYYQ+3WpLRYzTHKtIGOFzfF7P=dn4HZG9 z&|K&tC<eU(#UHjj)bqbNPa?Z}7rW`CWA=wk*FJTy1Eyj~xCdSLhcVe+(&GLxu=uZn z<k<#^{QxBC9f#ye6i1$Tyo<1l(~r+`mmee+r}1aGFLm8(TyqAdbYC&$iKol<yo z*F1(P`RF<;+_$JeaT@AYWUgz*(~<x5ru;GGxe-&+DRAveTz}cGmnR;t)pch(^lR?( z-S3Gh&pOw>4^z?=Q=Y%MW<0&qZn%r3(s_Q4Dd8u$_ISA2*d@Qux$b*hyO{FC!yR_r zPq^-0<`YRzOnD5~jE8>-yQKS?YsN68-o=#XW7mv_ztjyk+;zVdQ`Os9;r`)<`$k_U zop}7KuuJ%xT=zmu`TiquJA6^uG3ANJ+vtWn=!W|Trlj)?H{4ZjyqnIB=ei$s-T#59 z;(1l_J?USCUA}w!S?+hc?sHxDrLKJ~rlcdLJUd)7p5J#||1VtkiwG>~hb0ov?_GO5 zyzDQF|1+*xj4AEVjwz4qXNrG3{5P-<!u}&nd9HQMxc?K_C2F<nz8h2G?{n?%xMn>3 zC)g!?KX{^a?JHc~IMy}qcFlPB7VHwf^(^->?spzIEB(W6_%1hmDszD3C*3uNx^qH2 z{jlqPo9lj;YkvS!zWcE2{)B7B<E?bVsb2vgoX9ouoi<E~C#F0esa&3Tyj1KG?rPWl zM%VraOo=C^JP)~MJl-NVT=iM*GXF|?r_XY~m^n?-`?))}O~90J54iStx=*<7)vkLZ zro`KOR=9Zhx7_ez$`g10o9q77S?+_FYvj8!Kgn~8YvyChcjmkHT1*M|x@(W8`yZ}* zU*sKm;_g4jF5$<V<$j0jewXVm@{&9YFy(vIu05VkBX&ur-F0_<xa7=tenjUN|DX&4 zp5M4;Jbujef9Wju-@ER`XSu)Tx_6xAUdVYt`Hq<K#MAGCUGn{H*FDD#7j(_*UH4zP z=G3_9&byDe;WnP-e$aK7vx)M=zb9-Y03~Rtynm{Y!TWNB(s^H@P$ut770Tv)fts!S zpo^57#k*ahJl=0BG@f^xLX&v^j>7W0#k_x@++_a!jzUX8e^;mylnL=WRlI+%Py_FO zDBl*)Pn6qX-jWi(OU?UA<?AI!ClyKoU8#Hx&~$||L8p{&HYiKES)h9r8V~AHzLP*h zmD@DX{R$O<K3BfwAo&L!3EEQ7Oodj1zEZwbAo+I|30eb4&MxwQFhHl3?_to@%Iz4a zM4>KFxAN7Pt+SO|3aCsWLuPb^(m^>2WrNBUvOoz6<$>g9`1vn*AX}knAd#H-r7Vz7 zp>oiCg_eTk=qUgH55&*6gQ`Fa6>0#<fjWK_3nV{?&i^+9Em7zgsE<M?K=QNT{2>!O zrcer~uR^IH`4MgYcL(SRg|b2Y6!L@o3gv;GR%jB)tI!mXsn85ir9$PP{t8uqhAUJF zdRCz-&;W(%KqC}t0X?VCVGzf%$V(e2pwJ1>8ih0@ie!aEmI*493VKnYbkMm9$qDa~ z3i&}VE0hNssL*)OD21kgsuh|6(iJKKg%qj)ZB(cdl%mjTko;gG|7Q$Tr%(%MkV37X z(F(PJwkmW2be=+8ps+$-B$w?9rGm~^$N=RklnH87$PXH<kOdl}(0I@;g{FYMq0ltY zScQr}GWz)4SkMIuEd}K%v>NoPLUo`E6>0!ouTU#!pF(Y*RE3U#ZcwNTv|k}F^3yjJ zN&$^i$N)KVc_zq_{IfwfDqjn9NTKndZz(hhbdy5UK<_A21RA1HIp}7EmV*AG&}z`P z6{-T=qEG{<O`%qh{3sG505o2qW1zn()CIakAq_VA3x!fZA1Gvi429A`zf>q2)S-|C z`i??*pj#E11o}v!X`t^aGy`;-Lgk=O6cSnSdkR&8Zda%Z^qE2ppfrVAKob-?4El#c z$3Wj#=mcn@LNeiWDU<^GfkLUENeZQd{;5zl=!XjVLBCQc4|H0gNuYFvrhx8HXa*<& zF2^s6gDzEW6`;uqRf0Uqw+eKba;pRVTA>zDKjnKEl%d?(K)+Gw1W5kdGZrMm%axlK zl&?@K$ni}F{YbfGf_|%zzsENZ^kd~V9yCRvDLuY3KvyWYBG6QYDnREtc?JztEV>RP z_o(3fpsN*<vxqWNG6#Ti6gmvLMxi#4PoZO=VG5l9{Y;@Q(9ac;)5O;*<OTT^N&%S) zrGkPA8K990rGrK(lnJsF$_9lL@`J8Z$O4U4C=V1?Xgnxap-G@I3QYlxRcIPWW_RWk z(De!xfo@Q!95ha$3eb%TEd|}AP$lSQg;s-ZQK$+eG6Gx=^b3U=K)+O|1$3)It)SZ! zIt;p9p*GM2g^qzHDs%!gNue&#uM`rk(H#nTL6a3q0sUGbSu6ZTAp?}JkgOYit57Cr zibC0-sS5c)zf;Hp-KkI>=q`oEgMP2jB+wrengaTxLeoIg6ska0yGNm=py>)#f(jH` z4JuTq3UseRb)fqcY5>hps0DPtLam?&6gmtNjSDj!Xr@BPK(iD&0h+B)7if+`a$&hh zAup&{p%hSwLaCsLLI$W*p>$B0LYbhs3T1;HQpgV~SI7cI70LrWtk8Int<WUUJcXu! zVhT+I%~xm!Xn{gSpbCY`K?@bC04-8zDQK}mm7paGtp+`!P!;G=h3Y_$DbxU3s!$8) zafMnzPbhR4^rS*<pr;f%26|ed6QE@Zb%B;EBp25!74m|fQ78qpLZMX9vkDoYl?tVU zRw<MTdQPEi(DMrUL8}$AKx-7r1FcnPJm>|5CV^g5XbR{hg{FblDKrE0vO-0mDuv2H z>lLa1RV%a<v_YXtP>n*XK^qmS0@W&12il}i1E@}+7SLveT0vVBIt<#XP#fqKg^q!? zDRcs~U7;?}4u!M}HLXb@FKDMiDWF{nrGj=VWPq9#N(Z$lGzs))g{FXxC^Q3<k|-mf z2-K+D%0cfbR0;Z6q1B)h3e|zWsbVyM{!_WNfWA~nmPH>b<OLm9=tPclr<nBz=yk{U z8s~nn{0}fki^+-#bWr(DyXTM7esfR3)Za{x|CC_|?phM`J;<YZdB@0vM{71y$6?88 zXf}sj49IUb4K1PBO#6ERHDIP!DC2UG!<)@a5%ZeOp^?5~WQ)yeHivz?Kb1=T%I{Np zZ@T%Gy1X<^J4RxfmC<I|eH6;tX+=xZ{P<Y5$?rveX4#)-9Wd*PSgBgEd1*z2GVKn_ zPE|4ap~~n}%F&92(=r3G;d#nEY>)I>u~NrJ{bZ$h+ofq0q#Uqcv+P5-8Y--QOM}%M zNb{3&&nNQrIRU~SRsrlL%bw@tDeF(l#j>ADn<jZI-YJEcIN|oDfyCaS>WUW8E~Drk zHPP)<Zj*3xkg%6+%1wsHGYZv%niO(>WwhWo_c+yL*}wFL?LAg>;WR2BY`+t*ho=Ri z#Z$1^!-qvpuRYu!HIwa<yU0h>OtDKOUr}>#)}DZUgRzCW*UZ@P)4m<@)<^DL^A*1v zSeO*qlZZpNvK3(S*!#sE+3PhUUnJ_m{f<xHlOvK73Or_{B_U*w$dn(Nq*2Oc-Duhk zkrr>!{f1^n7v4pFOg-3OI$6tVXi}{#KR}wIetcBlG<=F>zhl|e<>ZJ)jhfk8CQtoC zp=H0Ss<f=3;9RRYBEIr;USQd8#D5s{Yw)dj49QGpR)hTHWw!j}<;14Ti8xc$qXm*h zut!b*-1Y%Yz-^Y}D?QN3R!U+}k|1NB>w`?Mo^oA^J}BgLE>jjg<W=&aKBm5+#)yoM z7gSn5??K8#V#sLqsQd8@cxTAc7s?J4c<tg}f1B1x%%!yb?c!v-&8YVOp{@$Q^R+tp zU(}S39Ij9$842P(6j{F>^sGX+fzGZodw42!7Bvl3ZHd&JrTXEJsF|jk^1rFKACg|3 zN_lt>I`ezAH>;njE&iwoKN1hfPt(2{vRgxTN3Pwa(zZ{OHRxrsRy`S!L6BfYUrDPZ zd||ddD*!uiyOV?~{B}4Nw1QcC>_c(quLU@%m&t;_Nhq=K4trYxV@C~{czBh}cf+x= z8Ti<T0x>Hg?iIVa2NH_3WC?27!OSh1Uw}U)e|Xv8X@%!l_Q80ZtZw}hjbGLslQYXG z{JHaCZ{bx|3}!=}hG9}e<rj9T+BbxuWvem=Y<O4JfdD_QJ2akBr|FizAf@xCk?w@T zpTvuiex|hlJ?d_bbSLWbeh)ve?9qlbdBl)hdz3e1-;xrJCHq5-?VfPbo{(?P^lSA? z{93+#Nh$SAHJB-MTH73KM*SXrQ^M+mf<C(wwa)&l6ZJ<LPB)Y%T9L-gP^7`jui_H@ zo_&_>w2{3#9CNsJ$i6i_WZ#(?vi~Z-R6C*RQWAbjbqwizD;1goTBVT4rOzp}w8vK@ z1jkoqZ^u{WMA>8asMYftg?>V_R4OE^>{k?;1bSK_(Eu(}r~tHFA(z|2Y2%DGMRoAO z!e57{3cDRnXCEBra*C7i%gX$SGMs|`>b6=dU2w8B`IaG;J=O@@BfM1W4VFDFrB~IC zP*wZCs9V$CafUZFAtAWc`2U{&{@>*(4)+zFvQ|~9G^@jh{~b@!|1a|4p2>1=!2V@g z*lr9&AOF|+a>)>PzFexn;LS8YlEDoI(uT~Jjm~`O%!ACAd%rec?)8LhGt-Q`>gkyc zo8q&f9&9qBMe2(?aC7F<9XQD(srn2*%^eM=d2i;Yx%px4X{zfW(n#0IwNLcobF0YI z$%ho5D;y@g>-8Sb!VAvW&me~r-9<Dtt-*Ml7)~OIg~MI$)+?RVSRRbbaZo(1#}A$+ z>YhMsBmsJo5`jxbVb;6)B}JH8*}H|~ZI#K@33{10<=k!*j$7?594jK2tdkUPo0qm4 z=(4v%N?vmZ$~+ZFI9#a{#?20#?VrNgRN{$+>1QN@{~mQWMg9qAo2)q7SUB4#INL}# z+s!E=xk>KN;&4C9&;MVHL4FC{ele|5N*CEVjUV2g(DWTF4nGqC;YBqB#(-W@Xgp}0 zLeoI<3j!XsW_7|n))Q_;PdHh>IN?NSa5$Uj#2n7%2W?QPh{m=?A<;)VoK3WC4rk+H zrn>jJPUA}E;g^iJi!`|}8RK~6i%)3IZAK0aKF^u_=htfOPjm3`=>>AZjdQ2&ZMY{j zb@6ZU6U2E~?%Q!^&bhG0DZO=%XwGG^<@h=mx}MdzQq{VQTS^>EUbztxKj%UfC-ddr zk-9^~IZC-dRLxoW5)QL-Z-@Ie+ELCf9$jBX40WAko*dGRMKmsh?Bf8U-0P4#9ji%t zHHRD5a5dp+t^jb3aAlF!zPyry@y~EDo->ki&7hhyk6SDFVTG|qrsf<CClm*><p?)N zzco2%?H-`k)PZJo0J=mwVjD+_G>!AcWTc9#fX<=d#cM&%QQJxm!E#dZS-Fw6utwv! zDaSvnw6>R@<EW<``+PxbTTd3&Kd*5NlH-va<=o8C%*_?r@ul3_Q%4<Z(8+wbgoBDt zJ{A`jhkgIwh>MxVPmC*#EMur~mGM*KY9rgoQL6>@qyL7>Rro3RGb^e<niZC%)TbeP zpZjz2re538>sSB(;4l5SV1Ve#wT=O-;@sF_=VU}yHxe*1>s9vo?x4@f^A`4v%t#qf zaB+8I$o90z{{%Q5${E(8($E84c5_D~9Wgp4^(<GBo83&19mN8O`wcRnmp#akwUeSF z`QiJH$iEGDw+c5-4egAqZmaC$!sL1p$NAp%62p$wVY6VchE=ww=l>KSQoW|WWg$%& zc9(q8a!O}K-6&-Z#6&#n%Um5bQ%SL#p~FX<|CeCDeuha<eV&0<cjGmI0o{cot;pxz z!jGg1e;kOJiD#rtzS7@cKHKQ1C80<c{PA&qyS;p*LHVA=Nv}<EERSOOmrBvgevY#w z`v+6hxrDe;WJ71g6b-zRF8^@BD9XNEFEdHk@*UPovjucFTe0y8R;0V%%w7LBYFa== zJ*geh%lgKne#P3*irto$Zu<f@|Da%mH(-xWwnwJ~>~Vwbaj60O)*)rxdig=ZA%>T~ zCgvW!e3zI9^zv<(LGh?j0G}5Wz-xs9@9O1`1AJZjf`wu>>I<S`?$s9*W17WXqEFBl z6e!E*j^($?@`YphrLz3fvE*Wjj=Y@3$ZQtHBhv%XF`3aZLj%#9v!gc;3q&XQJI#No z)WS=pLN8*riTMY_>yk`A(ojC~JN!!pUA2jz_&-+&^UoD}7XG)T%@Af^F0B#SnWvaN zdN+5)|09qW@+jr{F8ZUh0^OtBe#zTGqUbtDxozR?gnI`hS_F@Fw8u?Y{9`JWY|!Hh ziSUXfLAb@B2b5bg2<<6uuY;WQWLw7Zy^Jsp8p6;P8PTJqft+wYkmEZU<me&(r`4+S z|3zRmH@g2_B$HJ^FzdZQ^w(*Vf_m+zLAy)oZi4okk*?%fH-~esPc1ypiWO(Wm72}L z$z+0MV`|tQo67v0V#SghLb1UtH}>muKO*N=Y<L}0asc^5uSePNr(o$xy>t#f0pD(Y zd1J=|0%aBAYnZv2o^$t*=7gEwun-}nZNgEb&X3u#o?xgd%-9r9V^?C*G1GT!rnmSj z2|c^dHZf2%rCPDaC1YrYwpfxgUz1+;rT`Q_MPjl-n<S!3x`;9q(or43N^l*O${;9P zOt8(uKdo4iMA1`{tk{zZ4e}T1DWfa&K~{yHGNMu+<gdhDg}n-U1NH{&t=L<!w_$I? zeggXmE7Flr_!4R9gEZVya7!VKK^OyjCiYD1e(ZkidD!y;_Kj(iqJJFRv0MiBnF_HR zJDyefQ@IYO!9Cp4_2|M>R4GwV{#}ctajQyWo?EHk>HL*c|5J@{)&QumZ@@RlD9F)M z$Q?Nwl&GhWu|a52Qpnh#;l^h;_^rq>3&+gQaKUoil4gGBdnE0A(9L5v{UDm+u4qsf z-IX?tF_tMSMDsR;s(!Skt@``n9@I;F;E2<ib^=TO0Q^4>VLEIhHGhuAFw%A2tP$ay zkhf5`VrF`?={Zm8f`wgpazBf8?`V3U6&u`Q#{3D<exc|ErrjtjtMQVLNh%*A*wN)Y z(&hHVyWD_K^v9~Jb?#UFY?|t4CrsZ7`q^oxpKW*h89K>dq@U?wm8vxYX?Y^7OXmvN zd&4qu1>AX&{*^~-c&Y8*Z<YxlzvBP5-X&Uwyy$(Nj*n;-%0zGZO4=SZ1U+h>OsJAS zCBGjdD-0GlcR{k}m6+8|%#IzHZxh04t9!rJR#f+a+^IWcw>a0n&6^jR9PnD<n5SWM zY;cqGy0IsVWucT%c+-{dhJEko5n1SmGTz9IjYgrc*Q#6a*X;T7XPr7~H6HJak|CG1 zSn0b3qe8ZoZPNUtG9*9J-@|&n^CH$?357LIqKO4BY)I%_gCFzz;E>Pq7xcC4kkPp( zm;daO>oYS8w|0_5e={TWWqw7-_Ge3C{S&N|{D{}n*)PEw4Dg10eihSibROx6xjz(X zwCLPS@^>on1SR9ysy+L0wFo?EP5vTiw^&mTjc4^~B`NLh$tF+X`E(&?Ie$j0N%h|E zHBY_0oqE(n)pNzkro@6Ptk`u{&~CJE2&mS;LobuHR;0_X&szvUS(VZuO6HSI35EM3 z4+OM()9vfRbnA@9`}^39W=3PAD}C1BfW0U3d8QtlOHgxjChyMKX5{mq&N{E|r{a{+ z_;|*S{at~imd<>$`11zbX5CIIW~99#(spg6Yrs8!jdWcwy{{Q*9MCx;(skKAZ$!F& zI(;AZpLS-QZ1NVIOQvRh$K32EZs&I*U754`lRLk;|MSlC0T=wN2#=W_pdqQM8sH13 z4ws!&>RnS0G%^BF@&1N@a;C|nMQ=<?3EO`TMMrzbv72DtBunY=<h{YHk8`Iss{R$7 z+<N7K-01X{u)RMw`d~vat2@B|#Tpv2?{YhyWq*~0cKxoj?D8dPRiquAmnPz)bja&s zo?Sq-l8y~cmyYib@XEA&f72sgG7+@zObOY?ooVXisANy!{iu4F)9w?|v!IV<H+K%s zEjw9oN5~$NDo(!$p#!r|i7Y)PVE@WnWF>n7(Metj^wUsecB)o*MbIAUG3|p$m=lr_ zS_2t=Pe8A=l2KYavyPdxv*=Zi86D|0%O@n~mUV~qK(`fXwk+Riy`(_(JxX*X>uCyW zk_3EyH6;nyjbVF9S|w1GK@J^Rv02Hm$NUPu@k8_EPLE!eD9-l8!4@lfui3q;<5MD( z9w_)m%=G7s`f_HUoDtqx%Hy!46nQXJEAR*GQC;@IK*k6(BYR0}bTS3l*)y>ujqs8Q zsamt>PaeJ2sqH}d52K^L?2z6Xj@|e7kncaHXZ{Zf*)2(<y^=<B?3YCEv?5<66nuwD zC>)~L{>(H~ZA~HjEwZ5ohO}7cHyCZS@>yO*x+m8@T{Jq`V~_S$C%A3z_Jp3AqGCn$ znrX#G{oP{nD>)!+k*dv(*K63G$uv=yqu5gRK<m_9Y5p(+cv9H@b=nlG@e7pXJFLcI z*IG%fjAp$|_6+$?VSNjR@J`mtHmM2-TILox?O|>$r*n1cVSAUkMTWGw)evVpe3>T{ z^IJ)K%#3h`$IP%ip&Y+aIMYJS9ZK2}$_ZR%6#gOC4rdsSQ&ZU2Qh2)>NPF}U!`(Y; zY|!?5Nh*U^;4*JgLm;CekOVVmF{3!<(n&qROWArOV}%0)mzG)N1;ao#G>gI+$+T~P z^y$GK>Ak_SkM+`2=`p^)O~1vm_n~u7w=!Pq#izUXSf|=uR!yg{-aFaoDg17(tv+^< zY5V_Nw1?6#uO^vZl*(;p_iJXk^<F5_p!jLwUiA@~2UNF}U1z#&-N{im(pzQc-m;Ha zzOU}l*{$*v_O~LP428c;|I~^-B-KZwO;4#f>394{)3^JcPbI+l;xon`8>S|cEN^sd zUZ-C?z4oXu9l7&I`lfUAO)2@l{e^v440RfaqI>lEu@>eIGh>gP=M82wW{mTyjz$-c zj>=QxFg8j)qL=(q#-gZ%ZfA?|)~1tWX1!uwYpE~?{bvtK!>3yLUfY9W9!)D!ZvJsM zBW&NKG=`bElUs79b|@Y<^;4Nb!bu&W$#ep{FfW|+nF!N$ul?yye>!zXcF@irX2pi= zlbQRrv`LK}eN6jJmEX+<*<lGbwviz+&GP-H9+917;fBawuUgTWY3X5JhLXawKF)eK zV0W20%LbEUeXdB7qPy<d6==$h%~k#2&XyrzIusKsI|CE+?PJb0eYxZHC5`)!r6pX` zQZQPt?`zs#yES9~{ho}L&P02!Y3C(}Vl$Ehc1s{*FRrbfNv6Huw>PAZ>B{K$c-D@L z9c0^XQ5iRV&9nNF7t8*nyUFx987fh#11X3S%F8}3@L175q*{^PG{vWS$uOEi#;IZP zLh_YDiflQ-yxqKQ!mUlBoGVr}EmEd~{Nrwt70ylS|0f~`B3Ql`p1dP>>M^PM(9|xs z>SfEilK6q>N~Ou9DYC7k&9Y@1vTyeXqrXuS&ULZNkq7Qd%S5Cg|Mz=4J-k!w1zx^r zvb)4q)>4v@T~lWpJJOXhdk{XGQ*c&gw@-BTwKqwGFrlQI>yi7!7Mq?}VcJ0}t9zUL zUpN-D^X0q*Yq5NU?5<opH?Ja?{i|~e^G&_JKh&3b-9DW4PR2XF|Cn{X?=Q1*bL|Ni z=a#)&aBZ%AeRdWi(GCP4HPQ`zQ(mH}ZyJ%9@7poktJk+M06INO_4>UTExvuT&U1vI z9fkX_^szfb_U9rDg(9CM6h0ha_eT}0th?a*NZQ$<*qGA++pVhT$O~}uTTzRDS2@<- zA<EC7zI`Nur=tues~3b~x!LaOYmY2wDhYH(5T*8Im<Q}ON?o>r+K>&W)i{M>6HaF} zP=QvopUBY=D~wTmX_Nsmr;p0Cq7zAbq94vQvb%iLxfHW+ezYH-9jIzNI?6-LP;|lt zA^K7%HuALPV>ZxB<}(fC+Ce1Ppd}+NH#W2-WVhrp@FQ|C5Lw+evxQN9!&RD5$P_jP zQ!SsFUHBQhWUPbs-Sf7J@wsF-(vWP{6BU``V|EI2ZR>K={)cIQ?1&h_(wqWM_wLTb z?p-1K`gB>Or!XP>-O3rBQqY$I9O+EF^4(nf7Y5B(=s_f&j7U5fvmfRVjt__olB3rT zqICYhXY6>K0j+OBVf97E7l3i9d6VI8t$O`|K*oVi?@}zF)`0KOEI9w@6cS^_V+|<^ zB`0=zK!bDb5Tdh%4(c|>Sg<_3?Bwioeg7akyG%W|*(}#`bEXU_7{GgQfhRXQWr#3# z$#+P2<b^~s?VU1TS|aShL3fU4$;Ysq2+y2FZ8)P*j$W0h5h|LqClyNI?f9zwE@vlh z@{aJ-1~o!iVEAQ$k?qKH!<tl!qLjPc@*SCeb8r4-*(0*qqw~Y>i@tX{ax^LAYbeM# zqwu5M7zN%)dlIA9LpACIC`>9kC&At?=!g|*VmKbTr&i7ra58~nAg{`Xx3in+zo|!A zlCIW3dnJo9*2j~@{@J<q%>I7UzN`Ou$*g4;3;P%w8`{hwq_HjO@#3T1{Wy*@G_mpY zIkG6}V_)y>OtP=1L*JH`x4D523Co_OipW^VMHq}6#WgoJDuK>q>f61(*Yq;kEe*wP z>1)M)`2{=|rQs31RK};i{kne=NK0zb%gV7!A4#D3Z}^h-pK-rl4+p5X`UH9P^R?(< zc);+)fUhN>kA-XR3HbKSyfJ8xzhZbSS<V+}BVwL+eJ!&tGVg36{LH?=94l*9axj{A zMKEe*g`(pxVSnzjvqJ@PuKV$<<UsU>%L38ser!b_xX6m^V0;b#LiLuB^cJ`KbSsDN z<AB63g}st)5f&*g6q}P7+7@3Y#s{B0@dOgBUiuI6X2tGnwQ{B#dYNn)>zhU$$j=#( zsLz*GYar)`daM;d#U-BU0E~~6fWGOL1No-!fWBaf3NZe3h<UU0A+gvN+;dOC?A)AR z7=<&`xY9R`W=J*8{9S&)M~mhAS_&qbw)JD13YmRV%u_}@rr_DvF<V~Ao_o$%&&=yZ zc8!fSLK%lb_AXiR_N;T6fkM8f!oF7Y7v9ePAzx!5T<vbS+NHuvWa(M>XSZ_57h}t! zays$96K?m%6Rv2|s=Pjidxe<=)qFU~`M<Gr+dOJ=`f&NaWe*Ytb1B-AHW-Xia0%bB zhi96;oimf&tml|1v%Ho)oa9AfBo728`FnQI`_mo0&FxK7DWo%S{jyL~QjD5X^W0qq zOHO^UN1><mkqWW<$aEJ*<(3|{kK^IbI%&mbrtvR_KV`TW{wqH=YdDV-lU^IU*`p7F zAFFO3w!8e<1!<WDx5_SMrAj57mX>QbQ>pPy&dAKPG?ac__x+w#S*D!1FiiUrvo49@ zDEo^2RZ`4@xuPgGbNFJx@Zgp2$=0DH>3%q5A5sB><@tycy>-N*78aG2a4=4W!P5-? z#)P74HN8v@TXfc*Pb$s{vG0P;SDY-p2i*pGSh*F09#QCd&_aczW6o2k9pq?hkqt%n zRs7L-JbKq@X<DXop}3z}EST8^`cxD-d0UVxweVzra(oNKo-dVoU2I5$)Vp7mtk@^_ zv8X9&oNT@HA|hGQ7t<<8GaS3s6Gq(0lk}bcgB-?777JU3N!rLVehCM2N)JuG^~*Zh zaJQ1)Ha8`hCzBE_J-7pDig_*+OQu7I)5gov+>tfWz?U}YrGHM~6uME^zryNnD)Jcx zT}8f`h2G$mY;QDmzAFt!k8oPn*%6^-Gb!rf`?lK`(sk?N2a%jjCd(c(Lr*DItS%+G znoLT^nWPU2r%hu@cvv<>Cb3FG)zbwlxR0i?^m=rEW~8M%>p)h6+HKP3UqH5Gwwe)U zyiAcXlpfOShtBq$(C7b|R2liX1lV`7F|lCs$;Je0a!bLFE#E$Ufv{egbJ!!9(bvow z{Oas}rak!8fZfpDz+Mt(WoEzE@i>7%`T~(@+<8A9e%8N+@4PEKxs|UJ{503Mf6l~E zY_umgWAAmb<o%)UMwj);_dGd+X7{lNIp2yjdPAaE{-E>666?~h$Et9{Bgvf|o{c3r z4dDAqpXa51M8N=~VCI$zVK~oB%MO-y7of)4IXt>#r4+&J-r11>voTrCcJGQVDV6<; z4jmU(b%p(dW$)>wGjKB1(S)Gy=)Jk7eSjIR;Af%<jyZ<|5U`4=j8YO5NiU(B!yWUM zNcurv<E--oQC58&s8ULm8`I;vX7`Su@6CHQ#M3=~Z_rKmDmPuph@@N5lb*Poou0V$ zq<8S1t<vh_P1`=qw{v3=X>se$MwUDcF*Cu8M#No8hW>b`wf~qsuT<4S)Jis^-p*l^ zSG;yPUXr-!dVR-@Q0hitNuWZNsv2WmjGhLK7vssy$xAM{G-zANS$pVhNdY#{o@&gG zv?a(4lVZj^gOtin#ffTWvp<zgsbi-agD*kWW_oZJ-l?5^REnWUlecFW^941A&Ef~Y z6b_)5`M#9N!X44<e#tNoBf+cDk6k!|<**P=)+**9dkdN3oaG*wE#4{IN%qTbZAu|G z4g-|a5j&^^XPeAndnLG8%FV;uVSsWF<w4?mw2*Ki<tumY99CEfayPEvH;DJJT(xw& znRzDmVp__|?(Vu1xBdI$#$|1{N@>1;H?nanT*WzVtcnq`9}<S)){QViW{f~uTFCAz z>?@id2u7cKN?6-u)GBPxav;dVhWG*%%O3A&?DSer0iH1JFH83nTwV0JQHUnnVQFgm z3ER8X{M5t648_Iz+CN9F)laYWmhLIs)05^~Dr4-!mdceRhsW8-3eLG5SptP|57`rE z<Ogz|eS+NU^RK~03Ku)^U5O&Uv!PNk`IqxnY_ViEU;m?;eN_!a%hJCmr7n~3R<x{= z7UN8GnTBgPx~&V>aCB7)wm@{%QaqhJ@$FWUGVQ;InXjjWVzY;t_McUX_FJ@!QyY@S zH3XAg1*vX!Ke7(EwLR7wVml@_m}$s^T-`E#1dAxO2K|whV;O}%w0w>Cepj#0OVsPl z#Ec!0f2K@7U+D*!y1RFDHxc)SsOK?fan*89qkOgQlCsY0<x|F~RZ^~i@ReJV&BkMW z)MsTAy?eK;@`{_4P+r_DEBnZ44iSmoAefUMxVJBQS*vrfdFROND_vnc5c4FOja}!| z{g&fH!RTB$nq!_i7A${Gu2Am(!rt51aY@pCGy143*n>H$qukp+XwR)A`Tr&@66uMp zs)!^eeVZhrbL9XrADDun^3Hh&>A&$|7LGlYCLNsvmi~}E9gUDWU@2><CWAV6j;LP- za>id6v@=o0)h|JJLmqXD#Tkk9*q!nBKFAqsUxA#FD2rStt{hYN5qqB=bvxNP_f(0S zv+@zfzDj-LC%lDMc(jjsKcmo>yj?NoCK;}gj|}FY!v6N}IDPOyN@qX&cj$#47#y11 zU`;*Y?3a9+vu++WSa@zAXL|)eFO^%1viw2+5mkPHsPc*afpY+}{W;qmt(B7f=@Nd? zp5)oh9BaGt@DO`mmT0b=zHpHBOLlZ#mfX(7Ffi~>i~C1bW@Um;+wpMePPogRaFR|& z@8AuYk*-PiO(6+M&^{PxG}z&A6INdg*e3!RHR=ndz1!)_2VGTHq|2D);V44iNP`h+ zYp`2Ry&dGNaj3;ERXJk|XP(MWLbNnXve4b^bBbDW2_4s+l_{@G&8!f18m5S(#k8Tb zY<{K($-s5o{uAWL>pCgA%j?KTUUSPG_@GH=ZobBf4oM5ge&Mm-QR+e2`pihOTTi{i z=nl2AL<;KRb6Ec$$c^1f`yD_jn^5?+We-U+W2Tgad3I(>%*qTff1f9Nt&yGHrbq*t zhK3+IN!bV!mma;R>KZHvazqJd-_17hn;d8|w{>4Dy?uE(S(BCUw4Cd`_okj%w%I$n zcQ7_DAL+Z^d(UU;%0X{dnN9DDOU%wGAJNdwFzt_|Hwoj>OGP7t0^dCg6|~>~y57KR zO*Xx`_T>#Bo5hguWx4Jdxj$t98WE6viL5$BuO;#9H{zdXE}4XK=-a-L-s!0}ryr6> zGMRfu=9}N!$r^KKVN!ndQkiTforxp5O}mv<=2gC1Jojb##(1X>mPliIBK65PqnD3S z(c&M9M=E^Pp2#Y#*-L)P)Hab*V)C8hWKwnu&wPvwPBFJ>e$gftd{44@F|Dj`N*>8c zjgk7MM)gtOuEKu#<~gtBM+eAPr<{q;cc-AyCAY%^zOkPBhDmmZsO*x!7=2R<3H&MF z_nJyzSAH~6C4l0$SI(Uj3b*&ly3(pUS?}KEwu%)QcAWXjb6hX`9ipY%q;wUhgNVMD zM*Wj$;|9b+oQxW_S1UZZHIo9@Yeh=XE(P~4K0%YE(EaR&e6#<sk#edu=iVct+?giB z$*}CXhv`0noGGaV<07-Y+U(rTT7%QfJ+f+0-!zaSOI_`vRd=y79r)fJdgQ=(bbXUQ zH9vSxBW`^WmeDezRmu0x+{Gn;ctxO7iZ7@gb@eS|btWJ8s2ifrp`zd8=AanJ;pK0E zW~*=m=!$a`y0!;R1UWH8hwOyg)Z_bk54wnWPPp%ZoRo8V-0lTAaTAkzu8XkERVq6+ za>6+i#RX$khNqts5QYpfOU74T{fz{%?A0QG$gvu9U*89U3t0Teu2MMTQ?(7j?yY5? zBO1&fumyE-8xj{9NzYEp&SRV&C`jz)sK@#2m@2Lsj{4BZ(cMu&w^*|JcipAsgfGHM z_?|Q*>lVom?dqqNGbc3p_-q#BQJ0pTg3rS4On{H{ApbbD8B)F=%R}_8?Hn};u*@DW zyyhF`7C8+Rihfg;8>Gt|d@K5Y*%nl#6aHedF<#JLj+{igZk%}@n(!3aJ>BH7%;Gl1 z*(SGGPBoCf*Nt#&=<5jL`$$*|O&*1?S+iTPY}L-O?0zzU#@jce^0`ZjrRp_aaye>4 zc@K;7a7;Lg(t8FCGcrZS#8sAkA$vaEt&I8c0XR%U!4L6Mf*0G^c*u<uw+dB4S?_lC zR{+g8BSC#m?Rcu1rD!20h~6ciN;WT5GQtBOsnjHO=2<E_N!=uMWDc2qoQjtIf_9VB z@=BmTbIsxyT2Cn{+2@8(R60*=@J(%WL)G+@QTA&QA|_eUEPG5!)=3TtSTS2dSkcib zYIo}e8N2z>4Gqe1!=D^O<eBJ(H+ie1MBb+^1`$KqC0#3eb?1O6EL-7Aq~Byq1^CrM zn3hKEJCrOr#hC-zNOB%^b@*|GtTP&FQBJdA>t$TX4uWS7jq}G`)T@z$M9j@-%#B^| z4|TVk*-j0eYU?@nGQ2gH+;N`aIyQI)u&ndC$6in%6nwjf2gwl^@#H*=_~TjlQAo6^ zqA}du#OJ2}?*HslIU#$v^C^o@dA+FrQ9~AdS7x>|bFS#hQFDr~b6Tdc*Y|4F9+=Tv z56B69bBOthml9j{{YH557r9fFARdlg&OM~}xrg*g*@0ZUAbx5?_BUDbp@s6ihQSfR zK-=ip<(XmHD=+N(haQ;;?+T%&h)f4aM;b2^pBjCk&GC(TS3QFIx63Tssh5cWwK_#F z6JgJklQv%aLOlB-gWmEbz@yh6MhD*4*EB<C<>WOpMtYKVbo_-J==HgEzPD$bYX=)L zg0JA%f@8>T%-Rz=bu7$I8ix-<h%_7mKvNK6Cw|UPXuH`Lu<%2(?rWNrj0Q+l-7I=$ ze#}g^hdFXLU-Rrn<vY|K?(Li|5ia9cQf#o-+W!S%5U!HlFo$QclHbwUclK=@3_?xZ zGV`z`Vn$}}Zb9Eaba&x}Y^3S+BkSxj-i+3aF%3=!ABh?tx0_os4!eCkX=KBhDhkuf z^MWix&tZAg+27<+ZfARRRC0cx|8KjfQaKgT74q%UOKR1$3k#3|0iU@mZHkPA9!+Rd zIkoDDl}~~ku~H84sFORBqzlNp%)Z_TZFym>^GJJHGB2<-^D7qKm-`8Jxzi(#i$Zgn zC>_hGYARx9m;)R|U|BwxW^5WA{owQm!?EG1A^SBeV{eG$<7W~2uvnB$5!>Hoq9L*U zAE6EL<i`B$+b}3T?ELw5>5h^@&VQW(JFfmOo%kod9^Zo5PRsSR>ybw&tm=TdHdz)v z3FG(6jK=Odx@t9a;+n0HjZ|&_)3P5-mwlOsWc7i9r)+oOKxQ*e9v!*&M8`QehVB29 zh&W8Yq}SaQwrFXQ(V1nt3((8IZTVim=OfGJkPLC{SJ{#D9l7sfC&9kr*!edrHm)^n zzsgw?)gL-v3i<w4cvq0~O2LdVL-f*x)Pn2@T*Fy?HbhcG8C+9hTf#llA@$hn`;2;3 zi6&=MqE@S_%g#{jW^#V$zEFOJecceeqSvu6zeC*a{aa_2<@;nhCxde{b2&Uh(me_! zX<pxF_g+YR?nQ}TTpUuh8%D!aByGepL2A0Bo*o!>&t{+LL$c}5Tu)8QTo030Qx#nl zZSf51k<O(UcVUh+_V2?P#~DB=q3+k{E}>KJ!)u+sBA?>cqc@sh#X?Rm`IHVm$-KQu zA`W#T4*u7Oy*VR?NB>Ry7!6vhW`+xSJ1DCMA@S&?NBFoi0n%qE#OId%6N{B#=_`0h z_oCT<;g|lEy^WYkfa2=wN&2`5MX?b^AUeG(5S{jC%hy_fHp<b7hof0?A<>FOGEx47 zqtm_O&9Sq%_w*F2xJl_mA|G>%(z0*iLl3Fj_*5h{Ctv=0l>4aYTMR-q43Z@8qbGkY z$@>f(Q^V1#rBM*Oq&#ZU98bQTng6~XBxijbx4k_`b_<*{e`mImrqD8MCfHNakbcIg z3X1SH2kZt@O@ZjtA<*SeHe>~&Yg!rG7;PAO{WTov<?6tT>U0`s2^#ni^~f~>wiDz) zdv>JTd*4OjoT-_GcUiGwDSWe;F6@DAuguQzrmySXaju7z!x>U`My66tr7FcpbCReH z(<2{#X>m?9Aa}_*O&drvwn!4kAkrBjKTc2w6y=!w>}T}BbeR8`L@r{aMj8_%pHGr3 z+-XP_B2u%>BT^?hQ4PsLi)2B0SUDpM$-<pR?Ed~+WQEg{l@HZcPP)p&2qT`4covLa zS-3%EA(bqQWZv2r9l^S-zHfBI<#p1#q9evPN93oP&@ptY=<50;8<OWXj~LG|?2g*v zEq98;_Bew>hYb>KoHu%BN+9|m`@53|hodjdP(9?vG`}pf4@(b>N#~BJlQWI)d2*AE z3iqdzSYFO4Oku+gfiRqw7xNS~wk0+mJBRjaA?1+#-UD?y9*`Q=>$6A4hR(4XKk$S& z4Q2l=*Y~C#F@+J!+!TsEki^QcM?A`J9@XvPCUa7LbX0#hs0Z^L`y5p+*07nd@}WsB z(Xr=7$0pdLJ#lvq6^#8VjAx#B4vLQLBe@vP`nW4UIwsk*gu6&?3`@Z6iIKLXf)w_a z3PhumtSXW_Cge(E&7Ob+k*wE`>YvdF8u&OHHQ3GxaP+A$z)1}`0u|u2p3f=ptUmdX zT+Lux_xs^!uE7oYuy0@CrP4_3vcM8qLmr#;O{tDty?&S{ULRJHVjq8VTSR8?P&dny zCU2POG>_T*D>>d`=_Mbi`TQw$Dpt6pB}Jui#<ALYmxjHZE0w8Squjyj77n<7`W5j> zj9oKCS$`rTt>5Anc_?YG6&(P__Y%~9I={Pt;P;>llEa=as`iugtZ0q%F}7}{w~UMp zlkHLt0wr^1_S102NtVX_LXCe*;y_ofKI%WiM3Bbk@T^|?SL%^Ql}RydBUOEoYhRb1 z>)Ts!O$C(_8c1ah%xDyt?AC4a*>xM_Tp7*wIR{!KW?{49q=D#fDdxmfOfGW2&V?3K z+F|?kSYcwQ-W60X3&aY$d-@X}F_Uv+38Z6yuTRcs#qbXdBpndzz>L<UckCv~1?wX+ z(W`lbzFo5h<eQQHDILv}EF`LsW-DXAb?P|BNR!SSBQ>MvpL)lPUO&Y2y)$!2(0<1} z^{(lAccwRB?+V!Oc3vu*mI3>XP6Y8Crw;oL&pd}fL3_8jp^tmltdn6Xv23Sv-Pt-Y z;Cm;akJ%k4H~CV?kVV8`CJ^k2z1#{v3F3h6FO{j<$sUzL4n@`fubGVAG9>JKT`zO` zlhedKO-u7jQ*%m>9g$t}9w3{{%Gu}i4!z`3HMJ{Fz#Ja(eW^#*(BR?Ns3fbW5#s%i zUN-)#+}QZ9PBtOT$4K8Sn$gWs(Gmr-J%uwvll|YIEv)|besvRgvj3ZMDL*&q)o^Su zOOB(!HwZA?X*)AHqcN*>W>BJ_)T|#q(B7{a)ud11ae02^RZfEM31#eMD1VD{-`1&) zv+Lr9RHwy4k%ml8KYbPQ?bJ*1q=SoGqRJ#|J}WkHppprD`V%baGtT#YCQFkQgjk)V zmx&TWuO0CZy>{H+uh~&JYZ%2Vme`X=4AAS(*Xu{0wqnB&mq!e=8b4$RVjaq8{D8CM z^<xKyl1^fdO6Ig>Kp4(QIwkMq4CjO;i^^g2b*nDkzpadY|5Bpp%@l~%?M&9UqnFmV z?|}cKevAxEQSxSN#Am9AKck55%)&fBrDs7PCt^jB;oK6DA7*rr{Faa$fc9upcsuKa zq8>D%A3w*Xd`0R}iVmiPg0xgeI+BH?&4SCM-*f&q&VW!^7hV_Uuxq4<FNQK&Lb35F zBE-f^xK@rR+h16XpCIiuE0s2N_@#YNar>m*Q7&`ciqwZT>BG)zNeO{ir84-xNu_@D z7ymW^M{089Ct=4*`uQyxa|*k<2c1<!rIPMBMF#U+FSki7`?xGNOwL@|C${>DY(_rt za7!e}PxpM&<lJ*Y!FgPQ*?KizbwA;y2M>3qh>Iw?>V76J0T#Bk{^X!N!xOZd1NLt` z!Hk_8<IhbNNkvscz&^a$PgqWD4dbZ2b1B4bHDP7yeh7yIlMdBO2v`aiLo&KX#0Fm! zIeKlzUYXwK<H04-(z%!c-@9`zFnw>#n(6yuP9MaP&glV80iSxi^UlaW{nJx?P1Eo2 z{d3j?-y73^>3en7&8Gcor2X2+=f?B_zRzcm^6kH`f2VVsB;!@PDdU}t=8XNY(~Qr} zQ-?{&*UXu;W|H&0!8XF<SYEYTvi7pckg-=yq`sD*KBk48l)_YQx(uA%Hy9f;kSX~y zx~e+S7H$b9?GO4soOSMqSn@@I=uO_}7;on}6#b%T(8~o=R#zOBl5Go`k=3qR_p;?l zTe|nvnxYhRz0*_KpMU6Ty7f(Jt;+=?ld0r**zQmY32D|TBIlsL5bYUO!_4syncW|a zL9X1{XbIYrQrT5CIcgb@>ufWIWSk1xcMl0>oDTTf3uc(U(*@H_w49>p$T(zXIGgUF zjE`x)Je%%*dus2#{yv|#8b7A5?}EW|*VorP$CI?Xlj&sl%sysPbLV*(&GvqG7YZRL zk4q<v0a-`NLVzF8;zOMy`9N+g_pGFy6;qJ4PJm?l1V}d}=-W+Aa(rc{p4&)M1)~X^ z5O$VP2Yb}9YKb;Q)uwY+JF+v|y#4m3LaNeH9msOW86~pTaYnu~EJV?4*qdcU1m%ZV z)`$>kP5vzFKzQm~nQ3%7`!oN^W{+O_E-hhZFS$%MY4x(#c%w16zn}D-*ggE95KEfK z>4d_o2%T8KVUZgz3$Q%ph6O#y`9(0i^|J315%sM;?}q>`6Q^|C2_RBJ;j1SRMH3ly zBy+A=+|@v?^?7-C<B^w8Fc7_O-mJl<b8j%YE*pRLy#ji;!OY=v`dp=gvTwUAY}zgK zak&cR+~7!`bz#6}CxQ!G8tIvJBH(xYgO~fASy{3d#|E2wH){xch||wi*T<0`J6<K^ zX1Uh|GaTM1E}O9g%if*s<!Z{D0igSXa^(zBFGw#hFTxwyJC%E0)44maU+!;RJpH?y zFUCEiMQweX`pbJxbujhYI~tE&lGIvu;Qqu@?;zHgY+H7Yr%K!_U?I1}=)cqzFh5to zx;lM7lW)wroI1QfGJbZEQ)YhCDe|mAf!GKY#Y<R}=WPv&l~UkSsI^aWO{}4livvwE zC|R2-Q8&KtIiYC=U)iDtq^O<FtRkIV=PBXI@A$7gnLAZ2cV#$E;@X&;CmruEcf^)n z_r_$Q9gcndk{CnHAC3)6Cp$s=1S=C+&zby$iC#9ErgD$;TDICSw46h8a#}>MotE13 z3EwAr<RS?jD`XA(Vp=6>ROq#RS2Mv&+gXv>$s{#<a6uM(jT|hC%;Eag5B1uy$$D*T z(NXWoMsGoKQTwSd=iJN3CU+)tbIY5Cb!2immmS9>%MMEaa4i4tA$w;hx6--`?v-0> z;{1DYMtTX^U&^k)gn&I&T~U+kXMyMx+1)G{uD)34v;E8zTrC^r31qbBwG)vg8uZ#d z>J%44D4k`R5#KQ|lXh`q4GkhkJ<2C?W$k3H9{9Vun-LqyG4N)+<eN$ml3I0ds0BD~ zDKnufI_R}d8%X=IexR1h*lbd_*S1|mu+H;)siER=&)jJnErIR(xYKsB@S5%hw{hea zf_x*Mc>LQei!8bBMb6yM-}7R}w<QU=qQ^}6r-GmAwKpS2k3rxb)fLDXLoJN-Q08>* zozcAzKi*KYW)f;*xve%z-Bz2=C4*!pPr8b#AX&PUwMi)_aOdxhfPG&V@y(3?pu?-^ zFc`K_>wZ8GbBiJGt@37v{2<fXVP>yMv-0-;(@gpghK3puX2xL-fPKr%c*kzB-(Wxf zT|M;1skfPeLoHODnb8zX+Tml930`BnS39`^Mh2PPyj&{m9AL&q$__nF+>n!td3x=I zdhHmB%bh!JC&sHSkTI5`kLr?QTWI4d$(d7j=Y~<zs4q#cV;RD`$)=Q<akD4smac&P z2P*52U4&#N{0osYgZ8fd|D@na@5HN(1ME^&t33r5P{+(?@o#eNuVWzN!;E}6Nskrt z#X#&<!>ORiUmMKL22ObT-Re@ELyo9RmBAXgG8@cj3M4gAL1qT4pWc<kJYY&SWi$qp z-cfaQm>DbnX~Y}^k^Nm<l}l<OA5u1%<m3LdYrGaXoFGk1xn!3J*ds!59TO)C{>J{# z_kWSWGD2>>29sV3#PVpr_69R@v>}-B>d2Vqyx}p=06FpzZ#!XflEDUFBd06&2FL?# z_D%9(s$$Yw(rb&xBzr7W@^in>?_<Qfc2<LZOO3zuWPvw_y^Q4?DG~Fj1`*Br5RR=! z1_zcd&iVz^9l;i^V)c>U*kX_RGV*zfK6VFPqT`SX;0&COy}c}Q6!z?EkY`_h<md*B zRWEy%dQ&$bzvbM3T#Q|Qt*>s1wC!e*|2qew@#TLAid~(;38&K;2dAs+kC$>`(DL+} z7rnE_nQW5C?ZzZJcKA{+{D^(xOO2k}jhDi|xV0F#)X%o?zrEdfsk+^GsoM7R$nD0+ zD~gG0h5gk?T|(v*@38?^>~@d4gLHC)7xw%cakNLL2`BwF(vN+9#ttUJ!!p;Oi+++D zj%*Cc`Cbw$9Aqc4sQZ!`lA+cSk@|=|SR>aMxvMC5i8;~w2{%f<l6#CJ0<fa#`k6b7 zSmh4mSNHr3b^n)^@AK(HCBzkSJnk}@k1;yd!x0;<iLh^z?%Y(g&&jxjv9!lwOt`1m zNwS9(X-J8*wVAN0qS0PYbOgO<1ZnQN*R)5!lGWh!n$aGo*I-Jok*i!IhDe37ZNt$= zb)BydzapB^iZ~hhg5J{Tq@=R`|FHKa&`}jzxNtWKAtZqg7%(Ve&~S|gF)}FJpmakT zI+8#T5LA?eFa()m1_osagsC|O(CdKL31__O6|Y{!IRRu6A$n194v1bbdM`LIIplqN zSDjP6>BDoq_y7O;*IVn=THRg!)&BOb=~UIJQ&lJL=zxOQih<VfJX_yz(t}!v--k%w zMYg`qN?$E((?)evKWq`)MoLu`MD%E@4Wft?`xaHvJe9t$<Xx6@gK;xHv7V_Ykk`1w zpM-Daqk{sKk4`&Lz6Tv&1)eG@%!B((y6cR^bP_h1<Iq0ZXihhoqeI0DY37)ZzkKB& ze0m^&+a^ASHH6+}IU<17$mv!14dJ|-Y8o5nhNm3N4VO2(nFcgJT)a0wJf)uYr_<(i z=XRfWZel9ySaI)Q_wRB2S@qbp$z_J29IY1f4L#c9`#w+SV5x*}=_k--y^Fj1@2_qN zTQR6DJzubHOvA2!-(tF~d~XhFb#xQDeynp3`0m<T*BDdvl{b4KP0;%8tPT8mD{mE> z;(Mz_W*j=-DpF{-I&2m<1@jVMIM4b9J!&Irr?;XnimdnIPb+)+-a0e8J&F=~DlW*p zCdt}?2J3xa?hdU=YN(l*ghbJ(ZFbY!*(wQ(Xof)L$&v#Vt@1G87R1hr*s7sP@pL2{ zMTmRk?AJM8eTzQk=^*>L4z)WNHjJm)Nq(Y0Pk5>~kH&I~WuU6th2I^YA0?qM?C%u& zQ9@X!lBX6H^*D-+p1G6v(v3r|+V4s8%UN_7uiBawirI_#M{1sE?6!vDXd(L#VOIqP zctJ#{(m&Kn*%+=wU8QIHU3Xy;0<#ly;%kQZ16abKPcG#QLVwqIF2ZaOcjuL~gT8<2 z^2Mwi6$1M}(_n_>EsK_v;uPb>Jb+=0cZpgb@s?hF=SDj}>2WxX%5rOFdhtY|WgvT} z@3vL|FyRw}>Ew0L>09+HzEQaC163z+i}WA-!&v76PetpP?dW61V@1MkACri610E}F zr~8F$-&;3&^RNNZskxXL^H}eoyQt&4Y}%)r5bRyh%C|TM<^tH^P+c1eX1_BRkGyeu zY7P29n7mD8p1sABwqayp2k1tAM#2e0A}OEIJ1w~qmn6-XVb$`DO?sq=#ZiB}y%R%d zZ0_{EJkX2HoyZ2S(#)GXL*X0G)PqrMD#Nqv4^Y1>Rk+B$@&&q?4^++f##WZ(SR+*) zygz>ocEjD+j52|y?2vvmgqyIjmNzVCZ=IXrBzni(eU07dK#@?*kfu<0;F<9IL)i6- zEtLMog%pw-9*8H^et%xLG&Mh5>ZkptFkiMj51V&UrMMpD)^x>E@a=in%2#~}auv^% zc#mltdeRrQzciHnZrSH7OC^9i?xX-8BZ9S5kjFmXt^o^Uvtua29E>U#cgOzHt=M0R z_2^gg{!+~GUWFAxwB4~Lfa4Fg@jlZp)IQVeXrF0CTz;Qhler1GCfCZ<yG?WL-KJgD zZqvX|$f^EVu#G$#-VC>fDvM~rs2bDMXV*t=FwJ!~nC4=G>DAa^I;^X2$@OR`g3J3X zX~G86-*I(p#RAhUf#u%(K67}3=^Wl*ItLp}v9*@ti^6OV5?T?eLFh=fpk)Y&Imj~+ zp!y4HEz~r_%Z`ukxm0WMg@ZkYyu6S5hTq|{+Y)L@um_9k6}KbT;tq5UHyCI*3UU30 zuy%o-9XJQzprzi5TO~}j@@CKcn7y=JsvwBnu>8~u6G5YKq|Jsdxp$-=+eg*BBE2LN z4^yzs{k=o<RAq7cT9~Ul#E%$f)Bh^`w>u#ErDW4DH&FPct9?260c$`ShTdJbDi!oH z226rrv=R)Tk77)NjSPHx=VC?`Yw9s|ygxRCIWe?hokH0=$}gjb95}!WKdr+Msm5eZ z_KvbcjptBk>S~2kFr-W{P3<=z3bbxxFaN%nUeCX;s|P`}ku#<_W#PGjS1DG3S8(V} z(?r@^PZKtDv=eTxCSt7z4GMV`@PG`gviy}GT8xdG*C3t&BXQ|LJOqYx7Vckh+xRVE zI1lBB@6EcPwLfSbTD+Z7jE*q_Bc*<rPp5rnZ*n#O=tfH>?1u^=oLDRckU^C#LfIcz z9%#fmyzA4tqkP7s`_W$0B5-hNwzC1%1W#}S*&A`gg=NuobSr{^6LqO);CKo2suXWZ z8FkS9K=!8jEwBJE8?&uPV`3^3&>ZC*#9q#!hkb7jh{2<|-WV8Wf9zXA6_8gOA7JiK ze{P>pZ{Ly+@elEA);rJ)d*P9@Xin3xs|q&^dxF`Aa2ND0*>2~1S!G~E1RC*-RYe7y zbczYKg1`JaXDXu8XKH#Dx`H;eS>Bh2KiC=B(>D}f@8N;xpk}z64A4X{{IPUxCe*Eq zsqk4_GT%n5yUuG~<?~|XaRIK|mp7p}XT?nnWNv|HY&;kV)a(~D#UG-B5XpQdqJ6K0 zJ67DNZRxSYnYf+b6T7-73P{lYVD`I6&>_UCs~v~81DTsu9Bhp_lp{J}$OvpaCa#?s zlp@Gu^^QpZE#+}i(Ar5sY@jOMi&eU%*lLd?1jD0oyRjds@MCYtAySbLz(HtiHwTw0 z&OvLDgDQ~@6bDG@8jBRGEcLY+nv7|rEQI>gAl}p0W>6Z5;@q^MSw9f$$AM{s{K%Cm z6r`O76=O=q|8A^vEhLy@jo2gBh&{)bBO4V@iX%mj>nCm_>#6+-(evq-bXCVSkc<mw z$@$3XEei9Z@-Lx-gy@>V^P$DHRvleys0tYs388FUOiQRirIkE|w3ZV~IdOHO$;4c< z>Y8)XF~-E5B9zc7w2&`@nk_m9FGDqR@cWbL54CahCyoBB)qk=A%S*k;C3LH!{WNif zvvX!|P?y%=)S!h22G`@k>5p6<bo~X6ZjGr(dV|`WH>t^K#3>~|2CPP&(V`evW}(bO z&2U*(;GmjhJeKQ7*%xPf;(K7BII`2KN9J%Qah6frU}x2#gTJWfeWL?3lTE`~Ji<aV zAIiov0N<iG1k;AR0(|=B<II`dVmx@_qY<~|WpDIV(||rVvp%;blyK@{XgJ;>x2`cR zw`miv46_2=@~mN(<>254tjEMuME{OfLB}9=<aY^VzlZUB<_?^{H8IDFrwskm5ERI+ zpMNoK-`+bp(c7l+d<f0Q&Ek9f*N6~tBW7(u#436^;{*FT?yxq|_P}k3Tpq?v+@NFb zk{WoL!)&16g`25ZX-o9=oAS}X|CKvX|8RPqMRWOS=pl29>!^>*pe(_|5DfG3CLgEO zM|m+Pu-q9dWoKcAH3?_Mb;Mx0q7~j)5vqyBV7hM=%?tjjJ5uzSdSR%2YC_j$yw0NT zw?rIQlyh)$T`78fJCKi5$fNUbXb_xVGsJ6_vSQr^2Fyc8`<BofRq|^F;@W=`$7j6h z{{;h@VO|VpLchk;`<6UJiNkZAm3Nbej;us59hPuyi|l%8`mq9_Sx)v|nzhTx{3Iv) z^SLtucrw;h(YJ120!GZonrfDNFq^XQMDhh#Pv7Dds)&u}F4;am71Qe*j&zvW{MaGv zC_52n)zK{bHcIhMY#0h0`vu4CWCt$6;)R;f$v`-8Np3jz+(5SfA{^}%_FsgN5DxV7 zpOuTzHy%8nq|+@I^}?t~50h{N1c0^x=%EWPL1aGNNnuV8#e$3}?|~y*)Yfc$Dgcho z4X9HA67#~HPdxzu`pQ0}GaIkp^nZ8!BU}GJ*zrFS$3f}Mt$vySS@>NojRzvmd|t8^ zZ5j_mU!ixygu?l&tz0bnAGsWNsLsBB^hH>G54n?h;dyIl|Gyq>Vlr+mjb}<TchFFi z4-CLK6K(X|klNkKt+bVhvl*yA2%*)(4d%iVykmIr0L(?u`2e)aDX#{XJN<noeLeni z>r}iw$ND`N3#Tg5$KW#}$NC08c%=Ow{Pgs_<fQ`ucHzp`cP8DB<}62#isJy1nBP=a z)dwd6V97J>pq(AEMy^)z89{%xg~GvgH2iuO%h-+%i1oe&`&AoI6bqof0H;&KI+~Xp zlDQEw)Mtkx9w1oBL1pngk~o(o@|UZ<wrnS4<uAt?nWzH=g6nbM>B0>#hpszV?`xBf zxh>xkTHA)_Y3t4L0$YG!Pb}VDlY^fT>FKl^*7^c#rz+P6s^7uE)<=CS2S6y#nzs#e z2^-Lq#EuPEzhF|&xAJ)ypg3a~|K3r5Y)oYi8g}0*YJ1Rz;%dbdUQ!+I(r34^ycm4W zO~}b^SkRVc8CvDguKrJg+200z`QOsouex|@`rmK75;_)K<H}zE{=vE6A2fUnDTnNj z;L}n`te2#fli6S55hr?Bx`CjyHO8WwPsg6;AiY2(`wQP~-B1>|_peAl50UgOABK51 z<j;mc^)56*(=dViPG0eNYK!J=$SwYqDq;y%DboN2&&MZJSv~jm#|hk-=q7uo$Mp3E zeK|h{t>3eE%x}@OJ-2ClV{_}Bd~0WaYsBtY3rDqW#5|&f6?E0do6kRMpcT8D<|{wM z?DmJ~@YG^LWWjj@p!33Xs^l4cy_I+tika{uIlj;dihdyboyrG8#WXag71|>xM%zNx z4I6^iSF~2tkCLj=GX=RgE~y0$;cnW9nBbAldsg1RFk9_Jq>dw!W5xc99(L|RM0R1G zQ%7Xm{PQSrn8y7#rL7Xj{TwCzh{!RNIU@24B0{B4^JpcM?^xVgk=_@B8-FY$M`KKr zlYU;{Xl=4@aV574!PTg-8$!i%A!?QM<{i<2V_zc%SWQryW9<(WkHEnKb>GF1x)Lkt zy@<J2nlY;B4Lx)YB5q-~;iq@zj!eV_OH--holTdyHDLpG36V_iK;8GvdO+=A#G?>n z_}uJ|Q8L>?P4CdC3iI+`2CSsduwt=!DEpJjeL0xC!?X%1M_06%wg@ACGqQJ4I!dtP zG~l~`Ysfkl?Ea~04>03W8^r8mXUeD+RBO@^@x1hszFvq0UZ4tbgz}^?ls&JC4y&xg zvYy7oP%-Wbb7&3^3#fw|tTBi2*llCxCKLefGd5y>-u&h;(uloOBR5!iCsAeyjLrNQ zGY5OCe`!AdLZ+phw2}^kSBIb-G&@}rdmq-L;__kk6~yM4arq^o{3vpTL0{;I75jsg zax!}(=5;Y?nz;=cHbO&P5Yw>DvFmf*nUr!m(P0UljFp3axbGnvD^mI8q5Mjy3XUF9 z6MG_P6~rRAkS-X?L2Q`oSf}#m)Kqi(vIDKWm3Jbl9%4@N3|u5ud~|x|r%^I4;bgQx zGAISOfevQxtVpE@HQt?*jU2_6Uc?l`cYe@jeHpa&HJ*d0`EyV~Ga6Hs7u8fn6&R{2 zYA7_$&cp|M&8Tv2u~O=C@tsr`nYS=7mrCU*=Ff^ZAwEeNRr_M9PIxQZ<rZ&_{Lexy z125r(ncCRO{2UBq3h>FH%cQi&QOYCqFleB-xu<@iA_WJV&F>$uPSQL<4)-yQedw^W zZW8OlWYPh;qmwPLGH%P#0!>?~B`C<jXnr=f#GIhPe*U_eWz_RjAOCGuHcm0GIG1t- zJ>J~(F}O7PhhKky2F!t`P1L-NXvFgm4%ym2JogR2ta40abB39U?vdJ`5Z!a_KTZd! zG|@pS*k!zm?qk#ppY>rd`-_>wRecaAs_@}f=pPoEVXl1w%3Tx_^e~YpsxXFWA9bS2 zzsg<+lIq`QBG>qsmhQNMus#NluaXwpvn5(z-d(H=OTP8-EID`4St|SZY?hD8-o$mX z##+JiKp3#o`n0^5Ivk@CUPKt`_##Rgj!W6Z$EB#lCG>GASpjP+P$avum6f-|IYtHh z^5_p{hM2Tillb%$b8w2a3zwKh2g#!v#NhCM*Mn2SrD?CAEyB4Ag{jt-AdarfSzI3L z3)W#+owj&zY(?`xbto+sDzrBq-gt#3a}lAr<Koa`APf5tvDTUgR(hzk<nU3dCG#-L zJ8unbU!gG)9j-z{r^umJz<NmCP^lps754{-8%}y%kB!1Lt3JaYJO4xB_)rZ!=B!KS zJvjfxDwLTMvHTZTTm_cXZ3)$kT#soz?18ER4Yh1rUd;{b2V1e5hSqf4bkv^~SAh!0 zCsc;84kh7eKp}1D%*tU&LEJ(5Lg8jmj-wILLDg2i9%$N<ll^1aUuy>7<q#EDz=oCg z_If7biCtY1y+`OOYXqSF&;@8?lGUt_cYd=l4y0K|Neftqo3>#cR2dfV)bQ}t93Df% zTbj1L@%kG!(RvScd<7=0J?i+FCGe>om+RpR;W~)rSBBpOUaV&x{@=>J7wI7xhtkWM z)z*^61p5dIDj2ofH1hbE!aH$%%-X5;W)1na$|b9(P<j17I6j8nIv4ss>G+tnA)OWf z_xKppHJ)KT<@gwSZ215F@iA0U`1lxl8{z-r@iD!-P&2l)Fa0ck!jB()A5%m1H}d!x zs_6fR9v?%Sig_J)esM#{Iz-J<ORFqipCeO-1xz?cX7Wxd9jqMd8;Uv6=j9Cip@U@J z>I#o<@gcMlVFodN4KrxnMNitPX(*rtx`lL0NRN|4H8mv&IO<KV^x*(Ew6)nA%Z?oS zii47BLp4i6#H)#2&I@bkNfM6ivefxa7#GBctlO(d*viksc&LA>H7xa&3;>wgYLk<_ zaaK~G`gq){w3pmBU`I`g7b}A>2e^0<0IYEGR?fvdBQH?Y+x4s(iYRW<tQ&gckzGcp z=C1J!;2=1^C;Pfzt!BO<*ZoS{K|(cGr~8KN&8<F&Q{aNu&$zeBJc<RxTq*F2rx&$z z)JcfP_BN{32TxUD7=tyIKl4JL@Z~w-1vviuKxNBtC3^UIsf{hdl_~Ia#Nvb*@iWu0 z`02wCG6pkrR?;#YLcNT&;}Ez3SY#5PJtMyCGiw!%IJ8~7jsRog<;(Wy1p1cHt^jCz zj(P{*(g*P!tf@#pm!DQzpF@51rpuwY(Moy<KM%2f>q9=lXK*YQY~b}pj8zw>{chvQ z;lU|b38O=B0u9#C&FW2O9$<p{lR)-|IB{otV^a0WEMD#&@a65|ppUTxB@nZP7RC+0 zP`P?=nm0Tk1*;fT>=sQ$?qF+FP9N^3eM|46I3wTfJ{d0<!J&n*tAf^QnrFnQsk)(g z-{zHtIo2vlUyoWWyREny1GdHZM-?Zf*1GK;lBEOFyU-zjX#s2bVE}z@yXOFY79`_8 zdGMd$c`ci2@r<c#b7LZwk^LSFD@zzzW~)do;!_PV{4Ag~*M*_#&9p(AkEx`cmS(9$ z6?c{ck^KrA;rMQFeDoMph0+j5`C`FSzEsE8-SJ`d%>Q4f2#ut6p#V?I@r3>$mOLNC z7N<3P5wnoBs0vB<y?k|v@8#L48)&#t_wQt^*~vRzw?CPy5AH(KtZi4Ug7~}yJcq5` zTtH_NTLaQVSOY?Is~qzZ<LR+TaZkD=apyB73y)iuQ`ms6)NWv+r`!)srF7CT?h<e- za%*4wpS|S!1ufq2cm`v|Tiw^mm@7~xmEbbgp51!cc?@nryUj%ccGvAoZcMa3vIVx$ zG8r<3d+WM}WX$m=)P0j|?K<=xnaAc3>yx^#lChJbo3+Ej?tpE07R51B+kI@d^=>9M zMbuVYmy`J)yn&)I8;c)V-P}A3ww2;rgPFfVMcn~ZJ+;Xo6JzkEiel8K*|c>e^QiT% z-H=cuKC*T>(QnMB$Y3J_R*C$e_j!|13`*A_WOk0VC6KAM+yp2qKBCo<YRP>JwyXr8 zF93BPaiQRp4?GCghZfMxHMTHU(NGLoO)Zq4cP-+ClysmToa?#9F1Kv_SI_xrtf;Ch zs)UEiH`cS!@zK&M6-q0z6=SsHqmw1nWwOx0?s0s7cS7mnP~3XQ_qpSvZY51FLqaWW z4$J72)v>tf8^)D{XdlQ;voX*NVJaaj7e}{mr&0)6v(b-m6~?phJgc-fg6YYAI#+Vv z%g@y!Rd`@IQ?-QHpS7UGIqdI8AKr7`8<jAlGGPN{!J+FBvyg>{POUf!IAbS-CF*%r zC<BKZ`xetK7J6KlhUeS#HoEjc6CR}D|HSN{D_f)T%pa4Jy^Ky#sTj^{^KncrM7hAQ z1~?g&NH0x7;bqufnovp$GYv5vm^3lGjAD)Dy;Z8@!pnBze`9l2N%qnmd!?|qjqFX5 zrc$iEsPo#iFot|04PmB5+e5uZWyySJ&B8<UGPm%udT8eagqP95FgX?@xivLwkVV!# z6f;#J@1bCg({uu5ka~qPzfBG+3X!#Wm@Bt$YxEL#s+SQ<Qur;t>iz~pF<p0VfiDa5 z(6OGs!q)?zSkJ%l{U%JtdVYpa)l`pDv#y3ug^q(yg-&xq*Ezne@GWC4`{7&4zT@!O zhw{<k!s<0|I26r(Ik%~x!Na*$RTb>h;YZelLexxpxEjvK<AafV^JvABRgQYQ09AD* zby9c|(STEy@w2T5-o2B*4xjb-Y`_QGUqZ<hJ}QC}$<_OO_#0o5Vg81(4?NkAZRu_N zNtkF4W#BP+n@~r~pM^W}bXtHNzF{2><wy<(*CPrW;7th!UkruM#jbKR?H)2=VF^k8 z>-gaE8boV?E4$-40$1o!@m!Kv;k6bAm(^Bwz_MuEtuxg=Dmh$T3q`mXmi&SzCwSkZ z9}^+iK@p!<lV8ttn(?ng7^dy(>8Zyy$mi8ujBgCA<3hzaBg2~dE*^-?!g{YDc3#xt zM24D?>#)(jslKtTFFCjl$r^~HA_cxSc!MThD^60_WBMV^z-Yo)#kXV>EFhkN>I1(7 z7Vh+BPzk()wL>}u4J6Y8GS%~Hy_J}^tgeTBtb`ejLr9b6VEQh&H>Y=D=gQXkbgPcj zozwxM7>zdgUJ4{FAC$JZwxXLaIe^!?4Z`#JKpJLw8jxjJs1R(>39W2}h&P04hW2D& z;rzm>6_qn85(BSOZ9jA?>QU8#G*87D*d~FcZ+yzMHA)EwtU*cPL4EO)5*~z192IX3 z@w1vh429&VkkG{HH>u8Ja83vGATM~q+ZmVx-iBjAto*gP)wRf?kDBT!sW?agvbn{h zLU@}wHnb<vAvxQyp3=8+F#-bWZNjmYx8SUL>|mj#%iFLTvo?^4gP2F<1T%-d9>7NJ z>R(c8u08I{{}}HNOU<ddB|gWOe-c|PF#HSPbacd<j&U5CL+^sa{Ku#BaYQ3_O!N(8 z=hiNu1N!I3p=KZv)}X$bo5D+JcE&=IGPgDs6NdHKIRRSoA9D|#f)J?5O~dd$JgP4q zNCaY5%>||mgzt8!b&VO;C@=@*)LfNDTLo(T6rb?WzOa+IBh1H7vys~H(gre!mrM-| zWe(|`Ij}D-$Z+s6YJ)k8t^CKr!L|6C!hfld=t&bqD$c_3@2NN-HJwAqgMweHSfl#l z=A`wpPe=rtc^FjUBUP2K@(<>q236Pf%dvvrA(Ga}1GKFnoPQAM!{T$iq_a2P(;29) z?T4b{{a!Hu2U33GnrsLULAlo=dYF#K^TB~Vi9GT^cu0s!HzyqY4r_dI(85uFd~5~Y z9&}BzU2DPv{j^4ov%1k&J>T!CXo=j&9Ml&flu~O*o=U~GtpmB9S_A!R{XGQKsg&V? z80u`MX}E33KU@okoyL0M<|;tkPSYX=9PD1#_(dup)l?sWPra&>*4C<nzOvw3!wu?S z_*A1!?<Y}HQQyP&7Ke7gcbI(_;k%lBqwu|ieK+G<HQ#%1IV;~+j_)`4RHK~`Yje+q zPjS1#x0tm&37_KDJHF;<##J+q!EuH@N{vre<LAAcS?HWHHnm6M)a;rTLf5F?bgE|1 zXcU8XvLZd1Z@;l1fKG|PBU*YBjCB}?v0%eXo|RnLT0fuA#~)+bJQ0rt@mjem=qnoz zPXj#Vi5t$v4>tMjZ#)MWbsNBZ3j49K<pye95d3S-`P=v&>&-+gKf@m3x`sG<yn{QQ z#BHczO_g8cF!{b|YTGf|vkBNFhtP#5tDvB)VByII{6?DVxbWoZt({-5=SzKWCgS#u z%~|h3Ut&EQJIKZ=@4+?FAt&4^WMN7lJ<k}mo}xFh5@*Bl`Ih?KWLTAtxlTKLE4_Ni zqojJks}5DfE93pcQ9fzbS@eDh9BGq_6RKn4ae1TBR`=+<YznFn9!LGT(sKQ#bKtw3 zi(kJwDitp=qW$sj<3x>WypMSCK1fr+`RVp0J}=xiUB7__kLa?u&KwiOmMJXq#Z`f$ zm6QB9du#>YePhNLH?+8{VppJjUD2o6ybIAGCs<d-)5<l>=mz5P1iV?eKPI8SO`>kP zWgwi3J*KsloAIb4nBA%Dv7ptu$I+m59&Q_gI3i+c6U7@fDXZqjX0#*-s}<&^C)-aj zFp)s^QdR^q_XM&(SkQ`}I%T7mqg&S=+pR-{w$>;frZv?zZK7pf+pXX6HqP=wG%J}~ zaQ;f!<uw0IX^CBd#y@jc^`U0(9crq}u|BTpJEX^UPG3xNP7L0;7mue6m`P8~&-}9T zI~?>=o?>mKmn&0Dx~>Rpja>oTXuXr##2mtW$1W`6L11nm9J>Ok({U+JvNl;i5-Dh< zui$vmQ~X64m@%N$HW(REVyPa`JqvmyjG0j+fj;eLUZHCoJ!65<>b@(m3MqC)MJLK; z4{powfQUjUhbcMe&%!w?;+ya+vwhi)VED>Bt1q4bY)+*YQf%V4i_*bq$@FR~+A=+x zH=-ZGOcNb<cT2K$T?*bXbxXW;T~c^X*YLGjTLUx!RkbzHn^KBXnDcP2SqpDy@-|wU zg%u?0>7SL;#&6}dK{BpRQ!7G>gB=6mK7nv5?l#v#r22%{cN;BRr5ohJJUn*xy>(L( z-3pHmTEB&;I<723FrEzb#gT`6UB8upnJT<<WH%n3)60ai-=&w3`G(-<5Kmsw{y`ie zte#I(MJ~l1=QgU$CER?)Y~s7fKsb*72CepVSW5L*4Z-k@$u%jdJPlJD2w%f5RJ3+f z?`x>(-w(ZN4jzeO&ujpFJ{Iqyd&c&+V0Z|Y$?X7+Q+M-r1kpv|{pP{&z%=Bae?fdO zd`${eLFqL(KJ6WBcue6<8NkxP&A=AzDrCfhHV`j-1)1mJV+?T?0iM89^{mUT$2#GL zKuv5s&LO}^6|04@-qU|CUPu(P5oZWu83zdftGXAb&!^is9>NdB8~ldg$?-nls*j<W zH|OGM5_vOs)AMKl#ML;%JPmdN)@4{G8?c7NT3^KM#YAa#!`uYwO0z$i*R~P$@0yhC zPv*zdlX2^ln1gshSZwBxs1}<tw^)a>56z3qd^hF@{=c1B7jqb+b2Mp~RNxH8<V1h$ zfwu3_Rmo#FEA02q$*kr3pPJa0_$D@{mhL=rtaq@FWhzb#)zg^tB-xLXaD&+sGkhy^ zagoqdS3JdihF7l#todDGC1B0WvcAkz2Nc<xZMRrhQ1Nbf2@R<@I&?ji;P{RuG@zna zhw)7SDygc&;Vin)N@=<P6_VCrR&Sn-cNAc9hql0|{_;1+cOz=2x|N>_p9*~#KDt?r z^?d4J-#b423ORZ?ODVOq5qI{BaS{OCBVfHGh2W;zk99e?Hq&rYKV=tgsBkA0v>Ixz z!bZczhy}#L*tlMRuC^c<&5|F#d+}+&=O8|Z@j1?~jQ+?Pi>Z=tG0Kb&WFEqhG1VHH z5>CdBnOYbNWWJ9K&%kLG7{1QK(wMzik!TI-i2bGj<^#aq&p_tK7_Ol?PNx+*oj}8~ z^Hucrlj;+G-zpmA(CpWG{L<TA3hB4__4K`j7azeJIejZ{M~vwPs00`m&E()D!s1Oi znb`k@nddEW*n)y(k<**u3Z-+auq)@+%!6EPxF5j=*o<JzW~>%kfOimGL5U}M4Az@! z(eqldt9;MB?ajH<k3}}2><{OEjp9qAEi?SqxhK(>Vwi~KjP%4j4dt6bgF1=`tyHDR zhKk?8TUi$Ptx-KQKaaUTeH*Zx%*XiG%DK&-y>UT{%68dfd*gKMdb}hK7bVV-8`~A{ zjKgaNu%IM+*Zhydqp+AjWdiN}r4o%8FqYykt%IccM6a7xBSq@kRo%&j?>ykKo@4N- zk(f6=#uI;DY(ukpO0vh(QT^~YEsTkQv^qr}a`3&wSm)Mpp4LBkJPDh<p625TH_T-C z6*I;0(YRGHN&h;0Z0Ba<J!PY9oTqI?Gf%4#Ej-P8#&OJS=ILxGCP_Vs6xz<s#z)Eq zL?UA()2et$kWqR`C)H=$x#|5}>%|Z9hn$_GluJgV@=-cezL4JE{y_IvPMjn4o-WQx zFX@Z}&vtHcriV~59&fDI6Wd?O(Qw#yTR4=gC?BQczl!0D^Z3TM@c2+VzV3;o#Gq*) z+ii82%16wf6%$d4>)tGjB>ULn_@$XORpXS87{4e+O1vj!d`nNt2>kYJ;YsP9%=TW3 zVAK7OVk;l9y|`aN+FHhXT3+3}Hl|eBq<bUV(H)awDIc*~Fsn1A@26N#!hz<f<x~&U zT^0RO$tiiN<;q93Tro*MPa@!#oSThS%0}~Mp5`MG_-@T+Pz)4<Y$_kwQw)-#BMEHh zruz(~8zPZ0p)yp`(t^@UI?wq7y&W9AWZlli)9F=tK{_w~1HI?6UT^DWp4L|<6q0Vr zRol_sttuhqqu6&*G3l4&>4y@^LJ6gBPV}5nk>F`Pq9xi3k}+E78dTgg$CnPD(n7Xg z$H#VV_A*7v?buPuO`MdE%1r4cop0Dm9ZAW#RHeLayr=DmBv0F(iJrDsw{A!(O)Mnh znuvU(9SkZLl#fz)xnj3Z@U$P%+S9&gD^L5Y+a6ACXkBY-xCJcR(O_6<P(IRdh0@Tj zrKjD-Hivx;t?CnNTb9NbwkU|>s}t=L-TZ1t?^;nBl#etFh)6*zPuuRT4<|Jw)W_Gx z@%4GLO~vnn4qN$%oy+Xbtz$i{afLNU`pMZW%1b3n^<ViY?-h%r4n*XToBp9nKP1W7 zdZ`Rd9F&i2DZQkVdPv*3=^d$3ozTpa@Q=89l8kIKA97Nve3a7bRZK8#lCT*)8rrf* z7Fk!alv3rRlqweK{x?3hbJJg>^mk0~bUYB}IrFFH=sn}ndnRzMMrxpTN@<|$Liy6* zQyRz)z3ahtZnh>lxf-dLa#cxFdX<mTrSy`{nm^Dx&CyHN?HoOwUX?ebGY&l4xy84f z^?JDvLH~gfMGE>XyAPqgHnv*}ZK{SVAEjiDVpHqXJ%MX=Yg-(@G$L0F<s-%dl@4m# z_2|fEP^glloKZe1am661^YF2q3a9idAF=5mq8Lx-)HqM-ftG0P)aWRZN&1vL)ga}g zGFME}{{%j^bF*P78y+N$Y(UhG)#>7|bd%mMY{mF>(|x<vjb1E5uS}!jQ4T4+r1Ky? zwsX^akE55QNH@9D=~eknI(cr9W!>ZZ0PFR-jCIO1i+(=CN7Vx5qkMW)G3km&ZA<8` zTEu}QuHBdTRV?Kr)>F*t&^ys{!T1MSUC{IXRu_2hY~{4-1&X?Qsv23=p@=|$>!^O% z{|KX$cI6|z&ndm<#(R?QNIIO*5MLix8(SJv*o-xXAVIao=(`F3Z1<?6Px(mSKUrVr z_-3B?p2YNcYzBoYIVwTrONLJ|Na}5TZ0Dx?HKkjN*m@~F#=fzj^pZ|`FljqCy>(hI zlJmb5XVS~FrCPb0?yaob+bYh}%6pDS=WP}dE{Nz$9&>V1`6#d6Rk2Eo_oV&Q0ax`| zp5#4ed*Vk>>ulJR$BIMOvhtCHVv~)FBYJ8#JO5HKL}MA(5L>H8!e~38!*-85u~R;Z z-N!0+XT^KY`l*GdT}7NHc|69$Bd9bCn_{Op6g%ak*eN#Ipt~pAx!L(r+0i0)tjLOq zi}F#eQhG^e!yoAVTBW*8OHZ3ctqvzPw5)GY+q^WkFs8uC0hJWC{DhMO%11fSs5JaR z3-CQ8)wQgA#5|&yr?de5*^>G??68!NSjTjX<2-Ffq<GrA->M<8RE>(?ieUcgFqMy( z^mGP&17DM8u&m9XP$fsXr+joxDh5fdjmSqg-7&}|=!PUYTQ6muv2QFWy`=N&KhTR? zGwAK`ztt{1>6Di8Q7U~Zo~LP-lpN)O@=+cr#;NU+o9=cZ4<g$oW8YX%dQWYa-1MHU z^&&Yg?UK=`d?wDPwo7ihJFEQV{^ZHT3wl10c!Br9#8dl|hB5!M{$!n#&&o&nd;#nA zp3&TM#(vy4lqMA<W&ws<s($$UDTk?i#JpIgwr#AZ?N5oG=6k3#42%9LSxTq!QR|{u zr29*JZ0DxGhtf~?6q{RN1lF2kWV24EU$IE)Ok72_bJO2P>4!*UYyj%mQW_PHY$?5@ zv-2P5?dRwP&B?{n>D9Riopf(%JGb}-S#JmID{bW+Ol^NDdVMadER+uAvg!4)I@@u7 zbIMNnC|!e99JAs*SwDq5=kLk&q-?$lebv>>ve{H#ibK7D@^y6BB(;Q+rJb7{+M;P% z8(S}tOk9+Y@>s=+bUyzFdPlKdo)7BY{IEUx@#~n-&(lt-m5)+=1G73e$9TR%-M9Hk z6plib9K}QVC`T2;58otwZ0DxCSm~xd;sD*N#e4h^w^>rF;#2M_7D>@dA8qHRf3ngK z5kEe*UVu8bG6hO6=`8vKy)zuWP{q3G_jGzyevr<a{y=Xf>-C<}XWm1~wR^@XA?2eK z+^Sef%{@u|;}7%rra+0)VglPe>oAp%m<v@p@CuTvD{$6rPn5y<L?+lwDo-U(Ij?+F zuN9M|=oOr{bF;Bb*`WHfC)N|mpcp6ym9+AaJ;flsG-GEwH{CT#H$)=!0@T{11*MmC zQr_9lP48bEy(DGl#p(2_yda$?|3L4(tk?TUqURCZTh1Mi8M{Xk4(q!SXH2#@qD}id zG^&x6@==N&Qd(%VeRa!*7WJ6h)ot2jimrCgIZWjv=Hn_|^mG9;hpj4TEZd6ZZ6@Wv zlBe=kJ|5LFlca`6l((CWr<D!X>haim0cvd&55=QWS1}@;g@2%zS~opYuXDMLwn0DZ zozyBHS$SE-B(|9+wx<%c85FAIC=SX;DOU`V8jO$a+;qPoQfcd@R2uung3?Pm=h#Xe zNy*v7dfo20>4BH+o_A8Ke3YK;irFd2)2X7BrxRurJB>*6biy^=>FTo%r#7^&CH5N; zTK?f^Q9jbLTWM(*=V|wTn|fbq>%vwANm;}^kG`~f!C@*NF+X5t=QbF*V`P(XAjuPp z5ePY(Nja?KsctDB)h)#&saoi@otuqMl?^Ro>jkK_Q9Kln%2nwloiC7xc5Zt2v0g8= zQ9V@#{b-Bh_eE$>*P!x|m47S7DJ}Kt2-dgoE0*#R>wCrW;ki-&#KZF1H8ZrN<e!dB z<s<fw%<kNZuH0B$xwJ^juqee!mhxHoD4!MUX849fr|sPIpHTWe5QBbl#3D!56+>E4 zx=An1s@u*@cazqwWNf`;MM+BwN-yb*9FMx`rFC^^6_R5-$>Wmh6AG06v+StgmtOLw z%0c<aQX;cDcS!JbKs%U%Cn&znn5DvXV?XP%HBkLjJQ~9(Uz($Vr0hE(cwKF^QMR~l zC3+$m6ceS9a#i`L>=c9aeu9tfR5<0B@)7$?r5nCTy;8<lP<lzHKcW?I(|eAi7s9NY zeov=Y<tFJ2{DI!{S+85`RzU`|+lgOQV#-G;y-+bvx!(HQ6#UXmwqhwCu`Xd&hm01U zGrgldJT@wf$x^d^xa&vFpew}O0fg|+b}u{iM)^ozFO@HJe_c_?f;NLfl^m6&@=;kT z21z}RkL}!aXDi)j#(K`&bB!l{^C(XwOKMeoio0Tw?t?9D?Y4a?FC|H_3n=~YMe3C@ zN}6mby`(cS0e`h~i}xT$FA0%ua;MX)@`H5#{s(&VS+6%K&Xd#~B^NPYJ64(C?+s2V zDIcYDxQY?qRnT)aWyoex>Xa;%kMdDYDi%o{#m9DT`ma^`c|@D&iDZy<#gJAMgY?db zxI)}?k9Bf0QZMDEl9m>fUeZb14{YbAcY>prr0l#nonDm}q_f{2=$*oPy=`JVZ63iq zNS2DjRd!VH`-)RS%10@<S;gj@B+of`R@dPGMjLxtc-m}^_r&AbU@V^7k+Zc>%d5C) zjxQZPrG=#a8Ih}Q_GXFH+j=SWCQiyn<)-wK&e#7y?>v?Ih;hSP;M=Ya9@Qc#AEmrn zF=)LB@`ao|b|n9+PF^V=F~TbDry0d6If}LNQJq!{(i=I7b<@2{<cl2>$`@nbSWtRT z9mTroy-TICT|DN@@pK)}0o&nOUAyjW8lc)Un!dDq%}KHHQHt+VvEp1+bKy3FLX{k) zSotW$ia}Bxbgsgy!zndJ_roH^wq7Y?EGWIClXlkHPK8U(lRCvnrCLi+npBurkf5)J z^K2@9Uxy}DE0mAY^sI^%jqLVdR&X<=&WxMspOU4tDj&62ibcAYf^R!F{V#}A+p(b( zm^dgO*;0B*=jSbKt+u4(yuy0D?c=cqqdnGOwDYw8!FL#Q_Jzc|(vUp|;8&?uK1%gl zDpuT^QhE%7LX{lFNBJo2ia~n6i?}k~biXZ9Y{w+l(Izb@y`&SB&T(#f-(kHS&PR>@ zfk*J_d5RuWl!8ksF(Zn|krut=Qssg2Q5@bgd9bGgTecY#s^lmSl#lX2F-Yn+N{)7J zx<3+mVCyB4v2QFWy`=M8@NDO%_jA_ky{on7uAkyOOAfT~l<kT4Oy1nmQ#3x=6MqNh zSoK^6mJK-WO(*rrN9p^DHFY>Y0c#T4c~b63K8*E0^$E4{r7a5M3WyrQClw!)qbU(O z-*R*+AL%@#batjyMQyOE$meN$hgnrb`eX^si|FCnJNlH5^!-<*HZ{SMin*~=^i8Qf zTY6HvryOqEpw{6fM#PB5;i`<4k2L(OVsru8hMp^9+j&>Sn)G2To_=bKJ_N^h-QiLC zl#lfNqEm>wNN+b!d;^b-oY^CqCy*(m6$G}cbyBE&q|b{+RzEo#e;Etf3<_0pR0oxh z>Y!qf)HnFp&P{g<qx+|>ygtHaoKCl5kQ5ziY&$pIm;kfmz2{<%iOo2jZp9#}zx;vj zGn8(akBkXjJ1Qp9g3?Pm=?rDtxy8AIqc<}5PN!Gp1?g=31HE)`rg>&ym*461s`4Y9 z2@!SIExuh?FG?JViipA~et+?dX{FsJkH6=}SZ`Ak#l$~xLQzGxtgO{u56&_nq}%wi z3B?sNCs6K?rWkL;g-0M<xA7CkRZdDDPJW75jQ26}3fHY{d{IS_f=EM*mue)r?_-`h zp?LI<(oT+Knt38w6cXcAvnP1sTz=`7hIKJf;7CTYaM6L)mIC2AkG^-NVU19rhh!uR z*#{QY7IK}kUPiNEXL%K4Y8`=OQMVi8ZKuQU{r7G(2{!9NjgpLHkrfle-AjGgPGPfl zY8J_WRWV_9Mf$Yq1k!C|jF;LlN?URJ-zS=qK28E~Ej?*ef)P1SBlH+AwKL>~+`M{^ zu@$c?3dzVACIX4^9u9asqaYJ|&%mX`R_=1mA{iCyJRrUCk6A1<4oIm$DhR<x$wbDG zS}dfCd045rquJ}WUXP~=400qRbAx6qW4sE->l^M#yUygsBbwF9lSa7_k%zS6D#n|O zZ*q5knsC2iy`WjGqgYe}%~jB?f94&AwMDahQ7o$MF<$B;s0Q5e+Ks4mTG;ck_9Qb4 z!JZ$0gz#%}H3^xEt1<%V3}k~qE(6jakReng_!vFK_?ID&+4xr=kQ)3W)Uaqx)>?tk zoWeGN?8Lvr0@;Uusko4ho})ng0!hTb5`m=Q-)aYmtQ&NvW9r6d#eJ?db)y#;<VXfa z;6?%2;OHS_D*iPHWFh{=qtP%iyc<ZCK%NFNS|GJRss!=@kaYt276|PlHkzA&92ZCm z{-vQF7?}%!gamRWkWzsR2eL*WB|vHgG7rc>f!qNk8O@rp^(2tq0(lKcp+G1F%LVc^ zko5vN31qK8e6UQ_+}KJ7g6X^nqz{k+feZmMTOh?i)(T`ckZl5~0diO%j{r$UgK4b4 z48$*xoj^(ivJc2=fgA<0K_H1pWrIM{fW*^m8xpK)T`wS60=WvvXn~9cQY8>9QS+=5 zNEk@HKpq5gTp%w1NkemOtZxGn63FL3N(J%*ko5wIMgFZ3$T>i&(3~30mywJ>h5}hH zkP;x<1hNoFgFyZY<hVdy0FsOb+}PR)Btsxy1Mv&wcOat$awbZqR3KRL;aM(_Tp()& zG7iWFf!qqDULbb@IVg~4fzX0o6Xz{JQU&rQkSu{52NDtpmiT!J1#%IP*#e=H;#Uh~ z43KpKsRU9hkd;983gk&3hXqm#Bp%(FNyW!N(ggAYklq5JS>OVJqys4t$Q3}U1ab|K zH3FFdWW7L^1KB2!hk-N*<W(TY1@bQ-$>?59D!v1fA&}+>^b4dDkkJCU97w4^3V<vZ z$YdaE1+oap27%lMq+TE|068d-oj|Coq94_6d<}1^Kz;|3C6F_5-Gl^^1*A|Qxj<-h zuhBdX$ZCPy3S^x??gUaRkY|DH704DKhXwK_ka!F~jV-#e(*)86*G+GMTm+;*AOnDu z2xJV9DuGl2StF2@K-LT7Ng&$<QVXO(ARhxcE|4F9BxC8RNkt;Ak_>^Q1Mv&w3Lv8e zat)ADfy@B1+(9Boo`?WOGWM+Vxy?qsXhws}!6MhzljgyY0q%YvYaKm={1eCqf$RcO zFOYu&IVcbht{a+UFe&W-Bvl~Yfn*6}Fp$*_5}67pM=C1tjUj-i;==atn^cS;TX1J^ zDk51>1y+B2Q_b&tcki1Gt4y;}qF8iS72`#h?7;xn^Y_O$cQLH6X0?lAwf~>69?-1z zQ7pXr2Da$=1-bX%eCl&!>mQnRCbKAfH;@8QRIWy*lxDzUyk+>NcrSYH@o$Wt@3o%P zDC;zz7~>s?Z_1xFDIYB|tQfQ+<T^Ok&jPaAu})!^0jYP8$oTNw7A=>cuFKOac|(=a zJVI+eD=I!`LpH{niEnZPhHpgFyy}l<vSytf#iHDc@vg=<$!>q``2&VEPqR8kvCd(Z zdyd_qS?5HtIx(w1zA49Kje0_}Iz_S0W!74JlY8vZE*F^?zNT5{GK<3B1rl<u0z$q7 zGFl)<fb@29o@8RsUM8a&m@BRwkTii@03^#nBFig{G<az>I#rgRSKR-)iD4hG$fY?k z%md<g^ibH1Knes>3ZzgVi-61)$eloz3*-qPYX!0a$a;b708%TE&wv~j$bW!jpn99! zKqKerEs(ZA3I&o5WVS#q1F~8mAt37navhKj0+|Y=ULf;<Gzerhki!Cb1V}tC924gk zfuss#3y=(f>;=+WAm0KB3FH?bg#u}X2DJp2o3V8+khKE26i6~IE+aDlNSZ)K0?87{ zBp?L>nFD0Bux<e<6fzG0DHX_bK&k{%2V}KC{sm;MK)wdDULePS)C!~}uB7E6rDp@F z7cv(EX%I+1AcqAq42TEKh{>N~Ajtx$1d=9@Wk9k7axW0SK%NFtAdokJ6bfWFkWzu{ z15$+s%EadvAgcw^4xL*Tnj<4~2@t<Pa)A^Gq!>t{K;{8iBanN5tP{xdK(-0w9U%1r z`5MSxfiwYW5J(4ft%n8D1ITfK<O4}di%i!fASD7>2&7aX_W`LA$UlKB7szfPs|9ih z$XbEKpe1e)$T>jP3FLAhX`LfuI1EUEK#G9W_KK9b706+M+y%sQS)|N!Kr#ff9Y~fy zz5-GrkY9nU7D#)vpvwh9eMRc!k+!Y^k|vPxKr#d}A4q{f)&SWckbeNF7syT^dj;|h zkOqNZFyc8Vkh6ds7D!JZ#|1J3NOJGURFnWo704nWSpvBqNJt<r0Vxp(wef2N@-2{U z0*OV-S1*uGKn@Fp+VA56xf)1npU5~*1yUf8r9f5-WG#@{0(likgM&oQaH8U&$H(m} zyZxVzUS;1Oq8z{?M>2AL{yZQtUfig&yZM#tcN<nK8ot4ijAWe;B!(U-vHPUy1O^#2 zej@j0%_14eN(Z9G;UqV0)`q_u)>zFV8Og$69W0tOAvf>wLn{nxv1XBsWc>+<VQm|H ze3)T9uURA`Sr-V_#M0W~hP7X_NJg?Um__3(avlGA)}4msLk~laWF+fCASQ+{?i=!= zVU5%*l94P7G{Le<x#opg>kMm=W|53!Wiksl*zA7VGy`6{yk6EUl98;gKuio@ZL{?= z!#bi_BqLcDGs}+QFW=IPxNWNw`ZsbUBU#;mm>N}k&-w+1HC(euMzStpmYuFI&wXQ( zVa?Vol98+|X4x^EHh9ir!`h%(BqLduG7E`e_ovbOe=w}?HH%~<t2+?$ymD*Hiz8y# znr=SeNJg@H08!7RD17gPM;<k{MrszxNLEi~*;mT@FaGow!&;?TBqLeqj9|;Iz2n-Q zx5=<x(=3vaEOaXo<+XO)a}|c=MNdwSWF!mCI9PTJoA3DfCByoYW|53!p&^aPjmt{z z{?)KXX%@*y78*&gV(?9F|3??*8P+|TMKY50XCNkq^DfGK(6C<AERvC|Y-ZVYW6lH% zNw@1fjeW?GjAZo%Vr*F*8<7Z`<xN8%9LY%56+jFtzSkEk4Xaxk0^vwTX&Re`{v8ok z<HN}Q;!4QGc<ng<>yuv7Z4M4^1&bWXNbCK8nCtY%znzPAz>f1>X$XWP8OibkF>!w2 zp;6x&)(dF}g!AJgSpgvCDtPD7l|LI+LmC3%NJg^y12O4ZdEJ7rVVy-CARNg^)&L+T zhP{s0O*E`*%_14e%3+q>{#?4^)iVuis%DXlWCfXJ_nzLH{v1*6PiPj&NY+4RdGT$W zo%6dji)18g5D=3aPw)FS!qzvMMKY2VVpel}lj}MBqShp#T#NJ6FUd$&E)df<O)2~{ zs-ey5s#zo>Syu_x^;>@U-LQ%@i)18gFthBIB)-Gi=MC#_%_14eLKA=(+UZ&ppA=Cy zHfa{gNLD_x>?`HPL*E`Xwhn3*$w<}^!CG~^;abB=JRgB@BqLcvftd12@W(~8bzL=! zWF)JAS$1x;y7U&mu{Bh)NJg?SB!VrQ^}>K3j~mup%_14ex|&&bZd`M6*WV25S<NCD z$r{cq`%1~(b?(iEwM(-|MzTf-R>Rin`wgpgIs)NHMzTf%iSah0K)8}w6ZRWcNV7;r zvaSJQa-(6x{D_{qP_sw|tcZ0WqnL$8kX@Iz-%2y{Y&DuS%9G}iYiUM9+N`B{VExT# zXzlp^O|wWw+Cl{ai&ihTgKzzkl0swaOU=4g*@}qab<DD3C}*Vqt6A4Yv94#<Er=Aw zYwgn;-%z$9(>{h}=+rinx%lOa8lq)xV3{BBO>V>P-_Rz2AoB1={EzV#0H%=VQl1+Z zEi;y7UWip|r^dAG|6H_8A<Go%_{@H=<Gg5@B9@{3wov71-f;|kWHmBfFpv1$gKr9H zw(|2cqGgI%<|GnMGUwfQ<Uq8{c$R4a0lLP1ZZo`Pw9EvSp`ES>^c*`Q9sSO!@d1SR z(1}OM@U@@S8X0z~3@R&RXtz1FZnH`b4TzR0VVODjCU^erA9jeAnT(JaFYUo2TT@>> z+B;h2CYC{k;5=Oa>7IW?%S>SzIth{Dv-mbz!EtJwr?Sjz^o`HXtQ+o*mYK#fP535v zdF&gPM9W~{f;b<8da8#<E}M35w9E{ap_9|dmiP5DK8cnoWtl_xrn>Q*Z}zch88ln4 zMW+PD!RPCB^s#7}GM3qmZ;H<a=d?c<EmO`iv^SS>rRT6iv!Z1%q=qfpVMls4oYmf? zK3B2~?NuN>?HB%-7_Da}%h1Yxs)zS}_ghA^49vq8?S7&B`B&4kC_vH}d0otAnK)z) zRCyk_ZQs+;GE}=_ymU4bvH!d6mgl2oZef`Q5`g<<)>x2EwRI~(V!Z$JYiBOY(5^DN zc2c&F86T|&Sq44!wbNtwoG+qf=Ccg#dx9#@m05kdM9VB-8A=^F_iLvLAu)8UCqE<W z`OgtAM(bI~GPI%{Ln_Y~PhWn2w9F!wp*8s_@Qsb%QWq^#tz_^`IX5cn8pQt8JY38& z)aO#j-6@xKjh0!$GIWkD$=sNb{ZzEfQkJ25L9XW9SN|I=vkW0I-ahyyJs0n|1eKS3 zk@aUe%iu6vcGG)Yc_3OQ%rbPw3)QjrpWKrgEwh4UXdN@EqNnKTw~i>8@`|#G8Puq- zOXI5sWs1_2NNN;vQ4~UTK(Yo$A!DMDiBU*t6mm-xvN8&JBno*s3fUQj?2kfzi$Yre z>C|+c9fe#Jg<KYe<O^irh_U&@`=6?Ltd?2sN#j-p=avW-$*<7JQpl)^@vug!9pojA zEOwBc8d>5X`!%x6L4MZAR3NJEw!A>aaEgO;(a22>@@I{VagY%jx!yshXyj%GS*Vd| z4)TabraQ>n8kylB-)N-FL7FsD>L6#JttL0mL9#S*tAh;D$Q%cmu8~_D#L~!Y2U(|) z@eZ<CBNH9uOO1pb<cLNlI7s4!Du$CBBwZup9HhTSiXG$zjTAY^Y>gB;$Qq55ILO~L za-)N6)=0U7?A6Fv2l-YbH#kVlMJmpd9poa7R5(a)jm&kB5gM8AATu;F%Rz3}$N~p> zTqBhZQm2ub4)TFU7CFeb8mV%SxJ(u2g${CoMpih;0F8KnH1mudTU;`wykd&t+1J+y zAv0~lwDJiw&|pV0Xhn;s(NM@i(({J&wEtJb6XziW14DL8Y~*qcc$P8JZMNC9VF58S zIoIDX{Db8@E+ocO9UqqQbSpKi+Z+~MzvI(WG7W3BX0ePX(pC+#=zfP-eOB)1Wmqq0 z7Rv}*E18v~Svg}~Ej6sYn#D50)+%P%wgM|V4Ku9YG>c_~t<}QT)(e`?HmviyA`p&c zgst0ws+nX;*SeR!-)>lgG>c_~tvi@yr)$ryOWPRMRLx=;Ve2o<qR|K0`eMqje=)4v zHH&40tviLSrdB<M8`evj#WKRyUCc_>wwCW2aED=is#z=}Y~fZx*C>kNof%`UGAw?) z0F-5ft$Uaik8g7C^?BP@?bO3A7b}!ygsn9QP_>tAEj$0d#|^8$X0eR0buY6hUF4oz zIQ07^j;$Lti)DnZze3j7@-<aFZ&-6Ri)DnZ`<P{?>(O-||Fq1pb+2ZzjIf2FXN0Y5 zLW}-tSTAZ8%LrQ!FpKI2xsNZ(9zNBvwM(;DM%a1~vL;<ecHD0n*0-9)GQ!qF4vTDk z{(0q7Qyg2(yAg)7vGBp{N<_P{mJr_2L*@10i2jL&b)jaljIi}Ev+Qg6nJZH6FswYy zVi{rU5n=1yyknmm*3Fv5GQ!rQ%(Abq34>ngWmtD>7Rv}*j|p49l(&muy{1_#BWyj+ zEc^QE{KVSv##V!7v5c_wgs`>x{F##ttNA4egku?D>q(%djVgPy-9HTLBF$nMVQU?; zlIR<seM7If$FPQK7Rv}*Pch4`^T)pU_o17dx>2E7EF*0FP1t&`-;v{nb-QM<jIi}I zvoh!#pTt3vel@ITHH&40t!IR-DeVTWG^}?ti)DnZXPIS}*A*W;5iqPnn#D50*58G# zGd?=AuVJ;wLLeN=2wTqqHS>^vO3C|SjFX35G>c_~t@X^Z%j@uCZLc$|L7K%f!WJe1 zU<<c%?Djpgv(xpCtrE>*8DR@kOA*)d&G-BMW?0KKi)DnZ7no(+n!57U-*0woJ+4_S zBW%4WZ2fn_l>LUaNwZi+*!m~4?Dp`{mnR*W?$~P3ES3?rUJ|xi-+r>tuo5ptARNmG zTQ37uc}Vr}=Svn}XIQ;7i)DnZ4a~C3>&5Szbuz3X&0-m0>lJ1t(>Ff*Z+-S-!>Z9N zmJzmI6}HwN*&M-oMYC8&*y1@r=Sjq00>6%#;pE}hn#D50*6YF+^~;9Ux;p~lSVq`- z1E|Tvn2Yu`8P;W*#WKRyo6NHF@aG%vJ!V*in#D50)?3U<r*C|A?(7y}YlUX9jIdS9 zEZf%Y3#JtqTQ6!B%LrR_%(Ba?!;8Cy7}gh>#WKRyMq%sjpKAVOSn)j&2*)zQ)+V5) zou9IOXGg>8u30Q2Y;9(iovsfyR}V9+F`C6P!q(f&vahdY1B!ntbLz%Y&0-m0Ym2aT z-^itp8rGAV#WKRyR%Y3K$_vexy<Y0r+NxPBBW!IGwz{`n(ax~G(kzw{wzfOzqPp?T z+*b95^}A-VjIgys*y{DtxT_88?4AgOV;N!V9iVDg0@=DGu2X-*>aAHUBW&$tmR(*` zpUzlgSR*xyWrVGFnMLJAwyN%Z6Z^ND!$+=6vsgyh+J#UvX8W*m%woe@rCBT^Z0%;2 zUFSa@)2q?2p3y9p5w_}utv~JE@U>xW*DRJ1w%!xAzBvB*GlunzX0eR0^}et*W^mm5 zh85Ebfp9D%Z2b$USv5rW4yjHarfC+-2wQuYWtZ3YcUS($u&&fBmJzl-a9Hqoy1aXB zmky4t>otpIgsl%97M1c%@BHvz!@5PYSVq|Th*{Jgdht1y|Iem*j;%GC#WKRyUS`?p zI&tN%XBpNTn#D50*2m1E@jTh88C5pyR>#&p&0-m0>l0zC{PoO$VYRpnfp9D%Y<&t; zjiV?x{*imeY{TlRSu7)Lea0+1U4MS}{KJMdT(ek4*!rAVcAbCdnz_df>lV#o8DZ-S zVXNCeZ(Cqk4{H|72wPt=D}}!Cnf=bg%?xXsX0eR0)xaz}T~FP2f2m>pSF>0~*xJV| zN*B43`IEhKobqaaxk6b+*xHW(({B7yxOt>uU8z|tBW!)etTg(@XV{UytT3zzn#D50 z)&XYO>3Z|A9}^5~rDm~=u=TaWg2ywtUF(N$ankj&X0eR0^^L=#7%po$V~b&Zrdcc_ zZ2g;AY4nZHhvOcsGb}z>11QS~TL($rxnHjHZ#-mJf9j1uIF=E%4grlA1ANtcfnnuo z7Rv}*-!jY2!$r>wI%rsBn#D50RwJ`g@lDSA=-+Rg?c^b?*Cxj@!q#^{O}g&9IIX*3 zy`fnwBW!)oEV~|3+k1{<YoBJZjIi||VT;;c!}?9LSVq|Tufu|e+ulx&Em|#3j%9?c z!$3{CR=>SriedHAES3?rjxftk*WAu=N7Ecz!!(O!gsmTht;EeA`V4ETX0eR0^&_+F zb|c}w^M@POQq5u+Ve2Ph>)DI^35NBEX0eR0^|O;Ms`LNuw(upxdQ-DlM%X$kY)u~A zZ;xSpqFF2>Y#n1(WS=tL$-|?X#WKRyabb)46vH~}&j^HL8DZ-LP}!##))kt?GQ!qL zX4%&l^(lrmPP14>*!qQ8R5vIOsZTMiWtzn@!q%_C7WFBH^^9h*jIi|^v+TM-eTred zr&%l`Z2c~5QJ-R1M>UIOgsmoK+2f5>L)$(y(J8O9vk?f#GQt)O7|iuW;|;^QQnOe_ z*zz*VzP`@6q2boBW2;cJSVq`tCT!hs+ladi>lV#o8DT4iS*eIUmDlB$<=k&rf6*+K z5w>syX+*l#|9xwLVf|gRSVq`tE^Ix&D5r;EZPzT85w_xlt?tX;oNQPJG>c_~En4qk z`jjy_s}C7glV-7uutld&new{etZTkDth4%38Dr%O$p~95g{|i&#&k8TUYf-+!d8N? zm3Y^pRfbidSu7)LB{GZ33m#AXkF#4%aO%bs&0-m0D@oY;{`G}5hE=0kEF)~SVpbaL zP~GTp?UZ`M`nzVajIc%T!!>#M^rR6l8P<E6#WKQ{k6CuR;l1X=o`&_4X0eR0l`L$H zzW47>7}l9rAkuIwBW$&CSQLJD<IMLbIeADcjmfc$u+`RKQEq&{@qr5s>w3*%8DZ-T zX4!3&=lxl|4C_|SVi{p8McBH!Q~tMx^?+uvjIh;?S@yL&?dg>>4eKq<Vi{qJUKMZ3 z>(!E;#|>+rX0eR0btbdy@_O^9vxXa1%$1ylI5(ZIl!)gkslwK0#oPNERu|1;8DXn~ zu;tCzvD&Z(X%@?fbe$z^6^6RpWmuCni)DnZvmF+tf$m|)Id#L*ES3?rIyx+>8wcMA zMzEgOES3?r&T-O3w%+=5cXF{~>qE_A8DXoFu=PyuJ+B(p3C&^|Ve4FGb%Y&?;gvJ3 zDTZ}+KeCUrTS-RPN)xv3{Px4)hSg8ASVq|D%q+Xkx5!z1rC}9o7Rv}*=LuWEb!SgA ztYw<TGQ!sR%(Cm@Y|p}P4eM#mVi{p8UD(?G_l=_sYqw^xjIh;3*z&($9b;HOY8J}~ zTYnO^e!TXv&kXBKKWDs$WrVE@m__A9?mvI|YC(}xH?sW<^7}Dmd1VM&Z`^+GH->ei zX0eR0b)l0k()+=APc1HVY*lF%%ZPMcBy6pI?Xlg4wNA5GM%c=9(na;~yKy~UF|6I1 z#WKQHS79susV>_L>$qmIjIc#(hRqmY?yw(c8dm23%)_yau+>f2>hbHbUk&Rj&0-m0 z>k?+gE2W+`FOFSM;^bkuX0eR0l_hNb^U^l!4XZ}8SVq{olv(!m^~{T(J#Sb~Xco%| zTiu1Nj0IPHWmt8Z#WKQH4`$id*R`JxY-w1ZX%@=}TRnxX;JyF(!LW{L7Rv}*y&PMV zjdZ_!qmzei`>U*F8DZ-(VXN%;upbSpr)IH?uyr}J?CYyf(uCK_9a|$ci)DnZ-on<# zZHpTX>t@Yj8DXoBNZ0pUCcZw_v2~kfv5c_wXJIRI!tmD&>j}+b8DT5iNf%vTZ&c^+ zGOV{Wi)DnZzQWd=GkSC|tWPwHWrVFOoOF?`t*c_28P?C5#WKRymBQB2JAZ%7u#yL; zQf3)ps~@xM>#J3>-@drP$-_*|Vi{q}FKj(^#(|p+D^IgnM%W5CEQ$?{0XjOirfL?; z2wVLfRt#82UaY#ru)><fGQ!pXX3@1wu1ni{FPQAudR((uM%c;`w&<C!VeQc@mJzms z%(BOazsBZ%W?0Q~R18=~*cvEo-IMY0kA~G<vsgyh8swylawFy8KC29CoMy3%uoV)v zUReI?QNy}Jvsgyh%4L?_M$z+S!`i4>EF)}PC2Y-o<K<?C^@C=yjIcG>VNrg))U9?v zg;QSV1yvrhjIfpGuqZday7<=b4Xd|iv5c^l&#ZJXh;@JCrbi7cU$a<7*cu{i{pXd~ zCk<=7X0eR0HI!L)pYpHvx2`s<TQ!SigslQ$>y7_x7-?8{Xco%|Tf>-Tmshjl!#f$) zQ<}vx!q(No)}EB2K897RSu7)L4Hve2Tf2@htdBH{WrVE}!q%~epZ$kn{YSG{M%WtZ z*rIws{nr^z-Dp0LFpr02gsp3Yt(zV?3y1zSSHhn2HH&40tx*n(M5&ERaaexMVi{p; zw8NqrMf1IeHCD4&M%cQRS=3j;<JsBv)=TF)w&rOT%LrT730tE-o_*4=9@Z?D5w@;p zmR%2Dof65~tXV80Y>g4NzRB3Q$JjcgSu7)L-M}onJ?!=Tw3dd|dJvKd$1=j!jl!01 z!|^VL)kCvbM%Wt5EW6GpY`kllVU5--mJzlJg)J+7*G|Klr&%l`Y!wMxFZQ@(fMGqN zSu7)LjT5$BfBc!x4Qs1rv5c@)?AW5*y1(n(<@24o@ttO|jIcFc*t%(7+--*C3y~(Q z(k2;UYXY<E@|xH6qb9?;RI^w{*qSJ8t>4=?%dkdj7Rv}*lbB`K!w)uIoM%{bG>c_~ ztrB5t)DKCqhV_7Ev5c@anOSz-7}NdrU4~VsSu7)L-6U+iI&S~NhV`{(v5c@aMc7)J zIINdpwaisH&oaW+RAK9tj|=WGtcx{^WrVG14vX|Y^U{?gW;u0Zm}aqzur=LbQ5)6e ziyJl=)~%YwGQ!pjW@UgutntSmUT0X3X%@=}TcyI*H@EfLZ&<rEi)DnZo0(;o*Y=(X zUc)-6Su7)Ll?huVeZEgHtS(m}(r_#zY?U)BUIlw-+}qa4!vf7>8DXnJ*rI1`hBZ~Q zSVq{Y6t?Idc7bDSnP#z!ur*WIqI+1wdQ`JmM%bFgEc^PRdsxGIQ?pn`*qSYD(LJnT zeX3b3BW%rKmR(+S4{KP*HH&40ty_dGx`#Eac7s)cu#B*EtCKF0xcs7Z?^HT@*j=+& zM%bDwY?U9}wA8S!(JYn`w&ppusLr>$d|;em&Cx8D5w_+FTc4iUahG8|s97u{Y%O4x zore!KyR)BRZPF~35w@y?ttFX%yVtM|Y8J}~TMM0ZQ66@Fw{F@@Cl6cY5r%h&lZ>#n zNZ6wLWy7Kqd&sejuvN`0yHELK{mN{^%F!&A5w;c!TMv9Qv4>$5X%@=}TT7T_=ONuM z8`gZyVi{p;sj%hEZu^8`-KSYBBWx{W7F}QDURn@?L*ndF<p#}S8DVR=ur)L=XtiN| zpjj*<Y=s?LR1bgLy|~!0j%XIk2wN+Jt*S4QR~eQspQG(z8DYy}mYs)>KAn7_VO^|Q zEF)~)CTty8IeoZc4c07{5w>cWWsiG5IkA4}A}0?gYZl80TPuaFYqx*9%CMGd7Rv}* ztC(fChxeVhy_I1-qFF2>Y^@fyHstRtGOSw7Vi{rUc4pam_|Nm-xXiG=&@7e_w(bzN zMz0?IfMNZrSu7)L{e@X+syIEfzMK4Lm6L~O4N)-52wQgwTW80#TVz;QY8J}~TX#9O z;PHHP>vgFM9a}}3#WKRy-NM%KZqsKN)(XvH8DZ-lX4!S)`J8JquXSwwL$g>$*jgiO zefHoRafY=+vsgyhx|dnhMv)sFSA1zp$JRd0Vi{rUufo=XRzL4BtP`5WGQ!q<B3&D= zsJtQBv6Vbj#eijmt^0+o`xcbd8rG$n#WKRy1H#tCq5gywj;&#u#WKRygThv~@%Nlz zSe2T^GQ!qF%(Abqb=&(cH>@?9#WKRyT45_?NB6^q^@e7#jIi~vuyy-?PJCck`!$PY zgsn$}t-8OR9AH>23RKRsjIi~nu=UKaU&;-ut7fr`u=SX*b>hUk7a7(t&0-m0>v3k; z?Z(CaXHOc|OwD2$Ve1KD>)7~PMjO_Bn#D50)|0~4@w5rKhE=OsEF)~K6SkhVGG8*R zuQiKhgsrE9t&J;d|7KVT!&J_*jIi}LVQXvUhrb)vC7Q)DtYCyj=ub073I!5*p5D_= zd`K{~;@vWvgF6JxA{lw=)H8y0d40-a!@5_qNT!*m7XSM78#};1HmiTYKXmZW+`LdQ z<eykHb?UgH;wk<5loyvxF0JU79tikt!2*9lsQ-}Mf}sWe@e?K%RZgvN73)91KXhnl z$e`S-a{QC07ne;aDxc7=&+LAEN+wL6R3cSgo*Ni6xPKrw*FUSMtaS49Ny1?Nf&M|c zIl&=Ah7R$MFDjcdVLD0lDJ?21nl_<gLRq<#9^fA|aA;oMpwJNi^cjd+#e`}7`WPN3 zrD)>V(y|$)6Ur*)jGct7>UJIk{R4t|gZmH6$@fp1I;XUxU!Mw6p)#S*w4zdFs;IJJ z#>B}LW2em+UpaNc*y5>0<>emeET2#|b8_(nTleG%j8d8=l#QLm>5h~ux9#Tn2jqqZ z=LQD`{5o2oYEu&_f@3F7M?xnS6;B{D+B^{8lPgYv#?P33s?^jOMdQbEf=G5&+2ji3 z;Mnpxls78&DyBu_r%oHIQfm^0Y#tX4svJ;Jh>Tj<wCT~pGs`QYz;Q*>Dx<*(6fe$h z6M=D+CF7&O;-V?hQ7tZ-UhX1UHaQwBLFS!msCY(cbUceo%T57xWy$mB4+-`kFeJag zZwkaIwBk8sQ=<%wpD?p18Z1B60Lo}WMM-p|Cry|U9ch45qI6E0S`?j+lV((uL`#-U zaG_V;<YK6@EV{r-CX9=goKiG3I`UIWrnyL#Op7kCDbvSC=hD=o8BuYcT2v8T*#JgY zSAeC_^vUJX37R%_PISGRHpeCI)2Gacj?#2od{KsGOf8Pi;~8aBqDx~&`6L&5`LyW# zC@-pv&d&0ZqFGVa%O_8dHdJ0YJ^GreD4G^sXDf<ko>Ko&Ju4<mjn2A?i7pp!MM+U~ zU6@%kIU1Zgd0KSA%_y7WlJ+@MqjSDu^0?@DmK05oHWYc;N3?t6Cr*WeiaC)DI=6l9 z0chu31E{TY3*h$7HGtYY*8pnw+yc1ma}PlK=N^DI&^3VCLDv9k3ta=KJ#-DA7O%K_ zF)lQjiQE(xcP}q?4VY0j9v86-qqMllT@@-cx>^@T`Lxp*FRvVjX2y+CS?V58F}VVl zf(yef<=m{h22j)P7QoHBTL3rlrwN$is*0O>R|Ylrt^w5KyA{+V6%bue9N<<^9N<<^ z9N<<^D!`?nRDerC>44~h;sCdT;sDo_Q@`dOfWFNwfcrPM0Pf>l1E`-nO@RBw$^D%h zgZeyo9Q~eK0dj}vcBOHETLE%_TLE%_TLG#7mjYA)E(NFqq6?4%+zOBbPLuL+r^}L3 z_W<hT-BfW$?;1dzy;}fx_^tue>AMAR$L|_Ioxf`U4FKE&FbHr9;DLZ^01XCQ186|t z8bE^rw*Vd(xCdZx;2J;!1lIr>B)A2j%qLGDTY?*%a_6pw2M=z-Jb-Wu;6a3201qVG z0?KJH;TFIH3bz0rRJa91^cQMeF?ss<$;D%FlUg>p*rZCL<;6u)`F>5oG6N#9qSDf- zbLjp}fpk|`UQvXxa@qK?vnG$PDB)X6m5pw<ctlm9r$$JkPK1hYn&Nt|NQ%Z+PMbF8 zw4sq@=|o#mWcng8N098E8pTLVL{RGE8`#R}lgo;xPtrp>x_dnZ!O%@2G-eYB57s0? zqcnj~l$3QR=6t6rh3Gc*6a-_mQxFW!BtoMyiO_INA~X(@2o1ml!UGeD(1=7JJQNWK zk3mjFrbrf#I;0E@HzY#C35ihudkTV%S0LQu3WU2_iBKPVDsoD$a<3|6s5?CcKtFma za!PGMRW3b6hI$mi;;uv@)Q1R!I}eFauOSfbE+j(zghZ%=I0Zq^AQ0{nBtm_GM5q&x z2(|tK;b#971ns><sG*k#weS+5dq9D3`z;V|xCO#3wm`V476`Y|0^!D4AlxS4zI+@e zAZ0B0?(Q@pXd~Q1sI71f;WooPgxU`G5W2;44dHvd(}bV_IZX%}688{lP~1bPVQ~+k z2F5*v8XDISZgAW~sNr!9;ReVxgd3vMg-mhR#toA@hZ-pN5NfF0L#V+zO$Zt;*N|~j zD=~+IE`RzY?vc4cbCu+V%{_z~xYLE4ru4bNbLCLOcbWh+fTs%?ciNEB(}YmN=&Fqy zNcRwGC|yIi!E_IyhSN2K8&LNUYDnEfs6jnV2pU$`5N=@IL#Uy351|IvJ%k!w*AQ-i zPZNTM*gb?AWcLtinB7CDfp!hyhT1iR8*JAQZn#}TxB+(!;fCBbgd23%5H${V9qQ^S z`aW0X3>Xs3AC%|shbK2z4eggcIM^>eH@{!6$p3?ZM?Bx^J!H_}Ap-{t2>AP53*jJy zM}s&7zw|#KgnI@1=LZM(&mH9NH?kj2FoqC*bB73_o>zqi4Gb0J7N}@I!{B^GXRr{u zyni4kn2RS@{(d(hFb`V#L!0&wE|9|cc>@Lx${RS;-!FYA=?mdA2;%17DcbX|>OW*) zpa6*~f_B6&HxJ^rUurM#=jG=N8Z;;nR1xkEY2+L7PUV~apL>=3PjQaO$IAx{y(%Za z|9}C?B#|iN$z)Dc>igsc0|N#GZHq`!E)p=9;`l!*yO!QYvMO9rkAOxR)U!ad%_55# zi8hI2C!G-}w#%<7Kb3AWgJdQ+aV2fqv4idO0|tbIGz-K6^*>-a{0CUfF96moSg>Hn z2C-!L&OP-wx9VP(@k}RG_k8EO=bU@)sjBN6n?{b#DI&hsL$BiDJ+on_1v^3O@%XAP zJb2_ap^f;_`1(yv^SIHfb?P;@S2?}Ju(<#X0FI9JaGcc8OS|8OBcUxFvWM8kc?V7j z@5}X?*YEj0dH`FO*zucEP=I=sLEUe=tp+lKM~=c=1vWnGQaACL4-TP!;(OIzzc&cS z30A2{MdK8nQ?d!AL$}xT+g`89K|@$cNdWLpaJ$j+yZu(5Av9bb%oxLKIwt<;n2g0S zg|Mp|*Q>Z~&ujJ?9<vaFQj|35n6jG!4wrp>T#tR%_Ztm(Me-`-6a+f1sklpHhm}FM zIvDuvPCPnDGh&TLN1f9E+<^&fG&{);;c~g&@!fiFh|z)&j+E(lD%!_x&-Df!yq_Ho z2r?9qXm}7vOhL)otF*mtuUYG$I`9yB+VJ8G-bMO|K}x^a==tqot%~gU7+t|4Ve)Zf z*s6BIa-qr^6(34>DsgaAU=Iggz1nE{h!LVsZczpcz;VZ|w=h|Gz*RM&;Q?43r)o*9 zQLWdSepGzAh-FfIC=;TL!$N_)8w%F(JKl%gsy7&R>ZnI5GTm$%mQjP<VWTswEKbW9 zzJ1-|cGc^2hgFnIBnBmv@518nIORVEqSk5nohH!m33H0kbc|?qsV<Qw(u>kf1m>{W z?lsySnh6Lk6)y5t0FH;fTCeYQqNE_cWCkmCunL7<#jpF-ZoO0EX@UMQvOFzttgbh( zi##B&gl4(js<!KmCT!X3V+>UV=OcgxaNq3@`?V?+EZKZGXf<oSS~wqRE~P4Vsooy8 zo0#|UR8o@<*A_v3;?^3&VSA8NLy8JajprAgcl4Aw8DN7$v(^_%@Xe!g5Kc;rUM4Bs zZo6OiDbFaaX^5i~M-Qo@Rq9sZa<zqoiWq4$F&e`5L)SwD{AN4KI?Pu}a0!8(-M-gC zCBP`qr6ZjYu8Rm&2Y$#wSLW2bJ??ip?OM&}OF4x?<t90SV_ei^hsQ0~9kl8$$}!Ib zm@Q@#ouw?q4xMJd(}lt%tfO4kz3f$n&3bd#?nfqesnE~>aR)vkA753vI7@}HSE+d& ze>i9(marM6pAw&MMG!EbW(&3BI2GRmRQtN$X?d8knvcVNr|x@gB-RZSY06RE3vf*H zKJ+hMpENCPCOdR`0}N0DyN~uy%Lk|B;%WKtv|KtZmru(_r{&|*@{`l@33m_1c$*J> zBL&WB)y~9^Z=31TE}0f>`*CpgG?)cf>kIe!c!_;K+@hVfumDTa3vWINUK4;?`oU{% zriR}AtUi4i9yO;5gog0w9Q@eO@eGTVtLw$`mT-gn^=yjA8%17QD2=F10kIwxNT5-> zaeKL#O@jF+Ka^1794x27e2t~{#ax*+#&haxc<>Tip`2^%Xu^gdZ2nqYMJL#|B~P!H zK|rEtr_*eT<&fE8@#6lDny(hiIaV5`tBY$GO7UJT@Z678>WiP=kLT;@&w^;JI*eC! z@^U=qZB5v{K>MU_VCK~V290mjx_H=pd5^(^HE^G38B2|m01w*>wK6UlX7||Lv=mt4 z#hBhw6YZqJhN#8mc!sCx;8muLz~LHnMy6r_lJRT!$t%F1KuB(G5nF<%B*BC|Q9H0g zjb%WavIs0&v2o^RenI$)y9K=!Vg``Ic$V7)c@>ObSO9AM{9-ayk&wMdJI8qWUM|5$ zg9dYT;nnj1ds`;cn<?AMQVz=1;`Z)-jkORCjCgy3<w$gFi?IkJWr~H;l<xqfdzCWU z5hu(IH{XSH6wVBoZc#E_Xh9+syHANU<540q`lEBITP4lk)f`(O)O$OT;Sr76xfe@_ z2hZ;)RJ3V<Q#|TgWmD{)F~PLiko2H-!ib4Dy}#pqh<9X-o(C%GaUgY>7D`is=#Dc& zcb(f3(@>>i=M%=nRhnBUCHlU{urXqZw}dKhSRn`tXE-VGhU99tP*YmZqYG7}FHw2$ zg-ETZZ4|g!uykoMpkWnU-D8jC8+=s~&5kRS$7$f~-OpcP$zl(&vlhiY^$A&<Ay-(e zneP=hgP11=#7yOFm~ueObhHgq4v3kKw_(ZwG1HT6m~ud3;F8Nucr6kmmX&1`)wM0W zGG#P1p;1*`zKnV-NtCoHO&7RCD=V_7$!nlRU4wAIRnBRBXdsc8b`Uci($LvK%#;IS zrqVV{IUr_I^B~Wr9FQg4>bAlXXO`Jakeb=PrLLNMn)y=KCQS@Z-PlC8Jc-pdfR#es z8(H;PnkdV=mGBNK(KQLps(cmH@1o2+MkJ5J0VS2}(}?9P-44sVY65M^yB&5@5afO0 zrVwbjjRDY*8{OBC%&Af^>%4|!&TWv)sjd@Sac+ZTPIblDigO#Jd4Q7pCiB1uxtT!S z&zp5w#J=pO6Itq6gsiEGuZ)7!v<O*K6<eF8MaY_}z}Yk{Le|V=jI`DwOajZdnew4X zTvJU#o2nW%t8OT@Da)suWMs45M^8ZFrc(!Lk5D!y9mG*o36am03u87_81vb3Va%q= zVLn?fEFFFQIW2x<O^3|}W8>6(VB>5+u54QX%?9d^pJwY)7>j8sl*O(Tin-L}m2Rd` z%$0{SI~YB>@k6rN!4xJTq6cEj^v#OQYU!yf^)eGTdH`Qt@czKW+>C@Hr>0Cs#_=-C zSWit3i=J6#_D-Me+%Il%h&hUz4oR792BqvbgHn!|LCh3;WCk%)kuGU=!<i`uWDb(K z0L!j4L_(r3Ac*>(7Km7+MIr)e5o@W^kruI*QN&tmGMcrFBGyvZTC<i>l!PJ^EnYa% zCrC8BVr6MhIJucaIctLmr)>}pnR4C+F}tIxfLdEMdn4p*Mm(`2e+7cA*o0t?VmjM1 z9Gei9pk_ESF%<|)NCm<YQGw6{y7>|r&TbpXL}k1TX*?-JDz@BL3d3H-(KTXH@ik(Y zCyuZYlZvqslZvtt!#rw=Qf?bD%(EF|3Ucb=%QRY$Q;1C@Vp&+9Ol)$*Bw@xeGXdGM zVl;8`7*iu-XWRm)yDZkZbtk2O-HHo=6tN>l5o^WQ%dD1Bq?;FcD&B9<%`^cL3W}@t z#zdl=6(wp>UWN<$iBei%7;jxi8{tUATG~)WA`Yifq??z0BSp8;AWsOgfA*3n8)S*1 zwse<-UVEn|q1p;9vScefM@Xg4R(LT)Tj7~sjoVguF_>H7#RzYOPl7Mr|4L#k8`%_f z*C3m@$4oP$RgKM}GtG=vs}xyurkT-dIV+3KGz%BAf3PN8H3)60>bfp&a(S<=c8??9 z5YwO8<t-lv50?--gq>9-&<<jr91t@V>8g;&lmlWWRY&reazM<avL}xz2b7GJP9*NZ zEYTJSHb+hW9G1-(Yp6wEY>gq(0%Hxdz%Y*?&H`f%v%oNqA<6=i4zm5ug4yC!vjf>Q zRS`Jkb|`ah1!Y!MIkscn3Tk$rCbTF9vOgB3)w1_0ah#-xeGrpc3ON=QA!~{h&1zbN zX;YJ{aJ(rYDVgl436e401j@Kz0%cq=ftX3SWCEpKQ@3dLwYKP<DPurZPjoDWtXWLz ztrW7!7NN=1>_VGNv~UqF6L;z|r73bolNudO>83o5rNZFM-V~89S(!9AE9D@u!C9#^ zI4fmcHaIKI7#w9xvTr71w*iu&v23x)aM^GPp|-U%(bt;|aO_7A#VCfW<^-O6rkC7C zlyqZ}Cj|P^nAkCtaM&SY)a@WK_;!%U0Xs;ff*r(6MVhU45Hsa~m`Pob^O$l#%%m>K zc}zJVW>S~VJf_W{iwo}-TUTrNb7O5U81DkRxOjbgTiMUP4#Fn&8;T(;YECOK?7IiW zCr7)<>!4gN9UUG4oV3vq&__oA9ze*FAAfW5`2*+gfBRzeCwv(6L-je7&Q4(xT;AX8 zJ>^r!p--UwZFCa;t~ifsh2?5_wYPr|i9W%>9zM+SGyXtJ2Wn0Q|A)9@gnNRIh5kIm zL~Vq72PgF1&FaG`>mQBk!OKzCtDRNPyvEZJ?NM33xeMZh$Hl@);b3%mKb=jEN^x^x zGF^_&uoViSA6>7pg}AW9&Q84kjeqp1xn$R)oxi;Q<=eww{{El8`RkWI`p;*NeuwX9 zLi@WAe(dbLheOBxX!HYYabAtir!TNadsMx<tB=>?QFnn)>li%?Ztq63`HP=d8^y!2 zTP!_3I;b`um)yp|<C9Wp|8cW;+&HQoSKY(v;V%m7+dJp6^S$@J0muJL?CSL`{CxYV z<MgIi%f)JOz25!c?89C6{MlLKsq<^+`|mkduO`m_8w)3R9gy|I<>Ce(kGb2N&VtqM z2d|$TeK<;bI>%q?j%T}1*Y}g@V)vj_*dLv{qs!@hboFwLkQIm}``U3Hp%HQXl`h*+ zaosnxKg7U>UqIoM=p(_y7q!th89YF13BS*sr_Kd_Hk>mYdCtJ;<J`l~CXVU#$9Mkq zUmCxM_|#JQJN&Xmh55Srnf!PQ=nnYS&eEAWbLR$ZQ)lJ`V4geI&H~W6!t6UGXWu!& zzY=U9i+tzX&~<^ib+F$R_&2a-j5ChRGv_&ucEPyB@4$Hm`JHMRqGjRy1jkqCnO^74 z`{0WDu0yhdjBL6CVhZ$J;hO4b4c0SY=FS8^Bg=Q4E|8ZvALHK}h5wH8HNktX&?~`L zbPDjP;LtQJB62$p+ct6Tm2J|Wv>(*LzT($)(!Iz&{(yMxz|H`X9wW{ay*t=SKHMN) z6pb(7T@lO&&J!GM8^vAcmHMxMQR8^8!+00a#}e!XuvO9L48N29R_cu6O_6+wpA#VI z#qpp#SS#6FS)4>9-4E&1oOj{hAmpcvA}^zHr8CZsv~B??8asN`@oxtiL8BOHCfSH8 z>QF6w1}Wv-3YudrM;^ZO4+1z9y4Na9CvQLf%K7Rmnn{&w{BcBKf1e5%x5#R~gVqN- mRL}L7tmHJa9_&yp*I}}X(<FYdLv>t#?Va%zidq#$iT?-O9))25 literal 0 HcmV?d00001 diff --git a/include/freetype/config/ftconfig.h b/include/freetype/config/ftconfig.h deleted file mode 100644 index 3b447508..00000000 --- a/include/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/include/freetype/config/ftmodule.h b/include/freetype/config/ftmodule.h deleted file mode 100644 index c28052b7..00000000 --- a/include/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/include/freetype/ftincrem.h b/include/freetype/ftincrem.h deleted file mode 100644 index 46bc8bdd..00000000 --- a/include/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/include/freetype/ftlcdfil.h b/include/freetype/ftlcdfil.h deleted file mode 100644 index 9a61377a..00000000 --- a/include/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/include/freetype/ftmm.h b/include/freetype/ftmm.h deleted file mode 100644 index a9ccfe71..00000000 --- a/include/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/include/freetype/ftmodapi.h b/include/freetype/ftmodapi.h deleted file mode 100644 index 9cc32aff..00000000 --- a/include/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/include/freetype/t1tables.h b/include/freetype/t1tables.h deleted file mode 100644 index 250629d2..00000000 --- a/include/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/include/freetype/ttunpat.h b/include/freetype/ttunpat.h deleted file mode 100644 index a0162759..00000000 --- a/include/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/include/ft2build.h b/include/ft2build.h deleted file mode 100644 index 6a3b8d90..00000000 --- a/include/ft2build.h +++ /dev/null @@ -1,61 +0,0 @@ -/***************************************************************************/ -/* */ -/* 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 */ -#include <freetype/config/ftheader.h> - -#endif /* __FT2_BUILD_UNIX_H__ */ - - -/* END */ diff --git a/include/lodepng.h b/include/lodepng.h index ee08cea8..476a2061 100644 --- a/include/lodepng.h +++ b/include/lodepng.h @@ -1,7 +1,7 @@ /* -LodePNG version 20160418 +LodePNG version 20190210 -Copyright (c) 2005-2016 Lode Vandevenne +Copyright (c) 2005-2019 Lode Vandevenne This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -44,36 +44,44 @@ the custom_zlib field of the compress and decompress settings*/ #ifndef LODEPNG_NO_COMPILE_ZLIB #define LODEPNG_COMPILE_ZLIB #endif + /*png encoder and png decoder*/ #ifndef LODEPNG_NO_COMPILE_PNG #define LODEPNG_COMPILE_PNG #endif + /*deflate&zlib decoder and png decoder*/ #ifndef LODEPNG_NO_COMPILE_DECODER #define LODEPNG_COMPILE_DECODER #endif + /*deflate&zlib encoder and png encoder*/ #ifndef LODEPNG_NO_COMPILE_ENCODER #define LODEPNG_COMPILE_ENCODER #endif + /*the optional built in harddisk file loading and saving functions*/ #ifndef LODEPNG_NO_COMPILE_DISK #define LODEPNG_COMPILE_DISK #endif + /*support for chunks other than IHDR, IDAT, PLTE, tRNS, IEND: ancillary and unknown chunks*/ #ifndef LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS #define LODEPNG_COMPILE_ANCILLARY_CHUNKS #endif + /*ability to convert error numerical codes to English text string*/ #ifndef LODEPNG_NO_COMPILE_ERROR_TEXT #define LODEPNG_COMPILE_ERROR_TEXT #endif + /*Compile the default allocators (C's free, malloc and realloc). If you disable this, you can define the functions lodepng_free, lodepng_malloc and lodepng_realloc in your source files with custom allocators.*/ #ifndef LODEPNG_NO_COMPILE_ALLOCATORS #define LODEPNG_COMPILE_ALLOCATORS #endif + /*compile the C++ version (you can disable the C++ wrapper here even when compiling for C++)*/ #ifdef __cplusplus #ifndef LODEPNG_NO_COMPILE_CPP @@ -88,12 +96,11 @@ source files with custom allocators.*/ #ifdef LODEPNG_COMPILE_PNG /*The PNG color types (also used for raw).*/ -typedef enum LodePNGColorType -{ - LCT_GREY = 0, /*greyscale: 1,2,4,8,16 bit*/ +typedef enum LodePNGColorType { + LCT_GREY = 0, /*grayscale: 1,2,4,8,16 bit*/ LCT_RGB = 2, /*RGB: 8,16 bit*/ LCT_PALETTE = 3, /*palette: 1,2,4,8 bit*/ - LCT_GREY_ALPHA = 4, /*greyscale with alpha: 8,16 bit*/ + LCT_GREY_ALPHA = 4, /*grayscale with alpha: 8,16 bit*/ LCT_RGBA = 6 /*RGB with alpha: 8,16 bit*/ } LodePNGColorType; @@ -196,8 +203,7 @@ unsigned lodepng_encode24_file(const char* filename, #ifdef LODEPNG_COMPILE_CPP -namespace lodepng -{ +namespace lodepng { #ifdef LODEPNG_COMPILE_DECODER /*Same as lodepng_decode_memory, but decodes to an std::vector. The colortype is the format to output the pixels to. Default is RGBA 8-bit per channel.*/ @@ -253,8 +259,8 @@ const char* lodepng_error_text(unsigned code); #ifdef LODEPNG_COMPILE_DECODER /*Settings for zlib decompression*/ typedef struct LodePNGDecompressSettings LodePNGDecompressSettings; -struct LodePNGDecompressSettings -{ +struct LodePNGDecompressSettings { + /* Check LodePNGDecoderSettings for more ignorable errors such as ignore_crc */ unsigned ignore_adler32; /*if 1, continue and don't give an error message if the Adler32 checksum is corrupted*/ /*use custom zlib decoder instead of built in one (default: null)*/ @@ -281,8 +287,7 @@ Settings for zlib compression. Tweaking these settings tweaks the balance between speed and compression ratio. */ typedef struct LodePNGCompressSettings LodePNGCompressSettings; -struct LodePNGCompressSettings /*deflate = compress*/ -{ +struct LodePNGCompressSettings /*deflate = compress*/ { /*LZ77 related settings*/ unsigned btype; /*the block type for LZ (0, 1, 2 or 3, see zlib standard). Should be 2 for proper compression.*/ unsigned use_lz77; /*whether or not to use LZ77. Should be 1 for proper compression.*/ @@ -315,8 +320,7 @@ Color mode of an image. Contains all information required to decode the pixel bits to RGBA colors. This information is the same as used in the PNG file format, and is used both for PNG and raw image data in LodePNG. */ -typedef struct LodePNGColorMode -{ +typedef struct LodePNGColorMode { /*header (IHDR)*/ LodePNGColorType colortype; /*color type, see PNG standard or documentation further in this header file*/ unsigned bitdepth; /*bits per sample, see PNG standard or documentation further in this header file*/ @@ -341,7 +345,7 @@ typedef struct LodePNGColorMode transparent color key (tRNS) This color uses the same bit depth as the bitdepth value in this struct, which can be 1-bit to 16-bit. - For greyscale PNGs, r, g and b will all 3 be set to the same. + For grayscale PNGs, r, g and b will all 3 be set to the same. When decoding, by default you can ignore this information, since LodePNG sets pixels with this key to transparent already in the raw RGBA output. @@ -349,7 +353,7 @@ typedef struct LodePNGColorMode The color key is only supported for color types 0 and 2. */ unsigned key_defined; /*is a transparent color key given? 0 = false, 1 = true*/ - unsigned key_r; /*red/greyscale component of color key*/ + unsigned key_r; /*red/grayscale component of color key*/ unsigned key_g; /*green component of color key*/ unsigned key_b; /*blue component of color key*/ } LodePNGColorMode; @@ -359,6 +363,8 @@ void lodepng_color_mode_init(LodePNGColorMode* info); void lodepng_color_mode_cleanup(LodePNGColorMode* info); /*return value is error code (0 means no error)*/ unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source); +/* Makes a temporary LodePNGColorMode that does not need cleanup (no palette) */ +LodePNGColorMode lodepng_color_mode_make(LodePNGColorType colortype, unsigned bitdepth); void lodepng_palette_clear(LodePNGColorMode* info); /*add 1 color to the palette*/ @@ -370,7 +376,7 @@ unsigned lodepng_get_bpp(const LodePNGColorMode* info); /*get the amount of color channels used, based on colortype in the struct. If a palette is used, it counts as 1 channel.*/ unsigned lodepng_get_channels(const LodePNGColorMode* info); -/*is it a greyscale type? (only colortype 0 or 4)*/ +/*is it a grayscale type? (only colortype 0 or 4)*/ unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info); /*has it got an alpha channel? (only colortype 2 or 6)*/ unsigned lodepng_is_alpha_type(const LodePNGColorMode* info); @@ -392,8 +398,7 @@ size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* colo #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS /*The information of a Time chunk in PNG.*/ -typedef struct LodePNGTime -{ +typedef struct LodePNGTime { unsigned year; /*2 bytes used (0-65535)*/ unsigned month; /*1-12*/ unsigned day; /*1-31*/ @@ -404,28 +409,39 @@ typedef struct LodePNGTime #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ /*Information about the PNG image, except pixels, width and height.*/ -typedef struct LodePNGInfo -{ +typedef struct LodePNGInfo { /*header (IHDR), palette (PLTE) and transparency (tRNS) chunks*/ unsigned compression_method;/*compression method of the original file. Always 0.*/ unsigned filter_method; /*filter method of the original file*/ - unsigned interlace_method; /*interlace method of the original file*/ + unsigned interlace_method; /*interlace method of the original file: 0=none, 1=Adam7*/ LodePNGColorMode color; /*color type and bits, palette and transparency of the PNG file*/ #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS /* - suggested background color chunk (bKGD) - This color uses the same color mode as the PNG (except alpha channel), which can be 1-bit to 16-bit. + Suggested background color chunk (bKGD) - For greyscale PNGs, r, g and b will all 3 be set to the same. When encoding - the encoder writes the red one. For palette PNGs: When decoding, the RGB value - will be stored, not a palette index. But when encoding, specify the index of - the palette in background_r, the other two are then ignored. + This uses the same color mode and bit depth as the PNG (except no alpha channel), + with values truncated to the bit depth in the unsigned integer. - The decoder does not use this background color to edit the color of pixels. + For grayscale and palette PNGs, the value is stored in background_r. The values + in background_g and background_b are then unused. + + So when decoding, you may get these in a different color mode than the one you requested + for the raw pixels. + + When encoding with auto_convert, you must use the color model defined in info_png.color for + these values. The encoder normally ignores info_png.color when auto_convert is on, but will + use it to interpret these values (and convert copies of them to its chosen color model). + + When encoding, avoid setting this to an expensive color, such as a non-gray value + when the image is gray, or the compression will be worse since it will be forced to + write the PNG with a more expensive color mode (when auto_convert is on). + + The decoder does not use this background color to edit the color of pixels. This is a + completely optional metadata feature. */ unsigned background_defined; /*is a suggested background color given?*/ - unsigned background_r; /*red component of suggested background color*/ + unsigned background_r; /*red/gray/palette component of suggested background color*/ unsigned background_g; /*green component of suggested background color*/ unsigned background_b; /*blue component of suggested background color*/ @@ -436,6 +452,10 @@ typedef struct LodePNGInfo text_strings, while text_keys are keywords that give a short description what the actual text represents, e.g. Title, Author, Description, or anything else. + All the string fields below including keys, names and language tags are null terminated. + The PNG specification uses null characters for the keys, names and tags, and forbids null + characters to appear in the main text which is why we can use null termination everywhere here. + A keyword is minimum 1 character and maximum 79 characters long. It's discouraged to use a single line length longer than 79 characters for texts. @@ -468,11 +488,86 @@ typedef struct LodePNGInfo unsigned phys_unit; /*may be 0 (unknown unit) or 1 (metre)*/ /* - unknown chunks - There are 3 buffers, one for each position in the PNG where unknown chunks can appear - each buffer contains all unknown chunks for that position consecutively - The 3 buffers are the unknown chunks between certain critical chunks: - 0: IHDR-PLTE, 1: PLTE-IDAT, 2: IDAT-IEND + Color profile related chunks: gAMA, cHRM, sRGB, iCPP + + LodePNG does not apply any color conversions on pixels in the encoder or decoder and does not interpret these color + profile values. It merely passes on the information. If you wish to use color profiles and convert colors, please + use these values with a color management library. + + See the PNG, ICC and sRGB specifications for more information about the meaning of these values. + */ + + /* gAMA chunk: optional, overridden by sRGB or iCCP if those are present. */ + unsigned gama_defined; /* Whether a gAMA chunk is present (0 = not present, 1 = present). */ + unsigned gama_gamma; /* Gamma exponent times 100000 */ + + /* cHRM chunk: optional, overridden by sRGB or iCCP if those are present. */ + unsigned chrm_defined; /* Whether a cHRM chunk is present (0 = not present, 1 = present). */ + unsigned chrm_white_x; /* White Point x times 100000 */ + unsigned chrm_white_y; /* White Point y times 100000 */ + unsigned chrm_red_x; /* Red x times 100000 */ + unsigned chrm_red_y; /* Red y times 100000 */ + unsigned chrm_green_x; /* Green x times 100000 */ + unsigned chrm_green_y; /* Green y times 100000 */ + unsigned chrm_blue_x; /* Blue x times 100000 */ + unsigned chrm_blue_y; /* Blue y times 100000 */ + + /* + sRGB chunk: optional. May not appear at the same time as iCCP. + If gAMA is also present gAMA must contain value 45455. + If cHRM is also present cHRM must contain respectively 31270,32900,64000,33000,30000,60000,15000,6000. + */ + unsigned srgb_defined; /* Whether an sRGB chunk is present (0 = not present, 1 = present). */ + unsigned srgb_intent; /* Rendering intent: 0=perceptual, 1=rel. colorimetric, 2=saturation, 3=abs. colorimetric */ + + /* + iCCP chunk: optional. May not appear at the same time as sRGB. + + LodePNG does not parse or use the ICC profile (except its color space header field for an edge case), a + separate library to handle the ICC data (not included in LodePNG) format is needed to use it for color + management and conversions. + + For encoding, if iCCP is present, gAMA and cHRM are recommended to be added as well with values that match the ICC + profile as closely as possible, if you wish to do this you should provide the correct values for gAMA and cHRM and + enable their '_defined' flags since LodePNG will not automatically compute them from the ICC profile. + + For encoding, the ICC profile is required by the PNG specification to be an "RGB" profile for non-gray + PNG color types and a "GRAY" profile for gray PNG color types. If you disable auto_convert, you must ensure + the ICC profile type matches your requested color type, else the encoder gives an error. If auto_convert is + enabled (the default), and the ICC profile is not a good match for the pixel data, this will result in an encoder + error if the pixel data has non-gray pixels for a GRAY profile, or a silent less-optimal compression of the pixel + data if the pixels could be encoded as grayscale but the ICC profile is RGB. + + To avoid this do not set an ICC profile in the image unless there is a good reason for it, and when doing so + make sure you compute it carefully to avoid the above problems. + */ + unsigned iccp_defined; /* Whether an iCCP chunk is present (0 = not present, 1 = present). */ + char* iccp_name; /* Null terminated string with profile name, 1-79 bytes */ + /* + The ICC profile in iccp_profile_size bytes. + Don't allocate this buffer yourself. Use the init/cleanup functions + correctly and use lodepng_set_icc and lodepng_clear_icc. + */ + unsigned char* iccp_profile; + unsigned iccp_profile_size; /* The size of iccp_profile in bytes */ + + /* End of color profile related chunks */ + + + /* + unknown chunks: chunks not known by LodePNG, passed on byte for byte. + + There are 3 buffers, one for each position in the PNG where unknown chunks can appear. + Each buffer contains all unknown chunks for that position consecutively. + The 3 positions are: + 0: between IHDR and PLTE, 1: between PLTE and IDAT, 2: between IDAT and IEND. + + For encoding, do not store critical chunks or known chunks that are enabled with a "_defined" flag + above in here, since the encoder will blindly follow this and could then encode an invalid PNG file + (such as one with two IHDR chunks or the disallowed combination of sRGB with iCCP). But do use + this if you wish to store an ancillary chunk that is not supported by LodePNG (such as sPLT or hIST), + or any non-standard PNG chunk. + Do not allocate or traverse this data yourself. Use the chunk traversing functions declared later, such as lodepng_chunk_next and lodepng_chunk_append, to read/write this struct. */ @@ -488,12 +583,16 @@ void lodepng_info_cleanup(LodePNGInfo* info); unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source); #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -void lodepng_clear_text(LodePNGInfo* info); /*use this to clear the texts again after you filled them in*/ unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str); /*push back both texts at once*/ +void lodepng_clear_text(LodePNGInfo* info); /*use this to clear the texts again after you filled them in*/ -void lodepng_clear_itext(LodePNGInfo* info); /*use this to clear the itexts again after you filled them in*/ unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag, const char* transkey, const char* str); /*push back the 4 texts of 1 chunk at once*/ +void lodepng_clear_itext(LodePNGInfo* info); /*use this to clear the itexts again after you filled them in*/ + +/*replaces if exists*/ +unsigned lodepng_set_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size); +void lodepng_clear_icc(LodePNGInfo* info); /*use this to clear the texts again after you filled them in*/ #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ /* @@ -516,11 +615,17 @@ unsigned lodepng_convert(unsigned char* out, const unsigned char* in, Settings for the decoder. This contains settings for the PNG and the Zlib decoder, but not the Info settings from the Info structs. */ -typedef struct LodePNGDecoderSettings -{ +typedef struct LodePNGDecoderSettings { LodePNGDecompressSettings zlibsettings; /*in here is the setting to ignore Adler32 checksums*/ + /* Check LodePNGDecompressSettings for more ignorable errors such as ignore_adler32 */ unsigned ignore_crc; /*ignore CRC checksums*/ + unsigned ignore_critical; /*ignore unknown critical chunks*/ + unsigned ignore_end; /*ignore issues at end of file if possible (missing IEND chunk, too large chunk, ...)*/ + /* TODO: make a system involving warnings with levels and a strict mode instead. Other potentially recoverable + errors: srgb rendering intent value, size of content of ancillary chunks, more than 79 characters for some + strings, placement/combination rules for ancillary chunks, crc of unknown chunks, allowed characters + in string keys, etc... */ unsigned color_convert; /*whether to convert the PNG to the color type you want. Default: yes*/ @@ -536,8 +641,7 @@ void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings); #ifdef LODEPNG_COMPILE_ENCODER /*automatically use color type with less bits per pixel if losslessly possible. Default: AUTO*/ -typedef enum LodePNGFilterStrategy -{ +typedef enum LodePNGFilterStrategy { /*every filter at zero*/ LFS_ZERO, /*Use filter that gives minimum sum, as described in the official PNG filter heuristic.*/ @@ -554,36 +658,40 @@ typedef enum LodePNGFilterStrategy LFS_PREDEFINED } LodePNGFilterStrategy; -/*Gives characteristics about the colors of the image, which helps decide which color model to use for encoding. -Used internally by default if "auto_convert" is enabled. Public because it's useful for custom algorithms.*/ -typedef struct LodePNGColorProfile -{ - unsigned colored; /*not greyscale*/ - unsigned key; /*if true, image is not opaque. Only if true and alpha is false, color key is possible.*/ - unsigned short key_r; /*these values are always in 16-bit bitdepth in the profile*/ +/*Gives characteristics about the integer RGBA colors of the image (count, alpha channel usage, bit depth, ...), +which helps decide which color model to use for encoding. +Used internally by default if "auto_convert" is enabled. Public because it's useful for custom algorithms. +NOTE: This is not related to the ICC color profile, search "iccp_profile" instead to find the ICC/chromacity/... +fields in this header file.*/ +typedef struct LodePNGColorProfile { + unsigned colored; /*not grayscale*/ + unsigned key; /*image is not opaque and color key is possible instead of full alpha*/ + unsigned short key_r; /*key values, always as 16-bit, in 8-bit case the byte is duplicated, e.g. 65535 means 255*/ unsigned short key_g; unsigned short key_b; - unsigned alpha; /*alpha channel or alpha palette required*/ + unsigned alpha; /*image is not opaque and alpha channel or alpha palette required*/ unsigned numcolors; /*amount of colors, up to 257. Not valid if bits == 16.*/ unsigned char palette[1024]; /*Remembers up to the first 256 RGBA colors, in no particular order*/ - unsigned bits; /*bits per channel (not for palette). 1,2 or 4 for greyscale only. 16 if 16-bit per channel required.*/ + unsigned bits; /*bits per channel (not for palette). 1,2 or 4 for grayscale only. 16 if 16-bit per channel required.*/ + size_t numpixels; } LodePNGColorProfile; void lodepng_color_profile_init(LodePNGColorProfile* profile); -/*Get a LodePNGColorProfile of the image.*/ +/*Get a LodePNGColorProfile of the image. The profile must already have been inited. +NOTE: This is not related to the ICC color profile, search "iccp_profile" instead to find the ICC/chromacity/... +fields in this header file.*/ unsigned lodepng_get_color_profile(LodePNGColorProfile* profile, const unsigned char* image, unsigned w, unsigned h, const LodePNGColorMode* mode_in); /*The function LodePNG uses internally to decide the PNG color with auto_convert. -Chooses an optimal color model, e.g. grey if only grey pixels, palette if < 256 colors, ...*/ +Chooses an optimal color model, e.g. gray if only gray pixels, palette if < 256 colors, ...*/ unsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out, const unsigned char* image, unsigned w, unsigned h, const LodePNGColorMode* mode_in); /*Settings for the encoder.*/ -typedef struct LodePNGEncoderSettings -{ +typedef struct LodePNGEncoderSettings { LodePNGCompressSettings zlibsettings; /*settings for the zlib encoder, such as window size, ...*/ unsigned auto_convert; /*automatically choose output PNG color type. Default: true*/ @@ -619,8 +727,7 @@ void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings); #if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) /*The settings, state and information for extended encoding and decoding.*/ -typedef struct LodePNGState -{ +typedef struct LodePNGState { #ifdef LODEPNG_COMPILE_DECODER LodePNGDecoderSettings decoder; /*the decoding settings*/ #endif /*LODEPNG_COMPILE_DECODER*/ @@ -653,7 +760,7 @@ unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h, /* Read the PNG header, but not the actual data. This returns only the information -that is in the header chunk of the PNG, such as width, height and color type. The +that is in the IHDR chunk of the PNG, such as width, height and color type. The information is placed in the info_png field of the LodePNGState. */ unsigned lodepng_inspect(unsigned* w, unsigned* h, @@ -661,6 +768,20 @@ unsigned lodepng_inspect(unsigned* w, unsigned* h, const unsigned char* in, size_t insize); #endif /*LODEPNG_COMPILE_DECODER*/ +/* +Reads one metadata chunk (other than IHDR) of the PNG file and outputs what it +read in the state. Returns error code on failure. +Use lodepng_inspect first with a new state, then e.g. lodepng_chunk_find_const +to find the desired chunk type, and if non null use lodepng_inspect_chunk (with +chunk_pointer - start_of_file as pos). +Supports most metadata chunks from the PNG standard (gAMA, bKGD, tEXt, ...). +Ignores unsupported, unknown, non-metadata or IHDR chunks (without error). +Requirements: &in[pos] must point to start of a chunk, must use regular +lodepng_inspect first since format of most other chunks depends on IHDR, and if +there is a PLTE chunk, that one must be inspected before tRNS or bKGD. +*/ +unsigned lodepng_inspect_chunk(LodePNGState* state, size_t pos, + const unsigned char* in, size_t insize); #ifdef LODEPNG_COMPILE_ENCODER /*This function allocates the out buffer with standard malloc and stores the size in *outsize.*/ @@ -674,11 +795,23 @@ The lodepng_chunk functions are normally not needed, except to traverse the unknown chunks stored in the LodePNGInfo struct, or add new ones to it. It also allows traversing the chunks of an encoded PNG file yourself. -PNG standard chunk naming conventions: -First byte: uppercase = critical, lowercase = ancillary -Second byte: uppercase = public, lowercase = private -Third byte: must be uppercase -Fourth byte: uppercase = unsafe to copy, lowercase = safe to copy +The chunk pointer always points to the beginning of the chunk itself, that is +the first byte of the 4 length bytes. + +In the PNG file format, chunks have the following format: +-4 bytes length: length of the data of the chunk in bytes (chunk itself is 12 bytes longer) +-4 bytes chunk type (ASCII a-z,A-Z only, see below) +-length bytes of data (may be 0 bytes if length was 0) +-4 bytes of CRC, computed on chunk name + data + +The first chunk starts at the 8th byte of the PNG file, the entire rest of the file +exists out of concatenated chunks with the above format. + +PNG standard chunk ASCII naming conventions: +-First byte: uppercase = critical, lowercase = ancillary +-Second byte: uppercase = public, lowercase = private +-Third byte: must be uppercase +-Fourth byte: uppercase = unsafe to copy, lowercase = safe to copy */ /* @@ -713,10 +846,24 @@ unsigned lodepng_chunk_check_crc(const unsigned char* chunk); /*generates the correct CRC from the data and puts it in the last 4 bytes of the chunk*/ void lodepng_chunk_generate_crc(unsigned char* chunk); -/*iterate to next chunks. don't use on IEND chunk, as there is no next chunk then*/ +/* +Iterate to next chunks, allows iterating through all chunks of the PNG file. +Input must be at the beginning of a chunk (result of a previous lodepng_chunk_next call, +or the 8th byte of a PNG file which always has the first chunk), or alternatively may +point to the first byte of the PNG file (which is not a chunk but the magic header, the +function will then skip over it and return the first real chunk). +Expects at least 8 readable bytes of memory in the input pointer. +Will output pointer to the start of the next chunk or the end of the file if there +is no more chunk after this. Start this process at the 8th byte of the PNG file. +In a non-corrupt PNG file, the last chunk should have name "IEND". +*/ unsigned char* lodepng_chunk_next(unsigned char* chunk); const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk); +/*Finds the first chunk with the given type in the range [chunk, end), or returns NULL if not found.*/ +unsigned char* lodepng_chunk_find(unsigned char* chunk, const unsigned char* end, const char type[5]); +const unsigned char* lodepng_chunk_find_const(const unsigned char* chunk, const unsigned char* end, const char type[5]); + /* Appends chunk to the data in out. The given chunk should already have its chunk header. The out variable and outlength are updated to reflect the new reallocated buffer. @@ -814,11 +961,9 @@ unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const #ifdef LODEPNG_COMPILE_CPP /* The LodePNG C++ wrapper uses std::vectors instead of manually allocated memory buffers. */ -namespace lodepng -{ +namespace lodepng { #ifdef LODEPNG_COMPILE_PNG -class State : public LodePNGState -{ +class State : public LodePNGState { public: State(); State(const State& other); @@ -890,15 +1035,22 @@ unsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned ch [.] test if there are no memory leaks or security exploits - done a lot but needs to be checked often [.] check compatibility with various compilers - done but needs to be redone for every newer version [X] converting color to 16-bit per channel types -[ ] read all public PNG chunk types (but never let the color profile and gamma ones touch RGB values) +[X] support color profile chunk types (but never let them touch RGB values by default) +[ ] support all public PNG chunk types (almost done except sBIT, sPLT and hIST) [ ] make sure encoder generates no chunks with size > (2^31)-1 [ ] partial decoding (stream processing) [X] let the "isFullyOpaque" function check color keys and transparent palettes too [X] better name for the variables "codes", "codesD", "codelengthcodes", "clcl" and "lldl" -[ ] don't stop decoding on errors like 69, 57, 58 (make warnings) +[ ] allow treating some errors like warnings, when image is recoverable (e.g. 69, 57, 58) +[ ] make warnings like: oob palette, checksum fail, data after iend, wrong/unknown crit chunk, no null terminator in text, ... +[ ] error messages with line numbers (and version) +[ ] errors in state instead of as return code? +[ ] new errors/warnings like suspiciously big decompressed ztxt or iccp chunk [ ] let the C++ wrapper catch exceptions coming from the standard library and return LodePNG error codes [ ] allow user to provide custom color conversion functions, e.g. for premultiplied alpha, padding bits or not, ... [ ] allow user to give data (void*) to custom allocator +[ ] provide alternatives for C library functions not present on some platforms (memcpy, ...) +[ ] rename "grey" to "gray" everywhere since "color" also uses US spelling (keep "grey" copies for backwards compatibility) */ #endif /*LODEPNG_H inclusion guard*/ @@ -993,8 +1145,10 @@ The following features are supported by the decoder: *) zlib decompression (inflate) *) zlib compression (deflate) *) CRC32 and ADLER32 checksums +*) colorimetric color profile conversions: currently experimentally available in lodepng_util.cpp only, + plus alternatively ability to pass on chroma/gamma/ICC profile information to other color management system. *) handling of unknown chunks, allowing making a PNG editor that stores custom and unknown chunks. -*) the following chunks are supported (generated/interpreted) by both encoder and decoder: +*) the following chunks are supported by both encoder and decoder: IHDR: header information PLTE: color palette IDAT: pixel data @@ -1006,6 +1160,10 @@ The following features are supported by the decoder: bKGD: suggested background color pHYs: physical dimensions tIME: modification time + cHRM: RGB chromaticities + gAMA: RGB gamma correction + iCCP: ICC color profile + sRGB: rendering intent 1.2. features not supported --------------------------- @@ -1014,10 +1172,10 @@ The following features are _not_ supported: *) some features needed to make a conformant PNG-Editor might be still missing. *) partial loading/stream processing. All data must be available and is processed in one call. -*) The following public chunks are not supported but treated as unknown chunks by LodePNG - cHRM, gAMA, iCCP, sRGB, sBIT, hIST, sPLT - Some of these are not supported on purpose: LodePNG wants to provide the RGB values - stored in the pixels, not values modified by system dependent gamma or color models. +*) The following public chunks are not (yet) supported but treated as unknown chunks by LodePNG: + sBIT + hIST + sPLT 2. C and C++ version @@ -1091,7 +1249,7 @@ LodePNGColorMode info_raw When decoding, here you can specify which color type you want the resulting raw image to be. If this is different from the colortype of the PNG, then the decoder will automatically convert the result. This conversion -always works, except if you want it to convert a color PNG to greyscale or to +always works, except if you want it to convert a color PNG to grayscale or to a palette with missing colors. By default, 32-bit color is used for the result. @@ -1187,7 +1345,7 @@ can encode the colors of all pixels without information loss. An important thing to note about LodePNG, is that the color type of the PNG, and the color type of the raw image, are completely independent. By default, when you decode a PNG, you get the result as a raw image in the color type you want, -no matter whether the PNG was encoded with a palette, greyscale or RGBA color. +no matter whether the PNG was encoded with a palette, grayscale or RGBA color. And if you encode an image, by default LodePNG will automatically choose the PNG color type that gives good compression based on the values of colors and amount of colors in the image. It can be configured to let you control it instead as @@ -1195,10 +1353,10 @@ well, though. To be able to do this, LodePNG does conversions from one color mode to another. It can convert from almost any color type to any other color type, except the -following conversions: RGB to greyscale is not supported, and converting to a +following conversions: RGB to grayscale is not supported, and converting to a palette when the palette doesn't have a required color is not supported. This is not supported on purpose: this is information loss which requires a color -reduction algorithm that is beyong the scope of a PNG encoder (yes, RGB to grey +reduction algorithm that is beyong the scope of a PNG encoder (yes, RGB to gray is easy, but there are multiple ways if you want to give some channels more weight). @@ -1219,10 +1377,10 @@ decoding to have another color type, a conversion is done by LodePNG. The PNG specification gives the following color types: -0: greyscale, bit depths 1, 2, 4, 8, 16 +0: grayscale, bit depths 1, 2, 4, 8, 16 2: RGB, bit depths 8 and 16 3: palette, bit depths 1, 2, 4 and 8 -4: greyscale with alpha, bit depths 8 and 16 +4: grayscale with alpha, bit depths 8 and 16 6: RGBA, bit depths 8 and 16 Bit depth is the amount of bits per pixel per color channel. So the total amount @@ -1271,15 +1429,22 @@ To avoid some confusion: the raw image correctly before encoding. -both encoder and decoder use the same color converter. +The function lodepng_convert does the color conversion. It is available in the +interface but normally isn't needed since the encoder and decoder already call +it. + Non supported color conversions: --color to greyscale: no error is thrown, but the result will look ugly because -only the red channel is taken --anything to palette when that palette does not have that color in it: in this -case an error is thrown +-color to grayscale when non-gray pixels are present: no error is thrown, but +the result will look ugly because only the red channel is taken (it assumes all +three channels are the same in this case so ignores green and blue). The reason +no error is given is to allow converting from three-channel grayscale images to +one-channel even if there are numerical imprecisions. +-anything to palette when the palette does not have an exact match for a from-color +in it: in this case an error is thrown Supported color conversions: -anything to 8-bit RGB, 8-bit RGBA, 16-bit RGB, 16-bit RGBA --any grey or grey+alpha, to grey or grey+alpha +-any gray or gray+alpha, to gray or gray+alpha -anything to a palette, as long as the palette has the requested colors in it -removing alpha channel -higher to smaller bitdepth, and vice versa @@ -1292,10 +1457,6 @@ false. as the PNG has, by setting the color_convert setting to false. Settings in info_raw are then ignored. -The function lodepng_convert does the color conversion. It is available in the -interface but normally isn't needed since the encoder and decoder already call -it. - 6.3. padding bits ----------------- @@ -1519,8 +1680,7 @@ examples can be found on the LodePNG website. #include "lodepng.h" #include <iostream> -int main(int argc, char *argv[]) -{ +int main(int argc, char *argv[]) { const char* filename = argc > 1 ? argv[1] : "test.png"; //load and decode @@ -1539,8 +1699,7 @@ int main(int argc, char *argv[]) #include "lodepng.h" -int main(int argc, char *argv[]) -{ +int main(int argc, char *argv[]) { unsigned error; unsigned char* image; size_t width, height; @@ -1566,6 +1725,8 @@ For decoding: state.decoder.zlibsettings.ignore_adler32: ignore ADLER32 checksums state.decoder.zlibsettings.custom_...: use custom inflate function state.decoder.ignore_crc: ignore CRC checksums +state.decoder.ignore_critical: ignore unknown critical chunks +state.decoder.ignore_end: ignore missing IEND chunk. May fail if this corruption causes other errors state.decoder.color_convert: convert internal PNG color to chosen one state.decoder.read_text_chunks: whether to read in text metadata chunks state.decoder.remember_unknown_chunks: whether to read in unknown chunks @@ -1607,6 +1768,16 @@ yyyymmdd. Some changes aren't backwards compatible. Those are indicated with a (!) symbol. +*) 30 dec 2018: code style changes only: removed newlines before opening braces. +*) 10 sep 2018: added way to inspect metadata chunks without full decoding. +*) 19 aug 2018 (!): fixed color mode bKGD is encoded with and made it use + palette index in case of palette. +*) 10 aug 2018 (!): added support for gAMA, cHRM, sRGB and iCCP chunks. This + change is backwards compatible unless you relied on unknown_chunks for those. +*) 11 jun 2018: less restrictive check for pixel size integer overflow +*) 14 jan 2018: allow optionally ignoring a few more recoverable errors +*) 17 sep 2017: fix memory leak for some encoder input error cases +*) 27 nov 2016: grey+alpha auto color model detection bugfix *) 18 apr 2016: Changed qsort to custom stable sort (for platforms w/o qsort). *) 09 apr 2016: Fixed colorkey usage detection, and better file loading (within the limits of pure C90). @@ -1755,5 +1926,5 @@ Domain: gmail dot com. Account: lode dot vandevenne. -Copyright (c) 2005-2016 Lode Vandevenne +Copyright (c) 2005-2019 Lode Vandevenne */ diff --git a/include/tinyxml2.h b/include/tinyxml2.h index 06eee304..7cd31273 100644 --- a/include/tinyxml2.h +++ b/include/tinyxml2.h @@ -30,6 +30,9 @@ distribution. # include <stdio.h> # include <stdlib.h> # include <string.h> +# if defined(__PS3__) +# include <stddef.h> +# endif #else # include <cctype> # include <climits> @@ -37,21 +40,22 @@ distribution. # include <cstdlib> # include <cstring> #endif +#include <stdint.h> /* TODO: intern strings instead of allocation. */ /* gcc: - g++ -Wall -DDEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe + g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe Formatting, Artistic Style: AStyle.exe --style=1tbs --indent-switches --break-closing-brackets --indent-preprocessor tinyxml2.cpp tinyxml2.h */ -#if defined( _DEBUG ) || defined( DEBUG ) || defined (__DEBUG__) -# ifndef DEBUG -# define DEBUG +#if defined( _DEBUG ) || defined (__DEBUG__) +# ifndef TINYXML2_DEBUG +# define TINYXML2_DEBUG # endif #endif @@ -68,12 +72,14 @@ distribution. # else # define TINYXML2_LIB # endif +#elif __GNUC__ >= 4 +# define TINYXML2_LIB __attribute__((visibility("default"))) #else # define TINYXML2_LIB #endif -#if defined(DEBUG) +#if defined(TINYXML2_DEBUG) # if defined(_MSC_VER) # // "(void)0," is for suppressing C4127 warning in "assert(false)", "assert(true)" and the like # define TIXMLASSERT( x ) if ( !((void)0,(x))) { __debugbreak(); } @@ -92,9 +98,20 @@ distribution. /* Versioning, past 1.0.14: http://semver.org/ */ -static const int TIXML2_MAJOR_VERSION = 3; +static const int TIXML2_MAJOR_VERSION = 7; static const int TIXML2_MINOR_VERSION = 0; -static const int TIXML2_PATCH_VERSION = 0; +static const int TIXML2_PATCH_VERSION = 1; + +#define TINYXML2_MAJOR_VERSION 7 +#define TINYXML2_MINOR_VERSION 0 +#define TINYXML2_PATCH_VERSION 1 + +// A fixed element depth limit is problematic. There needs to be a +// limit to avoid a stack overflow. However, that limit varies per +// system, and the capacity of the stack. On the other hand, it's a trivial +// attack that can result from ill, malicious, or even correctly formed XML, +// so there needs to be a limit in place. +static const int TINYXML2_MAX_ELEMENT_DEPTH = 100; namespace tinyxml2 { @@ -112,8 +129,10 @@ class XMLPrinter; pointers into the XML file itself, and will apply normalization and entity translation if actually read. Can also store (and memory manage) a traditional char[] + + Isn't clear why TINYXML2_LIB is needed; but seems to fix #719 */ -class StrPair +class TINYXML2_LIB StrPair { public: enum { @@ -121,18 +140,20 @@ class StrPair NEEDS_NEWLINE_NORMALIZATION = 0x02, NEEDS_WHITESPACE_COLLAPSING = 0x04, - TEXT_ELEMENT = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION, + TEXT_ELEMENT = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION, TEXT_ELEMENT_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION, - ATTRIBUTE_NAME = 0, - ATTRIBUTE_VALUE = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION, - ATTRIBUTE_VALUE_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION, - COMMENT = NEEDS_NEWLINE_NORMALIZATION + ATTRIBUTE_NAME = 0, + ATTRIBUTE_VALUE = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION, + ATTRIBUTE_VALUE_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION, + COMMENT = NEEDS_NEWLINE_NORMALIZATION }; StrPair() : _flags( 0 ), _start( 0 ), _end( 0 ) {} ~StrPair(); void Set( char* start, char* end, int flags ) { + TIXMLASSERT( start ); + TIXMLASSERT( end ); Reset(); _start = start; _end = end; @@ -152,13 +173,13 @@ class StrPair void SetStr( const char* str, int flags=0 ); - char* ParseText( char* in, const char* endTag, int strFlags ); + char* ParseText( char* in, const char* endTag, int strFlags, int* curLineNumPtr ); char* ParseName( char* in ); void TransferTo( StrPair* other ); + void Reset(); private: - void Reset(); void CollapseWhitespace(); enum { @@ -171,7 +192,7 @@ class StrPair char* _end; StrPair( const StrPair& other ); // not supported - void operator=( StrPair& other ); // not supported, use TransferTo() + void operator=( const StrPair& other ); // not supported, use TransferTo() }; @@ -184,10 +205,11 @@ template <class T, int INITIAL_SIZE> class DynArray { public: - DynArray() { - _mem = _pool; - _allocated = INITIAL_SIZE; - _size = 0; + DynArray() : + _mem( _pool ), + _allocated( INITIAL_SIZE ), + _size( 0 ) + { } ~DynArray() { @@ -203,7 +225,8 @@ class DynArray void Push( T t ) { TIXMLASSERT( _size < INT_MAX ); EnsureCapacity( _size+1 ); - _mem[_size++] = t; + _mem[_size] = t; + ++_size; } T* PushArr( int count ) { @@ -217,7 +240,8 @@ class DynArray T Pop() { TIXMLASSERT( _size > 0 ); - return _mem[--_size]; + --_size; + return _mem[_size]; } void PopArr( int count ) { @@ -254,12 +278,19 @@ class DynArray return _allocated; } + void SwapRemove(int i) { + TIXMLASSERT(i >= 0 && i < _size); + TIXMLASSERT(_size > 0); + _mem[i] = _mem[_size - 1]; + --_size; + } + const T* Mem() const { TIXMLASSERT( _mem ); return _mem; } - T* Mem() { + T* Mem() { TIXMLASSERT( _mem ); return _mem; } @@ -274,6 +305,7 @@ class DynArray TIXMLASSERT( cap <= INT_MAX / 2 ); int newAllocated = cap * 2; T* newMem = new T[newAllocated]; + TIXMLASSERT( newAllocated >= _size ); memcpy( newMem, _mem, sizeof(T)*_size ); // warning: not using constructors, only works for PODs if ( _mem != _pool ) { delete [] _mem; @@ -304,27 +336,26 @@ class MemPool virtual void* Alloc() = 0; virtual void Free( void* ) = 0; virtual void SetTracked() = 0; - virtual void Clear() = 0; }; /* Template child class to create pools of the correct type. */ -template< int SIZE > +template< int ITEM_SIZE > class MemPoolT : public MemPool { public: - MemPoolT() : _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {} + MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {} ~MemPoolT() { - Clear(); + MemPoolT< ITEM_SIZE >::Clear(); } - + void Clear() { // Delete the blocks. while( !_blockPtrs.Empty()) { - Block* b = _blockPtrs.Pop(); - delete b; + Block* lastBlock = _blockPtrs.Pop(); + delete lastBlock; } _root = 0; _currentAllocs = 0; @@ -334,7 +365,7 @@ class MemPoolT : public MemPool } virtual int ItemSize() const { - return SIZE; + return ITEM_SIZE; } int CurrentAllocs() const { return _currentAllocs; @@ -346,43 +377,46 @@ class MemPoolT : public MemPool Block* block = new Block(); _blockPtrs.Push( block ); - for( int i=0; i<COUNT-1; ++i ) { - block->chunk[i].next = &block->chunk[i+1]; + Item* blockItems = block->items; + for( int i = 0; i < ITEMS_PER_BLOCK - 1; ++i ) { + blockItems[i].next = &(blockItems[i + 1]); } - block->chunk[COUNT-1].next = 0; - _root = block->chunk; + blockItems[ITEMS_PER_BLOCK - 1].next = 0; + _root = blockItems; } - void* result = _root; + Item* const result = _root; + TIXMLASSERT( result != 0 ); _root = _root->next; ++_currentAllocs; if ( _currentAllocs > _maxAllocs ) { _maxAllocs = _currentAllocs; } - _nAllocs++; - _nUntracked++; + ++_nAllocs; + ++_nUntracked; return result; } - + virtual void Free( void* mem ) { if ( !mem ) { return; } --_currentAllocs; - Chunk* chunk = static_cast<Chunk*>( mem ); -#ifdef DEBUG - memset( chunk, 0xfe, sizeof(Chunk) ); + Item* item = static_cast<Item*>( mem ); +#ifdef TINYXML2_DEBUG + memset( item, 0xfe, sizeof( *item ) ); #endif - chunk->next = _root; - _root = chunk; + item->next = _root; + _root = item; } void Trace( const char* name ) { printf( "Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n", - name, _maxAllocs, _maxAllocs*SIZE/1024, _currentAllocs, SIZE, _nAllocs, _blockPtrs.Size() ); + name, _maxAllocs, _maxAllocs * ITEM_SIZE / 1024, _currentAllocs, + ITEM_SIZE, _nAllocs, _blockPtrs.Size() ); } void SetTracked() { - _nUntracked--; + --_nUntracked; } int Untracked() const { @@ -398,21 +432,23 @@ class MemPoolT : public MemPool // 16k: 5200 // 32k: 4300 // 64k: 4000 21000 - enum { COUNT = (4*1024)/SIZE }; // Some compilers do not accept to use COUNT in private part if COUNT is private + // Declared public because some compilers do not accept to use ITEMS_PER_BLOCK + // in private part if ITEMS_PER_BLOCK is private + enum { ITEMS_PER_BLOCK = (4 * 1024) / ITEM_SIZE }; private: MemPoolT( const MemPoolT& ); // not supported void operator=( const MemPoolT& ); // not supported - union Chunk { - Chunk* next; - char mem[SIZE]; + union Item { + Item* next; + char itemData[ITEM_SIZE]; }; struct Block { - Chunk chunk[COUNT]; + Item items[ITEMS_PER_BLOCK]; }; DynArray< Block*, 10 > _blockPtrs; - Chunk* _root; + Item* _root; int _currentAllocs; int _nAllocs; @@ -485,16 +521,13 @@ class TINYXML2_LIB XMLVisitor // WARNING: must match XMLDocument::_errorNames[] enum XMLError { XML_SUCCESS = 0, - XML_NO_ERROR = 0, XML_NO_ATTRIBUTE, XML_WRONG_ATTRIBUTE_TYPE, XML_ERROR_FILE_NOT_FOUND, XML_ERROR_FILE_COULD_NOT_BE_OPENED, XML_ERROR_FILE_READ_ERROR, - XML_ERROR_ELEMENT_MISMATCH, XML_ERROR_PARSING_ELEMENT, XML_ERROR_PARSING_ATTRIBUTE, - XML_ERROR_IDENTIFYING_TAG, XML_ERROR_PARSING_TEXT, XML_ERROR_PARSING_CDATA, XML_ERROR_PARSING_COMMENT, @@ -505,6 +538,7 @@ enum XMLError { XML_ERROR_PARSING, XML_CAN_NOT_CONVERT_TEXT, XML_NO_TEXT_NODE, + XML_ELEMENT_DEPTH_EXCEEDED, XML_ERROR_COUNT }; @@ -513,19 +547,23 @@ enum XMLError { /* Utility functionality. */ -class XMLUtil +class TINYXML2_LIB XMLUtil { public: - static const char* SkipWhiteSpace( const char* p ) { + static const char* SkipWhiteSpace( const char* p, int* curLineNumPtr ) { TIXMLASSERT( p ); + while( IsWhiteSpace(*p) ) { + if (curLineNumPtr && *p == '\n') { + ++(*curLineNumPtr); + } ++p; } TIXMLASSERT( p ); return p; } - static char* SkipWhiteSpace( char* p ) { - return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p) ) ); + static char* SkipWhiteSpace( char* p, int* curLineNumPtr ) { + return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p), curLineNumPtr ) ); } // Anything in the high order range of UTF-8 is assumed to not be whitespace. This isn't @@ -533,7 +571,7 @@ class XMLUtil static bool IsWhiteSpace( char p ) { return !IsUTF8Continuation(p) && isspace( static_cast<unsigned char>(p) ); } - + inline static bool IsNameStartChar( unsigned char ch ) { if ( ch >= 128 ) { // This is a heuristic guess in attempt to not implement Unicode-aware isalpha() @@ -544,7 +582,7 @@ class XMLUtil } return ch == ':' || ch == '_'; } - + inline static bool IsNameChar( unsigned char ch ) { return IsNameStartChar( ch ) || isdigit( ch ) @@ -556,9 +594,12 @@ class XMLUtil if ( p == q ) { return true; } + TIXMLASSERT( p ); + TIXMLASSERT( q ); + TIXMLASSERT( nChar >= 0 ); return strncmp( p, q, nChar ) == 0; } - + inline static bool IsUTF8Continuation( char p ) { return ( p & 0x80 ) != 0; } @@ -575,6 +616,7 @@ class XMLUtil static void ToStr( bool v, char* buffer, int bufferSize ); static void ToStr( float v, char* buffer, int bufferSize ); static void ToStr( double v, char* buffer, int bufferSize ); + static void ToStr(int64_t v, char* buffer, int bufferSize); // converts strings to primitive types static bool ToInt( const char* str, int* value ); @@ -582,6 +624,18 @@ class XMLUtil static bool ToBool( const char* str, bool* value ); static bool ToFloat( const char* str, float* value ); static bool ToDouble( const char* str, double* value ); + static bool ToInt64(const char* str, int64_t* value); + + // Changes what is serialized for a boolean value. + // Default to "true" and "false". Shouldn't be changed + // unless you have a special testing or compatibility need. + // Be careful: static, global, & not thread safe. + // Be sure to set static const memory as parameters. + static void SetBoolSerialization(const char* writeTrue, const char* writeFalse); + +private: + static const char* writeBoolTrue; + static const char* writeBoolFalse; }; @@ -687,6 +741,9 @@ class TINYXML2_LIB XMLNode */ void SetValue( const char* val, bool staticMem=false ); + /// Gets the line number the node is in, if the document was parsed from a file. + int GetLineNum() const { return _parseLineNum; } + /// Get the parent of this node on the DOM. const XMLNode* Parent() const { return _parent; @@ -820,6 +877,21 @@ class TINYXML2_LIB XMLNode */ virtual XMLNode* ShallowClone( XMLDocument* document ) const = 0; + /** + Make a copy of this node and all its children. + + If the 'target' is null, then the nodes will + be allocated in the current document. If 'target' + is specified, the memory will be allocated is the + specified XMLDocument. + + NOTE: This is probably not the correct tool to + copy a document, since XMLDocuments can have multiple + top level XMLNodes. You probably want to use + XMLDocument::DeepCopy() + */ + XMLNode* DeepClone( XMLDocument* target ) const; + /** Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document. @@ -852,15 +924,30 @@ class TINYXML2_LIB XMLNode */ virtual bool Accept( XMLVisitor* visitor ) const = 0; + /** + Set user data into the XMLNode. TinyXML-2 in + no way processes or interprets user data. + It is initially 0. + */ + void SetUserData(void* userData) { _userData = userData; } + + /** + Get user data set into the XMLNode. TinyXML-2 in + no way processes or interprets user data. + It is initially 0. + */ + void* GetUserData() const { return _userData; } + protected: - XMLNode( XMLDocument* ); + explicit XMLNode( XMLDocument* ); virtual ~XMLNode(); - virtual char* ParseDeep( char*, StrPair* ); + virtual char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr); XMLDocument* _document; XMLNode* _parent; mutable StrPair _value; + int _parseLineNum; XMLNode* _firstChild; XMLNode* _lastChild; @@ -868,11 +955,14 @@ class TINYXML2_LIB XMLNode XMLNode* _prev; XMLNode* _next; + void* _userData; + private: MemPool* _memPool; void Unlink( XMLNode* child ); static void DeleteNode( XMLNode* node ); void InsertChildPreamble( XMLNode* insertThis ) const; + const XMLElement* ToElementWithName( const char* name ) const; XMLNode( const XMLNode& ); // not supported XMLNode& operator=( const XMLNode& ); // not supported @@ -893,7 +983,6 @@ class TINYXML2_LIB XMLNode */ class TINYXML2_LIB XMLText : public XMLNode { - friend class XMLBase; friend class XMLDocument; public: virtual bool Accept( XMLVisitor* visitor ) const; @@ -918,10 +1007,10 @@ class TINYXML2_LIB XMLText : public XMLNode virtual bool ShallowEqual( const XMLNode* compare ) const; protected: - XMLText( XMLDocument* doc ) : XMLNode( doc ), _isCData( false ) {} + explicit XMLText( XMLDocument* doc ) : XMLNode( doc ), _isCData( false ) {} virtual ~XMLText() {} - char* ParseDeep( char*, StrPair* endTag ); + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ); private: bool _isCData; @@ -949,10 +1038,10 @@ class TINYXML2_LIB XMLComment : public XMLNode virtual bool ShallowEqual( const XMLNode* compare ) const; protected: - XMLComment( XMLDocument* doc ); + explicit XMLComment( XMLDocument* doc ); virtual ~XMLComment(); - char* ParseDeep( char*, StrPair* endTag ); + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr); private: XMLComment( const XMLComment& ); // not supported @@ -988,10 +1077,10 @@ class TINYXML2_LIB XMLDeclaration : public XMLNode virtual bool ShallowEqual( const XMLNode* compare ) const; protected: - XMLDeclaration( XMLDocument* doc ); + explicit XMLDeclaration( XMLDocument* doc ); virtual ~XMLDeclaration(); - char* ParseDeep( char*, StrPair* endTag ); + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ); private: XMLDeclaration( const XMLDeclaration& ); // not supported @@ -1023,10 +1112,10 @@ class TINYXML2_LIB XMLUnknown : public XMLNode virtual bool ShallowEqual( const XMLNode* compare ) const; protected: - XMLUnknown( XMLDocument* doc ); + explicit XMLUnknown( XMLDocument* doc ); virtual ~XMLUnknown(); - char* ParseDeep( char*, StrPair* endTag ); + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ); private: XMLUnknown( const XMLUnknown& ); // not supported @@ -1051,6 +1140,9 @@ class TINYXML2_LIB XMLAttribute /// The value of the attribute. const char* Value() const; + /// Gets the line number the attribute is in, if the document was parsed from a file. + int GetLineNum() const { return _parseLineNum; } + /// The next attribute in the list. const XMLAttribute* Next() const { return _next; @@ -1060,11 +1152,18 @@ class TINYXML2_LIB XMLAttribute If the value isn't an integer, 0 will be returned. There is no error checking; use QueryIntValue() if you need error checking. */ - int IntValue() const { - int i=0; - QueryIntValue( &i ); - return i; - } + int IntValue() const { + int i = 0; + QueryIntValue(&i); + return i; + } + + int64_t Int64Value() const { + int64_t i = 0; + QueryInt64Value(&i); + return i; + } + /// Query as an unsigned integer. See IntValue() unsigned UnsignedValue() const { unsigned i=0; @@ -1091,13 +1190,15 @@ class TINYXML2_LIB XMLAttribute } /** QueryIntValue interprets the attribute as an integer, and returns the value - in the provided parameter. The function will return XML_NO_ERROR on success, + in the provided parameter. The function will return XML_SUCCESS on success, and XML_WRONG_ATTRIBUTE_TYPE if the conversion is not successful. */ XMLError QueryIntValue( int* value ) const; /// See QueryIntValue XMLError QueryUnsignedValue( unsigned int* value ) const; - /// See QueryIntValue + /// See QueryIntValue + XMLError QueryInt64Value(int64_t* value) const; + /// See QueryIntValue XMLError QueryBoolValue( bool* value ) const; /// See QueryIntValue XMLError QueryDoubleValue( double* value ) const; @@ -1110,7 +1211,9 @@ class TINYXML2_LIB XMLAttribute void SetAttribute( int value ); /// Set the attribute to value. void SetAttribute( unsigned value ); - /// Set the attribute to value. + /// Set the attribute to value. + void SetAttribute(int64_t value); + /// Set the attribute to value. void SetAttribute( bool value ); /// Set the attribute to value. void SetAttribute( double value ); @@ -1120,17 +1223,18 @@ class TINYXML2_LIB XMLAttribute private: enum { BUF_SIZE = 200 }; - XMLAttribute() : _next( 0 ), _memPool( 0 ) {} + XMLAttribute() : _name(), _value(),_parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {} virtual ~XMLAttribute() {} XMLAttribute( const XMLAttribute& ); // not supported void operator=( const XMLAttribute& ); // not supported void SetName( const char* name ); - char* ParseDeep( char* p, bool processEntities ); + char* ParseDeep( char* p, bool processEntities, int* curLineNumPtr ); mutable StrPair _name; mutable StrPair _value; + int _parseLineNum; XMLAttribute* _next; MemPool* _memPool; }; @@ -1142,7 +1246,6 @@ class TINYXML2_LIB XMLAttribute */ class TINYXML2_LIB XMLElement : public XMLNode { - friend class XMLBase; friend class XMLDocument; public: /// Get the name of an element (which is the Value() of the node.) @@ -1188,42 +1291,25 @@ class TINYXML2_LIB XMLElement : public XMLNode const char* Attribute( const char* name, const char* value=0 ) const; /** Given an attribute name, IntAttribute() returns the value - of the attribute interpreted as an integer. 0 will be - returned if there is an error. For a method with error - checking, see QueryIntAttribute() + of the attribute interpreted as an integer. The default + value will be returned if the attribute isn't present, + or if there is an error. (For a method with error + checking, see QueryIntAttribute()). */ - int IntAttribute( const char* name ) const { - int i=0; - QueryIntAttribute( name, &i ); - return i; - } - /// See IntAttribute() - unsigned UnsignedAttribute( const char* name ) const { - unsigned i=0; - QueryUnsignedAttribute( name, &i ); - return i; - } + int IntAttribute(const char* name, int defaultValue = 0) const; /// See IntAttribute() - bool BoolAttribute( const char* name ) const { - bool b=false; - QueryBoolAttribute( name, &b ); - return b; - } + unsigned UnsignedAttribute(const char* name, unsigned defaultValue = 0) const; + /// See IntAttribute() + int64_t Int64Attribute(const char* name, int64_t defaultValue = 0) const; + /// See IntAttribute() + bool BoolAttribute(const char* name, bool defaultValue = false) const; /// See IntAttribute() - double DoubleAttribute( const char* name ) const { - double d=0; - QueryDoubleAttribute( name, &d ); - return d; - } + double DoubleAttribute(const char* name, double defaultValue = 0) const; /// See IntAttribute() - float FloatAttribute( const char* name ) const { - float f=0; - QueryFloatAttribute( name, &f ); - return f; - } + float FloatAttribute(const char* name, float defaultValue = 0) const; /** Given an attribute name, QueryIntAttribute() returns - XML_NO_ERROR, XML_WRONG_ATTRIBUTE_TYPE if the conversion + XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion can't be performed, or XML_NO_ATTRIBUTE if the attribute doesn't exist. If successful, the result of the conversion will be written to 'value'. If not successful, nothing will @@ -1242,7 +1328,8 @@ class TINYXML2_LIB XMLElement : public XMLNode } return a->QueryIntValue( value ); } - /// See QueryIntAttribute() + + /// See QueryIntAttribute() XMLError QueryUnsignedAttribute( const char* name, unsigned int* value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) { @@ -1250,7 +1337,17 @@ class TINYXML2_LIB XMLElement : public XMLNode } return a->QueryUnsignedValue( value ); } - /// See QueryIntAttribute() + + /// See QueryIntAttribute() + XMLError QueryInt64Attribute(const char* name, int64_t* value) const { + const XMLAttribute* a = FindAttribute(name); + if (!a) { + return XML_NO_ATTRIBUTE; + } + return a->QueryInt64Value(value); + } + + /// See QueryIntAttribute() XMLError QueryBoolAttribute( const char* name, bool* value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) { @@ -1275,14 +1372,25 @@ class TINYXML2_LIB XMLElement : public XMLNode return a->QueryFloatValue( value ); } - + /// See QueryIntAttribute() + XMLError QueryStringAttribute(const char* name, const char** value) const { + const XMLAttribute* a = FindAttribute(name); + if (!a) { + return XML_NO_ATTRIBUTE; + } + *value = a->Value(); + return XML_SUCCESS; + } + + + /** Given an attribute name, QueryAttribute() returns - XML_NO_ERROR, XML_WRONG_ATTRIBUTE_TYPE if the conversion + XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion can't be performed, or XML_NO_ATTRIBUTE if the attribute doesn't exist. It is overloaded for the primitive types, and is a generally more convenient replacement of QueryIntAttribute() and related functions. - + If successful, the result of the conversion will be written to 'value'. If not successful, nothing will be written to 'value'. This allows you to provide default @@ -1293,23 +1401,27 @@ class TINYXML2_LIB XMLElement : public XMLNode QueryAttribute( "foo", &value ); // if "foo" isn't found, value will still be 10 @endverbatim */ - int QueryAttribute( const char* name, int* value ) const { + XMLError QueryAttribute( const char* name, int* value ) const { return QueryIntAttribute( name, value ); } - int QueryAttribute( const char* name, unsigned int* value ) const { + XMLError QueryAttribute( const char* name, unsigned int* value ) const { return QueryUnsignedAttribute( name, value ); } - int QueryAttribute( const char* name, bool* value ) const { + XMLError QueryAttribute(const char* name, int64_t* value) const { + return QueryInt64Attribute(name, value); + } + + XMLError QueryAttribute( const char* name, bool* value ) const { return QueryBoolAttribute( name, value ); } - int QueryAttribute( const char* name, double* value ) const { + XMLError QueryAttribute( const char* name, double* value ) const { return QueryDoubleAttribute( name, value ); } - int QueryAttribute( const char* name, float* value ) const { + XMLError QueryAttribute( const char* name, float* value ) const { return QueryFloatAttribute( name, value ); } @@ -1328,7 +1440,14 @@ class TINYXML2_LIB XMLElement : public XMLNode XMLAttribute* a = FindOrCreateAttribute( name ); a->SetAttribute( value ); } - /// Sets the named attribute to value. + + /// Sets the named attribute to value. + void SetAttribute(const char* name, int64_t value) { + XMLAttribute* a = FindOrCreateAttribute(name); + a->SetAttribute(value); + } + + /// Sets the named attribute to value. void SetAttribute( const char* name, bool value ) { XMLAttribute* a = FindOrCreateAttribute( name ); a->SetAttribute( value ); @@ -1410,7 +1529,7 @@ class TINYXML2_LIB XMLElement : public XMLNode @verbatim <foo>Hullaballoo!<b>This is text</b></foo> @endverbatim - + For this XML: @verbatim <foo /> @@ -1424,13 +1543,15 @@ class TINYXML2_LIB XMLElement : public XMLNode /// Convenience method for setting text inside an element. See SetText() for important limitations. void SetText( int value ); /// Convenience method for setting text inside an element. See SetText() for important limitations. - void SetText( unsigned value ); - /// Convenience method for setting text inside an element. See SetText() for important limitations. - void SetText( bool value ); + void SetText( unsigned value ); + /// Convenience method for setting text inside an element. See SetText() for important limitations. + void SetText(int64_t value); + /// Convenience method for setting text inside an element. See SetText() for important limitations. + void SetText( bool value ); /// Convenience method for setting text inside an element. See SetText() for important limitations. - void SetText( double value ); + void SetText( double value ); /// Convenience method for setting text inside an element. See SetText() for important limitations. - void SetText( float value ); + void SetText( float value ); /** Convenience method to query the value of a child text node. This is probably best @@ -1461,27 +1582,42 @@ class TINYXML2_LIB XMLElement : public XMLNode XMLError QueryIntText( int* ival ) const; /// See QueryIntText() XMLError QueryUnsignedText( unsigned* uval ) const; - /// See QueryIntText() + /// See QueryIntText() + XMLError QueryInt64Text(int64_t* uval) const; + /// See QueryIntText() XMLError QueryBoolText( bool* bval ) const; /// See QueryIntText() XMLError QueryDoubleText( double* dval ) const; /// See QueryIntText() XMLError QueryFloatText( float* fval ) const; + int IntText(int defaultValue = 0) const; + + /// See QueryIntText() + unsigned UnsignedText(unsigned defaultValue = 0) const; + /// See QueryIntText() + int64_t Int64Text(int64_t defaultValue = 0) const; + /// See QueryIntText() + bool BoolText(bool defaultValue = false) const; + /// See QueryIntText() + double DoubleText(double defaultValue = 0) const; + /// See QueryIntText() + float FloatText(float defaultValue = 0) const; + // internal: - enum { + enum ElementClosingType { OPEN, // <foo> CLOSED, // <foo/> CLOSING // </foo> }; - int ClosingType() const { + ElementClosingType ClosingType() const { return _closingType; } virtual XMLNode* ShallowClone( XMLDocument* document ) const; virtual bool ShallowEqual( const XMLNode* compare ) const; protected: - char* ParseDeep( char* p, StrPair* endTag ); + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ); private: XMLElement( XMLDocument* doc ); @@ -1489,16 +1625,13 @@ class TINYXML2_LIB XMLElement : public XMLNode XMLElement( const XMLElement& ); // not supported void operator=( const XMLElement& ); // not supported - XMLAttribute* FindAttribute( const char* name ) { - return const_cast<XMLAttribute*>(const_cast<const XMLElement*>(this)->FindAttribute( name )); - } XMLAttribute* FindOrCreateAttribute( const char* name ); - //void LinkAttribute( XMLAttribute* attrib ); - char* ParseAttributes( char* p ); + char* ParseAttributes( char* p, int* curLineNumPtr ); static void DeleteAttribute( XMLAttribute* attribute ); + XMLAttribute* CreateAttribute(); enum { BUF_SIZE = 200 }; - int _closingType; + ElementClosingType _closingType; // The attribute list is ordered; there is no 'lastAttribute' // because the list needs to be scanned for dupes before adding // a new attribute. @@ -1520,9 +1653,16 @@ enum Whitespace { class TINYXML2_LIB XMLDocument : public XMLNode { friend class XMLElement; + // Gives access to SetError and Push/PopDepth, but over-access for everything else. + // Wishing C++ had "internal" scope. + friend class XMLNode; + friend class XMLText; + friend class XMLComment; + friend class XMLDeclaration; + friend class XMLUnknown; public: /// constructor - XMLDocument( bool processEntities = true, Whitespace = PRESERVE_WHITESPACE ); + XMLDocument( bool processEntities = true, Whitespace whitespaceMode = PRESERVE_WHITESPACE ); ~XMLDocument(); virtual XMLDocument* ToDocument() { @@ -1536,7 +1676,7 @@ class TINYXML2_LIB XMLDocument : public XMLNode /** Parse an XML file from a character string. - Returns XML_NO_ERROR (0) on success, or + Returns XML_SUCCESS (0) on success, or an errorID. You may optionally pass in the 'nBytes', which is @@ -1548,27 +1688,27 @@ class TINYXML2_LIB XMLDocument : public XMLNode /** Load an XML file from disk. - Returns XML_NO_ERROR (0) on success, or + Returns XML_SUCCESS (0) on success, or an errorID. */ XMLError LoadFile( const char* filename ); /** Load an XML file from disk. You are responsible - for providing and closing the FILE*. - + for providing and closing the FILE*. + NOTE: The file should be opened as binary ("rb") not text in order for TinyXML-2 to correctly do newline normalization. - Returns XML_NO_ERROR (0) on success, or + Returns XML_SUCCESS (0) on success, or an errorID. */ XMLError LoadFile( FILE* ); /** Save the XML file to disk. - Returns XML_NO_ERROR (0) on success, or + Returns XML_SUCCESS (0) on success, or an errorID. */ XMLError SaveFile( const char* filename, bool compact = false ); @@ -1577,7 +1717,7 @@ class TINYXML2_LIB XMLDocument : public XMLNode Save the XML file to disk. You are responsible for providing and closing the FILE*. - Returns XML_NO_ERROR (0) on success, or + Returns XML_SUCCESS (0) on success, or an errorID. */ XMLError SaveFile( FILE* fp, bool compact = false ); @@ -1586,7 +1726,7 @@ class TINYXML2_LIB XMLDocument : public XMLNode return _processEntities; } Whitespace WhitespaceMode() const { - return _whitespace; + return _whitespaceMode; } /** @@ -1671,35 +1811,53 @@ class TINYXML2_LIB XMLDocument : public XMLNode */ void DeleteNode( XMLNode* node ); - void SetError( XMLError error, const char* str1, const char* str2 ); + void ClearError() { + SetError(XML_SUCCESS, 0, 0); + } /// Return true if there was an error parsing the document. bool Error() const { - return _errorID != XML_NO_ERROR; + return _errorID != XML_SUCCESS; } /// Return the errorID. XMLError ErrorID() const { return _errorID; } const char* ErrorName() const; + static const char* ErrorIDToName(XMLError errorID); - /// Return a possibly helpful diagnostic location or string. - const char* GetErrorStr1() const { - return _errorStr1; - } - /// Return a possibly helpful secondary diagnostic location or string. - const char* GetErrorStr2() const { - return _errorStr2; - } - /// If there is an error, print it to stdout. + /** Returns a "long form" error description. A hopefully helpful + diagnostic with location, line number, and/or additional info. + */ + const char* ErrorStr() const; + + /// A (trivial) utility function that prints the ErrorStr() to stdout. void PrintError() const; - + + /// Return the line where the error occurred, or zero if unknown. + int ErrorLineNum() const + { + return _errorLineNum; + } + /// Clear the document, resetting it to the initial state. void Clear(); - // internal + /** + Copies this document to a target document. + The target will be completely cleared before the copy. + If you want to copy a sub-tree, see XMLNode::DeepClone(). + + NOTE: that the 'target' must be non-null. + */ + void DeepCopy(XMLDocument* target) const; + + // internal char* Identify( char* p, XMLNode** node ); + // internal + void MarkInUse(XMLNode*); + virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const { return 0; } @@ -1711,13 +1869,22 @@ class TINYXML2_LIB XMLDocument : public XMLNode XMLDocument( const XMLDocument& ); // not supported void operator=( const XMLDocument& ); // not supported - bool _writeBOM; - bool _processEntities; - XMLError _errorID; - Whitespace _whitespace; - const char* _errorStr1; - const char* _errorStr2; - char* _charBuffer; + bool _writeBOM; + bool _processEntities; + XMLError _errorID; + Whitespace _whitespaceMode; + mutable StrPair _errorStr; + int _errorLineNum; + char* _charBuffer; + int _parseCurLineNum; + int _parsingDepth; + // Memory tracking does add some overhead. + // However, the code assumes that you don't + // have a bunch of unlinked nodes around. + // Therefore it takes less memory to track + // in the document vs. a linked list in the XMLNode, + // and the performance is the same. + DynArray<XMLNode*, 10> _unlinked; MemPoolT< sizeof(XMLElement) > _elementPool; MemPoolT< sizeof(XMLAttribute) > _attributePool; @@ -1727,8 +1894,43 @@ class TINYXML2_LIB XMLDocument : public XMLNode static const char* _errorNames[XML_ERROR_COUNT]; void Parse(); + + void SetError( XMLError error, int lineNum, const char* format, ... ); + + // Something of an obvious security hole, once it was discovered. + // Either an ill-formed XML or an excessively deep one can overflow + // the stack. Track stack depth, and error out if needed. + class DepthTracker { + public: + explicit DepthTracker(XMLDocument * document) { + this->_document = document; + document->PushDepth(); + } + ~DepthTracker() { + _document->PopDepth(); + } + private: + XMLDocument * _document; + }; + void PushDepth(); + void PopDepth(); + + template<class NodeType, int PoolElementSize> + NodeType* CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool ); }; +template<class NodeType, int PoolElementSize> +inline NodeType* XMLDocument::CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool ) +{ + TIXMLASSERT( sizeof( NodeType ) == PoolElementSize ); + TIXMLASSERT( sizeof( NodeType ) == pool.ItemSize() ); + NodeType* returnNode = new (pool.Alloc()) NodeType( this ); + TIXMLASSERT( returnNode ); + returnNode->_memPool = &pool; + + _unlinked.Push(returnNode); + return returnNode; +} /** A XMLHandle is a class that wraps a node pointer with null checks; this is @@ -1789,16 +1991,13 @@ class TINYXML2_LIB XMLHandle { public: /// Create a handle from any node (at any depth of the tree.) This can be a null pointer. - XMLHandle( XMLNode* node ) { - _node = node; + explicit XMLHandle( XMLNode* node ) : _node( node ) { } /// Create a handle from a node. - XMLHandle( XMLNode& node ) { - _node = &node; + explicit XMLHandle( XMLNode& node ) : _node( &node ) { } /// Copy constructor - XMLHandle( const XMLHandle& ref ) { - _node = ref._node; + XMLHandle( const XMLHandle& ref ) : _node( ref._node ) { } /// Assignment XMLHandle& operator=( const XMLHandle& ref ) { @@ -1845,19 +2044,19 @@ class TINYXML2_LIB XMLHandle } /// Safe cast to XMLElement. This can return null. XMLElement* ToElement() { - return ( ( _node == 0 ) ? 0 : _node->ToElement() ); + return ( _node ? _node->ToElement() : 0 ); } /// Safe cast to XMLText. This can return null. XMLText* ToText() { - return ( ( _node == 0 ) ? 0 : _node->ToText() ); + return ( _node ? _node->ToText() : 0 ); } /// Safe cast to XMLUnknown. This can return null. XMLUnknown* ToUnknown() { - return ( ( _node == 0 ) ? 0 : _node->ToUnknown() ); + return ( _node ? _node->ToUnknown() : 0 ); } /// Safe cast to XMLDeclaration. This can return null. XMLDeclaration* ToDeclaration() { - return ( ( _node == 0 ) ? 0 : _node->ToDeclaration() ); + return ( _node ? _node->ToDeclaration() : 0 ); } private: @@ -1872,14 +2071,11 @@ class TINYXML2_LIB XMLHandle class TINYXML2_LIB XMLConstHandle { public: - XMLConstHandle( const XMLNode* node ) { - _node = node; + explicit XMLConstHandle( const XMLNode* node ) : _node( node ) { } - XMLConstHandle( const XMLNode& node ) { - _node = &node; + explicit XMLConstHandle( const XMLNode& node ) : _node( &node ) { } - XMLConstHandle( const XMLConstHandle& ref ) { - _node = ref._node; + XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) { } XMLConstHandle& operator=( const XMLConstHandle& ref ) { @@ -1917,16 +2113,16 @@ class TINYXML2_LIB XMLConstHandle return _node; } const XMLElement* ToElement() const { - return ( ( _node == 0 ) ? 0 : _node->ToElement() ); + return ( _node ? _node->ToElement() : 0 ); } const XMLText* ToText() const { - return ( ( _node == 0 ) ? 0 : _node->ToText() ); + return ( _node ? _node->ToText() : 0 ); } const XMLUnknown* ToUnknown() const { - return ( ( _node == 0 ) ? 0 : _node->ToUnknown() ); + return ( _node ? _node->ToUnknown() : 0 ); } const XMLDeclaration* ToDeclaration() const { - return ( ( _node == 0 ) ? 0 : _node->ToDeclaration() ); + return ( _node ? _node->ToDeclaration() : 0 ); } private: @@ -1998,7 +2194,8 @@ class TINYXML2_LIB XMLPrinter : public XMLVisitor void PushAttribute( const char* name, const char* value ); void PushAttribute( const char* name, int value ); void PushAttribute( const char* name, unsigned value ); - void PushAttribute( const char* name, bool value ); + void PushAttribute(const char* name, int64_t value); + void PushAttribute( const char* name, bool value ); void PushAttribute( const char* name, double value ); /// If streaming, close the Element. virtual void CloseElement( bool compactMode=false ); @@ -2009,7 +2206,9 @@ class TINYXML2_LIB XMLPrinter : public XMLVisitor void PushText( int value ); /// Add a text node from an unsigned. void PushText( unsigned value ); - /// Add a text node from a bool. + /// Add a text node from an unsigned. + void PushText(int64_t value); + /// Add a text node from a bool. void PushText( bool value ); /// Add a text node from a float. void PushText( float value ); @@ -2057,6 +2256,7 @@ class TINYXML2_LIB XMLPrinter : public XMLVisitor void ClearBuffer() { _buffer.Clear(); _buffer.Push(0); + _firstElement = true; } protected: @@ -2067,6 +2267,9 @@ class TINYXML2_LIB XMLPrinter : public XMLVisitor */ virtual void PrintSpace( int depth ); void Print( const char* format, ... ); + void Write( const char* data, size_t size ); + inline void Write( const char* data ) { Write( data, strlen( data ) ); } + void Putc( char ch ); void SealElementIfJustOpened(); bool _elementJustOpened; @@ -2090,6 +2293,10 @@ class TINYXML2_LIB XMLPrinter : public XMLVisitor bool _restrictedEntityFlag[ENTITY_RANGE]; DynArray< char, 20 > _buffer; + + // Prohibit cloning, intentionally not implemented + XMLPrinter( const XMLPrinter& ); + XMLPrinter& operator=( const XMLPrinter& ); }; diff --git a/lib/freetype.lib b/lib/freetype.lib deleted file mode 100644 index 983d4ddd749fa4d94ffb973ba5f6159565a3984c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55978 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 H)P(;FsKp?i diff --git a/lib/lodepng.cpp b/lib/lodepng.cpp index 7e80f118..90faf409 100644 --- a/lib/lodepng.cpp +++ b/lib/lodepng.cpp @@ -1,7 +1,7 @@ /* -LodePNG version 20160418 +LodePNG version 20190210 -Copyright (c) 2005-2016 Lode Vandevenne +Copyright (c) 2005-2019 Lode Vandevenne This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -30,16 +30,16 @@ Rename this file to lodepng.cpp to use it for C++, or to lodepng.c to use it for #include "lodepng.h" -#include <limits.h> -#include <stdio.h> -#include <stdlib.h> +#include <limits.h> /* LONG_MAX */ +#include <stdio.h> /* file handling */ +#include <stdlib.h> /* allocations */ #if defined(_MSC_VER) && (_MSC_VER >= 1310) /*Visual Studio: A few warning types are not desired here.*/ #pragma warning( disable : 4244 ) /*implicit conversions: not warned by gcc -Wall -Wextra and requires too much casts*/ #pragma warning( disable : 4996 ) /*VS does not like fopen, but fopen_s is not standard C so unusable here*/ #endif /*_MSC_VER */ -const char* LODEPNG_VERSION_STRING = "20160418"; +const char* LODEPNG_VERSION_STRING = "20190210"; /* This source file is built up in the following large parts. The code sections @@ -60,18 +60,21 @@ lodepng source code. Don't forget to remove "static" if you copypaste them from here.*/ #ifdef LODEPNG_COMPILE_ALLOCATORS -static void* lodepng_malloc(size_t size) -{ +static void* lodepng_malloc(size_t size) { +#ifdef LODEPNG_MAX_ALLOC + if(size > LODEPNG_MAX_ALLOC) return 0; +#endif return malloc(size); } -static void* lodepng_realloc(void* ptr, size_t new_size) -{ +static void* lodepng_realloc(void* ptr, size_t new_size) { +#ifdef LODEPNG_MAX_ALLOC + if(new_size > LODEPNG_MAX_ALLOC) return 0; +#endif return realloc(ptr, new_size); } -static void lodepng_free(void* ptr) -{ +static void lodepng_free(void* ptr) { free(ptr); } #else /*LODEPNG_COMPILE_ALLOCATORS*/ @@ -86,6 +89,9 @@ void lodepng_free(void* ptr); /* ////////////////////////////////////////////////////////////////////////// */ /* ////////////////////////////////////////////////////////////////////////// */ +#define LODEPNG_MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define LODEPNG_MIN(a, b) (((a) < (b)) ? (a) : (b)) + /* Often in case of an error a value is assigned to a variable and then it breaks out of a loop (to go to the cleanup phase of a function). This macro does that. @@ -93,8 +99,7 @@ It makes the error handling code shorter and more readable. Example: if(!uivector_resizev(&frequencies_ll, 286, 0)) ERROR_BREAK(83); */ -#define CERROR_BREAK(errorvar, code)\ -{\ +#define CERROR_BREAK(errorvar, code){\ errorvar = code;\ break;\ } @@ -103,22 +108,19 @@ Example: if(!uivector_resizev(&frequencies_ll, 286, 0)) ERROR_BREAK(83); #define ERROR_BREAK(code) CERROR_BREAK(error, code) /*Set error var to the error code, and return it.*/ -#define CERROR_RETURN_ERROR(errorvar, code)\ -{\ +#define CERROR_RETURN_ERROR(errorvar, code){\ errorvar = code;\ return code;\ } /*Try the code, if it returns error, also return the error.*/ -#define CERROR_TRY_RETURN(call)\ -{\ +#define CERROR_TRY_RETURN(call){\ unsigned error = call;\ if(error) return error;\ } /*Set error var to the error code, and return from the void function.*/ -#define CERROR_RETURN(errorvar, code)\ -{\ +#define CERROR_RETURN(errorvar, code){\ errorvar = code;\ return;\ } @@ -134,29 +136,24 @@ About uivector, ucvector and string: #ifdef LODEPNG_COMPILE_ZLIB /*dynamic vector of unsigned ints*/ -typedef struct uivector -{ +typedef struct uivector { unsigned* data; size_t size; /*size in number of unsigned longs*/ size_t allocsize; /*allocated size in bytes*/ } uivector; -static void uivector_cleanup(void* p) -{ +static void uivector_cleanup(void* p) { ((uivector*)p)->size = ((uivector*)p)->allocsize = 0; lodepng_free(((uivector*)p)->data); ((uivector*)p)->data = NULL; } /*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned uivector_reserve(uivector* p, size_t allocsize) -{ - if(allocsize > p->allocsize) - { +static unsigned uivector_reserve(uivector* p, size_t allocsize) { + if(allocsize > p->allocsize) { size_t newsize = (allocsize > p->allocsize * 2) ? allocsize : (allocsize * 3 / 2); void* data = lodepng_realloc(p->data, newsize); - if(data) - { + if(data) { p->allocsize = newsize; p->data = (unsigned*)data; } @@ -166,32 +163,28 @@ static unsigned uivector_reserve(uivector* p, size_t allocsize) } /*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned uivector_resize(uivector* p, size_t size) -{ +static unsigned uivector_resize(uivector* p, size_t size) { if(!uivector_reserve(p, size * sizeof(unsigned))) return 0; p->size = size; return 1; /*success*/ } /*resize and give all new elements the value*/ -static unsigned uivector_resizev(uivector* p, size_t size, unsigned value) -{ +static unsigned uivector_resizev(uivector* p, size_t size, unsigned value) { size_t oldsize = p->size, i; if(!uivector_resize(p, size)) return 0; for(i = oldsize; i < size; ++i) p->data[i] = value; return 1; } -static void uivector_init(uivector* p) -{ +static void uivector_init(uivector* p) { p->data = NULL; p->size = p->allocsize = 0; } #ifdef LODEPNG_COMPILE_ENCODER /*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned uivector_push_back(uivector* p, unsigned c) -{ +static unsigned uivector_push_back(uivector* p, unsigned c) { if(!uivector_resize(p, p->size + 1)) return 0; p->data[p->size - 1] = c; return 1; @@ -202,22 +195,18 @@ static unsigned uivector_push_back(uivector* p, unsigned c) /* /////////////////////////////////////////////////////////////////////////// */ /*dynamic vector of unsigned chars*/ -typedef struct ucvector -{ +typedef struct ucvector { unsigned char* data; size_t size; /*used size*/ size_t allocsize; /*allocated size*/ } ucvector; /*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned ucvector_reserve(ucvector* p, size_t allocsize) -{ - if(allocsize > p->allocsize) - { +static unsigned ucvector_reserve(ucvector* p, size_t allocsize) { + if(allocsize > p->allocsize) { size_t newsize = (allocsize > p->allocsize * 2) ? allocsize : (allocsize * 3 / 2); void* data = lodepng_realloc(p->data, newsize); - if(data) - { + if(data) { p->allocsize = newsize; p->data = (unsigned char*)data; } @@ -227,8 +216,7 @@ static unsigned ucvector_reserve(ucvector* p, size_t allocsize) } /*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned ucvector_resize(ucvector* p, size_t size) -{ +static unsigned ucvector_resize(ucvector* p, size_t size) { if(!ucvector_reserve(p, size * sizeof(unsigned char))) return 0; p->size = size; return 1; /*success*/ @@ -236,15 +224,13 @@ static unsigned ucvector_resize(ucvector* p, size_t size) #ifdef LODEPNG_COMPILE_PNG -static void ucvector_cleanup(void* p) -{ +static void ucvector_cleanup(void* p) { ((ucvector*)p)->size = ((ucvector*)p)->allocsize = 0; lodepng_free(((ucvector*)p)->data); ((ucvector*)p)->data = NULL; } -static void ucvector_init(ucvector* p) -{ +static void ucvector_init(ucvector* p) { p->data = NULL; p->size = p->allocsize = 0; } @@ -253,8 +239,7 @@ static void ucvector_init(ucvector* p) #ifdef LODEPNG_COMPILE_ZLIB /*you can both convert from vector to buffer&size and vica versa. If you use init_buffer to take over a buffer and size, it is not needed to use cleanup*/ -static void ucvector_init_buffer(ucvector* p, unsigned char* buffer, size_t size) -{ +static void ucvector_init_buffer(ucvector* p, unsigned char* buffer, size_t size) { p->data = buffer; p->allocsize = p->size = size; } @@ -262,8 +247,7 @@ static void ucvector_init_buffer(ucvector* p, unsigned char* buffer, size_t size #if (defined(LODEPNG_COMPILE_PNG) && defined(LODEPNG_COMPILE_ANCILLARY_CHUNKS)) || defined(LODEPNG_COMPILE_ENCODER) /*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned ucvector_push_back(ucvector* p, unsigned char c) -{ +static unsigned ucvector_push_back(ucvector* p, unsigned char c) { if(!ucvector_resize(p, p->size + 1)) return 0; p->data[p->size - 1] = c; return 1; @@ -275,57 +259,38 @@ static unsigned ucvector_push_back(ucvector* p, unsigned char c) #ifdef LODEPNG_COMPILE_PNG #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned string_resize(char** out, size_t size) -{ - char* data = (char*)lodepng_realloc(*out, size + 1); - if(data) - { - data[size] = 0; /*null termination char*/ - *out = data; - } - return data != 0; -} - -/*init a {char*, size_t} pair for use as string*/ -static void string_init(char** out) -{ - *out = NULL; - string_resize(out, 0); -} -/*free the above pair again*/ -static void string_cleanup(char** out) -{ +/*free string pointer and set it to NULL*/ +static void string_cleanup(char** out) { lodepng_free(*out); *out = NULL; } -static void string_set(char** out, const char* in) -{ - size_t insize = strlen(in), i; - if(string_resize(out, insize)) - { - for(i = 0; i != insize; ++i) - { - (*out)[i] = in[i]; +/* dynamically allocates a new string with a copy of the null terminated input text */ +static char* alloc_string(const char* in) { + size_t insize = strlen(in); + char* out = (char*)lodepng_malloc(insize + 1); + if(out) { + size_t i; + for(i = 0; i != insize; ++i) { + out[i] = in[i]; } + out[i] = 0; } + return out; } #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ #endif /*LODEPNG_COMPILE_PNG*/ /* ////////////////////////////////////////////////////////////////////////// */ -unsigned lodepng_read32bitInt(const unsigned char* buffer) -{ +unsigned lodepng_read32bitInt(const unsigned char* buffer) { return (unsigned)((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]); } #if defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER) /*buffer must have at least 4 allocated bytes available*/ -static void lodepng_set32bitInt(unsigned char* buffer, unsigned value) -{ +static void lodepng_set32bitInt(unsigned char* buffer, unsigned value) { buffer[0] = (unsigned char)((value >> 24) & 0xff); buffer[1] = (unsigned char)((value >> 16) & 0xff); buffer[2] = (unsigned char)((value >> 8) & 0xff); @@ -334,8 +299,7 @@ static void lodepng_set32bitInt(unsigned char* buffer, unsigned value) #endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/ #ifdef LODEPNG_COMPILE_ENCODER -static void lodepng_add32bitInt(ucvector* buffer, unsigned value) -{ +static void lodepng_add32bitInt(ucvector* buffer, unsigned value) { ucvector_resize(buffer, buffer->size + 4); /*todo: give error if resize failed*/ lodepng_set32bitInt(&buffer->data[buffer->size - 4], value); } @@ -348,15 +312,13 @@ static void lodepng_add32bitInt(ucvector* buffer, unsigned value) #ifdef LODEPNG_COMPILE_DISK /* returns negative value on error. This should be pure C compatible, so no fstat. */ -static long lodepng_filesize(const char* filename) -{ +static long lodepng_filesize(const char* filename) { FILE* file; long size; file = fopen(filename, "rb"); if(!file) return -1; - if(fseek(file, 0, SEEK_END) != 0) - { + if(fseek(file, 0, SEEK_END) != 0) { fclose(file); return -1; } @@ -370,8 +332,7 @@ static long lodepng_filesize(const char* filename) } /* load file into buffer that already has the correct allocated size. Returns error code.*/ -static unsigned lodepng_buffer_file(unsigned char* out, size_t size, const char* filename) -{ +static unsigned lodepng_buffer_file(unsigned char* out, size_t size, const char* filename) { FILE* file; size_t readsize; file = fopen(filename, "rb"); @@ -384,8 +345,7 @@ static unsigned lodepng_buffer_file(unsigned char* out, size_t size, const char* return 0; } -unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename) -{ +unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename) { long size = lodepng_filesize(filename); if (size < 0) return 78; *outsize = (size_t)size; @@ -397,12 +357,11 @@ unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* fil } /*write given buffer to the file, overwriting the file, it doesn't append to it.*/ -unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename) -{ +unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename) { FILE* file; file = fopen(filename, "wb" ); if(!file) return 79; - fwrite((char*)buffer , 1 , buffersize, file); + fwrite(buffer, 1, buffersize, file); fclose(file); return 0; } @@ -418,8 +377,7 @@ unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const #ifdef LODEPNG_COMPILE_ZLIB #ifdef LODEPNG_COMPILE_ENCODER /*TODO: this ignores potential out of memory errors*/ -#define addBitToStream(/*size_t**/ bitpointer, /*ucvector**/ bitstream, /*unsigned char*/ bit)\ -{\ +#define addBitToStream(/*size_t**/ bitpointer, /*ucvector**/ bitstream, /*unsigned char*/ bit){\ /*add a new byte at the end*/\ if(((*bitpointer) & 7) == 0) ucvector_push_back(bitstream, (unsigned char)0);\ /*earlier bit of huffman code is in a lesser significant bit of an earlier byte*/\ @@ -427,14 +385,12 @@ unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const ++(*bitpointer);\ } -static void addBitsToStream(size_t* bitpointer, ucvector* bitstream, unsigned value, size_t nbits) -{ +static void addBitsToStream(size_t* bitpointer, ucvector* bitstream, unsigned value, size_t nbits) { size_t i; for(i = 0; i != nbits; ++i) addBitToStream(bitpointer, bitstream, (unsigned char)((value >> i) & 1)); } -static void addBitsToStreamReversed(size_t* bitpointer, ucvector* bitstream, unsigned value, size_t nbits) -{ +static void addBitsToStreamReversed(size_t* bitpointer, ucvector* bitstream, unsigned value, size_t nbits) { size_t i; for(i = 0; i != nbits; ++i) addBitToStream(bitpointer, bitstream, (unsigned char)((value >> (nbits - 1 - i)) & 1)); } @@ -444,18 +400,15 @@ static void addBitsToStreamReversed(size_t* bitpointer, ucvector* bitstream, uns #define READBIT(bitpointer, bitstream) ((bitstream[bitpointer >> 3] >> (bitpointer & 0x7)) & (unsigned char)1) -static unsigned char readBitFromStream(size_t* bitpointer, const unsigned char* bitstream) -{ +static unsigned char readBitFromStream(size_t* bitpointer, const unsigned char* bitstream) { unsigned char result = (unsigned char)(READBIT(*bitpointer, bitstream)); ++(*bitpointer); return result; } -static unsigned readBitsFromStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits) -{ +static unsigned readBitsFromStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits) { unsigned result = 0, i; - for(i = 0; i != nbits; ++i) - { + for(i = 0; i != nbits; ++i) { result += ((unsigned)READBIT(*bitpointer, bitstream)) << i; ++(*bitpointer); } @@ -506,8 +459,7 @@ static const unsigned CLCL_ORDER[NUM_CODE_LENGTH_CODES] /* Huffman tree struct, containing multiple representations of the tree */ -typedef struct HuffmanTree -{ +typedef struct HuffmanTree { unsigned* tree2d; unsigned* tree1d; unsigned* lengths; /*the lengths of the codes of the 1d-tree*/ @@ -517,34 +469,29 @@ typedef struct HuffmanTree /*function used for debug purposes to draw the tree in ascii art with C++*/ /* -static void HuffmanTree_draw(HuffmanTree* tree) -{ +static void HuffmanTree_draw(HuffmanTree* tree) { std::cout << "tree. length: " << tree->numcodes << " maxbitlen: " << tree->maxbitlen << std::endl; - for(size_t i = 0; i != tree->tree1d.size; ++i) - { + for(size_t i = 0; i != tree->tree1d.size; ++i) { if(tree->lengths.data[i]) std::cout << i << " " << tree->tree1d.data[i] << " " << tree->lengths.data[i] << std::endl; } std::cout << std::endl; }*/ -static void HuffmanTree_init(HuffmanTree* tree) -{ +static void HuffmanTree_init(HuffmanTree* tree) { tree->tree2d = 0; tree->tree1d = 0; tree->lengths = 0; } -static void HuffmanTree_cleanup(HuffmanTree* tree) -{ +static void HuffmanTree_cleanup(HuffmanTree* tree) { lodepng_free(tree->tree2d); lodepng_free(tree->tree1d); lodepng_free(tree->lengths); } /*the tree representation used by the decoder. return value is error*/ -static unsigned HuffmanTree_make2DTree(HuffmanTree* tree) -{ +static unsigned HuffmanTree_make2DTree(HuffmanTree* tree) { unsigned nodefilled = 0; /*up to which node it is filled*/ unsigned treepos = 0; /*position in the tree (1 of the numcodes columns)*/ unsigned n, i; @@ -562,27 +509,20 @@ static unsigned HuffmanTree_make2DTree(HuffmanTree* tree) There is only memory for such good tree currently, if there are more nodes (due to too long length codes), error 55 will happen */ - for(n = 0; n < tree->numcodes * 2; ++n) - { + for(n = 0; n < tree->numcodes * 2; ++n) { tree->tree2d[n] = 32767; /*32767 here means the tree2d isn't filled there yet*/ } - for(n = 0; n < tree->numcodes; ++n) /*the codes*/ - { - for(i = 0; i != tree->lengths[n]; ++i) /*the bits for this code*/ - { + for(n = 0; n < tree->numcodes; ++n) /*the codes*/ { + for(i = 0; i != tree->lengths[n]; ++i) /*the bits for this code*/ { unsigned char bit = (unsigned char)((tree->tree1d[n] >> (tree->lengths[n] - i - 1)) & 1); /*oversubscribed, see comment in lodepng_error_text*/ if(treepos > 2147483647 || treepos + 2 > tree->numcodes) return 55; - if(tree->tree2d[2 * treepos + bit] == 32767) /*not yet filled in*/ - { - if(i + 1 == tree->lengths[n]) /*last bit*/ - { + if(tree->tree2d[2 * treepos + bit] == 32767) /*not yet filled in*/ { + if(i + 1 == tree->lengths[n]) /*last bit*/ { tree->tree2d[2 * treepos + bit] = n; /*put the current code in it*/ treepos = 0; - } - else - { + } else { /*put address of the next step in here, first that address has to be found of course (it's just nodefilled + 1)...*/ ++nodefilled; @@ -595,8 +535,7 @@ static unsigned HuffmanTree_make2DTree(HuffmanTree* tree) } } - for(n = 0; n < tree->numcodes * 2; ++n) - { + for(n = 0; n < tree->numcodes * 2; ++n) { if(tree->tree2d[n] == 32767) tree->tree2d[n] = 0; /*remove possible remaining 32767's*/ } @@ -608,8 +547,7 @@ Second step for the ...makeFromLengths and ...makeFromFrequencies functions. numcodes, lengths and maxbitlen must already be filled in correctly. return value is error. */ -static unsigned HuffmanTree_makeFromLengths2(HuffmanTree* tree) -{ +static unsigned HuffmanTree_makeFromLengths2(HuffmanTree* tree) { uivector blcount; uivector nextcode; unsigned error = 0; @@ -625,18 +563,15 @@ static unsigned HuffmanTree_makeFromLengths2(HuffmanTree* tree) || !uivector_resizev(&nextcode, tree->maxbitlen + 1, 0)) error = 83; /*alloc fail*/ - if(!error) - { + if(!error) { /*step 1: count number of instances of each code length*/ for(bits = 0; bits != tree->numcodes; ++bits) ++blcount.data[tree->lengths[bits]]; /*step 2: generate the nextcode values*/ - for(bits = 1; bits <= tree->maxbitlen; ++bits) - { + for(bits = 1; bits <= tree->maxbitlen; ++bits) { nextcode.data[bits] = (nextcode.data[bits - 1] + blcount.data[bits - 1]) << 1; } /*step 3: generate all the codes*/ - for(n = 0; n != tree->numcodes; ++n) - { + for(n = 0; n != tree->numcodes; ++n) { if(tree->lengths[n] != 0) tree->tree1d[n] = nextcode.data[tree->lengths[n]]++; } } @@ -654,8 +589,7 @@ by Deflate. maxbitlen is the maximum bits that a code in the tree can have. return value is error. */ static unsigned HuffmanTree_makeFromLengths(HuffmanTree* tree, const unsigned* bitlen, - size_t numcodes, unsigned maxbitlen) -{ + size_t numcodes, unsigned maxbitlen) { unsigned i; tree->lengths = (unsigned*)lodepng_malloc(numcodes * sizeof(unsigned)); if(!tree->lengths) return 83; /*alloc fail*/ @@ -671,8 +605,7 @@ static unsigned HuffmanTree_makeFromLengths(HuffmanTree* tree, const unsigned* b Jyrki Katajainen, Alistair Moffat, Andrew Turpin, 1995.*/ /*chain node for boundary package merge*/ -typedef struct BPMNode -{ +typedef struct BPMNode { int weight; /*the sum of all weights in this chain*/ unsigned index; /*index of this leaf node (called "count" in the paper)*/ struct BPMNode* tail; /*the next nodes in this chain (null if last)*/ @@ -680,8 +613,7 @@ typedef struct BPMNode } BPMNode; /*lists of chains*/ -typedef struct BPMLists -{ +typedef struct BPMLists { /*memory pool*/ unsigned memsize; BPMNode* memory; @@ -695,26 +627,22 @@ typedef struct BPMLists } BPMLists; /*creates a new chain node with the given parameters, from the memory in the lists */ -static BPMNode* bpmnode_create(BPMLists* lists, int weight, unsigned index, BPMNode* tail) -{ +static BPMNode* bpmnode_create(BPMLists* lists, int weight, unsigned index, BPMNode* tail) { unsigned i; BPMNode* result; /*memory full, so garbage collect*/ - if(lists->nextfree >= lists->numfree) - { + if(lists->nextfree >= lists->numfree) { /*mark only those that are in use*/ for(i = 0; i != lists->memsize; ++i) lists->memory[i].in_use = 0; - for(i = 0; i != lists->listsize; ++i) - { + for(i = 0; i != lists->listsize; ++i) { BPMNode* node; for(node = lists->chains0[i]; node != 0; node = node->tail) node->in_use = 1; for(node = lists->chains1[i]; node != 0; node = node->tail) node->in_use = 1; } /*collect those that are free*/ lists->numfree = 0; - for(i = 0; i != lists->memsize; ++i) - { + for(i = 0; i != lists->memsize; ++i) { if(!lists->memory[i].in_use) lists->freelist[lists->numfree++] = &lists->memory[i]; } lists->nextfree = 0; @@ -728,22 +656,18 @@ static BPMNode* bpmnode_create(BPMLists* lists, int weight, unsigned index, BPMN } /*sort the leaves with stable mergesort*/ -static void bpmnode_sort(BPMNode* leaves, size_t num) -{ +static void bpmnode_sort(BPMNode* leaves, size_t num) { BPMNode* mem = (BPMNode*)lodepng_malloc(sizeof(*leaves) * num); size_t width, counter = 0; - for(width = 1; width < num; width *= 2) - { + for(width = 1; width < num; width *= 2) { BPMNode* a = (counter & 1) ? mem : leaves; BPMNode* b = (counter & 1) ? leaves : mem; size_t p; - for(p = 0; p < num; p += 2 * width) - { + for(p = 0; p < num; p += 2 * width) { size_t q = (p + width > num) ? num : (p + width); size_t r = (p + 2 * width > num) ? num : (p + 2 * width); size_t i = p, j = q, k; - for(k = p; k < r; k++) - { + for(k = p; k < r; k++) { if(i < q && (j >= r || a[i].weight <= a[j].weight)) b[k] = a[i++]; else b[k] = a[j++]; } @@ -755,31 +679,25 @@ static void bpmnode_sort(BPMNode* leaves, size_t num) } /*Boundary Package Merge step, numpresent is the amount of leaves, and c is the current chain.*/ -static void boundaryPM(BPMLists* lists, BPMNode* leaves, size_t numpresent, int c, int num) -{ +static void boundaryPM(BPMLists* lists, BPMNode* leaves, size_t numpresent, int c, int num) { unsigned lastindex = lists->chains1[c]->index; - if(c == 0) - { + if(c == 0) { if(lastindex >= numpresent) return; lists->chains0[c] = lists->chains1[c]; lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, 0); - } - else - { + } else { /*sum of the weights of the head nodes of the previous lookahead chains.*/ int sum = lists->chains0[c - 1]->weight + lists->chains1[c - 1]->weight; lists->chains0[c] = lists->chains1[c]; - if(lastindex < numpresent && sum > leaves[lastindex].weight) - { + if(lastindex < numpresent && sum > leaves[lastindex].weight) { lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, lists->chains1[c]->tail); return; } lists->chains1[c] = bpmnode_create(lists, sum, lastindex, lists->chains1[c - 1]); /*in the end we are only interested in the chain of the last list, so no need to recurse if we're at the last one (this gives measurable speedup)*/ - if(num + 1 < (int)(2 * numpresent - 2)) - { + if(num + 1 < (int)(2 * numpresent - 2)) { boundaryPM(lists, leaves, numpresent, c - 1, num); boundaryPM(lists, leaves, numpresent, c - 1, num); } @@ -787,23 +705,20 @@ static void boundaryPM(BPMLists* lists, BPMNode* leaves, size_t numpresent, int } unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies, - size_t numcodes, unsigned maxbitlen) -{ + size_t numcodes, unsigned maxbitlen) { unsigned error = 0; unsigned i; size_t numpresent = 0; /*number of symbols with non-zero frequency*/ BPMNode* leaves; /*the symbols, only those with > 0 frequency*/ if(numcodes == 0) return 80; /*error: a tree of 0 symbols is not supposed to be made*/ - if((1u << maxbitlen) < numcodes) return 80; /*error: represent all symbols*/ + if((1u << maxbitlen) < (unsigned)numcodes) return 80; /*error: represent all symbols*/ leaves = (BPMNode*)lodepng_malloc(numcodes * sizeof(*leaves)); if(!leaves) return 83; /*alloc fail*/ - for(i = 0; i != numcodes; ++i) - { - if(frequencies[i] > 0) - { + for(i = 0; i != numcodes; ++i) { + if(frequencies[i] > 0) { leaves[numpresent].weight = (int)frequencies[i]; leaves[numpresent].index = i; ++numpresent; @@ -817,17 +732,12 @@ unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequen make these work as well ensure there are at least two symbols. The Package-Merge code below also doesn't work correctly if there's only one symbol, it'd give it the theoritical 0 bits but in practice zlib wants 1 bit*/ - if(numpresent == 0) - { + if(numpresent == 0) { lengths[0] = lengths[1] = 1; /*note that for RFC 1951 section 3.2.7, only lengths[0] = 1 is needed*/ - } - else if(numpresent == 1) - { + } else if(numpresent == 1) { lengths[leaves[0].index] = 1; lengths[leaves[0].index == 0 ? 1 : 0] = 1; - } - else - { + } else { BPMLists lists; BPMNode* node; @@ -843,15 +753,13 @@ unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequen lists.chains1 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*)); if(!lists.memory || !lists.freelist || !lists.chains0 || !lists.chains1) error = 83; /*alloc fail*/ - if(!error) - { + if(!error) { for(i = 0; i != lists.memsize; ++i) lists.freelist[i] = &lists.memory[i]; bpmnode_create(&lists, leaves[0].weight, 1, 0); bpmnode_create(&lists, leaves[1].weight, 2, 0); - for(i = 0; i != lists.listsize; ++i) - { + for(i = 0; i != lists.listsize; ++i) { lists.chains0[i] = &lists.memory[0]; lists.chains1[i] = &lists.memory[1]; } @@ -859,8 +767,7 @@ unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequen /*each boundaryPM call adds one chain to the last list, and we need 2 * numpresent - 2 chains.*/ for(i = 2; i != 2 * numpresent - 2; ++i) boundaryPM(&lists, leaves, numpresent, (int)maxbitlen - 1, (int)i); - for(node = lists.chains1[maxbitlen - 1]; node; node = node->tail) - { + for(node = lists.chains1[maxbitlen - 1]; node; node = node->tail) { for(i = 0; i != node->index; ++i) ++lengths[leaves[i].index]; } } @@ -877,8 +784,7 @@ unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequen /*Create the Huffman tree given the symbol frequencies*/ static unsigned HuffmanTree_makeFromFrequencies(HuffmanTree* tree, const unsigned* frequencies, - size_t mincodes, size_t numcodes, unsigned maxbitlen) -{ + size_t mincodes, size_t numcodes, unsigned maxbitlen) { unsigned error = 0; while(!frequencies[numcodes - 1] && numcodes > mincodes) --numcodes; /*trim zeroes*/ tree->maxbitlen = maxbitlen; @@ -893,20 +799,17 @@ static unsigned HuffmanTree_makeFromFrequencies(HuffmanTree* tree, const unsigne return error; } -static unsigned HuffmanTree_getCode(const HuffmanTree* tree, unsigned index) -{ +static unsigned HuffmanTree_getCode(const HuffmanTree* tree, unsigned index) { return tree->tree1d[index]; } -static unsigned HuffmanTree_getLength(const HuffmanTree* tree, unsigned index) -{ +static unsigned HuffmanTree_getLength(const HuffmanTree* tree, unsigned index) { return tree->lengths[index]; } #endif /*LODEPNG_COMPILE_ENCODER*/ /*get the literal and length code tree of a deflated block with fixed tree, as per the deflate specification*/ -static unsigned generateFixedLitLenTree(HuffmanTree* tree) -{ +static unsigned generateFixedLitLenTree(HuffmanTree* tree) { unsigned i, error = 0; unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned)); if(!bitlen) return 83; /*alloc fail*/ @@ -924,8 +827,7 @@ static unsigned generateFixedLitLenTree(HuffmanTree* tree) } /*get the distance code tree of a deflated block with fixed tree, as specified in the deflate specification*/ -static unsigned generateFixedDistanceTree(HuffmanTree* tree) -{ +static unsigned generateFixedDistanceTree(HuffmanTree* tree) { unsigned i, error = 0; unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned)); if(!bitlen) return 83; /*alloc fail*/ @@ -945,11 +847,9 @@ returns the code, or (unsigned)(-1) if error happened inbitlength is the length of the complete buffer, in bits (so its byte length times 8) */ static unsigned huffmanDecodeSymbol(const unsigned char* in, size_t* bp, - const HuffmanTree* codetree, size_t inbitlength) -{ + const HuffmanTree* codetree, size_t inbitlength) { unsigned treepos = 0, ct; - for(;;) - { + for(;;) { if(*bp >= inbitlength) return (unsigned)(-1); /*error: end of input memory reached without endcode*/ /* decode the symbol from the tree. The "readBitFromStream" code is inlined in @@ -972,8 +872,7 @@ static unsigned huffmanDecodeSymbol(const unsigned char* in, size_t* bp, /* ////////////////////////////////////////////////////////////////////////// */ /*get the tree of a deflated block with fixed tree, as specified in the deflate specification*/ -static void getTreeInflateFixed(HuffmanTree* tree_ll, HuffmanTree* tree_d) -{ +static void getTreeInflateFixed(HuffmanTree* tree_ll, HuffmanTree* tree_d) { /*TODO: check for out of memory errors*/ generateFixedLitLenTree(tree_ll); generateFixedDistanceTree(tree_d); @@ -981,8 +880,7 @@ static void getTreeInflateFixed(HuffmanTree* tree_ll, HuffmanTree* tree_d) /*get the tree of a deflated block with dynamic tree, the tree itself is also Huffman compressed with a known tree*/ static unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree* tree_d, - const unsigned char* in, size_t* bp, size_t inlength) -{ + const unsigned char* in, size_t* bp, size_t inlength) { /*make sure that length values that aren't filled in will be 0, or a wrong tree will be generated*/ unsigned error = 0; unsigned n, HLIT, HDIST, HCLEN, i; @@ -1008,15 +906,13 @@ static unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree* tree_d, HuffmanTree_init(&tree_cl); - while(!error) - { + while(!error) { /*read the code length codes out of 3 * (amount of code length codes) bits*/ bitlen_cl = (unsigned*)lodepng_malloc(NUM_CODE_LENGTH_CODES * sizeof(unsigned)); if(!bitlen_cl) ERROR_BREAK(83 /*alloc fail*/); - for(i = 0; i != NUM_CODE_LENGTH_CODES; ++i) - { + for(i = 0; i != NUM_CODE_LENGTH_CODES; ++i) { if(i < HCLEN) bitlen_cl[CLCL_ORDER[i]] = readBitsFromStream(bp, in, 3); else bitlen_cl[CLCL_ORDER[i]] = 0; /*if not, it must stay 0*/ } @@ -1033,17 +929,13 @@ static unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree* tree_d, /*i is the current symbol we're reading in the part that contains the code lengths of lit/len and dist codes*/ i = 0; - while(i < HLIT + HDIST) - { + while(i < HLIT + HDIST) { unsigned code = huffmanDecodeSymbol(in, bp, &tree_cl, inbitlength); - if(code <= 15) /*a length code*/ - { + if(code <= 15) /*a length code*/ { if(i < HLIT) bitlen_ll[i] = code; else bitlen_d[i - HLIT] = code; ++i; - } - else if(code == 16) /*repeat previous*/ - { + } else if(code == 16) /*repeat previous*/ { unsigned replength = 3; /*read in the 2 bits that indicate repeat length (3-6)*/ unsigned value; /*set value to the previous code*/ @@ -1055,50 +947,40 @@ static unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree* tree_d, if(i < HLIT + 1) value = bitlen_ll[i - 1]; else value = bitlen_d[i - HLIT - 1]; /*repeat this value in the next lengths*/ - for(n = 0; n < replength; ++n) - { + for(n = 0; n < replength; ++n) { if(i >= HLIT + HDIST) ERROR_BREAK(13); /*error: i is larger than the amount of codes*/ if(i < HLIT) bitlen_ll[i] = value; else bitlen_d[i - HLIT] = value; ++i; } - } - else if(code == 17) /*repeat "0" 3-10 times*/ - { + } else if(code == 17) /*repeat "0" 3-10 times*/ { unsigned replength = 3; /*read in the bits that indicate repeat length*/ if((*bp + 3) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/ replength += readBitsFromStream(bp, in, 3); /*repeat this value in the next lengths*/ - for(n = 0; n < replength; ++n) - { + for(n = 0; n < replength; ++n) { if(i >= HLIT + HDIST) ERROR_BREAK(14); /*error: i is larger than the amount of codes*/ if(i < HLIT) bitlen_ll[i] = 0; else bitlen_d[i - HLIT] = 0; ++i; } - } - else if(code == 18) /*repeat "0" 11-138 times*/ - { + } else if(code == 18) /*repeat "0" 11-138 times*/ { unsigned replength = 11; /*read in the bits that indicate repeat length*/ if((*bp + 7) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/ replength += readBitsFromStream(bp, in, 7); /*repeat this value in the next lengths*/ - for(n = 0; n < replength; ++n) - { + for(n = 0; n < replength; ++n) { if(i >= HLIT + HDIST) ERROR_BREAK(15); /*error: i is larger than the amount of codes*/ if(i < HLIT) bitlen_ll[i] = 0; else bitlen_d[i - HLIT] = 0; ++i; } - } - else /*if(code == (unsigned)(-1))*/ /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ - { - if(code == (unsigned)(-1)) - { + } else /*if(code == (unsigned)(-1))*/ /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ { + if(code == (unsigned)(-1)) { /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol (10=no endcode, 11=wrong jump outside of tree)*/ error = (*bp) > inbitlength ? 10 : 11; @@ -1129,8 +1011,7 @@ static unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree* tree_d, /*inflate a block with dynamic of fixed Huffman tree*/ static unsigned inflateHuffmanBlock(ucvector* out, const unsigned char* in, size_t* bp, - size_t* pos, size_t inlength, unsigned btype) -{ + size_t* pos, size_t inlength, unsigned btype) { unsigned error = 0; HuffmanTree tree_ll; /*the huffman tree for literal and length codes*/ HuffmanTree tree_d; /*the huffman tree for distance codes*/ @@ -1142,19 +1023,15 @@ static unsigned inflateHuffmanBlock(ucvector* out, const unsigned char* in, size if(btype == 1) getTreeInflateFixed(&tree_ll, &tree_d); else if(btype == 2) error = getTreeInflateDynamic(&tree_ll, &tree_d, in, bp, inlength); - while(!error) /*decode all symbols until end reached, breaks at end code*/ - { + while(!error) /*decode all symbols until end reached, breaks at end code*/ { /*code_ll is literal, length or end code*/ unsigned code_ll = huffmanDecodeSymbol(in, bp, &tree_ll, inbitlength); - if(code_ll <= 255) /*literal symbol*/ - { + if(code_ll <= 255) /*literal symbol*/ { /*ucvector_push_back would do the same, but for some reason the two lines below run 10% faster*/ if(!ucvector_resize(out, (*pos) + 1)) ERROR_BREAK(83 /*alloc fail*/); out->data[*pos] = (unsigned char)code_ll; ++(*pos); - } - else if(code_ll >= FIRST_LENGTH_CODE_INDEX && code_ll <= LAST_LENGTH_CODE_INDEX) /*length code*/ - { + } else if(code_ll >= FIRST_LENGTH_CODE_INDEX && code_ll <= LAST_LENGTH_CODE_INDEX) /*length code*/ { unsigned code_d, distance; unsigned numextrabits_l, numextrabits_d; /*extra bits for length and distance*/ size_t start, forward, backward, length; @@ -1169,10 +1046,8 @@ static unsigned inflateHuffmanBlock(ucvector* out, const unsigned char* in, size /*part 3: get distance code*/ code_d = huffmanDecodeSymbol(in, bp, &tree_d, inbitlength); - if(code_d > 29) - { - if(code_ll == (unsigned)(-1)) /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ - { + if(code_d > 29) { + if(code_d == (unsigned)(-1)) /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ { /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol (10=no endcode, 11=wrong jump outside of tree)*/ error = (*bp) > inlength * 8 ? 10 : 11; @@ -1194,21 +1069,16 @@ static unsigned inflateHuffmanBlock(ucvector* out, const unsigned char* in, size if(!ucvector_resize(out, (*pos) + length)) ERROR_BREAK(83 /*alloc fail*/); if (distance < length) { - for(forward = 0; forward < length; ++forward) - { + for(forward = 0; forward < length; ++forward) { out->data[(*pos)++] = out->data[backward++]; } } else { memcpy(out->data + *pos, out->data + backward, length); *pos += length; } - } - else if(code_ll == 256) - { + } else if(code_ll == 256) { break; /*end code, break the loop*/ - } - else /*if(code == (unsigned)(-1))*/ /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ - { + } else /*if(code == (unsigned)(-1))*/ /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ { /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol (10=no endcode, 11=wrong jump outside of tree)*/ error = ((*bp) > inlength * 8) ? 10 : 11; @@ -1222,8 +1092,7 @@ static unsigned inflateHuffmanBlock(ucvector* out, const unsigned char* in, size return error; } -static unsigned inflateNoCompression(ucvector* out, const unsigned char* in, size_t* bp, size_t* pos, size_t inlength) -{ +static unsigned inflateNoCompression(ucvector* out, const unsigned char* in, size_t* bp, size_t* pos, size_t inlength) { size_t p; unsigned LEN, NLEN, n, error = 0; @@ -1252,8 +1121,7 @@ static unsigned inflateNoCompression(ucvector* out, const unsigned char* in, siz static unsigned lodepng_inflatev(ucvector* out, const unsigned char* in, size_t insize, - const LodePNGDecompressSettings* settings) -{ + const LodePNGDecompressSettings* settings) { /*bit pointer in the "in" data, current byte is bp >> 3, current bit is bp & 0x7 (from lsb to msb of the byte)*/ size_t bp = 0; unsigned BFINAL = 0; @@ -1262,8 +1130,7 @@ static unsigned lodepng_inflatev(ucvector* out, (void)settings; - while(!BFINAL) - { + while(!BFINAL) { unsigned BTYPE; if(bp + 2 >= insize * 8) return 52; /*error, bit pointer will jump past memory*/ BFINAL = readBitFromStream(&bp, in); @@ -1282,8 +1149,7 @@ static unsigned lodepng_inflatev(ucvector* out, unsigned lodepng_inflate(unsigned char** out, size_t* outsize, const unsigned char* in, size_t insize, - const LodePNGDecompressSettings* settings) -{ + const LodePNGDecompressSettings* settings) { unsigned error; ucvector v; ucvector_init_buffer(&v, *out, *outsize); @@ -1295,14 +1161,10 @@ unsigned lodepng_inflate(unsigned char** out, size_t* outsize, static unsigned inflate(unsigned char** out, size_t* outsize, const unsigned char* in, size_t insize, - const LodePNGDecompressSettings* settings) -{ - if(settings->custom_inflate) - { + const LodePNGDecompressSettings* settings) { + if(settings->custom_inflate) { return settings->custom_inflate(out, outsize, in, insize, settings); - } - else - { + } else { return lodepng_inflate(out, outsize, in, insize, settings); } } @@ -1318,15 +1180,13 @@ static unsigned inflate(unsigned char** out, size_t* outsize, static const size_t MAX_SUPPORTED_DEFLATE_LENGTH = 258; /*bitlen is the size in bits of the code*/ -static void addHuffmanSymbol(size_t* bp, ucvector* compressed, unsigned code, unsigned bitlen) -{ +static void addHuffmanSymbol(size_t* bp, ucvector* compressed, unsigned code, unsigned bitlen) { addBitsToStreamReversed(bp, compressed, code, bitlen); } /*search the index in the array, that has the largest value smaller than or equal to the given value, given array must be sorted (if no value is smaller, it returns the size of the given array)*/ -static size_t searchCodeIndex(const unsigned* array, size_t array_size, size_t value) -{ +static size_t searchCodeIndex(const unsigned* array, size_t array_size, size_t value) { /*binary search (only small gain over linear). TODO: use CPU log2 instruction for getting symbols instead*/ size_t left = 1; size_t right = array_size - 1; @@ -1340,8 +1200,7 @@ static size_t searchCodeIndex(const unsigned* array, size_t array_size, size_t v return left; } -static void addLengthDistance(uivector* values, size_t length, size_t distance) -{ +static void addLengthDistance(uivector* values, size_t length, size_t distance) { /*values in encoded vector are those used by deflate: 0-255: literal bytes 256: end @@ -1364,8 +1223,7 @@ bytes as input because 3 is the minimum match length for deflate*/ static const unsigned HASH_NUM_VALUES = 65536; static const unsigned HASH_BIT_MASK = 65535; /*HASH_NUM_VALUES - 1, but C90 does not like that as initializer*/ -typedef struct Hash -{ +typedef struct Hash { int* head; /*hash value to head circular pos - can be outdated if went around window*/ /*circular pos to prev circular pos*/ unsigned short* chain; @@ -1378,8 +1236,7 @@ typedef struct Hash unsigned short* zeros; /*length of zeros streak, used as a second hash chain*/ } Hash; -static unsigned hash_init(Hash* hash, unsigned windowsize) -{ +static unsigned hash_init(Hash* hash, unsigned windowsize) { unsigned i; hash->head = (int*)lodepng_malloc(sizeof(int) * HASH_NUM_VALUES); hash->val = (int*)lodepng_malloc(sizeof(int) * windowsize); @@ -1389,8 +1246,7 @@ static unsigned hash_init(Hash* hash, unsigned windowsize) hash->headz = (int*)lodepng_malloc(sizeof(int) * (MAX_SUPPORTED_DEFLATE_LENGTH + 1)); hash->chainz = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); - if(!hash->head || !hash->chain || !hash->val || !hash->headz|| !hash->chainz || !hash->zeros) - { + if(!hash->head || !hash->chain || !hash->val || !hash->headz|| !hash->chainz || !hash->zeros) { return 83; /*alloc fail*/ } @@ -1405,8 +1261,7 @@ static unsigned hash_init(Hash* hash, unsigned windowsize) return 0; } -static void hash_cleanup(Hash* hash) -{ +static void hash_cleanup(Hash* hash) { lodepng_free(hash->head); lodepng_free(hash->val); lodepng_free(hash->chain); @@ -1418,11 +1273,9 @@ static void hash_cleanup(Hash* hash) -static unsigned getHash(const unsigned char* data, size_t size, size_t pos) -{ +static unsigned getHash(const unsigned char* data, size_t size, size_t pos) { unsigned result = 0; - if(pos + 2 < size) - { + if(pos + 2 < size) { /*A simple shift and xor hash is used. Since the data of PNGs is dominated by zeroes due to the filters, a better hash does not have a significant effect on speed in traversing the chain, and causes more time spend on @@ -1439,8 +1292,7 @@ static unsigned getHash(const unsigned char* data, size_t size, size_t pos) return result & HASH_BIT_MASK; } -static unsigned countZeros(const unsigned char* data, size_t size, size_t pos) -{ +static unsigned countZeros(const unsigned char* data, size_t size, size_t pos) { const unsigned char* start = data + pos; const unsigned char* end = start + MAX_SUPPORTED_DEFLATE_LENGTH; if(end > data + size) end = data + size; @@ -1451,15 +1303,14 @@ static unsigned countZeros(const unsigned char* data, size_t size, size_t pos) } /*wpos = pos & (windowsize - 1)*/ -static void updateHashChain(Hash* hash, size_t wpos, unsigned hashval, unsigned short numzeros) -{ +static void updateHashChain(Hash* hash, size_t wpos, unsigned hashval, unsigned short numzeros) { hash->val[wpos] = (int)hashval; if(hash->head[hashval] != -1) hash->chain[wpos] = hash->head[hashval]; - hash->head[hashval] = wpos; + hash->head[hashval] = (int)wpos; hash->zeros[wpos] = numzeros; if(hash->headz[numzeros] != -1) hash->chainz[wpos] = hash->headz[numzeros]; - hash->headz[numzeros] = wpos; + hash->headz[numzeros] = (int)wpos; } /* @@ -1473,8 +1324,7 @@ this hash technique is one out of several ways to speed this up. */ static unsigned encodeLZ77(uivector* out, Hash* hash, const unsigned char* in, size_t inpos, size_t insize, unsigned windowsize, - unsigned minmatch, unsigned nicematch, unsigned lazymatching) -{ + unsigned minmatch, unsigned nicematch, unsigned lazymatching) { size_t pos; unsigned i, error = 0; /*for large window lengths, assume the user wants no compression loss. Otherwise, max hash chain length speedup.*/ @@ -1499,20 +1349,16 @@ static unsigned encodeLZ77(uivector* out, Hash* hash, if(nicematch > MAX_SUPPORTED_DEFLATE_LENGTH) nicematch = MAX_SUPPORTED_DEFLATE_LENGTH; - for(pos = inpos; pos < insize; ++pos) - { + for(pos = inpos; pos < insize; ++pos) { size_t wpos = pos & (windowsize - 1); /*position for in 'circular' hash buffers*/ unsigned chainlength = 0; hashval = getHash(in, insize, pos); - if(usezeros && hashval == 0) - { + if(usezeros && hashval == 0) { if(numzeros == 0) numzeros = countZeros(in, insize, pos); else if(pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros; - } - else - { + } else { numzeros = 0; } @@ -1528,37 +1374,32 @@ static unsigned encodeLZ77(uivector* out, Hash* hash, /*search for the longest string*/ prev_offset = 0; - for(;;) - { + for(;;) { if(chainlength++ >= maxchainlength) break; - current_offset = hashpos <= wpos ? wpos - hashpos : wpos - hashpos + windowsize; + current_offset = (unsigned)(hashpos <= wpos ? wpos - hashpos : wpos - hashpos + windowsize); if(current_offset < prev_offset) break; /*stop when went completely around the circular buffer*/ prev_offset = current_offset; - if(current_offset > 0) - { + if(current_offset > 0) { /*test the next characters*/ foreptr = &in[pos]; backptr = &in[pos - current_offset]; /*common case in PNGs is lots of zeros. Quickly skip over them as a speedup*/ - if(numzeros >= 3) - { + if(numzeros >= 3) { unsigned skip = hash->zeros[hashpos]; if(skip > numzeros) skip = numzeros; backptr += skip; foreptr += skip; } - while(foreptr != lastptr && *backptr == *foreptr) /*maximum supported length by deflate is max length*/ - { + while(foreptr != lastptr && *backptr == *foreptr) /*maximum supported length by deflate is max length*/ { ++backptr; ++foreptr; } current_length = (unsigned)(foreptr - &in[pos]); - if(current_length > length) - { + if(current_length > length) { length = current_length; /*the longest length*/ offset = current_offset; /*the offset that is related to this longest length*/ /*jump out once a length of max length is found (speed gain). This also jumps @@ -1569,39 +1410,30 @@ static unsigned encodeLZ77(uivector* out, Hash* hash, if(hashpos == hash->chain[hashpos]) break; - if(numzeros >= 3 && length > numzeros) - { + if(numzeros >= 3 && length > numzeros) { hashpos = hash->chainz[hashpos]; if(hash->zeros[hashpos] != numzeros) break; - } - else - { + } else { hashpos = hash->chain[hashpos]; /*outdated hash value, happens if particular value was not encountered in whole last window*/ if(hash->val[hashpos] != (int)hashval) break; } } - if(lazymatching) - { - if(!lazy && length >= 3 && length <= maxlazymatch && length < MAX_SUPPORTED_DEFLATE_LENGTH) - { + if(lazymatching) { + if(!lazy && length >= 3 && length <= maxlazymatch && length < MAX_SUPPORTED_DEFLATE_LENGTH) { lazy = 1; lazylength = length; lazyoffset = offset; continue; /*try the next byte*/ } - if(lazy) - { + if(lazy) { lazy = 0; if(pos == 0) ERROR_BREAK(81); - if(length > lazylength + 1) - { + if(length > lazylength + 1) { /*push the previous character as literal*/ if(!uivector_push_back(out, in[pos - 1])) ERROR_BREAK(83 /*alloc fail*/); - } - else - { + } else { length = lazylength; offset = lazyoffset; hash->head[hashval] = -1; /*the same hashchain update will be done, this ensures no wrong alteration*/ @@ -1613,31 +1445,22 @@ static unsigned encodeLZ77(uivector* out, Hash* hash, if(length >= 3 && offset > windowsize) ERROR_BREAK(86 /*too big (or overflown negative) offset*/); /*encode it as length/distance pair or literal value*/ - if(length < 3) /*only lengths of 3 or higher are supported as length/distance pair*/ - { + if(length < 3) /*only lengths of 3 or higher are supported as length/distance pair*/ { if(!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/); - } - else if(length < minmatch || (length == 3 && offset > 4096)) - { + } else if(length < minmatch || (length == 3 && offset > 4096)) { /*compensate for the fact that longer offsets have more extra bits, a length of only 3 may be not worth it then*/ if(!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/); - } - else - { + } else { addLengthDistance(out, length, offset); - for(i = 1; i < length; ++i) - { + for(i = 1; i < length; ++i) { ++pos; wpos = pos & (windowsize - 1); hashval = getHash(in, insize, pos); - if(usezeros && hashval == 0) - { + if(usezeros && hashval == 0) { if(numzeros == 0) numzeros = countZeros(in, insize, pos); else if(pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros; - } - else - { + } else { numzeros = 0; } updateHashChain(hash, wpos, hashval, numzeros); @@ -1650,15 +1473,13 @@ static unsigned encodeLZ77(uivector* out, Hash* hash, /* /////////////////////////////////////////////////////////////////////////// */ -static unsigned deflateNoCompression(ucvector* out, const unsigned char* data, size_t datasize) -{ +static unsigned deflateNoCompression(ucvector* out, const unsigned char* data, size_t datasize) { /*non compressed deflate block data: 1 bit BFINAL,2 bits BTYPE,(5 bits): it jumps to start of next byte, 2 bytes LEN, 2 bytes NLEN, LEN bytes literal DATA*/ size_t i, j, numdeflateblocks = (datasize + 65534) / 65535; unsigned datapos = 0; - for(i = 0; i != numdeflateblocks; ++i) - { + for(i = 0; i != numdeflateblocks; ++i) { unsigned BFINAL, BTYPE, LEN, NLEN; unsigned char firstbyte; @@ -1678,8 +1499,7 @@ static unsigned deflateNoCompression(ucvector* out, const unsigned char* data, s ucvector_push_back(out, (unsigned char)(NLEN >> 8)); /*Decompressed data*/ - for(j = 0; j < 65535 && datapos < datasize; ++j) - { + for(j = 0; j < 65535 && datapos < datasize; ++j) { ucvector_push_back(out, data[datapos++]); } } @@ -1693,15 +1513,12 @@ tree_ll: the tree for lit and len codes. tree_d: the tree for distance codes. */ static void writeLZ77data(size_t* bp, ucvector* out, const uivector* lz77_encoded, - const HuffmanTree* tree_ll, const HuffmanTree* tree_d) -{ + const HuffmanTree* tree_ll, const HuffmanTree* tree_d) { size_t i = 0; - for(i = 0; i != lz77_encoded->size; ++i) - { + for(i = 0; i != lz77_encoded->size; ++i) { unsigned val = lz77_encoded->data[i]; addHuffmanSymbol(bp, out, HuffmanTree_getCode(tree_ll, val), HuffmanTree_getLength(tree_ll, val)); - if(val > 256) /*for a length code, 3 more things have to be added*/ - { + if(val > 256) /*for a length code, 3 more things have to be added*/ { unsigned length_index = val - FIRST_LENGTH_CODE_INDEX; unsigned n_length_extra_bits = LENGTHEXTRA[length_index]; unsigned length_extra_bits = lz77_encoded->data[++i]; @@ -1723,8 +1540,7 @@ static void writeLZ77data(size_t* bp, ucvector* out, const uivector* lz77_encode /*Deflate for a block of type "dynamic", that is, with freely, optimally, created huffman trees*/ static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash, const unsigned char* data, size_t datapos, size_t dataend, - const LodePNGCompressSettings* settings, unsigned final) -{ + const LodePNGCompressSettings* settings, unsigned final) { unsigned error = 0; /* @@ -1778,16 +1594,12 @@ static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash, /*This while loop never loops due to a break at the end, it is here to allow breaking out of it to the cleanup phase on error conditions.*/ - while(!error) - { - if(settings->use_lz77) - { + while(!error) { + if(settings->use_lz77) { error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize, settings->minmatch, settings->nicematch, settings->lazymatching); if(error) break; - } - else - { + } else { if(!uivector_resize(&lz77_encoded, datasize)) ERROR_BREAK(83 /*alloc fail*/); for(i = datapos; i < dataend; ++i) lz77_encoded.data[i - datapos] = data[i]; /*no LZ77, but still will be Huffman compressed*/ } @@ -1796,12 +1608,10 @@ static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash, if(!uivector_resizev(&frequencies_d, 30, 0)) ERROR_BREAK(83 /*alloc fail*/); /*Count the frequencies of lit, len and dist codes*/ - for(i = 0; i != lz77_encoded.size; ++i) - { + for(i = 0; i != lz77_encoded.size; ++i) { unsigned symbol = lz77_encoded.data[i]; ++frequencies_ll.data[symbol]; - if(symbol > 256) - { + if(symbol > 256) { unsigned dist = lz77_encoded.data[i + 2]; ++frequencies_d.data[dist]; i += 3; @@ -1824,47 +1634,36 @@ static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash, /*run-length compress bitlen_ldd into bitlen_lld_e by using repeat codes 16 (copy length 3-6 times), 17 (3-10 zeroes), 18 (11-138 zeroes)*/ - for(i = 0; i != (unsigned)bitlen_lld.size; ++i) - { + for(i = 0; i != (unsigned)bitlen_lld.size; ++i) { unsigned j = 0; /*amount of repititions*/ while(i + j + 1 < (unsigned)bitlen_lld.size && bitlen_lld.data[i + j + 1] == bitlen_lld.data[i]) ++j; - if(bitlen_lld.data[i] == 0 && j >= 2) /*repeat code for zeroes*/ - { + if(bitlen_lld.data[i] == 0 && j >= 2) /*repeat code for zeroes*/ { ++j; /*include the first zero*/ - if(j <= 10) /*repeat code 17 supports max 10 zeroes*/ - { + if(j <= 10) /*repeat code 17 supports max 10 zeroes*/ { uivector_push_back(&bitlen_lld_e, 17); uivector_push_back(&bitlen_lld_e, j - 3); - } - else /*repeat code 18 supports max 138 zeroes*/ - { + } else /*repeat code 18 supports max 138 zeroes*/ { if(j > 138) j = 138; uivector_push_back(&bitlen_lld_e, 18); uivector_push_back(&bitlen_lld_e, j - 11); } i += (j - 1); - } - else if(j >= 3) /*repeat code for value other than zero*/ - { + } else if(j >= 3) /*repeat code for value other than zero*/ { size_t k; unsigned num = j / 6, rest = j % 6; uivector_push_back(&bitlen_lld_e, bitlen_lld.data[i]); - for(k = 0; k < num; ++k) - { + for(k = 0; k < num; ++k) { uivector_push_back(&bitlen_lld_e, 16); uivector_push_back(&bitlen_lld_e, 6 - 3); } - if(rest >= 3) - { + if(rest >= 3) { uivector_push_back(&bitlen_lld_e, 16); uivector_push_back(&bitlen_lld_e, rest - 3); } else j -= rest; i += j; - } - else /*too short to benefit from repeat code*/ - { + } else /*too short to benefit from repeat code*/ { uivector_push_back(&bitlen_lld_e, bitlen_lld.data[i]); } } @@ -1872,8 +1671,7 @@ static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash, /*generate tree_cl, the huffmantree of huffmantrees*/ if(!uivector_resizev(&frequencies_cl, NUM_CODE_LENGTH_CODES, 0)) ERROR_BREAK(83 /*alloc fail*/); - for(i = 0; i != bitlen_lld_e.size; ++i) - { + for(i = 0; i != bitlen_lld_e.size; ++i) { ++frequencies_cl.data[bitlen_lld_e.data[i]]; /*after a repeat code come the bits that specify the number of repetitions, those don't need to be in the frequencies_cl calculation*/ @@ -1885,13 +1683,11 @@ static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash, if(error) break; if(!uivector_resize(&bitlen_cl, tree_cl.numcodes)) ERROR_BREAK(83 /*alloc fail*/); - for(i = 0; i != tree_cl.numcodes; ++i) - { + for(i = 0; i != tree_cl.numcodes; ++i) { /*lenghts of code length tree is in the order as specified by deflate*/ bitlen_cl.data[i] = HuffmanTree_getLength(&tree_cl, CLCL_ORDER[i]); } - while(bitlen_cl.data[bitlen_cl.size - 1] == 0 && bitlen_cl.size > 4) - { + while(bitlen_cl.data[bitlen_cl.size - 1] == 0 && bitlen_cl.size > 4) { /*remove zeros at the end, but minimum size must be 4*/ if(!uivector_resize(&bitlen_cl, bitlen_cl.size - 1)) ERROR_BREAK(83 /*alloc fail*/); } @@ -1930,8 +1726,7 @@ static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash, for(i = 0; i != HCLEN + 4; ++i) addBitsToStream(bp, out, bitlen_cl.data[i], 3); /*write the lenghts of the lit/len AND the dist alphabet*/ - for(i = 0; i != bitlen_lld_e.size; ++i) - { + for(i = 0; i != bitlen_lld_e.size; ++i) { addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_cl, bitlen_lld_e.data[i]), HuffmanTree_getLength(&tree_cl, bitlen_lld_e.data[i])); /*extra bits of repeat codes*/ @@ -1969,8 +1764,7 @@ static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash, static unsigned deflateFixed(ucvector* out, size_t* bp, Hash* hash, const unsigned char* data, size_t datapos, size_t dataend, - const LodePNGCompressSettings* settings, unsigned final) -{ + const LodePNGCompressSettings* settings, unsigned final) { HuffmanTree tree_ll; /*tree for literal values and length codes*/ HuffmanTree tree_d; /*tree for distance codes*/ @@ -1988,19 +1782,15 @@ static unsigned deflateFixed(ucvector* out, size_t* bp, Hash* hash, addBitToStream(bp, out, 1); /*first bit of BTYPE*/ addBitToStream(bp, out, 0); /*second bit of BTYPE*/ - if(settings->use_lz77) /*LZ77 encoded*/ - { + if(settings->use_lz77) /*LZ77 encoded*/ { uivector lz77_encoded; uivector_init(&lz77_encoded); error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize, settings->minmatch, settings->nicematch, settings->lazymatching); if(!error) writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d); uivector_cleanup(&lz77_encoded); - } - else /*no LZ77, but still will be Huffman compressed*/ - { - for(i = datapos; i < dataend; ++i) - { + } else /*no LZ77, but still will be Huffman compressed*/ { + for(i = datapos; i < dataend; ++i) { addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, data[i]), HuffmanTree_getLength(&tree_ll, data[i])); } } @@ -2015,8 +1805,7 @@ static unsigned deflateFixed(ucvector* out, size_t* bp, Hash* hash, } static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t insize, - const LodePNGCompressSettings* settings) -{ + const LodePNGCompressSettings* settings) { unsigned error = 0; size_t i, blocksize, numdeflateblocks; size_t bp = 0; /*the bit pointer*/ @@ -2025,8 +1814,7 @@ static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t if(settings->btype > 2) return 61; else if(settings->btype == 0) return deflateNoCompression(out, in, insize); else if(settings->btype == 1) blocksize = insize; - else /*if(settings->btype == 2)*/ - { + else /*if(settings->btype == 2)*/ { /*on PNGs, deflate blocks of 65-262k seem to give most dense encoding*/ blocksize = insize / 8 + 8; if(blocksize < 65536) blocksize = 65536; @@ -2039,8 +1827,7 @@ static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t error = hash_init(&hash, settings->windowsize); if(error) return error; - for(i = 0; i != numdeflateblocks && !error; ++i) - { + for(i = 0; i != numdeflateblocks && !error; ++i) { unsigned final = (i == numdeflateblocks - 1); size_t start = i * blocksize; size_t end = start + blocksize; @@ -2057,8 +1844,7 @@ static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t unsigned lodepng_deflate(unsigned char** out, size_t* outsize, const unsigned char* in, size_t insize, - const LodePNGCompressSettings* settings) -{ + const LodePNGCompressSettings* settings) { unsigned error; ucvector v; ucvector_init_buffer(&v, *out, *outsize); @@ -2070,14 +1856,10 @@ unsigned lodepng_deflate(unsigned char** out, size_t* outsize, static unsigned deflate(unsigned char** out, size_t* outsize, const unsigned char* in, size_t insize, - const LodePNGCompressSettings* settings) -{ - if(settings->custom_deflate) - { + const LodePNGCompressSettings* settings) { + if(settings->custom_deflate) { return settings->custom_deflate(out, outsize, in, insize, settings); - } - else - { + } else { return lodepng_deflate(out, outsize, in, insize, settings); } } @@ -2088,18 +1870,15 @@ static unsigned deflate(unsigned char** out, size_t* outsize, /* / Adler32 */ /* ////////////////////////////////////////////////////////////////////////// */ -static unsigned update_adler32(unsigned adler, const unsigned char* data, unsigned len) -{ - unsigned s1 = adler & 0xffff; - unsigned s2 = (adler >> 16) & 0xffff; +static unsigned update_adler32(unsigned adler, const unsigned char* data, unsigned len) { + unsigned s1 = adler & 0xffff; + unsigned s2 = (adler >> 16) & 0xffff; - while(len > 0) - { - /*at least 5550 sums can be done before the sums overflow, saving a lot of module divisions*/ - unsigned amount = len > 5550 ? 5550 : len; + while(len > 0) { + /*at least 5552 sums can be done before the sums overflow, saving a lot of module divisions*/ + unsigned amount = len > 5552 ? 5552 : len; len -= amount; - while(amount > 0) - { + while(amount > 0) { s1 += (*data++); s2 += s1; --amount; @@ -2112,8 +1891,7 @@ static unsigned update_adler32(unsigned adler, const unsigned char* data, unsign } /*Return the adler32 of the bytes data[0..len-1]*/ -static unsigned adler32(const unsigned char* data, unsigned len) -{ +static unsigned adler32(const unsigned char* data, unsigned len) { return update_adler32(1L, data, len); } @@ -2124,15 +1902,13 @@ static unsigned adler32(const unsigned char* data, unsigned len) #ifdef LODEPNG_COMPILE_DECODER unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGDecompressSettings* settings) -{ + size_t insize, const LodePNGDecompressSettings* settings) { unsigned error = 0; unsigned CM, CINFO, FDICT; if(insize < 2) return 53; /*error, size of zlib data too small*/ /*read information from zlib header*/ - if((in[0] * 256 + in[1]) % 31 != 0) - { + if((in[0] * 256 + in[1]) % 31 != 0) { /*error: 256 * in[0] + in[1] must be a multiple of 31, the FCHECK value is supposed to be made that way*/ return 24; } @@ -2143,13 +1919,11 @@ unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, const uns FDICT = (in[1] >> 5) & 1; /*FLEVEL = (in[1] >> 6) & 3;*/ /*FLEVEL is not used here*/ - if(CM != 8 || CINFO > 7) - { + if(CM != 8 || CINFO > 7) { /*error: only compression method 8: inflate with sliding window of 32k is supported by the PNG spec*/ return 25; } - if(FDICT != 0) - { + if(FDICT != 0) { /*error: the specification of PNG says about the zlib stream: "The additional flags shall not specify a preset dictionary."*/ return 26; @@ -2158,8 +1932,7 @@ unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, const uns error = inflate(out, outsize, in + 2, insize - 2, settings); if(error) return error; - if(!settings->ignore_adler32) - { + if(!settings->ignore_adler32) { unsigned ADLER32 = lodepng_read32bitInt(&in[insize - 4]); unsigned checksum = adler32(*out, (unsigned)(*outsize)); if(checksum != ADLER32) return 58; /*error, adler checksum not correct, data must be corrupted*/ @@ -2169,14 +1942,10 @@ unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, const uns } static unsigned zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGDecompressSettings* settings) -{ - if(settings->custom_zlib) - { + size_t insize, const LodePNGDecompressSettings* settings) { + if(settings->custom_zlib) { return settings->custom_zlib(out, outsize, in, insize, settings); - } - else - { + } else { return lodepng_zlib_decompress(out, outsize, in, insize, settings); } } @@ -2186,8 +1955,7 @@ static unsigned zlib_decompress(unsigned char** out, size_t* outsize, const unsi #ifdef LODEPNG_COMPILE_ENCODER unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGCompressSettings* settings) -{ + size_t insize, const LodePNGCompressSettings* settings) { /*initially, *out must be NULL and outsize 0, if you just give some random *out that's pointing to a non allocated buffer, this'll crash*/ ucvector outv; @@ -2212,8 +1980,7 @@ unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, const unsig error = deflate(&deflatedata, &deflatesize, in, insize, settings); - if(!error) - { + if(!error) { unsigned ADLER32 = adler32(in, (unsigned)insize); for(i = 0; i != deflatesize; ++i) ucvector_push_back(&outv, deflatedata[i]); lodepng_free(deflatedata); @@ -2228,14 +1995,10 @@ unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, const unsig /* compress using the default or custom zlib function */ static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGCompressSettings* settings) -{ - if(settings->custom_zlib) - { + size_t insize, const LodePNGCompressSettings* settings) { + if(settings->custom_zlib) { return settings->custom_zlib(out, outsize, in, insize, settings); - } - else - { + } else { return lodepng_zlib_compress(out, outsize, in, insize, settings); } } @@ -2246,16 +2009,14 @@ static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsign #ifdef LODEPNG_COMPILE_DECODER static unsigned zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGDecompressSettings* settings) -{ + size_t insize, const LodePNGDecompressSettings* settings) { if(!settings->custom_zlib) return 87; /*no custom zlib function provided */ return settings->custom_zlib(out, outsize, in, insize, settings); } #endif /*LODEPNG_COMPILE_DECODER*/ #ifdef LODEPNG_COMPILE_ENCODER static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGCompressSettings* settings) -{ + size_t insize, const LodePNGCompressSettings* settings) { if(!settings->custom_zlib) return 87; /*no custom zlib function provided */ return settings->custom_zlib(out, outsize, in, insize, settings); } @@ -2270,8 +2031,7 @@ static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsign /*this is a good tradeoff between speed and compression ratio*/ #define DEFAULT_WINDOWSIZE 2048 -void lodepng_compress_settings_init(LodePNGCompressSettings* settings) -{ +void lodepng_compress_settings_init(LodePNGCompressSettings* settings) { /*compress with dynamic huffman tree (not in the mathematical sense, just not the predefined one)*/ settings->btype = 2; settings->use_lz77 = 1; @@ -2292,8 +2052,7 @@ const LodePNGCompressSettings lodepng_default_compress_settings = {2, 1, DEFAULT #ifdef LODEPNG_COMPILE_DECODER -void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings) -{ +void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings) { settings->ignore_adler32 = 0; settings->custom_zlib = 0; @@ -2356,12 +2115,10 @@ static unsigned lodepng_crc32_table[256] = { }; /*Return the CRC of the bytes buf[0..len-1].*/ -unsigned lodepng_crc32(const unsigned char* data, size_t length) -{ +unsigned lodepng_crc32(const unsigned char* data, size_t length) { unsigned r = 0xffffffffu; size_t i; - for(i = 0; i < length; ++i) - { + for(i = 0; i < length; ++i) { r = lodepng_crc32_table[(r ^ data[i]) & 0xff] ^ (r >> 8); } return r ^ 0xffffffffu; @@ -2374,30 +2131,26 @@ unsigned lodepng_crc32(const unsigned char* data, size_t length); /* / Reading and writing single bits and bytes from/to stream for LodePNG / */ /* ////////////////////////////////////////////////////////////////////////// */ -static unsigned char readBitFromReversedStream(size_t* bitpointer, const unsigned char* bitstream) -{ +static unsigned char readBitFromReversedStream(size_t* bitpointer, const unsigned char* bitstream) { unsigned char result = (unsigned char)((bitstream[(*bitpointer) >> 3] >> (7 - ((*bitpointer) & 0x7))) & 1); ++(*bitpointer); return result; } -static unsigned readBitsFromReversedStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits) -{ +static unsigned readBitsFromReversedStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits) { unsigned result = 0; size_t i; - for(i = nbits - 1; i < nbits; --i) - { - result += (unsigned)readBitFromReversedStream(bitpointer, bitstream) << i; + for(i = 0 ; i < nbits; ++i) { + result <<= 1; + result |= (unsigned)readBitFromReversedStream(bitpointer, bitstream); } return result; } #ifdef LODEPNG_COMPILE_DECODER -static void setBitOfReversedStream0(size_t* bitpointer, unsigned char* bitstream, unsigned char bit) -{ +static void setBitOfReversedStream0(size_t* bitpointer, unsigned char* bitstream, unsigned char bit) { /*the current bit in bitstream must be 0 for this to work*/ - if(bit) - { + if(bit) { /*earlier bit of huffman code is in a lesser significant bit of an earlier byte*/ bitstream[(*bitpointer) >> 3] |= (bit << (7 - ((*bitpointer) & 0x7))); } @@ -2405,8 +2158,7 @@ static void setBitOfReversedStream0(size_t* bitpointer, unsigned char* bitstream } #endif /*LODEPNG_COMPILE_DECODER*/ -static void setBitOfReversedStream(size_t* bitpointer, unsigned char* bitstream, unsigned char bit) -{ +static void setBitOfReversedStream(size_t* bitpointer, unsigned char* bitstream, unsigned char bit) { /*the current bit in bitstream may be 0 or 1 for this to work*/ if(bit == 0) bitstream[(*bitpointer) >> 3] &= (unsigned char)(~(1 << (7 - ((*bitpointer) & 0x7)))); else bitstream[(*bitpointer) >> 3] |= (1 << (7 - ((*bitpointer) & 0x7))); @@ -2417,51 +2169,42 @@ static void setBitOfReversedStream(size_t* bitpointer, unsigned char* bitstream, /* / PNG chunks / */ /* ////////////////////////////////////////////////////////////////////////// */ -unsigned lodepng_chunk_length(const unsigned char* chunk) -{ +unsigned lodepng_chunk_length(const unsigned char* chunk) { return lodepng_read32bitInt(&chunk[0]); } -void lodepng_chunk_type(char type[5], const unsigned char* chunk) -{ +void lodepng_chunk_type(char type[5], const unsigned char* chunk) { unsigned i; for(i = 0; i != 4; ++i) type[i] = (char)chunk[4 + i]; type[4] = 0; /*null termination char*/ } -unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type) -{ +unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type) { if(strlen(type) != 4) return 0; return (chunk[4] == type[0] && chunk[5] == type[1] && chunk[6] == type[2] && chunk[7] == type[3]); } -unsigned char lodepng_chunk_ancillary(const unsigned char* chunk) -{ +unsigned char lodepng_chunk_ancillary(const unsigned char* chunk) { return((chunk[4] & 32) != 0); } -unsigned char lodepng_chunk_private(const unsigned char* chunk) -{ +unsigned char lodepng_chunk_private(const unsigned char* chunk) { return((chunk[6] & 32) != 0); } -unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk) -{ +unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk) { return((chunk[7] & 32) != 0); } -unsigned char* lodepng_chunk_data(unsigned char* chunk) -{ +unsigned char* lodepng_chunk_data(unsigned char* chunk) { return &chunk[8]; } -const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk) -{ +const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk) { return &chunk[8]; } -unsigned lodepng_chunk_check_crc(const unsigned char* chunk) -{ +unsigned lodepng_chunk_check_crc(const unsigned char* chunk) { unsigned length = lodepng_chunk_length(chunk); unsigned CRC = lodepng_read32bitInt(&chunk[length + 8]); /*the CRC is taken of the data and the 4 chunk type letters, not the length*/ @@ -2470,27 +2213,51 @@ unsigned lodepng_chunk_check_crc(const unsigned char* chunk) else return 0; } -void lodepng_chunk_generate_crc(unsigned char* chunk) -{ +void lodepng_chunk_generate_crc(unsigned char* chunk) { unsigned length = lodepng_chunk_length(chunk); unsigned CRC = lodepng_crc32(&chunk[4], length + 4); lodepng_set32bitInt(chunk + 8 + length, CRC); } -unsigned char* lodepng_chunk_next(unsigned char* chunk) -{ - unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; - return &chunk[total_chunk_length]; +unsigned char* lodepng_chunk_next(unsigned char* chunk) { + if(chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && chunk[3] == 0x47 + && chunk[4] == 0x0d && chunk[5] == 0x0a && chunk[6] == 0x1a && chunk[7] == 0x0a) { + /* Is PNG magic header at start of PNG file. Jump to first actual chunk. */ + return chunk + 8; + } else { + unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; + return chunk + total_chunk_length; + } } -const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk) -{ - unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; - return &chunk[total_chunk_length]; +const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk) { + if(chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && chunk[3] == 0x47 + && chunk[4] == 0x0d && chunk[5] == 0x0a && chunk[6] == 0x1a && chunk[7] == 0x0a) { + /* Is PNG magic header at start of PNG file. Jump to first actual chunk. */ + return chunk + 8; + } else { + unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; + return chunk + total_chunk_length; + } } -unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk) -{ +unsigned char* lodepng_chunk_find(unsigned char* chunk, const unsigned char* end, const char type[5]) { + for(;;) { + if(chunk + 12 >= end) return 0; + if(lodepng_chunk_type_equals(chunk, type)) return chunk; + chunk = lodepng_chunk_next(chunk); + } +} + +const unsigned char* lodepng_chunk_find_const(const unsigned char* chunk, const unsigned char* end, const char type[5]) { + for(;;) { + if(chunk + 12 >= end) return 0; + if(lodepng_chunk_type_equals(chunk, type)) return chunk; + chunk = lodepng_chunk_next_const(chunk); + } +} + +unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk) { unsigned i; unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; unsigned char *chunk_start, *new_buffer; @@ -2509,8 +2276,7 @@ unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsi } unsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned length, - const char* type, const unsigned char* data) -{ + const char* type, const unsigned char* data) { unsigned i; unsigned char *chunk, *new_buffer; size_t new_length = (*outlength) + length + 12; @@ -2544,43 +2310,37 @@ unsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned l /* ////////////////////////////////////////////////////////////////////////// */ /*return type is a LodePNG error code*/ -static unsigned checkColorValidity(LodePNGColorType colortype, unsigned bd) /*bd = bitdepth*/ -{ - switch(colortype) - { - case 0: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8 || bd == 16)) return 37; break; /*grey*/ +static unsigned checkColorValidity(LodePNGColorType colortype, unsigned bd) /*bd = bitdepth*/ { + switch(colortype) { + case 0: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8 || bd == 16)) return 37; break; /*gray*/ case 2: if(!( bd == 8 || bd == 16)) return 37; break; /*RGB*/ case 3: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8 )) return 37; break; /*palette*/ - case 4: if(!( bd == 8 || bd == 16)) return 37; break; /*grey + alpha*/ + case 4: if(!( bd == 8 || bd == 16)) return 37; break; /*gray + alpha*/ case 6: if(!( bd == 8 || bd == 16)) return 37; break; /*RGBA*/ default: return 31; } return 0; /*allowed color type / bits combination*/ } -static unsigned getNumColorChannels(LodePNGColorType colortype) -{ - switch(colortype) - { - case 0: return 1; /*grey*/ +static unsigned getNumColorChannels(LodePNGColorType colortype) { + switch(colortype) { + case 0: return 1; /*gray*/ case 2: return 3; /*RGB*/ case 3: return 1; /*palette*/ - case 4: return 2; /*grey + alpha*/ + case 4: return 2; /*gray + alpha*/ case 6: return 4; /*RGBA*/ } return 0; /*unexisting color type*/ } -static unsigned lodepng_get_bpp_lct(LodePNGColorType colortype, unsigned bitdepth) -{ +static unsigned lodepng_get_bpp_lct(LodePNGColorType colortype, unsigned bitdepth) { /*bits per pixel is amount of channels * bits per channel*/ return getNumColorChannels(colortype) * bitdepth; } /* ////////////////////////////////////////////////////////////////////////// */ -void lodepng_color_mode_init(LodePNGColorMode* info) -{ +void lodepng_color_mode_init(LodePNGColorMode* info) { info->key_defined = 0; info->key_r = info->key_g = info->key_b = 0; info->colortype = LCT_RGBA; @@ -2589,18 +2349,15 @@ void lodepng_color_mode_init(LodePNGColorMode* info) info->palettesize = 0; } -void lodepng_color_mode_cleanup(LodePNGColorMode* info) -{ +void lodepng_color_mode_cleanup(LodePNGColorMode* info) { lodepng_palette_clear(info); } -unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source) -{ +unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source) { size_t i; lodepng_color_mode_cleanup(dest); *dest = *source; - if(source->palette) - { + if(source->palette) { dest->palette = (unsigned char*)lodepng_malloc(1024); if(!dest->palette && source->palettesize) return 83; /*alloc fail*/ for(i = 0; i != source->palettesize * 4; ++i) dest->palette[i] = source->palette[i]; @@ -2608,46 +2365,43 @@ unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* return 0; } -static int lodepng_color_mode_equal(const LodePNGColorMode* a, const LodePNGColorMode* b) -{ +LodePNGColorMode lodepng_color_mode_make(LodePNGColorType colortype, unsigned bitdepth) { + LodePNGColorMode result; + lodepng_color_mode_init(&result); + result.colortype = colortype; + result.bitdepth = bitdepth; + return result; +} + +static int lodepng_color_mode_equal(const LodePNGColorMode* a, const LodePNGColorMode* b) { size_t i; if(a->colortype != b->colortype) return 0; if(a->bitdepth != b->bitdepth) return 0; if(a->key_defined != b->key_defined) return 0; - if(a->key_defined) - { + if(a->key_defined) { if(a->key_r != b->key_r) return 0; if(a->key_g != b->key_g) return 0; if(a->key_b != b->key_b) return 0; } - /*if one of the palette sizes is 0, then we consider it to be the same as the - other: it means that e.g. the palette was not given by the user and should be - considered the same as the palette inside the PNG.*/ - if(1/*a->palettesize != 0 && b->palettesize != 0*/) { - if(a->palettesize != b->palettesize) return 0; - for(i = 0; i != a->palettesize * 4; ++i) - { - if(a->palette[i] != b->palette[i]) return 0; - } + if(a->palettesize != b->palettesize) return 0; + for(i = 0; i != a->palettesize * 4; ++i) { + if(a->palette[i] != b->palette[i]) return 0; } return 1; } -void lodepng_palette_clear(LodePNGColorMode* info) -{ +void lodepng_palette_clear(LodePNGColorMode* info) { if(info->palette) lodepng_free(info->palette); info->palette = 0; info->palettesize = 0; } unsigned lodepng_palette_add(LodePNGColorMode* info, - unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ + unsigned char r, unsigned char g, unsigned char b, unsigned char a) { unsigned char* data; /*the same resize technique as C++ std::vectors is used, and here it's made so that for a palette with the max of 256 colors, it'll have the exact alloc size*/ - if(!info->palette) /*allocate palette if empty*/ - { + if(!info->palette) /*allocate palette if empty*/ { /*room for 256 colors with 4 bytes each*/ data = (unsigned char*)lodepng_realloc(info->palette, 1024); if(!data) return 83; /*alloc fail*/ @@ -2661,108 +2415,132 @@ unsigned lodepng_palette_add(LodePNGColorMode* info, return 0; } -unsigned lodepng_get_bpp(const LodePNGColorMode* info) -{ - /*calculate bits per pixel out of colortype and bitdepth*/ +/*calculate bits per pixel out of colortype and bitdepth*/ +unsigned lodepng_get_bpp(const LodePNGColorMode* info) { return lodepng_get_bpp_lct(info->colortype, info->bitdepth); } -unsigned lodepng_get_channels(const LodePNGColorMode* info) -{ +unsigned lodepng_get_channels(const LodePNGColorMode* info) { return getNumColorChannels(info->colortype); } -unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info) -{ +unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info) { return info->colortype == LCT_GREY || info->colortype == LCT_GREY_ALPHA; } -unsigned lodepng_is_alpha_type(const LodePNGColorMode* info) -{ +unsigned lodepng_is_alpha_type(const LodePNGColorMode* info) { return (info->colortype & 4) != 0; /*4 or 6*/ } -unsigned lodepng_is_palette_type(const LodePNGColorMode* info) -{ +unsigned lodepng_is_palette_type(const LodePNGColorMode* info) { return info->colortype == LCT_PALETTE; } -unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info) -{ +unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info) { size_t i; - for(i = 0; i != info->palettesize; ++i) - { + for(i = 0; i != info->palettesize; ++i) { if(info->palette[i * 4 + 3] < 255) return 1; } return 0; } -unsigned lodepng_can_have_alpha(const LodePNGColorMode* info) -{ +unsigned lodepng_can_have_alpha(const LodePNGColorMode* info) { return info->key_defined || lodepng_is_alpha_type(info) || lodepng_has_palette_alpha(info); } -size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color) -{ - /*will not overflow for any color type if roughly w * h < 268435455*/ - size_t bpp = lodepng_get_bpp(color); - size_t n = w * h; +size_t lodepng_get_raw_size_lct(unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) { + size_t bpp = lodepng_get_bpp_lct(colortype, bitdepth); + size_t n = (size_t)w * (size_t)h; return ((n / 8) * bpp) + ((n & 7) * bpp + 7) / 8; } -size_t lodepng_get_raw_size_lct(unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) -{ - /*will not overflow for any color type if roughly w * h < 268435455*/ - size_t bpp = lodepng_get_bpp_lct(colortype, bitdepth); - size_t n = w * h; - return ((n / 8) * bpp) + ((n & 7) * bpp + 7) / 8; +size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color) { + return lodepng_get_raw_size_lct(w, h, color->colortype, color->bitdepth); } #ifdef LODEPNG_COMPILE_PNG #ifdef LODEPNG_COMPILE_DECODER -/*in an idat chunk, each scanline is a multiple of 8 bits, unlike the lodepng output buffer*/ -static size_t lodepng_get_raw_size_idat(unsigned w, unsigned h, const LodePNGColorMode* color) -{ - /*will not overflow for any color type if roughly w * h < 268435455*/ + +/*in an idat chunk, each scanline is a multiple of 8 bits, unlike the lodepng output buffer, +and in addition has one extra byte per line: the filter byte. So this gives a larger +result than lodepng_get_raw_size. */ +static size_t lodepng_get_raw_size_idat(unsigned w, unsigned h, const LodePNGColorMode* color) { size_t bpp = lodepng_get_bpp(color); - size_t line = ((w / 8) * bpp) + ((w & 7) * bpp + 7) / 8; - return h * line; + /* + 1 for the filter byte, and possibly plus padding bits per line */ + size_t line = ((size_t)(w / 8) * bpp) + 1 + ((w & 7) * bpp + 7) / 8; + return (size_t)h * line; +} + +/* Safely check if multiplying two integers will overflow (no undefined +behavior, compiler removing the code, etc...) and output result. */ +static int lodepng_mulofl(size_t a, size_t b, size_t* result) { + *result = a * b; /* Unsigned multiplication is well defined and safe in C90 */ + return (a != 0 && *result / a != b); +} + +/* Safely check if adding two integers will overflow (no undefined +behavior, compiler removing the code, etc...) and output result. */ +static int lodepng_addofl(size_t a, size_t b, size_t* result) { + *result = a + b; /* Unsigned addition is well defined and safe in C90 */ + return *result < a; +} + +/*Safely checks whether size_t overflow can be caused due to amount of pixels. +This check is overcautious rather than precise. If this check indicates no overflow, +you can safely compute in a size_t (but not an unsigned): +-(size_t)w * (size_t)h * 8 +-amount of bytes in IDAT (including filter, padding and Adam7 bytes) +-amount of bytes in raw color model +Returns 1 if overflow possible, 0 if not. +*/ +static int lodepng_pixel_overflow(unsigned w, unsigned h, + const LodePNGColorMode* pngcolor, const LodePNGColorMode* rawcolor) { + size_t bpp = LODEPNG_MAX(lodepng_get_bpp(pngcolor), lodepng_get_bpp(rawcolor)); + size_t numpixels, total; + size_t line; /* bytes per line in worst case */ + + if(lodepng_mulofl((size_t)w, (size_t)h, &numpixels)) return 1; + if(lodepng_mulofl(numpixels, 8, &total)) return 1; /* bit pointer with 8-bit color, or 8 bytes per channel color */ + + /* Bytes per scanline with the expression "(w / 8) * bpp) + ((w & 7) * bpp + 7) / 8" */ + if(lodepng_mulofl((size_t)(w / 8), bpp, &line)) return 1; + if(lodepng_addofl(line, ((w & 7) * bpp + 7) / 8, &line)) return 1; + + if(lodepng_addofl(line, 5, &line)) return 1; /* 5 bytes overhead per line: 1 filterbyte, 4 for Adam7 worst case */ + if(lodepng_mulofl(line, h, &total)) return 1; /* Total bytes in worst case */ + + return 0; /* no overflow */ } #endif /*LODEPNG_COMPILE_DECODER*/ #endif /*LODEPNG_COMPILE_PNG*/ #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -static void LodePNGUnknownChunks_init(LodePNGInfo* info) -{ +static void LodePNGUnknownChunks_init(LodePNGInfo* info) { unsigned i; for(i = 0; i != 3; ++i) info->unknown_chunks_data[i] = 0; for(i = 0; i != 3; ++i) info->unknown_chunks_size[i] = 0; } -static void LodePNGUnknownChunks_cleanup(LodePNGInfo* info) -{ +static void LodePNGUnknownChunks_cleanup(LodePNGInfo* info) { unsigned i; for(i = 0; i != 3; ++i) lodepng_free(info->unknown_chunks_data[i]); } -static unsigned LodePNGUnknownChunks_copy(LodePNGInfo* dest, const LodePNGInfo* src) -{ +static unsigned LodePNGUnknownChunks_copy(LodePNGInfo* dest, const LodePNGInfo* src) { unsigned i; LodePNGUnknownChunks_cleanup(dest); - for(i = 0; i != 3; ++i) - { + for(i = 0; i != 3; ++i) { size_t j; dest->unknown_chunks_size[i] = src->unknown_chunks_size[i]; dest->unknown_chunks_data[i] = (unsigned char*)lodepng_malloc(src->unknown_chunks_size[i]); if(!dest->unknown_chunks_data[i] && dest->unknown_chunks_size[i]) return 83; /*alloc fail*/ - for(j = 0; j < src->unknown_chunks_size[i]; ++j) - { + for(j = 0; j < src->unknown_chunks_size[i]; ++j) { dest->unknown_chunks_data[i][j] = src->unknown_chunks_data[i][j]; } } @@ -2772,18 +2550,15 @@ static unsigned LodePNGUnknownChunks_copy(LodePNGInfo* dest, const LodePNGInfo* /******************************************************************************/ -static void LodePNGText_init(LodePNGInfo* info) -{ +static void LodePNGText_init(LodePNGInfo* info) { info->text_num = 0; info->text_keys = NULL; info->text_strings = NULL; } -static void LodePNGText_cleanup(LodePNGInfo* info) -{ +static void LodePNGText_cleanup(LodePNGInfo* info) { size_t i; - for(i = 0; i != info->text_num; ++i) - { + for(i = 0; i != info->text_num; ++i) { string_cleanup(&info->text_keys[i]); string_cleanup(&info->text_strings[i]); } @@ -2791,30 +2566,25 @@ static void LodePNGText_cleanup(LodePNGInfo* info) lodepng_free(info->text_strings); } -static unsigned LodePNGText_copy(LodePNGInfo* dest, const LodePNGInfo* source) -{ +static unsigned LodePNGText_copy(LodePNGInfo* dest, const LodePNGInfo* source) { size_t i = 0; dest->text_keys = 0; dest->text_strings = 0; dest->text_num = 0; - for(i = 0; i != source->text_num; ++i) - { + for(i = 0; i != source->text_num; ++i) { CERROR_TRY_RETURN(lodepng_add_text(dest, source->text_keys[i], source->text_strings[i])); } return 0; } -void lodepng_clear_text(LodePNGInfo* info) -{ +void lodepng_clear_text(LodePNGInfo* info) { LodePNGText_cleanup(info); } -unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str) -{ +unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str) { char** new_keys = (char**)(lodepng_realloc(info->text_keys, sizeof(char*) * (info->text_num + 1))); char** new_strings = (char**)(lodepng_realloc(info->text_strings, sizeof(char*) * (info->text_num + 1))); - if(!new_keys || !new_strings) - { + if(!new_keys || !new_strings) { lodepng_free(new_keys); lodepng_free(new_strings); return 83; /*alloc fail*/ @@ -2824,19 +2594,15 @@ unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str) info->text_keys = new_keys; info->text_strings = new_strings; - string_init(&info->text_keys[info->text_num - 1]); - string_set(&info->text_keys[info->text_num - 1], key); - - string_init(&info->text_strings[info->text_num - 1]); - string_set(&info->text_strings[info->text_num - 1], str); + info->text_keys[info->text_num - 1] = alloc_string(key); + info->text_strings[info->text_num - 1] = alloc_string(str); return 0; } /******************************************************************************/ -static void LodePNGIText_init(LodePNGInfo* info) -{ +static void LodePNGIText_init(LodePNGInfo* info) { info->itext_num = 0; info->itext_keys = NULL; info->itext_langtags = NULL; @@ -2844,11 +2610,9 @@ static void LodePNGIText_init(LodePNGInfo* info) info->itext_strings = NULL; } -static void LodePNGIText_cleanup(LodePNGInfo* info) -{ +static void LodePNGIText_cleanup(LodePNGInfo* info) { size_t i; - for(i = 0; i != info->itext_num; ++i) - { + for(i = 0; i != info->itext_num; ++i) { string_cleanup(&info->itext_keys[i]); string_cleanup(&info->itext_langtags[i]); string_cleanup(&info->itext_transkeys[i]); @@ -2860,36 +2624,31 @@ static void LodePNGIText_cleanup(LodePNGInfo* info) lodepng_free(info->itext_strings); } -static unsigned LodePNGIText_copy(LodePNGInfo* dest, const LodePNGInfo* source) -{ +static unsigned LodePNGIText_copy(LodePNGInfo* dest, const LodePNGInfo* source) { size_t i = 0; dest->itext_keys = 0; dest->itext_langtags = 0; dest->itext_transkeys = 0; dest->itext_strings = 0; dest->itext_num = 0; - for(i = 0; i != source->itext_num; ++i) - { + for(i = 0; i != source->itext_num; ++i) { CERROR_TRY_RETURN(lodepng_add_itext(dest, source->itext_keys[i], source->itext_langtags[i], source->itext_transkeys[i], source->itext_strings[i])); } return 0; } -void lodepng_clear_itext(LodePNGInfo* info) -{ +void lodepng_clear_itext(LodePNGInfo* info) { LodePNGIText_cleanup(info); } unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag, - const char* transkey, const char* str) -{ + const char* transkey, const char* str) { char** new_keys = (char**)(lodepng_realloc(info->itext_keys, sizeof(char*) * (info->itext_num + 1))); char** new_langtags = (char**)(lodepng_realloc(info->itext_langtags, sizeof(char*) * (info->itext_num + 1))); char** new_transkeys = (char**)(lodepng_realloc(info->itext_transkeys, sizeof(char*) * (info->itext_num + 1))); char** new_strings = (char**)(lodepng_realloc(info->itext_strings, sizeof(char*) * (info->itext_num + 1))); - if(!new_keys || !new_langtags || !new_transkeys || !new_strings) - { + if(!new_keys || !new_langtags || !new_transkeys || !new_strings) { lodepng_free(new_keys); lodepng_free(new_langtags); lodepng_free(new_transkeys); @@ -2903,24 +2662,44 @@ unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langt info->itext_transkeys = new_transkeys; info->itext_strings = new_strings; - string_init(&info->itext_keys[info->itext_num - 1]); - string_set(&info->itext_keys[info->itext_num - 1], key); + info->itext_keys[info->itext_num - 1] = alloc_string(key); + info->itext_langtags[info->itext_num - 1] = alloc_string(langtag); + info->itext_transkeys[info->itext_num - 1] = alloc_string(transkey); + info->itext_strings[info->itext_num - 1] = alloc_string(str); - string_init(&info->itext_langtags[info->itext_num - 1]); - string_set(&info->itext_langtags[info->itext_num - 1], langtag); + return 0; +} - string_init(&info->itext_transkeys[info->itext_num - 1]); - string_set(&info->itext_transkeys[info->itext_num - 1], transkey); +/* same as set but does not delete */ +static unsigned lodepng_assign_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size) { + info->iccp_name = alloc_string(name); + info->iccp_profile = (unsigned char*)lodepng_malloc(profile_size); - string_init(&info->itext_strings[info->itext_num - 1]); - string_set(&info->itext_strings[info->itext_num - 1], str); + if(!info->iccp_name || !info->iccp_profile) return 83; /*alloc fail*/ - return 0; + memcpy(info->iccp_profile, profile, profile_size); + info->iccp_profile_size = profile_size; + + return 0; /*ok*/ +} + +unsigned lodepng_set_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size) { + if(info->iccp_name) lodepng_clear_icc(info); + info->iccp_defined = 1; + + return lodepng_assign_icc(info, name, profile, profile_size); +} + +void lodepng_clear_icc(LodePNGInfo* info) { + string_cleanup(&info->iccp_name); + lodepng_free(info->iccp_profile); + info->iccp_profile = NULL; + info->iccp_profile_size = 0; + info->iccp_defined = 0; } #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -void lodepng_info_init(LodePNGInfo* info) -{ +void lodepng_info_init(LodePNGInfo* info) { lodepng_color_mode_init(&info->color); info->interlace_method = 0; info->compression_method = 0; @@ -2935,23 +2714,30 @@ void lodepng_info_init(LodePNGInfo* info) info->time_defined = 0; info->phys_defined = 0; + info->gama_defined = 0; + info->chrm_defined = 0; + info->srgb_defined = 0; + info->iccp_defined = 0; + info->iccp_name = NULL; + info->iccp_profile = NULL; + LodePNGUnknownChunks_init(info); #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ } -void lodepng_info_cleanup(LodePNGInfo* info) -{ +void lodepng_info_cleanup(LodePNGInfo* info) { lodepng_color_mode_cleanup(&info->color); #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS LodePNGText_cleanup(info); LodePNGIText_cleanup(info); + lodepng_clear_icc(info); + LodePNGUnknownChunks_cleanup(info); #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ } -unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source) -{ +unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source) { lodepng_info_cleanup(dest); *dest = *source; lodepng_color_mode_init(&dest->color); @@ -2960,6 +2746,9 @@ unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source) #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS CERROR_TRY_RETURN(LodePNGText_copy(dest, source)); CERROR_TRY_RETURN(LodePNGIText_copy(dest, source)); + if(source->iccp_defined) { + CERROR_TRY_RETURN(lodepng_assign_icc(dest, source->iccp_name, source->iccp_profile, source->iccp_profile_size)); + } LodePNGUnknownChunks_init(dest); CERROR_TRY_RETURN(LodePNGUnknownChunks_copy(dest, source)); @@ -2967,18 +2756,10 @@ unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source) return 0; } -void lodepng_info_swap(LodePNGInfo* a, LodePNGInfo* b) -{ - LodePNGInfo temp = *a; - *a = *b; - *b = temp; -} - /* ////////////////////////////////////////////////////////////////////////// */ /*index: bitgroup index, bits: bitgroup size(1, 2 or 4), in: bitgroup value, out: octet array to add bits to*/ -static void addColorBits(unsigned char* out, size_t index, unsigned bits, unsigned in) -{ +static void addColorBits(unsigned char* out, size_t index, unsigned bits, unsigned in) { unsigned m = bits == 1 ? 7 : bits == 2 ? 3 : 1; /*8 / bits - 1*/ /*p = the partial index in the byte, e.g. with 4 palettebits it is 0 for first half or 1 for second half*/ unsigned p = index & m; @@ -2996,26 +2777,21 @@ This is the data structure used to count the number of unique colors and to get index for a color. It's like an octree, but because the alpha channel is used too, each node has 16 instead of 8 children. */ -struct ColorTree -{ +struct ColorTree { ColorTree* children[16]; /*up to 16 pointers to ColorTree of next level*/ int index; /*the payload. Only has a meaningful value if this is in the last level*/ }; -static void color_tree_init(ColorTree* tree) -{ +static void color_tree_init(ColorTree* tree) { int i; for(i = 0; i != 16; ++i) tree->children[i] = 0; tree->index = -1; } -static void color_tree_cleanup(ColorTree* tree) -{ +static void color_tree_cleanup(ColorTree* tree) { int i; - for(i = 0; i != 16; ++i) - { - if(tree->children[i]) - { + for(i = 0; i != 16; ++i) { + if(tree->children[i]) { color_tree_cleanup(tree->children[i]); lodepng_free(tree->children[i]); } @@ -3023,11 +2799,9 @@ static void color_tree_cleanup(ColorTree* tree) } /*returns -1 if color not present, its index otherwise*/ -static int color_tree_get(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ +static int color_tree_get(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { int bit = 0; - for(bit = 0; bit < 8; ++bit) - { + for(bit = 0; bit < 8; ++bit) { int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1); if(!tree->children[i]) return -1; else tree = tree->children[i]; @@ -3036,8 +2810,7 @@ static int color_tree_get(ColorTree* tree, unsigned char r, unsigned char g, uns } #ifdef LODEPNG_COMPILE_ENCODER -static int color_tree_has(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ +static int color_tree_has(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { return color_tree_get(tree, r, g, b, a) >= 0; } #endif /*LODEPNG_COMPILE_ENCODER*/ @@ -3045,14 +2818,11 @@ static int color_tree_has(ColorTree* tree, unsigned char r, unsigned char g, uns /*color is not allowed to already exist. Index should be >= 0 (it's signed to be compatible with using -1 for "doesn't exist")*/ static void color_tree_add(ColorTree* tree, - unsigned char r, unsigned char g, unsigned char b, unsigned char a, unsigned index) -{ + unsigned char r, unsigned char g, unsigned char b, unsigned char a, unsigned index) { int bit; - for(bit = 0; bit < 8; ++bit) - { + for(bit = 0; bit < 8; ++bit) { int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1); - if(!tree->children[i]) - { + if(!tree->children[i]) { tree->children[i] = (ColorTree*)lodepng_malloc(sizeof(ColorTree)); color_tree_init(tree->children[i]); } @@ -3064,67 +2834,47 @@ static void color_tree_add(ColorTree* tree, /*put a pixel, given its RGBA color, into image of any color type*/ static unsigned rgba8ToPixel(unsigned char* out, size_t i, const LodePNGColorMode* mode, ColorTree* tree /*for palette*/, - unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ - if(mode->colortype == LCT_GREY) - { - unsigned char grey = r; /*((unsigned short)r + g + b) / 3*/; - if(mode->bitdepth == 8) out[i] = grey; - else if(mode->bitdepth == 16) out[i * 2 + 0] = out[i * 2 + 1] = grey; - else - { - /*take the most significant bits of grey*/ - grey = (grey >> (8 - mode->bitdepth)) & ((1 << mode->bitdepth) - 1); - addColorBits(out, i, mode->bitdepth, grey); - } - } - else if(mode->colortype == LCT_RGB) - { - if(mode->bitdepth == 8) - { + unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + if(mode->colortype == LCT_GREY) { + unsigned char gray = r; /*((unsigned short)r + g + b) / 3;*/ + if(mode->bitdepth == 8) out[i] = gray; + else if(mode->bitdepth == 16) out[i * 2 + 0] = out[i * 2 + 1] = gray; + else { + /*take the most significant bits of gray*/ + gray = (gray >> (8 - mode->bitdepth)) & ((1 << mode->bitdepth) - 1); + addColorBits(out, i, mode->bitdepth, gray); + } + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { out[i * 3 + 0] = r; out[i * 3 + 1] = g; out[i * 3 + 2] = b; - } - else - { + } else { out[i * 6 + 0] = out[i * 6 + 1] = r; out[i * 6 + 2] = out[i * 6 + 3] = g; out[i * 6 + 4] = out[i * 6 + 5] = b; } - } - else if(mode->colortype == LCT_PALETTE) - { + } else if(mode->colortype == LCT_PALETTE) { int index = color_tree_get(tree, r, g, b, a); if(index < 0) return 82; /*color not in palette*/ if(mode->bitdepth == 8) out[i] = index; else addColorBits(out, i, mode->bitdepth, (unsigned)index); - } - else if(mode->colortype == LCT_GREY_ALPHA) - { - unsigned char grey = r; /*((unsigned short)r + g + b) / 3*/; - if(mode->bitdepth == 8) - { - out[i * 2 + 0] = grey; + } else if(mode->colortype == LCT_GREY_ALPHA) { + unsigned char gray = r; /*((unsigned short)r + g + b) / 3;*/ + if(mode->bitdepth == 8) { + out[i * 2 + 0] = gray; out[i * 2 + 1] = a; - } - else if(mode->bitdepth == 16) - { - out[i * 4 + 0] = out[i * 4 + 1] = grey; + } else if(mode->bitdepth == 16) { + out[i * 4 + 0] = out[i * 4 + 1] = gray; out[i * 4 + 2] = out[i * 4 + 3] = a; } - } - else if(mode->colortype == LCT_RGBA) - { - if(mode->bitdepth == 8) - { + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { out[i * 4 + 0] = r; out[i * 4 + 1] = g; out[i * 4 + 2] = b; out[i * 4 + 3] = a; - } - else - { + } else { out[i * 8 + 0] = out[i * 8 + 1] = r; out[i * 8 + 2] = out[i * 8 + 3] = g; out[i * 8 + 4] = out[i * 8 + 5] = b; @@ -3138,33 +2888,25 @@ static unsigned rgba8ToPixel(unsigned char* out, size_t i, /*put a pixel, given its RGBA16 color, into image of any color 16-bitdepth type*/ static void rgba16ToPixel(unsigned char* out, size_t i, const LodePNGColorMode* mode, - unsigned short r, unsigned short g, unsigned short b, unsigned short a) -{ - if(mode->colortype == LCT_GREY) - { - unsigned short grey = r; /*((unsigned)r + g + b) / 3*/; - out[i * 2 + 0] = (grey >> 8) & 255; - out[i * 2 + 1] = grey & 255; - } - else if(mode->colortype == LCT_RGB) - { + unsigned short r, unsigned short g, unsigned short b, unsigned short a) { + if(mode->colortype == LCT_GREY) { + unsigned short gray = r; /*((unsigned)r + g + b) / 3;*/ + out[i * 2 + 0] = (gray >> 8) & 255; + out[i * 2 + 1] = gray & 255; + } else if(mode->colortype == LCT_RGB) { out[i * 6 + 0] = (r >> 8) & 255; out[i * 6 + 1] = r & 255; out[i * 6 + 2] = (g >> 8) & 255; out[i * 6 + 3] = g & 255; out[i * 6 + 4] = (b >> 8) & 255; out[i * 6 + 5] = b & 255; - } - else if(mode->colortype == LCT_GREY_ALPHA) - { - unsigned short grey = r; /*((unsigned)r + g + b) / 3*/; - out[i * 4 + 0] = (grey >> 8) & 255; - out[i * 4 + 1] = grey & 255; + } else if(mode->colortype == LCT_GREY_ALPHA) { + unsigned short gray = r; /*((unsigned)r + g + b) / 3;*/ + out[i * 4 + 0] = (gray >> 8) & 255; + out[i * 4 + 1] = gray & 255; out[i * 4 + 2] = (a >> 8) & 255; out[i * 4 + 3] = a & 255; - } - else if(mode->colortype == LCT_RGBA) - { + } else if(mode->colortype == LCT_RGBA) { out[i * 8 + 0] = (r >> 8) & 255; out[i * 8 + 1] = r & 255; out[i * 8 + 2] = (g >> 8) & 255; @@ -3180,24 +2922,17 @@ static void rgba16ToPixel(unsigned char* out, size_t i, static void getPixelColorRGBA8(unsigned char* r, unsigned char* g, unsigned char* b, unsigned char* a, const unsigned char* in, size_t i, - const LodePNGColorMode* mode) -{ - if(mode->colortype == LCT_GREY) - { - if(mode->bitdepth == 8) - { + const LodePNGColorMode* mode) { + if(mode->colortype == LCT_GREY) { + if(mode->bitdepth == 8) { *r = *g = *b = in[i]; if(mode->key_defined && *r == mode->key_r) *a = 0; else *a = 255; - } - else if(mode->bitdepth == 16) - { + } else if(mode->bitdepth == 16) { *r = *g = *b = in[i * 2 + 0]; if(mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0; else *a = 255; - } - else - { + } else { unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/ size_t j = i * mode->bitdepth; unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); @@ -3205,17 +2940,12 @@ static void getPixelColorRGBA8(unsigned char* r, unsigned char* g, if(mode->key_defined && value == mode->key_r) *a = 0; else *a = 255; } - } - else if(mode->colortype == LCT_RGB) - { - if(mode->bitdepth == 8) - { + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { *r = in[i * 3 + 0]; *g = in[i * 3 + 1]; *b = in[i * 3 + 2]; if(mode->key_defined && *r == mode->key_r && *g == mode->key_g && *b == mode->key_b) *a = 0; else *a = 255; - } - else - { + } else { *r = in[i * 6 + 0]; *g = in[i * 6 + 2]; *b = in[i * 6 + 4]; @@ -3224,56 +2954,40 @@ static void getPixelColorRGBA8(unsigned char* r, unsigned char* g, && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0; else *a = 255; } - } - else if(mode->colortype == LCT_PALETTE) - { + } else if(mode->colortype == LCT_PALETTE) { unsigned index; if(mode->bitdepth == 8) index = in[i]; - else - { + else { size_t j = i * mode->bitdepth; index = readBitsFromReversedStream(&j, in, mode->bitdepth); } - if(index >= mode->palettesize) - { + if(index >= mode->palettesize) { /*This is an error according to the PNG spec, but common PNG decoders make it black instead. Done here too, slightly faster due to no error handling needed.*/ *r = *g = *b = 0; *a = 255; - } - else - { + } else { *r = mode->palette[index * 4 + 0]; *g = mode->palette[index * 4 + 1]; *b = mode->palette[index * 4 + 2]; *a = mode->palette[index * 4 + 3]; } - } - else if(mode->colortype == LCT_GREY_ALPHA) - { - if(mode->bitdepth == 8) - { + } else if(mode->colortype == LCT_GREY_ALPHA) { + if(mode->bitdepth == 8) { *r = *g = *b = in[i * 2 + 0]; *a = in[i * 2 + 1]; - } - else - { + } else { *r = *g = *b = in[i * 4 + 0]; *a = in[i * 4 + 2]; } - } - else if(mode->colortype == LCT_RGBA) - { - if(mode->bitdepth == 8) - { + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { *r = in[i * 4 + 0]; *g = in[i * 4 + 1]; *b = in[i * 4 + 2]; *a = in[i * 4 + 3]; - } - else - { + } else { *r = in[i * 8 + 0]; *g = in[i * 8 + 2]; *b = in[i * 8 + 4]; @@ -3289,57 +3003,40 @@ enough memory, if has_alpha is true the output is RGBA. mode has the color mode of the input buffer.*/ static void getPixelColorsRGBA8(unsigned char* buffer, size_t numpixels, unsigned has_alpha, const unsigned char* in, - const LodePNGColorMode* mode) -{ + const LodePNGColorMode* mode) { unsigned num_channels = has_alpha ? 4 : 3; size_t i; - if(mode->colortype == LCT_GREY) - { - if(mode->bitdepth == 8) - { - for(i = 0; i != numpixels; ++i, buffer += num_channels) - { + if(mode->colortype == LCT_GREY) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { buffer[0] = buffer[1] = buffer[2] = in[i]; if(has_alpha) buffer[3] = mode->key_defined && in[i] == mode->key_r ? 0 : 255; } - } - else if(mode->bitdepth == 16) - { - for(i = 0; i != numpixels; ++i, buffer += num_channels) - { + } else if(mode->bitdepth == 16) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { buffer[0] = buffer[1] = buffer[2] = in[i * 2]; if(has_alpha) buffer[3] = mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r ? 0 : 255; } - } - else - { + } else { unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/ size_t j = 0; - for(i = 0; i != numpixels; ++i, buffer += num_channels) - { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); buffer[0] = buffer[1] = buffer[2] = (value * 255) / highest; if(has_alpha) buffer[3] = mode->key_defined && value == mode->key_r ? 0 : 255; } } - } - else if(mode->colortype == LCT_RGB) - { - if(mode->bitdepth == 8) - { - for(i = 0; i != numpixels; ++i, buffer += num_channels) - { + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { buffer[0] = in[i * 3 + 0]; buffer[1] = in[i * 3 + 1]; buffer[2] = in[i * 3 + 2]; if(has_alpha) buffer[3] = mode->key_defined && buffer[0] == mode->key_r && buffer[1]== mode->key_g && buffer[2] == mode->key_b ? 0 : 255; } - } - else - { - for(i = 0; i != numpixels; ++i, buffer += num_channels) - { + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { buffer[0] = in[i * 6 + 0]; buffer[1] = in[i * 6 + 2]; buffer[2] = in[i * 6 + 4]; @@ -3349,67 +3046,47 @@ static void getPixelColorsRGBA8(unsigned char* buffer, size_t numpixels, && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b ? 0 : 255; } } - } - else if(mode->colortype == LCT_PALETTE) - { + } else if(mode->colortype == LCT_PALETTE) { unsigned index; size_t j = 0; - for(i = 0; i != numpixels; ++i, buffer += num_channels) - { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { if(mode->bitdepth == 8) index = in[i]; else index = readBitsFromReversedStream(&j, in, mode->bitdepth); - if(index >= mode->palettesize) - { + if(index >= mode->palettesize) { /*This is an error according to the PNG spec, but most PNG decoders make it black instead. Done here too, slightly faster due to no error handling needed.*/ buffer[0] = buffer[1] = buffer[2] = 0; if(has_alpha) buffer[3] = 255; - } - else - { + } else { buffer[0] = mode->palette[index * 4 + 0]; buffer[1] = mode->palette[index * 4 + 1]; buffer[2] = mode->palette[index * 4 + 2]; if(has_alpha) buffer[3] = mode->palette[index * 4 + 3]; } } - } - else if(mode->colortype == LCT_GREY_ALPHA) - { - if(mode->bitdepth == 8) - { - for(i = 0; i != numpixels; ++i, buffer += num_channels) - { + } else if(mode->colortype == LCT_GREY_ALPHA) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { buffer[0] = buffer[1] = buffer[2] = in[i * 2 + 0]; if(has_alpha) buffer[3] = in[i * 2 + 1]; } - } - else - { - for(i = 0; i != numpixels; ++i, buffer += num_channels) - { + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { buffer[0] = buffer[1] = buffer[2] = in[i * 4 + 0]; if(has_alpha) buffer[3] = in[i * 4 + 2]; } } - } - else if(mode->colortype == LCT_RGBA) - { - if(mode->bitdepth == 8) - { - for(i = 0; i != numpixels; ++i, buffer += num_channels) - { + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { buffer[0] = in[i * 4 + 0]; buffer[1] = in[i * 4 + 1]; buffer[2] = in[i * 4 + 2]; if(has_alpha) buffer[3] = in[i * 4 + 3]; } - } - else - { - for(i = 0; i != numpixels; ++i, buffer += num_channels) - { + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { buffer[0] = in[i * 8 + 0]; buffer[1] = in[i * 8 + 2]; buffer[2] = in[i * 8 + 4]; @@ -3422,16 +3099,12 @@ static void getPixelColorsRGBA8(unsigned char* buffer, size_t numpixels, /*Get RGBA16 color of pixel with index i (y * width + x) from the raw image with given color type, but the given color type must be 16-bit itself.*/ static void getPixelColorRGBA16(unsigned short* r, unsigned short* g, unsigned short* b, unsigned short* a, - const unsigned char* in, size_t i, const LodePNGColorMode* mode) -{ - if(mode->colortype == LCT_GREY) - { + const unsigned char* in, size_t i, const LodePNGColorMode* mode) { + if(mode->colortype == LCT_GREY) { *r = *g = *b = 256 * in[i * 2 + 0] + in[i * 2 + 1]; if(mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0; else *a = 65535; - } - else if(mode->colortype == LCT_RGB) - { + } else if(mode->colortype == LCT_RGB) { *r = 256u * in[i * 6 + 0] + in[i * 6 + 1]; *g = 256u * in[i * 6 + 2] + in[i * 6 + 3]; *b = 256u * in[i * 6 + 4] + in[i * 6 + 5]; @@ -3440,14 +3113,10 @@ static void getPixelColorRGBA16(unsigned short* r, unsigned short* g, unsigned s && 256u * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g && 256u * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0; else *a = 65535; - } - else if(mode->colortype == LCT_GREY_ALPHA) - { + } else if(mode->colortype == LCT_GREY_ALPHA) { *r = *g = *b = 256u * in[i * 4 + 0] + in[i * 4 + 1]; *a = 256u * in[i * 4 + 2] + in[i * 4 + 3]; - } - else if(mode->colortype == LCT_RGBA) - { + } else if(mode->colortype == LCT_RGBA) { *r = 256u * in[i * 8 + 0] + in[i * 8 + 1]; *g = 256u * in[i * 8 + 2] + in[i * 8 + 3]; *b = 256u * in[i * 8 + 4] + in[i * 8 + 5]; @@ -3457,91 +3126,142 @@ static void getPixelColorRGBA16(unsigned short* r, unsigned short* g, unsigned s unsigned lodepng_convert(unsigned char* out, const unsigned char* in, const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in, - unsigned w, unsigned h) -{ + unsigned w, unsigned h) { size_t i; ColorTree tree; - size_t numpixels = w * h; + size_t numpixels = (size_t)w * (size_t)h; + unsigned error = 0; - if(lodepng_color_mode_equal(mode_out, mode_in)) - { + if(lodepng_color_mode_equal(mode_out, mode_in)) { size_t numbytes = lodepng_get_raw_size(w, h, mode_in); for(i = 0; i != numbytes; ++i) out[i] = in[i]; return 0; } - if(mode_out->colortype == LCT_PALETTE) - { + if(mode_out->colortype == LCT_PALETTE) { size_t palettesize = mode_out->palettesize; const unsigned char* palette = mode_out->palette; - size_t palsize = 1u << mode_out->bitdepth; + size_t palsize = (size_t)1u << mode_out->bitdepth; /*if the user specified output palette but did not give the values, assume they want the values of the input color type (assuming that one is palette). Note that we never create a new palette ourselves.*/ - if(palettesize == 0) - { + if(palettesize == 0) { palettesize = mode_in->palettesize; palette = mode_in->palette; + /*if the input was also palette with same bitdepth, then the color types are also + equal, so copy literally. This to preserve the exact indices that were in the PNG + even in case there are duplicate colors in the palette.*/ + if (mode_in->colortype == LCT_PALETTE && mode_in->bitdepth == mode_out->bitdepth) { + size_t numbytes = lodepng_get_raw_size(w, h, mode_in); + for(i = 0; i != numbytes; ++i) out[i] = in[i]; + return 0; + } } if(palettesize < palsize) palsize = palettesize; color_tree_init(&tree); - for(i = 0; i != palsize; ++i) - { + for(i = 0; i != palsize; ++i) { const unsigned char* p = &palette[i * 4]; - color_tree_add(&tree, p[0], p[1], p[2], p[3], i); + color_tree_add(&tree, p[0], p[1], p[2], p[3], (unsigned)i); } } - if(mode_in->bitdepth == 16 && mode_out->bitdepth == 16) - { - for(i = 0; i != numpixels; ++i) - { + if(mode_in->bitdepth == 16 && mode_out->bitdepth == 16) { + for(i = 0; i != numpixels; ++i) { unsigned short r = 0, g = 0, b = 0, a = 0; getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); rgba16ToPixel(out, i, mode_out, r, g, b, a); } - } - else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGBA) - { + } else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGBA) { getPixelColorsRGBA8(out, numpixels, 1, in, mode_in); - } - else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGB) - { + } else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGB) { getPixelColorsRGBA8(out, numpixels, 0, in, mode_in); - } - else - { + } else { unsigned char r = 0, g = 0, b = 0, a = 0; - for(i = 0; i != numpixels; ++i) - { + for(i = 0; i != numpixels; ++i) { getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); - CERROR_TRY_RETURN(rgba8ToPixel(out, i, mode_out, &tree, r, g, b, a)); + error = rgba8ToPixel(out, i, mode_out, &tree, r, g, b, a); + if (error) break; } } - if(mode_out->colortype == LCT_PALETTE) - { + if(mode_out->colortype == LCT_PALETTE) { color_tree_cleanup(&tree); } - return 0; /*no error*/ + return error; +} + + +/* Converts a single rgb color without alpha from one type to another, color bits truncated to +their bitdepth. In case of single channel (gray or palette), only the r channel is used. Slow +function, do not use to process all pixels of an image. Alpha channel not supported on purpose: +this is for bKGD, supporting alpha may prevent it from finding a color in the palette, from the +specification it looks like bKGD should ignore the alpha values of the palette since it can use +any palette index but doesn't have an alpha channel. Idem with ignoring color key. */ +unsigned lodepng_convert_rgb( + unsigned* r_out, unsigned* g_out, unsigned* b_out, + unsigned r_in, unsigned g_in, unsigned b_in, + const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in) { + unsigned r = 0, g = 0, b = 0; + unsigned mul = 65535 / ((1u << mode_in->bitdepth) - 1u); /*65535, 21845, 4369, 257, 1*/ + unsigned shift = 16 - mode_out->bitdepth; + + if(mode_in->colortype == LCT_GREY || mode_in->colortype == LCT_GREY_ALPHA) { + r = g = b = r_in * mul; + } else if(mode_in->colortype == LCT_RGB || mode_in->colortype == LCT_RGBA) { + r = r_in * mul; + g = g_in * mul; + b = b_in * mul; + } else if(mode_in->colortype == LCT_PALETTE) { + if(r_in >= mode_in->palettesize) return 82; + r = mode_in->palette[r_in * 4 + 0] * 257u; + g = mode_in->palette[r_in * 4 + 1] * 257u; + b = mode_in->palette[r_in * 4 + 2] * 257u; + } else { + return 31; + } + + /* now convert to output format */ + if(mode_out->colortype == LCT_GREY || mode_out->colortype == LCT_GREY_ALPHA) { + *r_out = r >> shift ; + } else if(mode_out->colortype == LCT_RGB || mode_out->colortype == LCT_RGBA) { + *r_out = r >> shift ; + *g_out = g >> shift ; + *b_out = b >> shift ; + } else if(mode_out->colortype == LCT_PALETTE) { + unsigned i; + /* a 16-bit color cannot be in the palette */ + if((r >> 8) != (r & 255) || (g >> 8) != (g & 255) || (b >> 8) != (b & 255)) return 82; + for(i = 0; i < mode_out->palettesize; i++) { + unsigned j = i * 4; + if((r >> 8) == mode_out->palette[j + 0] && (g >> 8) == mode_out->palette[j + 1] && + (b >> 8) == mode_out->palette[j + 2]) { + *r_out = i; + return 0; + } + } + return 82; + } else { + return 31; + } + + return 0; } #ifdef LODEPNG_COMPILE_ENCODER -void lodepng_color_profile_init(LodePNGColorProfile* profile) -{ +void lodepng_color_profile_init(LodePNGColorProfile* profile) { profile->colored = 0; profile->key = 0; - profile->alpha = 0; profile->key_r = profile->key_g = profile->key_b = 0; + profile->alpha = 0; profile->numcolors = 0; profile->bits = 1; + profile->numpixels = 0; } /*function used for debug purposes with C++*/ -/*void printColorProfile(LodePNGColorProfile* p) -{ +/*void printColorProfile(LodePNGColorProfile* p) { std::cout << "colored: " << (int)p->colored << ", "; std::cout << "key: " << (int)p->key << ", "; std::cout << "key_r: " << (int)p->key_r << ", "; @@ -3553,162 +3273,154 @@ void lodepng_color_profile_init(LodePNGColorProfile* profile) }*/ /*Returns how many bits needed to represent given value (max 8 bit)*/ -static unsigned getValueRequiredBits(unsigned char value) -{ +static unsigned getValueRequiredBits(unsigned char value) { if(value == 0 || value == 255) return 1; /*The scaling of 2-bit and 4-bit values uses multiples of 85 and 17*/ if(value % 17 == 0) return value % 85 == 0 ? 2 : 4; return 8; } -/*profile must already have been inited with mode. +/*profile must already have been inited. It's ok to set some parameters of profile to done already.*/ unsigned lodepng_get_color_profile(LodePNGColorProfile* profile, const unsigned char* in, unsigned w, unsigned h, - const LodePNGColorMode* mode) -{ + const LodePNGColorMode* mode_in) { unsigned error = 0; size_t i; ColorTree tree; - size_t numpixels = w * h; + size_t numpixels = (size_t)w * (size_t)h; - unsigned colored_done = lodepng_is_greyscale_type(mode) ? 1 : 0; - unsigned alpha_done = lodepng_can_have_alpha(mode) ? 0 : 1; + /* mark things as done already if it would be impossible to have a more expensive case */ + unsigned colored_done = lodepng_is_greyscale_type(mode_in) ? 1 : 0; + unsigned alpha_done = lodepng_can_have_alpha(mode_in) ? 0 : 1; unsigned numcolors_done = 0; - unsigned bpp = lodepng_get_bpp(mode); - unsigned bits_done = bpp == 1 ? 1 : 0; + unsigned bpp = lodepng_get_bpp(mode_in); + unsigned bits_done = (profile->bits == 1 && bpp == 1) ? 1 : 0; + unsigned sixteen = 0; /* whether the input image is 16 bit */ unsigned maxnumcolors = 257; - unsigned sixteen = 0; - if(bpp <= 8) maxnumcolors = bpp == 1 ? 2 : (bpp == 2 ? 4 : (bpp == 4 ? 16 : 256)); + if(bpp <= 8) maxnumcolors = LODEPNG_MIN(257, profile->numcolors + (1u << bpp)); + + profile->numpixels += numpixels; color_tree_init(&tree); + /*If the profile was already filled in from previous data, fill its palette in tree + and mark things as done already if we know they are the most expensive case already*/ + if(profile->alpha) alpha_done = 1; + if(profile->colored) colored_done = 1; + if(profile->bits == 16) numcolors_done = 1; + if(profile->bits >= bpp) bits_done = 1; + if(profile->numcolors >= maxnumcolors) numcolors_done = 1; + + if(!numcolors_done) { + for(i = 0; i < profile->numcolors; i++) { + const unsigned char* color = &profile->palette[i * 4]; + color_tree_add(&tree, color[0], color[1], color[2], color[3], i); + } + } + /*Check if the 16-bit input is truly 16-bit*/ - if(mode->bitdepth == 16) - { + if(mode_in->bitdepth == 16 && !sixteen) { unsigned short r, g, b, a; - for(i = 0; i != numpixels; ++i) - { - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode); + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); if((r & 255) != ((r >> 8) & 255) || (g & 255) != ((g >> 8) & 255) || - (b & 255) != ((b >> 8) & 255) || (a & 255) != ((a >> 8) & 255)) /*first and second byte differ*/ - { + (b & 255) != ((b >> 8) & 255) || (a & 255) != ((a >> 8) & 255)) /*first and second byte differ*/ { + profile->bits = 16; sixteen = 1; + bits_done = 1; + numcolors_done = 1; /*counting colors no longer useful, palette doesn't support 16-bit*/ break; } } } - if(sixteen) - { + if(sixteen) { unsigned short r = 0, g = 0, b = 0, a = 0; - profile->bits = 16; - bits_done = numcolors_done = 1; /*counting colors no longer useful, palette doesn't support 16-bit*/ - for(i = 0; i != numpixels; ++i) - { - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode); + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); - if(!colored_done && (r != g || r != b)) - { + if(!colored_done && (r != g || r != b)) { profile->colored = 1; colored_done = 1; } - if(!alpha_done) - { + if(!alpha_done) { unsigned matchkey = (r == profile->key_r && g == profile->key_g && b == profile->key_b); - if(a != 65535 && (a != 0 || (profile->key && !matchkey))) - { + if(a != 65535 && (a != 0 || (profile->key && !matchkey))) { profile->alpha = 1; + profile->key = 0; alpha_done = 1; - if(profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ - } - else if(a == 0 && !profile->alpha && !profile->key) - { + } else if(a == 0 && !profile->alpha && !profile->key) { profile->key = 1; profile->key_r = r; profile->key_g = g; profile->key_b = b; - } - else if(a == 65535 && profile->key && matchkey) - { + } else if(a == 65535 && profile->key && matchkey) { /* Color key cannot be used if an opaque pixel also has that RGB color. */ profile->alpha = 1; + profile->key = 0; alpha_done = 1; } } if(alpha_done && numcolors_done && colored_done && bits_done) break; } - if(profile->key && !profile->alpha) - { - for(i = 0; i != numpixels; ++i) - { - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode); - if(a != 0 && r == profile->key_r && g == profile->key_g && b == profile->key_b) - { + if(profile->key && !profile->alpha) { + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); + if(a != 0 && r == profile->key_r && g == profile->key_g && b == profile->key_b) { /* Color key cannot be used if an opaque pixel also has that RGB color. */ profile->alpha = 1; + profile->key = 0; alpha_done = 1; } } } - } - else /* < 16-bit */ - { + } else /* < 16-bit */ { unsigned char r = 0, g = 0, b = 0, a = 0; - for(i = 0; i != numpixels; ++i) - { - getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode); + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); - if(!bits_done && profile->bits < 8) - { - /*only r is checked, < 8 bits is only relevant for greyscale*/ + if(!bits_done && profile->bits < 8) { + /*only r is checked, < 8 bits is only relevant for grayscale*/ unsigned bits = getValueRequiredBits(r); if(bits > profile->bits) profile->bits = bits; } bits_done = (profile->bits >= bpp); - if(!colored_done && (r != g || r != b)) - { + if(!colored_done && (r != g || r != b)) { profile->colored = 1; colored_done = 1; if(profile->bits < 8) profile->bits = 8; /*PNG has no colored modes with less than 8-bit per channel*/ } - if(!alpha_done) - { + if(!alpha_done) { unsigned matchkey = (r == profile->key_r && g == profile->key_g && b == profile->key_b); - if(a != 255 && (a != 0 || (profile->key && !matchkey))) - { + if(a != 255 && (a != 0 || (profile->key && !matchkey))) { profile->alpha = 1; + profile->key = 0; alpha_done = 1; if(profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ - } - else if(a == 0 && !profile->alpha && !profile->key) - { + } else if(a == 0 && !profile->alpha && !profile->key) { profile->key = 1; profile->key_r = r; profile->key_g = g; profile->key_b = b; - } - else if(a == 255 && profile->key && matchkey) - { + } else if(a == 255 && profile->key && matchkey) { /* Color key cannot be used if an opaque pixel also has that RGB color. */ profile->alpha = 1; + profile->key = 0; alpha_done = 1; if(profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ } } - if(!numcolors_done) - { - if(!color_tree_has(&tree, r, g, b, a)) - { + if(!numcolors_done) { + if(!color_tree_has(&tree, r, g, b, a)) { color_tree_add(&tree, r, g, b, a, profile->numcolors); - if(profile->numcolors < 256) - { + if(profile->numcolors < 256) { unsigned char* p = profile->palette; unsigned n = profile->numcolors; p[n * 4 + 0] = r; @@ -3724,16 +3436,15 @@ unsigned lodepng_get_color_profile(LodePNGColorProfile* profile, if(alpha_done && numcolors_done && colored_done && bits_done) break; } - if(profile->key && !profile->alpha) - { - for(i = 0; i != numpixels; ++i) - { - getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode); - if(a != 0 && r == profile->key_r && g == profile->key_g && b == profile->key_b) - { + if(profile->key && !profile->alpha) { + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); + if(a != 0 && r == profile->key_r && g == profile->key_g && b == profile->key_b) { /* Color key cannot be used if an opaque pixel also has that RGB color. */ profile->alpha = 1; + profile->key = 0; alpha_done = 1; + if(profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ } } } @@ -3748,42 +3459,57 @@ unsigned lodepng_get_color_profile(LodePNGColorProfile* profile, return error; } -/*Automatically chooses color type that gives smallest amount of bits in the -output image, e.g. grey if there are only greyscale pixels, palette if there -are less than 256 colors, ... -Updates values of mode with a potentially smaller color model. mode_out should -contain the user chosen color model, but will be overwritten with the new chosen one.*/ -unsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out, - const unsigned char* image, unsigned w, unsigned h, - const LodePNGColorMode* mode_in) -{ - LodePNGColorProfile prof; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +/*Adds a single color to the color profile. The profile must already have been inited. The color must be given as 16-bit +(with 2 bytes repeating for 8-bit and 65535 for opaque alpha channel). This function is expensive, do not call it for +all pixels of an image but only for a few additional values. */ +static unsigned lodepng_color_profile_add(LodePNGColorProfile* profile, + unsigned r, unsigned g, unsigned b, unsigned a) { + unsigned error = 0; + unsigned char image[8]; + LodePNGColorMode mode; + lodepng_color_mode_init(&mode); + image[0] = r >> 8; image[1] = r; image[2] = g >> 8; image[3] = g; + image[4] = b >> 8; image[5] = b; image[6] = a >> 8; image[7] = a; + mode.bitdepth = 16; + mode.colortype = LCT_RGBA; + error = lodepng_get_color_profile(profile, image, 1, 1, &mode); + lodepng_color_mode_cleanup(&mode); + return error; +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +/*Autochoose color model given the computed profile. mode_in is to copy palette order from +when relevant.*/ +static unsigned auto_choose_color_from_profile(LodePNGColorMode* mode_out, + const LodePNGColorMode* mode_in, + const LodePNGColorProfile* prof) { unsigned error = 0; - unsigned i, n, palettebits, grey_ok, palette_ok; + unsigned palettebits, palette_ok; + size_t i, n; + size_t numpixels = prof->numpixels; + + unsigned alpha = prof->alpha; + unsigned key = prof->key; + unsigned bits = prof->bits; - lodepng_color_profile_init(&prof); - error = lodepng_get_color_profile(&prof, image, w, h, mode_in); - if(error) return error; mode_out->key_defined = 0; - if(prof.key && w * h <= 16) - { - prof.alpha = 1; /*too few pixels to justify tRNS chunk overhead*/ - if(prof.bits < 8) prof.bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ + if(key && numpixels <= 16) { + alpha = 1; /*too few pixels to justify tRNS chunk overhead*/ + key = 0; + if(bits < 8) bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ } - grey_ok = !prof.colored && !prof.alpha; /*grey without alpha, with potentially low bits*/ - n = prof.numcolors; + n = prof->numcolors; palettebits = n <= 2 ? 1 : (n <= 4 ? 2 : (n <= 16 ? 4 : 8)); - palette_ok = n <= 256 && (n * 2 < w * h) && prof.bits <= 8; - if(w * h < n * 2) palette_ok = 0; /*don't add palette overhead if image has only a few pixels*/ - if(grey_ok && prof.bits <= palettebits) palette_ok = 0; /*grey is less overhead*/ + palette_ok = n <= 256 && bits <= 8; + if(numpixels < n * 2) palette_ok = 0; /*don't add palette overhead if image has only a few pixels*/ + if(!prof->colored && bits <= palettebits) palette_ok = 0; /*gray is less overhead*/ - if(palette_ok) - { - unsigned char* p = prof.palette; + if(palette_ok) { + const unsigned char* p = prof->palette; lodepng_palette_clear(mode_out); /*remove potential earlier palette*/ - for(i = 0; i != prof.numcolors; ++i) - { + for(i = 0; i != prof->numcolors; ++i) { error = lodepng_palette_add(mode_out, p[i * 4 + 0], p[i * 4 + 1], p[i * 4 + 2], p[i * 4 + 3]); if(error) break; } @@ -3792,25 +3518,21 @@ unsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out, mode_out->bitdepth = palettebits; if(mode_in->colortype == LCT_PALETTE && mode_in->palettesize >= mode_out->palettesize - && mode_in->bitdepth == mode_out->bitdepth) - { + && mode_in->bitdepth == mode_out->bitdepth) { /*If input should have same palette colors, keep original to preserve its order and prevent conversion*/ lodepng_color_mode_cleanup(mode_out); lodepng_color_mode_copy(mode_out, mode_in); } - } - else /*8-bit or 16-bit per channel*/ - { - mode_out->bitdepth = prof.bits; - mode_out->colortype = prof.alpha ? (prof.colored ? LCT_RGBA : LCT_GREY_ALPHA) - : (prof.colored ? LCT_RGB : LCT_GREY); + } else /*8-bit or 16-bit per channel*/ { + mode_out->bitdepth = bits; + mode_out->colortype = alpha ? (prof->colored ? LCT_RGBA : LCT_GREY_ALPHA) + : (prof->colored ? LCT_RGB : LCT_GREY); - if(prof.key && !prof.alpha) - { + if(key) { unsigned mask = (1u << mode_out->bitdepth) - 1u; /*profile always uses 16-bit, mask converts it*/ - mode_out->key_r = prof.key_r & mask; - mode_out->key_g = prof.key_g & mask; - mode_out->key_b = prof.key_b & mask; + mode_out->key_r = prof->key_r & mask; + mode_out->key_g = prof->key_g & mask; + mode_out->key_b = prof->key_b & mask; mode_out->key_defined = 1; } } @@ -3818,6 +3540,22 @@ unsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out, return error; } +/*Automatically chooses color type that gives smallest amount of bits in the +output image, e.g. gray if there are only grayscale pixels, palette if there +are less than 256 colors, color key if only single transparent color, ... +Updates values of mode with a potentially smaller color model. mode_out should +contain the user chosen color model, but will be overwritten with the new chosen one.*/ +unsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out, + const unsigned char* image, unsigned w, unsigned h, + const LodePNGColorMode* mode_in) { + unsigned error = 0; + LodePNGColorProfile prof; + lodepng_color_profile_init(&prof); + error = lodepng_get_color_profile(&prof, image, w, h, mode_in); + if(error) return error; + return auto_choose_color_from_profile(mode_out, mode_in, &prof); +} + #endif /* #ifdef LODEPNG_COMPILE_ENCODER */ /* @@ -3825,8 +3563,7 @@ Paeth predicter, used by PNG filter type 4 The parameters are of type short, but should come from unsigned chars, the shorts are only needed to make the paeth calculation correct. */ -static unsigned char paethPredictor(short a, short b, short c) -{ +static unsigned char paethPredictor(short a, short b, short c) { short pa = abs(b - c); short pb = abs(a - c); short pc = abs(a + b - c - c); @@ -3859,14 +3596,12 @@ bpp: bits per pixel end at a full byte */ static void Adam7_getpassvalues(unsigned passw[7], unsigned passh[7], size_t filter_passstart[8], - size_t padded_passstart[8], size_t passstart[8], unsigned w, unsigned h, unsigned bpp) -{ + size_t padded_passstart[8], size_t passstart[8], unsigned w, unsigned h, unsigned bpp) { /*the passstart values have 8 values: the 8th one indicates the byte after the end of the 7th (= last) pass*/ unsigned i; /*calculate width and height in pixels of each pass*/ - for(i = 0; i != 7; ++i) - { + for(i = 0; i != 7; ++i) { passw[i] = (w + ADAM7_DX[i] - ADAM7_IX[i] - 1) / ADAM7_DX[i]; passh[i] = (h + ADAM7_DY[i] - ADAM7_IY[i] - 1) / ADAM7_DY[i]; if(passw[i] == 0) passh[i] = 0; @@ -3874,8 +3609,7 @@ static void Adam7_getpassvalues(unsigned passw[7], unsigned passh[7], size_t fil } filter_passstart[0] = padded_passstart[0] = passstart[0] = 0; - for(i = 0; i != 7; ++i) - { + for(i = 0; i != 7; ++i) { /*if passw[i] is 0, it's 0 bytes, not 1 (no filtertype-byte)*/ filter_passstart[i + 1] = filter_passstart[i] + ((passw[i] && passh[i]) ? passh[i] * (1 + (passw[i] * bpp + 7) / 8) : 0); @@ -3894,56 +3628,52 @@ static void Adam7_getpassvalues(unsigned passw[7], unsigned passh[7], size_t fil /*read the information from the header and store it in the LodePNGInfo. return value is error*/ unsigned lodepng_inspect(unsigned* w, unsigned* h, LodePNGState* state, - const unsigned char* in, size_t insize) -{ + const unsigned char* in, size_t insize) { + unsigned width, height; LodePNGInfo* info = &state->info_png; - if(insize == 0 || in == 0) - { + if(insize == 0 || in == 0) { CERROR_RETURN_ERROR(state->error, 48); /*error: the given data is empty*/ } - if(insize < 33) - { + if(insize < 33) { CERROR_RETURN_ERROR(state->error, 27); /*error: the data length is smaller than the length of a PNG header*/ } /*when decoding a new PNG image, make sure all parameters created after previous decoding are reset*/ + /* TODO: remove this. One should use a new LodePNGState for new sessions */ lodepng_info_cleanup(info); lodepng_info_init(info); if(in[0] != 137 || in[1] != 80 || in[2] != 78 || in[3] != 71 - || in[4] != 13 || in[5] != 10 || in[6] != 26 || in[7] != 10) - { + || in[4] != 13 || in[5] != 10 || in[6] != 26 || in[7] != 10) { CERROR_RETURN_ERROR(state->error, 28); /*error: the first 8 bytes are not the correct PNG signature*/ } - if(lodepng_chunk_length(in + 8) != 13) - { + if(lodepng_chunk_length(in + 8) != 13) { CERROR_RETURN_ERROR(state->error, 94); /*error: header size must be 13 bytes*/ } - if(!lodepng_chunk_type_equals(in + 8, "IHDR")) - { + if(!lodepng_chunk_type_equals(in + 8, "IHDR")) { CERROR_RETURN_ERROR(state->error, 29); /*error: it doesn't start with a IHDR chunk!*/ } /*read the values given in the header*/ - *w = lodepng_read32bitInt(&in[16]); - *h = lodepng_read32bitInt(&in[20]); + width = lodepng_read32bitInt(&in[16]); + height = lodepng_read32bitInt(&in[20]); info->color.bitdepth = in[24]; info->color.colortype = (LodePNGColorType)in[25]; info->compression_method = in[26]; info->filter_method = in[27]; info->interlace_method = in[28]; - if(*w == 0 || *h == 0) - { + if(width == 0 || height == 0) { CERROR_RETURN_ERROR(state->error, 93); } - if(!state->decoder.ignore_crc) - { + if(w) *w = width; + if(h) *h = height; + + if(!state->decoder.ignore_crc) { unsigned CRC = lodepng_read32bitInt(&in[29]); unsigned checksum = lodepng_crc32(&in[12], 17); - if(CRC != checksum) - { + if(CRC != checksum) { CERROR_RETURN_ERROR(state->error, 57); /*invalid CRC*/ } } @@ -3960,8 +3690,7 @@ unsigned lodepng_inspect(unsigned* w, unsigned* h, LodePNGState* state, } static unsigned unfilterScanline(unsigned char* recon, const unsigned char* scanline, const unsigned char* precon, - size_t bytewidth, unsigned char filterType, size_t length) -{ + size_t bytewidth, unsigned char filterType, size_t length) { /* For PNG filter method 0 unfilter a PNG image scanline by scanline. when the pixels are smaller than 1 byte, @@ -3972,8 +3701,7 @@ static unsigned unfilterScanline(unsigned char* recon, const unsigned char* scan */ size_t i; - switch(filterType) - { + switch(filterType) { case 0: for(i = 0; i != length; ++i) recon[i] = scanline[i]; break; @@ -3982,47 +3710,34 @@ static unsigned unfilterScanline(unsigned char* recon, const unsigned char* scan for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + recon[i - bytewidth]; break; case 2: - if(precon) - { + if(precon) { for(i = 0; i != length; ++i) recon[i] = scanline[i] + precon[i]; - } - else - { + } else { for(i = 0; i != length; ++i) recon[i] = scanline[i]; } break; case 3: - if(precon) - { + if(precon) { for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i] + (precon[i] >> 1); for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + ((recon[i - bytewidth] + precon[i]) >> 1); - } - else - { + } else { for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i]; for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + (recon[i - bytewidth] >> 1); } break; case 4: - if(precon) - { - for(i = 0; i != bytewidth; ++i) - { + if(precon) { + for(i = 0; i != bytewidth; ++i) { recon[i] = (scanline[i] + precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/ } - for(i = bytewidth; i < length; ++i) - { + for(i = bytewidth; i < length; ++i) { recon[i] = (scanline[i] + paethPredictor(recon[i - bytewidth], precon[i], precon[i - bytewidth])); } - } - else - { - for(i = 0; i != bytewidth; ++i) - { + } else { + for(i = 0; i != bytewidth; ++i) { recon[i] = scanline[i]; } - for(i = bytewidth; i < length; ++i) - { + for(i = bytewidth; i < length; ++i) { /*paethPredictor(recon[i - bytewidth], 0, 0) is always recon[i - bytewidth]*/ recon[i] = (scanline[i] + recon[i - bytewidth]); } @@ -4033,8 +3748,7 @@ static unsigned unfilterScanline(unsigned char* recon, const unsigned char* scan return 0; } -static unsigned unfilter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) -{ +static unsigned unfilter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) { /* For PNG filter method 0 this function unfilters a single image (e.g. without interlacing this is called once, with Adam7 seven times) @@ -4050,8 +3764,7 @@ static unsigned unfilter(unsigned char* out, const unsigned char* in, unsigned w size_t bytewidth = (bpp + 7) / 8; size_t linebytes = (w * bpp + 7) / 8; - for(y = 0; y < h; ++y) - { + for(y = 0; y < h; ++y) { size_t outindex = linebytes * y; size_t inindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ unsigned char filterType = in[inindex]; @@ -4075,47 +3788,37 @@ out must be big enough AND must be 0 everywhere if bpp < 8 in the current implem (because that's likely a little bit faster) NOTE: comments about padding bits are only relevant if bpp < 8 */ -static void Adam7_deinterlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) -{ +static void Adam7_deinterlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) { unsigned passw[7], passh[7]; size_t filter_passstart[8], padded_passstart[8], passstart[8]; unsigned i; Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - if(bpp >= 8) - { - for(i = 0; i != 7; ++i) - { + if(bpp >= 8) { + for(i = 0; i != 7; ++i) { unsigned x, y, b; size_t bytewidth = bpp / 8; for(y = 0; y < passh[i]; ++y) - for(x = 0; x < passw[i]; ++x) - { + for(x = 0; x < passw[i]; ++x) { size_t pixelinstart = passstart[i] + (y * passw[i] + x) * bytewidth; size_t pixeloutstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + ADAM7_IX[i] + x * ADAM7_DX[i]) * bytewidth; - for(b = 0; b < bytewidth; ++b) - { + for(b = 0; b < bytewidth; ++b) { out[pixeloutstart + b] = in[pixelinstart + b]; } } } - } - else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ - { - for(i = 0; i != 7; ++i) - { + } else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ { + for(i = 0; i != 7; ++i) { unsigned x, y, b; unsigned ilinebits = bpp * passw[i]; unsigned olinebits = bpp * w; size_t obp, ibp; /*bit pointers (for out and in buffer)*/ for(y = 0; y < passh[i]; ++y) - for(x = 0; x < passw[i]; ++x) - { + for(x = 0; x < passw[i]; ++x) { ibp = (8 * passstart[i]) + (y * ilinebits + x * bpp); obp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp; - for(b = 0; b < bpp; ++b) - { + for(b = 0; b < bpp; ++b) { unsigned char bit = readBitFromReversedStream(&ibp, in); /*note that this function assumes the out buffer is completely 0, use setBitOfReversedStream otherwise*/ setBitOfReversedStream0(&obp, out, bit); @@ -4126,8 +3829,7 @@ static void Adam7_deinterlace(unsigned char* out, const unsigned char* in, unsig } static void removePaddingBits(unsigned char* out, const unsigned char* in, - size_t olinebits, size_t ilinebits, unsigned h) -{ + size_t olinebits, size_t ilinebits, unsigned h) { /* After filtering there are still padding bits if scanlines have non multiple of 8 bit amounts. They need to be removed (except at last scanline of (Adam7-reduced) image) before working with pure image buffers @@ -4140,11 +3842,9 @@ static void removePaddingBits(unsigned char* out, const unsigned char* in, unsigned y; size_t diff = ilinebits - olinebits; size_t ibp = 0, obp = 0; /*input and output bit pointers*/ - for(y = 0; y < h; ++y) - { + for(y = 0; y < h; ++y) { size_t x; - for(x = 0; x < olinebits; ++x) - { + for(x = 0; x < olinebits; ++x) { unsigned char bit = readBitFromReversedStream(&ibp, in); setBitOfReversedStream(&obp, out, bit); } @@ -4156,8 +3856,7 @@ static void removePaddingBits(unsigned char* out, const unsigned char* in, the IDAT chunks (with filter index bytes and possible padding bits) return value is error*/ static unsigned postProcessScanlines(unsigned char* out, unsigned char* in, - unsigned w, unsigned h, const LodePNGInfo* info_png) -{ + unsigned w, unsigned h, const LodePNGInfo* info_png) { /* This function converts the filtered-padded-interlaced data into pure 2D image buffer with the PNG's colortype. Steps: @@ -4168,30 +3867,24 @@ static unsigned postProcessScanlines(unsigned char* out, unsigned char* in, unsigned bpp = lodepng_get_bpp(&info_png->color); if(bpp == 0) return 31; /*error: invalid colortype*/ - if(info_png->interlace_method == 0) - { - if(bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8) - { + if(info_png->interlace_method == 0) { + if(bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8) { CERROR_TRY_RETURN(unfilter(in, in, w, h, bpp)); removePaddingBits(out, in, w * bpp, ((w * bpp + 7) / 8) * 8, h); } /*we can immediately filter into the out buffer, no other steps needed*/ else CERROR_TRY_RETURN(unfilter(out, in, w, h, bpp)); - } - else /*interlace_method is 1 (Adam7)*/ - { + } else /*interlace_method is 1 (Adam7)*/ { unsigned passw[7], passh[7]; size_t filter_passstart[8], padded_passstart[8], passstart[8]; unsigned i; Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - for(i = 0; i != 7; ++i) - { + for(i = 0; i != 7; ++i) { CERROR_TRY_RETURN(unfilter(&in[padded_passstart[i]], &in[filter_passstart[i]], passw[i], passh[i], bpp)); /*TODO: possible efficiency improvement: if in this reduced image the bits fit nicely in 1 scanline, move bytes instead of bits or move not at all*/ - if(bpp < 8) - { + if(bpp < 8) { /*remove padding bits in scanlines; after this there still may be padding bits between the different reduced images: each reduced image still starts nicely at a byte*/ removePaddingBits(&in[passstart[i]], &in[padded_passstart[i]], passw[i] * bpp, @@ -4205,21 +3898,18 @@ static unsigned postProcessScanlines(unsigned char* out, unsigned char* in, return 0; } -static unsigned readChunk_PLTE(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) -{ +static unsigned readChunk_PLTE(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) { unsigned pos = 0, i; if(color->palette) lodepng_free(color->palette); color->palettesize = chunkLength / 3; color->palette = (unsigned char*)lodepng_malloc(4 * color->palettesize); - if(!color->palette && color->palettesize) - { + if(!color->palette && color->palettesize) { color->palettesize = 0; return 83; /*alloc fail*/ } if(color->palettesize > 256) return 38; /*error: palette too big*/ - for(i = 0; i != color->palettesize; ++i) - { + for(i = 0; i != color->palettesize; ++i) { color->palette[4 * i + 0] = data[pos++]; /*R*/ color->palette[4 * i + 1] = data[pos++]; /*G*/ color->palette[4 * i + 2] = data[pos++]; /*B*/ @@ -4229,26 +3919,20 @@ static unsigned readChunk_PLTE(LodePNGColorMode* color, const unsigned char* dat return 0; /* OK */ } -static unsigned readChunk_tRNS(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) -{ +static unsigned readChunk_tRNS(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) { unsigned i; - if(color->colortype == LCT_PALETTE) - { + if(color->colortype == LCT_PALETTE) { /*error: more alpha values given than there are palette entries*/ - if(chunkLength > color->palettesize) return 38; + if(chunkLength > color->palettesize) return 39; for(i = 0; i != chunkLength; ++i) color->palette[4 * i + 3] = data[i]; - } - else if(color->colortype == LCT_GREY) - { - /*error: this chunk must be 2 bytes for greyscale image*/ + } else if(color->colortype == LCT_GREY) { + /*error: this chunk must be 2 bytes for grayscale image*/ if(chunkLength != 2) return 30; color->key_defined = 1; color->key_r = color->key_g = color->key_b = 256u * data[0] + data[1]; - } - else if(color->colortype == LCT_RGB) - { + } else if(color->colortype == LCT_RGB) { /*error: this chunk must be 6 bytes for RGB image*/ if(chunkLength != 6) return 41; @@ -4265,29 +3949,28 @@ static unsigned readChunk_tRNS(LodePNGColorMode* color, const unsigned char* dat #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS /*background color chunk (bKGD)*/ -static unsigned readChunk_bKGD(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) -{ - if(info->color.colortype == LCT_PALETTE) - { +static unsigned readChunk_bKGD(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(info->color.colortype == LCT_PALETTE) { /*error: this chunk must be 1 byte for indexed color image*/ if(chunkLength != 1) return 43; + /*error: invalid palette index, or maybe this chunk appeared before PLTE*/ + if(data[0] >= info->color.palettesize) return 103; + info->background_defined = 1; info->background_r = info->background_g = info->background_b = data[0]; - } - else if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) - { - /*error: this chunk must be 2 bytes for greyscale image*/ + } else if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) { + /*error: this chunk must be 2 bytes for grayscale image*/ if(chunkLength != 2) return 44; + /*the values are truncated to bitdepth in the PNG file*/ info->background_defined = 1; info->background_r = info->background_g = info->background_b = 256u * data[0] + data[1]; - } - else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) - { - /*error: this chunk must be 6 bytes for greyscale image*/ + } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) { + /*error: this chunk must be 6 bytes for grayscale image*/ if(chunkLength != 6) return 45; + /*the values are truncated to bitdepth in the PNG file*/ info->background_defined = 1; info->background_r = 256u * data[0] + data[1]; info->background_g = 256u * data[2] + data[3]; @@ -4298,14 +3981,12 @@ static unsigned readChunk_bKGD(LodePNGInfo* info, const unsigned char* data, siz } /*text chunk (tEXt)*/ -static unsigned readChunk_tEXt(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) -{ +static unsigned readChunk_tEXt(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { unsigned error = 0; char *key = 0, *str = 0; unsigned i; - while(!error) /*not really a while loop, only used to break on error*/ - { + while(!error) /*not really a while loop, only used to break on error*/ { unsigned length, string2_begin; length = 0; @@ -4322,7 +4003,7 @@ static unsigned readChunk_tEXt(LodePNGInfo* info, const unsigned char* data, siz string2_begin = length + 1; /*skip keyword null terminator*/ - length = chunkLength < string2_begin ? 0 : chunkLength - string2_begin; + length = (unsigned)(chunkLength < string2_begin ? 0 : chunkLength - string2_begin); str = (char*)lodepng_malloc(length + 1); if(!str) CERROR_BREAK(error, 83); /*alloc fail*/ @@ -4342,8 +4023,7 @@ static unsigned readChunk_tEXt(LodePNGInfo* info, const unsigned char* data, siz /*compressed text chunk (zTXt)*/ static unsigned readChunk_zTXt(LodePNGInfo* info, const LodePNGDecompressSettings* zlibsettings, - const unsigned char* data, size_t chunkLength) -{ + const unsigned char* data, size_t chunkLength) { unsigned error = 0; unsigned i; @@ -4353,8 +4033,7 @@ static unsigned readChunk_zTXt(LodePNGInfo* info, const LodePNGDecompressSetting ucvector_init(&decoded); - while(!error) /*not really a while loop, only used to break on error*/ - { + while(!error) /*not really a while loop, only used to break on error*/ { for(length = 0; length < chunkLength && data[length] != 0; ++length) ; if(length + 2 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/ if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/ @@ -4370,7 +4049,7 @@ static unsigned readChunk_zTXt(LodePNGInfo* info, const LodePNGDecompressSetting string2_begin = length + 2; if(string2_begin > chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/ - length = chunkLength - string2_begin; + length = (unsigned)chunkLength - string2_begin; /*will fail if zlib error, e.g. if length is too small*/ error = zlib_decompress(&decoded.data, &decoded.size, (unsigned char*)(&data[string2_begin]), @@ -4391,18 +4070,16 @@ static unsigned readChunk_zTXt(LodePNGInfo* info, const LodePNGDecompressSetting /*international text chunk (iTXt)*/ static unsigned readChunk_iTXt(LodePNGInfo* info, const LodePNGDecompressSettings* zlibsettings, - const unsigned char* data, size_t chunkLength) -{ + const unsigned char* data, size_t chunkLength) { unsigned error = 0; unsigned i; unsigned length, begin, compressed; char *key = 0, *langtag = 0, *transkey = 0; ucvector decoded; - ucvector_init(&decoded); + ucvector_init(&decoded); /* TODO: only use in case of compressed text */ - while(!error) /*not really a while loop, only used to break on error*/ - { + while(!error) /*not really a while loop, only used to break on error*/ { /*Quick check if the chunk length isn't too small. Even without check it'd still fail with other error checks below if it's too short. This just gives a different error code.*/ if(chunkLength < 5) CERROR_BREAK(error, 30); /*iTXt chunk too short*/ @@ -4450,10 +4127,9 @@ static unsigned readChunk_iTXt(LodePNGInfo* info, const LodePNGDecompressSetting /*read the actual text*/ begin += length + 1; - length = chunkLength < begin ? 0 : chunkLength - begin; + length = (unsigned)chunkLength < begin ? 0 : (unsigned)chunkLength - begin; - if(compressed) - { + if(compressed) { /*will fail if zlib error, e.g. if length is too small*/ error = zlib_decompress(&decoded.data, &decoded.size, (unsigned char*)(&data[begin]), @@ -4461,9 +4137,7 @@ static unsigned readChunk_iTXt(LodePNGInfo* info, const LodePNGDecompressSetting if(error) break; if(decoded.allocsize < decoded.size) decoded.allocsize = decoded.size; ucvector_push_back(&decoded, 0); - } - else - { + } else { if(!ucvector_resize(&decoded, length + 1)) CERROR_BREAK(error, 83 /*alloc fail*/); decoded.data[length] = 0; @@ -4483,8 +4157,7 @@ static unsigned readChunk_iTXt(LodePNGInfo* info, const LodePNGDecompressSetting return error; } -static unsigned readChunk_tIME(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) -{ +static unsigned readChunk_tIME(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { if(chunkLength != 7) return 73; /*invalid tIME chunk size*/ info->time_defined = 1; @@ -4498,8 +4171,7 @@ static unsigned readChunk_tIME(LodePNGInfo* info, const unsigned char* data, siz return 0; /* OK */ } -static unsigned readChunk_pHYs(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) -{ +static unsigned readChunk_pHYs(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { if(chunkLength != 9) return 74; /*invalid pHYs chunk size*/ info->phys_defined = 1; @@ -4509,20 +4181,148 @@ static unsigned readChunk_pHYs(LodePNGInfo* info, const unsigned char* data, siz return 0; /* OK */ } + +static unsigned readChunk_gAMA(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 4) return 96; /*invalid gAMA chunk size*/ + + info->gama_defined = 1; + info->gama_gamma = 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3]; + + return 0; /* OK */ +} + +static unsigned readChunk_cHRM(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 32) return 97; /*invalid cHRM chunk size*/ + + info->chrm_defined = 1; + info->chrm_white_x = 16777216u * data[ 0] + 65536u * data[ 1] + 256u * data[ 2] + data[ 3]; + info->chrm_white_y = 16777216u * data[ 4] + 65536u * data[ 5] + 256u * data[ 6] + data[ 7]; + info->chrm_red_x = 16777216u * data[ 8] + 65536u * data[ 9] + 256u * data[10] + data[11]; + info->chrm_red_y = 16777216u * data[12] + 65536u * data[13] + 256u * data[14] + data[15]; + info->chrm_green_x = 16777216u * data[16] + 65536u * data[17] + 256u * data[18] + data[19]; + info->chrm_green_y = 16777216u * data[20] + 65536u * data[21] + 256u * data[22] + data[23]; + info->chrm_blue_x = 16777216u * data[24] + 65536u * data[25] + 256u * data[26] + data[27]; + info->chrm_blue_y = 16777216u * data[28] + 65536u * data[29] + 256u * data[30] + data[31]; + + return 0; /* OK */ +} + +static unsigned readChunk_sRGB(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 1) return 98; /*invalid sRGB chunk size (this one is never ignored)*/ + + info->srgb_defined = 1; + info->srgb_intent = data[0]; + + return 0; /* OK */ +} + +static unsigned readChunk_iCCP(LodePNGInfo* info, const LodePNGDecompressSettings* zlibsettings, + const unsigned char* data, size_t chunkLength) { + unsigned error = 0; + unsigned i; + + unsigned length, string2_begin; + ucvector decoded; + + info->iccp_defined = 1; + if(info->iccp_name) lodepng_clear_icc(info); + + for(length = 0; length < chunkLength && data[length] != 0; ++length) ; + if(length + 2 >= chunkLength) return 75; /*no null termination, corrupt?*/ + if(length < 1 || length > 79) return 89; /*keyword too short or long*/ + + info->iccp_name = (char*)lodepng_malloc(length + 1); + if(!info->iccp_name) return 83; /*alloc fail*/ + + info->iccp_name[length] = 0; + for(i = 0; i != length; ++i) info->iccp_name[i] = (char)data[i]; + + if(data[length + 1] != 0) return 72; /*the 0 byte indicating compression must be 0*/ + + string2_begin = length + 2; + if(string2_begin > chunkLength) return 75; /*no null termination, corrupt?*/ + + length = (unsigned)chunkLength - string2_begin; + ucvector_init(&decoded); + error = zlib_decompress(&decoded.data, &decoded.size, + (unsigned char*)(&data[string2_begin]), + length, zlibsettings); + if(!error) { + info->iccp_profile_size = decoded.size; + info->iccp_profile = (unsigned char*)lodepng_malloc(decoded.size); + if(info->iccp_profile) { + memcpy(info->iccp_profile, decoded.data, decoded.size); + } else { + error = 83; /* alloc fail */ + } + } + ucvector_cleanup(&decoded); + return error; +} #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +unsigned lodepng_inspect_chunk(LodePNGState* state, size_t pos, + const unsigned char* in, size_t insize) { + const unsigned char* chunk = in + pos; + unsigned chunkLength; + const unsigned char* data; + unsigned unhandled = 0; + unsigned error = 0; + + if (pos + 4 > insize) return 30; + chunkLength = lodepng_chunk_length(chunk); + if(chunkLength > 2147483647) return 63; + data = lodepng_chunk_data_const(chunk); + if(data + chunkLength + 4 > in + insize) return 30; + + if(lodepng_chunk_type_equals(chunk, "PLTE")) { + error = readChunk_PLTE(&state->info_png.color, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "tRNS")) { + error = readChunk_tRNS(&state->info_png.color, data, chunkLength); +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + } else if(lodepng_chunk_type_equals(chunk, "bKGD")) { + error = readChunk_bKGD(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "tEXt")) { + error = readChunk_tEXt(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "zTXt")) { + error = readChunk_zTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "iTXt")) { + error = readChunk_iTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "tIME")) { + error = readChunk_tIME(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "pHYs")) { + error = readChunk_pHYs(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "gAMA")) { + error = readChunk_gAMA(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "cHRM")) { + error = readChunk_cHRM(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "sRGB")) { + error = readChunk_sRGB(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "iCCP")) { + error = readChunk_iCCP(&state->info_png, &state->decoder.zlibsettings, data, chunkLength); +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } else { + /* unhandled chunk is ok (is not an error) */ + unhandled = 1; + } + + if(!error && !unhandled && !state->decoder.ignore_crc) { + if(lodepng_chunk_check_crc(chunk)) return 57; /*invalid CRC*/ + } + + return error; +} + /*read a PNG, the result will be in the same color type as the PNG (hence "generic")*/ static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h, LodePNGState* state, - const unsigned char* in, size_t insize) -{ + const unsigned char* in, size_t insize) { unsigned char IEND = 0; const unsigned char* chunk; size_t i; ucvector idat; /*the data from idat chunks*/ ucvector scanlines; size_t predict; - size_t numpixels; size_t outsize = 0; /*for unknown chunk order*/ @@ -4531,129 +4331,126 @@ static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h, unsigned critical_pos = 1; /*1 = after IHDR, 2 = after PLTE, 3 = after IDAT*/ #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - /*provide some proper output values if error will happen*/ + + /* safe output values in case error happens */ *out = 0; + *w = *h = 0; state->error = lodepng_inspect(w, h, state, in, insize); /*reads header and resets other parameters in state->info_png*/ if(state->error) return; - numpixels = *w * *h; - - /*multiplication overflow*/ - if(*h != 0 && numpixels / *h != *w) CERROR_RETURN(state->error, 92); - /*multiplication overflow possible further below. Allows up to 2^31-1 pixel - bytes with 16-bit RGBA, the rest is room for filter bytes.*/ - if(numpixels > 268435455) CERROR_RETURN(state->error, 92); + if(lodepng_pixel_overflow(*w, *h, &state->info_png.color, &state->info_raw)) { + CERROR_RETURN(state->error, 92); /*overflow possible due to amount of pixels*/ + } ucvector_init(&idat); chunk = &in[33]; /*first byte of the first chunk after the header*/ /*loop through the chunks, ignoring unknown chunks and stopping at IEND chunk. IDAT data is put at the start of the in buffer*/ - while(!IEND && !state->error) - { + while(!IEND && !state->error) { unsigned chunkLength; const unsigned char* data; /*the data in the chunk*/ /*error: size of the in buffer too small to contain next chunk*/ - if((size_t)((chunk - in) + 12) > insize || chunk < in) CERROR_BREAK(state->error, 30); + if((size_t)((chunk - in) + 12) > insize || chunk < in) { + if(state->decoder.ignore_end) break; /*other errors may still happen though*/ + CERROR_BREAK(state->error, 30); + } /*length of the data of the chunk, excluding the length bytes, chunk type and CRC bytes*/ chunkLength = lodepng_chunk_length(chunk); /*error: chunk length larger than the max PNG chunk size*/ - if(chunkLength > 2147483647) CERROR_BREAK(state->error, 63); + if(chunkLength > 2147483647) { + if(state->decoder.ignore_end) break; /*other errors may still happen though*/ + CERROR_BREAK(state->error, 63); + } - if((size_t)((chunk - in) + chunkLength + 12) > insize || (chunk + chunkLength + 12) < in) - { + if((size_t)((chunk - in) + chunkLength + 12) > insize || (chunk + chunkLength + 12) < in) { CERROR_BREAK(state->error, 64); /*error: size of the in buffer too small to contain next chunk*/ } data = lodepng_chunk_data_const(chunk); + unknown = 0; + /*IDAT chunk, containing compressed image data*/ - if(lodepng_chunk_type_equals(chunk, "IDAT")) - { + if(lodepng_chunk_type_equals(chunk, "IDAT")) { size_t oldsize = idat.size; - if(!ucvector_resize(&idat, oldsize + chunkLength)) CERROR_BREAK(state->error, 83 /*alloc fail*/); + size_t newsize; + if(lodepng_addofl(oldsize, chunkLength, &newsize)) CERROR_BREAK(state->error, 95); + if(!ucvector_resize(&idat, newsize)) CERROR_BREAK(state->error, 83 /*alloc fail*/); for(i = 0; i != chunkLength; ++i) idat.data[oldsize + i] = data[i]; #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS critical_pos = 3; #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - } - /*IEND chunk*/ - else if(lodepng_chunk_type_equals(chunk, "IEND")) - { + } else if(lodepng_chunk_type_equals(chunk, "IEND")) { + /*IEND chunk*/ IEND = 1; - } - /*palette chunk (PLTE)*/ - else if(lodepng_chunk_type_equals(chunk, "PLTE")) - { + } else if(lodepng_chunk_type_equals(chunk, "PLTE")) { + /*palette chunk (PLTE)*/ state->error = readChunk_PLTE(&state->info_png.color, data, chunkLength); if(state->error) break; #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS critical_pos = 2; #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - } - /*palette transparency chunk (tRNS)*/ - else if(lodepng_chunk_type_equals(chunk, "tRNS")) - { + } else if(lodepng_chunk_type_equals(chunk, "tRNS")) { + /*palette transparency chunk (tRNS). Even though this one is an ancillary chunk , it is still compiled + in without 'LODEPNG_COMPILE_ANCILLARY_CHUNKS' because it contains essential color information that + affects the alpha channel of pixels. */ state->error = readChunk_tRNS(&state->info_png.color, data, chunkLength); if(state->error) break; - } #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*background color chunk (bKGD)*/ - else if(lodepng_chunk_type_equals(chunk, "bKGD")) - { + /*background color chunk (bKGD)*/ + } else if(lodepng_chunk_type_equals(chunk, "bKGD")) { state->error = readChunk_bKGD(&state->info_png, data, chunkLength); if(state->error) break; - } - /*text chunk (tEXt)*/ - else if(lodepng_chunk_type_equals(chunk, "tEXt")) - { - if(state->decoder.read_text_chunks) - { + } else if(lodepng_chunk_type_equals(chunk, "tEXt")) { + /*text chunk (tEXt)*/ + if(state->decoder.read_text_chunks) { state->error = readChunk_tEXt(&state->info_png, data, chunkLength); if(state->error) break; } - } - /*compressed text chunk (zTXt)*/ - else if(lodepng_chunk_type_equals(chunk, "zTXt")) - { - if(state->decoder.read_text_chunks) - { + } else if(lodepng_chunk_type_equals(chunk, "zTXt")) { + /*compressed text chunk (zTXt)*/ + if(state->decoder.read_text_chunks) { state->error = readChunk_zTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength); if(state->error) break; } - } - /*international text chunk (iTXt)*/ - else if(lodepng_chunk_type_equals(chunk, "iTXt")) - { - if(state->decoder.read_text_chunks) - { + } else if(lodepng_chunk_type_equals(chunk, "iTXt")) { + /*international text chunk (iTXt)*/ + if(state->decoder.read_text_chunks) { state->error = readChunk_iTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength); if(state->error) break; } - } - else if(lodepng_chunk_type_equals(chunk, "tIME")) - { + } else if(lodepng_chunk_type_equals(chunk, "tIME")) { state->error = readChunk_tIME(&state->info_png, data, chunkLength); if(state->error) break; - } - else if(lodepng_chunk_type_equals(chunk, "pHYs")) - { + } else if(lodepng_chunk_type_equals(chunk, "pHYs")) { state->error = readChunk_pHYs(&state->info_png, data, chunkLength); if(state->error) break; - } + } else if(lodepng_chunk_type_equals(chunk, "gAMA")) { + state->error = readChunk_gAMA(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "cHRM")) { + state->error = readChunk_cHRM(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "sRGB")) { + state->error = readChunk_sRGB(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "iCCP")) { + state->error = readChunk_iCCP(&state->info_png, &state->decoder.zlibsettings, data, chunkLength); + if(state->error) break; #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - else /*it's not an implemented chunk type, so ignore it: skip over the data*/ - { + } else /*it's not an implemented chunk type, so ignore it: skip over the data*/ { /*error: unknown critical chunk (5th bit of first byte of chunk type is 0)*/ - if(!lodepng_chunk_ancillary(chunk)) CERROR_BREAK(state->error, 69); + if(!state->decoder.ignore_critical && !lodepng_chunk_ancillary(chunk)) { + CERROR_BREAK(state->error, 69); + } unknown = 1; #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - if(state->decoder.remember_unknown_chunks) - { + if(state->decoder.remember_unknown_chunks) { state->error = lodepng_chunk_append(&state->info_png.unknown_chunks_data[critical_pos - 1], &state->info_png.unknown_chunks_size[critical_pos - 1], chunk); if(state->error) break; @@ -4661,8 +4458,7 @@ static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h, #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ } - if(!state->decoder.ignore_crc && !unknown) /*check CRC if wanted, only on known chunk types*/ - { + if(!state->decoder.ignore_crc && !unknown) /*check CRC if wanted, only on known chunk types*/ { if(lodepng_chunk_check_crc(chunk)) CERROR_BREAK(state->error, 57); /*invalid CRC*/ } @@ -4672,41 +4468,34 @@ static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h, ucvector_init(&scanlines); /*predict output size, to allocate exact size for output buffer to avoid more dynamic allocation. If the decompressed size does not match the prediction, the image must be corrupt.*/ - if(state->info_png.interlace_method == 0) - { - /*The extra *h is added because this are the filter bytes every scanline starts with*/ - predict = lodepng_get_raw_size_idat(*w, *h, &state->info_png.color) + *h; - } - else - { + if(state->info_png.interlace_method == 0) { + predict = lodepng_get_raw_size_idat(*w, *h, &state->info_png.color); + } else { /*Adam-7 interlaced: predicted size is the sum of the 7 sub-images sizes*/ const LodePNGColorMode* color = &state->info_png.color; predict = 0; - predict += lodepng_get_raw_size_idat((*w + 7) >> 3, (*h + 7) >> 3, color) + ((*h + 7) >> 3); - if(*w > 4) predict += lodepng_get_raw_size_idat((*w + 3) >> 3, (*h + 7) >> 3, color) + ((*h + 7) >> 3); - predict += lodepng_get_raw_size_idat((*w + 3) >> 2, (*h + 3) >> 3, color) + ((*h + 3) >> 3); - if(*w > 2) predict += lodepng_get_raw_size_idat((*w + 1) >> 2, (*h + 3) >> 2, color) + ((*h + 3) >> 2); - predict += lodepng_get_raw_size_idat((*w + 1) >> 1, (*h + 1) >> 2, color) + ((*h + 1) >> 2); - if(*w > 1) predict += lodepng_get_raw_size_idat((*w + 0) >> 1, (*h + 1) >> 1, color) + ((*h + 1) >> 1); - predict += lodepng_get_raw_size_idat((*w + 0), (*h + 0) >> 1, color) + ((*h + 0) >> 1); + predict += lodepng_get_raw_size_idat((*w + 7) >> 3, (*h + 7) >> 3, color); + if(*w > 4) predict += lodepng_get_raw_size_idat((*w + 3) >> 3, (*h + 7) >> 3, color); + predict += lodepng_get_raw_size_idat((*w + 3) >> 2, (*h + 3) >> 3, color); + if(*w > 2) predict += lodepng_get_raw_size_idat((*w + 1) >> 2, (*h + 3) >> 2, color); + predict += lodepng_get_raw_size_idat((*w + 1) >> 1, (*h + 1) >> 2, color); + if(*w > 1) predict += lodepng_get_raw_size_idat((*w + 0) >> 1, (*h + 1) >> 1, color); + predict += lodepng_get_raw_size_idat((*w + 0), (*h + 0) >> 1, color); } if(!state->error && !ucvector_reserve(&scanlines, predict)) state->error = 83; /*alloc fail*/ - if(!state->error) - { + if(!state->error) { state->error = zlib_decompress(&scanlines.data, &scanlines.size, idat.data, idat.size, &state->decoder.zlibsettings); if(!state->error && scanlines.size != predict) state->error = 91; /*decompressed size doesn't match prediction*/ } ucvector_cleanup(&idat); - if(!state->error) - { + if(!state->error) { outsize = lodepng_get_raw_size(*w, *h, &state->info_png.color); *out = (unsigned char*)lodepng_malloc(outsize); if(!*out) state->error = 83; /*alloc fail*/ } - if(!state->error) - { + if(!state->error) { for(i = 0; i < outsize; i++) (*out)[i] = 0; state->error = postProcessScanlines(*out, scanlines.data, *w, *h, &state->info_png); } @@ -4715,40 +4504,33 @@ static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h, unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h, LodePNGState* state, - const unsigned char* in, size_t insize) -{ + const unsigned char* in, size_t insize) { *out = 0; decodeGeneric(out, w, h, state, in, insize); if(state->error) return state->error; - if(!state->decoder.color_convert || lodepng_color_mode_equal(&state->info_raw, &state->info_png.color)) - { + if(!state->decoder.color_convert || lodepng_color_mode_equal(&state->info_raw, &state->info_png.color)) { /*same color type, no copying or converting of data needed*/ /*store the info_png color settings on the info_raw so that the info_raw still reflects what colortype the raw image has to the end user*/ - if(!state->decoder.color_convert) - { + if(!state->decoder.color_convert) { state->error = lodepng_color_mode_copy(&state->info_raw, &state->info_png.color); if(state->error) return state->error; } - } - else - { + } else { /*color conversion needed; sort of copy of the data*/ unsigned char* data = *out; size_t outsize; /*TODO: check if this works according to the statement in the documentation: "The converter can convert - from greyscale input color type, to 8-bit greyscale or greyscale with alpha"*/ + from grayscale input color type, to 8-bit grayscale or grayscale with alpha"*/ if(!(state->info_raw.colortype == LCT_RGB || state->info_raw.colortype == LCT_RGBA) - && !(state->info_raw.bitdepth == 8)) - { + && !(state->info_raw.bitdepth == 8)) { return 56; /*unsupported color mode conversion*/ } outsize = lodepng_get_raw_size(*w, *h, &state->info_raw); *out = (unsigned char*)lodepng_malloc(outsize); - if(!(*out)) - { + if(!(*out)) { state->error = 83; /*alloc fail*/ } else state->error = lodepng_convert(*out, data, &state->info_raw, @@ -4759,8 +4541,7 @@ unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h, } unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, - size_t insize, LodePNGColorType colortype, unsigned bitdepth) -{ + size_t insize, LodePNGColorType colortype, unsigned bitdepth) { unsigned error; LodePNGState state; lodepng_state_init(&state); @@ -4771,48 +4552,47 @@ unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h, co return error; } -unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) -{ +unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) { return lodepng_decode_memory(out, w, h, in, insize, LCT_RGBA, 8); } -unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) -{ +unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) { return lodepng_decode_memory(out, w, h, in, insize, LCT_RGB, 8); } #ifdef LODEPNG_COMPILE_DISK unsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename, - LodePNGColorType colortype, unsigned bitdepth) -{ + LodePNGColorType colortype, unsigned bitdepth) { unsigned char* buffer = 0; size_t buffersize; unsigned error; + /* safe output values in case error happens */ + *out = 0; + *w = *h = 0; error = lodepng_load_file(&buffer, &buffersize, filename); if(!error) error = lodepng_decode_memory(out, w, h, buffer, buffersize, colortype, bitdepth); lodepng_free(buffer); return error; } -unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) -{ +unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) { return lodepng_decode_file(out, w, h, filename, LCT_RGBA, 8); } -unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) -{ +unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) { return lodepng_decode_file(out, w, h, filename, LCT_RGB, 8); } #endif /*LODEPNG_COMPILE_DISK*/ -void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings) -{ +void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings) { settings->color_convert = 1; #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS settings->read_text_chunks = 1; settings->remember_unknown_chunks = 0; #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ settings->ignore_crc = 0; + settings->ignore_critical = 0; + settings->ignore_end = 0; lodepng_decompress_settings_init(&settings->zlibsettings); } @@ -4820,8 +4600,7 @@ void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings) #if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) -void lodepng_state_init(LodePNGState* state) -{ +void lodepng_state_init(LodePNGState* state) { #ifdef LODEPNG_COMPILE_DECODER lodepng_decoder_settings_init(&state->decoder); #endif /*LODEPNG_COMPILE_DECODER*/ @@ -4833,14 +4612,12 @@ void lodepng_state_init(LodePNGState* state) state->error = 1; } -void lodepng_state_cleanup(LodePNGState* state) -{ +void lodepng_state_cleanup(LodePNGState* state) { lodepng_color_mode_cleanup(&state->info_raw); lodepng_info_cleanup(&state->info_png); } -void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source) -{ +void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source) { lodepng_state_cleanup(dest); *dest = *source; lodepng_color_mode_init(&dest->info_raw); @@ -4858,15 +4635,13 @@ void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source) /* ////////////////////////////////////////////////////////////////////////// */ /*chunkName must be string of 4 characters*/ -static unsigned addChunk(ucvector* out, const char* chunkName, const unsigned char* data, size_t length) -{ +static unsigned addChunk(ucvector* out, const char* chunkName, const unsigned char* data, size_t length) { CERROR_TRY_RETURN(lodepng_chunk_create(&out->data, &out->size, (unsigned)length, chunkName, data)); out->allocsize = out->size; /*fix the allocsize again*/ return 0; } -static void writeSignature(ucvector* out) -{ +static void writeSignature(ucvector* out) { /*8 bytes PNG signature, aka the magic bytes*/ ucvector_push_back(out, 137); ucvector_push_back(out, 80); @@ -4879,8 +4654,7 @@ static void writeSignature(ucvector* out) } static unsigned addChunk_IHDR(ucvector* out, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth, unsigned interlace_method) -{ + LodePNGColorType colortype, unsigned bitdepth, unsigned interlace_method) { unsigned error = 0; ucvector header; ucvector_init(&header); @@ -4899,14 +4673,12 @@ static unsigned addChunk_IHDR(ucvector* out, unsigned w, unsigned h, return error; } -static unsigned addChunk_PLTE(ucvector* out, const LodePNGColorMode* info) -{ +static unsigned addChunk_PLTE(ucvector* out, const LodePNGColorMode* info) { unsigned error = 0; size_t i; ucvector PLTE; ucvector_init(&PLTE); - for(i = 0; i != info->palettesize * 4; ++i) - { + for(i = 0; i != info->palettesize * 4; ++i) { /*add all channels except alpha channel*/ if(i % 4 != 3) ucvector_push_back(&PLTE, info->palette[i]); } @@ -4916,36 +4688,27 @@ static unsigned addChunk_PLTE(ucvector* out, const LodePNGColorMode* info) return error; } -static unsigned addChunk_tRNS(ucvector* out, const LodePNGColorMode* info) -{ +static unsigned addChunk_tRNS(ucvector* out, const LodePNGColorMode* info) { unsigned error = 0; size_t i; ucvector tRNS; ucvector_init(&tRNS); - if(info->colortype == LCT_PALETTE) - { + if(info->colortype == LCT_PALETTE) { size_t amount = info->palettesize; /*the tail of palette values that all have 255 as alpha, does not have to be encoded*/ - for(i = info->palettesize; i != 0; --i) - { + for(i = info->palettesize; i != 0; --i) { if(info->palette[4 * (i - 1) + 3] == 255) --amount; else break; } /*add only alpha channel*/ for(i = 0; i != amount; ++i) ucvector_push_back(&tRNS, info->palette[4 * i + 3]); - } - else if(info->colortype == LCT_GREY) - { - if(info->key_defined) - { + } else if(info->colortype == LCT_GREY) { + if(info->key_defined) { ucvector_push_back(&tRNS, (unsigned char)(info->key_r >> 8)); ucvector_push_back(&tRNS, (unsigned char)(info->key_r & 255)); } - } - else if(info->colortype == LCT_RGB) - { - if(info->key_defined) - { + } else if(info->colortype == LCT_RGB) { + if(info->key_defined) { ucvector_push_back(&tRNS, (unsigned char)(info->key_r >> 8)); ucvector_push_back(&tRNS, (unsigned char)(info->key_r & 255)); ucvector_push_back(&tRNS, (unsigned char)(info->key_g >> 8)); @@ -4962,8 +4725,7 @@ static unsigned addChunk_tRNS(ucvector* out, const LodePNGColorMode* info) } static unsigned addChunk_IDAT(ucvector* out, const unsigned char* data, size_t datasize, - LodePNGCompressSettings* zlibsettings) -{ + LodePNGCompressSettings* zlibsettings) { ucvector zlibdata; unsigned error = 0; @@ -4976,8 +4738,7 @@ static unsigned addChunk_IDAT(ucvector* out, const unsigned char* data, size_t d return error; } -static unsigned addChunk_IEND(ucvector* out) -{ +static unsigned addChunk_IEND(ucvector* out) { unsigned error = 0; error = addChunk(out, "IEND", 0, 0); return error; @@ -4985,8 +4746,7 @@ static unsigned addChunk_IEND(ucvector* out) #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -static unsigned addChunk_tEXt(ucvector* out, const char* keyword, const char* textstring) -{ +static unsigned addChunk_tEXt(ucvector* out, const char* keyword, const char* textstring) { unsigned error = 0; size_t i; ucvector text; @@ -5002,8 +4762,7 @@ static unsigned addChunk_tEXt(ucvector* out, const char* keyword, const char* te } static unsigned addChunk_zTXt(ucvector* out, const char* keyword, const char* textstring, - LodePNGCompressSettings* zlibsettings) -{ + LodePNGCompressSettings* zlibsettings) { unsigned error = 0; ucvector data, compressed; size_t i, textsize = strlen(textstring); @@ -5017,8 +4776,7 @@ static unsigned addChunk_zTXt(ucvector* out, const char* keyword, const char* te error = zlib_compress(&compressed.data, &compressed.size, (unsigned char*)textstring, textsize, zlibsettings); - if(!error) - { + if(!error) { for(i = 0; i != compressed.size; ++i) ucvector_push_back(&data, compressed.data[i]); error = addChunk(out, "zTXt", data.data, data.size); } @@ -5029,8 +4787,7 @@ static unsigned addChunk_zTXt(ucvector* out, const char* keyword, const char* te } static unsigned addChunk_iTXt(ucvector* out, unsigned compressed, const char* keyword, const char* langtag, - const char* transkey, const char* textstring, LodePNGCompressSettings* zlibsettings) -{ + const char* transkey, const char* textstring, LodePNGCompressSettings* zlibsettings) { unsigned error = 0; ucvector data; size_t i, textsize = strlen(textstring); @@ -5047,20 +4804,16 @@ static unsigned addChunk_iTXt(ucvector* out, unsigned compressed, const char* ke for(i = 0; transkey[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)transkey[i]); ucvector_push_back(&data, 0); /*null termination char*/ - if(compressed) - { + if(compressed) { ucvector compressed_data; ucvector_init(&compressed_data); error = zlib_compress(&compressed_data.data, &compressed_data.size, (unsigned char*)textstring, textsize, zlibsettings); - if(!error) - { + if(!error) { for(i = 0; i != compressed_data.size; ++i) ucvector_push_back(&data, compressed_data.data[i]); } ucvector_cleanup(&compressed_data); - } - else /*not compressed*/ - { + } else /*not compressed*/ { for(i = 0; textstring[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)textstring[i]); } @@ -5069,27 +4822,21 @@ static unsigned addChunk_iTXt(ucvector* out, unsigned compressed, const char* ke return error; } -static unsigned addChunk_bKGD(ucvector* out, const LodePNGInfo* info) -{ +static unsigned addChunk_bKGD(ucvector* out, const LodePNGInfo* info) { unsigned error = 0; ucvector bKGD; ucvector_init(&bKGD); - if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) - { + if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) { ucvector_push_back(&bKGD, (unsigned char)(info->background_r >> 8)); ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255)); - } - else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) - { + } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) { ucvector_push_back(&bKGD, (unsigned char)(info->background_r >> 8)); ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255)); ucvector_push_back(&bKGD, (unsigned char)(info->background_g >> 8)); ucvector_push_back(&bKGD, (unsigned char)(info->background_g & 255)); ucvector_push_back(&bKGD, (unsigned char)(info->background_b >> 8)); ucvector_push_back(&bKGD, (unsigned char)(info->background_b & 255)); - } - else if(info->color.colortype == LCT_PALETTE) - { + } else if(info->color.colortype == LCT_PALETTE) { ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255)); /*palette index*/ } @@ -5099,8 +4846,7 @@ static unsigned addChunk_bKGD(ucvector* out, const LodePNGInfo* info) return error; } -static unsigned addChunk_tIME(ucvector* out, const LodePNGTime* time) -{ +static unsigned addChunk_tIME(ucvector* out, const LodePNGTime* time) { unsigned error = 0; unsigned char* data = (unsigned char*)lodepng_malloc(7); if(!data) return 83; /*alloc fail*/ @@ -5116,8 +4862,7 @@ static unsigned addChunk_tIME(ucvector* out, const LodePNGTime* time) return error; } -static unsigned addChunk_pHYs(ucvector* out, const LodePNGInfo* info) -{ +static unsigned addChunk_pHYs(ucvector* out, const LodePNGInfo* info) { unsigned error = 0; ucvector data; ucvector_init(&data); @@ -5132,14 +4877,74 @@ static unsigned addChunk_pHYs(ucvector* out, const LodePNGInfo* info) return error; } +static unsigned addChunk_gAMA(ucvector* out, const LodePNGInfo* info) { + unsigned error = 0; + ucvector data; + ucvector_init(&data); + + lodepng_add32bitInt(&data, info->gama_gamma); + + error = addChunk(out, "gAMA", data.data, data.size); + ucvector_cleanup(&data); + + return error; +} + +static unsigned addChunk_cHRM(ucvector* out, const LodePNGInfo* info) { + unsigned error = 0; + ucvector data; + ucvector_init(&data); + + lodepng_add32bitInt(&data, info->chrm_white_x); + lodepng_add32bitInt(&data, info->chrm_white_y); + lodepng_add32bitInt(&data, info->chrm_red_x); + lodepng_add32bitInt(&data, info->chrm_red_y); + lodepng_add32bitInt(&data, info->chrm_green_x); + lodepng_add32bitInt(&data, info->chrm_green_y); + lodepng_add32bitInt(&data, info->chrm_blue_x); + lodepng_add32bitInt(&data, info->chrm_blue_y); + + error = addChunk(out, "cHRM", data.data, data.size); + ucvector_cleanup(&data); + + return error; +} + +static unsigned addChunk_sRGB(ucvector* out, const LodePNGInfo* info) { + unsigned char data = info->srgb_intent; + return addChunk(out, "sRGB", &data, 1); +} + +static unsigned addChunk_iCCP(ucvector* out, const LodePNGInfo* info, LodePNGCompressSettings* zlibsettings) { + unsigned error = 0; + ucvector data, compressed; + size_t i; + + ucvector_init(&data); + ucvector_init(&compressed); + for(i = 0; info->iccp_name[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)info->iccp_name[i]); + if(i < 1 || i > 79) return 89; /*error: invalid keyword size*/ + ucvector_push_back(&data, 0); /*0 termination char*/ + ucvector_push_back(&data, 0); /*compression method: 0*/ + + error = zlib_compress(&compressed.data, &compressed.size, + info->iccp_profile, info->iccp_profile_size, zlibsettings); + if(!error) { + for(i = 0; i != compressed.size; ++i) ucvector_push_back(&data, compressed.data[i]); + error = addChunk(out, "iCCP", data.data, data.size); + } + + ucvector_cleanup(&compressed); + ucvector_cleanup(&data); + return error; +} + #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ static void filterScanline(unsigned char* out, const unsigned char* scanline, const unsigned char* prevline, - size_t length, size_t bytewidth, unsigned char filterType) -{ + size_t length, size_t bytewidth, unsigned char filterType) { size_t i; - switch(filterType) - { + switch(filterType) { case 0: /*None*/ for(i = 0; i != length; ++i) out[i] = scanline[i]; break; @@ -5148,39 +4953,29 @@ static void filterScanline(unsigned char* out, const unsigned char* scanline, co for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - scanline[i - bytewidth]; break; case 2: /*Up*/ - if(prevline) - { + if(prevline) { for(i = 0; i != length; ++i) out[i] = scanline[i] - prevline[i]; - } - else - { + } else { for(i = 0; i != length; ++i) out[i] = scanline[i]; } break; case 3: /*Average*/ - if(prevline) - { + if(prevline) { for(i = 0; i != bytewidth; ++i) out[i] = scanline[i] - (prevline[i] >> 1); for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - ((scanline[i - bytewidth] + prevline[i]) >> 1); - } - else - { + } else { for(i = 0; i != bytewidth; ++i) out[i] = scanline[i]; for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - (scanline[i - bytewidth] >> 1); } break; case 4: /*Paeth*/ - if(prevline) - { + if(prevline) { /*paethPredictor(0, prevline[i], 0) is always prevline[i]*/ for(i = 0; i != bytewidth; ++i) out[i] = (scanline[i] - prevline[i]); - for(i = bytewidth; i < length; ++i) - { + for(i = bytewidth; i < length; ++i) { out[i] = (scanline[i] - paethPredictor(scanline[i - bytewidth], prevline[i], prevline[i - bytewidth])); } - } - else - { + } else { for(i = 0; i != bytewidth; ++i) out[i] = scanline[i]; /*paethPredictor(scanline[i - bytewidth], 0, 0) is always scanline[i - bytewidth]*/ for(i = bytewidth; i < length; ++i) out[i] = (scanline[i] - scanline[i - bytewidth]); @@ -5191,8 +4986,7 @@ static void filterScanline(unsigned char* out, const unsigned char* scanline, co } /* log2 approximation. A slight bit faster than std::log. */ -static float flog2(float f) -{ +static float flog2(float f) { float result = 0; while(f > 32) { result += 4; f /= 16; } while(f > 2) { ++result; f /= 2; } @@ -5200,8 +4994,7 @@ static float flog2(float f) } static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, - const LodePNGColorMode* info, const LodePNGEncoderSettings* settings) -{ + const LodePNGColorMode* info, const LodePNGEncoderSettings* settings) { /* For PNG filter method 0 out must be a buffer with as size: h + (w * h * bpp + 7) / 8, because there are @@ -5236,50 +5029,38 @@ static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, if(bpp == 0) return 31; /*error: invalid color type*/ - if(strategy == LFS_ZERO) - { - for(y = 0; y != h; ++y) - { + if(strategy == LFS_ZERO) { + for(y = 0; y != h; ++y) { size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ size_t inindex = linebytes * y; out[outindex] = 0; /*filter type byte*/ filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, 0); prevline = &in[inindex]; } - } - else if(strategy == LFS_MINSUM) - { + } else if(strategy == LFS_MINSUM) { /*adaptive filtering*/ size_t sum[5]; unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ size_t smallest = 0; unsigned char type, bestType = 0; - for(type = 0; type != 5; ++type) - { + for(type = 0; type != 5; ++type) { attempt[type] = (unsigned char*)lodepng_malloc(linebytes); if(!attempt[type]) return 83; /*alloc fail*/ } - if(!error) - { - for(y = 0; y != h; ++y) - { + if(!error) { + for(y = 0; y != h; ++y) { /*try the 5 filter types*/ - for(type = 0; type != 5; ++type) - { + for(type = 0; type != 5; ++type) { filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); /*calculate the sum of the result*/ sum[type] = 0; - if(type == 0) - { + if(type == 0) { for(x = 0; x != linebytes; ++x) sum[type] += (unsigned char)(attempt[type][x]); - } - else - { - for(x = 0; x != linebytes; ++x) - { + } else { + for(x = 0; x != linebytes; ++x) { /*For differences, each byte should be treated as signed, values above 127 are negative (converted to signed char). Filtertype 0 isn't a difference though, so use unsigned there. This means filtertype 0 is almost never chosen, but that is justified.*/ @@ -5289,8 +5070,7 @@ static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, } /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/ - if(type == 0 || sum[type] < smallest) - { + if(type == 0 || sum[type] < smallest) { bestType = type; smallest = sum[type]; } @@ -5305,39 +5085,32 @@ static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, } for(type = 0; type != 5; ++type) lodepng_free(attempt[type]); - } - else if(strategy == LFS_ENTROPY) - { + } else if(strategy == LFS_ENTROPY) { float sum[5]; unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ float smallest = 0; unsigned type, bestType = 0; unsigned count[256]; - for(type = 0; type != 5; ++type) - { + for(type = 0; type != 5; ++type) { attempt[type] = (unsigned char*)lodepng_malloc(linebytes); if(!attempt[type]) return 83; /*alloc fail*/ } - for(y = 0; y != h; ++y) - { + for(y = 0; y != h; ++y) { /*try the 5 filter types*/ - for(type = 0; type != 5; ++type) - { + for(type = 0; type != 5; ++type) { filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); for(x = 0; x != 256; ++x) count[x] = 0; for(x = 0; x != linebytes; ++x) ++count[attempt[type][x]]; ++count[type]; /*the filter type itself is part of the scanline*/ sum[type] = 0; - for(x = 0; x != 256; ++x) - { + for(x = 0; x != 256; ++x) { float p = count[x] / (float)(linebytes + 1); sum[type] += count[x] == 0 ? 0 : flog2(1 / p) * p; } /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/ - if(type == 0 || sum[type] < smallest) - { + if(type == 0 || sum[type] < smallest) { bestType = type; smallest = sum[type]; } @@ -5351,11 +5124,8 @@ static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, } for(type = 0; type != 5; ++type) lodepng_free(attempt[type]); - } - else if(strategy == LFS_PREDEFINED) - { - for(y = 0; y != h; ++y) - { + } else if(strategy == LFS_PREDEFINED) { + for(y = 0; y != h; ++y) { size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ size_t inindex = linebytes * y; unsigned char type = settings->predefined_filters[y]; @@ -5363,9 +5133,7 @@ static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, type); prevline = &in[inindex]; } - } - else if(strategy == LFS_BRUTE_FORCE) - { + } else if(strategy == LFS_BRUTE_FORCE) { /*brute force filter chooser. deflate the scanline after every filter attempt to see which one deflates best. This is very slow and gives only slightly smaller, sometimes even larger, result*/ @@ -5384,16 +5152,13 @@ static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, images only, so disable it*/ zlibsettings.custom_zlib = 0; zlibsettings.custom_deflate = 0; - for(type = 0; type != 5; ++type) - { + for(type = 0; type != 5; ++type) { attempt[type] = (unsigned char*)lodepng_malloc(linebytes); if(!attempt[type]) return 83; /*alloc fail*/ } - for(y = 0; y != h; ++y) /*try the 5 filter types*/ - { - for(type = 0; type != 5; ++type) - { - unsigned testsize = linebytes; + for(y = 0; y != h; ++y) /*try the 5 filter types*/ { + for(type = 0; type != 5; ++type) { + unsigned testsize = (unsigned)linebytes; /*if(testsize > 8) testsize /= 8;*/ /*it already works good enough by testing a part of the row*/ filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); @@ -5402,8 +5167,7 @@ static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, zlib_compress(&dummy, &size[type], attempt[type], testsize, &zlibsettings); lodepng_free(dummy); /*check if this is smallest size (or if type == 0 it's the first case so always store the values)*/ - if(type == 0 || size[type] < smallest) - { + if(type == 0 || size[type] < smallest) { bestType = type; smallest = size[type]; } @@ -5420,18 +5184,15 @@ static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, } static void addPaddingBits(unsigned char* out, const unsigned char* in, - size_t olinebits, size_t ilinebits, unsigned h) -{ + size_t olinebits, size_t ilinebits, unsigned h) { /*The opposite of the removePaddingBits function olinebits must be >= ilinebits*/ unsigned y; size_t diff = olinebits - ilinebits; size_t obp = 0, ibp = 0; /*bit pointers*/ - for(y = 0; y != h; ++y) - { + for(y = 0; y != h; ++y) { size_t x; - for(x = 0; x < ilinebits; ++x) - { + for(x = 0; x < ilinebits; ++x) { unsigned char bit = readBitFromReversedStream(&ibp, in); setBitOfReversedStream(&obp, out, bit); } @@ -5452,47 +5213,37 @@ in has the following size in bits: w * h * bpp. out is possibly bigger due to padding bits between reduced images NOTE: comments about padding bits are only relevant if bpp < 8 */ -static void Adam7_interlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) -{ +static void Adam7_interlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) { unsigned passw[7], passh[7]; size_t filter_passstart[8], padded_passstart[8], passstart[8]; unsigned i; Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - if(bpp >= 8) - { - for(i = 0; i != 7; ++i) - { + if(bpp >= 8) { + for(i = 0; i != 7; ++i) { unsigned x, y, b; size_t bytewidth = bpp / 8; for(y = 0; y < passh[i]; ++y) - for(x = 0; x < passw[i]; ++x) - { + for(x = 0; x < passw[i]; ++x) { size_t pixelinstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + ADAM7_IX[i] + x * ADAM7_DX[i]) * bytewidth; size_t pixeloutstart = passstart[i] + (y * passw[i] + x) * bytewidth; - for(b = 0; b < bytewidth; ++b) - { + for(b = 0; b < bytewidth; ++b) { out[pixeloutstart + b] = in[pixelinstart + b]; } } } - } - else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ - { - for(i = 0; i != 7; ++i) - { + } else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ { + for(i = 0; i != 7; ++i) { unsigned x, y, b; unsigned ilinebits = bpp * passw[i]; unsigned olinebits = bpp * w; size_t obp, ibp; /*bit pointers (for out and in buffer)*/ for(y = 0; y < passh[i]; ++y) - for(x = 0; x < passw[i]; ++x) - { + for(x = 0; x < passw[i]; ++x) { ibp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp; obp = (8 * passstart[i]) + (y * ilinebits + x * bpp); - for(b = 0; b < bpp; ++b) - { + for(b = 0; b < bpp; ++b) { unsigned char bit = readBitFromReversedStream(&ibp, in); setBitOfReversedStream(&obp, out, bit); } @@ -5505,8 +5256,7 @@ static void Adam7_interlace(unsigned char* out, const unsigned char* in, unsigne return value is error**/ static unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const unsigned char* in, unsigned w, unsigned h, - const LodePNGInfo* info_png, const LodePNGEncoderSettings* settings) -{ + const LodePNGInfo* info_png, const LodePNGEncoderSettings* settings) { /* This function converts the pure 2D image with the PNG's colortype, into filtered-padded-interlaced data. Steps: *) if no Adam7: 1) add padding bits (= posible extra bits per scanline if bpp < 8) 2) filter @@ -5515,35 +5265,27 @@ static unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const unsigned bpp = lodepng_get_bpp(&info_png->color); unsigned error = 0; - if(info_png->interlace_method == 0) - { + if(info_png->interlace_method == 0) { *outsize = h + (h * ((w * bpp + 7) / 8)); /*image size plus an extra byte per scanline + possible padding bits*/ *out = (unsigned char*)lodepng_malloc(*outsize); if(!(*out) && (*outsize)) error = 83; /*alloc fail*/ - if(!error) - { + if(!error) { /*non multiple of 8 bits per scanline, padding bits needed per scanline*/ - if(bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8) - { + if(bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8) { unsigned char* padded = (unsigned char*)lodepng_malloc(h * ((w * bpp + 7) / 8)); if(!padded) error = 83; /*alloc fail*/ - if(!error) - { + if(!error) { addPaddingBits(padded, in, ((w * bpp + 7) / 8) * 8, w * bpp, h); error = filter(*out, padded, w, h, &info_png->color, settings); } lodepng_free(padded); - } - else - { + } else { /*we can immediately filter into the out buffer, no other steps needed*/ error = filter(*out, in, w, h, &info_png->color, settings); } } - } - else /*interlace_method is 1 (Adam7)*/ - { + } else /*interlace_method is 1 (Adam7)*/ { unsigned passw[7], passh[7]; size_t filter_passstart[8], padded_passstart[8], passstart[8]; unsigned char* adam7; @@ -5557,15 +5299,12 @@ static unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const adam7 = (unsigned char*)lodepng_malloc(passstart[7]); if(!adam7 && passstart[7]) error = 83; /*alloc fail*/ - if(!error) - { + if(!error) { unsigned i; Adam7_interlace(adam7, in, w, h, bpp); - for(i = 0; i != 7; ++i) - { - if(bpp < 8) - { + for(i = 0; i != 7; ++i) { + if(bpp < 8) { unsigned char* padded = (unsigned char*)lodepng_malloc(padded_passstart[i + 1] - padded_passstart[i]); if(!padded) ERROR_BREAK(83); /*alloc fail*/ addPaddingBits(padded, &adam7[passstart[i]], @@ -5573,9 +5312,7 @@ static unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const error = filter(&(*out)[filter_passstart[i]], padded, passw[i], passh[i], &info_png->color, settings); lodepng_free(padded); - } - else - { + } else { error = filter(&(*out)[filter_passstart[i]], &adam7[padded_passstart[i]], passw[i], passh[i], &info_png->color, settings); } @@ -5596,15 +5333,12 @@ returns 0 if the palette is opaque, returns 1 if the palette has a single color with alpha 0 ==> color key returns 2 if the palette is semi-translucent. */ -static unsigned getPaletteTranslucency(const unsigned char* palette, size_t palettesize) -{ +static unsigned getPaletteTranslucency(const unsigned char* palette, size_t palettesize) { size_t i; unsigned key = 0; unsigned r = 0, g = 0, b = 0; /*the value of the color with alpha 0, so long as color keying is possible*/ - for(i = 0; i != palettesize; ++i) - { - if(!key && palette[4 * i + 3] == 0) - { + for(i = 0; i != palettesize; ++i) { + if(!key && palette[4 * i + 3] == 0) { r = palette[4 * i + 0]; g = palette[4 * i + 1]; b = palette[4 * i + 2]; key = 1; i = (size_t)(-1); /*restart from beginning, to detect earlier opaque colors with key's value*/ @@ -5617,82 +5351,152 @@ static unsigned getPaletteTranslucency(const unsigned char* palette, size_t pale } #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -static unsigned addUnknownChunks(ucvector* out, unsigned char* data, size_t datasize) -{ +static unsigned addUnknownChunks(ucvector* out, unsigned char* data, size_t datasize) { unsigned char* inchunk = data; - while((size_t)(inchunk - data) < datasize) - { + while((size_t)(inchunk - data) < datasize) { CERROR_TRY_RETURN(lodepng_chunk_append(&out->data, &out->size, inchunk)); out->allocsize = out->size; /*fix the allocsize again*/ inchunk = lodepng_chunk_next(inchunk); } return 0; } + +static unsigned isGrayICCProfile(const unsigned char* profile, unsigned size) { + /* + It is a gray profile if bytes 16-19 are "GRAY", rgb profile if bytes 16-19 + are "RGB ". We do not perform any full parsing of the ICC profile here, other + than check those 4 bytes to grayscale profile. Other than that, validity of + the profile is not checked. This is needed only because the PNG specification + requires using a non-gray color model if there is an ICC profile with "RGB " + (sadly limiting compression opportunities if the input data is grayscale RGB + data), and requires using a gray color model if it is "GRAY". + */ + if(size < 20) return 0; + return profile[16] == 'G' && profile[17] == 'R' && profile[18] == 'A' && profile[19] == 'Y'; +} + +static unsigned isRGBICCProfile(const unsigned char* profile, unsigned size) { + /* See comment in isGrayICCProfile*/ + if(size < 20) return 0; + return profile[16] == 'R' && profile[17] == 'G' && profile[18] == 'B' && profile[19] == ' '; +} #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ unsigned lodepng_encode(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h, - LodePNGState* state) -{ - LodePNGInfo info; - ucvector outv; + LodePNGState* state) { unsigned char* data = 0; /*uncompressed version of the IDAT chunk data*/ size_t datasize = 0; + ucvector outv; + LodePNGInfo info; + + ucvector_init(&outv); + lodepng_info_init(&info); /*provide some proper output values if error will happen*/ *out = 0; *outsize = 0; state->error = 0; - lodepng_info_init(&info); - lodepng_info_copy(&info, &state->info_png); - - if((info.color.colortype == LCT_PALETTE || state->encoder.force_palette) - && (info.color.palettesize == 0 || info.color.palettesize > 256)) - { + /*check input values validity*/ + if((state->info_png.color.colortype == LCT_PALETTE || state->encoder.force_palette) + && (state->info_png.color.palettesize == 0 || state->info_png.color.palettesize > 256)) { state->error = 68; /*invalid palette size, it is only allowed to be 1-256*/ - return state->error; + goto cleanup; } - - if(state->encoder.auto_convert) - { - state->error = lodepng_auto_choose_color(&info.color, image, w, h, &state->info_raw); + if(state->encoder.zlibsettings.btype > 2) { + state->error = 61; /*error: unexisting btype*/ + goto cleanup; } - if(state->error) return state->error; - - if(state->encoder.zlibsettings.btype > 2) - { - CERROR_RETURN_ERROR(state->error, 61); /*error: unexisting btype*/ + if(state->info_png.interlace_method > 1) { + state->error = 71; /*error: unexisting interlace mode*/ + goto cleanup; } - if(state->info_png.interlace_method > 1) - { - CERROR_RETURN_ERROR(state->error, 71); /*error: unexisting interlace mode*/ - } - - state->error = checkColorValidity(info.color.colortype, info.color.bitdepth); - if(state->error) return state->error; /*error: unexisting color type given*/ + state->error = checkColorValidity(state->info_png.color.colortype, state->info_png.color.bitdepth); + if(state->error) goto cleanup; /*error: unexisting color type given*/ state->error = checkColorValidity(state->info_raw.colortype, state->info_raw.bitdepth); - if(state->error) return state->error; /*error: unexisting color type given*/ + if(state->error) goto cleanup; /*error: unexisting color type given*/ - if(!lodepng_color_mode_equal(&state->info_raw, &info.color)) - { + /* color convert and compute scanline filter types */ + lodepng_info_copy(&info, &state->info_png); + if(state->encoder.auto_convert) { +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(state->info_png.background_defined) { + unsigned bg_r = state->info_png.background_r; + unsigned bg_g = state->info_png.background_g; + unsigned bg_b = state->info_png.background_b; + unsigned r = 0, g = 0, b = 0; + LodePNGColorProfile prof; + LodePNGColorMode mode16 = lodepng_color_mode_make(LCT_RGB, 16); + lodepng_convert_rgb(&r, &g, &b, bg_r, bg_g, bg_b, &mode16, &state->info_png.color); + lodepng_color_profile_init(&prof); + state->error = lodepng_get_color_profile(&prof, image, w, h, &state->info_raw); + if(state->error) goto cleanup; + lodepng_color_profile_add(&prof, r, g, b, 65535); + state->error = auto_choose_color_from_profile(&info.color, &state->info_raw, &prof); + if(state->error) goto cleanup; + if(lodepng_convert_rgb(&info.background_r, &info.background_g, &info.background_b, + bg_r, bg_g, bg_b, &info.color, &state->info_png.color)) { + state->error = 104; + goto cleanup; + } + } + else +#endif /* LODEPNG_COMPILE_ANCILLARY_CHUNKS */ + { + state->error = lodepng_auto_choose_color(&info.color, image, w, h, &state->info_raw); + if(state->error) goto cleanup; + } + } +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(state->info_png.iccp_defined) { + unsigned gray_icc = isGrayICCProfile(state->info_png.iccp_profile, state->info_png.iccp_profile_size); + unsigned gray_png = info.color.colortype == LCT_GREY || info.color.colortype == LCT_GREY_ALPHA; + /* TODO: perhaps instead of giving errors or less optimal compression, we can automatically modify + the ICC profile here to say "GRAY" or "RGB " to match the PNG color type, unless this will require + non trivial changes to the rest of the ICC profile */ + if(!gray_icc && !isRGBICCProfile(state->info_png.iccp_profile, state->info_png.iccp_profile_size)) { + state->error = 100; /* Disallowed profile color type for PNG */ + goto cleanup; + } + if(!state->encoder.auto_convert && gray_icc != gray_png) { + /* Non recoverable: encoder not allowed to convert color type, and requested color type not + compatible with ICC color type */ + state->error = 101; + goto cleanup; + } + if(gray_icc && !gray_png) { + /* Non recoverable: trying to set grayscale ICC profile while colored pixels were given */ + state->error = 102; + goto cleanup; + /* NOTE: this relies on the fact that lodepng_auto_choose_color never returns palette for grayscale pixels */ + } + if(!gray_icc && gray_png) { + /* Recoverable but an unfortunate loss in compression density: We have grayscale pixels but + are forced to store them in more expensive RGB format that will repeat each value 3 times + because the PNG spec does not allow an RGB ICC profile with internal grayscale color data */ + if(info.color.colortype == LCT_GREY) info.color.colortype = LCT_RGB; + if(info.color.colortype == LCT_GREY_ALPHA) info.color.colortype = LCT_RGBA; + if(info.color.bitdepth < 8) info.color.bitdepth = 8; + } + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + if(!lodepng_color_mode_equal(&state->info_raw, &info.color)) { unsigned char* converted; - size_t size = (w * h * lodepng_get_bpp(&info.color) + 7) / 8; + size_t size = ((size_t)w * (size_t)h * (size_t)lodepng_get_bpp(&info.color) + 7) / 8; converted = (unsigned char*)lodepng_malloc(size); if(!converted && size) state->error = 83; /*alloc fail*/ - if(!state->error) - { + if(!state->error) { state->error = lodepng_convert(converted, image, &info.color, &state->info_raw, w, h); } if(!state->error) preProcessScanlines(&data, &datasize, converted, w, h, &info, &state->encoder); lodepng_free(converted); + if(state->error) goto cleanup; } else preProcessScanlines(&data, &datasize, image, w, h, &info, &state->encoder); - ucvector_init(&outv); - while(!state->error) /*while only executed once, to break on error*/ - { + /* output all PNG chunks */ { #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS size_t i; #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ @@ -5702,100 +5506,89 @@ unsigned lodepng_encode(unsigned char** out, size_t* outsize, addChunk_IHDR(&outv, w, h, info.color.colortype, info.color.bitdepth, info.interlace_method); #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS /*unknown chunks between IHDR and PLTE*/ - if(info.unknown_chunks_data[0]) - { + if(info.unknown_chunks_data[0]) { state->error = addUnknownChunks(&outv, info.unknown_chunks_data[0], info.unknown_chunks_size[0]); - if(state->error) break; + if(state->error) goto cleanup; } + /*color profile chunks must come before PLTE */ + if(info.iccp_defined) addChunk_iCCP(&outv, &info, &state->encoder.zlibsettings); + if(info.srgb_defined) addChunk_sRGB(&outv, &info); + if(info.gama_defined) addChunk_gAMA(&outv, &info); + if(info.chrm_defined) addChunk_cHRM(&outv, &info); #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ /*PLTE*/ - if(info.color.colortype == LCT_PALETTE) - { + if(info.color.colortype == LCT_PALETTE) { addChunk_PLTE(&outv, &info.color); } - if(state->encoder.force_palette && (info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA)) - { + if(state->encoder.force_palette && (info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA)) { addChunk_PLTE(&outv, &info.color); } /*tRNS*/ - if(info.color.colortype == LCT_PALETTE && getPaletteTranslucency(info.color.palette, info.color.palettesize) != 0) - { + if(info.color.colortype == LCT_PALETTE && getPaletteTranslucency(info.color.palette, info.color.palettesize) != 0) { addChunk_tRNS(&outv, &info.color); } - if((info.color.colortype == LCT_GREY || info.color.colortype == LCT_RGB) && info.color.key_defined) - { + if((info.color.colortype == LCT_GREY || info.color.colortype == LCT_RGB) && info.color.key_defined) { addChunk_tRNS(&outv, &info.color); } #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS /*bKGD (must come between PLTE and the IDAt chunks*/ - if(info.background_defined) addChunk_bKGD(&outv, &info); + if(info.background_defined) { + state->error = addChunk_bKGD(&outv, &info); + if(state->error) goto cleanup; + } /*pHYs (must come before the IDAT chunks)*/ if(info.phys_defined) addChunk_pHYs(&outv, &info); /*unknown chunks between PLTE and IDAT*/ - if(info.unknown_chunks_data[1]) - { + if(info.unknown_chunks_data[1]) { state->error = addUnknownChunks(&outv, info.unknown_chunks_data[1], info.unknown_chunks_size[1]); - if(state->error) break; + if(state->error) goto cleanup; } #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ /*IDAT (multiple IDAT chunks must be consecutive)*/ state->error = addChunk_IDAT(&outv, data, datasize, &state->encoder.zlibsettings); - if(state->error) break; + if(state->error) goto cleanup; #ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS /*tIME*/ if(info.time_defined) addChunk_tIME(&outv, &info.time); /*tEXt and/or zTXt*/ - for(i = 0; i != info.text_num; ++i) - { - if(strlen(info.text_keys[i]) > 79) - { + for(i = 0; i != info.text_num; ++i) { + if(strlen(info.text_keys[i]) > 79) { state->error = 66; /*text chunk too large*/ - break; + goto cleanup; } - if(strlen(info.text_keys[i]) < 1) - { + if(strlen(info.text_keys[i]) < 1) { state->error = 67; /*text chunk too small*/ - break; + goto cleanup; } - if(state->encoder.text_compression) - { + if(state->encoder.text_compression) { addChunk_zTXt(&outv, info.text_keys[i], info.text_strings[i], &state->encoder.zlibsettings); - } - else - { + } else { addChunk_tEXt(&outv, info.text_keys[i], info.text_strings[i]); } } /*LodePNG version id in text chunk*/ - if(state->encoder.add_id) - { - unsigned alread_added_id_text = 0; - for(i = 0; i != info.text_num; ++i) - { - if(!strcmp(info.text_keys[i], "LodePNG")) - { - alread_added_id_text = 1; + if(state->encoder.add_id) { + unsigned already_added_id_text = 0; + for(i = 0; i != info.text_num; ++i) { + if(!strcmp(info.text_keys[i], "LodePNG")) { + already_added_id_text = 1; break; } } - if(alread_added_id_text == 0) - { + if(already_added_id_text == 0) { addChunk_tEXt(&outv, "LodePNG", LODEPNG_VERSION_STRING); /*it's shorter as tEXt than as zTXt chunk*/ } } /*iTXt*/ - for(i = 0; i != info.itext_num; ++i) - { - if(strlen(info.itext_keys[i]) > 79) - { + for(i = 0; i != info.itext_num; ++i) { + if(strlen(info.itext_keys[i]) > 79) { state->error = 66; /*text chunk too large*/ - break; + goto cleanup; } - if(strlen(info.itext_keys[i]) < 1) - { + if(strlen(info.itext_keys[i]) < 1) { state->error = 67; /*text chunk too small*/ - break; + goto cleanup; } addChunk_iTXt(&outv, state->encoder.text_compression, info.itext_keys[i], info.itext_langtags[i], info.itext_transkeys[i], info.itext_strings[i], @@ -5803,19 +5596,18 @@ unsigned lodepng_encode(unsigned char** out, size_t* outsize, } /*unknown chunks between IDAT and IEND*/ - if(info.unknown_chunks_data[2]) - { + if(info.unknown_chunks_data[2]) { state->error = addUnknownChunks(&outv, info.unknown_chunks_data[2], info.unknown_chunks_size[2]); - if(state->error) break; + if(state->error) goto cleanup; } #endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ addChunk_IEND(&outv); - - break; /*this isn't really a while loop; no error happened so break out now!*/ } +cleanup: lodepng_info_cleanup(&info); lodepng_free(data); + /*instead of cleaning the vector up, give it to the output*/ *out = outv.data; *outsize = outv.size; @@ -5824,8 +5616,7 @@ unsigned lodepng_encode(unsigned char** out, size_t* outsize, } unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, const unsigned char* image, - unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) -{ + unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) { unsigned error; LodePNGState state; lodepng_state_init(&state); @@ -5839,20 +5630,17 @@ unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, const unsig return error; } -unsigned lodepng_encode32(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) -{ +unsigned lodepng_encode32(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) { return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGBA, 8); } -unsigned lodepng_encode24(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) -{ +unsigned lodepng_encode24(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) { return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGB, 8); } #ifdef LODEPNG_COMPILE_DISK unsigned lodepng_encode_file(const char* filename, const unsigned char* image, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) -{ + LodePNGColorType colortype, unsigned bitdepth) { unsigned char* buffer; size_t buffersize; unsigned error = lodepng_encode_memory(&buffer, &buffersize, image, w, h, colortype, bitdepth); @@ -5861,19 +5649,16 @@ unsigned lodepng_encode_file(const char* filename, const unsigned char* image, u return error; } -unsigned lodepng_encode32_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) -{ +unsigned lodepng_encode32_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) { return lodepng_encode_file(filename, image, w, h, LCT_RGBA, 8); } -unsigned lodepng_encode24_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) -{ +unsigned lodepng_encode24_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) { return lodepng_encode_file(filename, image, w, h, LCT_RGB, 8); } #endif /*LODEPNG_COMPILE_DISK*/ -void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings) -{ +void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings) { lodepng_compress_settings_init(&settings->zlibsettings); settings->filter_palette_zero = 1; settings->filter_strategy = LFS_MINSUM; @@ -5894,10 +5679,8 @@ void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings) This returns the description of a numerical error code in English. This is also the documentation of all the error codes. */ -const char* lodepng_error_text(unsigned code) -{ - switch(code) - { +const char* lodepng_error_text(unsigned code) { + switch(code) { case 0: return "no error, everything went ok"; case 1: return "nothing done yet"; /*the Encoder/Decoder has done nothing yet, error checking makes no sense yet*/ case 10: return "end of input memory reached without huffman end code"; /*while huffman decoding*/ @@ -5911,10 +5694,11 @@ const char* lodepng_error_text(unsigned code) case 19: return "end of out buffer memory reached while inflating"; case 20: return "invalid deflate block BTYPE encountered while decoding"; case 21: return "NLEN is not ones complement of LEN in a deflate block"; - /*end of out buffer memory reached while inflating: - This can happen if the inflated deflate data is longer than the amount of bytes required to fill up - all the pixels of the image, given the color depth and image dimensions. Something that doesn't - happen in a normal, well encoded, PNG image.*/ + + /*end of out buffer memory reached while inflating: + This can happen if the inflated deflate data is longer than the amount of bytes required to fill up + all the pixels of the image, given the color depth and image dimensions. Something that doesn't + happen in a normal, well encoded, PNG image.*/ case 22: return "end of out buffer memory reached while inflating"; case 23: return "end of in buffer memory reached while inflating"; case 24: return "invalid FCHECK in zlib header"; @@ -5933,12 +5717,12 @@ const char* lodepng_error_text(unsigned code) case 36: return "illegal PNG filter type encountered"; case 37: return "illegal bit depth for this color type given"; case 38: return "the palette is too big"; /*more than 256 colors*/ - case 39: return "more palette alpha values given in tRNS chunk than there are colors in the palette"; - case 40: return "tRNS chunk has wrong size for greyscale image"; + case 39: return "tRNS chunk before PLTE or has more entries than palette size"; + case 40: return "tRNS chunk has wrong size for grayscale image"; case 41: return "tRNS chunk has wrong size for RGB image"; case 42: return "tRNS chunk appeared while it was not allowed for this color type"; case 43: return "bKGD chunk has wrong size for palette image"; - case 44: return "bKGD chunk has wrong size for greyscale image"; + case 44: return "bKGD chunk has wrong size for grayscale image"; case 45: return "bKGD chunk has wrong size for RGB image"; case 48: return "empty input buffer given to decoder. Maybe caused by non-existing file?"; case 49: return "jumped past memory while generating dynamic huffman tree"; @@ -5957,9 +5741,10 @@ const char* lodepng_error_text(unsigned code) case 59: return "requested color conversion not supported"; case 60: return "invalid window size given in the settings of the encoder (must be 0-32768)"; case 61: return "invalid BTYPE given in the settings of the encoder (only 0, 1 and 2 are allowed)"; - /*LodePNG leaves the choice of RGB to greyscale conversion formula to the user.*/ - case 62: return "conversion from color to greyscale not supported"; - case 63: return "length of a chunk too long, max allowed for PNG is 2147483647 bytes per chunk"; /*(2^31-1)*/ + /*LodePNG leaves the choice of RGB to grayscale conversion formula to the user.*/ + case 62: return "conversion from color to grayscale not supported"; + /*(2^31-1)*/ + case 63: return "length of a chunk too long, max allowed for PNG is 2147483647 bytes per chunk"; /*this would result in the inability of a deflated block to ever contain an end code. It must be at least 1.*/ case 64: return "the length of the END symbol 256 in the Huffman tree is 0"; case 66: return "the length of a text chunk keyword given to the encoder is longer than the maximum of 79 bytes"; @@ -5978,7 +5763,7 @@ const char* lodepng_error_text(unsigned code) case 79: return "failed to open file for writing"; case 80: return "tried creating a tree of 0 symbols"; case 81: return "lazy matching at pos 0 is impossible"; - case 82: return "color conversion to palette requested while a color isn't in palette"; + case 82: return "color conversion to palette requested while a color isn't in palette, or index out of bounds"; case 83: return "memory allocation failed"; case 84: return "given image too small to contain all pixels to be encoded"; case 86: return "impossible offset in lz77 encoding (internal bug)"; @@ -5988,9 +5773,19 @@ const char* lodepng_error_text(unsigned code) /*the windowsize in the LodePNGCompressSettings. Requiring POT(==> & instead of %) makes encoding 12% faster.*/ case 90: return "windowsize must be a power of two"; case 91: return "invalid decompressed idat size"; - case 92: return "too many pixels, not supported"; + case 92: return "integer overflow due to too many pixels"; case 93: return "zero width or height is invalid"; case 94: return "header chunk must have a size of 13 bytes"; + case 95: return "integer overflow with combined idat chunk size"; + case 96: return "invalid gAMA chunk size"; + case 97: return "invalid cHRM chunk size"; + case 98: return "invalid sRGB chunk size"; + case 99: return "invalid sRGB rendering intent"; + case 100: return "invalid ICC profile color type, the PNG specification only allows RGB or GRAY"; + case 101: return "PNG specification does not allow RGB ICC profile on gray color types and vice versa"; + case 102: return "not allowed to set grayscale ICC profile with colored pixels by PNG specification"; + case 103: return "invalid palette index in bKGD chunk. Maybe it came before PLTE chunk?"; + case 104: return "invalid bKGD color while encoding (e.g. palette index out of range)"; } return "unknown error code"; } @@ -6003,12 +5798,10 @@ const char* lodepng_error_text(unsigned code) /* ////////////////////////////////////////////////////////////////////////// */ #ifdef LODEPNG_COMPILE_CPP -namespace lodepng -{ +namespace lodepng { #ifdef LODEPNG_COMPILE_DISK -unsigned load_file(std::vector<unsigned char>& buffer, const std::string& filename) -{ +unsigned load_file(std::vector<unsigned char>& buffer, const std::string& filename) { long size = lodepng_filesize(filename.c_str()); if(size < 0) return 78; buffer.resize((size_t)size); @@ -6016,8 +5809,7 @@ unsigned load_file(std::vector<unsigned char>& buffer, const std::string& filena } /*write given buffer to the file, overwriting the file, it doesn't append to it.*/ -unsigned save_file(const std::vector<unsigned char>& buffer, const std::string& filename) -{ +unsigned save_file(const std::vector<unsigned char>& buffer, const std::string& filename) { return lodepng_save_file(buffer.empty() ? 0 : &buffer[0], buffer.size(), filename.c_str()); } #endif /* LODEPNG_COMPILE_DISK */ @@ -6025,13 +5817,11 @@ unsigned save_file(const std::vector<unsigned char>& buffer, const std::string& #ifdef LODEPNG_COMPILE_ZLIB #ifdef LODEPNG_COMPILE_DECODER unsigned decompress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize, - const LodePNGDecompressSettings& settings) -{ + const LodePNGDecompressSettings& settings) { unsigned char* buffer = 0; size_t buffersize = 0; unsigned error = zlib_decompress(&buffer, &buffersize, in, insize, &settings); - if(buffer) - { + if(buffer) { out.insert(out.end(), &buffer[0], &buffer[buffersize]); lodepng_free(buffer); } @@ -6039,21 +5829,18 @@ unsigned decompress(std::vector<unsigned char>& out, const unsigned char* in, si } unsigned decompress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in, - const LodePNGDecompressSettings& settings) -{ + const LodePNGDecompressSettings& settings) { return decompress(out, in.empty() ? 0 : &in[0], in.size(), settings); } #endif /* LODEPNG_COMPILE_DECODER */ #ifdef LODEPNG_COMPILE_ENCODER unsigned compress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize, - const LodePNGCompressSettings& settings) -{ + const LodePNGCompressSettings& settings) { unsigned char* buffer = 0; size_t buffersize = 0; unsigned error = zlib_compress(&buffer, &buffersize, in, insize, &settings); - if(buffer) - { + if(buffer) { out.insert(out.end(), &buffer[0], &buffer[buffersize]); lodepng_free(buffer); } @@ -6061,8 +5848,7 @@ unsigned compress(std::vector<unsigned char>& out, const unsigned char* in, size } unsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in, - const LodePNGCompressSettings& settings) -{ + const LodePNGCompressSettings& settings) { return compress(out, in.empty() ? 0 : &in[0], in.size(), settings); } #endif /* LODEPNG_COMPILE_ENCODER */ @@ -6071,24 +5857,20 @@ unsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned ch #ifdef LODEPNG_COMPILE_PNG -State::State() -{ +State::State() { lodepng_state_init(this); } -State::State(const State& other) -{ +State::State(const State& other) { lodepng_state_init(this); lodepng_state_copy(this, &other); } -State::~State() -{ +State::~State() { lodepng_state_cleanup(this); } -State& State::operator=(const State& other) -{ +State& State::operator=(const State& other) { lodepng_state_copy(this, &other); return *this; } @@ -6096,12 +5878,10 @@ State& State::operator=(const State& other) #ifdef LODEPNG_COMPILE_DECODER unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, const unsigned char* in, - size_t insize, LodePNGColorType colortype, unsigned bitdepth) -{ + size_t insize, LodePNGColorType colortype, unsigned bitdepth) { unsigned char* buffer; unsigned error = lodepng_decode_memory(&buffer, &w, &h, in, insize, colortype, bitdepth); - if(buffer && !error) - { + if(buffer && !error) { State state; state.info_raw.colortype = colortype; state.info_raw.bitdepth = bitdepth; @@ -6113,19 +5893,16 @@ unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, const } unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, - const std::vector<unsigned char>& in, LodePNGColorType colortype, unsigned bitdepth) -{ + const std::vector<unsigned char>& in, LodePNGColorType colortype, unsigned bitdepth) { return decode(out, w, h, in.empty() ? 0 : &in[0], (unsigned)in.size(), colortype, bitdepth); } unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, State& state, - const unsigned char* in, size_t insize) -{ + const unsigned char* in, size_t insize) { unsigned char* buffer = NULL; unsigned error = lodepng_decode(&buffer, &w, &h, &state, in, insize); - if(buffer && !error) - { + if(buffer && !error) { size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); out.insert(out.end(), &buffer[0], &buffer[buffersize]); } @@ -6135,16 +5912,16 @@ unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, State& state, - const std::vector<unsigned char>& in) -{ + const std::vector<unsigned char>& in) { return decode(out, w, h, state, in.empty() ? 0 : &in[0], in.size()); } #ifdef LODEPNG_COMPILE_DISK unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, const std::string& filename, - LodePNGColorType colortype, unsigned bitdepth) -{ + LodePNGColorType colortype, unsigned bitdepth) { std::vector<unsigned char> buffer; + /* safe output values in case error happens */ + w = h = 0; unsigned error = load_file(buffer, filename); if(error) return error; return decode(out, w, h, buffer, colortype, bitdepth); @@ -6154,13 +5931,11 @@ unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, const #ifdef LODEPNG_COMPILE_ENCODER unsigned encode(std::vector<unsigned char>& out, const unsigned char* in, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) -{ + LodePNGColorType colortype, unsigned bitdepth) { unsigned char* buffer; size_t buffersize; unsigned error = lodepng_encode_memory(&buffer, &buffersize, in, w, h, colortype, bitdepth); - if(buffer) - { + if(buffer) { out.insert(out.end(), &buffer[0], &buffer[buffersize]); lodepng_free(buffer); } @@ -6169,21 +5944,18 @@ unsigned encode(std::vector<unsigned char>& out, const unsigned char* in, unsign unsigned encode(std::vector<unsigned char>& out, const std::vector<unsigned char>& in, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) -{ + LodePNGColorType colortype, unsigned bitdepth) { if(lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84; return encode(out, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth); } unsigned encode(std::vector<unsigned char>& out, const unsigned char* in, unsigned w, unsigned h, - State& state) -{ + State& state) { unsigned char* buffer; size_t buffersize; unsigned error = lodepng_encode(&buffer, &buffersize, in, w, h, &state); - if(buffer) - { + if(buffer) { out.insert(out.end(), &buffer[0], &buffer[buffersize]); lodepng_free(buffer); } @@ -6192,8 +5964,7 @@ unsigned encode(std::vector<unsigned char>& out, unsigned encode(std::vector<unsigned char>& out, const std::vector<unsigned char>& in, unsigned w, unsigned h, - State& state) -{ + State& state) { if(lodepng_get_raw_size(w, h, &state.info_raw) > in.size()) return 84; return encode(out, in.empty() ? 0 : &in[0], w, h, state); } @@ -6201,8 +5972,7 @@ unsigned encode(std::vector<unsigned char>& out, #ifdef LODEPNG_COMPILE_DISK unsigned encode(const std::string& filename, const unsigned char* in, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) -{ + LodePNGColorType colortype, unsigned bitdepth) { std::vector<unsigned char> buffer; unsigned error = encode(buffer, in, w, h, colortype, bitdepth); if(!error) error = save_file(buffer, filename); @@ -6211,8 +5981,7 @@ unsigned encode(const std::string& filename, unsigned encode(const std::string& filename, const std::vector<unsigned char>& in, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) -{ + LodePNGColorType colortype, unsigned bitdepth) { if(lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84; return encode(filename, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth); } diff --git a/lib/tinyxml2.cpp b/lib/tinyxml2.cpp index 7ab0c9a5..23a3a6ce 100644 --- a/lib/tinyxml2.cpp +++ b/lib/tinyxml2.cpp @@ -149,6 +149,7 @@ void StrPair::TransferTo( StrPair* other ) // This in effect implements the assignment operator by "moving" // ownership (as in auto_ptr). + TIXMLASSERT( other != 0 ); TIXMLASSERT( other->_flags == 0 ); TIXMLASSERT( other->_start == 0 ); TIXMLASSERT( other->_end == 0 ); @@ -164,6 +165,7 @@ void StrPair::TransferTo( StrPair* other ) _end = 0; } + void StrPair::Reset() { if ( _flags & NEEDS_DELETE ) { @@ -188,9 +190,11 @@ void StrPair::SetStr( const char* str, int flags ) } -char* StrPair::ParseText( char* p, const char* endTag, int strFlags ) +char* StrPair::ParseText( char* p, const char* endTag, int strFlags, int* curLineNumPtr ) { + TIXMLASSERT( p ); TIXMLASSERT( endTag && *endTag ); + TIXMLASSERT(curLineNumPtr); char* start = p; char endChar = *endTag; @@ -201,8 +205,11 @@ char* StrPair::ParseText( char* p, const char* endTag, int strFlags ) if ( *p == endChar && strncmp( p, endTag, length ) == 0 ) { Set( start, p, strFlags ); return p + length; + } else if (*p == '\n') { + ++(*curLineNumPtr); } ++p; + TIXMLASSERT( p ); } return 0; } @@ -233,15 +240,15 @@ void StrPair::CollapseWhitespace() // Adjusting _start would cause undefined behavior on delete[] TIXMLASSERT( ( _flags & NEEDS_DELETE ) == 0 ); // Trim leading space. - _start = XMLUtil::SkipWhiteSpace( _start ); + _start = XMLUtil::SkipWhiteSpace( _start, 0 ); if ( *_start ) { - char* p = _start; // the read pointer + const char* p = _start; // the read pointer char* q = _start; // the write pointer while( *p ) { if ( XMLUtil::IsWhiteSpace( *p )) { - p = XMLUtil::SkipWhiteSpace( p ); + p = XMLUtil::SkipWhiteSpace( p, 0 ); if ( *p == 0 ) { break; // don't write to q; this trims the trailing space. } @@ -266,7 +273,7 @@ const char* StrPair::GetStr() _flags ^= NEEDS_FLUSH; if ( _flags ) { - char* p = _start; // the read pointer + const char* p = _start; // the read pointer char* q = _start; // the write pointer while( p < _end ) { @@ -280,7 +287,8 @@ const char* StrPair::GetStr() else { ++p; } - *q++ = LF; + *q = LF; + ++q; } else if ( (_flags & NEEDS_NEWLINE_NORMALIZATION) && *p == LF ) { if ( *(p+1) == CR ) { @@ -289,7 +297,8 @@ const char* StrPair::GetStr() else { ++p; } - *q++ = LF; + *q = LF; + ++q; } else if ( (_flags & NEEDS_ENTITY_PROCESSING) && *p == '&' ) { // Entities handled by tinyXML2: @@ -360,6 +369,19 @@ const char* StrPair::GetStr() // --------- XMLUtil ----------- // +const char* XMLUtil::writeBoolTrue = "true"; +const char* XMLUtil::writeBoolFalse = "false"; + +void XMLUtil::SetBoolSerialization(const char* writeTrue, const char* writeFalse) +{ + static const char* defTrue = "true"; + static const char* defFalse = "false"; + + writeBoolTrue = (writeTrue) ? writeTrue : defTrue; + writeBoolFalse = (writeFalse) ? writeFalse : defFalse; +} + + const char* XMLUtil::ReadBOM( const char* p, bool* bom ) { TIXMLASSERT( p ); @@ -403,20 +425,24 @@ void XMLUtil::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length output += *length; - // Scary scary fall throughs. + // Scary scary fall throughs are annotated with carefully designed comments + // to suppress compiler warnings such as -Wimplicit-fallthrough in gcc switch (*length) { case 4: --output; *output = (char)((input | BYTE_MARK) & BYTE_MASK); input >>= 6; + //fall through case 3: --output; *output = (char)((input | BYTE_MARK) & BYTE_MASK); input >>= 6; + //fall through case 2: --output; *output = (char)((input | BYTE_MARK) & BYTE_MASK); input >>= 6; + //fall through case 1: --output; *output = (char)(input | FIRST_BYTE_MARK[*length]); @@ -537,7 +563,7 @@ void XMLUtil::ToStr( unsigned v, char* buffer, int bufferSize ) void XMLUtil::ToStr( bool v, char* buffer, int bufferSize ) { - TIXML_SNPRINTF( buffer, bufferSize, "%d", v ? 1 : 0 ); + TIXML_SNPRINTF( buffer, bufferSize, "%s", v ? writeBoolTrue : writeBoolFalse); } /* @@ -556,6 +582,13 @@ void XMLUtil::ToStr( double v, char* buffer, int bufferSize ) } +void XMLUtil::ToStr(int64_t v, char* buffer, int bufferSize) +{ + // horrible syntax trick to make the compiler happy about %lld + TIXML_SNPRINTF(buffer, bufferSize, "%lld", (long long)v); +} + + bool XMLUtil::ToInt( const char* str, int* value ) { if ( TIXML_SSCANF( str, "%d", value ) == 1 ) { @@ -599,6 +632,7 @@ bool XMLUtil::ToFloat( const char* str, float* value ) return false; } + bool XMLUtil::ToDouble( const char* str, double* value ) { if ( TIXML_SSCANF( str, "%lf", value ) == 1 ) { @@ -608,12 +642,24 @@ bool XMLUtil::ToDouble( const char* str, double* value ) } +bool XMLUtil::ToInt64(const char* str, int64_t* value) +{ + long long v = 0; // horrible syntax trick to make the compiler happy about %lld + if (TIXML_SSCANF(str, "%lld", &v) == 1) { + *value = (int64_t)v; + return true; + } + return false; +} + + char* XMLDocument::Identify( char* p, XMLNode** node ) { TIXMLASSERT( node ); TIXMLASSERT( p ); char* const start = p; - p = XMLUtil::SkipWhiteSpace( p ); + int const startLine = _parseCurLineNum; + p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum ); if( !*p ) { *node = 0; TIXMLASSERT( p ); @@ -637,42 +683,37 @@ char* XMLDocument::Identify( char* p, XMLNode** node ) TIXMLASSERT( sizeof( XMLComment ) == sizeof( XMLDeclaration ) ); // use same memory pool XMLNode* returnNode = 0; if ( XMLUtil::StringEqual( p, xmlHeader, xmlHeaderLen ) ) { - TIXMLASSERT( sizeof( XMLDeclaration ) == _commentPool.ItemSize() ); - returnNode = new (_commentPool.Alloc()) XMLDeclaration( this ); - returnNode->_memPool = &_commentPool; + returnNode = CreateUnlinkedNode<XMLDeclaration>( _commentPool ); + returnNode->_parseLineNum = _parseCurLineNum; p += xmlHeaderLen; } else if ( XMLUtil::StringEqual( p, commentHeader, commentHeaderLen ) ) { - TIXMLASSERT( sizeof( XMLComment ) == _commentPool.ItemSize() ); - returnNode = new (_commentPool.Alloc()) XMLComment( this ); - returnNode->_memPool = &_commentPool; + returnNode = CreateUnlinkedNode<XMLComment>( _commentPool ); + returnNode->_parseLineNum = _parseCurLineNum; p += commentHeaderLen; } else if ( XMLUtil::StringEqual( p, cdataHeader, cdataHeaderLen ) ) { - TIXMLASSERT( sizeof( XMLText ) == _textPool.ItemSize() ); - XMLText* text = new (_textPool.Alloc()) XMLText( this ); + XMLText* text = CreateUnlinkedNode<XMLText>( _textPool ); returnNode = text; - returnNode->_memPool = &_textPool; + returnNode->_parseLineNum = _parseCurLineNum; p += cdataHeaderLen; text->SetCData( true ); } else if ( XMLUtil::StringEqual( p, dtdHeader, dtdHeaderLen ) ) { - TIXMLASSERT( sizeof( XMLUnknown ) == _commentPool.ItemSize() ); - returnNode = new (_commentPool.Alloc()) XMLUnknown( this ); - returnNode->_memPool = &_commentPool; + returnNode = CreateUnlinkedNode<XMLUnknown>( _commentPool ); + returnNode->_parseLineNum = _parseCurLineNum; p += dtdHeaderLen; } else if ( XMLUtil::StringEqual( p, elementHeader, elementHeaderLen ) ) { - TIXMLASSERT( sizeof( XMLElement ) == _elementPool.ItemSize() ); - returnNode = new (_elementPool.Alloc()) XMLElement( this ); - returnNode->_memPool = &_elementPool; + returnNode = CreateUnlinkedNode<XMLElement>( _elementPool ); + returnNode->_parseLineNum = _parseCurLineNum; p += elementHeaderLen; } else { - TIXMLASSERT( sizeof( XMLText ) == _textPool.ItemSize() ); - returnNode = new (_textPool.Alloc()) XMLText( this ); - returnNode->_memPool = &_textPool; + returnNode = CreateUnlinkedNode<XMLText>( _textPool ); + returnNode->_parseLineNum = _parseCurLineNum; // Report line of first non-whitespace character p = start; // Back it up, all the text counts. + _parseCurLineNum = startLine; } TIXMLASSERT( returnNode ); @@ -701,8 +742,11 @@ bool XMLDocument::Accept( XMLVisitor* visitor ) const XMLNode::XMLNode( XMLDocument* doc ) : _document( doc ), _parent( 0 ), + _value(), + _parseLineNum( 0 ), _firstChild( 0 ), _lastChild( 0 ), _prev( 0 ), _next( 0 ), + _userData( 0 ), _memPool( 0 ) { } @@ -716,9 +760,9 @@ XMLNode::~XMLNode() } } -const char* XMLNode::Value() const +const char* XMLNode::Value() const { - // Catch an edge case: XMLDocuments don't have a a Value. Carefully return nullptr. + // Edge case: XMLDocuments don't have a Value. Return null. if ( this->ToDocument() ) return 0; return _value.GetStr(); @@ -734,16 +778,24 @@ void XMLNode::SetValue( const char* str, bool staticMem ) } } +XMLNode* XMLNode::DeepClone(XMLDocument* target) const +{ + XMLNode* clone = this->ShallowClone(target); + if (!clone) return 0; + + for (const XMLNode* child = this->FirstChild(); child; child = child->NextSibling()) { + XMLNode* childClone = child->DeepClone(target); + TIXMLASSERT(childClone); + clone->InsertEndChild(childClone); + } + return clone; +} void XMLNode::DeleteChildren() { while( _firstChild ) { TIXMLASSERT( _lastChild ); - TIXMLASSERT( _firstChild->_document == _document ); - XMLNode* node = _firstChild; - Unlink( node ); - - DeleteNode( node ); + DeleteChild( _firstChild ); } _firstChild = _lastChild = 0; } @@ -767,6 +819,8 @@ void XMLNode::Unlink( XMLNode* child ) if ( child->_next ) { child->_next->_prev = child->_prev; } + child->_next = 0; + child->_prev = 0; child->_parent = 0; } @@ -777,6 +831,9 @@ void XMLNode::DeleteChild( XMLNode* node ) TIXMLASSERT( node->_document == _document ); TIXMLASSERT( node->_parent == this ); Unlink( node ); + TIXMLASSERT(node->_prev == 0); + TIXMLASSERT(node->_next == 0); + TIXMLASSERT(node->_parent == 0); DeleteNode( node ); } @@ -856,6 +913,13 @@ XMLNode* XMLNode::InsertAfterChild( XMLNode* afterThis, XMLNode* addThis ) TIXMLASSERT( false ); return 0; } + if ( afterThis == addThis ) { + // Current state: BeforeThis -> AddThis -> OneAfterAddThis + // Now AddThis must disappear from it's location and then + // reappear between BeforeThis and OneAfterAddThis. + // So just leave it where it is. + return addThis; + } if ( afterThis->_next == 0 ) { // The last node or the only node. @@ -876,11 +940,9 @@ XMLNode* XMLNode::InsertAfterChild( XMLNode* afterThis, XMLNode* addThis ) const XMLElement* XMLNode::FirstChildElement( const char* name ) const { for( const XMLNode* node = _firstChild; node; node = node->_next ) { - const XMLElement* element = node->ToElement(); + const XMLElement* element = node->ToElementWithName( name ); if ( element ) { - if ( !name || XMLUtil::StringEqual( element->Name(), name ) ) { - return element; - } + return element; } } return 0; @@ -890,11 +952,9 @@ const XMLElement* XMLNode::FirstChildElement( const char* name ) const const XMLElement* XMLNode::LastChildElement( const char* name ) const { for( const XMLNode* node = _lastChild; node; node = node->_prev ) { - const XMLElement* element = node->ToElement(); + const XMLElement* element = node->ToElementWithName( name ); if ( element ) { - if ( !name || XMLUtil::StringEqual( element->Name(), name ) ) { - return element; - } + return element; } } return 0; @@ -904,9 +964,8 @@ const XMLElement* XMLNode::LastChildElement( const char* name ) const const XMLElement* XMLNode::NextSiblingElement( const char* name ) const { for( const XMLNode* node = _next; node; node = node->_next ) { - const XMLElement* element = node->ToElement(); - if ( element - && (!name || XMLUtil::StringEqual( name, element->Name() ))) { + const XMLElement* element = node->ToElementWithName( name ); + if ( element ) { return element; } } @@ -917,9 +976,8 @@ const XMLElement* XMLNode::NextSiblingElement( const char* name ) const const XMLElement* XMLNode::PreviousSiblingElement( const char* name ) const { for( const XMLNode* node = _prev; node; node = node->_prev ) { - const XMLElement* element = node->ToElement(); - if ( element - && (!name || XMLUtil::StringEqual( name, element->Name() ))) { + const XMLElement* element = node->ToElementWithName( name ); + if ( element ) { return element; } } @@ -927,7 +985,7 @@ const XMLElement* XMLNode::PreviousSiblingElement( const char* name ) const } -char* XMLNode::ParseDeep( char* p, StrPair* parentEnd ) +char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) { // This is a recursive method, but thinking about it "at the current level" // it is a pretty simple flat list: @@ -946,41 +1004,68 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEnd ) // 'endTag' is the end tag for this node, it is returned by a call to a child. // 'parentEnd' is the end tag for the parent, which is filled in and returned. - while( p && *p ) { + XMLDocument::DepthTracker tracker(_document); + if (_document->Error()) + return 0; + + while( p && *p ) { XMLNode* node = 0; p = _document->Identify( p, &node ); + TIXMLASSERT( p ); if ( node == 0 ) { break; } + int initialLineNum = node->_parseLineNum; + StrPair endTag; - p = node->ParseDeep( p, &endTag ); + p = node->ParseDeep( p, &endTag, curLineNumPtr ); if ( !p ) { DeleteNode( node ); if ( !_document->Error() ) { - _document->SetError( XML_ERROR_PARSING, 0, 0 ); + _document->SetError( XML_ERROR_PARSING, initialLineNum, 0); } break; } XMLDeclaration* decl = node->ToDeclaration(); if ( decl ) { - // A declaration can only be the first child of a document. - // Set error, if document already has children. - if ( !_document->NoChildren() ) { - _document->SetError( XML_ERROR_PARSING_DECLARATION, decl->Value(), 0); - DeleteNode( decl ); - break; + // Declarations are only allowed at document level + // + // Multiple declarations are allowed but all declarations + // must occur before anything else. + // + // Optimized due to a security test case. If the first node is + // a declaration, and the last node is a declaration, then only + // declarations have so far been addded. + bool wellLocated = false; + + if (ToDocument()) { + if (FirstChild()) { + wellLocated = + FirstChild() && + FirstChild()->ToDeclaration() && + LastChild() && + LastChild()->ToDeclaration(); } + else { + wellLocated = true; + } + } + if ( !wellLocated ) { + _document->SetError( XML_ERROR_PARSING_DECLARATION, initialLineNum, "XMLDeclaration value=%s", decl->Value()); + DeleteNode( node ); + break; + } } XMLElement* ele = node->ToElement(); if ( ele ) { // We read the end tag. Return it to the parent. if ( ele->ClosingType() == XMLElement::CLOSING ) { - if ( parentEnd ) { - ele->_value.TransferTo( parentEnd ); + if ( parentEndTag ) { + ele->_value.TransferTo( parentEndTag ); } node->_memPool->SetTracked(); // created and then immediately deleted. DeleteNode( node ); @@ -1004,7 +1089,7 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEnd ) } } if ( mismatch ) { - _document->SetError( XML_ERROR_MISMATCHED_ELEMENT, ele->Name(), 0 ); + _document->SetError( XML_ERROR_MISMATCHED_ELEMENT, initialLineNum, "XMLElement name=%s", ele->Name()); DeleteNode( node ); break; } @@ -1014,11 +1099,16 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEnd ) return 0; } -void XMLNode::DeleteNode( XMLNode* node ) +/*static*/ void XMLNode::DeleteNode( XMLNode* node ) { if ( node == 0 ) { return; } + TIXMLASSERT(node->_document); + if (!node->ToDocument()) { + node->_document->MarkInUse(node); + } + MemPool* pool = node->_memPool; node->~XMLNode(); pool->Free( node ); @@ -1029,20 +1119,37 @@ void XMLNode::InsertChildPreamble( XMLNode* insertThis ) const TIXMLASSERT( insertThis ); TIXMLASSERT( insertThis->_document == _document ); - if ( insertThis->_parent ) + if (insertThis->_parent) { insertThis->_parent->Unlink( insertThis ); - else + } + else { + insertThis->_document->MarkInUse(insertThis); insertThis->_memPool->SetTracked(); + } +} + +const XMLElement* XMLNode::ToElementWithName( const char* name ) const +{ + const XMLElement* element = this->ToElement(); + if ( element == 0 ) { + return 0; + } + if ( name == 0 ) { + return element; + } + if ( XMLUtil::StringEqual( element->Name(), name ) ) { + return element; + } + return 0; } // --------- XMLText ---------- // -char* XMLText::ParseDeep( char* p, StrPair* ) +char* XMLText::ParseDeep( char* p, StrPair*, int* curLineNumPtr ) { - const char* start = p; if ( this->CData() ) { - p = _value.ParseText( p, "]]>", StrPair::NEEDS_NEWLINE_NORMALIZATION ); + p = _value.ParseText( p, "]]>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr ); if ( !p ) { - _document->SetError( XML_ERROR_PARSING_CDATA, start, 0 ); + _document->SetError( XML_ERROR_PARSING_CDATA, _parseLineNum, 0 ); } return p; } @@ -1052,12 +1159,12 @@ char* XMLText::ParseDeep( char* p, StrPair* ) flags |= StrPair::NEEDS_WHITESPACE_COLLAPSING; } - p = _value.ParseText( p, "<", flags ); + p = _value.ParseText( p, "<", flags, curLineNumPtr ); if ( p && *p ) { return p-1; } if ( !p ) { - _document->SetError( XML_ERROR_PARSING_TEXT, start, 0 ); + _document->SetError( XML_ERROR_PARSING_TEXT, _parseLineNum, 0 ); } } return 0; @@ -1077,6 +1184,7 @@ XMLNode* XMLText::ShallowClone( XMLDocument* doc ) const bool XMLText::ShallowEqual( const XMLNode* compare ) const { + TIXMLASSERT( compare ); const XMLText* text = compare->ToText(); return ( text && XMLUtil::StringEqual( text->Value(), Value() ) ); } @@ -1101,13 +1209,12 @@ XMLComment::~XMLComment() } -char* XMLComment::ParseDeep( char* p, StrPair* ) +char* XMLComment::ParseDeep( char* p, StrPair*, int* curLineNumPtr ) { // Comment parses as text. - const char* start = p; - p = _value.ParseText( p, "-->", StrPair::COMMENT ); + p = _value.ParseText( p, "-->", StrPair::COMMENT, curLineNumPtr ); if ( p == 0 ) { - _document->SetError( XML_ERROR_PARSING_COMMENT, start, 0 ); + _document->SetError( XML_ERROR_PARSING_COMMENT, _parseLineNum, 0 ); } return p; } @@ -1151,13 +1258,12 @@ XMLDeclaration::~XMLDeclaration() } -char* XMLDeclaration::ParseDeep( char* p, StrPair* ) +char* XMLDeclaration::ParseDeep( char* p, StrPair*, int* curLineNumPtr ) { // Declaration parses as text. - const char* start = p; - p = _value.ParseText( p, "?>", StrPair::NEEDS_NEWLINE_NORMALIZATION ); + p = _value.ParseText( p, "?>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr ); if ( p == 0 ) { - _document->SetError( XML_ERROR_PARSING_DECLARATION, start, 0 ); + _document->SetError( XML_ERROR_PARSING_DECLARATION, _parseLineNum, 0 ); } return p; } @@ -1200,14 +1306,12 @@ XMLUnknown::~XMLUnknown() } -char* XMLUnknown::ParseDeep( char* p, StrPair* ) +char* XMLUnknown::ParseDeep( char* p, StrPair*, int* curLineNumPtr ) { // Unknown parses as text. - const char* start = p; - - p = _value.ParseText( p, ">", StrPair::NEEDS_NEWLINE_NORMALIZATION ); + p = _value.ParseText( p, ">", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr ); if ( !p ) { - _document->SetError( XML_ERROR_PARSING_UNKNOWN, start, 0 ); + _document->SetError( XML_ERROR_PARSING_UNKNOWN, _parseLineNum, 0 ); } return p; } @@ -1239,17 +1343,17 @@ bool XMLUnknown::Accept( XMLVisitor* visitor ) const // --------- XMLAttribute ---------- // -const char* XMLAttribute::Name() const +const char* XMLAttribute::Name() const { return _name.GetStr(); } -const char* XMLAttribute::Value() const +const char* XMLAttribute::Value() const { return _value.GetStr(); } -char* XMLAttribute::ParseDeep( char* p, bool processEntities ) +char* XMLAttribute::ParseDeep( char* p, bool processEntities, int* curLineNumPtr ) { // Parse using the name rules: bug fix, was using ParseText before p = _name.ParseName( p ); @@ -1258,13 +1362,13 @@ char* XMLAttribute::ParseDeep( char* p, bool processEntities ) } // Skip white space before = - p = XMLUtil::SkipWhiteSpace( p ); + p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr ); if ( *p != '=' ) { return 0; } ++p; // move up to opening quote - p = XMLUtil::SkipWhiteSpace( p ); + p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr ); if ( *p != '\"' && *p != '\'' ) { return 0; } @@ -1272,7 +1376,7 @@ char* XMLAttribute::ParseDeep( char* p, bool processEntities ) char endTag[2] = { *p, 0 }; ++p; // move past opening quote - p = _value.ParseText( p, endTag, processEntities ? StrPair::ATTRIBUTE_VALUE : StrPair::ATTRIBUTE_VALUE_LEAVE_ENTITIES ); + p = _value.ParseText( p, endTag, processEntities ? StrPair::ATTRIBUTE_VALUE : StrPair::ATTRIBUTE_VALUE_LEAVE_ENTITIES, curLineNumPtr ); return p; } @@ -1286,7 +1390,7 @@ void XMLAttribute::SetName( const char* n ) XMLError XMLAttribute::QueryIntValue( int* value ) const { if ( XMLUtil::ToInt( Value(), value )) { - return XML_NO_ERROR; + return XML_SUCCESS; } return XML_WRONG_ATTRIBUTE_TYPE; } @@ -1295,16 +1399,25 @@ XMLError XMLAttribute::QueryIntValue( int* value ) const XMLError XMLAttribute::QueryUnsignedValue( unsigned int* value ) const { if ( XMLUtil::ToUnsigned( Value(), value )) { - return XML_NO_ERROR; + return XML_SUCCESS; } return XML_WRONG_ATTRIBUTE_TYPE; } +XMLError XMLAttribute::QueryInt64Value(int64_t* value) const +{ + if (XMLUtil::ToInt64(Value(), value)) { + return XML_SUCCESS; + } + return XML_WRONG_ATTRIBUTE_TYPE; +} + + XMLError XMLAttribute::QueryBoolValue( bool* value ) const { if ( XMLUtil::ToBool( Value(), value )) { - return XML_NO_ERROR; + return XML_SUCCESS; } return XML_WRONG_ATTRIBUTE_TYPE; } @@ -1313,7 +1426,7 @@ XMLError XMLAttribute::QueryBoolValue( bool* value ) const XMLError XMLAttribute::QueryFloatValue( float* value ) const { if ( XMLUtil::ToFloat( Value(), value )) { - return XML_NO_ERROR; + return XML_SUCCESS; } return XML_WRONG_ATTRIBUTE_TYPE; } @@ -1322,7 +1435,7 @@ XMLError XMLAttribute::QueryFloatValue( float* value ) const XMLError XMLAttribute::QueryDoubleValue( double* value ) const { if ( XMLUtil::ToDouble( Value(), value )) { - return XML_NO_ERROR; + return XML_SUCCESS; } return XML_WRONG_ATTRIBUTE_TYPE; } @@ -1350,6 +1463,15 @@ void XMLAttribute::SetAttribute( unsigned v ) } +void XMLAttribute::SetAttribute(int64_t v) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr(v, buf, BUF_SIZE); + _value.SetStr(buf); +} + + + void XMLAttribute::SetAttribute( bool v ) { char buf[BUF_SIZE]; @@ -1374,7 +1496,7 @@ void XMLAttribute::SetAttribute( float v ) // --------- XMLElement ---------- // XMLElement::XMLElement( XMLDocument* doc ) : XMLNode( doc ), - _closingType( 0 ), + _closingType( OPEN ), _rootAttribute( 0 ) { } @@ -1413,6 +1535,47 @@ const char* XMLElement::Attribute( const char* name, const char* value ) const return 0; } +int XMLElement::IntAttribute(const char* name, int defaultValue) const +{ + int i = defaultValue; + QueryIntAttribute(name, &i); + return i; +} + +unsigned XMLElement::UnsignedAttribute(const char* name, unsigned defaultValue) const +{ + unsigned i = defaultValue; + QueryUnsignedAttribute(name, &i); + return i; +} + +int64_t XMLElement::Int64Attribute(const char* name, int64_t defaultValue) const +{ + int64_t i = defaultValue; + QueryInt64Attribute(name, &i); + return i; +} + +bool XMLElement::BoolAttribute(const char* name, bool defaultValue) const +{ + bool b = defaultValue; + QueryBoolAttribute(name, &b); + return b; +} + +double XMLElement::DoubleAttribute(const char* name, double defaultValue) const +{ + double d = defaultValue; + QueryDoubleAttribute(name, &d); + return d; +} + +float XMLElement::FloatAttribute(const char* name, float defaultValue) const +{ + float f = defaultValue; + QueryFloatAttribute(name, &f); + return f; +} const char* XMLElement::GetText() const { @@ -1434,7 +1597,7 @@ void XMLElement::SetText( const char* inText ) } -void XMLElement::SetText( int v ) +void XMLElement::SetText( int v ) { char buf[BUF_SIZE]; XMLUtil::ToStr( v, buf, BUF_SIZE ); @@ -1442,7 +1605,7 @@ void XMLElement::SetText( int v ) } -void XMLElement::SetText( unsigned v ) +void XMLElement::SetText( unsigned v ) { char buf[BUF_SIZE]; XMLUtil::ToStr( v, buf, BUF_SIZE ); @@ -1450,7 +1613,15 @@ void XMLElement::SetText( unsigned v ) } -void XMLElement::SetText( bool v ) +void XMLElement::SetText(int64_t v) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr(v, buf, BUF_SIZE); + SetText(buf); +} + + +void XMLElement::SetText( bool v ) { char buf[BUF_SIZE]; XMLUtil::ToStr( v, buf, BUF_SIZE ); @@ -1458,7 +1629,7 @@ void XMLElement::SetText( bool v ) } -void XMLElement::SetText( float v ) +void XMLElement::SetText( float v ) { char buf[BUF_SIZE]; XMLUtil::ToStr( v, buf, BUF_SIZE ); @@ -1466,7 +1637,7 @@ void XMLElement::SetText( float v ) } -void XMLElement::SetText( double v ) +void XMLElement::SetText( double v ) { char buf[BUF_SIZE]; XMLUtil::ToStr( v, buf, BUF_SIZE ); @@ -1500,6 +1671,19 @@ XMLError XMLElement::QueryUnsignedText( unsigned* uval ) const } +XMLError XMLElement::QueryInt64Text(int64_t* ival) const +{ + if (FirstChild() && FirstChild()->ToText()) { + const char* t = FirstChild()->Value(); + if (XMLUtil::ToInt64(t, ival)) { + return XML_SUCCESS; + } + return XML_CAN_NOT_CONVERT_TEXT; + } + return XML_NO_TEXT_NODE; +} + + XMLError XMLElement::QueryBoolText( bool* bval ) const { if ( FirstChild() && FirstChild()->ToText() ) { @@ -1538,6 +1722,47 @@ XMLError XMLElement::QueryFloatText( float* fval ) const return XML_NO_TEXT_NODE; } +int XMLElement::IntText(int defaultValue) const +{ + int i = defaultValue; + QueryIntText(&i); + return i; +} + +unsigned XMLElement::UnsignedText(unsigned defaultValue) const +{ + unsigned i = defaultValue; + QueryUnsignedText(&i); + return i; +} + +int64_t XMLElement::Int64Text(int64_t defaultValue) const +{ + int64_t i = defaultValue; + QueryInt64Text(&i); + return i; +} + +bool XMLElement::BoolText(bool defaultValue) const +{ + bool b = defaultValue; + QueryBoolText(&b); + return b; +} + +double XMLElement::DoubleText(double defaultValue) const +{ + double d = defaultValue; + QueryDoubleText(&d); + return d; +} + +float XMLElement::FloatText(float defaultValue) const +{ + float f = defaultValue; + QueryFloatText(&f); + return f; +} XMLAttribute* XMLElement::FindOrCreateAttribute( const char* name ) @@ -1552,17 +1777,17 @@ XMLAttribute* XMLElement::FindOrCreateAttribute( const char* name ) } } if ( !attrib ) { - TIXMLASSERT( sizeof( XMLAttribute ) == _document->_attributePool.ItemSize() ); - attrib = new (_document->_attributePool.Alloc() ) XMLAttribute(); - attrib->_memPool = &_document->_attributePool; + attrib = CreateAttribute(); + TIXMLASSERT( attrib ); if ( last ) { + TIXMLASSERT( last->_next == 0 ); last->_next = attrib; } else { + TIXMLASSERT( _rootAttribute == 0 ); _rootAttribute = attrib; } attrib->SetName( name ); - attrib->_memPool->SetTracked(); // always created and linked. } return attrib; } @@ -1587,30 +1812,30 @@ void XMLElement::DeleteAttribute( const char* name ) } -char* XMLElement::ParseAttributes( char* p ) +char* XMLElement::ParseAttributes( char* p, int* curLineNumPtr ) { - const char* start = p; XMLAttribute* prevAttribute = 0; // Read the attributes. while( p ) { - p = XMLUtil::SkipWhiteSpace( p ); + p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr ); if ( !(*p) ) { - _document->SetError( XML_ERROR_PARSING_ELEMENT, start, Name() ); + _document->SetError( XML_ERROR_PARSING_ELEMENT, _parseLineNum, "XMLElement name=%s", Name() ); return 0; } // attribute. if (XMLUtil::IsNameStartChar( *p ) ) { - TIXMLASSERT( sizeof( XMLAttribute ) == _document->_attributePool.ItemSize() ); - XMLAttribute* attrib = new (_document->_attributePool.Alloc() ) XMLAttribute(); - attrib->_memPool = &_document->_attributePool; - attrib->_memPool->SetTracked(); + XMLAttribute* attrib = CreateAttribute(); + TIXMLASSERT( attrib ); + attrib->_parseLineNum = _document->_parseCurLineNum; + + int attrLineNum = attrib->_parseLineNum; - p = attrib->ParseDeep( p, _document->ProcessEntities() ); + p = attrib->ParseDeep( p, _document->ProcessEntities(), curLineNumPtr ); if ( !p || Attribute( attrib->Name() ) ) { DeleteAttribute( attrib ); - _document->SetError( XML_ERROR_PARSING_ATTRIBUTE, start, p ); + _document->SetError( XML_ERROR_PARSING_ATTRIBUTE, attrLineNum, "XMLElement name=%s", Name() ); return 0; } // There is a minor bug here: if the attribute in the source xml @@ -1619,9 +1844,11 @@ char* XMLElement::ParseAttributes( char* p ) // avoids re-scanning the attribute list. Preferring performance for // now, may reconsider in the future. if ( prevAttribute ) { + TIXMLASSERT( prevAttribute->_next == 0 ); prevAttribute->_next = attrib; } else { + TIXMLASSERT( _rootAttribute == 0 ); _rootAttribute = attrib; } prevAttribute = attrib; @@ -1637,7 +1864,7 @@ char* XMLElement::ParseAttributes( char* p ) return p+2; // done; sealed element. } else { - _document->SetError( XML_ERROR_PARSING_ELEMENT, start, p ); + _document->SetError( XML_ERROR_PARSING_ELEMENT, _parseLineNum, 0 ); return 0; } } @@ -1654,14 +1881,24 @@ void XMLElement::DeleteAttribute( XMLAttribute* attribute ) pool->Free( attribute ); } +XMLAttribute* XMLElement::CreateAttribute() +{ + TIXMLASSERT( sizeof( XMLAttribute ) == _document->_attributePool.ItemSize() ); + XMLAttribute* attrib = new (_document->_attributePool.Alloc() ) XMLAttribute(); + TIXMLASSERT( attrib ); + attrib->_memPool = &_document->_attributePool; + attrib->_memPool->SetTracked(); + return attrib; +} + // // <ele></ele> // <ele>foo<b>bar</b></ele> // -char* XMLElement::ParseDeep( char* p, StrPair* strPair ) +char* XMLElement::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) { // Read the element name. - p = XMLUtil::SkipWhiteSpace( p ); + p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr ); // The closing element is the </element> form. It is // parsed just like a regular element then deleted from @@ -1676,12 +1913,12 @@ char* XMLElement::ParseDeep( char* p, StrPair* strPair ) return 0; } - p = ParseAttributes( p ); - if ( !p || !*p || _closingType ) { + p = ParseAttributes( p, curLineNumPtr ); + if ( !p || !*p || _closingType != OPEN ) { return p; } - p = XMLNode::ParseDeep( p, strPair ); + p = XMLNode::ParseDeep( p, parentEndTag, curLineNumPtr ); return p; } @@ -1750,10 +1987,8 @@ const char* XMLDocument::_errorNames[XML_ERROR_COUNT] = { "XML_ERROR_FILE_NOT_FOUND", "XML_ERROR_FILE_COULD_NOT_BE_OPENED", "XML_ERROR_FILE_READ_ERROR", - "XML_ERROR_ELEMENT_MISMATCH", "XML_ERROR_PARSING_ELEMENT", "XML_ERROR_PARSING_ATTRIBUTE", - "XML_ERROR_IDENTIFYING_TAG", "XML_ERROR_PARSING_TEXT", "XML_ERROR_PARSING_CDATA", "XML_ERROR_PARSING_COMMENT", @@ -1763,19 +1998,27 @@ const char* XMLDocument::_errorNames[XML_ERROR_COUNT] = { "XML_ERROR_MISMATCHED_ELEMENT", "XML_ERROR_PARSING", "XML_CAN_NOT_CONVERT_TEXT", - "XML_NO_TEXT_NODE" + "XML_NO_TEXT_NODE", + "XML_ELEMENT_DEPTH_EXCEEDED" }; -XMLDocument::XMLDocument( bool processEntities, Whitespace whitespace ) : +XMLDocument::XMLDocument( bool processEntities, Whitespace whitespaceMode ) : XMLNode( 0 ), _writeBOM( false ), _processEntities( processEntities ), - _errorID( XML_NO_ERROR ), - _whitespace( whitespace ), - _errorStr1( 0 ), - _errorStr2( 0 ), - _charBuffer( 0 ) + _errorID(XML_SUCCESS), + _whitespaceMode( whitespaceMode ), + _errorStr(), + _errorLineNum( 0 ), + _charBuffer( 0 ), + _parseCurLineNum( 0 ), + _parsingDepth(0), + _unlinked(), + _elementPool(), + _attributePool(), + _textPool(), + _commentPool() { // avoid VC++ C4355 warning about 'this' in initializer list (C4355 is off by default in VS2012+) _document = this; @@ -1788,19 +2031,34 @@ XMLDocument::~XMLDocument() } +void XMLDocument::MarkInUse(XMLNode* node) +{ + TIXMLASSERT(node); + TIXMLASSERT(node->_parent == 0); + + for (int i = 0; i < _unlinked.Size(); ++i) { + if (node == _unlinked[i]) { + _unlinked.SwapRemove(i); + break; + } + } +} + void XMLDocument::Clear() { DeleteChildren(); + while( _unlinked.Size()) { + DeleteNode(_unlinked[0]); // Will remove from _unlinked as part of delete. + } -#ifdef DEBUG +#ifdef TINYXML2_DEBUG const bool hadError = Error(); #endif - _errorID = XML_NO_ERROR; - _errorStr1 = 0; - _errorStr2 = 0; + ClearError(); delete [] _charBuffer; _charBuffer = 0; + _parsingDepth = 0; #if 0 _textPool.Trace( "text" ); @@ -1808,8 +2066,8 @@ void XMLDocument::Clear() _commentPool.Trace( "comment" ); _attributePool.Trace( "attribute" ); #endif - -#ifdef DEBUG + +#ifdef TINYXML2_DEBUG if ( !hadError ) { TIXMLASSERT( _elementPool.CurrentAllocs() == _elementPool.Untracked() ); TIXMLASSERT( _attributePool.CurrentAllocs() == _attributePool.Untracked() ); @@ -1820,11 +2078,22 @@ void XMLDocument::Clear() } +void XMLDocument::DeepCopy(XMLDocument* target) const +{ + TIXMLASSERT(target); + if (target == this) { + return; // technically success - a no-op. + } + + target->Clear(); + for (const XMLNode* node = this->FirstChild(); node; node = node->NextSibling()) { + target->InsertEndChild(node->DeepClone(target)); + } +} + XMLElement* XMLDocument::NewElement( const char* name ) { - TIXMLASSERT( sizeof( XMLElement ) == _elementPool.ItemSize() ); - XMLElement* ele = new (_elementPool.Alloc()) XMLElement( this ); - ele->_memPool = &_elementPool; + XMLElement* ele = CreateUnlinkedNode<XMLElement>( _elementPool ); ele->SetName( name ); return ele; } @@ -1832,9 +2101,7 @@ XMLElement* XMLDocument::NewElement( const char* name ) XMLComment* XMLDocument::NewComment( const char* str ) { - TIXMLASSERT( sizeof( XMLComment ) == _commentPool.ItemSize() ); - XMLComment* comment = new (_commentPool.Alloc()) XMLComment( this ); - comment->_memPool = &_commentPool; + XMLComment* comment = CreateUnlinkedNode<XMLComment>( _commentPool ); comment->SetValue( str ); return comment; } @@ -1842,9 +2109,7 @@ XMLComment* XMLDocument::NewComment( const char* str ) XMLText* XMLDocument::NewText( const char* str ) { - TIXMLASSERT( sizeof( XMLText ) == _textPool.ItemSize() ); - XMLText* text = new (_textPool.Alloc()) XMLText( this ); - text->_memPool = &_textPool; + XMLText* text = CreateUnlinkedNode<XMLText>( _textPool ); text->SetValue( str ); return text; } @@ -1852,9 +2117,7 @@ XMLText* XMLDocument::NewText( const char* str ) XMLDeclaration* XMLDocument::NewDeclaration( const char* str ) { - TIXMLASSERT( sizeof( XMLDeclaration ) == _commentPool.ItemSize() ); - XMLDeclaration* dec = new (_commentPool.Alloc()) XMLDeclaration( this ); - dec->_memPool = &_commentPool; + XMLDeclaration* dec = CreateUnlinkedNode<XMLDeclaration>( _commentPool ); dec->SetValue( str ? str : "xml version=\"1.0\" encoding=\"UTF-8\"" ); return dec; } @@ -1862,9 +2125,7 @@ XMLDeclaration* XMLDocument::NewDeclaration( const char* str ) XMLUnknown* XMLDocument::NewUnknown( const char* str ) { - TIXMLASSERT( sizeof( XMLUnknown ) == _commentPool.ItemSize() ); - XMLUnknown* unk = new (_commentPool.Alloc()) XMLUnknown( this ); - unk->_memPool = &_commentPool; + XMLUnknown* unk = CreateUnlinkedNode<XMLUnknown>( _commentPool ); unk->SetValue( str ); return unk; } @@ -1884,7 +2145,7 @@ static FILE* callfopen( const char* filepath, const char* mode ) #endif return fp; } - + void XMLDocument::DeleteNode( XMLNode* node ) { TIXMLASSERT( node ); TIXMLASSERT(node->_document == this ); @@ -1905,10 +2166,16 @@ void XMLDocument::DeleteNode( XMLNode* node ) { XMLError XMLDocument::LoadFile( const char* filename ) { + if ( !filename ) { + TIXMLASSERT( false ); + SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=<null>" ); + return _errorID; + } + Clear(); FILE* fp = callfopen( filename, "rb" ); if ( !fp ) { - SetError( XML_ERROR_FILE_NOT_FOUND, filename, 0 ); + SetError( XML_ERROR_FILE_NOT_FOUND, 0, "filename=%s", filename ); return _errorID; } LoadFile( fp ); @@ -1932,10 +2199,12 @@ struct LongFitsIntoSizeTMinusOne { }; template <> -bool LongFitsIntoSizeTMinusOne<false>::Fits( unsigned long /*value*/ ) -{ - return true; -} +struct LongFitsIntoSizeTMinusOne<false> { + static bool Fits( unsigned long ) + { + return true; + } +}; XMLError XMLDocument::LoadFile( FILE* fp ) { @@ -1985,9 +2254,15 @@ XMLError XMLDocument::LoadFile( FILE* fp ) XMLError XMLDocument::SaveFile( const char* filename, bool compact ) { + if ( !filename ) { + TIXMLASSERT( false ); + SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=<null>" ); + return _errorID; + } + FILE* fp = callfopen( filename, "w" ); if ( !fp ) { - SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, filename, 0 ); + SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=%s", filename ); return _errorID; } SaveFile(fp, compact); @@ -2000,7 +2275,7 @@ XMLError XMLDocument::SaveFile( FILE* fp, bool compact ) { // Clear any error from the last save, otherwise it will get reported // for *this* call. - SetError( XML_NO_ERROR, 0, 0 ); + ClearError(); XMLPrinter stream( fp, compact ); Print( &stream ); return _errorID; @@ -2050,66 +2325,98 @@ void XMLDocument::Print( XMLPrinter* streamer ) const } -void XMLDocument::SetError( XMLError error, const char* str1, const char* str2 ) +void XMLDocument::SetError( XMLError error, int lineNum, const char* format, ... ) { TIXMLASSERT( error >= 0 && error < XML_ERROR_COUNT ); _errorID = error; - _errorStr1 = str1; - _errorStr2 = str2; + _errorLineNum = lineNum; + _errorStr.Reset(); + + size_t BUFFER_SIZE = 1000; + char* buffer = new char[BUFFER_SIZE]; + + TIXMLASSERT(sizeof(error) <= sizeof(int)); + TIXML_SNPRINTF(buffer, BUFFER_SIZE, "Error=%s ErrorID=%d (0x%x) Line number=%d", ErrorIDToName(error), int(error), int(error), lineNum); + + if (format) { + size_t len = strlen(buffer); + TIXML_SNPRINTF(buffer + len, BUFFER_SIZE - len, ": "); + len = strlen(buffer); + + va_list va; + va_start(va, format); + TIXML_VSNPRINTF(buffer + len, BUFFER_SIZE - len, format, va); + va_end(va); + } + _errorStr.SetStr(buffer); + delete[] buffer; } -const char* XMLDocument::ErrorName() const + +/*static*/ const char* XMLDocument::ErrorIDToName(XMLError errorID) { - TIXMLASSERT( _errorID >= 0 && _errorID < XML_ERROR_COUNT ); - const char* errorName = _errorNames[_errorID]; + TIXMLASSERT( errorID >= 0 && errorID < XML_ERROR_COUNT ); + const char* errorName = _errorNames[errorID]; TIXMLASSERT( errorName && errorName[0] ); return errorName; } -void XMLDocument::PrintError() const +const char* XMLDocument::ErrorStr() const { - if ( Error() ) { - static const int LEN = 20; - char buf1[LEN] = { 0 }; - char buf2[LEN] = { 0 }; + return _errorStr.Empty() ? "" : _errorStr.GetStr(); +} - if ( _errorStr1 ) { - TIXML_SNPRINTF( buf1, LEN, "%s", _errorStr1 ); - } - if ( _errorStr2 ) { - TIXML_SNPRINTF( buf2, LEN, "%s", _errorStr2 ); - } - // Should check INT_MIN <= _errorID && _errorId <= INT_MAX, but that - // causes a clang "always true" -Wtautological-constant-out-of-range-compare warning - TIXMLASSERT( 0 <= _errorID && XML_ERROR_COUNT - 1 <= INT_MAX ); - printf( "XMLDocument error id=%d '%s' str1=%s str2=%s\n", - static_cast<int>( _errorID ), ErrorName(), buf1, buf2 ); - } +void XMLDocument::PrintError() const +{ + printf("%s\n", ErrorStr()); +} + +const char* XMLDocument::ErrorName() const +{ + return ErrorIDToName(_errorID); } void XMLDocument::Parse() { TIXMLASSERT( NoChildren() ); // Clear() must have been called previously TIXMLASSERT( _charBuffer ); + _parseCurLineNum = 1; + _parseLineNum = 1; char* p = _charBuffer; - p = XMLUtil::SkipWhiteSpace( p ); + p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum ); p = const_cast<char*>( XMLUtil::ReadBOM( p, &_writeBOM ) ); if ( !*p ) { SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 ); return; } - ParseDeep(p, 0 ); + ParseDeep(p, 0, &_parseCurLineNum ); +} + +void XMLDocument::PushDepth() +{ + _parsingDepth++; + if (_parsingDepth == TINYXML2_MAX_ELEMENT_DEPTH) { + SetError(XML_ELEMENT_DEPTH_EXCEEDED, _parseCurLineNum, "Element nesting is too deep." ); + } +} + +void XMLDocument::PopDepth() +{ + TIXMLASSERT(_parsingDepth > 0); + --_parsingDepth; } XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) : _elementJustOpened( false ), + _stack(), _firstElement( true ), _fp( file ), _depth( depth ), _textDepth( -1 ), _processEntities( true ), - _compactMode( compact ) + _compactMode( compact ), + _buffer() { for( int i=0; i<ENTITY_RANGE; ++i ) { _entityFlag[i] = false; @@ -2117,8 +2424,9 @@ XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) : } for( int i=0; i<NUM_ENTITIES; ++i ) { const char entityValue = entities[i].value; - TIXMLASSERT( 0 <= entityValue && entityValue < ENTITY_RANGE ); - _entityFlag[ (unsigned char)entityValue ] = true; + const unsigned char flagIndex = (unsigned char)entityValue; + TIXMLASSERT( flagIndex < ENTITY_RANGE ); + _entityFlag[flagIndex] = true; } _restrictedEntityFlag[(unsigned char)'&'] = true; _restrictedEntityFlag[(unsigned char)'<'] = true; @@ -2149,10 +2457,36 @@ void XMLPrinter::Print( const char* format, ... ) } +void XMLPrinter::Write( const char* data, size_t size ) +{ + if ( _fp ) { + fwrite ( data , sizeof(char), size, _fp); + } + else { + char* p = _buffer.PushArr( static_cast<int>(size) ) - 1; // back up over the null terminator. + memcpy( p, data, size ); + p[size] = 0; + } +} + + +void XMLPrinter::Putc( char ch ) +{ + if ( _fp ) { + fputc ( ch, _fp); + } + else { + char* p = _buffer.PushArr( sizeof(char) ) - 1; // back up over the null terminator. + p[0] = ch; + p[1] = 0; + } +} + + void XMLPrinter::PrintSpace( int depth ) { for( int i=0; i<depth; ++i ) { - Print( " " ); + Write( " " ); } } @@ -2174,15 +2508,16 @@ void XMLPrinter::PrintString( const char* p, bool restricted ) if ( flag[(unsigned char)(*q)] ) { while ( p < q ) { const size_t delta = q - p; - // %.*s accepts type int as "precision" const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta; - Print( "%.*s", toPrint, p ); + Write( p, toPrint ); p += toPrint; } bool entityPatternPrinted = false; for( int i=0; i<NUM_ENTITIES; ++i ) { if ( entities[i].value == *q ) { - Print( "&%s;", entities[i].pattern ); + Putc( '&' ); + Write( entities[i].pattern, entities[i].length ); + Putc( ';' ); entityPatternPrinted = true; break; } @@ -2197,12 +2532,16 @@ void XMLPrinter::PrintString( const char* p, bool restricted ) ++q; TIXMLASSERT( p <= q ); } + // Flush the remaining string. This will be the entire + // string if an entity wasn't found. + if ( p < q ) { + const size_t delta = q - p; + const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta; + Write( p, toPrint ); + } } - // Flush the remaining string. This will be the entire - // string if an entity wasn't found. - TIXMLASSERT( p <= q ); - if ( !_processEntities || ( p < q ) ) { - Print( "%s", p ); + else { + Write( p ); } } @@ -2211,7 +2550,7 @@ void XMLPrinter::PushHeader( bool writeBOM, bool writeDec ) { if ( writeBOM ) { static const unsigned char bom[] = { TIXML_UTF_LEAD_0, TIXML_UTF_LEAD_1, TIXML_UTF_LEAD_2, 0 }; - Print( "%s", bom ); + Write( reinterpret_cast< const char* >( bom ) ); } if ( writeDec ) { PushDeclaration( "xml version=\"1.0\"" ); @@ -2225,13 +2564,15 @@ void XMLPrinter::OpenElement( const char* name, bool compactMode ) _stack.Push( name ); if ( _textDepth < 0 && !_firstElement && !compactMode ) { - Print( "\n" ); + Putc( '\n' ); } if ( !compactMode ) { PrintSpace( _depth ); } - Print( "<%s", name ); + Write ( "<" ); + Write ( name ); + _elementJustOpened = true; _firstElement = false; ++_depth; @@ -2241,9 +2582,11 @@ void XMLPrinter::OpenElement( const char* name, bool compactMode ) void XMLPrinter::PushAttribute( const char* name, const char* value ) { TIXMLASSERT( _elementJustOpened ); - Print( " %s=\"", name ); + Putc ( ' ' ); + Write( name ); + Write( "=\"" ); PrintString( value, false ); - Print( "\"" ); + Putc ( '\"' ); } @@ -2263,6 +2606,14 @@ void XMLPrinter::PushAttribute( const char* name, unsigned v ) } +void XMLPrinter::PushAttribute(const char* name, int64_t v) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr(v, buf, BUF_SIZE); + PushAttribute(name, buf); +} + + void XMLPrinter::PushAttribute( const char* name, bool v ) { char buf[BUF_SIZE]; @@ -2285,21 +2636,23 @@ void XMLPrinter::CloseElement( bool compactMode ) const char* name = _stack.Pop(); if ( _elementJustOpened ) { - Print( "/>" ); + Write( "/>" ); } else { if ( _textDepth < 0 && !compactMode) { - Print( "\n" ); + Putc( '\n' ); PrintSpace( _depth ); } - Print( "</%s>", name ); + Write ( "</" ); + Write ( name ); + Write ( ">" ); } if ( _textDepth == _depth ) { _textDepth = -1; } if ( _depth == 0 && !compactMode) { - Print( "\n" ); + Putc( '\n' ); } _elementJustOpened = false; } @@ -2311,7 +2664,7 @@ void XMLPrinter::SealElementIfJustOpened() return; } _elementJustOpened = false; - Print( ">" ); + Putc( '>' ); } @@ -2321,13 +2674,22 @@ void XMLPrinter::PushText( const char* text, bool cdata ) SealElementIfJustOpened(); if ( cdata ) { - Print( "<![CDATA[%s]]>", text ); + Write( "<![CDATA[" ); + Write( text ); + Write( "]]>" ); } else { PrintString( text, true ); } } +void XMLPrinter::PushText( int64_t value ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( value, buf, BUF_SIZE ); + PushText( buf, false ); +} + void XMLPrinter::PushText( int value ) { char buf[BUF_SIZE]; @@ -2372,11 +2734,14 @@ void XMLPrinter::PushComment( const char* comment ) { SealElementIfJustOpened(); if ( _textDepth < 0 && !_firstElement && !_compactMode) { - Print( "\n" ); + Putc( '\n' ); PrintSpace( _depth ); } _firstElement = false; - Print( "<!--%s-->", comment ); + + Write( "<!--" ); + Write( comment ); + Write( "-->" ); } @@ -2384,11 +2749,14 @@ void XMLPrinter::PushDeclaration( const char* value ) { SealElementIfJustOpened(); if ( _textDepth < 0 && !_firstElement && !_compactMode) { - Print( "\n" ); + Putc( '\n' ); PrintSpace( _depth ); } _firstElement = false; - Print( "<?%s?>", value ); + + Write( "<?" ); + Write( value ); + Write( "?>" ); } @@ -2396,11 +2764,14 @@ void XMLPrinter::PushUnknown( const char* value ) { SealElementIfJustOpened(); if ( _textDepth < 0 && !_firstElement && !_compactMode) { - Print( "\n" ); + Putc( '\n' ); PrintSpace( _depth ); } _firstElement = false; - Print( "<!%s>", value ); + + Write( "<!" ); + Write( value ); + Putc( '>' ); } @@ -2464,4 +2835,3 @@ bool XMLPrinter::Visit( const XMLUnknown& unknown ) } } // namespace tinyxml2 - diff --git a/main.cpp b/main.cpp index 498fc226..7c750dd7 100644 --- a/main.cpp +++ b/main.cpp @@ -1,8 +1,8 @@ /* - * MULTI-CHANNEL SIGNED DISTANCE FIELD GENERATOR v1.5 (2017-07-23) - standalone console program + * MULTI-CHANNEL SIGNED DISTANCE FIELD GENERATOR v1.6 (2019-04-08) - standalone console program * -------------------------------------------------------------------------------------------- - * A utility by Viktor Chlumsky, (c) 2014 - 2017 + * A utility by Viktor Chlumsky, (c) 2014 - 2019 * */ @@ -82,7 +82,7 @@ static bool parseAngle(double &value, const char *arg) { if (result == 1) return true; if (result == 2 && (c1 == 'd' || c1 == 'D')) { - value = M_PI*value/180; + value *= M_PI/180; return true; } return false; @@ -131,6 +131,12 @@ static void parseColoring(Shape &shape, const char *edgeAssignment) { } } +static void invertColor(Bitmap<float> &bitmap) { + for (int y = 0; y < bitmap.height(); ++y) + for (int x = 0; x < bitmap.width(); ++x) + bitmap(x, y) = 1.f-bitmap(x, y); +} + static void invertColor(Bitmap<FloatRGB> &bitmap) { for (int y = 0; y < bitmap.height(); ++y) for (int x = 0; x < bitmap.width(); ++x) { @@ -140,12 +146,6 @@ static void invertColor(Bitmap<FloatRGB> &bitmap) { } } -static void invertColor(Bitmap<float> &bitmap) { - for (int y = 0; y < bitmap.height(); ++y) - for (int x = 0; x < bitmap.width(); ++x) - bitmap(x, y) = 1.f-bitmap(x, y); -} - static bool writeTextBitmap(FILE *file, const float *values, int cols, int rows) { for (int row = 0; row < rows; ++row) { for (int col = 0; col < cols; ++col) { @@ -241,8 +241,7 @@ static const char * writeOutput(const Bitmap<T> &bitmap, const char *filename, F fclose(file); return NULL; } - default: - break; + default:; } } else { if (format == AUTO || format == TEXT) @@ -296,14 +295,20 @@ static const char *helpText = "\tChanges the threshold used to detect and correct potential artifacts. 0 disables error correction.\n" " -exportshape <filename.txt>\n" "\tSaves the shape description into a text file that can be edited and loaded using -shapedesc.\n" + " -fillrule <nonzero / evenodd / positive / negative>\n" + "\tSets the fill rule for the scanline pass. Default is nonzero.\n" " -format <png / bmp / text / textfloat / bin / binfloat / binfloatbe>\n" "\tSpecifies the output format of the distance field. Otherwise it is chosen based on output file extension.\n" + " -guessorder\n" + "\tAttempts to detect if shape contours have the wrong winding and generates the SDF with the right one.\n" " -help\n" "\tDisplays this help.\n" - " -keeporder\n" - "\tDisables the detection of shape orientation and keeps it as is.\n" " -legacy\n" "\tUses the original (legacy) distance field algorithms.\n" + " -nooverlap\n" + "\tDisables resolution of overlapping contours.\n" + " -noscanline\n" + "\tDisables the scanline pass, which corrects the distance field's signs according to the selected fill rule.\n" " -o <filename>\n" "\tSets the output file name. The default value is \"output.png\".\n" " -printmetrics\n" @@ -312,8 +317,12 @@ static const char *helpText = "\tSets the width of the range between the lowest and highest signed distance in pixels.\n" " -range <range>\n" "\tSets the width of the range between the lowest and highest signed distance in shape units.\n" + " -reverseorder\n" + "\tGenerates the distance field as if shape vertices were in reverse order.\n" " -scale <scale>\n" "\tSets the scale used to convert shape units to pixels.\n" + " -seed <n>\n" + "\tSets the random seed for edge coloring heuristic.\n" " -size <width> <height>\n" "\tSets the dimensions of the output image.\n" " -stdout\n" @@ -324,10 +333,6 @@ static const char *helpText = "\tRenders an image preview without flattening the color channels.\n" " -translate <x> <y>\n" "\tSets the translation of the shape in shape units.\n" - " -reverseorder\n" - "\tDisables the detection of shape orientation and reverses the order of its vertices.\n" - " -seed <n>\n" - "\tSets the random seed for edge coloring heuristic.\n" " -yflip\n" "\tInverts the Y axis in the output distance field. The default order is bottom to top.\n" "\n"; @@ -351,6 +356,9 @@ int main(int argc, const char * const *argv) { METRICS } mode = MULTI; bool legacyMode = false; + bool overlapSupport = true; + bool scanlinePass = true; + FillRule fillRule = FILL_NONZERO; Format format = AUTO; const char *input = NULL; const char *output = "output.png"; @@ -375,7 +383,7 @@ int main(int argc, const char * const *argv) { Vector2 scale = 1; bool scaleSpecified = false; double angleThreshold = 3; - double edgeThreshold = 1.00000001; + double edgeThreshold = 1.001; bool defEdgeAssignment = true; const char *edgeAssignment = NULL; bool yFlip = false; @@ -385,7 +393,7 @@ int main(int argc, const char * const *argv) { KEEP, REVERSE, GUESS - } orientation = GUESS; + } orientation = KEEP; unsigned long long coloringSeed = 0; int argPos = 1; @@ -394,7 +402,7 @@ int main(int argc, const char * const *argv) { const char *arg = argv[argPos]; #define ARG_CASE(s, p) if (!strcmp(arg, s) && argPos+(p) < argc) #define ARG_MODE(s, m) if (!strcmp(arg, s)) { mode = m; ++argPos; continue; } - #define SETFORMAT(fmt, ext) do { format = fmt; if (!outputSpecified) output = "output." ext; } while (false) + #define SET_FORMAT(fmt, ext) do { format = fmt; if (!outputSpecified) output = "output." ext; } while (false) ARG_MODE("sdf", SINGLE) ARG_MODE("psdf", PSEUDO) @@ -448,15 +456,40 @@ int main(int argc, const char * const *argv) { argPos += 1; continue; } + ARG_CASE("-nooverlap", 0) { + overlapSupport = false; + argPos += 1; + continue; + } + ARG_CASE("-noscanline", 0) { + scanlinePass = false; + argPos += 1; + continue; + } + ARG_CASE("-scanline", 0) { + scanlinePass = true; + argPos += 1; + continue; + } + ARG_CASE("-fillrule", 1) { + if (!strcmp(argv[argPos+1], "nonzero")) fillRule = FILL_NONZERO; + else if (!strcmp(argv[argPos+1], "evenodd") || !strcmp(argv[argPos+1], "odd")) fillRule = FILL_ODD; + else if (!strcmp(argv[argPos+1], "positive")) fillRule = FILL_POSITIVE; + else if (!strcmp(argv[argPos+1], "negative")) fillRule = FILL_NEGATIVE; + else + puts("Unknown fill rule specified."); + argPos += 2; + continue; + } ARG_CASE("-format", 1) { if (!strcmp(argv[argPos+1], "auto")) format = AUTO; - else if (!strcmp(argv[argPos+1], "png")) SETFORMAT(PNG, "png"); - else if (!strcmp(argv[argPos+1], "bmp")) SETFORMAT(BMP, "bmp"); - else if (!strcmp(argv[argPos+1], "text") || !strcmp(argv[argPos+1], "txt")) SETFORMAT(TEXT, "txt"); - else if (!strcmp(argv[argPos+1], "textfloat") || !strcmp(argv[argPos+1], "txtfloat")) SETFORMAT(TEXT_FLOAT, "txt"); - else if (!strcmp(argv[argPos+1], "bin") || !strcmp(argv[argPos+1], "binary")) SETFORMAT(BINARY, "bin"); - else if (!strcmp(argv[argPos+1], "binfloat") || !strcmp(argv[argPos+1], "binfloatle")) SETFORMAT(BINARY_FLOAT, "bin"); - else if (!strcmp(argv[argPos+1], "binfloatbe")) SETFORMAT(BINART_FLOAT_BE, "bin"); + else if (!strcmp(argv[argPos+1], "png")) SET_FORMAT(PNG, "png"); + else if (!strcmp(argv[argPos+1], "bmp")) SET_FORMAT(BMP, "bmp"); + else if (!strcmp(argv[argPos+1], "text") || !strcmp(argv[argPos+1], "txt")) SET_FORMAT(TEXT, "txt"); + else if (!strcmp(argv[argPos+1], "textfloat") || !strcmp(argv[argPos+1], "txtfloat")) SET_FORMAT(TEXT_FLOAT, "txt"); + else if (!strcmp(argv[argPos+1], "bin") || !strcmp(argv[argPos+1], "binary")) SET_FORMAT(BINARY, "bin"); + else if (!strcmp(argv[argPos+1], "binfloat") || !strcmp(argv[argPos+1], "binfloatle")) SET_FORMAT(BINARY_FLOAT, "bin"); + else if (!strcmp(argv[argPos+1], "binfloatbe")) SET_FORMAT(BINART_FLOAT_BE, "bin"); else puts("Unknown format specified."); argPos += 2; @@ -661,8 +694,7 @@ int main(int argc, const char * const *argv) { fclose(file); break; } - default: - break; + default:; } // Validate and normalize shape @@ -686,9 +718,9 @@ int main(int argc, const char * const *argv) { double l = bounds.l, b = bounds.b, r = bounds.r, t = bounds.t; Vector2 frame(width, height); if (rangeMode == RANGE_UNIT) - l -= range, b -= range, r += range, t += range; + l -= .5*range, b -= .5*range, r += .5*range, t += .5*range; else if (!scaleSpecified) - frame -= 2*pxRange; + frame -= pxRange; if (l >= r || b >= t) l = 0, b = 0, r = 1, t = 1; if (frame.x <= 0 || frame.y <= 0) @@ -706,7 +738,7 @@ int main(int argc, const char * const *argv) { } } if (rangeMode == RANGE_PX && !scaleSpecified) - translate += pxRange/scale; + translate += .5*pxRange/scale; } if (rangeMode == RANGE_PX) @@ -747,7 +779,7 @@ int main(int argc, const char * const *argv) { if (legacyMode) generateSDF_legacy(sdf, shape, range, scale, translate); else - generateSDF(sdf, shape, range, scale, translate); + generateSDF(sdf, shape, range, scale, translate, overlapSupport); break; } case PSEUDO: { @@ -755,7 +787,7 @@ int main(int argc, const char * const *argv) { if (legacyMode) generatePseudoSDF_legacy(sdf, shape, range, scale, translate); else - generatePseudoSDF(sdf, shape, range, scale, translate); + generatePseudoSDF(sdf, shape, range, scale, translate, overlapSupport); break; } case MULTI: { @@ -765,13 +797,12 @@ int main(int argc, const char * const *argv) { parseColoring(shape, edgeAssignment); msdf = Bitmap<FloatRGB>(width, height); if (legacyMode) - generateMSDF_legacy(msdf, shape, range, scale, translate, edgeThreshold); + generateMSDF_legacy(msdf, shape, range, scale, translate, scanlinePass ? 0 : edgeThreshold); else - generateMSDF(msdf, shape, range, scale, translate, edgeThreshold); + generateMSDF(msdf, shape, range, scale, translate, scanlinePass ? 0 : edgeThreshold, overlapSupport); break; } - default: - break; + default:; } if (orientation == GUESS) { @@ -788,8 +819,30 @@ int main(int argc, const char * const *argv) { orientation = minDistance.distance <= 0 ? KEEP : REVERSE; } if (orientation == REVERSE) { - invertColor(sdf); - invertColor(msdf); + switch (mode) { + case SINGLE: + case PSEUDO: + invertColor(sdf); + break; + case MULTI: + invertColor(msdf); + break; + default:; + } + } + if (scanlinePass) { + switch (mode) { + case SINGLE: + case PSEUDO: + distanceSignCorrection(sdf, shape, scale, translate, fillRule); + break; + case MULTI: + distanceSignCorrection(msdf, shape, scale, translate, fillRule); + if (edgeThreshold > 0) + msdfErrorCorrection(msdf, edgeThreshold/(scale*range)); + break; + default:; + } } // Save output @@ -842,8 +895,7 @@ int main(int argc, const char * const *argv) { ABORT("Failed to write test render file."); } break; - default: - break; + default:; } return 0; diff --git a/msdfgen-ext.h b/msdfgen-ext.h index 8cb4c9a8..8445464b 100644 --- a/msdfgen-ext.h +++ b/msdfgen-ext.h @@ -2,9 +2,9 @@ #pragma once /* - * MULTI-CHANNEL SIGNED DISTANCE FIELD GENERATOR v1.5 (2017-07-23) - extensions + * MULTI-CHANNEL SIGNED DISTANCE FIELD GENERATOR v1.6 (2019-04-08) - extensions * ---------------------------------------------------------------------------- - * A utility by Viktor Chlumsky, (c) 2014 - 2017 + * A utility by Viktor Chlumsky, (c) 2014 - 2019 * * The extension module provides ways to easily load input and save output using popular formats. * diff --git a/msdfgen.h b/msdfgen.h index b09392b5..891d5b75 100644 --- a/msdfgen.h +++ b/msdfgen.h @@ -2,9 +2,9 @@ #pragma once /* - * MULTI-CHANNEL SIGNED DISTANCE FIELD GENERATOR v1.5 (2017-07-23) + * MULTI-CHANNEL SIGNED DISTANCE FIELD GENERATOR v1.6 (2019-04-08) * --------------------------------------------------------------- - * A utility by Viktor Chlumsky, (c) 2014 - 2017 + * A utility by Viktor Chlumsky, (c) 2014 - 2019 * * The technique used to generate multi-channel distance fields in this code * has been developed by Viktor Chlumsky in 2014 for his master's thesis, @@ -21,25 +21,29 @@ #include "core/Bitmap.h" #include "core/edge-coloring.h" #include "core/render-sdf.h" +#include "core/rasterization.h" #include "core/save-bmp.h" #include "core/shape-description.h" -#define MSDFGEN_VERSION "1.5" +#define MSDFGEN_VERSION "1.6" namespace msdfgen { /// Generates a conventional single-channel signed distance field. -void generateSDF(Bitmap<float> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate); +void generateSDF(Bitmap<float> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate, bool overlapSupport = true); /// Generates a single-channel signed pseudo-distance field. -void generatePseudoSDF(Bitmap<float> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate); +void generatePseudoSDF(Bitmap<float> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate, bool overlapSupport = true); -/// Generates a multi-channel signed distance field. Edge colors must be assigned first! (see edgeColoringSimple) -void generateMSDF(Bitmap<FloatRGB> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate, double edgeThreshold = 1.00000001); +/// Generates a multi-channel signed distance field. Edge colors must be assigned first! (See edgeColoringSimple) +void generateMSDF(Bitmap<FloatRGB> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate, double edgeThreshold = 1.001, bool overlapSupport = true); + +/// Resolves multi-channel signed distance field values that may cause interpolation artifacts. (Already called by generateMSDF) +void msdfErrorCorrection(Bitmap<FloatRGB> &output, const Vector2 &threshold); // Original simpler versions of the previous functions, which work well under normal circumstances, but cannot deal with overlapping contours. void generateSDF_legacy(Bitmap<float> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate); void generatePseudoSDF_legacy(Bitmap<float> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate); -void generateMSDF_legacy(Bitmap<FloatRGB> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate, double edgeThreshold = 1.00000001); +void generateMSDF_legacy(Bitmap<FloatRGB> &output, const Shape &shape, double range, const Vector2 &scale, const Vector2 &translate, double edgeThreshold = 1.001); }