diff --git a/NEWS.md b/NEWS.md index 646a67268..1323c0eab 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,39 @@ Changelog ========= +2.8.4 (released 2019-01-09) +--------------------------- + +- [ufotools] Python 3 fix + ([#676](https://github.com/adobe-type-tools/afdko/pull/676)) +- [tx] Fixed `-dcf` option failing to print CFF2 global subrs + ([#681](https://github.com/adobe-type-tools/afdko/pull/681)) +- [tx] Fixed subroutinizer 64K limit + ([#687](https://github.com/adobe-type-tools/afdko/pull/687)) +- [makeinstancesufo] Switched from using mutatorMath to + ufoProcessor + ([#669](https://github.com/adobe-type-tools/afdko/pull/669)) +- [makeinstancesufo] Switched from using autohint to psautohint + ([#689](https://github.com/adobe-type-tools/afdko/pull/689)) +- [makeotf] Fixed calls to `sfntedit` + ([#690](https://github.com/adobe-type-tools/afdko/pull/690)) +- [checkoutlinesufo] Fixed failure to remove overlaps + ([#239](https://github.com/adobe-type-tools/afdko/issues/239)) +- [checkoutlinesufo] Fixed glyph hashes when using `-w` option + ([#692](https://github.com/adobe-type-tools/afdko/pull/692)) +- [spot] Updated OpenType feature tags to v1.8.3 + ([#693](https://github.com/adobe-type-tools/afdko/pull/693)) +- [makeotfexe] Fixed "glyph not in font" error + ([#698](https://github.com/adobe-type-tools/afdko/pull/698)) +- [tx] Fixed CFF2 blend/path optimization + ([#697](https://github.com/adobe-type-tools/afdko/pull/697)) +- [otc2otf] Fixed file path bugs + ([#708](https://github.com/adobe-type-tools/afdko/issues/708)) +- [ttfcomponentizer] Fixed setting first component flag + ([#709](https://github.com/adobe-type-tools/afdko/issues/709)) +- [ttfcomponentizer] Update `maxp` maxComponentElements value + ([#710](https://github.com/adobe-type-tools/afdko/issues/710)) + 2.8.3 (released 2018-11-02) --------------------------- diff --git a/README.md b/README.md index 0a90ccf75..47f97d0a3 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Please see the for additional information, such as links to reference materials and related projects. -Major Changes +Major changes ------------- The AFDKO has been restructured so that it can be installed as a Python @@ -118,17 +118,10 @@ You can download older versions of the tools from the [Adobe AFDKO homepage](http://www.adobe.com/devnet/opentype/afdko.html). The tools IS and checkoutlines are included in these downloads. -Build from Source +Build from source ----------------- -In order to build afdko from source get the files from the [afdko github -repository](https://github.com/adobe-type-tools/afdko), cd to the -top-level directory of the afdko, and use the `setup.py` script: - - python setup.py install - -And to be able to run this install command, you must first have -installed the development tools for your platform. +First you must have installed the development tools for your platform. On the Mac, install these with: @@ -141,3 +134,22 @@ On Linux, install these with: apt-get -y install python-dev On Windows, you need Visual Studio 2017. + +To build **afdko** from source, clone the [afdko GitHub +repository](https://github.com/adobe-type-tools/afdko), ensure the `wheel` +module is installed (`pip install wheel`), then `cd` to the top-level +directory of the afdko, and run: + + pip install . + +**Note** + +It's not possible to install the afdko in editable/develop mode using +`pip install -e .`; this is because the toolkit includes binary C executables +which setup.py tries to install in the bin/ (or Scripts/) folder, however +this process was only meant to be used with text-based scripts (either +written in Python or a shell scripting language). To work around this problem +(which really only impacts the few core afdko developers who need to get live +feedback as they modify the source files) you can use alternative methods like +exporting a PYTHONPATH, using a .pth file or similar hacks. +For further details read [this comment](https://github.com/adobe-type-tools/afdko/pull/677#issuecomment-436747212). diff --git a/c/detype1/build/win/visualstudio/detype1.vcxproj b/c/detype1/build/win/visualstudio/detype1.vcxproj old mode 100755 new mode 100644 diff --git a/c/makeotf/build/win/visualstudio/makeotf.vcxproj b/c/makeotf/build/win/visualstudio/makeotf.vcxproj old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/cffread/win/visualstudio/cffread.vcxproj b/c/makeotf/makeotf_lib/build/cffread/win/visualstudio/cffread.vcxproj old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotconv/win/visualstudio/hotconv.vcxproj b/c/makeotf/makeotf_lib/build/hotconv/win/visualstudio/hotconv.vcxproj old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/featgram.g b/c/makeotf/makeotf_lib/build/hotpccts/featgram.g index f99681367..a57079b68 100644 --- a/c/makeotf/makeotf_lib/build/hotpccts/featgram.g +++ b/c/makeotf/makeotf_lib/build/hotpccts/featgram.g @@ -356,14 +356,13 @@ glyphClass[int named, char *gcname]>[GNode *gnode] gcAddRange(gid, endgid, firstPart, secondPart); } else { - zzFAIL(1,zzerr2,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); - goto fail; + hotMsg(g, hotFATAL, "aborting because of errors"); } } else { - zzFAIL(1,zzerr2,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); - goto fail; + featMapGName2GID(g, firstPart, FALSE); + hotMsg(g, hotFATAL, "aborting because of errors"); } zzEXIT(zztasp4); } diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/CHANGES_FROM_131.txt b/c/makeotf/makeotf_lib/build/hotpccts/pccts/CHANGES_FROM_131.txt old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/CHANGES_FROM_133.txt b/c/makeotf/makeotf_lib/build/hotpccts/pccts/CHANGES_FROM_133.txt old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/CHANGES_FROM_133_BEFORE_MR13.txt b/c/makeotf/makeotf_lib/build/hotpccts/pccts/CHANGES_FROM_133_BEFORE_MR13.txt old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/CHANGES_SUMMARY.txt b/c/makeotf/makeotf_lib/build/hotpccts/pccts/CHANGES_SUMMARY.txt old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/IBM_VISUAL_AGE_PROJECTS/antlr.icc b/c/makeotf/makeotf_lib/build/hotpccts/pccts/IBM_VISUAL_AGE_PROJECTS/antlr.icc old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/IBM_VISUAL_AGE_PROJECTS/dlg.icc b/c/makeotf/makeotf_lib/build/hotpccts/pccts/IBM_VISUAL_AGE_PROJECTS/dlg.icc old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/IBM_VISUAL_AGE_PROJECTS/sorcerer.icc b/c/makeotf/makeotf_lib/build/hotpccts/pccts/IBM_VISUAL_AGE_PROJECTS/sorcerer.icc old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/KNOWN_PROBLEMS.txt b/c/makeotf/makeotf_lib/build/hotpccts/pccts/KNOWN_PROBLEMS.txt old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/MPW_Read_Me b/c/makeotf/makeotf_lib/build/hotpccts/pccts/MPW_Read_Me old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/NOTES.OS2 b/c/makeotf/makeotf_lib/build/hotpccts/pccts/NOTES.OS2 old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/NOTES.bcc b/c/makeotf/makeotf_lib/build/hotpccts/pccts/NOTES.bcc old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/NOTES.msvc b/c/makeotf/makeotf_lib/build/hotpccts/pccts/NOTES.msvc old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/NOTES.watcom b/c/makeotf/makeotf_lib/build/hotpccts/pccts/NOTES.watcom old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/README b/c/makeotf/makeotf_lib/build/hotpccts/pccts/README old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/RIGHTS b/c/makeotf/makeotf_lib/build/hotpccts/pccts/RIGHTS old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMS.mak b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMS.mak old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMSVC50.dsp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMSVC50.dsp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMSVC50.dsw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMSVC50.dsw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMSVC50.mak b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMSVC50.mak old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMSVC60.dsp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMSVC60.dsp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMSVC60.dsw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/AntlrMSVC60.dsw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/README b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/README old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr.1 b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr.1 old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr.r b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr.r old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr1.txt b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr1.txt old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr68K.make b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlr68K.make old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlrPPC.make b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/antlrPPC.make old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/bits.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/bits.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/build.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/build.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/dumpcycles.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/dumpcycles.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/dumpnode.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/dumpnode.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/egman.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/egman.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/err.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/err.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/fcache.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/fcache.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/fset.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/fset.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/fset2.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/fset2.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/gen.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/gen.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/generic.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/generic.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/globals.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/globals.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/hash.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/hash.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/hash.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/hash.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/lex.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/lex.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/main.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/main.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/makefile.VMS b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/makefile.VMS old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/makefile1 b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/makefile1 old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/misc.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/misc.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/mode.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/mode.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/mrhoist.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/mrhoist.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/parser.dlg b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/parser.dlg old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/pred.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/pred.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/proto.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/proto.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/scan.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/scan.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/stdpccts.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/stdpccts.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/syn.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/syn.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/tokens.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/tokens.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/watantlr.mak b/c/makeotf/makeotf_lib/build/hotpccts/pccts/antlr/watantlr.mak old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/antlr b/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/antlr deleted file mode 100755 index 590b1c0e2..000000000 Binary files a/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/antlr and /dev/null differ diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/dlg b/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/dlg deleted file mode 100755 index 86f54ab01..000000000 Binary files a/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/dlg and /dev/null differ diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/empty.txt b/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/empty.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/sor deleted file mode 100755 index 0f62d30fd..000000000 Binary files a/c/makeotf/makeotf_lib/build/hotpccts/pccts/bin/sor and /dev/null differ diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/DlgMS.mak b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/DlgMS.mak old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/DlgMSVC50.dsp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/DlgMSVC50.dsp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/DlgMSVC50.dsw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/DlgMSVC50.dsw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/DlgMSVC60.dsp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/DlgMSVC60.dsp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/DlgMSVC60.dsw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/DlgMSVC60.dsw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/automata.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/automata.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg.1 b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg.1 old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg.r b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg.r old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg1.txt b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg1.txt old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg68K.make b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg68K.make old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlgPPC.make b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlgPPC.make old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg_a.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg_a.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg_p.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg_p.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg_p.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/dlg_p.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/err.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/err.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/main.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/main.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/makefile.VMS b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/makefile.VMS old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/makefile1 b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/makefile1 old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/mode.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/mode.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/output.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/output.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/parser.dlg b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/parser.dlg old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/relabel.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/relabel.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/stdpccts.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/stdpccts.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/support.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/support.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/tokens.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/tokens.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/watdlg.mak b/c/makeotf/makeotf_lib/build/hotpccts/pccts/dlg/watdlg.mak old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/AParser.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/AParser.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/AParser.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/AParser.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ASTBase.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ASTBase.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ASTBase.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ASTBase.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ATokPtr.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ATokPtr.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ATokPtrImpl.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ATokPtrImpl.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/AToken.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/AToken.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ATokenBuffer.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ATokenBuffer.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ATokenBuffer.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ATokenBuffer.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ATokenStream.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ATokenStream.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/BufFileInput.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/BufFileInput.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/BufFileInput.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/BufFileInput.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/DLG_stream_input.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/DLG_stream_input.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/DLexer.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/DLexer.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/DLexerBase.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/DLexerBase.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/DLexerBase.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/DLexerBase.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/PBlackBox.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/PBlackBox.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/PCCTSAST.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/PCCTSAST.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/PCCTSAST.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/PCCTSAST.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/SList.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/SList.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/antlr.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/antlr.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ast.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ast.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ast.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/ast.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/charbuf.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/charbuf.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/charptr.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/charptr.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/charptr.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/charptr.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/config.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/config.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/dlgauto.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/dlgauto.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/dlgdef.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/dlgdef.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/err.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/err.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/int.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/int.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_assert.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_assert.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_iostream.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_iostream.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_istream.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_istream.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_setjmp.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_setjmp.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_stdarg.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_stdarg.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_stdio.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_stdio.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_stdlib.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_stdlib.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_string.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pccts_string.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcctscfg.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcctscfg.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcctslib50.dsp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcctslib50.dsp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcctslib50.dsw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcctslib50.dsw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcctslib60.dsp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcctslib60.dsp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcctslib60.dsw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcctslib60.dsw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcnames.bat b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/pcnames.bat old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/slist.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/h/slist.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/history.ps b/c/makeotf/makeotf_lib/build/hotpccts/pccts/history.ps old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/history.txt b/c/makeotf/makeotf_lib/build/hotpccts/pccts/history.txt old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/install68K.mpw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/install68K.mpw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/installPPC.mpw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/installPPC.mpw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/makefile.vms b/c/makeotf/makeotf_lib/build/hotpccts/pccts/makefile.vms old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/README b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/README old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/SorcererMSVC50.dsp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/SorcererMSVC50.dsp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/SorcererMSVC50.dsw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/SorcererMSVC50.dsw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/SorcererMSVC50.mak b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/SorcererMSVC50.mak old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/SorcererMSVC60.dsp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/SorcererMSVC60.dsp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/SorcererMSVC60.dsw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/SorcererMSVC60.dsw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/UPDATES b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/UPDATES old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/cpp.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/cpp.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/err.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/err.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/gen.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/gen.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/globals.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/globals.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/SASTBase.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/SASTBase.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/SCommonAST.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/SCommonAST.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/STreeParser.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/STreeParser.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/astlib.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/astlib.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/sintstack.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/sintstack.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/sorcerer.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/sorcerer.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/sorlist.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/sorlist.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/sstack.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/h/sstack.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/hash.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/hash.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/hash.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/hash.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/CASTBase.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/CASTBase.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/STreeParser.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/STreeParser.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/astlib.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/astlib.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/errsupport.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/errsupport.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/msvc.dsp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/msvc.dsp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/sintstack.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/sintstack.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/sorcerer.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/sorcerer.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/sorlist.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/sorlist.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/sstack.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/lib/sstack.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/look.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/look.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/main.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/main.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/makefile.VMS b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/makefile.VMS old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/makefile1 b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/makefile1 old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/mode.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/mode.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/msvc.dsw b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/msvc.dsw old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/parser.dlg b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/parser.dlg old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/proto.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/proto.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/scan.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/scan.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sor.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sor.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sor.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sor.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sor.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sor.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sor.r b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sor.r old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sor68K.make b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sor68K.make old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sorPPC.make b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sorPPC.make old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/stdpccts.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/stdpccts.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sym.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/sym.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t2.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t2.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t3.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t3.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t4.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t4.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t5.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t5.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t6.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/t6.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test2.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test2.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test3.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test3.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test3.tokens b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test3.tokens old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test4.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test4.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test5.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test5.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test6.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test6.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test6.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test6.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/lang.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/lang.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/main.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/main.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/stdpccts.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/stdpccts.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/t7.dat b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/t7.dat old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/t7.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/t7.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/test1.dat b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/test1.dat old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/test7.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/test7.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/test7.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/test7/test7.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/tokens6.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/test/tokens6.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/t.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/t.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/t2.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/t2.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/t3.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/t3.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/t5.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/t5.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test2.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test2.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test3.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test3.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/AST.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/AST.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/SimpleTreeParser.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/SimpleTreeParser.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/SimpleTreeParser.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/SimpleTreeParser.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/lang.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/lang.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/main.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/main.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/t4.dat b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/t4.dat old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/t4.dat.out b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/t4.dat.out old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/test4.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test4/test4.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test5.sor b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/test5.sor old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/token3.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/testcpp/token3.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/tokens.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/sorcerer/tokens.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/DECmms/genmms.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/DECmms/genmms.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/DECmms/makefile.VMS b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/DECmms/makefile.VMS old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/genmk/genmk.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/genmk/genmk.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/genmk/genmk_old.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/genmk/genmk_old.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/genmk/makefile b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/genmk/makefile old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/genmk/watgenmk.mak b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/genmk/watgenmk.mak old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/msvc.dsp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/msvc.dsp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/rexpr/makefile b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/rexpr/makefile old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/rexpr/rexpr.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/rexpr/rexpr.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/rexpr/rexpr.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/rexpr/rexpr.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/rexpr/test.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/rexpr/test.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/set/set.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/set/set.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/set/set.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/set/set.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/sym/sym.c b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/sym/sym.c old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/sym/template.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/support/sym/template.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/1/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/1/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/10/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/10/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/11/input.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/11/input.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/11/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/11/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/12/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/12/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/13/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/13/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/2/MyLexer.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/2/MyLexer.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/2/MyLexer.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/2/MyLexer.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/2/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/2/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/3/MyLexer.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/3/MyLexer.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/3/MyLexer.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/3/MyLexer.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/3/mytokens.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/3/mytokens.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/3/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/3/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/4/mytokens.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/4/mytokens.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/4/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/4/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/5/input.h b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/5/input.h old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/5/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/5/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/file1 b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/file1 old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/file2 b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/file2 old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/main.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/main.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/makefile2 b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/makefile2 old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/test2.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/6/test2.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/7/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/7/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/8/main.cpp b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/8/main.cpp old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/8/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/8/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/9/test.g b/c/makeotf/makeotf_lib/build/hotpccts/pccts/testcpp/9/test.g old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/pstoken/win/visualstudio/pstoken.vcxproj b/c/makeotf/makeotf_lib/build/pstoken/win/visualstudio/pstoken.vcxproj old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/build/typecomp/win/visualstudio/typecomp.vcxproj b/c/makeotf/makeotf_lib/build/typecomp/win/visualstudio/typecomp.vcxproj old mode 100755 new mode 100644 diff --git a/c/makeotf/makeotf_lib/source/hotconv/featgram.c b/c/makeotf/makeotf_lib/source/hotconv/featgram.c index ef9abc9aa..03a63bb6e 100644 --- a/c/makeotf/makeotf_lib/source/hotconv/featgram.c +++ b/c/makeotf/makeotf_lib/source/hotconv/featgram.c @@ -178,13 +178,12 @@ char *gcname; if (gid != 0 && endgid != 0) { gcAddRange(gid, endgid, firstPart, secondPart); } else { - zzFAIL(1, zzerr2, &zzMissSet, &zzMissText, &zzBadTok, &zzBadText, &zzErrk); - goto fail; + hotMsg(g, hotFATAL, "aborting because of errors"); } } else { - zzFAIL(1, zzerr2, &zzMissSet, &zzMissText, &zzBadTok, &zzBadText, &zzErrk); - goto fail; + featMapGName2GID(g, firstPart, FALSE); + hotMsg(g, hotFATAL, "aborting because of errors"); } zzEXIT(zztasp4); } else { diff --git a/c/makeotf/makeotf_lib/source/typecomp/recode.c b/c/makeotf/makeotf_lib/source/typecomp/recode.c index fb3dddc6f..2b5022bb8 100644 --- a/c/makeotf/makeotf_lib/source/typecomp/recode.c +++ b/c/makeotf/makeotf_lib/source/typecomp/recode.c @@ -893,10 +893,10 @@ static void addWidth(recodeCtx h, Fixed width) { width = 0; switch (h->idType) { case SIDType: - parseWarning(h->g, "glyph '%s' has a negative advance width. Setting width to 0.\n", sindexGetString(h->g, (SID)h->id)); + parseWarning(h->g, "glyph '%s' has a negative advance width. Setting width to 0.", sindexGetString(h->g, (SID)h->id)); break; case CIDType: - parseWarning(h->g, "glyph 'cid#%hu' has a negative advance width. Setting width to 0.\n", h->id); + parseWarning(h->g, "glyph 'cid#%hu' has a negative advance width. Setting width to 0.", h->id); break; default:; } @@ -4912,7 +4912,7 @@ void recodeAddNewGlyph(tcCtx g, unsigned id, unsigned fill_in_font_id, unsigned diff = (diff > 0) ? diff : -diff; if (diff == 1) { - parseWarning(g, "Zero width vs calculated Euro width round-off difference: %f, %d", FIX2DBL(zeroWidth), iwidth); + parseWarning(g, "Zero width vs. calculated Euro width round-off difference: %f, %d", FIX2DBL(zeroWidth), iwidth); } if (diff > 1) { parseWarning(g, "Problem: Zero width of target font is not same as calculated Euro width: %f, %d", FIX2DBL(zeroWidth), iwidth); diff --git a/c/makeotf/source/cb.c b/c/makeotf/source/cb.c index e6620a0a5..3de0e4b9e 100644 --- a/c/makeotf/source/cb.c +++ b/c/makeotf/source/cb.c @@ -1818,17 +1818,17 @@ void cbConvert(cbCtx h, int flags, char *clientVers, if (h->fcdb.files.cnt == 0) { { fcdbGetRec(h->fcdb.ctx, FontName); - cbWarning(h, "Font Menu Name database is not specified or not found .[%s]", FontName); + cbWarning(h, "FontMenuNameDB file was not specified or not found. [%s]", FontName); } } else if (fcdbGetRec(h->fcdb.ctx, FontName)) { { - cbWarning(h, "not in Font Menu Name database [%s]", FontName); + cbWarning(h, "not in FontMenuNameDB [%s]", FontName); } } // Make sure that GOADB file has been read in, if required if ((flags & HOT_RENAME) && (h->alias.recs.cnt < 1) && (type != hotCID)) { - cbWarning(h, "Glyph renaming is requested, but the Glyph Alias And Order DB file was not specified."); + cbWarning(h, "Glyph renaming was requested, but the GlyphOrderAndAliasDB file was not specified."); } h->mac.cmapScript = macScript; /* Used in hotAddmiscData, in ProcessFontInfo */ diff --git a/c/mergefonts/build/osx/xcode/mergeFonts.xcodeproj/project.pbxproj b/c/mergefonts/build/osx/xcode/mergeFonts.xcodeproj/project.pbxproj index 4ebc0f65b..8b6d86703 100644 --- a/c/mergefonts/build/osx/xcode/mergeFonts.xcodeproj/project.pbxproj +++ b/c/mergefonts/build/osx/xcode/mergeFonts.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ buildPhases = ( ); dependencies = ( + DE2E39C421937A7400B0A033 /* PBXTargetDependency */, BDEA9B641E499B3300EFF385 /* PBXTargetDependency */, BDEA9B621E499B2F00EFF385 /* PBXTargetDependency */, BDE02A26190F19CE0013858F /* PBXTargetDependency */, @@ -68,6 +69,7 @@ BDE02A22190F19B90013858F /* libufowrite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDE02A1C190F19940013858F /* libufowrite.a */; }; BDEA9B5F1E499B1800EFF385 /* libnameread.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEA9B5A1E499AFE00EFF385 /* libnameread.a */; }; BDEA9B601E499B1D00EFF385 /* libvarread.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEA9B541E499AF300EFF385 /* libvarread.a */; }; + DEE09B6121935AEC00B474B9 /* libtx_shared.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DEE09B5F21935AD900B474B9 /* libtx_shared.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -561,6 +563,27 @@ remoteGlobalIDString = D2AAC045055464E500DB518D; remoteInfo = varread; }; + DE2E39C021937A6700B0A033 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DEE09B5A21935AD900B474B9 /* tx_shared.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = DE8577CC2192544500D4F584; + remoteInfo = tx_shared; + }; + DE2E39C321937A7400B0A033 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DEE09B5A21935AD900B474B9 /* tx_shared.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = DE8577CC2192544500D4F584; + remoteInfo = tx_shared; + }; + DEE09B5E21935AD900B474B9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DEE09B5A21935AD900B474B9 /* tx_shared.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DE8577CD2192544500D4F584; + remoteInfo = tx_shared; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -603,6 +626,7 @@ BDE02A17190F19940013858F /* ufowrite.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ufowrite.xcodeproj; path = ../../../../public/lib/build/ufowrite/osx/xcode/ufowrite.xcodeproj; sourceTree = ""; }; BDEA9B4F1E499AF300EFF385 /* varread.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = varread.xcodeproj; path = ../../../../public/lib/build/varread/osx/xcode/varread.xcodeproj; sourceTree = ""; }; BDEA9B551E499AFE00EFF385 /* nameread.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = nameread.xcodeproj; path = ../../../../public/lib/build/nameread/osx/xcode/nameread.xcodeproj; sourceTree = ""; }; + DEE09B5A21935AD900B474B9 /* tx_shared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = tx_shared.xcodeproj; path = ../../../../public/lib/build/tx_shared/osx/xcode/tx_shared.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -610,6 +634,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DEE09B6121935AEC00B474B9 /* libtx_shared.a in Frameworks */, BDEA9B601E499B1D00EFF385 /* libvarread.a in Frameworks */, BDEA9B5F1E499B1800EFF385 /* libnameread.a in Frameworks */, BDE02A22190F19B90013858F /* libufowrite.a in Frameworks */, @@ -647,6 +672,7 @@ BDA34AEC0D6F3F530009FF85 /* Headers */, 08FB7795FE84155DC02AAC07 /* Source */, 1AB674ADFE9D54B511CA2CBB /* Products */, + DEE09B6021935AEC00B474B9 /* Frameworks */, ); name = cvt2sing; sourceTree = ""; @@ -774,6 +800,7 @@ BD43E1B90DAB3FF200F5623C /* t1write.xcodeproj */, BDA34F290D6F6A9E0009FF85 /* t2cstr.xcodeproj */, BDA34E9C0D6F657B0009FF85 /* ttread.xcodeproj */, + DEE09B5A21935AD900B474B9 /* tx_shared.xcodeproj */, BDE02A11190F19730013858F /* uforead.xcodeproj */, BDE02A17190F19940013858F /* ufowrite.xcodeproj */, BDEA9B4F1E499AF300EFF385 /* varread.xcodeproj */, @@ -909,6 +936,21 @@ name = Products; sourceTree = ""; }; + DEE09B5B21935AD900B474B9 /* Products */ = { + isa = PBXGroup; + children = ( + DEE09B5F21935AD900B474B9 /* libtx_shared.a */, + ); + name = Products; + sourceTree = ""; + }; + DEE09B6021935AEC00B474B9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -922,6 +964,7 @@ buildRules = ( ); dependencies = ( + DE2E39C121937A6700B0A033 /* PBXTargetDependency */, BDEA9B5E1E499B1100EFF385 /* PBXTargetDependency */, BDEA9B5C1E499B0D00EFF385 /* PBXTargetDependency */, BDE02A20190F19A80013858F /* PBXTargetDependency */, @@ -1053,6 +1096,10 @@ ProductGroup = BDA34E9D0D6F657B0009FF85 /* Products */; ProjectRef = BDA34E9C0D6F657B0009FF85 /* ttread.xcodeproj */; }, + { + ProductGroup = DEE09B5B21935AD900B474B9 /* Products */; + ProjectRef = DEE09B5A21935AD900B474B9 /* tx_shared.xcodeproj */; + }, { ProductGroup = BDE02A12190F19730013858F /* Products */; ProjectRef = BDE02A11190F19730013858F /* uforead.xcodeproj */; @@ -1236,6 +1283,13 @@ remoteRef = BDEA9B591E499AFE00EFF385 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + DEE09B5F21935AD900B474B9 /* libtx_shared.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libtx_shared.a; + remoteRef = DEE09B5E21935AD900B474B9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; /* End PBXReferenceProxy section */ /* Begin PBXSourcesBuildPhase section */ @@ -1485,6 +1539,16 @@ name = varread; targetProxy = BDEA9B631E499B3300EFF385 /* PBXContainerItemProxy */; }; + DE2E39C121937A6700B0A033 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = tx_shared; + targetProxy = DE2E39C021937A6700B0A033 /* PBXContainerItemProxy */; + }; + DE2E39C421937A7400B0A033 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = tx_shared; + targetProxy = DE2E39C321937A7400B0A033 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ diff --git a/c/mergefonts/build/win/visualstudio/mergeFonts.sln b/c/mergefonts/build/win/visualstudio/mergeFonts.sln index 458c6f599..427abe889 100644 --- a/c/mergefonts/build/win/visualstudio/mergeFonts.sln +++ b/c/mergefonts/build/win/visualstudio/mergeFonts.sln @@ -1,10 +1,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.27703.2047 +VisualStudioVersion = 15.0.26228.48 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mergeFonts", "mergeFonts.vcxproj", "{66C1C775-5375-41AC-BEC0-93173237700D}" ProjectSection(ProjectDependencies) = postProject {0F6C5C6E-5B6D-463D-81DF-CCEB1271C759} = {0F6C5C6E-5B6D-463D-81DF-CCEB1271C759} + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54} = {34A7C3B7-FC39-49B3-A554-C532F2DC4A54} {DA4450E3-E694-4F89-AEB3-D1A5498BD6F5} = {DA4450E3-E694-4F89-AEB3-D1A5498BD6F5} EndProjectSection EndProject @@ -54,6 +55,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nameread", "..\..\..\..\pub EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "varread", "..\..\..\..\public\lib\build\varread\win\visualstudio\varread.vcxproj", "{0F6C5C6E-5B6D-463D-81DF-CCEB1271C759}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tx_shared", "..\..\..\..\public\lib\build\tx_shared\win\visualstudio\tx_shared.vcxproj", "{34A7C3B7-FC39-49B3-A554-C532F2DC4A54}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -254,6 +257,14 @@ Global {0F6C5C6E-5B6D-463D-81DF-CCEB1271C759}.Release|x64.Build.0 = Release|x64 {0F6C5C6E-5B6D-463D-81DF-CCEB1271C759}.Release|x86.ActiveCfg = Release|Win32 {0F6C5C6E-5B6D-463D-81DF-CCEB1271C759}.Release|x86.Build.0 = Release|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x64.ActiveCfg = Debug|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x64.Build.0 = Debug|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x86.ActiveCfg = Debug|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x86.Build.0 = Debug|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x64.ActiveCfg = Release|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x64.Build.0 = Release|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x86.ActiveCfg = Release|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/c/mergefonts/build/win/visualstudio/mergeFonts.vcxproj b/c/mergefonts/build/win/visualstudio/mergeFonts.vcxproj old mode 100755 new mode 100644 index 28a212126..26eb94dcc --- a/c/mergefonts/build/win/visualstudio/mergeFonts.vcxproj +++ b/c/mergefonts/build/win/visualstudio/mergeFonts.vcxproj @@ -1,4 +1,4 @@ - + @@ -257,6 +257,9 @@ {0e9d40d8-c144-4760-adc1-22d0e23a72eb} false + + {34a7c3b7-fc39-49b3-a554-c532f2dc4a54} + {2E122640-3CD7-4064-9AA3-9C685EE1A4DA} false @@ -272,4 +275,4 @@ - + \ No newline at end of file diff --git a/c/mergefonts/source/mergeFonts.c b/c/mergefonts/source/mergeFonts.c index 75b4801d1..0bf232abc 100644 --- a/c/mergefonts/source/mergeFonts.c +++ b/c/mergefonts/source/mergeFonts.c @@ -1,162 +1,15 @@ -/* Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. -This software is licensed as OpenSource, under the Apache License, Version 2.0. This license is available at: http://opensource.org/licenses/Apache-2.0. */ +/* Copyright 2014-2018 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. + This software is licensed as OpenSource, under the Apache License, Version 2.0. + This license is available at: http://opensource.org/licenses/Apache-2.0. */ /* * mergeFonts. A minor modification of the tx code base. */ -#include "ctlshare.h" +#include "tx_shared.h" #define MERGEFONTS_VERSION CTL_MAKE_VERSION(1, 2, 0) /* derived from tx */ -#include "cfembed.h" -#include "cffread.h" -#include "cffwrite.h" -#include "ctutil.h" -#include "dynarr.h" -#include "pdfwrite.h" -#include "sfntread.h" -#include "t1read.h" -#include "ttread.h" -#include "t1write.h" -#include "svread.h" -#include "svgwrite.h" -#include "uforead.h" -#include "ufowrite.h" -#include "txops.h" -#include "dictops.h" -#include "abfdesc.h" -#include "supportframepixeltypes.h" -#include "sha1.h" - -#undef global /* Remove conflicting definition from buildch */ - -#include -#include - -#if PLAT_MAC -#include -#include -#endif /* PLAT_MAC */ - -#include -#include -#include -#include -#include -#include -#include - -#if _WIN32 -#include -#include -#define stat _stat -#define S_IFDIR _S_IFDIR -#include /* to get _mkdir() */ -#include -#else -#include -#endif - -/* -------------------------------- Options -------------------------------- */ - -/* Note: options.h must be ascii sorted by option string */ - -enum /* Option enumeration */ -{ - opt_None, /* Not an option */ -#define DCL_OPT(string, index) index, -#include "options.h" - opt_Count -}; - -static const char *options[] = - { -#undef DCL_OPT -#define DCL_OPT(string, index) string, -#include "options.h" -}; - -/* ----------------------- Miscellaneous Definitions ----------------------- */ - -#define ARRAY_LEN(t) (sizeof(t) / sizeof((t)[0])) - -/* Predefined tags */ -#define CID__ CTL_TAG('C', 'I', 'D', ' ') /* sfnt-wrapped CID table */ -#define POST_ CTL_TAG('P', 'O', 'S', 'T') /* Macintosh POST resource */ -#define TYP1_ CTL_TAG('T', 'Y', 'P', '1') /* GX Type 1 sfnt table */ -#define sfnt_ CTL_TAG('s', 'f', 'n', 't') /* sfnt resource */ - -/* File signatures */ -#define sig_PostScript0 CTL_TAG('%', '!', 0x00, 0x00) -#define sig_PostScript1 CTL_TAG('%', 'A', 0x00, 0x00) /* %ADO... */ -#define sig_PostScript2 CTL_TAG('%', '%', 0x00, 0x00) /* %%... */ -#define sig_PFB ((ctlTag)0x80010000) -#define sig_CFF ((ctlTag)0x01000000) -#define sig_OTF CTL_TAG('O', 'T', 'T', 'O') -#define sig_MacResource ((ctlTag)0x00000100) -#define sig_AppleSingle ((ctlTag)0x00051600) -#define sig_AppleDouble ((ctlTag)0x00051607) -#define sig_UFO CTL_TAG('<', '?', 'x', 'm') -/* Generate n-bit mask */ -#define N_BIT_MASK(n) (~(~0UL << (n))) -enum { MAX_VERSION_SIZE = 100 }; - -typedef struct txCtx_ *txCtx; /* tx program context */ - -typedef struct /* Macintosh resource info */ -{ - ctlTag type; - unsigned short id; - unsigned long name; /* Name offset then name index */ - unsigned char attrs; - unsigned long offset; /* Offset to resource data (excludes length) */ - unsigned long length; /* Length of resource data */ -} ResInfo; - -typedef struct /* AppleSingle/Double entry descriptor */ -{ - unsigned long id; - long offset; - unsigned long length; -} EntryDesc; - -typedef struct /* Glyph name to Unicode value mapping */ -{ - char *gname; - unsigned short uv; -} Name2UV; - -enum /* Stream types */ -{ - stm_Src, /* Source */ - stm_SrcUFO, /* Source */ - stm_Dst, /* Destination */ - stm_Tmp, /* Temporary */ - stm_Dbg /* Debug */ -}; - -#define TMPSIZE 50000 /* Temporary stream buffer size */ - -typedef struct /* Data stream */ -{ - short type; - short flags; -#define STM_TMP_ERR (1 << 0) /* Temporary stream error occured */ -#define STM_DONT_CLOSE (1 << 1) /* Don't close stream */ - char *filename; - FILE *fp; - char *buf; - size_t pos; /* Tmp stream position */ -} Stream; - -typedef struct /* Font record */ -{ - int type; /* Font technology type */ - int iTTC; /* TrueType Collection index */ - long offset; /* File offset */ -} FontRec; - #ifdef __cplusplus extern "C" { #endif @@ -232,4854 +85,234 @@ typedef struct abfGlyphBegCallback mergeGlyphBeg; /* save original glyph beg() function */ dnaDCL(int, newiFDArray); /* Array holding the destination font iFD for each source font dict. */ dnaDCL(int, glyph); /* Array holding the destination font iFD for each source font dict. */ - dnaDCL(GAFileInfo, glyphAliasSet); /* Array of dynamic arrays, one for each font. */ - CIDInfo cidinfo; /* info used to convert a non-CID font to a cID fontl. */ - unsigned short fileIndex; - unsigned short curGAEIndex; /* current index of the GAE entry Must be set in */ - boolean seenNotdef; - int mode; /* the file type of the first font. Thsi is what sets the outptu font file type. */ - boolean hintsOnly; /* copy hints only */ - boolean compareNameOnly; /* compare hint dict to source font dict by name only. Not yet used - at the moment, mergeFonts compares teh fontName only. */ - struct - { - long cnt; /* ABF_EMPTY_ARRAY */ - long array[16]; - } XUID; -} MergeInfo; - -typedef struct /* CFF subr data */ -{ - unsigned short count; - unsigned char offSize; - unsigned long offset; /* Offset array base */ - unsigned long dataref; - dnaDCL(unsigned char, stemcnt); /* Per-subr stem count */ - unsigned short bias; -} SubrInfo; - -typedef struct /* cmap format 4 segment */ -{ - unsigned short endCode; - unsigned short startCode; - short idDelta; - unsigned long idRangeOffset; /* changed from unsigned short */ -} cmapSegment4; - -enum /* Charstring types */ -{ - dcf_CharString, - dcf_GlobalSubr, - dcf_LocalSubr -}; - -typedef float FltMtx[6]; /* Float matrix */ - -/* Function types */ -typedef size_t (*SegRefillFunc)(txCtx h, char **ptr); -typedef void (*abfGlyphWidthCallback)(abfGlyphCallbacks *cb, float hAdv); -typedef void (*DumpElementProc)(txCtx h, long index, const ctlRegion *region); - -enum /* Source font technology types */ -{ - src_Type1, /* Type 1 */ - src_OTF, /* OTF */ - src_CFF, /* Naked CFF */ - src_TrueType, /* TrueType */ - src_SVG, /* SVG data. Supported only as a merge font, and not as the first in the set. */ - src_UFO, /* UFO data. */ -}; - -enum /* Operation modes */ -{ - mode_dump, - mode_ps, - mode_afm, - mode_path, - mode_cff, - mode_cef, - mode_pdf, - mode_mtx, - mode_t1, - mode_bc, /* is deprecated, but still support the option in order to be able to print an error message */ - mode_svg, - mode_ufow, - mode_dcf -}; - -/* Memory allocation failure simulation control values */ -enum { - FAIL_REPORT = -1, /* Report total calls to mem_manage() */ - FAIL_INACTIVE = -2 /* Inactivate memory allocation failure */ -}; - -struct txCtx_ { - char *progname; /* This program's name (for diagnostics) */ - long flags; /* Control flags */ -#define SEEN_MODE (1 << 0) /* Flags mode option seen */ -#define DONE_FILE (1 << 1) /* Processed font file */ -#define DUMP_RES (1 << 2) /* Print mac resource map */ -#define DUMP_ASD (1 << 3) /* Print AppleSingle/Double data */ -#define AUTO_FILE_FROM_FILE (1 << 4) /* Gen. dst filename from src filename */ -#define AUTO_FILE_FROM_FONT (1 << 5) /* Gen. dst filename from src FontName */ -#define SUBSET_OPT (1 << 6) /* Subsetting option specified */ -#define EVERY_FONT (1 << 7) /* Read every font from multi-font file */ -#define SHOW_NAMES (1 << 8) /* Show filename and FontName being processed */ -#define PRESERVE_GID (1 << 9) /* Preserve gids when subsetting */ -#define NO_UDV_CLAMPING (1 << 10) /* Don't clamp UVD's */ -#define SUBSET__EXCLUDE_OPT (1 << 11) /* use glyph list to exclude glyphs, instead of including them */ -#define SUBSET_SKIP_NOTDEF (1 << 12) /* While this is set, don't force the notdef into the current subset. */ -#define SUBSET_HAS_NOTDEF (1 << 13) /* Indcates that notdef has been added, no need to force it in.*/ - int mode; /* Current mode */ - char *modename; /* Name of current mode */ - abfTopDict *top; /* Top dictionary */ - struct /* Source data */ - { - int type; /* Font technology type */ - Stream stm; /* Input stream */ - long offset; /* Buffer offset */ - long length; /* Buffer length */ - char buf[BUFSIZ]; /* Buffer data */ - char *end; /* One past end of buffer */ - char *next; /* Next byte available */ - int print_file; /* Flags when to print filename ahead of debug */ - dnaDCL(abfGlyphInfo *, glyphs); /* Source glyph list when subsetting */ - dnaDCL(abfGlyphInfo *, exclude); /* Excluded glyph list when subsetting */ - dnaDCL(float, widths); /* Source glyph width for -t1 -3 mode */ - dnaDCL(Stream, streamStack); /* support recursive opening of source stream files ( for components) */ - } src; - struct /* Destination data */ - { - Stream stm; /* Output stream */ - char buf[BUFSIZ]; /* Buffer data */ - void (*begset)(txCtx h); - void (*begfont)(txCtx h, abfTopDict *top); - void (*endfont)(txCtx h); - void (*endset)(txCtx h); - } dst; - dnaDCL(FontRec, fonts); /* Source font records */ - struct /* Macintosh resources */ - { - dnaDCL(ResInfo, map); /* Resouce map */ - dnaDCL(char, names); /* Resouce names */ - } res; - struct /* AppleSingle/Double data */ - { - unsigned long magic; /* Magic #, 00051600-single, 00051607-double */ - unsigned long version; /* Format version */ - dnaDCL(EntryDesc, entries); /* Entry descriptors */ - } asd; - struct /* Font data segment */ - { - SegRefillFunc refill; /* Format-specific refill */ - size_t left; /* Bytes remaining in segment */ - } seg; - struct /* Script file data */ - { - char *buf; /* Whole file buffer */ - dnaDCL(char *, args); /* Arg list */ - } script; - MergeInfo mergeInfo; /* Ctx needed when merging source fonts */ - struct /* File processing */ - { - char *sr; /* Source root path */ - char *sd; /* Source directory path */ - char *dd; /* Destination directory path */ - char src[FILENAME_MAX]; - char dst[FILENAME_MAX]; - } file; - struct /* Random subset data */ - { - dnaDCL(unsigned short, glyphs); /* Tag list */ - dnaDCL(char, args); /* Simulated -g args */ - } subset; - struct /* Option args */ - { - char *U; - char *i; - char *p; - char *P; - struct /* Glyph list (g option) */ - { - int cnt; /* Substring count */ - char *substrs; /* Concatenated substrings */ - } g; - struct - { - int level; - } path; - struct /* cef-specific */ - { - unsigned short flags; /* cefEmbedSpec flags */ - char *F; - } cef; - } arg; - struct /* t1read library */ - { - t1rCtx ctx; - Stream tmp; - Stream dbg; - long flags; - } t1r; - struct /* cffread library */ - { - cfrCtx ctx; - Stream dbg; - long flags; - } cfr; - struct /* ttread library */ - { - ttrCtx ctx; - Stream dbg; - long flags; - } ttr; - struct /* svread library */ - { - svrCtx ctx; - Stream tmp; - Stream dbg; - long flags; - } svr; - struct /* uforead library */ - { - ufoCtx ctx; - Stream src; - Stream dbg; - long flags; - char *altLayerDir; - } ufr; - struct /* cffwrite library */ - { - cfwCtx ctx; - Stream tmp; - Stream dbg; - long flags; - } cfw; - struct /* cfembed library */ - { - cefCtx ctx; - Stream src; - Stream tmp0; - Stream tmp1; - dnaDCL(cefSubsetGlyph, subset); - dnaDCL(char *, gnames); - dnaDCL(unsigned short, lookup); /* Glyph lookup */ - } cef; - struct /* abf facilities */ - { - abfCtx ctx; - struct abfDumpCtx_ dump; - struct abfDrawCtx_ draw; - struct abfMetricsCtx_ metrics; - struct abfAFMCtx_ afm; - } abf; - struct /* pdfwrite library */ - { - pdwCtx ctx; - long flags; - long level; - } pdw; - struct /* Metrics mode data */ - { - int level; /* Output level */ - struct /* Metric data */ - { - struct abfMetricsCtx_ ctx; - abfGlyphCallbacks cb; - } metrics; - struct /* Aggregate bbox */ - { - float left; - float bottom; - float right; - float top; - struct /* Glyph that set value */ - { - abfGlyphInfo *left; - abfGlyphInfo *bottom; - abfGlyphInfo *right; - abfGlyphInfo *top; - } setby; - } bbox; - } mtx; - struct /* t1write library */ - { - long options; /* Control options */ -#define T1W_NO_UID (1 << 0) /* Remove UniqueID keys */ -#define T1W_DECID (1 << 1) /* -decid option */ -#define T1W_USEFD (1 << 2) /* -usefd option */ -#define T1W_REFORMAT (1 << 3) /* -pfb or -LWFN options */ -#define T1W_WAS_EMBEDDED (1 << 4) /* +E option */ - t1wCtx ctx; - Stream tmp; - Stream dbg; - long flags; /* Library flags */ - int lenIV; - int fd; /* -decid target fd */ - dnaDCL(char, gnames); /* -decid glyph names */ - } t1w; - struct /* svgwrite library */ - { - long options; /* Control options */ - svwCtx ctx; - unsigned short unrec; - Stream tmp; - Stream dbg; - long flags; /* Library flags */ - } svw; - struct /* ufowrite library */ - { - ufwCtx ctx; - Stream tmp; - Stream dbg; - long flags; /* Library flags */ - } ufow; - struct /* Dump cff mode */ - { - long flags; /* Control flags */ -#define DCF_Header (1 << 0) -#define DCF_NameINDEX (1 << 1) -#define DCF_TopDICTINDEX (1 << 3) -#define DCF_StringINDEX (1 << 4) -#define DCF_GlobalSubrINDEX (1 << 5) -#define DCF_Encoding (1 << 6) -#define DCF_Charset (1 << 7) -#define DCF_FDSelect (1 << 8) -#define DCF_FDArrayINDEX (1 << 9) -#define DCF_CharStringsINDEX (1 << 10) -#define DCF_PrivateDICT (1 << 11) -#define DCF_LocalSubrINDEX (1 << 12) -#define DCF_AllTables N_BIT_MASK(13) -#define DCF_BreakFlowed (1 << 13) /* Break flowed objects */ -#define DCF_TableSelected (1 << 14) /* -T option used */ -#define DCF_Flatten (1 << 15) /* Flatten charstrings */ -#define DCF_SaveStemCnt (1 << 16) /* Save h/vstems counts */ -#define DCF_IS_CUBE (1 << 17) /* Font has Cube data - use different stack and op limits. */ - - int level; /* Dump level */ - char *sep; /* Flowed text separator */ - SubrInfo global; /* Global subrs */ - dnaDCL(SubrInfo, local); /* Local subrs */ - dnaDCL(unsigned char, glyph); /* Per-glyph stem count */ - long stemcnt; /* Current stem count */ - SubrInfo *fd; /* Current local info */ - } dcf; - struct /* Operand stack */ - { - long cnt; - float array[TX_MAX_OP_STACK_CUBE]; - } stack; - struct /* Font Dict filter */ - { - dnaDCL(int, fdIndices); /* Source glyph width for -t1 -3 mode */ - } fd; - struct /* OTF cmap encoding */ - { - dnaDCL(unsigned long, encoding); - dnaDCL(cmapSegment4, segment); - } cmap; - struct /* Library contexts */ - { - dnaCtx dna; /* dynarr library */ - sfrCtx sfr; /* sfntread library */ - } ctx; - struct /* Callbacks */ - { - ctlMemoryCallbacks mem; - ctlStreamCallbacks stm; - abfGlyphCallbacks glyph; - abfGlyphBegCallback saveGlyphBeg; - abfGlyphCallbacks save; - int selected; - } cb; - struct /* Memory allocation failure simulation data */ - { - long iCall; /* Index of next call to mem_manange */ - long iFail; /* Index of failing call or FAIL_REPORT or FAIL_INACTIVE */ - } failmem; - long maxOpStack; -}; - -/* Check stack contains at least n elements. */ -#define CHKUFLOW(n) \ - do { \ - if (h->stack.cnt < (n)) fatal(h, "Type 2 stack underflow"); \ - } while (0) - -/* Check stack has room for n elements. */ -#define CHKOFLOW(n) \ - do { \ - if (h->stack.cnt + (n) > h->maxOpStack) \ - fatal(h, "Type 2 stack overflow"); \ - } while (0) - -/* Stack access without check. */ -#define INDEX(i) (h->stack.array[i]) -#define POP() (h->stack.array[--h->stack.cnt]) -#define PUSH(v) (h->stack.array[h->stack.cnt++] = (float)(v)) - -/* SID to standard string map */ -static char *sid2std[] = - { -#include "stdstr1.h" -}; - -static void dumpCstr(txCtx h, const ctlRegion *region, int inSubr); -static void condAddNotdef(txCtx h); -static void callbackSubset(txCtx h); -static void txFree(txCtx h); - -/* ----------------------------- Error Handling ---------------------------- */ - -/* If first debug message for source file; print filename */ -static void printFilename(txCtx h) { - fflush(stdout); - if (h->src.print_file) { - fprintf(stderr, "%s: --- %s\n", h->progname, - strcmp(h->src.stm.filename, "-") == 0 ? "stdin" : h->src.stm.filename); - h->src.print_file = 0; - } -} - -/* Fatal exception handler. */ -static void CTL_CDECL fatal(txCtx h, char *fmt, ...) { - printFilename(h); - if (fmt != NULL) { - /* Print error message */ - va_list ap; - fprintf(stderr, "%s: ", h->progname); - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - va_end(ap); - fprintf(stderr, "\n"); - } - fprintf(stderr, "%s: fatal error\n", h->progname); - txFree(h); - exit(EXIT_FAILURE); -} - -/* Print file error message and quit */ -static void fileError(txCtx h, char *filename) { - fatal(h, "file error <%s> [%s]", strerror(errno), filename); -} - -/* --------------------------- Memory Management --------------------------- */ - -/* Allocate memory. */ -static void *memNew(txCtx h, size_t size) { - void *ptr = malloc(size); - if (ptr == NULL) - fatal(h, "no memory"); - return ptr; -} - -/* Free memory. */ -static void memFree(txCtx h, void *ptr) { - if (ptr != NULL) - free(ptr); -} - -/* ---------------------------- Memory Callbacks --------------------------- */ - -/* Manage memory. */ -static void *mem_manage(ctlMemoryCallbacks *cb, void *old, size_t size) { - if (size > 0) { - txCtx h = cb->ctx; - if (h->failmem.iCall++ == h->failmem.iFail) { - /* Simulate memory allocation failure */ - fprintf(stderr, "mem_manage() failed on call %ld.\n", - h->failmem.iCall - 1L); - return NULL; - } else if (old == NULL) - return malloc(size); /* size != 0, old == NULL */ - else - return realloc(old, size); /* size != 0, old != NULL */ - } else { - if (old == NULL) - return NULL; /* size == 0, old == NULL */ - else { - free(old); /* size == 0, old != NULL */ - return NULL; - } - } -} - -/* Initialize memory callbacks. */ -static void memInit(txCtx h) { - h->cb.mem.ctx = h; - h->cb.mem.manage = mem_manage; - h->failmem.iCall = 0; - h->failmem.iFail = FAIL_INACTIVE; -} - -/* Manage memory and handle failure. */ -static void *safeManage(ctlMemoryCallbacks *cb, void *old, size_t size) { - txCtx h = cb->ctx; - void *ptr = h->cb.mem.manage(&h->cb.mem, old, size); - if (size > 0 && ptr == NULL) - fatal(h, "no memory"); - return ptr; -} - -/* ------------------------------- Tmp Stream ------------------------------ */ - -/* Intialize tmp stream. */ -static void tmpSet(Stream *s, char *filename) { - s->type = stm_Tmp; - s->flags = 0; - s->filename = filename; - s->fp = NULL; - s->buf = NULL; - s->pos = 0; -} - -/* Open tmp stream. */ -static Stream *tmp_open(txCtx h, Stream *s) { - s->buf = memNew(h, TMPSIZE + BUFSIZ); - memset(s->buf, 0, TMPSIZE + BUFSIZ); - s->fp = tmpfile(); - if (s->fp == NULL) - fileError(h, s->filename); - return s; -} - -/* Seek on tmp stream. */ -static int tmp_seek(Stream *s, long offset) { - s->pos = offset; - return (offset < TMPSIZE) ? 0 : fseek(s->fp, offset - TMPSIZE, SEEK_SET); -} - -/* Return tmp stream position. */ -static size_t tmp_tell(Stream *s) { - return s->pos; -} - -/* Read tmp stream. */ -static size_t tmp_read(Stream *s, char **ptr) { - size_t length; - if (s->pos < TMPSIZE) { - /* Using buffer */ - *ptr = s->buf + s->pos; - length = TMPSIZE - s->pos; - - /* Anticipate next read */ - if (fseek(s->fp, 0, SEEK_SET) == -1) { - s->flags |= STM_TMP_ERR; - return 0; - } - } else { - /* Using file */ - *ptr = s->buf + TMPSIZE; - length = fread(*ptr, 1, BUFSIZ, s->fp); - } - s->pos += length; - return length; -} - -/* Write to tmp stream. */ -static size_t tmp_write(Stream *s, size_t count, char *ptr) { - if (s->pos < TMPSIZE) { - /* Writing to buffer */ - size_t length = TMPSIZE - s->pos; - if (length > count) - memcpy(s->buf + s->pos, ptr, count); - else { - /* Buffer overflow; completely fill buffer */ - memcpy(s->buf + s->pos, ptr, length); - - /* Write rest to tmp file */ - if (fseek(s->fp, 0, SEEK_SET) == -1) { - s->flags = STM_TMP_ERR; - return 0; - } - count = length + fwrite(ptr + length, 1, count - length, s->fp); - } - } else - /* Writing to file */ - count = fwrite(ptr, 1, count, s->fp); - s->pos += count; - return count; -} - -/* Close tmp stream. */ -static int tmp_close(txCtx h, Stream *s) { - int result = (s->fp != NULL) ? fclose(s->fp) : 0; - if (s->buf != NULL) - memFree(h, s->buf); - s->fp = NULL; - s->buf = NULL; - s->pos = 0; - return result; -} - -/* ---------------------------- Stream Callbacks --------------------------- */ - -/* Open stream. */ -static void *stm_open(ctlStreamCallbacks *cb, int id, size_t size) { - txCtx h = cb->direct_ctx; - Stream *s = NULL; /* Suppress optimizer warning */ - switch (id) { - case CEF_SRC_STREAM_ID: - /* Open CEF source stream */ - s = &h->cef.src; - if (strcmp(s->filename, "-") == 0) - s->fp = stdin; - else { - s->fp = fopen(s->filename, "rb"); - if (s->fp == NULL) - return NULL; - } - break; - case T1R_SRC_STREAM_ID: - case CFR_SRC_STREAM_ID: - case TTR_SRC_STREAM_ID: - case SVR_SRC_STREAM_ID: - /* Source stream already open; just return it */ - s = &h->src.stm; - break; - case UFO_SRC_STREAM_ID: { - if (cb->clientFileName != NULL) { - char buffer[FILENAME_MAX]; - sprintf(buffer, "%s/%s", h->file.src, cb->clientFileName); - s = &h->src.stm; - s->type = stm_SrcUFO; - s->fp = fopen(buffer, "rb"); - if (s->fp == NULL) { - return NULL; - } - *dnaNEXT(h->src.streamStack) = *s; - } else - return NULL; - break; - } - case CEF_DST_STREAM_ID: - /* Open CEF destination stream */ - s = &h->dst.stm; - if (strcmp(s->filename, "-") == 0) - s->fp = stdout; - else { - s->fp = fopen(s->filename, "w+b"); - if (s->fp == NULL) - return NULL; - } - break; - case CFW_DST_STREAM_ID: - case T1W_DST_STREAM_ID: - case PDW_DST_STREAM_ID: - case SVW_DST_STREAM_ID: - /* Open destination stream */ - s = &h->dst.stm; - if (strcmp(s->filename, "-") == 0) - s->fp = stdout; - else { - s->fp = fopen(s->filename, "wb"); - if (s->fp == NULL) - return NULL; - } - break; - case UFW_DST_STREAM_ID: { - if (cb->clientFileName != NULL) { - char buffer[FILENAME_MAX]; - sprintf(buffer, "%s/%s", h->file.dst, cb->clientFileName); - s = &h->dst.stm; - - s->fp = fopen(buffer, "wt"); - if (s->fp == NULL) { - return NULL; - } - } else - return NULL; - break; - } - case CEF_TMP0_STREAM_ID: - s = &h->cef.tmp0; - tmp_open(h, s); - break; - case CEF_TMP1_STREAM_ID: - s = &h->cef.tmp1; - tmp_open(h, s); - break; - case T1R_TMP_STREAM_ID: - s = &h->t1r.tmp; - tmp_open(h, s); - break; - case SVR_TMP_STREAM_ID: - s = &h->svr.tmp; - tmp_open(h, s); - break; - case CFW_TMP_STREAM_ID: - s = &h->cfw.tmp; - tmp_open(h, s); - break; - case T1W_TMP_STREAM_ID: - s = &h->t1w.tmp; - tmp_open(h, s); - break; - case SVW_TMP_STREAM_ID: - s = &h->svw.tmp; - tmp_open(h, s); - break; - case T1R_DBG_STREAM_ID: - s = &h->t1r.dbg; - break; - case SVR_DBG_STREAM_ID: - s = &h->svr.dbg; - break; - case UFO_DBG_STREAM_ID: - s = &h->ufr.dbg; - break; - case UFW_DBG_STREAM_ID: - s = &h->ufow.dbg; - break; - case CFR_DBG_STREAM_ID: - s = &h->cfr.dbg; - break; - case TTR_DBG_STREAM_ID: - s = &h->ttr.dbg; - break; - case CFW_DBG_STREAM_ID: - s = &h->cfw.dbg; - if (s->fp == NULL) - return NULL; - break; - case T1W_DBG_STREAM_ID: - s = &h->t1w.dbg; - if (s->fp == NULL) - return NULL; - break; - case SVW_DBG_STREAM_ID: - s = &h->svw.dbg; - if (s->fp == NULL) - return NULL; - break; - default: - fatal(h, "invalid stream open"); - } - return s; -} - -/* Seek to stream position. */ -static int stm_seek(ctlStreamCallbacks *cb, void *stream, long offset) { - if (offset >= 0) { - Stream *s = stream; - switch (s->type) { - case stm_Src: - case stm_SrcUFO: - case stm_Dst: - case stm_Dbg: - return fseek(s->fp, offset, SEEK_SET); - case stm_Tmp: - return tmp_seek(s, offset); - } - } - return -1; /* Bad seek */ -} - -/* Return stream position. */ -static long stm_tell(ctlStreamCallbacks *cb, void *stream) { - Stream *s = stream; - switch (s->type) { - case stm_Src: - case stm_SrcUFO: - case stm_Dbg: - return ftell(s->fp); - break; - case stm_Dst: - if (0 != strcmp("-", s->filename)) - return ftell(s->fp); - break; - - case stm_Tmp: - return (long)tmp_tell(s); - } - return 0; /* Suppress compiler warning */ -} - -/* Read from stream. */ -static size_t stm_read(ctlStreamCallbacks *cb, void *stream, char **ptr) { - Stream *s = stream; - switch (s->type) { - case stm_Src: - case stm_SrcUFO: { - txCtx h = cb->direct_ctx; - if (h->seg.refill != NULL) - return h->seg.refill(h, ptr); - } - /* Fall through */ - case stm_Dst: - *ptr = s->buf; - return fread(s->buf, 1, BUFSIZ, s->fp); - case stm_Tmp: - return tmp_read(s, ptr); - } - return 0; /* Suppress compiler warning */ -} - -/* Write to stream. */ -static size_t stm_write(ctlStreamCallbacks *cb, void *stream, - size_t count, char *ptr) { - Stream *s = stream; - switch (s->type) { - case stm_Src: - case stm_SrcUFO: - case stm_Dst: - return fwrite(ptr, 1, count, s->fp); - case stm_Tmp: - return tmp_write(s, count, ptr); - case stm_Dbg: { - txCtx h = cb->direct_ctx; - printFilename(h); - fprintf(stderr, "%s: (%s) %.*s\n", - h->progname, s->filename, (int)count, ptr); - } - return count; - } - return 0; /* Suppress compiler warning */ -} - -/* Return stream status. */ -static int stm_status(ctlStreamCallbacks *cb, void *stream) { - Stream *s = stream; - if (s->type == stm_Tmp) { - if (s->flags & STM_TMP_ERR) - return CTL_STREAM_ERROR; - else if (s->pos < TMPSIZE) - return CTL_STREAM_OK; - } - if (feof(s->fp)) - return CTL_STREAM_END; - else if (ferror(s->fp)) - return CTL_STREAM_ERROR; - else - return CTL_STREAM_OK; -} - -/* Close stream. */ -static int stm_close(ctlStreamCallbacks *cb, void *stream) { - txCtx h = cb->direct_ctx; - Stream *s = stream; - if (s->type == stm_Tmp) - return tmp_close(cb->direct_ctx, s); - else if (s->fp == NULL || s->fp == stdout || s->flags & STM_DONT_CLOSE) - return 0; - else { - int retval; - FILE *fp = s->fp; - retval = fclose(fp); - s->fp = NULL; /* Avoid re-close */ - if (s->type == stm_SrcUFO) { - h->src.streamStack.cnt--; - if (h->src.streamStack.cnt > 0) - *s = h->src.streamStack.array[h->src.streamStack.cnt - 1]; - } - return retval; - } -} - -/* Initialize stream record. */ -static void stmSet(Stream *s, int type, char *filename, char *buf) { - s->type = type; - s->flags = 0; - s->filename = filename; - s->fp = NULL; - s->buf = buf; - s->pos = 0; -} - -/* Initialize debug stream. */ -static void dbgSet(Stream *s, char *filename) { - s->type = stm_Dbg; - s->flags = STM_DONT_CLOSE; - s->filename = filename; - s->fp = stderr; - s->buf = NULL; - s->pos = 0; -} - -/* Close steam at exit if still open. */ -static void stmFree(txCtx h, Stream *s) { - if (s->fp != NULL) - (void)fclose(s->fp); -} - -/* Initialize stream callbacks and stream records. */ -static void stmInit(txCtx h) { - h->cb.stm.direct_ctx = h; - h->cb.stm.indirect_ctx = NULL; - h->cb.stm.clientFileName = NULL; - h->cb.stm.open = stm_open; - h->cb.stm.seek = stm_seek; - h->cb.stm.tell = stm_tell; - h->cb.stm.read = stm_read; - h->cb.stm.write = stm_write; - h->cb.stm.status = stm_status; - h->cb.stm.close = stm_close; - - stmSet(&h->src.stm, stm_Src, h->file.src, h->src.buf); - stmSet(&h->dst.stm, stm_Dst, h->file.dst, h->dst.buf); - - stmSet(&h->cef.src, stm_Src, h->file.src, h->src.buf); - - tmpSet(&h->cef.tmp0, "(cef) tmpfile0"); - tmpSet(&h->cef.tmp1, "(cef) tmpfile1"); - tmpSet(&h->t1r.tmp, "(t1r) tmpfile"); - tmpSet(&h->cfw.tmp, "(cfw) tmpfile"); - tmpSet(&h->t1w.tmp, "(t1w) tmpfile"); - tmpSet(&h->svw.tmp, "(svw) tmpfile"); - tmpSet(&h->svw.tmp, "(ufw) tmpfile"); - - dbgSet(&h->t1r.dbg, "t1r"); - dbgSet(&h->cfr.dbg, "cfr"); - dbgSet(&h->svr.dbg, "svr"); - dbgSet(&h->ufr.dbg, "ufr"); - dbgSet(&h->ufow.dbg, "ufw"); - dbgSet(&h->ttr.dbg, "ttr"); - dbgSet(&h->cfw.dbg, "cfw"); - dbgSet(&h->t1w.dbg, "t1w"); - dbgSet(&h->svw.dbg, "svw"); -} - -/* ----------------------------- File Handling ----------------------------- */ - -/* Initialize destination filename. */ -static void dstFileSetName(txCtx h, char *filename) { - if (h->file.dd != NULL) - sprintf(h->file.dst, "%s/%s", h->file.dd, filename); - else - strcpy(h->file.dst, filename); -} - -/* Set automatic destination filename. */ -static void dstFileSetAutoName(txCtx h, abfTopDict *top) { - char buf[FILENAME_MAX]; - char *filename; - - if (h->flags & AUTO_FILE_FROM_FILE) { - char *p = strrchr(h->file.src, '/'); - if (p == NULL) - p = strrchr(h->file.src, '\\'); - strcpy(buf, (p == NULL) ? h->file.src : p + 1); - p = strrchr(buf, '.'); - if (p != NULL) - *p = '\0'; - filename = buf; - } else if (h->flags & AUTO_FILE_FROM_FONT) - filename = (top->sup.flags & ABF_CID_FONT) ? top->cid.CIDFontName.ptr : top->FDArray.array[0].FontName.ptr; - else - return; - - if (h->file.dd != NULL) - sprintf(h->file.dst, "%s/%s.%s", h->file.dd, filename, h->modename); - else - sprintf(h->file.dst, "%s.%s", filename, h->modename); -} - -/* Open destination file. */ -static void dstFileOpen(txCtx h, abfTopDict *top) { - dstFileSetAutoName(h, top); - - if (h->dst.stm.fp != NULL) - return; /* Already open */ - - /* Open dstination file */ - if (strcmp(h->dst.stm.filename, "-") == 0) - h->dst.stm.fp = stdout; - else { - h->dst.stm.fp = fopen(h->dst.stm.filename, "w"); - if (h->dst.stm.fp == NULL) - fileError(h, h->dst.stm.filename); - } -} - -/* Close destination file. */ -static void dstFileClose(txCtx h) { - if (h->dst.stm.fp != stdout) { - if (fclose(h->dst.stm.fp)) - fileError(h, h->dst.stm.filename); - } - h->dst.stm.fp = NULL; -} - -/* ------------------------------- Data Input ------------------------------ */ - -/* Fill source buffer. */ -static void fillbuf(txCtx h, long offset) { - h->src.length = (long)fread(h->src.buf, 1, sizeof(h->src.buf), h->src.stm.fp); - if (h->src.length == 0) { - if (feof(h->src.stm.fp)) - fatal(h, "end of file [%s]", h->src.stm.filename); - else - fileError(h, h->src.stm.filename); - } else { - h->src.offset = offset; - h->src.next = h->src.buf; - h->src.end = h->src.buf + h->src.length; - } - return; -} - -/* Read next sequential source buffer; update offset and return first byte. */ -static char nextbuf(txCtx h) { - fillbuf(h, h->src.offset + h->src.length); - return *h->src.next++; -} - -/* Seek to buffered data byte. */ -static void bufSeek(txCtx h, long offset) { - long delta = offset - h->src.offset; - if (delta >= 0 && delta < h->src.length) - /* Offset within current buffer; reposition next byte */ - h->src.next = h->src.buf + delta; - else { - if (fseek(h->src.stm.fp, offset, SEEK_SET)) - fileError(h, h->src.stm.filename); - fillbuf(h, offset); - } -} - -/* Copy count bytes from source stream. */ -static void readN(txCtx h, size_t count, char *ptr) { - size_t left = h->src.end - h->src.next; - - while (left < count) { - /* Copy buffer */ - memcpy(ptr, h->src.next, left); - ptr += left; - count -= left; - - /* Refill buffer */ - fillbuf(h, h->src.offset + h->src.length); - left = h->src.length; - } - - memcpy(ptr, h->src.next, count); - h->src.next += count; -} - -#define read1(h) \ - (unsigned char)((h->src.next == h->src.end) ? nextbuf(h) : *h->src.next++) - -/* Read 2-byte number. */ -static unsigned short read2(txCtx h) { - unsigned short value = read1(h) << 8; - return value | read1(h); -} - -/* Read 2-byte signed number. */ -static short sread2(txCtx h) { - unsigned short value = read1(h) << 8; - value |= read1(h); -#if SHRT_MAX == 32767 - return (short)value; -#else - return (short)((value > 32767) ? value - 65536 : value); -#endif -} - -/* Read 4-byte number. */ -static unsigned long read4(txCtx h) { - unsigned long value = (unsigned long)read1(h) << 24; - value |= (unsigned long)read1(h) << 16; - value |= read1(h) << 8; - return value | read1(h); -} - -/* Read 1-, 2-, 3-, or 4-byte number. */ -static unsigned long readn(txCtx h, int n) { - unsigned long value = 0; - switch (n) { - case 4: - value = read1(h); - case 3: - value = value << 8 | read1(h); - case 2: - value = value << 8 | read1(h); - case 1: - value = value << 8 | read1(h); - } - return value; -} - -/* ------------------------- RNG-Related Functions ------------------------ */ - -/* Seed RNG with scrambled time. */ -static void seedtime(void) { - time_t now = time(NULL); - srand((unsigned)(now * now)); -} - -/* Return a random number in the range [0 - N). */ -static long randrange(long N) { - return (long)((double)rand() / ((double)RAND_MAX + 1) * N); -} - -/* ------------------------------- dump mode ------------------------------- */ - -/* Begin font set. */ -static void dump_BegSet(txCtx h) { -} - -/* Begin font. */ -static void dump_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - h->abf.dump.fp = h->dst.stm.fp; - if (h->fd.fdIndices.cnt > 0) { - h->abf.dump.excludeSubset = (h->flags & SUBSET__EXCLUDE_OPT); - h->abf.dump.fdCnt = h->fd.fdIndices.cnt; - h->abf.dump.fdArray = h->fd.fdIndices.array; - } - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - abfDumpBegFont(&h->abf.dump, top); -} - -/* End font. */ -static void dump_EndFont(txCtx h) { -} - -/* End font set. */ -static void dump_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup dump mode. */ -static void dump_SetMode(txCtx h) { - /* Initialize control data */ - h->abf.dump.level = 1; - - /* Set mode name */ - h->modename = "dump"; - - /* Set library functions */ - h->dst.begset = dump_BegSet; - h->dst.begfont = dump_BegFont; - h->dst.endfont = dump_EndFont; - h->dst.endset = dump_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphDumpCallbacks; - h->cb.glyph.direct_ctx = &h->abf.dump; - - /* Set source library flags */ - h->t1r.flags = T1R_USE_MATRIX; - h->cfr.flags = CFR_USE_MATRIX; - - h->mode = mode_dump; -} - -/* Print text parameter. */ -static void printText(int cnt, char *text[]) { - int i; - for (i = 0; i < cnt; i++) - printf("%s", text[i]); -} - -/* Mode-specific help. */ -static void dump_Help(txCtx h) { - static char *text[] = - { -#include "dump.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- ps mode -------------------------------- */ - -/* Begin font set. */ -static void ps_BegSet(txCtx h) { -} - -/* Begin font. */ -static void ps_BegFont(txCtx h, abfTopDict *top) { - if (h->abf.draw.level == 1 && h->arg.g.cnt == 0) - fatal(h, - "to use -1 option with all glyphs specify " - "an all-glyph range with -g 0-N option"); - dstFileOpen(h, top); - h->abf.draw.fp = h->dst.stm.fp; - if (h->src.type == src_TrueType) - h->abf.draw.flags |= ABF_FLIP_TICS; - else - h->abf.draw.flags &= ~ABF_FLIP_TICS; - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - abfDrawBegFont(&h->abf.draw, top); -} - -/* End font. */ -static void ps_EndFont(txCtx h) { - abfDrawEndFont(&h->abf.draw); -} - -/* End font set. */ -static void ps_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup ps mode. */ -static void ps_SetMode(txCtx h) { - /* Initialize control data */ - h->abf.draw.flags = 0; - h->abf.draw.level = 0; - - /* Set mode name */ - h->modename = "ps"; - - /* Set library functions */ - h->dst.begset = ps_BegSet; - h->dst.begfont = ps_BegFont; - h->dst.endfont = ps_EndFont; - h->dst.endset = ps_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphDrawCallbacks; - h->cb.glyph.direct_ctx = &h->abf.draw; - - /* Set source libarary flags */ - h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_ps; -} - -/* Mode-specific help. */ -static void ps_Help(txCtx h) { - static char *text[] = - { -#include "ps.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- afm mode ------------------------------- */ - -/* Begin font set. */ -static void afm_BegSet(txCtx h) { -} - -/* Begin new font. */ -static void afm_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - h->abf.afm.tmp_fp = tmpfile(); - if (h->abf.afm.tmp_fp == NULL) { - fatal(h, "Error opening temp file for AFM."); - } - h->abf.afm.fp = h->dst.stm.fp; - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - abfAFMBegFont(&h->abf.afm); -} - -/* End new font. */ -static void afm_EndFont(txCtx h) { - abfAFMEndFont(&h->abf.afm, h->top); -} - -/* End font set. */ -static void afm_EndSet(txCtx h) { - fclose(h->abf.afm.tmp_fp); - dstFileClose(h); -} - -/* Setup afm mode. */ -static void afm_SetMode(txCtx h) { - /* Set mode name */ - h->modename = "afm"; - - /* Set library functions */ - h->dst.begset = afm_BegSet; - h->dst.begfont = afm_BegFont; - h->dst.endfont = afm_EndFont; - h->dst.endset = afm_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphAFMCallbacks; - h->cb.glyph.direct_ctx = &h->abf.afm; - - /* Set source libarary flags */ - h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_afm; -} - -/* Mode-specific help. */ -static void afm_Help(txCtx h) { - static char *text[] = - { -#include "afm.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* ------------------------------ Path Library ----------------------------- */ - -/* Begin font set. */ -static void path_BegSet(txCtx h) { -} - -/* Begin new font. */ -static void path_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - - if (h->arg.path.level == 1) { - /* Prepare draw facility */ - h->abf.draw.fp = h->dst.stm.fp; - if (h->src.type == src_TrueType) - h->abf.draw.flags |= ABF_FLIP_TICS; - else - h->abf.draw.flags &= ~ABF_FLIP_TICS; - abfDrawBegFont(&h->abf.draw, top); - } else { - /* Prepare dump facility */ - h->abf.dump.fp = h->dst.stm.fp; - h->abf.dump.left = 0; - h->abf.dump.excludeSubset = 0; - h->abf.dump.fdCnt = 0; - abfDumpBegFont(&h->abf.dump, top); - } - - if (abfBegFont(h->abf.ctx, top)) - fatal(h, NULL); -} - -/* End new font. */ -static void path_EndFont(txCtx h) { - if (h->arg.path.level == 1) - abfDrawEndFont(&h->abf.draw); - - /* Initialize glyph callbacks */ - if (h->arg.path.level == 0) { - h->cb.glyph = abfGlyphDumpCallbacks; - h->cb.glyph.direct_ctx = &h->abf.dump; - } else { - h->cb.glyph = abfGlyphDrawCallbacks; - h->cb.glyph.direct_ctx = &h->abf.draw; - } - - if (abfEndFont(h->abf.ctx, ABF_PATH_REMOVE_OVERLAP, &h->cb.glyph)) - fatal(h, NULL); -} - -/* End font set. */ -static void path_EndSet(txCtx h) { - if (abfFree(h->abf.ctx)) - fatal(h, NULL); -} - -/* Set control functions. */ -static void path_SetMode(txCtx h) { - h->abf.draw.flags = 0; - h->abf.draw.level = 1; - h->abf.dump.level = 6; - - /* Set mode name */ - h->modename = "path"; - - /* Set library functions */ - h->dst.begset = path_BegSet; - h->dst.begfont = path_BegFont; - h->dst.endfont = path_EndFont; - h->dst.endset = path_EndSet; - - if (h->abf.ctx == NULL) { - /* Create library context */ - h->abf.ctx = abfNew(&h->cb.mem, ABF_CHECK_ARGS); - if (h->abf.ctx == NULL) - fatal(h, "(abf) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphPathCallbacks; - h->cb.glyph.direct_ctx = h->abf.ctx; - - h->t1r.flags |= (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags |= (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_path; -} - -/* Mode-specific help. */ -static void path_Help(txCtx h) { - static char *text[] = - { -#include "path.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- cff mode ------------------------------- */ - -/* Begin font set. */ -static void cff_BegSet(txCtx h) { - if (cfwBegSet(h->cfw.ctx, h->cfw.flags)) - fatal(h, NULL); -} - -/* Begin font. */ -static void cff_BegFont(txCtx h, abfTopDict *top) { - dstFileSetAutoName(h, top); - - // we do not support subroutinzation in mergeFonts, so can pass the default maxSubr value. - if (cfwBegFont(h->cfw.ctx, NULL, 0)) - fatal(h, NULL); -} - -/* End font. */ -static void cff_EndFont(txCtx h) { - if (cfwEndFont(h->cfw.ctx, h->top)) - fatal(h, NULL); -} - -/* End font set. */ -static void cff_EndSet(txCtx h) { - if (cfwEndSet(h->cfw.ctx)) - fatal(h, NULL); -} - -/* Setup cff mode. */ -static void cff_SetMode(txCtx h) { - /* Initialize control data */ - /* This is now set at the start of parseArgs - h->cfw.flags = 0; - */ - - /* Set mode name */ - h->modename = "cff"; - - /* Set library functions */ - h->dst.begset = cff_BegSet; - h->dst.begfont = cff_BegFont; - h->dst.endfont = cff_EndFont; - h->dst.endset = cff_EndSet; - - if (h->cfw.ctx == NULL) { - /* Create library context */ - h->cfw.ctx = cfwNew(&h->cb.mem, &h->cb.stm, CFW_CHECK_ARGS); - if (h->cfw.ctx == NULL) - fatal(h, "(cfw) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = cfwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->cfw.ctx; - - if (!(h->cfw.flags & CFW_WRITE_CFF2)) { - /* This keeps these callbacks from being used when - writing a regular CFF, and avoids the overhead of - trying to process the source CFF2 blend args */ - h->cb.glyph.moveVF = NULL; - h->cb.glyph.lineVF = NULL; - h->cb.glyph.curveVF = NULL; - } - - /* Set source library flags */ - /* These are now set at the start of parseArgs - h->t1r.flags = 0; - h->cfr.flags = 0; - */ - - h->mode = mode_cff; -} - -/* Mode-specific help. */ -static void cff_Help(txCtx h) { - static char *text[] = - { -#include "cff.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* ------------------------------ Preserve GID ------------------------------ */ - -#define PRESERVE_CHARSTRING (1 << 15) - -static void callbackPreserveGlyph(txCtx h, int type, unsigned short id, - char *name) { - h->src.glyphs.array[id]->flags |= PRESERVE_CHARSTRING; -} - -/* Begin glyph path. */ -static int preserveGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->direct_ctx; - cb->info = info; - h->cb.selected = - (h->src.glyphs.array[info->tag]->flags & PRESERVE_CHARSTRING) != 0; - return h->cb.save.beg(&h->cb.save, info); -} - -/* Save glyph width. */ -static void preserveGlyphWidth(abfGlyphCallbacks *cb, float hAdv) { - txCtx h = cb->direct_ctx; - h->cb.save.width(&h->cb.save, hAdv); -} - -/* Add move to path. */ -static void preserveGlyphMove(abfGlyphCallbacks *cb, float x0, float y0) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.move(&h->cb.save, x0, y0); - } -} - -/* Add line to path. */ -static void preserveGlyphLine(abfGlyphCallbacks *cb, float x1, float y1) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.line(&h->cb.save, x1, y1); - } -} - -/* Add curve to path. */ -static void preserveGlyphCurve(abfGlyphCallbacks *cb, - float x1, float y1, - float x2, float y2, - float x3, float y3) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.curve(&h->cb.save, x1, y1, x2, y2, x3, y3); - } -} - -static void preserveGlyphStem(abfGlyphCallbacks *cb, - int flags, float edge0, float edge1) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.stem(&h->cb.save, flags, edge0, edge1); - } -} - -static void preserveGlyphFlex(abfGlyphCallbacks *cb, float depth, - float x1, float y1, - float x2, float y2, - float x3, float y3, - float x4, float y4, - float x5, float y5, - float x6, float y6) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.flex(&h->cb.save, depth, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6); - } -} - -/* Ignore general glyph operator. */ -static void preserveGlyphGenop(abfGlyphCallbacks *cb, - int cnt, float *args, int op) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.genop(&h->cb.save, cnt, args, op); - } -} - -/* Handle seac operator. */ -static void preserveGlyphSeac(abfGlyphCallbacks *cb, - float adx, float ady, int bchar, int achar) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.seac(&h->cb.save, adx, ady, bchar, achar); - } -} - -/* End glyph path. */ -static void preserveGlyphEnd(abfGlyphCallbacks *cb) { - txCtx h = cb->direct_ctx; - h->cb.save.end(&h->cb.save); -} - -static void preserveCubeBlend(abfGlyphCallbacks *cb, unsigned int nBlends, unsigned int numVals, float *blendVals) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeBlend(&h->cb.save, nBlends, numVals, blendVals); - } -} -static void preserveCubeSetwv(abfGlyphCallbacks *cb, unsigned int numDV) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeSetwv(&h->cb.save, numDV); - } -} -static void preserveCubeCompose(abfGlyphCallbacks *cb, int cubeLEIndex, float x0, float y0, int numDV, float *ndv) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeCompose(&h->cb.save, cubeLEIndex, x0, y0, numDV, ndv); - } -} -static void preserveCubeTransform(abfGlyphCallbacks *cb, float rotate, float scaleX, float scaleY, float skew, float skewY) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeTransform(&h->cb.save, rotate, scaleX, scaleY, skew, skewY); - } -} - -/* preserve mode callbacks template. */ -static abfGlyphCallbacks preserveGlyphCallbacks = - { - NULL, - NULL, - NULL, - preserveGlyphBeg, - preserveGlyphWidth, - preserveGlyphMove, - preserveGlyphLine, - preserveGlyphCurve, - preserveGlyphStem, - preserveGlyphFlex, - preserveGlyphGenop, - preserveGlyphSeac, - preserveGlyphEnd, - preserveCubeBlend, - preserveCubeSetwv, - preserveCubeCompose, - preserveCubeTransform, -}; - -/* ------------------------------- Glyph List ------------------------------ */ - -/* Begin new glyph definition for gathering glyph info. */ -static int getGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - *dnaNEXT(h->src.glyphs) = info; - return ABF_SKIP_RET; -} - -/* Make glyph list from font. */ -static void getGlyphList(txCtx h) { - if (h->src.glyphs.cnt > 0) - return; /* Already have list for this font */ - - h->cb.saveGlyphBeg = h->cb.glyph.beg; - - /* Insert data gather function */ - h->cb.glyph.beg = getGlyphBeg; - h->cb.glyph.indirect_ctx = h; - - /* Iterate glyphs */ - switch (h->src.type) { - case src_Type1: - if (t1rIterateGlyphs(h->t1r.ctx, &h->cb.glyph) || - t1rResetGlyphs(h->t1r.ctx)) - fatal(h, NULL); - break; - case src_OTF: - case src_CFF: - if (cfrIterateGlyphs(h->cfr.ctx, &h->cb.glyph) || - cfrResetGlyphs(h->cfr.ctx)) - fatal(h, NULL); - break; - case src_TrueType: - if (ttrIterateGlyphs(h->ttr.ctx, &h->cb.glyph) || - ttrResetGlyphs(h->ttr.ctx)) - fatal(h, NULL); - break; - case src_SVG: - if (svrIterateGlyphs(h->svr.ctx, &h->cb.glyph) || - svrResetGlyphs(h->svr.ctx)) - fatal(h, NULL); - break; - - case src_UFO: - if (ufoIterateGlyphs(h->ufr.ctx, &h->cb.glyph) || - ufoResetGlyphs(h->ufr.ctx)) - fatal(h, NULL); - break; - } - - /* Restore saved function */ - h->cb.glyph.beg = h->cb.saveGlyphBeg; -} - -/* Compare glyphs by their name. */ -static int CTL_CDECL cmpByName(const void *first, const void *second) { - return strcmp((*(abfGlyphInfo **)first)->gname.ptr, - (*(abfGlyphInfo **)second)->gname.ptr); -} - -/* Sort glyph list by glyph name. */ -static void sortGlyphsByName(txCtx h) { - qsort(h->src.glyphs.array, h->src.glyphs.cnt, - sizeof(h->src.glyphs.array[0]), cmpByName); -} - -/* Compare glyphs by their fd. */ -static int CTL_CDECL cmpByFD(const void *first, const void *second) { - const abfGlyphInfo *a = *(abfGlyphInfo **)first; - const abfGlyphInfo *b = *(abfGlyphInfo **)second; - if (a->iFD < b->iFD) - return -1; - else if (a->iFD > b->iFD) - return 1; - else if (a->cid < b->cid) - return -1; - else if (a->cid > b->cid) - return 1; - else - return 0; -} - -/* Sort glyph list by FD index. */ -static void sortGlyphsByFD(txCtx h) { - qsort(h->src.glyphs.array, h->src.glyphs.cnt, - sizeof(h->src.glyphs.array[0]), cmpByFD); -} - -/* Make glyph subset from glyph list. */ -static void makeSubsetGlyphList(txCtx h) { - long i; - dnaSET_CNT(h->subset.glyphs, h->src.glyphs.cnt); - for (i = 0; i < h->src.glyphs.cnt; i++) - h->subset.glyphs.array[i] = h->src.glyphs.array[i]->tag; -} - -/* Construct arg buffer from subset list to simulated -g option. */ -static void makeSubsetArgList(txCtx h) { - long i; - long rangecnt = 0; - unsigned short first = h->subset.glyphs.array[0]; - unsigned short last = first; - h->subset.args.cnt = 0; - for (i = 1; i <= h->subset.glyphs.cnt; i++) { - unsigned short curr; - if (i < h->subset.glyphs.cnt) - curr = h->subset.glyphs.array[i]; - else - curr = 0; - - if (last + 1 != curr) { - char buf[12]; /* 5 digits + hyphen + 5 digits + nul */ - if (first == last) - sprintf(buf, "%hu", last); - else - sprintf(buf, "%hu-%hu", first, last); - strcpy(dnaEXTEND(h->subset.args, (long)strlen(buf) + 1), buf); - first = curr; - rangecnt++; - } - last = curr; - } - h->arg.g.cnt = rangecnt; - h->arg.g.substrs = h->subset.args.array; -} - -/* ----------------------------- Subset Parsing ---------------------------- */ - -enum /* Glyph selector types */ -{ - sel_by_tag, - sel_by_cid, - sel_by_name -}; - -/* Parse subset args. */ -static void parseSubset(txCtx h, void (*select)(txCtx h, int type, - unsigned short id, char *name)) { - long i; - char *p = h->arg.g.substrs; - - for (i = 0; i < h->arg.g.cnt; i++) { - unsigned short id; - unsigned short lo; - unsigned short hi; - - if (*p == '/') { - /* CID */ - if (sscanf(p, "/%hu-/%hu", &lo, &hi) == 2) - ; - else if (sscanf(p, "/%hu", &lo) == 1) - hi = lo; - else - goto next; - - for (id = lo; id <= hi; id++) - select(h, sel_by_cid, id, NULL); - - } else if (isdigit(*p)) { - /* Tag */ - if (sscanf(p, "%hu-%hu", &lo, &hi) == 2) - ; - else if (sscanf(p, "%hu", &lo) == 1) - hi = lo; - else - goto next; - - for (id = lo; id <= hi; id++) - select(h, sel_by_tag, id, NULL); - } else - /* Name */ - select(h, sel_by_name, 0, p); - - /* Advance to next substring */ - next: - while (*p++ != '\0') - ; - } -} - -/* Parse subset args. */ -static void parseFDSubset(txCtx h) { - long i; - char *p = h->arg.g.substrs; - - for (i = 0; i < h->arg.g.cnt; i++) { - unsigned short id; - unsigned short lo; - unsigned short hi; - - if (isdigit(*p)) { - /* Tag */ - if (sscanf(p, "%hu-%hu", &lo, &hi) == 2) - ; - else if (sscanf(p, "%hu", &lo) == 1) - hi = lo; - else - goto next; - - for (id = lo; id <= hi; id++) - *dnaNEXT(h->fd.fdIndices) = id; - } else { - fatal(h, "-fd argument is not an integer."); - } - /* Advance to next substring */ - next: - while (*p++ != '\0') - ; - } -} - -/* -------------------------------- cef mode ------------------------------- */ - -/* Begin font set. */ -static void cef_BegSet(txCtx h) { -} - -/* Begin font. */ -static void cef_BegFont(txCtx h, abfTopDict *top) { - dstFileSetAutoName(h, top); -} - -/* Compare glyphs by their CID. */ -static int CTL_CDECL cef_cmpByCID(const void *first, const void *second, - void *ctx) { - txCtx h = ctx; - abfGlyphInfo *a = h->src.glyphs.array[*(unsigned short *)first]; - abfGlyphInfo *b = h->src.glyphs.array[*(unsigned short *)second]; - if (a->cid < b->cid) - return -1; - else if (a->cid > b->cid) - return 1; - else - return 0; -} - -/* Match glyph by its CID. */ -static int CTL_CDECL cef_matchByCID(const void *key, const void *value, - void *ctx) { - txCtx h = ctx; - unsigned short a = *(unsigned short *)key; - unsigned short b = h->src.glyphs.array[*(unsigned short *)value]->cid; - if (a < b) - return -1; - else if (a > b) - return 1; - else - return 0; -} - -/* Compare glyphs by their name. */ -static int CTL_CDECL cef_cmpByName(const void *first, const void *second, - void *ctx) { - txCtx h = ctx; - return strcmp(h->src.glyphs.array[*(unsigned short *)first]->gname.ptr, - h->src.glyphs.array[*(unsigned short *)second]->gname.ptr); -} - -/* Match glyph by its name. */ -static int CTL_CDECL cef_matchByName(const void *key, const void *value, - void *ctx) { - txCtx h = ctx; - return strcmp(key, - h->src.glyphs.array[*(unsigned short *)value]->gname.ptr); -} - -/* Make glyph lookup array. */ -static void makeGlyphLookup(txCtx h, ctuCmpFunc cmp) { - long i; - - /* Make lookup array of all tags */ - dnaSET_CNT(h->cef.lookup, h->src.glyphs.cnt); - for (i = 0; i < h->cef.lookup.cnt; i++) - h->cef.lookup.array[i] = (unsigned short)i; - - /* Sort array */ - ctuQSort(h->cef.lookup.array, h->cef.lookup.cnt, - sizeof(unsigned short), cmp, h); -} - -/* Lookup glyph. */ -static void lookupGlyph(txCtx h, void *key, ctuMatchFunc match) { - size_t index; - if (ctuLookup(key, h->cef.lookup.array, h->cef.lookup.cnt, - sizeof(unsigned short), match, &index, h)) - dnaNEXT(h->cef.subset)->id = - h->src.glyphs.array[h->cef.lookup.array[index]]->tag; -} - -/* Select subset glyph. */ -static void selectGlyph(txCtx h, int type, unsigned short id, char *gname) { - switch (type) { - case sel_by_tag: - if (id < h->src.glyphs.cnt) - dnaNEXT(h->cef.subset)->id = id; - break; - case sel_by_cid: - if (h->top->sup.flags & ABF_CID_FONT) { - if (h->cef.lookup.cnt == 0) - /* Make CID lookup list */ - makeGlyphLookup(h, cef_cmpByCID); - lookupGlyph(h, &id, cef_matchByCID); - } - break; - case sel_by_name: - if (!(h->top->sup.flags & ABF_CID_FONT)) { - if (h->cef.lookup.cnt == 0) - /* Make glyph name lookup list */ - makeGlyphLookup(h, cef_cmpByName); - lookupGlyph(h, gname, cef_matchByName); - } - break; - } -} - -/* Match glyph name */ -static int CTL_CDECL matchName(const void *key, const void *value) { - return strcmp((char *)key, ((Name2UV *)value)->gname); -} - -/* Map glyph name to Unicode value using simplified assignment algorithm. */ -static unsigned short mapName2UV(txCtx h, char *gname, unsigned short *unrec) { - static const Name2UV agl[] = - { -#include "agl2uv.h" - }; - Name2UV *map = (Name2UV *)bsearch(gname, agl, ARRAY_LEN(agl), - sizeof(Name2UV), matchName); - if (map != NULL) - return map->uv; /* Match found */ - - /* Not found */ - if (strcmp(gname, ".notdef") == 0) - return 0xFFFF; /* No encoding for .notdef */ - - if (gname[0] == 'u' && - gname[1] == 'n' && - gname[2] == 'i' && - isxdigit(gname[3]) && !islower(gname[3]) && - isxdigit(gname[4]) && !islower(gname[4]) && - isxdigit(gname[5]) && !islower(gname[5]) && - isxdigit(gname[6]) && !islower(gname[6]) && - gname[7] == '\0') - /* uni name; return hex part */ - return (unsigned short)strtol(&gname[3], NULL, 16); - - /* return Private Use Area UV */ - return (*unrec)++; -} - -/* Get User Design Vector. */ -static float *getUDV(txCtx h) { - static float UDV[T1_MAX_AXES]; - int i; - char *p; - char *q; - - if (h->arg.U == NULL) - return NULL; - - /* Parse User Design Vector */ - for (i = 0; i < T1_MAX_AXES; i++) - UDV[i] = 0.0; - - p = h->arg.U; - for (i = 0; i < T1_MAX_AXES; i++) { - UDV[i] = (float)strtod(p, &q); - if (p == q || (*q != ',' && *q != '\0')) - fatal(h, "bad UDV"); - else if (*q == '\0') - break; - p = q + 1; - } - - return UDV; -} - -/* Print CEF subset specification. */ -static void printSpec(txCtx h, cefEmbedSpec *spec) { - char *p; - long i; - - printf( - "--- CEF subset:\n" - "SRC font %s\n" - "SRC glyphs %ld\n" - "DST font %s\n" - "DST glyphs %ld\n", - h->cef.src.filename, h->src.glyphs.cnt, - h->dst.stm.filename, spec->subset.cnt); - - p = (h->top->sup.flags & ABF_CID_FONT) ? "/" : ""; - for (i = 0; i < spec->subset.cnt; i++) { - printf("%s%hu", p, spec->subset.array[i].id); - p = (h->top->sup.flags & ABF_CID_FONT) ? ",/" : ","; - } - printf("\n"); - - if (spec->subset.names == NULL) - return; - - /* Print glyph names */ - p = ""; - for (i = 0; i < spec->subset.cnt; i++) { - unsigned short id = spec->subset.array[i].id; - if (id < CEF_VID_BEGIN) - printf("%s%s", p, spec->subset.names[id]); - else - printf("%svid-%hu", p, id); - p = ","; - } - printf("\n"); -} - -/* CEF glyph mapping callback. */ -static void cefGlyphMap(cefMapCallback *cb, - unsigned short gid, abfGlyphInfo *info) { - int cid = info->flags & ABF_GLYPH_CID; - if (gid == 0) { - if (cid) - printf("DST map [gid]=/cid\n"); - else - printf("DST map [gid]=\n"); - } - if (cid) - printf("[%hu]=/%hu ", gid, info->cid); - else - printf("[%hu]=<%s> ", gid, info->gname.ptr); -} - -/* End font. */ -static void cef_EndFont(txCtx h) { - cefMapCallback map; - cefEmbedSpec spec; - int result; - long i; - unsigned short unrec; - - getGlyphList(h); - - if (h->arg.g.cnt == 0) { - /* Whole font subset */ - dnaSET_CNT(h->cef.subset, h->src.glyphs.cnt); - for (i = 0; i < h->cef.subset.cnt; i++) - h->cef.subset.array[i].id = (unsigned short)i; - } else { - h->cef.subset.cnt = 0; - h->cef.lookup.cnt = 0; - parseSubset(h, selectGlyph); - } - - h->cef.gnames.cnt = 0; - unrec = 0xE000; /* Start of Private Use Area */ - - if (h->top->sup.flags & ABF_CID_FONT) { - /* Make CID subset, encoding all glyphs in PUA */ - for (i = 0; i < h->cef.subset.cnt; i++) { - cefSubsetGlyph *dst = &h->cef.subset.array[i]; - abfGlyphInfo *src = h->src.glyphs.array[dst->id]; - dst->id = src->cid; - dst->uv = unrec++; - } - } else { - /* Make tag list and assign Unicode encoding */ - for (i = 0; i < h->cef.subset.cnt; i++) { - cefSubsetGlyph *dst = &h->cef.subset.array[i]; - abfGlyphInfo *src = h->src.glyphs.array[dst->id]; - dst->uv = mapName2UV(h, src->gname.ptr, &unrec); - } - - /* Decide whether to use name list */ - switch (h->src.type) { - case src_Type1: - break; /* Use names */ - case src_OTF: - case src_CFF: - if (rand() & 0x0100) - goto initspec; - break; /* Use names 50% of the time */ - case src_TrueType: - goto initspec; /* Don't use names */ - } - - /* Make name list */ - dnaSET_CNT(h->cef.gnames, h->src.glyphs.cnt + 1); - for (i = 0; i < h->src.glyphs.cnt; i++) - h->cef.gnames.array[i] = h->src.glyphs.array[i]->gname.ptr; - h->cef.gnames.array[i] = NULL; - } - -#if 0 - { - /* Add 2 virtual glyphs */ - cefSubsetGlyph *glyph = dnaEXTEND(h->cef.subset, 2); - glyph[0].id = CEF_VID_BEGIN + 0; - glyph[0].uv = 0xa000; - glyph[1].id = CEF_VID_BEGIN + 1; - glyph[1].uv = 0xa001; - } -#endif - - /* Initialize embedding spec. */ -initspec: - spec.flags = h->arg.cef.flags; - spec.newFontName = h->arg.cef.F; - spec.UDV = getUDV(h); - spec.URL = NULL; - spec.subset.cnt = h->cef.subset.cnt; - spec.subset.array = h->cef.subset.array; - spec.subset.names = (h->cef.gnames.cnt > 0) ? h->cef.gnames.array : NULL; - spec.kern.cnt = 0; - - printSpec(h, &spec); - - /* Turn off segmentation on source stream */ - h->seg.refill = NULL; - - /* Initialize glyph mapping callback */ - map.ctx = NULL; - map.glyphmap = cefGlyphMap; - - if (h->arg.cef.flags & CEF_WRITE_SVG) - cefSetSvwFlags(h->cef.ctx, h->svw.flags); - - /* Make embedding font */ - result = cefMakeEmbeddingFont(h->cef.ctx, &spec, &map); - if (result) - fatal(h, "(cef) %s", cefErrStr(result)); - else - printf("\n"); -} - -/* End font set. */ -static void cef_EndSet(txCtx h) { -} - -/* Setup cef mode. */ -static void cef_SetMode(txCtx h) { - /* Initialize args */ - h->arg.cef.F = NULL; - h->arg.cef.flags = 0; - h->svw.flags = SVW_NEWLINE_UNIX; /* In case cfembed library used in svgwrite mode */ - - /* Set mode name */ - h->modename = "cef"; - - /* Set library functions */ - h->dst.begset = cef_BegSet; - h->dst.begfont = cef_BegFont; - h->dst.endfont = cef_EndFont; - h->dst.endset = cef_EndSet; - - if (h->cef.ctx == NULL) { - h->cef.ctx = cefNew(&h->cb.mem, &h->cb.stm, CEF_CHECK_ARGS); - if (h->cef.ctx == NULL) - fatal(h, "(cef) can't init lib"); - } - - /* Set source libarary flags */ - h->t1r.flags = 0; - h->cfr.flags = 0; - - h->mode = mode_cef; -} - -/* Mode-specific help. */ -static void cef_Help(txCtx h) { - static char *text[] = - { -#include "cef.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- pdf mode ------------------------------- */ - -/* Begin font set. */ -static void pdf_BegSet(txCtx h) { -} - -/* Begin new font. */ -static void pdf_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - - if (h->src.type == src_TrueType) - h->pdw.flags |= PDW_FLIP_TICS; - else - h->pdw.flags &= ~PDW_FLIP_TICS; - - if (pdwBegFont(h->pdw.ctx, h->pdw.flags, h->pdw.level, top)) - fatal(h, NULL); -} - -/* End new font. */ -static void pdf_EndFont(txCtx h) { - if (pdwEndFont(h->pdw.ctx)) - fatal(h, NULL); -} - -/* End font set. */ -static void pdf_EndSet(txCtx h) { -} - -/* Set control functions. */ -static void pdf_SetMode(txCtx h) { - h->pdw.flags = 0; - h->pdw.level = 0; - - /* Set mode name */ - h->modename = "pdf"; - - /* Set library functions */ - h->dst.begset = pdf_BegSet; - h->dst.begfont = pdf_BegFont; - h->dst.endfont = pdf_EndFont; - h->dst.endset = pdf_EndSet; - - if (h->pdw.ctx == NULL) { - /* Create library context */ - h->pdw.ctx = pdwNew(&h->cb.mem, &h->cb.stm, PDW_CHECK_ARGS); - if (h->pdw.ctx == NULL) - fatal(h, "(pdw) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = pdwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->pdw.ctx; - - h->t1r.flags |= (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags |= (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_pdf; -} - -/* Mode-specific help. */ -static void pdf_Help(txCtx h) { - static char *text[] = - { -#include "pdf.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* ------------------------------- mtx mode ------------------------------- */ - -/* Begin glyph path. */ -static int mtxGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->direct_ctx; - cb->info = info; - return h->mtx.metrics.cb.beg(&h->mtx.metrics.cb, info); -} - -/* Save glyph width. */ -static void mtxGlyphWidth(abfGlyphCallbacks *cb, float hAdv) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.width(&h->mtx.metrics.cb, hAdv); -} - -/* Add move to path. */ -static void mtxGlyphMove(abfGlyphCallbacks *cb, float x0, float y0) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.move(&h->mtx.metrics.cb, x0, y0); -} - -/* Add line to path. */ -static void mtxGlyphLine(abfGlyphCallbacks *cb, float x1, float y1) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.line(&h->mtx.metrics.cb, x1, y1); -} - -/* Add curve to path. */ -static void mtxGlyphCurve(abfGlyphCallbacks *cb, - float x1, float y1, - float x2, float y2, - float x3, float y3) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.curve(&h->mtx.metrics.cb, x1, y1, x2, y2, x3, y3); -} - -/* Ignore general glyph operator. */ -static void mtxGlyphGenop(abfGlyphCallbacks *cb, - int cnt, float *args, int op) { - /* Nothing to do */ -} - -/* Handle seac operator. */ -static void mtxGlyphSeac(abfGlyphCallbacks *cb, - float adx, float ady, int bchar, int achar) { - /* Nothing to do */ -} - -/* End glyph path. */ -static void mtxGlyphEnd(abfGlyphCallbacks *cb) { - txCtx h = cb->direct_ctx; - abfMetricsCtx g = &h->mtx.metrics.ctx; - abfGlyphInfo *info = cb->info; - - h->mtx.metrics.cb.end(&h->mtx.metrics.cb); - - fprintf(h->dst.stm.fp, "glyph[%hu] {", info->tag); - if (info->flags & ABF_GLYPH_CID) - /* Dump CID-keyed glyph */ - fprintf(h->dst.stm.fp, "%hu,%hhu", info->cid, info->iFD); - else { - /* Dump name-keyed glyph */ - abfEncoding *enc = &info->encoding; - fprintf(h->dst.stm.fp, "%s", info->gname.ptr); - if (enc->code == ABF_GLYPH_UNENC) - fprintf(h->dst.stm.fp, ",-"); - else { - /* Dump encoding */ - char *sep = ","; - do { - if (info->flags & ABF_GLYPH_UNICODE) - fprintf(h->dst.stm.fp, "%s0x%04lX", sep, enc->code); - else - fprintf(h->dst.stm.fp, "%s0x%02lX", sep, enc->code); - sep = "+"; - enc = enc->next; - } while (enc != NULL); - } - } - - if (h->mtx.level & 1) - /* Real metrics */ - fprintf(h->dst.stm.fp, ",%g,{%g,%g,%g,%g}}\n", g->real_mtx.hAdv, - g->real_mtx.left, g->real_mtx.bottom, - g->real_mtx.right, g->real_mtx.top); - else - /* Integer metrics */ - fprintf(h->dst.stm.fp, ",%ld,{%ld,%ld,%ld,%ld}}\n", g->int_mtx.hAdv, - g->int_mtx.left, g->int_mtx.bottom, - g->int_mtx.right, g->int_mtx.top); - - if (h->mtx.level > 1) { - /* Compute aggregate bounding box */ - if (g->real_mtx.left != 0 || - g->real_mtx.bottom != 0 || - g->real_mtx.right != 0 || - g->real_mtx.top != 0) { - /* Marking glyph */ - if (h->mtx.bbox.left == 0 && - h->mtx.bbox.bottom == 0 && - h->mtx.bbox.right == 0 && - h->mtx.bbox.top == 0) { - /* First marking glyph; set all values */ - h->mtx.bbox.left = g->real_mtx.left; - h->mtx.bbox.bottom = g->real_mtx.bottom; - h->mtx.bbox.right = g->real_mtx.right; - h->mtx.bbox.top = g->real_mtx.top; - - h->mtx.bbox.setby.left = info; - h->mtx.bbox.setby.bottom = info; - h->mtx.bbox.setby.right = info; - h->mtx.bbox.setby.top = info; - } else { - if (h->mtx.bbox.left > g->real_mtx.left) { - h->mtx.bbox.left = g->real_mtx.left; - h->mtx.bbox.setby.left = info; - } - if (h->mtx.bbox.bottom > g->real_mtx.bottom) { - h->mtx.bbox.bottom = g->real_mtx.bottom; - h->mtx.bbox.setby.bottom = info; - } - if (h->mtx.bbox.right < g->real_mtx.right) { - h->mtx.bbox.right = g->real_mtx.right; - h->mtx.bbox.setby.right = info; - } - if (h->mtx.bbox.top < g->real_mtx.top) { - h->mtx.bbox.top = g->real_mtx.top; - h->mtx.bbox.setby.top = info; - } - } - } - } -} - -/* Mtx mode callbacks template. */ -static abfGlyphCallbacks mtxGlyphCallbacks = - { - NULL, - NULL, - NULL, - mtxGlyphBeg, - mtxGlyphWidth, - mtxGlyphMove, - mtxGlyphLine, - mtxGlyphCurve, - NULL, - NULL, - mtxGlyphGenop, - mtxGlyphSeac, - mtxGlyphEnd, -}; - -/* Begin font set. */ -static void mtx_BegSet(txCtx h) { -} - -/* Begin font. */ -static void mtx_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - - h->mtx.bbox.left = 0; - h->mtx.bbox.bottom = 0; - h->mtx.bbox.right = 0; - h->mtx.bbox.top = 0; - - if (top->sup.flags & ABF_CID_FONT) - fprintf(h->dst.stm.fp, - "### glyph[tag] {cid,fd,width,{left,bottom,right,top}}\n"); - else - fprintf(h->dst.stm.fp, - "### glyph[tag] {gname,enc,width,{left,bottom,right,top}}\n"); -} - -/* End font. */ -static void mtx_EndFont(txCtx h) { - if (h->mtx.level > 1) { - /* Print bbox information */ - fprintf(h->dst.stm.fp, "### aggregate\n"); - if (h->mtx.level == 2) - fprintf(h->dst.stm.fp, "bbox {%g,%g,%g,%g}\n", - floor(h->mtx.bbox.left), floor(h->mtx.bbox.bottom), - ceil(h->mtx.bbox.right), ceil(h->mtx.bbox.top)); - else - fprintf(h->dst.stm.fp, "bbox {%g,%g,%g,%g}\n", - h->mtx.bbox.left, h->mtx.bbox.bottom, - h->mtx.bbox.right, h->mtx.bbox.top); - - if (h->mtx.bbox.left != 0 || - h->mtx.bbox.bottom != 0 || - h->mtx.bbox.right != 0 || - h->mtx.bbox.top != 0) { - /* bbox was set; print setting glyph(s) */ - fprintf(h->dst.stm.fp, "tag {%hu,%hu,%hu,%hu}\n", - h->mtx.bbox.setby.left->tag, - h->mtx.bbox.setby.bottom->tag, - h->mtx.bbox.setby.right->tag, - h->mtx.bbox.setby.top->tag); - if (h->top->sup.flags & ABF_CID_FONT) - fprintf(h->dst.stm.fp, "cid {%hu,%hu,%hu,%hu}\n", - h->mtx.bbox.setby.left->cid, - h->mtx.bbox.setby.bottom->cid, - h->mtx.bbox.setby.right->cid, - h->mtx.bbox.setby.top->cid); - else - fprintf(h->dst.stm.fp, "gname {%s,%s,%s,%s}\n", - h->mtx.bbox.setby.left->gname.ptr, - h->mtx.bbox.setby.bottom->gname.ptr, - h->mtx.bbox.setby.right->gname.ptr, - h->mtx.bbox.setby.top->gname.ptr); - } - } -} - -/* End font set. */ -static void mtx_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup mtx mode. */ -static void mtx_SetMode(txCtx h) { - h->mtx.level = 0; - - /* Set mode name */ - h->modename = "mtx"; - - /* Set library functions */ - h->dst.begset = mtx_BegSet; - h->dst.begfont = mtx_BegFont; - h->dst.endfont = mtx_EndFont; - h->dst.endset = mtx_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = mtxGlyphCallbacks; - h->cb.glyph.direct_ctx = h; - - /* Initialize metrics facility */ - h->mtx.metrics.cb = abfGlyphMetricsCallbacks; - h->mtx.metrics.cb.direct_ctx = &h->mtx.metrics.ctx; - h->mtx.metrics.ctx.flags = 0; - - /* Set source libarary flags */ - h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_mtx; -} - -/* Mode-specific help. */ -static void mtx_Help(txCtx h) { - static char *text[] = - { -#include "mtx.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* --------------------------------- t1 mode ------------------------------- */ - -static boolean applyCIDFontInfo(txCtx h, boolean fontisCID) { - if (h->mergeInfo.cidinfo.CIDFontName[0] != 0) /* if the users has specified a cidfontinfo file, override the first font's cid info. */ - { - fontisCID = 1; - h->top->sup.flags |= ABF_CID_FONT; - h->top->cid.CIDFontName.ptr = h->mergeInfo.cidinfo.CIDFontName; - h->top->FullName.ptr = h->mergeInfo.cidinfo.FullName; - h->top->FamilyName.ptr = h->mergeInfo.cidinfo.FamilyName; - h->top->Copyright.ptr = h->mergeInfo.cidinfo.AdobeCopyright; - if ((h->mergeInfo.cidinfo.AdobeCopyright[0] != ABF_EMPTY_ARRAY) || - (h->mergeInfo.cidinfo.Trademark[0] != ABF_EMPTY_ARRAY)) { - h->top->Copyright.ptr = ABF_UNSET_PTR; - h->top->Notice.ptr = ABF_UNSET_PTR; - } - if (h->mergeInfo.cidinfo.AdobeCopyright[0] != ABF_EMPTY_ARRAY) { - h->top->Notice.ptr = h->mergeInfo.cidinfo.AdobeCopyright; - } - if (h->mergeInfo.cidinfo.Trademark[0] != ABF_EMPTY_ARRAY) { - if (h->mergeInfo.cidinfo.AdobeCopyright[0] == ABF_EMPTY_ARRAY) - h->top->Notice.ptr = h->mergeInfo.cidinfo.Trademark; - else { - strcat(h->top->Notice.ptr, " "); - strcat(h->top->Notice.ptr, h->mergeInfo.cidinfo.Trademark); - } - } - h->top->Weight.ptr = h->mergeInfo.cidinfo.Weight; - if (h->mergeInfo.cidinfo.isFixedPitch != ABF_UNSET_INT) - h->top->isFixedPitch = h->mergeInfo.cidinfo.isFixedPitch; - if (h->mergeInfo.cidinfo.fsType != ABF_UNSET_INT) - h->top->FSType = h->mergeInfo.cidinfo.fsType; - if (h->mergeInfo.XUID.cnt > 0) { - int x; - h->top->XUID.cnt = h->mergeInfo.XUID.cnt; - for (x = 0; x < h->mergeInfo.XUID.cnt; x++) - h->top->XUID.array[x] = h->mergeInfo.XUID.array[x]; - } - h->top->cid.Registry.ptr = h->mergeInfo.cidinfo.Registry; - h->top->cid.Ordering.ptr = h->mergeInfo.cidinfo.Ordering; - h->top->cid.Supplement = h->mergeInfo.cidinfo.Supplement; - h->top->cid.CIDFontVersion = h->mergeInfo.cidinfo.fontVersion; - h->top->version.ptr = NULL; - } - - return fontisCID; -} - -static GAFileInfo *checkIFParentCIDCompatible(txCtx h, abfTopDict *local_top, boolean parentIsCID, boolean localFontIsCID) { - GAFileInfo *gaf = NULL; - unsigned short fileIndex = h->mergeInfo.fileIndex; - - /* If there is a glyph alias file for the first font, make sure it is the right type. */ - if ((h->mergeInfo.glyphAliasSet.cnt > 0) && (h->mergeInfo.glyphAliasSet.array[fileIndex].gaEntrySet.cnt > 0)) { - gaf = &h->mergeInfo.glyphAliasSet.array[fileIndex]; - if (parentIsCID) { - int ifd; - if ((gaf->gaType == gafBothName) || (gaf->gaType == gafSrcCID)) - fatal(h, "Parent font not a CID font, but its matching glyph alias file maps the glyphs to names rather than CID values"); - - for (ifd = 0; ifd < local_top->FDArray.cnt; ifd++) { - if (gaf->FontName[0] != 0) /* if the GA file supplies an alternate FontName, use it .*/ - local_top->FDArray.array[ifd].FontName.ptr = gaf->FontName; - - if (gaf->LanguageGroup != -1) /* if the GA file supplies a LanguageGroup, use it .*/ - local_top->FDArray.array[ifd].Private.LanguageGroup = gaf->LanguageGroup; - } - } else { - if ((gaf->gaType == gafBothCID) || (gaf->gaType == gafDstCID)) - fatal(h, "Parent font is not a CID font, but its matching glyph alias file maps the glyph names to CID values."); - } - } else { - if (parentIsCID != localFontIsCID) { - if (parentIsCID) - fatal(h, "First font is CID, current font is name-keyed."); - else - fatal(h, "First font is name-keyed, current font is CID."); - } - } - return gaf; -} - -static void mergeFDArray(txCtx h, abfTopDict *local_top) { - dnaSET_CNT(h->mergeInfo.newiFDArray, local_top->FDArray.cnt); - /* This will merge the new font's new FDArray into the output font's FDArray, - and will fill in the h->mergeInfo.newiFDArray.array */ - /* Note that fonts from different hint dirs will end up in different - FDArray dicts, because the FDArray dicts only compare as equal if - the font Dict's FontName match */ - h->mergeInfo.mergeFDArray(h->cb.glyph.direct_ctx, local_top, h->mergeInfo.newiFDArray.array); - - /* Usually happens when last glyph in the font is a duplicate; this leaves - an error state set in the cff write context, that is not cleared until - the next call to glyphBegin. */ - if (h->mergeInfo.newiFDArray.array[0] < 0) - fatal(h, "Error. Bad return from attempt to merge font dict for fonts %s.", h->src.stm.filename); -} - -/* Begin font set. */ -static void t1_BegSet(txCtx h) { -} - -/* Begin new glyph definition for patching glyph info. if -decid enabled. */ -static int t1_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - char gname[9]; - - /* In mergeFonts, we do NOT skip a glyph if it has already been seen: - the same glyph may get copied more than once to a different target - font name. */ - if (h->t1w.fd == -1) { - h->t1w.fd = info->iFD; /* First glyph; set target fd */ - } else if (info->cid == 0) /* For CID 0, always just use current iFD. */ - { - /* Handle .notdef glyph */ - if (info->flags & ABF_GLYPH_SEEN) - return ABF_SKIP_RET; /* Already in subset */ - info->iFD = h->t1w.fd; /* Force glyph to use selected fd */ - } else if (info->iFD != h->t1w.fd) { - if (h->t1w.options & T1W_USEFD) - info->iFD = h->t1w.fd; - else - fatal(h, "selected glyphs span multiple FDs"); - } - /* Create glyph name */ - if (info->cid == 0) - strcpy(gname, ".notdef"); - else - sprintf(gname, "cid%hu", info->cid); - info->gname.ptr = &h->t1w.gnames.array[h->t1w.gnames.cnt]; - strcpy(info->gname.ptr, gname); - h->t1w.gnames.cnt += (long)strlen(gname) + 1; - - info->flags &= ~ABF_GLYPH_CID; /* Convert to name-keyed glyph */ - - return t1wGlyphCallbacks.beg(cb, info); -} - -/* Begin font. */ -static void t1_BegFont(txCtx h, abfTopDict *top) { - long maxglyphs = 0; - - if (h->t1w.options & T1W_DECID) { - /* Convert cid-keyed font to name-keyed font */ - if (!(top->sup.flags & ABF_CID_FONT)) - fatal(h, "-decid specified for non-CID font"); - - /* Initialize */ - h->t1w.fd = -1; - (void)dnaGROW(h->t1w.gnames, - ((h->subset.glyphs.cnt > 0) ? h->subset.glyphs.cnt : top->sup.nGlyphs) * 8); - h->t1w.gnames.cnt = 0; - - /* Replace callback */ - h->cb.glyph.beg = t1_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - } - if (h->t1w.options & T1W_WAS_EMBEDDED) - top->WasEmbedded = 1; - - if (h->t1w.flags & T1W_TYPE_BASE) - maxglyphs = (top->sup.flags & ABF_CID_FONT) ? top->cid.CIDCount : top->sup.nGlyphs; - - dstFileSetAutoName(h, top); - if (t1wBegFont(h->t1w.ctx, h->t1w.flags, h->t1w.lenIV, maxglyphs)) - fatal(h, NULL); -} - -/* Copy length bytes from source file to destination file. */ -static void copyFile(txCtx h, size_t length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - char buf[BUFSIZ]; - size_t cnt; - - /* Write whole buffers */ - cnt = length / BUFSIZ; - while (cnt--) - if (fread(buf, 1, BUFSIZ, src) != BUFSIZ) - fileError(h, srcfile); - else if (fwrite(buf, 1, BUFSIZ, dst) != BUFSIZ) - fileError(h, dstfile); - - /* Write partial buffers */ - cnt = length % BUFSIZ; - if (fread(buf, 1, cnt, src) != cnt) - fileError(h, srcfile); - else if (fwrite(buf, 1, cnt, dst) != cnt) - fileError(h, dstfile); -} - -/* Copy PFB segment. */ -static void copyPFBSegment(txCtx h, int type, long length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - /* Write segment header */ - putc(128, dst); - putc(type, dst); - putc(length, dst); - putc(length >> 8, dst); - putc(length >> 16, dst); - putc(length >> 24, dst); - - /* Copy segment data */ - copyFile(h, length, src, srcfile, dst, dstfile); -} - -/* Write PFB format file. */ -static void writePFB(txCtx h, FILE *font, char *fontfile, - long begBinary, long begTrailer, long endTrailer) { - char *tmpfil = "(t1w) reformat tmpfil"; - FILE *tmp = tmpfile(); - if (tmp == NULL) - fileError(h, tmpfil); - - /* Write pfb font to tmp file */ - copyPFBSegment(h, 1, begBinary, font, fontfile, tmp, tmpfil); - copyPFBSegment(h, 2, begTrailer - begBinary, font, fontfile, tmp, tmpfil); - copyPFBSegment(h, 1, endTrailer - begTrailer, font, fontfile, tmp, tmpfil); - copyPFBSegment(h, 3, 0, font, fontfile, tmp, tmpfil); - - /* Copy tmp file to font file */ - font = freopen(fontfile, "wb", font); - if (font == NULL) - fileError(h, fontfile); - rewind(tmp); - copyFile(h, endTrailer + 4 * (1 + 1 + 4), tmp, tmpfil, font, fontfile); - - /* Close tmp file */ - if (fclose(tmp) == EOF) - fileError(h, tmpfil); -} - -/* Write 2-byte big-endian number. */ -static void write2(FILE *fp, unsigned short value) { - putc(value >> 8, fp); - putc(value, fp); -} - -/* Write 4-byte big-endian number. */ -static void write4(FILE *fp, unsigned long value) { - putc(value >> 24, fp); - putc(value >> 16, fp); - putc(value >> 8, fp); - putc(value, fp); -} - -/* Write padding bytes */ -static void writePad(FILE *fp, long cnt) { - while (cnt--) - putc(0, fp); -} - -/* Copy POST resource. */ -static void copyPOSTRes(txCtx h, int type, long length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - /* Write resource header */ - write4(dst, 1 + 1 + length); - putc(type, dst); - putc(0, dst); - - /* Copy resource data */ - copyFile(h, length, src, srcfile, dst, dstfile); -} - -/* Copy POST resource. */ -static void writeSection(txCtx h, int type, long length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - /* Write full-length resouces */ - int cnt = length / 2046; - while (cnt--) - copyPOSTRes(h, type, 2046, src, srcfile, dst, dstfile); - - /* Write partial resource */ - cnt = length % 2046; - if (cnt > 0 || length == 0) - copyPOSTRes(h, type, cnt, src, srcfile, dst, dstfile); -} - -/* Write reference. */ -static void writeRef(FILE *fp, int *id, long *offset, long length) { - write2(fp, (unsigned short)((*id)++)); - write2(fp, (unsigned short)-1); - putc(0, fp); - putc(*offset >> 16, fp); - putc(*offset >> 8, fp); - putc(*offset, fp); - write4(fp, 0); - *offset += length + (4 + 1 + 1); -} - -/* Write references. */ -static void writeRefs(FILE *fp, int *id, long *offset, long length) { - int cnt = length / 2046; - while (cnt--) - writeRef(fp, id, offset, 2046); - - cnt = length % 2046; - if (cnt > 0 || length == 0) - writeRef(fp, id, offset, cnt); -} - -/* Write LWFN format file. */ -static void writeLWFN(txCtx h, FILE *font, char *fontfile, - long begBinary, long begTrailer, long endTrailer) { - enum { - MAP_HEADER_LEN = 16 + 4 + 4 * 2, - TYPE_LIST_LEN = 2 + 4 + 2 * 2, - REFERENCE_LEN = 2 * 2 + 1 + 3 + 4 - }; - int id; - long offset; - long length0 = begBinary; /* Text header */ - long length1 = begTrailer - begBinary; /* Binary section */ - long length2 = endTrailer - begTrailer; /* Text trailer */ - long length3 = 0; /* End-of-font program */ - int rescnt = ((length0 + 2045) / 2046 + - (length1 + 2045) / 2046 + - (length2 + 2045) / 2046 + - 1); - long datalen = rescnt * (4 + 1 + 1) + endTrailer; - long maplen = MAP_HEADER_LEN + TYPE_LIST_LEN + rescnt * REFERENCE_LEN; - char *tmpfil = "(t1w) reformat tmpfile"; - FILE *tmp = tmpfile(); - if (tmp == NULL) - fileError(h, tmpfil); - - /* Write resource header */ - write4(tmp, 256); - write4(tmp, 256 + datalen); - write4(tmp, datalen); - write4(tmp, maplen); - - /* Write system and application data area */ - writePad(tmp, 112 + 128); - - /* Write resources */ - writeSection(h, 1, length0, font, fontfile, tmp, tmpfil); - writeSection(h, 2, length1, font, fontfile, tmp, tmpfil); - writeSection(h, 1, length2, font, fontfile, tmp, tmpfil); - writeSection(h, 5, length3, font, fontfile, tmp, tmpfil); - - /* Write map header */ - writePad(tmp, 16 + 4 + 2); - write2(tmp, 0); - write2(tmp, MAP_HEADER_LEN); - write2(tmp, (unsigned short)maplen); - - /* Write type list */ - write2(tmp, 0); - write4(tmp, CTL_TAG('P', 'O', 'S', 'T')); - write2(tmp, (unsigned short)(rescnt - 1)); - write2(tmp, TYPE_LIST_LEN); - - /* Write reference list */ - id = 501; - offset = 0; - writeRefs(tmp, &id, &offset, length0); - writeRefs(tmp, &id, &offset, length1); - writeRefs(tmp, &id, &offset, length2); - writeRefs(tmp, &id, &offset, length3); - - /* Name list empty */ - - /* Copy tmp file to font file */ - font = freopen(fontfile, "wb", font); - if (font == NULL) - fileError(h, fontfile); - rewind(tmp); - copyFile(h, 256 + datalen + maplen, tmp, tmpfil, font, fontfile); - - /* Close tmp file */ - if (fclose(tmp) == EOF) - fileError(h, tmpfil); -} - -/* Perform platform-specific reformatting of file. */ -static void t1_Reformat(txCtx h) { - int state; - long begBinary; /* Offset to start of binary section */ - long begTrailer; /* Offset to start of trailer */ - long endTrailer; /* Offset to EOF */ - char *fontfile = h->dst.stm.filename; - FILE *font = fopen(fontfile, "rb"); - if (font == NULL) - fileError(h, fontfile); - - /* Find "eexec " string */ - state = 0; - for (;;) - switch (fgetc(font)) { - case 'e': - switch (state) { - case 0: - state = 1; - break; - case 1: - state = 2; - break; - case 3: - state = 4; - break; - default: - state = 0; - break; - } - break; - case 'x': - state = (state == 2) ? 3 : 0; - break; - case 'c': - state = (state == 4) ? 5 : 0; - break; - case ' ': - if (state == 5) { - begBinary = ftell(font); - if (begBinary == -1) - fileError(h, fontfile); - goto findTrailer; - } else - state = 0; - break; - case EOF: - if (feof(font)) - fatal(h, "can't find eexec"); - else - fileError(h, fontfile); - break; - } - -findTrailer: - /* Find a line of 64 '0' chars */ - state = 0; - for (;;) - switch (fgetc(font)) { - case '0': - if (++state == 64) { - begTrailer = ftell(font); - if (begTrailer == -1) - fileError(h, fontfile); - begTrailer -= 64; - goto findEOF; - } - break; - case EOF: - if (feof(font)) - fatal(h, "can't find tailer"); - else - fileError(h, fontfile); - break; - default: - state = 0; - break; - } - -findEOF: - /* Find end-of-file */ - if (fseek(font, 0, SEEK_END)) - fileError(h, fontfile); - endTrailer = ftell(font); - if (endTrailer == -1) - fileError(h, fontfile); - - rewind(font); - switch (h->t1w.flags & T1W_NEWLINE_MASK) { - case T1W_NEWLINE_WIN: - writePFB(h, font, fontfile, begBinary, begTrailer, endTrailer); - break; - case T1W_NEWLINE_MAC: - writeLWFN(h, font, fontfile, begBinary, begTrailer, endTrailer); - break; - } - - if (fclose(font) == EOF) - fileError(h, fontfile); -} - -/* End font. */ -static void t1_EndFont(txCtx h) { - if (h->t1w.options & T1W_DECID) { - /* Add .notdef (if not already added) */ - if (h->src.type == src_Type1) - (void)t1rGetGlyphByCID(h->t1r.ctx, 0, &h->cb.glyph); - - else if (h->src.type == src_CFF) - (void)cfrGetGlyphByCID(h->cfr.ctx, 0, &h->cb.glyph); - - /* Convert to name-keyed font */ - h->top->sup.flags &= ~ABF_CID_FONT; - h->top->FDArray.cnt = 1; - h->top->FDArray.array = &h->top->FDArray.array[h->t1w.fd]; - h->t1w.options |= T1W_NO_UID; /* Clear UniqueIDs */ - } - - if (h->t1w.options & T1W_NO_UID) { - h->top->UniqueID = ABF_UNSET_INT; - h->top->XUID.cnt = ABF_EMPTY_ARRAY; - h->top->cid.UIDBase = ABF_UNSET_INT; - } - - if (h->t1w.options & T1W_REFORMAT && - strcmp(h->dst.stm.filename, "-") == 0) - fatal(h, "stdout can't be used with -pfb or -LWFN options"); - - if (t1wEndFont(h->t1w.ctx, h->top)) - fatal(h, NULL); - - if (h->t1w.options & T1W_REFORMAT) - t1_Reformat(h); -} - -/* End font set. */ -static void t1_EndSet(txCtx h) { -} - -/* Stream SING glyphlet callback. */ -static int get_stream(t1wSINGCallback *sing_cb) { - long length; - txCtx h = sing_cb->ctx; - FILE *fp = h->src.stm.fp; - - /* Get file size and seek to start */ - if (fseek(fp, 0, SEEK_END) != 0 || - (length = ftell(fp)) == -1 || - fseek(fp, 0, SEEK_SET) != 0) - return 1; - - /* Update returned data */ - sing_cb->stm = &h->src.stm; - sing_cb->length = length; - - return 0; -} - -/* Setup t1 mode. */ -static void t1_SetMode(txCtx h) { - /* Initialize control data */ - /* This is now set at the start of parseArgs - h->t1w.options = 0; - */ - h->t1w.flags = (T1W_TYPE_HOST | - T1W_ENCODE_ASCII | - T1W_OTHERSUBRS_PRIVATE | - T1W_NEWLINE_UNIX); - h->t1w.lenIV = 4; - h->t1w.fd = -1; - /* Set mode name */ - h->modename = "t1"; - - /* Set library functions */ - h->dst.begset = t1_BegSet; - h->dst.begfont = t1_BegFont; - h->dst.endfont = t1_EndFont; - h->dst.endset = t1_EndSet; - - if (h->t1w.ctx == NULL) { - /* Create library context */ - t1wSINGCallback sing_cb; - sing_cb.ctx = h; - sing_cb.stm = 0; - sing_cb.length = 0; - sing_cb.get_stream = get_stream; - h->t1w.ctx = t1wNew(&h->cb.mem, &h->cb.stm, T1W_CHECK_ARGS); - if (h->t1w.ctx == NULL || t1wSetSINGCallback(h->t1w.ctx, &sing_cb)) - fatal(h, "(t1w) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = t1wGlyphCallbacks; - h->cb.glyph.direct_ctx = h->t1w.ctx; - - /* Set source library flags */ - /* These are now set at the start of parseArgs - h->t1r.flags = 0; - h->cfr.flags = 0; - */ - - h->mode = mode_t1; -} - -/* Mode-specific help. */ -static void t1_Help(txCtx h) { - static char *text[] = - { -#include "t1.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- svg mode ------------------------------- */ - -/* Begin font set. */ -static void svg_BegSet(txCtx h) { -} - -/* Begin new glyph definition. */ -static int svg_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - - /* Determine (or fabricate) Unicode value for glyph. */ - info->flags |= ABF_GLYPH_UNICODE; - if (h->top->sup.flags & ABF_CID_FONT) { - info->encoding.code = h->svw.unrec; - h->svw.unrec++; - } else - info->encoding.code = mapName2UV(h, info->gname.ptr, &h->svw.unrec); - - return svwGlyphCallbacks.beg(cb, info); -} - -/* Begin font. */ -static void svg_BegFont(txCtx h, abfTopDict *top) { - h->cb.glyph.beg = svg_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - - h->svw.unrec = 0xE000; /* Start of Private Use Area */ - - dstFileSetAutoName(h, top); - if (svwBegFont(h->svw.ctx, h->svw.flags)) - fatal(h, NULL); -} - -/* End font. */ -static void svg_EndFont(txCtx h) { - if (svwEndFont(h->svw.ctx, h->top)) - fatal(h, NULL); -} - -/* End font set. */ -static void svg_EndSet(txCtx h) { -} - -/* Setup svg mode. */ -static void svg_SetMode(txCtx h) { - /* Initialize control data */ - h->svw.options = 0; - h->svw.flags = SVW_NEWLINE_UNIX; - - /* Set mode name */ - h->modename = "svg"; - - /* Set library functions */ - h->dst.begset = svg_BegSet; - h->dst.begfont = svg_BegFont; - h->dst.endfont = svg_EndFont; - h->dst.endset = svg_EndSet; - - if (h->svw.ctx == NULL) { - /* Create library context */ - h->svw.ctx = svwNew(&h->cb.mem, &h->cb.stm, SVW_CHECK_ARGS); - if (h->svw.ctx == NULL) - fatal(h, "(svw) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = svwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->svw.ctx; - - /* Set source library flags */ - h->t1r.flags |= T1R_UPDATE_OPS; - h->cfr.flags |= CFR_UPDATE_OPS; - - h->mode = mode_svg; -} - -/* Mode-specific help. */ -static void svg_Help(txCtx h) { - static char *text[] = - { -#include "svg.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- ufo write mode ------------------------------- */ - -static void mkdir_tx(txCtx h, char *dirPath) { - int dirErr; -#ifdef _WIN32 - dirErr = _mkdir(dirPath); -#else - dirErr = mkdir(dirPath, 0000700 | 0000070 | 0000007); -#endif - - if (dirErr != 0) - fatal(h, "Failed to creater directory '%s'.\n", dirPath); -} - -/* Begin font set. */ -static void ufw_BegSet(txCtx h) { -} - -/* Begin new glyph definition. */ -static int ufw_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - return ufwGlyphCallbacks.beg(cb, info); -} - -/* Begin font. */ -static void ufw_BegFont(txCtx h, abfTopDict *top) { - struct stat fileStat; - int statErrNo; - - h->cb.glyph.beg = ufw_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - - /* Make sure the user isn't sending the output to std out */ - if (strcmp(h->dst.stm.filename, "-") == 0) { - fatal(h, "Please specify a file path for the destination UFO font. UFO fonts cannot be serialized to stdout."); - } - /* if the UFO parent dir does not exist, make it. - If it does exist, complain and quit. */ - statErrNo = stat(h->dst.stm.filename, &fileStat); - if (statErrNo == 0) { - fatal(h, "Destination UFO font already exists: %s.\n", h->dst.stm.filename); - } else { - char buffer[FILENAME_MAX]; - mkdir_tx(h, h->dst.stm.filename); - if (h->ufr.altLayerDir != NULL) - sprintf(buffer, "%s/%s", h->file.dst, h->ufr.altLayerDir); - else - sprintf(buffer, "%s/%s", h->file.dst, "glyphs"); - mkdir_tx(h, buffer); - } - - dstFileSetAutoName(h, top); - if (ufwBegFont(h->ufow.ctx, h->ufow.flags, h->ufr.altLayerDir)) - fatal(h, NULL); -} - -/* End font. */ -static void ufw_EndFont(txCtx h) { - if (ufwEndFont(h->ufow.ctx, h->top)) - fatal(h, NULL); -} - -/* End font set. */ -static void ufw_EndSet(txCtx h) { -} - -static void ufo_SetMode(txCtx h) { - /* Initialize control data */ - h->ufow.flags = 0; - - /* Set mode name */ - h->modename = "ufo_w"; - - /* Set library functions */ - h->dst.begset = ufw_BegSet; - h->dst.begfont = ufw_BegFont; - h->dst.endfont = ufw_EndFont; - h->dst.endset = ufw_EndSet; - - if (h->ufow.ctx == NULL) { - /* Create library context */ - h->ufow.ctx = ufwNew(&h->cb.mem, &h->cb.stm, UFW_CHECK_ARGS); - if (h->ufow.ctx == NULL) - fatal(h, "(ufow) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = ufwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->ufow.ctx; - - /* Set source library flags. It is harmless to declare a font to be cune, and we have to flatten them if going to UFO */ - h->t1r.flags = T1R_UPDATE_OPS | T1R_FLATTEN_CUBE | T1R_IS_CUBE; - h->cfr.flags = CFR_UPDATE_OPS | CFR_FLATTEN_CUBE | T1R_IS_CUBE; - - h->mode = mode_ufow; -} - -/* Mode-specific help. */ -static void ufo_Help(txCtx h) { - static char *text[] = - { -#include "ufo.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- dcf mode ------------------------------- */ - -#define tx_reserved2 2 -#define t2_reserved17 17 - -/* Return size of region. */ -static long sizeRegion(const ctlRegion *region) { - return region->end - region->begin; -} - -/* Begin flowed text. */ -static void flowBeg(txCtx h) { - h->dcf.sep = ""; -} - -/* Title flowed text. */ -static void flowTitle(txCtx h, char *title) { - flowBeg(h); - fprintf(h->dst.stm.fp, "--- %s\n", title); -} - -/* End flowed text. */ -static void flowEnd(txCtx h) { - fprintf(h->dst.stm.fp, "\n"); -} - -/* Add flowed text. */ -static void flowAdd(txCtx h, char *fmt, ...) { - va_list ap; - if (h->dcf.flags & DCF_SaveStemCnt) - return; - va_start(ap, fmt); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); -} - -/* Break flowed text. */ -static void flowBreak(txCtx h, char *fmt, ...) { - va_list ap; - va_start(ap, fmt); - fprintf(h->dst.stm.fp, "%s", h->dcf.sep); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "; -} - -/* Begin flowed element. */ -static void flowElemBeg(txCtx h, long index, int complex) { - fprintf(h->dst.stm.fp, "%s[%ld]={%s", h->dcf.sep, index, - (complex && (h->dcf.flags & DCF_BreakFlowed)) ? "\n" : ""); -} - -/* Add argument to flowed element. */ -static void flowArg(txCtx h, char *fmt, ...) { - va_list ap; - if (h->dcf.flags & DCF_SaveStemCnt) - return; - va_start(ap, fmt); - fprintf(h->dst.stm.fp, "%s", h->dcf.sep); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); - h->dcf.sep = " "; -} - -/* Add operator to flowed element. */ -static void flowOp(txCtx h, char *fmt, ...) { - va_list ap; - if (h->dcf.flags & DCF_SaveStemCnt) - return; - va_start(ap, fmt); - fprintf(h->dst.stm.fp, "%s", h->dcf.sep); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n " : " "; -} - -/* End flowed element. */ -static void flowElemEnd(txCtx h) { - fprintf(h->dst.stm.fp, "}"); - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "; -} - -/* Begin font set. */ -static void dcf_BegSet(txCtx h) { -} - -/* Dump table tag line. */ -static void dumpTagLine(txCtx h, char *title, const ctlRegion *region) { - if (h->dcf.level < 1) { - static char dots[] = " ................"; - fprintf(h->dst.stm.fp, "### %s%.*s (%08lx-%08lx)\n", - title, (int)(sizeof(dots) - 1 - strlen(title)), dots, - region->begin, region->end - 1L); - } else - fprintf(h->dst.stm.fp, "### %s (%08lx-%08lx)\n", - title, region->begin, region->end - 1L); -} - -/* Dump CFF header. */ -static void dcf_DumpHeader(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_Header) || region->begin == -1) - return; - - dumpTagLine(h, "Header", region); - if (h->dcf.level < 1) - return; - - bufSeek(h, region->begin); - fprintf(fp, "major =%u\n", read1(h)); - fprintf(fp, "minor =%u\n", read1(h)); - fprintf(fp, "hdrSize=%u\n", read1(h)); - fprintf(fp, "offSize=%u\n", read1(h)); -} - -/* Dump CFF INDEX. */ -static void dumpINDEX(txCtx h, char *title, const ctlRegion *region, - DumpElementProc dumpElement) { - dumpTagLine(h, title, region); - if (h->dcf.level < 1) - return; - else { - long i; - long offset; - long dataref; - unsigned short count; - unsigned char offSize = 0; /* Suppress optimizer warning */ - ctlRegion element; - FILE *fp = h->dst.stm.fp; - - /* Read header */ - bufSeek(h, region->begin); - count = read2(h); - if (count > 0) - offSize = read1(h); - - if (h->dcf.level < 5) { - /* Dump header */ - fprintf(fp, "count =%hu\n", count); - if (count == 0) - return; - fprintf(fp, "offSize=%u\n", offSize); - - /* Dump offset array */ - flowTitle(h, "offset[index]=value"); - for (i = 0; i <= count; i++) - flowBreak(h, "[%ld]=%lu", i, readn(h, offSize)); - flowEnd(h); - } else if (count == 0) { - fprintf(fp, "empty\n"); - return; - } - - /* Compute offset array base and data reference offset */ - offset = region->begin + 2 + 1; - dataref = offset + (count + 1) * offSize - 1; - - /* Dump object data */ - flowTitle(h, "object[index]={value}"); - bufSeek(h, offset); - element.begin = dataref + readn(h, offSize); - offset += offSize; - for (i = 0; i < count; i++) { - bufSeek(h, offset); - element.end = dataref + readn(h, offSize); - offset += offSize; - dumpElement(h, i, &element); - element.begin = element.end; - } - flowEnd(h); - } -} - -/* Dump string data. */ -static void dumpString(txCtx h, const ctlRegion *region) { - long cnt = sizeRegion(region); - bufSeek(h, region->begin); - while (cnt-- > 0) - flowAdd(h, "%c", read1(h)); -} - -/* Dump Name INDEX element. */ -static void dumpNameElement(txCtx h, long index, const ctlRegion *region) { - flowElemBeg(h, index, 0); - dumpString(h, region); - flowElemEnd(h); -} - -/* Dump Name INDEX table. */ -static void dcf_DumpNameINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_NameINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "Name INDEX", region, dumpNameElement); -} - -/* Dump CFF DICT. */ -static void dumpDICT(txCtx h, const ctlRegion *region) { - static char *opname[32] = - { - /* 0 */ "version", - /* 1 */ "Notice", - /* 2 */ "FullName", - /* 3 */ "FamilyName", - /* 4 */ "Weight", - /* 5 */ "FontBBox", - /* 6 */ "BlueValues", - /* 7 */ "OtherBlues", - /* 8 */ "FamilyBlues", - /* 9 */ "FamilyOtherBlues", - /* 10 */ "StdHW", - /* 11 */ "StdVW", - /* 12 */ "escape", - /* 13 */ "UniqueID", - /* 14 */ "XUID", - /* 15 */ "charset", - /* 16 */ "Encoding", - /* 17 */ "CharStrings", - /* 18 */ "Private", - /* 19 */ "Subrs", - /* 20 */ "defaultWidthX", - /* 21 */ "nominalWidthX", - /* 22 */ "reserved22", - /* 23 */ "reserved23", - /* 24 */ "reserved24", - /* 25 */ "reserved25", - /* 26 */ "reserved26", - /* 27 */ "reserved27", - /* 28 */ "shortint", - /* 29 */ "longint", - /* 30 */ "BCD", - /* 31 */ "reserved31", - }; - static char *escopname[] = - { - /* 0 */ "Copyright", - /* 1 */ "isFixedPitch", - /* 2 */ "ItalicAngle", - /* 3 */ "UnderlinePosition", - /* 4 */ "UnderlineThickness", - /* 5 */ "PaintType", - /* 6 */ "CharstringType", - /* 7 */ "FontMatrix", - /* 8 */ "StrokeWidth", - /* 9 */ "BlueScale", - /* 10 */ "BlueShift", - /* 11 */ "BlueFuzz", - /* 12 */ "StemSnapH", - /* 13 */ "StemSnapV", - /* 14 */ "ForceBold", - /* 15 */ "reservedESC15", - /* 16 */ "lenIV", - /* 17 */ "LanguageGroup", - /* 18 */ "ExpansionFactor", - /* 19 */ "initialRandomSeed", - /* 20 */ "SyntheticBase", - /* 21 */ "PostScript", - /* 22 */ "BaseFontName", - /* 23 */ "BaseFontBlend", - /* 24 */ "reservedESC24", - /* 25 */ "reservedESC25", - /* 26 */ "reservedESC26", - /* 27 */ "reservedESC27", - /* 28 */ "reservedESC28", - /* 29 */ "reservedESC29", - /* 30 */ "ROS", - /* 31 */ "CIDFontVersion", - /* 32 */ "CIDFontRevision", - /* 33 */ "CIDFontType", - /* 34 */ "CIDCount", - /* 35 */ "UIDBase", - /* 36 */ "FDArray", - /* 37 */ "FDIndex", - /* 38 */ "FontName", - /* 39 */ "Chameleon", - }; - long left = sizeRegion(region); - - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? " " : ""; - bufSeek(h, region->begin); - while (left > 0) { - unsigned char byte = read1(h); - left--; - switch (byte) { - case cff_version: - case cff_Notice: - case cff_FullName: - case cff_FamilyName: - case cff_Weight: - case cff_FontBBox: - case cff_BlueValues: - case cff_OtherBlues: - case cff_FamilyBlues: - case cff_FamilyOtherBlues: - case cff_StdHW: - case cff_StdVW: - case cff_UniqueID: - case cff_XUID: - case cff_charset: - case cff_Encoding: - case cff_CharStrings: - case cff_Private: - case cff_Subrs: - case cff_defaultWidthX: - case cff_nominalWidthX: - case cff_vsindex: - case cff_blend: - case cff_VarStore: - case cff_maxstack: - case cff_reserved26: - case cff_reserved27: - case cff_BlendLE: - flowOp(h, opname[byte]); - break; - case cff_escape: { - /* Process escaped operator */ - unsigned char escop = read1(h); - left--; - if (escop > ARRAY_LEN(escopname) - 1) - flowOp(h, "reservedESC%d", escop); - else - flowOp(h, escopname[escop]); - break; - } - case cff_shortint: { - /* 3-byte number */ - short value = read1(h); - value = value << 8 | read1(h); - left -= 2; -#if SHRT_MAX > 32767 - /* short greater that 2 bytes; handle negative range */ - if (value > 32767) - value -= 65536; -#endif - flowArg(h, "%hd", value); - } break; - case cff_longint: { - /* 5-byte number */ - long value = read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - left -= 4; -#if LONG_MAX > 2147483647 - /* long greater that 4 bytes; handle negative range */ - if (value > 2417483647) - value -= 4294967296; -#endif - flowArg(h, "%ld", value); - } break; - case cff_BCD: { - int count = 0; - int byte = 0; /* Suppress optimizer warning */ - flowArg(h, ""); - for (;;) { - int nibble; - - if (count++ & 1) - nibble = byte & 0xf; - else { - byte = read1(h); - left--; - nibble = byte >> 4; - } - if (nibble == 0xf) - break; - - flowAdd(h, "%c", "0123456789.EE?-?"[nibble]); - if (nibble == 0xc) - flowAdd(h, "-"); - } - } break; - case 247: - case 248: - case 249: - case 250: - /* Positive 2-byte number */ - flowArg(h, "%d", 108 + 256 * (byte - 247) + read1(h)); - left--; - break; - case 251: - case 252: - case 253: - case 254: - /* Negative 2-byte number */ - flowArg(h, "%d", -108 - 256 * (byte - 251) - read1(h)); - left--; - break; - case 255: - flowOp(h, "reserved255"); - break; - default: - /* 1-byte number */ - flowArg(h, "%d", byte - 139); - break; - } - } - if (h->dcf.flags & DCF_BreakFlowed) - fprintf(h->dst.stm.fp, "\n"); -} - -/* Dump DICT element. */ -static void dumpDICTElement(txCtx h, long index, const ctlRegion *region) { - flowElemBeg(h, index, 1); - dumpDICT(h, region); - flowElemEnd(h); -} - -/* Dump Top DICT INDEX table. */ -static void dcf_DumpTopDICTINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_TopDICTINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "Top DICT INDEX", region, dumpDICTElement); -} - -/* Dump String INDEX element. */ -static void dumpStringElement(txCtx h, long index, const ctlRegion *region) { - flowElemBeg(h, (h->dcf.level == 5) ? ARRAY_LEN(sid2std) + index : index, 0); - dumpString(h, region); - flowElemEnd(h); -} - -/* Dump String INDEX table. */ -static void dcf_DumpStringINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_StringINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "String INDEX", region, dumpStringElement); -} - -/* Flow stack args. */ -static void flowStack(txCtx h) { - long i; - for (i = 0; i < h->stack.cnt; i++) - flowArg(h, "%g", INDEX(i)); - h->stack.cnt = 0; -} - -/* Flow stack args and operator. */ -static void flowCommand(txCtx h, char *opname) { - flowStack(h); - flowOp(h, opname); -} - -/* Call subr. */ -static void callsubr(txCtx h, - SubrInfo *info, const ctlRegion *caller, long left) { - long arg; - ctlRegion callee; - long saveoff = caller->end - left; - - /* Validate and unbias subr number */ - CHKUFLOW(1); - arg = info->bias + (long)POP(); - if (arg < 0 || arg >= info->count) - fatal(h, "invalid subr call"); - - /* Compute subr region */ - bufSeek(h, info->offset + arg * info->offSize); - callee.begin = info->dataref + readn(h, info->offSize); - callee.end = info->dataref + readn(h, info->offSize); - - /* Dump subr region */ - dumpCstr(h, &callee, 1); - - if (h->dcf.flags & DCF_SaveStemCnt) - info->stemcnt.array[arg] = (unsigned char)h->dcf.stemcnt; - - if (left > 0) - bufSeek(h, saveoff); -} - -/* Dump Type 2 charstring. */ -static void dumpCstr(txCtx h, const ctlRegion *region, int inSubr) { - static char *opname[32] = - { - /* 0 */ "reserved0", - /* 1 */ "hstem", - /* 2 */ "compose", - /* 3 */ "vstem", - /* 4 */ "vmoveto", - /* 5 */ "rlineto", - /* 6 */ "hlineto", - /* 7 */ "vlineto", - /* 8 */ "rrcurveto", - /* 9 */ "reserved9", - /* 10 */ "callsubr", - /* 11 */ "return", - /* 12 */ "escape", - /* 13 */ "reserved13", - /* 14 */ "endchar", - /* 15 */ "reserved15", - /* 16 */ "reserved16", - /* 17 */ "callgrel", - /* 18 */ "hstemhm", - /* 19 */ "hintmask", - /* 20 */ "cntrmask", - /* 21 */ "rmoveto", - /* 22 */ "hmoveto", - /* 23 */ "vstemhm", - /* 24 */ "rcurveline", - /* 25 */ "rlinecurve", - /* 26 */ "vvcurveto", - /* 27 */ "hhcurveto", - /* 28 */ "shortint", - /* 29 */ "callgsubr", - /* 30 */ "vhcurveto", - /* 31 */ "hvcurveto", - }; - static char *escopname[] = - { - /* 0 */ "dotsection", - /* 1 */ "reservedESC1", - /* 2 */ "reservedESC2", - /* 3 */ "and", - /* 4 */ "or", - /* 5 */ "not", - /* 6 */ "reservedESC6", - /* 7 */ "reservedESC7", - /* 8 */ "reservedESC8", - /* 9 */ "abs", - /* 10 */ "add", - /* 11 */ "sub", - /* 12 */ "div", - /* 13 */ "reservedESC13", - /* 14 */ "neg", - /* 15 */ "eq", - /* 16 */ "reservedESC16", - /* 17 */ "reservedESC17", - /* 18 */ "drop", - /* 19 */ "reservedESC19", - /* 20 */ "put", - /* 21 */ "get", - /* 22 */ "ifelse", - /* 23 */ "random", - /* 24 */ "mul", - /* 25 */ "reservedESC25", - /* 26 */ "sqrt", - /* 27 */ "dup", - /* 28 */ "exch", - /* 29 */ "index", - /* 30 */ "roll", - /* 31 */ "reservedESC31", - /* 32 */ "reservedESC32", - /* 33 */ "reservedESC33", - /* 34 */ "hflex", - /* 35 */ "flex", - /* 36 */ "hflex1", - /* 37 */ "flex1", - /* 38 */ "cntron", - /* 39 */ "blend1", - /* 40 */ "blend2", - /* 41 */ "blend3", - /* 42 */ "blend4", - /* 43 */ "blend6", - /* 44 */ "setwv1", - /* 45 */ "setwv2", - /* 46 */ "setwv3", - /* 47 */ "setwv4", - /* 48 */ "setwv5", - /* 49 */ "setwvN", - /* 50 */ "transform", - }; - long left = sizeRegion(region); - - if (!inSubr) - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? " " : ""; - bufSeek(h, region->begin); - while (left > 0) { - unsigned char byte = read1(h); - left--; - switch (byte) { - case tx_reserved0: - case tx_vmoveto: - case tx_rlineto: - case tx_hlineto: - case tx_vlineto: - case tx_rrcurveto: - case t2_reserved9: - case t2_reserved13: - case tx_endchar: - case t2_vsindex: - case t2_blend: - case tx_rmoveto: - case tx_hmoveto: - case t2_rcurveline: - case t2_rlinecurve: - case t2_vvcurveto: - case t2_hhcurveto: - case tx_vhcurveto: - case tx_hvcurveto: - flowCommand(h, opname[byte]); - break; - case tx_compose: - flowCommand(h, opname[byte]); - break; - case tx_callgrel: - flowCommand(h, opname[byte]); - break; - case tx_callsubr: - if (h->dcf.flags & DCF_Flatten) - callsubr(h, h->dcf.fd, region, left); - else - flowCommand(h, opname[byte]); - break; - case tx_return: - if (!(h->dcf.flags & DCF_Flatten)) - flowCommand(h, opname[byte]); - break; - case t2_callgsubr: - if (h->dcf.flags & DCF_Flatten) - callsubr(h, &h->dcf.global, region, left); - else - flowCommand(h, opname[byte]); - break; - case tx_hstem: - case tx_vstem: - case t2_hstemhm: - case t2_vstemhm: - if (h->dcf.flags & DCF_Flatten) - h->dcf.stemcnt += h->stack.cnt / 2; - flowCommand(h, opname[byte]); - break; - case t2_hintmask: - case t2_cntrmask: - if (h->dcf.flags & DCF_Flatten) - h->dcf.stemcnt += h->stack.cnt / 2; - flowStack(h); - { - int masklen = (h->dcf.stemcnt + 7) / 8; - flowOp(h, "%s[", opname[byte]); - left -= masklen; - while (masklen--) - flowAdd(h, "%02X", read1(h)); - flowAdd(h, "]"); - break; - } - case tx_escape: { - /* Process escaped operator */ - unsigned char escop = read1(h); - left--; - if (escop > ARRAY_LEN(escopname) - 1) { - flowStack(h); - flowOp(h, "reservedESC%d", escop); - } else - flowCommand(h, escopname[escop]); - break; - } - case t2_shortint: - /* 3-byte number */ - CHKOFLOW(1); - { - short value = read1(h); - value = value << 8 | read1(h); - left -= 2; -#if SHRT_MAX > 32767 - /* short greater that 2 bytes; handle negative range */ - if (value > 32767) - value -= 65536; -#endif - PUSH(value); - } - continue; - case 247: - case 248: - case 249: - case 250: - /* Positive 2-byte number */ - CHKOFLOW(1); - PUSH(108 + 256 * (byte - 247) + read1(h)); - left--; - continue; - case 251: - case 252: - case 253: - case 254: - /* Negative 2-byte number */ - CHKOFLOW(1); - PUSH(-108 - 256 * (byte - 251) - read1(h)); - left--; - continue; - case 255: - /* 5-byte number (16.16 fixed) */ - CHKOFLOW(1); - { - long value = read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - left -= 4; -#if LONG_MAX > 2147483647 - /* long greater that 4 bytes; handle negative range */ - if (value > 2417483647) - value -= 4294967296; -#endif - PUSH(value / 65536.0); - } - continue; - default: - /* 1-byte number */ - CHKOFLOW(1); - PUSH(byte - 139); - continue; - } - } - if (!inSubr && (h->dcf.flags & DCF_BreakFlowed) && - !(h->dcf.flags & DCF_SaveStemCnt)) { - /* Handle left over args (if any) */ - flowStack(h); - fprintf(h->dst.stm.fp, "\n"); - } -} - -/* Dump global charstring element. */ -static void dumpGlobalElement(txCtx h, long index, const ctlRegion *region) { - h->dcf.stemcnt = h->dcf.global.stemcnt.array[index]; - h->stack.cnt = 0; - if (h->dcf.level > 1) - index -= h->dcf.global.bias; - flowElemBeg(h, index, 1); - dumpCstr(h, region, 0); - flowElemEnd(h); -} - -/* Dump Global Subr INDEX table. */ -static void dcf_DumpGlobalSubrINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_GlobalSubrINDEX) || region->begin == -1) - return; - - h->flags &= ~DCF_Flatten; - dumpINDEX(h, "GlobalSubrINDEX", region, dumpGlobalElement); -} - -/* Dump encoding table. */ -static void dcf_DumpEncoding(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_Encoding) || - region->begin == -1 || - h->top->sup.flags & ABF_CID_FONT) - return; - - switch (region->begin) { - case cff_StandardEncoding: - fprintf(fp, "### Encoding ........ (Standard)\n"); - break; - case cff_ExpertEncoding: - fprintf(fp, "### Encoding ........ (Expert)\n"); - break; - default: { - dumpTagLine(h, "Encoding", region); - if (h->dcf.level > 0) { - long gid; - long i; - long cnt; - unsigned char fmt; - - bufSeek(h, region->begin); - gid = 1; /* Skip glyph 0 (.notdef) */ - - fmt = read1(h); - fprintf(fp, "format =%x\n", fmt); - switch (fmt & 0x7f) { - case 0: - cnt = read1(h); - fprintf(fp, "nCodes =%ld\n", cnt); - flowTitle(h, "glyph[gid]=code"); - for (; gid <= cnt; gid++) - flowBreak(h, "[%ld]=%u", gid, read1(h)); - flowEnd(h); - break; - case 1: - cnt = read1(h); - fprintf(fp, "nRanges=%ld\n", cnt); - flowTitle(h, "Range1={first,nLeft}"); - for (i = 0; i < cnt; i++) { - unsigned char code = read1(h); - unsigned char nLeft = read1(h); - flowBreak(h, "[%ld]={%u,%u}", i, code, nLeft); - gid += nLeft + 1; - } - flowEnd(h); - break; - } - if (fmt & 0x80) { - /* Read supplementary encoding */ - cnt = read1(h); - fprintf(fp, "nSups=%ld\n", cnt); - flowTitle(h, "Supplement={code,sid}"); - for (i = 0; i < cnt; i++) { - unsigned char code = read1(h); - unsigned short sid = read2(h); - flowBreak(h, "[%ld]={%u,%hu}", i, code, sid); - } - flowEnd(h); - } - } - } break; - } -} - -/* Dump charset table. */ -static void dcf_DumpCharset(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_Charset) || region->begin == -1) - return; - - switch (region->begin) { - case cff_ISOAdobeCharset: - fprintf(fp, "### Charset ......... (ISOAdobe)\n"); - break; - case cff_ExpertCharset: - fprintf(fp, "### Charset ......... (Expert)\n"); - break; - case cff_ExpertSubsetCharset: - fprintf(fp, "### Charset ......... (Expert Subset)\n"); - break; - default: { - dumpTagLine(h, "Charset", region); - if (h->dcf.level > 0) { - unsigned char fmt; - long i; - long gid; - - bufSeek(h, region->begin); - fmt = read1(h); - fprintf(fp, "format=%u\n", fmt); - gid = 1; /* Skip glyph 0 (.notdef) */ - - switch (fmt) { - case 0: - flowTitle(h, (h->top->sup.flags & ABF_CID_FONT) ? "glyph[gid]=cid" : "glyph[gid]=sid"); - for (; gid < h->top->sup.nGlyphs; gid++) - flowBreak(h, "[%ld]=%hu", gid, read2(h)); - flowEnd(h); - break; - case 1: - flowTitle(h, "Range1[index]={first,nLeft}"); - for (i = 0; gid < h->top->sup.nGlyphs; i++) { - unsigned short id = read2(h); - unsigned char nLeft = read1(h); - flowBreak(h, "[%ld]={%hu,%hhu}", i, id, nLeft); - gid += nLeft + 1; - } - flowEnd(h); - break; - case 2: - flowTitle(h, "Range2[index]={first,nLeft}"); - for (i = 0; gid < h->top->sup.nGlyphs; i++) { - unsigned short id = read2(h); - unsigned short nLeft = read2(h); - flowBreak(h, "[%ld]={%hu,%hu}", i, id, nLeft); - gid += nLeft + 1; - } - flowEnd(h); - break; - } - } - } break; - } -} - -/* Dump FDSelect table. */ -static void dcf_DumpFDSelect(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_FDSelect) || region->begin == -1) - return; - - dumpTagLine(h, "FDSelect", region); - if (h->dcf.level < 1) - return; - else { - unsigned char fmt; - - bufSeek(h, region->begin); - fmt = read1(h); - fprintf(fp, "format =%u\n", fmt); - - switch (fmt) { - case 0: { - long gid; - flowTitle(h, "glyph[gid]=fd"); - for (gid = 0; gid < h->top->sup.nGlyphs; gid++) - flowBreak(h, "[%ld]=%u", gid, read1(h)); - flowEnd(h); - } break; - case 3: { - long i; - long nRanges = read2(h); - fprintf(fp, "nRanges=%ld\n", nRanges); - flowTitle(h, "Range3[index]={first,fd}"); - for (i = 0; i < nRanges; i++) { - unsigned short first = read2(h); - unsigned char fd = read1(h); - flowBreak(h, "[%ld]={%hu,%u}", i, first, fd); - } - flowEnd(h); - fprintf(fp, "sentinel=%hu\n", read2(h)); - } break; - default: - fatal(h, "invalid FDSelect format"); - } - } -} - -/* Dump FDArray INDEX table. */ -static void dcf_DumpFDArrayINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_FDArrayINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "FDArray INDEX", region, dumpDICTElement); -} - -/* Dump charstring element. */ -static void dumpCstrElement(txCtx h, long index, const ctlRegion *region) { - h->dcf.stemcnt = h->dcf.glyph.array[index]; - h->stack.cnt = 0; - flowElemBeg(h, index, 1); - dumpCstr(h, region, 0); - flowElemEnd(h); -} - -/* Dump CharString INDEX. */ -static void dcf_DumpCharStringsINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_CharStringsINDEX) || region->begin == -1) - return; - - if (h->arg.g.cnt > 0) { - /* Dump selected glyphs from INDEX */ - fprintf(h->dst.stm.fp, "### CharStrings (flattened)\n"); - if (h->dcf.level < 1) - return; - flowBeg(h); - fprintf(h->dst.stm.fp, "--- glyph[tag]={%s,path}\n", - (h->top->sup.flags & ABF_CID_FONT) ? "cid" : "name"); - h->dcf.flags |= DCF_Flatten; - callbackSubset(h); - flowEnd(h); - } else { - /* Dump entire INDEX */ - h->dcf.flags &= ~DCF_Flatten; - dumpINDEX(h, "CharStrings INDEX", region, dumpCstrElement); - } -} - -/* Dump Private DICT. */ -static void dcf_DumpPrivateDICT(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_PrivateDICT) || region->begin == -1) - return; - - dumpTagLine(h, "Private DICT", region); - if (h->dcf.level < 1) - return; - dumpDICT(h, region); -} - -/* Dump local charstring element. */ -static void dumpLocalElement(txCtx h, long index, const ctlRegion *region) { - h->dcf.stemcnt = h->dcf.fd->stemcnt.array[index]; - h->stack.cnt = 0; - if (h->dcf.level > 1) - index -= h->dcf.fd->bias; - flowElemBeg(h, index, 1); - dumpCstr(h, region, 0); - flowElemEnd(h); -} - -/* Dump Local Subr INDEX table. */ -static void dcf_DumpLocalSubrINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_LocalSubrINDEX) || region->begin == -1) - return; - - h->flags &= ~DCF_Flatten; - dumpINDEX(h, "Local Subr INDEX", region, dumpLocalElement); -} - -/* Initialize subr info from INDEX. */ -static void initSubrInfo(txCtx h, const ctlRegion *region, SubrInfo *info) { - if (region->begin == -1) { - /* Empty region */ - info->count = 0; - return; - } - - bufSeek(h, region->begin); - info->count = read2(h); - if (info->count == 0) - return; - - info->offSize = read1(h); - info->offset = region->begin + 2 + 1; - info->dataref = info->offset + (info->count + 1) * info->offSize - 1; - - dnaSET_CNT(info->stemcnt, info->count); - memset(info->stemcnt.array, 0, info->count); - - if (info->count < 1240) - info->bias = 107; - else if (info->count < 33900) - info->bias = 1131; - else - info->bias = 32768; -} - -/* Glyph begin callback to save count stems. */ -static int dcf_SaveStemCount(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - - h->dcf.fd = &h->dcf.local.array[info->iFD]; - h->dcf.stemcnt = 0; - h->stack.cnt = 0; - dumpCstr(h, &info->sup, 0); - h->dcf.glyph.array[info->tag] = (unsigned char)h->dcf.stemcnt; - - return ABF_SKIP_RET; -} - -/* Glyph charstring dump callback. */ -static int dcf_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - FILE *fp = h->dst.stm.fp; - - /* Customized flowElemBeg() */ - if (info->flags & ABF_GLYPH_CID) - fprintf(fp, "%s[%hu]={\\%hu,%s", h->dcf.sep, info->tag, info->cid, - (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "); - else - fprintf(fp, "%s[%hu]={%s,%s", h->dcf.sep, info->tag, info->gname.ptr, - (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "); - - h->dcf.fd = &h->dcf.local.array[info->iFD]; - h->dcf.stemcnt = 0; - h->stack.cnt = 0; - dumpCstr(h, &info->sup, 0); - - flowElemEnd(h); - - return ABF_SKIP_RET; -} - -/* Initialize charstring dump. */ -static void initCstrs(txCtx h, abfTopDict *top) { - long i; - int subrDump = h->dcf.flags & (DCF_GlobalSubrINDEX | DCF_LocalSubrINDEX); - - if (h->dcf.level < 1 || - !(subrDump || (h->dcf.flags & DCF_CharStringsINDEX))) - return; /* Nothing to do */ - - /* Initialize global subrs */ - initSubrInfo(h, - &cfrGetSingleRegions(h->cfr.ctx)->GlobalSubrINDEX, - &h->dcf.global); - - /* Initialize local subrs */ - dnaSET_CNT(h->dcf.local, top->FDArray.cnt); - for (i = 0; i < h->dcf.local.cnt; i++) - initSubrInfo(h, - &cfrGetRepeatRegions(h->cfr.ctx, i)->LocalSubrINDEX, - &h->dcf.local.array[i]); - - if (!subrDump && h->arg.g.cnt > 0) - return; - - /* Initialize glyph charstrings */ - dnaSET_CNT(h->dcf.glyph, top->sup.nGlyphs); - memset(h->dcf.glyph.array, 0, h->dcf.glyph.cnt); - - /* Save stem counts */ - h->dcf.flags |= (DCF_Flatten | DCF_SaveStemCnt); - h->cb.glyph.beg = dcf_SaveStemCount; + dnaDCL(GAFileInfo, glyphAliasSet); /* Array of dynamic arrays, one for each font. */ + CIDInfo cidinfo; /* info used to convert a non-CID font to a cID fontl. */ + unsigned short fileIndex; + unsigned short curGAEIndex; /* current index of the GAE entry Must be set in */ + bool seenNotdef; + int mode; /* the file type of the first font. Thsi is what sets the outptu font file type. */ + bool hintsOnly; /* copy hints only */ + bool compareNameOnly; /* compare hint dict to source font dict by name only. Not yet used - at the moment, mergeFonts compares teh fontName only. */ + struct + { + long cnt; /* ABF_EMPTY_ARRAY */ + long array[16]; + } XUID; +} MergeInfo; - if (cfrIterateGlyphs(h->cfr.ctx, &h->cb.glyph)) - fatal(h, NULL); +/* -------------------------------- Options -------------------------------- */ - h->cb.glyph.beg = dcf_GlyphBeg; - h->dcf.flags &= ~(DCF_Flatten | DCF_SaveStemCnt); -} +/* Note: options.h must be ascii sorted by option string */ -/* Begin new font. */ -static void dcf_BegFont(txCtx h, abfTopDict *top) { - long i; - const cfrSingleRegions *single; +enum /* Option enumeration */ +{ + opt_None, /* Not an option */ +#define DCL_OPT(string, index) index, +#include "options.h" + opt_Count +}; - if (h->src.type != src_OTF && h->src.type != src_CFF) - fatal(h, "-dcf mode: non-CFF font"); - if (h->dcf.flags & DCF_IS_CUBE) - h->maxOpStack = TX_MAX_OP_STACK_CUBE; - else - h->maxOpStack = T2_MAX_OP_STACK; - - if (h->arg.g.cnt > 0) { - /* Glyph subset specified; select CharStringsINDEX dump */ - if (!(h->dcf.flags & DCF_TableSelected)) - /* Clear default table selections */ - h->dcf.flags &= ~DCF_AllTables; - h->dcf.flags |= DCF_CharStringsINDEX; - if (h->dcf.level == 0) - /* Set useful dump level */ - h->dcf.level = 5; - } +static const char *options[] = + { +#undef DCL_OPT +#define DCL_OPT(string, index) string, +#include "options.h" +}; - h->src.offset = -BUFSIZ; - dstFileOpen(h, top); - - initCstrs(h, top); - - single = cfrGetSingleRegions(h->cfr.ctx); - dcf_DumpHeader(h, &single->Header); - dcf_DumpNameINDEX(h, &single->NameINDEX); - dcf_DumpTopDICTINDEX(h, &single->TopDICTINDEX); - dcf_DumpStringINDEX(h, &single->StringINDEX); - dcf_DumpGlobalSubrINDEX(h, &single->GlobalSubrINDEX); - dcf_DumpEncoding(h, &single->Encoding); - dcf_DumpCharset(h, &single->Charset); - dcf_DumpFDSelect(h, &single->FDSelect); - dcf_DumpFDArrayINDEX(h, &single->FDArrayINDEX); - dcf_DumpCharStringsINDEX(h, &single->CharStringsINDEX); - - for (i = 0; i < top->FDArray.cnt; i++) { - const cfrRepeatRegions *repeat = cfrGetRepeatRegions(h->cfr.ctx, i); - if (top->FDArray.cnt > 1 && - (h->dcf.flags & (DCF_PrivateDICT | DCF_LocalSubrINDEX))) - fprintf(h->dst.stm.fp, "--- FD[%ld]\n", i); - dcf_DumpPrivateDICT(h, &repeat->PrivateDICT); - h->dcf.fd = &h->dcf.local.array[i]; - dcf_DumpLocalSubrINDEX(h, &repeat->LocalSubrINDEX); - } -} +/* ------------------------------ Help Text -------------------------------- */ -/* End new font. */ -static void dcf_EndFont(txCtx h) { +static void afm_Help(txCtx h) { + static char *text[] = { +#include "afm.h" + }; + printText(ARRAY_LEN(text), text); } -/* End font set. */ -static void dcf_EndSet(txCtx h) { - dstFileClose(h); +static void cef_Help(txCtx h) { + static char *text[] = { +#include "cef.h" + }; + printText(ARRAY_LEN(text), text); } -/* Setup dcf mode. */ -static void dcf_SetMode(txCtx h) { - /* Set mode name */ - h->modename = "dcf"; - - /* h->dcf.flags is now set at the start of parseArgs - h->dcf.flags = DCF_AllTables|DCF_BreakFlowed; - h->dcf.level = 5; - */ - - /* Set library functions */ - h->dst.begset = dcf_BegSet; - h->dst.begfont = dcf_BegFont; - h->dst.endfont = dcf_EndFont; - h->dst.endset = dcf_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph.beg = dcf_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - - /* Set source library flag */ - /* These are now set at the start of parseArgs - h->cfr.flags = 0; - */ - - h->mode = mode_dcf; +static void cff_Help(txCtx h) { + static char *text[] = { +#include "cff.h" + }; + printText(ARRAY_LEN(text), text); } -/* Mode-specific help. */ static void dcf_Help(txCtx h) { - static char *text[] = - { + static char *text[] = { #include "dcf.h" - }; + }; printText(ARRAY_LEN(text), text); } -/* Parse -T argument. */ -static void dcf_ParseTableArg(txCtx h, char *arg) { - long save_flags = h->dcf.flags & DCF_BreakFlowed; - h->dcf.flags = 0; - for (;;) { - int c = *arg++; - switch (c) { - case '\0': - h->dcf.flags |= save_flags; - h->dcf.flags |= DCF_TableSelected; - return; - case 'h': - h->dcf.flags |= DCF_Header; - break; - case 'n': - h->dcf.flags |= DCF_NameINDEX; - break; - case 't': - h->dcf.flags |= DCF_TopDICTINDEX; - break; - case 's': - h->dcf.flags |= DCF_StringINDEX; - break; - case 'g': - h->dcf.flags |= DCF_GlobalSubrINDEX; - break; - case 'e': - h->dcf.flags |= DCF_Encoding; - break; - case 'C': - h->dcf.flags |= DCF_Charset; - break; - case 'f': - h->dcf.flags |= DCF_FDSelect; - break; - case 'F': - h->dcf.flags |= DCF_FDArrayINDEX; - break; - case 'c': - h->dcf.flags |= DCF_CharStringsINDEX; - break; - case 'p': - h->dcf.flags |= DCF_PrivateDICT; - break; - case 'l': - h->dcf.flags |= DCF_LocalSubrINDEX; - break; - case 'a': - if (strcmp(arg, "ll") == 0) { - h->dcf.flags = DCF_AllTables; - break; - } - /* Fall through */ - default: - fprintf(stderr, "%s: option -T invalid selector '%c' (ignored)\n", - h->progname, c); - } - } +static void dump_Help(txCtx h) { + static char *text[] = { +#include "dump.h" + }; + printText(ARRAY_LEN(text), text); } -/* ---------------------------- Subset Creation ---------------------------- */ - -/* Make random subset. */ -static void makeRandSubset(txCtx h, char *opt, char *arg) { - long i; - char *p; - float percent = (float)strtod(arg, &p); - if (*p != '\0' || percent < 0 || percent > 100) - fatal(h, "bad arg (%s)", opt); - - /* Initialize glyph list */ - dnaSET_CNT(h->subset.glyphs, h->top->sup.nGlyphs); - for (i = 0; i < h->subset.glyphs.cnt; i++) - h->subset.glyphs.array[i] = (unsigned short)i; - - /* Randomize glyph list by random permutation method */ - for (i = 0; i < h->subset.glyphs.cnt - 1; i++) { - long j = randrange(h->subset.glyphs.cnt - i); - unsigned short tmp = h->subset.glyphs.array[i]; - h->subset.glyphs.array[i] = h->subset.glyphs.array[i + j]; - h->subset.glyphs.array[i + j] = tmp; - } - - /* Trim array to specified percentage */ - h->subset.glyphs.cnt = (long)(percent / 100.0 * h->subset.glyphs.cnt + 0.5); - if (h->subset.glyphs.cnt == 0) - h->subset.glyphs.cnt = 1; +static void mtx_Help(txCtx h) { + static char *text[] = { +#include "mtx.h" + }; + printText(ARRAY_LEN(text), text); } -/* Make Font Dict subset. */ -static void makeFDSubset(txCtx h) { - long i, j; - - if (!(h->top->sup.flags & ABF_CID_FONT)) - fatal(h, "-fd specified for non-CID font"); - - getGlyphList(h); - - for (i = 0; i < h->src.glyphs.cnt; i++) { - abfGlyphInfo *info = h->src.glyphs.array[i]; - if (h->flags & SUBSET__EXCLUDE_OPT) { - unsigned int match = 0; - for (j = 0; j < h->fd.fdIndices.cnt; j++) { - if (info->iFD == h->fd.fdIndices.array[j]) { - match = 1; - break; - } - } - if (!match) - *dnaNEXT(h->subset.glyphs) = info->tag; - - } else { - for (j = 0; j < h->fd.fdIndices.cnt; j++) { - if (info->iFD == h->fd.fdIndices.array[j]) { - *dnaNEXT(h->subset.glyphs) = info->tag; - break; - } - } - } - } +static void path_Help(txCtx h) { + static char *text[] = { +#include "path.h" + }; + printText(ARRAY_LEN(text), text); +} - if (h->subset.glyphs.cnt == 0) - fatal(h, "no glyphs selected by -fd argument"); +static void pdf_Help(txCtx h) { + static char *text[] = { +#include "pdf.h" + }; + printText(ARRAY_LEN(text), text); } -/* Begin new glyph definition for gathering glyph info. */ -static int getExcludeGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - *dnaNEXT(h->src.exclude) = info; - if (info->flags & ABF_GLYPH_CID) { - if (info->cid == 0) - h->flags &= ~SUBSET_HAS_NOTDEF; - } else { - if (strcmp(info->gname.ptr, ".notdef") == 0) - h->flags &= ~SUBSET_HAS_NOTDEF; - } +static void ps_Help(txCtx h) { + static char *text[] = { +#include "ps.h" + }; + printText(ARRAY_LEN(text), text); +} - return ABF_SKIP_RET; +static void svg_Help(txCtx h) { + static char *text[] = { +#include "svg.h" + }; + printText(ARRAY_LEN(text), text); } -/* Compare glyphs by their tag. */ -static int CTL_CDECL cmpExcludeByTag(const void *first, const void *second) { - const abfGlyphInfo *a = *(abfGlyphInfo **)first; - const abfGlyphInfo *b = *(abfGlyphInfo **)second; - if (a->tag < b->tag) - return -1; - else if (a->tag > b->tag) - return 1; - else - return 0; +static void t1_Help(txCtx h) { + static char *text[] = { +#include "t1.h" + }; + printText(ARRAY_LEN(text), text); } -/* Match glyph by its tag. */ -static int CTL_CDECL matchExcludedByTag(const void *key, const void *value, - void *ctx) { - unsigned short a = *(unsigned short *)key; - unsigned short b = (*(abfGlyphInfo **)value)->tag; - if (a < b) - return -1; - else if (a > b) - return 1; - else - return 0; +static void ufo_Help(txCtx h) { + static char *text[] = { +#include "ufo.h" + }; + printText(ARRAY_LEN(text), text); } -static void invertSubset(txCtx h) { - long i; - long cnt; - - /* iterate over all glyphs such that h->exclude.array will be filled with tags of glyphs that match. */ - h->cb.saveGlyphBeg = h->cb.glyph.beg; - - /* Insert data gather function */ - h->cb.glyph.beg = getExcludeGlyphBeg; - h->cb.glyph.indirect_ctx = h; - h->flags |= SUBSET_SKIP_NOTDEF; - h->flags |= SUBSET_HAS_NOTDEF; /* This gets cleared by the getExcludeGlyphBeg if the .notdef is seen.*/ - callbackSubset(h); - h->flags &= ~SUBSET_SKIP_NOTDEF; - qsort(h->src.exclude.array, h->src.exclude.cnt, - sizeof(h->src.exclude.array[0]), cmpExcludeByTag); - - /* Restore saved function */ - h->cb.glyph.beg = h->cb.saveGlyphBeg; - - getGlyphList(h); - dnaSET_CNT(h->subset.glyphs, h->src.glyphs.cnt); - cnt = 0; - for (i = 0; i < h->src.glyphs.cnt; i++) { - size_t index; - unsigned short tag = h->src.glyphs.array[i]->tag; - if (!ctuLookup(&tag, h->src.exclude.array, h->src.exclude.cnt, - sizeof(h->src.exclude.array[0]), matchExcludedByTag, &index, h)) { - h->subset.glyphs.array[cnt] = tag; - cnt++; +/* --------------------------------- t1 mode ------------------------------- */ + +static bool applyCIDFontInfo(txCtx h, bool fontisCID) { + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; + if (mergeInfo->cidinfo.CIDFontName[0] != 0) /* if the users has specified a cidfontinfo file, override the first font's cid info. */ + { + fontisCID = 1; + h->top->sup.flags |= ABF_CID_FONT; + h->top->cid.CIDFontName.ptr = mergeInfo->cidinfo.CIDFontName; + h->top->FullName.ptr = mergeInfo->cidinfo.FullName; + h->top->FamilyName.ptr = mergeInfo->cidinfo.FamilyName; + h->top->Copyright.ptr = mergeInfo->cidinfo.AdobeCopyright; + if ((mergeInfo->cidinfo.AdobeCopyright[0] != ABF_EMPTY_ARRAY) || + (mergeInfo->cidinfo.Trademark[0] != ABF_EMPTY_ARRAY)) { + h->top->Copyright.ptr = ABF_UNSET_PTR; + h->top->Notice.ptr = ABF_UNSET_PTR; + } + if (mergeInfo->cidinfo.AdobeCopyright[0] != ABF_EMPTY_ARRAY) { + h->top->Notice.ptr = mergeInfo->cidinfo.AdobeCopyright; + } + if (mergeInfo->cidinfo.Trademark[0] != ABF_EMPTY_ARRAY) { + if (mergeInfo->cidinfo.AdobeCopyright[0] == ABF_EMPTY_ARRAY) + h->top->Notice.ptr = mergeInfo->cidinfo.Trademark; + else { + strcat(h->top->Notice.ptr, " "); + strcat(h->top->Notice.ptr, mergeInfo->cidinfo.Trademark); + } } + h->top->Weight.ptr = mergeInfo->cidinfo.Weight; + if (mergeInfo->cidinfo.isFixedPitch != ABF_UNSET_INT) + h->top->isFixedPitch = mergeInfo->cidinfo.isFixedPitch; + if (mergeInfo->cidinfo.fsType != ABF_UNSET_INT) + h->top->FSType = mergeInfo->cidinfo.fsType; + if (mergeInfo->XUID.cnt > 0) { + int x; + h->top->XUID.cnt = mergeInfo->XUID.cnt; + for (x = 0; x < mergeInfo->XUID.cnt; x++) + h->top->XUID.array[x] = mergeInfo->XUID.array[x]; + } + h->top->cid.Registry.ptr = mergeInfo->cidinfo.Registry; + h->top->cid.Ordering.ptr = mergeInfo->cidinfo.Ordering; + h->top->cid.Supplement = mergeInfo->cidinfo.Supplement; + h->top->cid.CIDFontVersion = mergeInfo->cidinfo.fontVersion; + h->top->version.ptr = NULL; } - dnaSET_CNT(h->subset.glyphs, cnt); + + return fontisCID; } -/* Make glyph subset. */ -static void prepSubset(txCtx h) { - /* In the ReadFont function, the reader library iterates through the - glyphs specified by the glyph list argument. What this function does is - to create the glyph list argument, according to which is specified of - the several options which request a subset. Note that even if the user - is excluding only one or two glyphs with the the -gx option, the glyph - list arg is still very short, as it uses ranges of GIDs. +static GAFileInfo *checkIFParentCIDCompatible(txCtx h, abfTopDict *local_top, bool parentIsCID, bool localFontIsCID) { + GAFileInfo *gaf = NULL; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; + unsigned short fileIndex = mergeInfo->fileIndex; - This function first creates a list of selected glyphs in the - h->subset.glyphs DNA. IF there are not such glyphs, it returns. Else, it - then proceeds to build the glyph list arg in makeSubsetArgList() */ + /* If there is a glyph alias file for the first font, make sure it is the right type. */ + if ((mergeInfo->glyphAliasSet.cnt > 0) && (mergeInfo->glyphAliasSet.array[fileIndex].gaEntrySet.cnt > 0)) { + gaf = &mergeInfo->glyphAliasSet.array[fileIndex]; + if (parentIsCID) { + int ifd; + if ((gaf->gaType == gafBothName) || (gaf->gaType == gafSrcCID)) + fatal(h, "Parent font not a CID font, but its matching glyph alias file maps the glyphs to names rather than CID values"); - if (h->flags & SHOW_NAMES) { - fflush(stdout); - if (h->top->sup.flags & ABF_CID_FONT) - fprintf(stderr, "--- CIDFontName: %s\n", - h->top->cid.CIDFontName.ptr); - else - fprintf(stderr, "--- FontName: %s\n", - h->top->FDArray.array[0].FontName.ptr); - } + for (ifd = 0; ifd < local_top->FDArray.cnt; ifd++) { + if (gaf->FontName[0] != 0) /* if the GA file supplies an alternate FontName, use it .*/ + local_top->FDArray.array[ifd].FontName.ptr = gaf->FontName; - h->flags &= ~SUBSET_HAS_NOTDEF; - h->src.glyphs.cnt = 0; - h->src.exclude.cnt = 0; - h->subset.glyphs.cnt = 0; - - /* Make subset glyph list */ - if (h->arg.p != NULL) - makeRandSubset(h, "-p", h->arg.p); - else if (h->arg.P != NULL) - makeRandSubset(h, "-P", h->arg.P); - else if (h->fd.fdIndices.cnt > 0) - makeFDSubset(h); - else if (h->flags & SUBSET__EXCLUDE_OPT) - invertSubset(h); - else { - if (h->flags & SUBSET_OPT) { - if (h->flags & PRESERVE_GID) { - getGlyphList(h); - parseSubset(h, callbackPreserveGlyph); - h->src.glyphs.array[0]->flags |= PRESERVE_CHARSTRING; - h->arg.g.cnt = 0; - h->cb.save = h->cb.glyph; - h->cb.glyph = preserveGlyphCallbacks; - h->cb.glyph.direct_ctx = h; + if (gaf->LanguageGroup != -1) /* if the GA file supplies a LanguageGroup, use it .*/ + local_top->FDArray.array[ifd].Private.LanguageGroup = gaf->LanguageGroup; } + } else { + if ((gaf->gaType == gafBothCID) || (gaf->gaType == gafDstCID)) + fatal(h, "Parent font is not a CID font, but its matching glyph alias file maps the glyph names to CID values."); } - } - - if (h->subset.glyphs.cnt == 0) - return; /* no subset */ - - /* Make subset arg list */ - makeSubsetArgList(h); - if ((h->mode == mode_cff || h->mode == mode_t1 || h->mode == mode_svg || h->mode == mode_ufow) && (h->flags & SHOW_NAMES)) { - char *p; - char *q; - long i; - - /* Print subset */ - fprintf(stderr, - "--- subset:\n" - "SRC font %s\n" - "SRC glyphs %ld\n" - "DST font %s\n" - "DST glyphs %ld\n", - h->src.stm.filename, h->top->sup.nGlyphs, - h->dst.stm.filename, h->subset.glyphs.cnt); - p = ""; - q = h->arg.g.substrs; - for (i = 0; i < h->arg.g.cnt; i++) { - fprintf(stderr, "%s%s", p, q); - p = ","; - q += strlen(q) + 1; + } else { + if (parentIsCID != localFontIsCID) { + if (parentIsCID) + fatal(h, "First font is CID, current font is name-keyed."); + else + fatal(h, "First font is name-keyed, current font is CID."); } - fprintf(stderr, "\n"); } + return gaf; } -/* Callback glyph according to type technology and selector. */ -static void callbackGlyph(txCtx h, int type, unsigned short id, char *name) { - switch (h->src.type) { - case src_Type1: - switch (type) { - case sel_by_tag: - (void)t1rGetGlyphByTag(h->t1r.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - (void)t1rGetGlyphByCID(h->t1r.ctx, id, &h->cb.glyph); - break; - case sel_by_name: - (void)t1rGetGlyphByName(h->t1r.ctx, name, &h->cb.glyph); - break; - } - break; - case src_OTF: - case src_CFF: - switch (type) { - case sel_by_tag: - (void)cfrGetGlyphByTag(h->cfr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - (void)cfrGetGlyphByCID(h->cfr.ctx, id, &h->cb.glyph); - break; - case sel_by_name: - (void)cfrGetGlyphByName(h->cfr.ctx, name, &h->cb.glyph); - break; - } - break; - case src_TrueType: - switch (type) { - case sel_by_tag: - (void)ttrGetGlyphByTag(h->ttr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - /* Invalid; do nothing */ - break; - case sel_by_name: - (void)ttrGetGlyphByName(h->ttr.ctx, name, &h->cb.glyph); - break; - } - break; - - case src_SVG: - switch (type) { - case sel_by_tag: - (void)svrGetGlyphByTag(h->svr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - fatal(h, "Cannot read glyphs from SVG fonts by CID "); - break; - case sel_by_name: - (void)svrGetGlyphByName(h->svr.ctx, name, &h->cb.glyph); - break; - } - break; - case src_UFO: - switch (type) { - case sel_by_tag: - (void)ufoGetGlyphByTag(h->ufr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - fatal(h, "Cannot read glyphs from UFO fonts by CID "); - break; - case sel_by_name: - (void)ufoGetGlyphByName(h->ufr.ctx, name, &h->cb.glyph); - break; - } - break; - } -} +static void mergeFDArray(txCtx h, abfTopDict *local_top) { + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; + dnaSET_CNT(mergeInfo->newiFDArray, local_top->FDArray.cnt); + /* This will merge the new font's new FDArray into the output font's FDArray, + and will fill in the mergeInfo->newiFDArray.array */ + /* Note that fonts from different hint dirs will end up in different + FDArray dicts, because the FDArray dicts only compare as equal if + the font Dict's FontName match */ + mergeInfo->mergeFDArray(h->cb.glyph.direct_ctx, local_top, mergeInfo->newiFDArray.array); -/* Add .notdef glyph to destination font. If it's already added it will be skipped. */ -static void addNotdef(txCtx h) { - if (((h->src.type == src_Type1) || (h->src.type == src_SVG) || (h->src.type == src_UFO)) && !(h->top->sup.flags & ABF_CID_FONT)) - callbackGlyph(h, sel_by_name, 0, ".notdef"); - else - callbackGlyph(h, sel_by_tag, 0, NULL); + /* Usually happens when last glyph in the font is a duplicate; this leaves + an error state set in the cff write context, that is not cleared until + the next call to glyphBegin. */ + if (mergeInfo->newiFDArray.array[0] < 0) + fatal(h, "Error. Bad return from attempt to merge font dict for fonts %s.", h->src.stm.filename); } -/* Filter glyphs using the glyph list pararmeter. */ -static void callbackSubset(txCtx h) { - parseSubset(h, callbackGlyph); - if (!((SUBSET_SKIP_NOTDEF & h->flags) || (SUBSET_HAS_NOTDEF & h->flags))) { - switch (h->mode) { - case mode_cff: - addNotdef(h); - break; - case mode_t1: - if (!(h->t1w.flags & T1W_TYPE_ADDN) && !(h->t1w.options & T1W_DECID)) - addNotdef(h); - break; - } - } -} +/* ---------------------------- Subset Creation ---------------------------- */ static void callbackMergeGASubset(txCtx h, GAFileInfo *gaf) { int seltype; int i; - int numGAEEntries = gaf->gaEntrySet.cnt; + long numGAEEntries = gaf->gaEntrySet.cnt; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; if ((gaf->gaType == gafSrcCID) || (gaf->gaType == gafBothCID)) seltype = sel_by_cid; @@ -5089,7 +322,7 @@ static void callbackMergeGASubset(txCtx h, GAFileInfo *gaf) { i = 0; while (i < numGAEEntries) { GAEntry *gae; - h->mergeInfo.curGAEIndex = i; + mergeInfo->curGAEIndex = i; gae = dnaINDEX(gaf->gaEntrySet, i); callbackGlyph(h, seltype, (unsigned short)gae->srcCID, gae->srcName); i++; @@ -5113,48 +346,14 @@ static void updateFontBBox(abfTopDict *top, abfTopDict *mergeTop) { topBBOX[3] = mergeBBOX[3]; } -/* Read font with t1read library. */ -static void t1rReadFont(txCtx h, long origin) { - if (h->t1r.ctx == NULL) { - /* Initialize library */ - h->t1r.ctx = t1rNew(&h->cb.mem, &h->cb.stm, T1R_CHECK_ARGS); - if (h->t1r.ctx == NULL) - fatal(h, "(t1r) can't init lib"); - } - - if (h->flags & SUBSET_OPT && h->mode != mode_dump) - h->t1r.flags |= T1R_UPDATE_OPS; /* Convert seac for subsets */ - - if (h->flags & NO_UDV_CLAMPING) - h->t1r.flags |= T1R_NO_UDV_CLAMPING; - - if (t1rBegFont(h->t1r.ctx, h->t1r.flags, origin, &h->top, getUDV(h))) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (t1rIterateGlyphs(h->t1r.ctx, &h->cb.glyph)) - fatal(h, NULL); - } - - h->dst.endfont(h); - - if (t1rEndFont(h->t1r.ctx)) - fatal(h, NULL); -} - /* Merge font with t1read library. */ -static void t1rMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *srcCtx) { - boolean parentIsCID = 0; +static void t1rMergeFont(txCtx h, long origin, bool isFirstFont, sourceCtx *srcCtx) { + bool parentIsCID = 0; GAFileInfo *gaf = NULL; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; if (isFirstFont) { - h->mergeInfo.mode = mode_t1; + mergeInfo->mode = mode_t1; if (h->t1r.ctx == NULL) { /* Initialize library */ h->t1r.ctx = t1rNew(&h->cb.mem, &h->cb.stm, T1R_CHECK_ARGS); @@ -5171,7 +370,7 @@ static void t1rMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s fatal(h, NULL); parentIsCID = h->top->sup.flags & ABF_CID_FONT; - if (h->mergeInfo.hintsOnly && parentIsCID) + if (mergeInfo->hintsOnly && parentIsCID) fatal(h, "Error. The -hints option cannot be used with CID fonts."); /* Apply the CIDFontInfo file, if oen was specified. */ @@ -5186,7 +385,7 @@ static void t1rMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* provide data for mergeGlyphBegin function, which is patched over the &h->cb.glyph.beg() function ptr */ - h->mergeInfo.srcTopDict = h->top; + mergeInfo->srcTopDict = h->top; if (parentIsCID) mergeFDArray(h, h->top); @@ -5212,10 +411,10 @@ static void t1rMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s gaf = NULL; /* end if is first font */ } else { - unsigned int fileIndex = h->mergeInfo.fileIndex; + unsigned int fileIndex = mergeInfo->fileIndex; t1rCtx local_t1r_ctx; abfTopDict *local_top = NULL; - boolean localFontIsCID = 0; + bool localFontIsCID = 0; parentIsCID = h->top->sup.flags & ABF_CID_FONT; local_t1r_ctx = t1rNew(&h->cb.mem, &h->cb.stm, T1R_CHECK_ARGS); @@ -5236,7 +435,7 @@ static void t1rMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s fatal(h, NULL); localFontIsCID = local_top->sup.flags & ABF_CID_FONT; - if (h->mergeInfo.hintsOnly) { + if (mergeInfo->hintsOnly) { int k; if (fileIndex > 1) fatal(h, "Error. When merging hint dict only, only two font arguments are allowed, the source font for the hints and the source font for the glyphs.."); @@ -5254,7 +453,7 @@ static void t1rMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* provide data for mergeGlyphBegin function, which is patched over the &h->cb.glyph.beg() function ptr */ - h->mergeInfo.srcTopDict = local_top; + mergeInfo->srcTopDict = local_top; if (parentIsCID) mergeFDArray(h, local_top); @@ -5271,56 +470,28 @@ static void t1rMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* h->dst.endfont is called after the all fonts have been merged, by doMergeFontSet */ - if (t1rEndFont(local_t1r_ctx)) - fatal(h, NULL); - - gaf = NULL; - } /* end of second or later font */ - - /* the accumulated local_t1r_ctx's are freed in doMergeFontSet */ -} - -/* ----------------------------- svread Library ---------------------------- */ - -/* Read font with svread library. */ -static void svrReadFont(txCtx h, long origin) { - if (h->svr.ctx == NULL) { - /* Initialize library */ - h->svr.ctx = svrNew(&h->cb.mem, &h->cb.stm, SVR_CHECK_ARGS); - if (h->svr.ctx == NULL) - fatal(h, "(svr) can't init lib"); - } - - if (svrBegFont(h->svr.ctx, h->svr.flags, &h->top)) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (svrIterateGlyphs(h->svr.ctx, &h->cb.glyph)) + if (t1rEndFont(local_t1r_ctx)) fatal(h, NULL); - } - h->dst.endfont(h); + gaf = NULL; + } /* end of second or later font */ - if (svrEndFont(h->svr.ctx)) - fatal(h, NULL); + /* the accumulated local_t1r_ctx's are freed in doMergeFontSet */ } +/* ----------------------------- svread Library ---------------------------- */ + /* Merge font with svread library. */ -static void svrMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *srcCtx) { +static void svrMergeFont(txCtx h, long origin, bool isFirstFont, sourceCtx *srcCtx) { GAFileInfo *gaf = NULL; if (isFirstFont) fatal(h, "An SVG font cannot be the first font in a merge list - it doesn't have a complete top dict."); else { svrCtx local_svr_ctx; abfTopDict *local_top = NULL; - boolean parentIsCID = h->top->sup.flags & ABF_CID_FONT; - boolean localFontIsCID = 0; + bool parentIsCID = h->top->sup.flags & ABF_CID_FONT; + bool localFontIsCID = 0; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; local_svr_ctx = svrNew(&h->cb.mem, &h->cb.stm, SVR_CHECK_ARGS); @@ -5342,7 +513,7 @@ static void svrMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* provide data for mergeGlyphBegin function, which is patched over the &h->cb.glyph.beg() function ptr */ - h->mergeInfo.srcTopDict = local_top; + mergeInfo->srcTopDict = local_top; if (parentIsCID) mergeFDArray(h, local_top); @@ -5372,42 +543,15 @@ static void svrMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* ----------------------------- ufo read Library ---------------------------- */ -/* Read font with ufo rread library. */ -static void ufoReadFont(txCtx h, long origin) { - if (h->ufr.ctx == NULL) { - /* Initialize library */ - h->ufr.ctx = ufoNew(&h->cb.mem, &h->cb.stm, UFO_CHECK_ARGS); - if (h->ufr.ctx == NULL) - fatal(h, "(ufr) can't init lib"); - } - - if (ufoBegFont(h->ufr.ctx, h->ufr.flags, &h->top, h->ufr.altLayerDir)) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (ufoIterateGlyphs(h->ufr.ctx, &h->cb.glyph)) - fatal(h, NULL); - } - - h->dst.endfont(h); - - if (ufoEndFont(h->ufr.ctx)) - fatal(h, NULL); -} - /* Merge font with uforead library. */ -static void ufoMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *srcCtx) { +static void ufoMergeFont(txCtx h, long origin, bool isFirstFont, sourceCtx *srcCtx) { GAFileInfo *gaf = NULL; - boolean parentIsCID = 0; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; if (isFirstFont) { - h->mergeInfo.mode = mode_ufow; + bool parentIsCID = 0; + + mergeInfo->mode = mode_ufow; if (h->ufr.ctx == NULL) { /* Initialize library */ h->ufr.ctx = ufoNew(&h->cb.mem, &h->cb.stm, UFO_CHECK_ARGS); @@ -5436,7 +580,7 @@ static void ufoMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* provide data for mergeGlyphBegin function, which is patched over the &h->cb.glyph.beg() function ptr */ - h->mergeInfo.srcTopDict = h->top; + mergeInfo->srcTopDict = h->top; if (parentIsCID) mergeFDArray(h, h->top); @@ -5462,8 +606,8 @@ static void ufoMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s } else { ufoCtx local_ufr_ctx; abfTopDict *local_top = NULL; - boolean parentIsCID = h->top->sup.flags & ABF_CID_FONT; - boolean localFontIsCID; + bool parentIsCID = h->top->sup.flags & ABF_CID_FONT; + bool localFontIsCID; local_ufr_ctx = ufoNew(&h->cb.mem, &h->cb.stm, UFO_CHECK_ARGS); @@ -5484,7 +628,7 @@ static void ufoMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* provide data for mergeGlyphBegin function, which is patched over the &h->cb.glyph.beg() function ptr */ - h->mergeInfo.srcTopDict = local_top; + mergeInfo->srcTopDict = local_top; if (parentIsCID) mergeFDArray(h, local_top); @@ -5513,189 +657,10 @@ static void ufoMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* ---------------------------- cffread Library ---------------------------- */ -/* Read format 12 Unicode cmap. Assumes format field already read. */ -static void readCmap12(txCtx h) { - unsigned long nGroups; - unsigned long i; - - /* Skip reserved, language, and length fields */ - (void)read2(h); - (void)read4(h); - (void)read4(h); - - nGroups = read4(h); - for (i = 0; i < nGroups; i++) { - unsigned long startCharCode = read4(h); - unsigned long endCharCode = read4(h); - unsigned long startGlyphId = read4(h); - - while (startCharCode <= endCharCode) { - if (startGlyphId >= (unsigned long)h->top->sup.nGlyphs) - return; - h->cmap.encoding.array[startGlyphId++] = startCharCode++; - } - } -} - -/* Read format 4 Unicode cmap. */ -static void readCmap(txCtx h, size_t offset) { - unsigned short segCount; - cmapSegment4 *segment; - cmapSegment4 *segmentEnd; - - /* Check format */ - bufSeek(h, (long)offset); - switch (read2(h)) { - case 4: - break; - case 12: - readCmap12(h); - return; - default: - return; - } - - /* Read format 4 subtable; skip length and language fields */ - (void)read2(h); /* length */ - (void)read2(h); /* language */ - - /* Read segment count and allocate */ - segCount = read2(h) / 2; - dnaSET_CNT(h->cmap.segment, segCount); - segmentEnd = &h->cmap.segment.array[segCount]; - - /* Skip binary search fields */ - (void)read2(h); /* searchRange */ - (void)read2(h); /* entrySelector */ - (void)read2(h); /* rangeShift */ - - /* Read segment arrays */ - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) - segment->endCode = read2(h); - (void)read2(h); /* Skip password */ - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) - segment->startCode = read2(h); - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) - segment->idDelta = sread2(h); - offset = h->src.next - h->src.buf + h->src.offset; - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) { - unsigned short idRangeOffset = read2(h); - segment->idRangeOffset = - (idRangeOffset == 0) ? 0 : (unsigned long)(offset + idRangeOffset); - offset += 2; - } - - /* Derive mapping from segments */ - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) { - unsigned short gid; - unsigned long code; - - if (segment->idRangeOffset == 0) { - gid = segment->idDelta + segment->startCode; - for (code = segment->startCode; code <= segment->endCode; ++code) { - if (code == 0xffff || gid >= h->cmap.encoding.cnt) - break; - if (gid != 0 && h->cmap.encoding.array[gid] == ABF_GLYPH_UNENC) - h->cmap.encoding.array[gid] = (unsigned short)code; - ++gid; - } - } else { - bufSeek(h, segment->idRangeOffset); - for (code = segment->startCode; code <= segment->endCode; ++code) { - gid = read2(h); - if (code != 0xffff && gid != 0 && gid < h->cmap.encoding.cnt && - h->cmap.encoding.array[gid] == ABF_GLYPH_UNENC) - h->cmap.encoding.array[gid] = (unsigned short)code; - } - } - } -} - -/* Begin new glyph definition for gathering glyph info. */ -static int otfGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - unsigned long code = h->cmap.encoding.array[info->tag]; - if (code != ABF_GLYPH_UNENC) { - info->flags |= ABF_GLYPH_UNICODE; - info->encoding.code = code; - } - return h->cb.saveGlyphBeg(cb, info); -} - -/* Prepare to process OTF font. */ -static void prepOTF(txCtx h) { - long unioff; - long winoff; - unsigned short uniscore; - unsigned short winscore; - unsigned short version; - unsigned short nEncodings; - unsigned short i; - sfrTable *table; - - /* Install new callback */ - h->cb.saveGlyphBeg = h->cb.glyph.beg; - h->cb.glyph.beg = otfGlyphBeg; - h->cb.glyph.indirect_ctx = h; - - /* Prepare encoding array */ - dnaSET_CNT(h->cmap.encoding, h->top->sup.nGlyphs); - for (i = 0; i < h->cmap.encoding.cnt; i++) - h->cmap.encoding.array[i] = ABF_GLYPH_UNENC; - - /* Get cmap table */ - table = sfrGetTableByTag(h->ctx.sfr, CTL_TAG('c', 'm', 'a', 'p')); - if (table == NULL) - fatal(h, "OTF: can't find cmap"); - - /* Force seek */ - h->src.offset = LONG_MAX; - bufSeek(h, table->offset); - - /* Read and check version */ - version = read2(h); - if (version != 0) - fatal(h, "cmap: bad version"); - - /* Search for Unicode and Windows subtables */ - unioff = 0; - uniscore = 0; - winoff = 0; - winscore = 0; - nEncodings = read2(h); - for (i = 0; i < nEncodings; i++) { - /* Read encoding entry */ - unsigned short platformId = read2(h); - unsigned short platspecId = read2(h); - unsigned long suboff = read4(h); - - /* Select table */ - switch (platformId) { - case 0: /* Unicode platform */ - if (unioff == 0 || uniscore < platspecId) { - unioff = table->offset + suboff; - uniscore = platspecId; - } - break; - case 3: /* Windows platform */ - if ((platspecId == 1 || /* Unicode */ - platspecId == 10) && /* UCS-4 */ - (winoff == 0 || winscore < platspecId)) { - winoff = table->offset + suboff; - winscore = platspecId; - } - break; - } - } - - if (unioff != 0) - readCmap(h, unioff); /* Prefer Unicode platform... */ - else if (winoff != 0) - readCmap(h, winoff); /* ...to Windows platform */ -} - /* Read font with cffread library. */ static void cfrReadFont(txCtx h, long origin, int ttcIndex) { + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; + if (h->cfr.ctx == NULL) { h->cfr.ctx = cfrNew(&h->cb.mem, &h->cb.stm, CFR_CHECK_ARGS); if (h->cfr.ctx == NULL) @@ -5729,8 +694,8 @@ static void cfrReadFont(txCtx h, long origin, int ttcIndex) { } } /* CFF does not contain fsType, so I need to set it again is the source is CFF */ - if (h->mergeInfo.cidinfo.fsType != ABF_UNSET_INT) { - h->top->FSType = h->mergeInfo.cidinfo.fsType; + if (mergeInfo->cidinfo.fsType != ABF_UNSET_INT) { + h->top->FSType = mergeInfo->cidinfo.fsType; } h->dst.endfont(h); @@ -5739,12 +704,13 @@ static void cfrReadFont(txCtx h, long origin, int ttcIndex) { } /* Merge font with cffread library. */ -static void cfrMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *srcCtx) { - boolean parentIsCID = 0; +static void cfrMergeFont(txCtx h, long origin, bool isFirstFont, sourceCtx *srcCtx) { + bool parentIsCID = 0; GAFileInfo *gaf = NULL; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; if (isFirstFont) { - h->mergeInfo.mode = mode_cff; + mergeInfo->mode = mode_cff; if (h->cfr.ctx == NULL) /* In this case, we must be processing the first font. */ { @@ -5775,7 +741,7 @@ static void cfrMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* provide data for mergeGlyphBegin function, which is patched over the &h->cb.glyph.beg() function ptr */ - h->mergeInfo.srcTopDict = h->top; + mergeInfo->srcTopDict = h->top; if (parentIsCID) mergeFDArray(h, h->top); h->cb.glyph.indirect_ctx = h; @@ -5799,7 +765,7 @@ static void cfrMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s } else { cfrCtx local_cfr_ctx; abfTopDict *local_top = NULL; - boolean localFontIsCID = 0; + bool localFontIsCID = 0; parentIsCID = h->top->sup.flags & ABF_CID_FONT; local_cfr_ctx = cfrNew(&h->cb.mem, &h->cb.stm, CFR_CHECK_ARGS); @@ -5823,7 +789,7 @@ static void cfrMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* If there is a glyph alias file for the first font, make sure it is the right type, or that baoth fonts are name keyed or CID. */ gaf = checkIFParentCIDCompatible(h, local_top, parentIsCID, localFontIsCID); - h->mergeInfo.srcTopDict = local_top; + mergeInfo->srcTopDict = local_top; if (parentIsCID) mergeFDArray(h, local_top); updateFontBBox(h->top, local_top); @@ -5844,607 +810,6 @@ static void cfrMergeFont(txCtx h, long origin, boolean isFirstFont, sourceCtx *s /* the accumulated local_cfr_ctx's are freed in doMergeFontSet */ } -/* ----------------------------- ttread Library ---------------------------- */ - -/* Read font with ttread library. */ -static void ttrReadFont(txCtx h, long origin, int iTTC) { - if (h->ttr.ctx == NULL) { - h->ttr.ctx = ttrNew(&h->cb.mem, &h->cb.stm, TTR_CHECK_ARGS); - if (h->ttr.ctx == NULL) - fatal(h, "(ttr) can't init lib"); - } - - if (ttrBegFont(h->ttr.ctx, h->ttr.flags, origin, iTTC, &h->top)) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (ttrIterateGlyphs(h->ttr.ctx, &h->cb.glyph)) - fatal(h, NULL); - } - - h->dst.endfont(h); - - if (ttrEndFont(h->ttr.ctx)) - fatal(h, NULL); -} - -/* ---------------- Platform-Specific Font Wrapper Callbacks --------------- */ - -/* Prepare next segment of font data. */ -static size_t nextseg(txCtx h, char **ptr) { - size_t srcleft = h->src.end - h->src.next; - - if (srcleft == 0) { - /* Refill empty source buffer */ - fillbuf(h, h->src.offset + h->src.length); - srcleft = h->src.length; - } - - *ptr = h->src.next; - if (srcleft <= h->seg.left) { - /* Return full buffer */ - h->seg.left -= srcleft; - h->src.next += srcleft; - } else { - /* Return partial buffer */ - srcleft = h->seg.left; - h->src.next += h->seg.left; - h->seg.left = 0; - } - - return srcleft; -} - -/* Refill input buffer from PFB stream. */ -static size_t PFBRefill(txCtx h, char **ptr) { - while (h->seg.left == 0) { - /* New segment; read segment header */ - int escape = read1(h); - int type = read1(h); - - /* Check segment header */ - if (escape != 128 || (type != 1 && type != 2 && type != 3)) - fatal(h, "bad PFB segment type"); - - if (type == 3) { - /* EOF */ - *ptr = NULL; - return 0; - } else { - /* Read segment length (little endian) */ - h->seg.left = read1(h); - h->seg.left |= read1(h) << 8; - h->seg.left |= (long)read1(h) << 16; - h->seg.left |= (long)read1(h) << 24; - } - } - - return nextseg(h, ptr); -} - -/* Refill input buffer from POST resource stream. */ -static size_t POSTRefill(txCtx h, char **ptr) { - while (h->seg.left == 0) { - /* New POST resource */ - int type; - - /* Read length and type */ - h->seg.left = read4(h) - 2; - - type = read1(h); - (void)read1(h); /* Discard padding byte (not documented) */ - - /* Process resource data */ - switch (type) { - case 0: - /* Comment; skip data */ - bufSeek(h, h->src.offset + (long)h->seg.left); - h->seg.left = 0; - break; - case 1: /* ASCII */ - case 2: /* Binary */ - break; - case 3: /* End-of-file */ - case 5: /* End-of-data */ - *ptr = NULL; - return 0; - case 4: /* Data in data fork; unsupported */ - default: /* Unknown POST type */ - fatal(h, "bad POST resource type"); - } - } - - return nextseg(h, ptr); -} - -/* ----------------------------- sfnt Handling ----------------------------- */ - -/* Add font record to list. */ -static void addFont(txCtx h, int type, int iTTC, long offset) { - FontRec *rec = dnaNEXT(h->fonts); - rec->type = type; - rec->iTTC = iTTC; - rec->offset = offset; -} - -static void addTTCFont(txCtx h, int ttcIndex, long origin, long offset) { - ctlTag version; - int result; - result = sfrBegFont(h->ctx.sfr, &h->src.stm, offset, &version); - switch (result) { - case sfrSuccess: { - switch (version) { - case sfr_v1_0_tag: - case sfr_true_tag: - /* TrueType */ - addFont(h, src_TrueType, ttcIndex, origin); - break; - case sfr_OTTO_tag: - /* OTF */ - addFont(h, src_OTF, ttcIndex, origin); - break; - default: - fatal(h, "(sfr) %s", sfrErrStr(sfrErrBadSfnt)); - } - break; - case sfrErrBadSfnt: - break; - default: - fatal(h, "(sfr) %s", sfrErrStr(result)); - } - } -} - -/* Add TrueType Collection font. */ -static void addTTC(txCtx h, long origin) { - /* sfrGetNextTTCOffset() returns 0 when it is asked to get the next offset - after the last real font, so it serves effectively as a test for - iterating through all the fonts in the TTC. */ - long i; - long offset; - - if (h->arg.i != NULL) { - int j; - i = strtol(h->arg.i, NULL, 0); - if (i < 0) - fatal(h, "bad TTC index (-i)"); - - for (j = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); j++) { - if (j < i) - continue; - addTTCFont(h, i, origin, offset); - break; - } - - } else if (h->flags & EVERY_FONT) { - /* -y option; add whole collection */ - for (i = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); i++) { - addTTCFont(h, i, origin, offset); - } - } else { - /* Dump TTC index and quit */ - printf( - "### TrueType Collection (TTC)\n" - "\n" - "--- TableDirectory[index]=offset\n"); - for (i = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); i++) - printf("[%ld]=%08lx\n", i, offset); - - printf( - "\n" - "Re-run %s and select a single table in the directory\n" - "with the -i option or every table with the -y option.\n", - h->progname); - exit(1); - } -} - -/* Read 4-byte signature and try to match against sfnt. */ -static void readsfnt(txCtx h, long origin) { - /* Note that 'origin' is the offset from the file to the beginning of the - font data for either a TTC, OTF or TTF font. It is NOT the offset to an SFNT-based font - in a TTC. The sfr functions access tables in an sfnt-based font at an - offset equal to the table offset from the sfnt table directory plus the 'origin' offset. - in - */ - enum { - CID__HDR_SIZE = 4 * 4 + 3 * 2, /* 'CID ' table header size */ - TYP1_HDR_SIZE = 5 * 4 + 2 * 2 /* 'TYP1' table header size */ - }; - ctlTag version; - sfrTable *table; - int result; - - if (h->ctx.sfr == NULL) { - /* Initialize library */ - h->ctx.sfr = - sfrNew(&h->cb.mem, &h->cb.stm, SFR_CHECK_ARGS); - if (h->ctx.sfr == NULL) - fatal(h, "(sfr) can't init lib"); - } - - result = sfrBegFont(h->ctx.sfr, &h->src.stm, origin, &version); - switch (result) { - case sfrSuccess: - switch (version) { - case sfr_v1_0_tag: - case sfr_true_tag: - /* TrueType */ - addFont(h, src_TrueType, 0, origin); - break; - case sfr_OTTO_tag: - /* OTF */ - addFont(h, src_OTF, 0, origin); - break; - case sfr_typ1_tag: - /* GX or sfnt-wrapped CID font */ - table = sfrGetTableByTag(h->ctx.sfr, CID__); - if (table != NULL) - addFont(h, src_Type1, 0, table->offset + CID__HDR_SIZE); - else { - table = sfrGetTableByTag(h->ctx.sfr, TYP1_); - if (table != NULL) - addFont(h, src_Type1, 0, table->offset + TYP1_HDR_SIZE); - } - break; - case sfr_ttcf_tag: - /* TrueType Collection */ - addTTC(h, origin); - break; - } - break; - case sfrErrBadSfnt: - break; - default: - fatal(h, "(sfr) %s", sfrErrStr(result)); - } - - result = sfrEndFont(h->ctx.sfr); - if (result) - fatal(h, "(sfr) %s", sfrErrStr(result)); -} - -/* ------------------------- Macintosh Resource Map ------------------------ */ - -/* Print Macintosh resource map. */ -static void printResMap(txCtx h, long origin) { - long i; - printf( - "### Macintosh Resource Fork (%08lx)\n" - "\n" - "Type Id Attr Offset Length Name\n" - "---- ----- ---- -------- -------- --------\n", - origin); - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - printf("%c%c%c%c %5hu %02hhx %08lx %08lx %s\n", - (int)(res->type >> 24 & 0xff), (int)(res->type >> 16 & 0xff), - (int)(res->type >> 8 & 0xff), (int)(res->type & 0xff), - res->id, res->attrs, res->offset, res->length, - (res->name == 0xffff) ? "--none--" : &h->res.names.array[res->name]); - } -} - -/* Print resource map and re-run note for user and quit. */ -static void printNote(txCtx h, long origin) { - printf( - "Macintosh FFIL with multiple sfnt resources:\n" - "\n"); - printResMap(h, origin); - printf( - "\n" - "Re-run %s and select a single sfnt resource with the\n" - "-i option or every sfnt resource with the -y option.\n", - h->progname); - exit(1); -} - -/* Read and process Macintosh resource map. */ -static void doResMap(txCtx h, long origin) { - /* Macintosh resource structures */ - struct - { - unsigned long mapOffset; - } header; - struct - { - unsigned short attrs; - unsigned short typeListOffset; - unsigned short nameListOffset; - } map; -#if 0 - /* Included for reference only */ - struct - { - unsigned long type; - unsigned short cnt; - unsigned short refListOffset; - } type; - struct - { - unsigned short id; - unsigned short nameOffset; - char attrs; - char dataOffset[3]; - unsigned long reserved; - } refList; -#endif - enum { - HEADER_SIZE = 256, /* Resource header size */ - MAP_SKIP_SIZE = 16 + 4 + 2 * 2, /* Skip to typeListOffset */ - REFLIST_SKIP_SIZE = 2 * 2 + 1 /* Skip to dataOffset */ - }; - long typeListCnt; - long i; - long j; - - /* Read header (4-byte header.dataOffset already read) */ - header.mapOffset = origin + read4(h); - - /* Read map */ - bufSeek(h, header.mapOffset + MAP_SKIP_SIZE); - map.typeListOffset = read2(h); - map.nameListOffset = read2(h); - - h->res.map.cnt = 0; - - /* Read type list */ - typeListCnt = read2(h); - for (i = 0; i <= typeListCnt; i++) { - unsigned long type = read4(h); - unsigned short cnt = read2(h); - unsigned short offset = read2(h); - ResInfo *res = dnaEXTEND(h->res.map, cnt + 1); - res->type = type; - res->length = cnt; - res->offset = offset; - for (j = 1; j <= cnt; j++) - res[j].type = type; - } - - /* Read reference list */ - i = 0; - while (i < h->res.map.cnt) { - ResInfo *res = &h->res.map.array[i]; - long cnt = (long)res->length; - bufSeek(h, header.mapOffset + map.typeListOffset + res->offset); - for (j = 0; j <= cnt; j++) { - res->id = read2(h); - res->name = read2(h); - res->attrs = read1(h); - res->offset = (unsigned long)read1(h) << 16; - res->offset |= read1(h) << 8; - res->offset |= read1(h); - res->offset += HEADER_SIZE; - res->offset += origin; - (void)read4(h); - res++; - } - i += j; - } - - /* Read names */ - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - if (res->name != 0xffff) { - char *name; - int length; - bufSeek(h, header.mapOffset + map.nameListOffset + res->name); - length = read1(h); - res->name = h->res.names.cnt; - name = dnaEXTEND(h->res.names, length + 1); - readN(h, length, name); - name[length] = '\0'; - } - } - - /* Read resource data lengths */ - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - bufSeek(h, res->offset); - res->length = read4(h); - if (res->type != POST_) - res->offset += 4; - } - - /* Process resource map */ - if (h->flags & DUMP_RES) { - /* -r option; print resource map and exit */ - printResMap(h, origin); - exit(0); - } else if (h->arg.i != NULL) { - /* -i option; look for specific sfnt resource */ - unsigned short id = (unsigned short)strtol(h->arg.i, NULL, 0); - - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - if (res->type == sfnt_ && res->id == id) { - readsfnt(h, res->offset); - return; - } - } - fatal(h, "resource not found"); - } else { - /* Look for sfnt/POST resources */ - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - switch (res->type) { - case sfnt_: - if (h->flags & EVERY_FONT) - /* -y option; add sfnt */ - readsfnt(h, res->offset); - else if (i + 1 == h->res.map.cnt || - h->res.map.array[i + 1].type != sfnt_) { - /* Singleton sfnt resource */ - readsfnt(h, res->offset); - return; - } else - /* Multiple sfnt resources; print note */ - printNote(h, origin); - break; - case POST_: - h->seg.refill = POSTRefill; - addFont(h, src_Type1, 0, res->offset); - return; - } - } - } -} - -/* ----------------------- AppleSingle/Double Formats ---------------------- */ - -/* Process AppleSingle/Double format data. */ -static void doASDFormats(txCtx h, ctlTag magic) { - char junk[16]; - long i; - - h->asd.magic = magic; - h->asd.version = read4(h); - - /* Skip filler */ - readN(h, sizeof(junk), junk); - - /* Read number of entries */ - dnaSET_CNT(h->asd.entries, read2(h)); - - /* Read entry descriptors */ - for (i = 0; i < h->asd.entries.cnt; i++) { - EntryDesc *entry = &h->asd.entries.array[i]; - entry->id = read4(h); - entry->offset = read4(h); - entry->length = read4(h); - } - - if (h->flags & DUMP_ASD) { - /* -R option; print AppleSingle/Double data */ - printf( - "### %s Format, Version %1.1f\n" - "\n", - (h->asd.magic == sig_AppleSingle) ? "AppleSingle" : "AppleDouble", - h->asd.version / 65536.0); - - printf( - "Id Offset Length Description\n" - "-- -------- -------- -------------\n"); - - for (i = 0; i < h->asd.entries.cnt; i++) { - static char *desc[] = - { - /* 00 */ "--unknown--", - /* 01 */ "Data Fork", - /* 02 */ "Resource Fork", - /* 03 */ "Real Name", - /* 04 */ "Comment", - /* 05 */ "Icon, B&W", - /* 06 */ "Icon, Color", - /* 07 */ "File Info (old format)", - /* 08 */ "File Dates Info", - /* 09 */ "Finder Info", - /* 10 */ "Macintosh File Info", - /* 11 */ "ProDOS File Info", - /* 12 */ "MS-DOS File Info", - /* 13 */ "Short Name", - /* 14 */ "AFP File Info", - /* 15 */ "Directory ID", - }; - EntryDesc *entry = &h->asd.entries.array[i]; - printf("%02lx %08lx %08lx %s\n", - entry->id, entry->offset, entry->length, - (entry->id < ARRAY_LEN(desc)) ? desc[entry->id] : "--unknown--"); - } - exit(0); - } else - for (i = 0; i < h->asd.entries.cnt; i++) { - EntryDesc *entry = &h->asd.entries.array[i]; - if (entry->length > 0) - switch (entry->id) { - case 1: - /* Data fork (AppleSingle); see if it's an sfnt */ - readsfnt(h, entry->offset); - break; - case 2: - /* Resource fork (AppleSingle/Double) */ - bufSeek(h, entry->offset + 4); - doResMap(h, entry->offset); - break; - } - } -} - -/* Scan source file for fonts and build font list. */ -static void buildFontList(txCtx h) { - ctlTag sig; - int fillErr = 0; - h->fonts.cnt = 0; - - /* Initialize segment */ - h->seg.refill = NULL; - - if (h->src.stm.fp == NULL) { - /* We get here only if h->file.src is a directory. Check if it is UFO font */ - char tempFileName[FILENAME_MAX]; - FILE *tempFP; - sprintf(tempFileName, "%s/glyphs/contents.plist", h->file.src); - tempFP = fopen(tempFileName, "rt"); - if (tempFP != NULL) { - // it is a ufo font! - fclose(tempFP); - addFont(h, src_UFO, 0, 0); - } else { - fileError(h, h->src.stm.filename); - } - } else { - /* Read first buffer */ - fillbuf(h, 0); - /* Make 2-byte signature */ - sig = (ctlTag)read1(h) << 24; - sig |= (ctlTag)read1(h) << 16; - - switch (sig) { - case sig_PostScript0: - case sig_PostScript1: - case sig_PostScript2: - addFont(h, src_Type1, 0, 0); - break; - case sig_PFB: - h->seg.refill = PFBRefill; - addFont(h, src_Type1, 0, 0); - break; - case sig_CFF: - addFont(h, src_CFF, 0, 0); - break; - default: - /* Make 4-byte signature */ - sig |= read1(h) << 8; - sig |= read1(h); - switch (sig) { - case sig_MacResource: - doResMap(h, 0); - break; - case sig_AppleSingle: - case sig_AppleDouble: - doASDFormats(h, sig); - break; - default: - readsfnt(h, 0); - } - } - - if (h->fonts.cnt == 0) { - if ((0 == strncmp(h->src.buf, "src.buf, "fonts.cnt == 0) - fatal(h, "bad font file: %s", h->src.stm.filename); -} - /* ----------------------------- Usage and Help ---------------------------- */ /* Print usage information. */ @@ -6584,7 +949,7 @@ static void addArgs(txCtx h, char *filename) { } /* Get version callback function. */ -static void getversion(ctlVersionCallbacks *cb, long version, char *libname) { +static void getversion(ctlVersionCallbacks *cb, int version, char *libname) { char version_buf[MAX_VERSION_SIZE + 1]; printf(" %-10s%s\n", libname, CTL_SPLIT_VERSION(version_buf, version)); } @@ -6623,58 +988,6 @@ static void printVersions(txCtx h) { exit(0); } -/* Setup new mode. */ -static void setMode(txCtx h, int mode) { - /* Initialize files */ - h->file.sr = NULL; - h->file.sd = NULL; - h->file.dd = NULL; - strcpy(h->file.src, "-"); - strcpy(h->file.dst, "-"); - - /* Begin new mode */ - switch (mode) { - case mode_dump: - dump_SetMode(h); - break; - case mode_ps: - ps_SetMode(h); - break; - case mode_afm: - afm_SetMode(h); - break; - case mode_path: - path_SetMode(h); - break; - case mode_cff: - cff_SetMode(h); - break; - case mode_cef: - cef_SetMode(h); - break; - case mode_pdf: - pdf_SetMode(h); - break; - case mode_mtx: - mtx_SetMode(h); - break; - case mode_t1: - t1_SetMode(h); - break; - case mode_svg: - svg_SetMode(h); - break; - case mode_ufow: - ufo_SetMode(h); - break; - case mode_dcf: - dcf_SetMode(h); - break; - } - - h->flags |= SEEN_MODE; -} - /* Match options. */ static int CTL_CDECL matchOpts(const void *key, const void *value) { return strcmp((char *)key, *(char **)value); @@ -6860,7 +1173,7 @@ static int doAutoFileSet(txCtx h, int argc, char *argv[], int i) { static void stringStrip(char *str) { int start = 0; - int end = strlen(str) - 1; + int end = (int)strlen(str) - 1; if (end == 0) return; @@ -6882,7 +1195,7 @@ static void stringStrip(char *str) { if (start > 0) memmove(str, &str[start], (end - start) + 2); if (strlen(str) == 0) { - str[0] = ' '; /* so that the string is not empty. The h->mergeInfo.cidinfo must not be empty strings in order to override the src fonts values.*/ + str[0] = ' '; /* so that the string is not empty. The mergeInfo->cidinfo must not be empty strings in order to override the src fonts values.*/ str[1] = 0; } } @@ -6890,25 +1203,26 @@ static void stringStrip(char *str) { static void readCIDFontInfo(txCtx h, char *filePath) { int lineno; FILE *fp; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; fp = fopen(filePath, "rb"); if (fp == NULL) fatal(h, "Failed to open cid fontinfo file %s.", filePath); lineno = 1; - h->mergeInfo.cidinfo.CIDFontName[0] = ABF_EMPTY_ARRAY; - h->mergeInfo.cidinfo.FullName[0] = ABF_EMPTY_ARRAY; - h->mergeInfo.cidinfo.FamilyName[0] = ABF_EMPTY_ARRAY; - h->mergeInfo.cidinfo.AdobeCopyright[0] = ABF_EMPTY_ARRAY; - h->mergeInfo.cidinfo.Weight[0] = ABF_EMPTY_ARRAY; - h->mergeInfo.cidinfo.Trademark[0] = ABF_EMPTY_ARRAY; - h->mergeInfo.cidinfo.isFixedPitch = ABF_UNSET_INT; - h->mergeInfo.cidinfo.fsType = -1; - h->mergeInfo.cidinfo.Registry[0] = ABF_EMPTY_ARRAY; - h->mergeInfo.cidinfo.Ordering[0] = ABF_EMPTY_ARRAY; - h->mergeInfo.cidinfo.Supplement = ABF_UNSET_INT; - h->mergeInfo.cidinfo.fontVersion = 0.0; - h->mergeInfo.XUID.cnt = ABF_EMPTY_ARRAY; + mergeInfo->cidinfo.CIDFontName[0] = ABF_EMPTY_ARRAY; + mergeInfo->cidinfo.FullName[0] = ABF_EMPTY_ARRAY; + mergeInfo->cidinfo.FamilyName[0] = ABF_EMPTY_ARRAY; + mergeInfo->cidinfo.AdobeCopyright[0] = ABF_EMPTY_ARRAY; + mergeInfo->cidinfo.Weight[0] = ABF_EMPTY_ARRAY; + mergeInfo->cidinfo.Trademark[0] = ABF_EMPTY_ARRAY; + mergeInfo->cidinfo.isFixedPitch = ABF_UNSET_INT; + mergeInfo->cidinfo.fsType = -1; + mergeInfo->cidinfo.Registry[0] = ABF_EMPTY_ARRAY; + mergeInfo->cidinfo.Ordering[0] = ABF_EMPTY_ARRAY; + mergeInfo->cidinfo.Supplement = ABF_UNSET_INT; + mergeInfo->cidinfo.fontVersion = 0.0; + mergeInfo->XUID.cnt = ABF_EMPTY_ARRAY; while (1) { char buf[MAX_DICT_ENTRY_LEN + MAX_DICT_ENTRY_LEN]; @@ -6939,7 +1253,7 @@ static void readCIDFontInfo(txCtx h, char *filePath) { fatal(h, "Parse error in the CID fontinfo file \"%s\" at line no %d. The CopyrightNotice key is not followed by the EndNotice key.", filePath, lineno - 1); if (0 == strncmp(buf, "EndNotice", 9)) break; - strcat(h->mergeInfo.cidinfo.AdobeCopyright, buf); + strcat(mergeInfo->cidinfo.AdobeCopyright, buf); } continue; } @@ -6950,39 +1264,39 @@ static void readCIDFontInfo(txCtx h, char *filePath) { stringStrip(key); stringStrip(value); if (0 == strcmp(key, "FontName")) - strcpy(h->mergeInfo.cidinfo.CIDFontName, value); + strcpy(mergeInfo->cidinfo.CIDFontName, value); else if (0 == strcmp(key, "FullName")) - strcpy(h->mergeInfo.cidinfo.FullName, value); + strcpy(mergeInfo->cidinfo.FullName, value); else if (0 == strcmp(key, "FamilyName")) - strcpy(h->mergeInfo.cidinfo.FamilyName, value); + strcpy(mergeInfo->cidinfo.FamilyName, value); else if (0 == strcmp(key, "Weight")) - strcpy(h->mergeInfo.cidinfo.Weight, value); + strcpy(mergeInfo->cidinfo.Weight, value); else if (0 == strcmp(key, "AdobeCopyright")) - strcat(h->mergeInfo.cidinfo.AdobeCopyright, value); + strcat(mergeInfo->cidinfo.AdobeCopyright, value); else if (0 == strcmp(key, "Trademark")) - strcpy(h->mergeInfo.cidinfo.Trademark, value); + strcpy(mergeInfo->cidinfo.Trademark, value); else if (0 == strcmp(key, "FSType")) { - h->mergeInfo.cidinfo.fsType = atoi(value); - if ((0 != strcmp("0", value)) && (h->mergeInfo.cidinfo.fsType == 0)) + mergeInfo->cidinfo.fsType = atoi(value); + if ((0 != strcmp("0", value)) && (mergeInfo->cidinfo.fsType == 0)) fatal(h, "Parse error in the CID fontinfo file \"%s\" at line no %d. The fsType value could not be parsed as an integer number.", filePath, lineno - 1); } else if (0 == strcmp(key, "isFixedPitch")) { if (0 == strcmp(value, "true")) - h->mergeInfo.cidinfo.isFixedPitch = 1; + mergeInfo->cidinfo.isFixedPitch = 1; else if (0 == strcmp(value, "false")) - h->mergeInfo.cidinfo.isFixedPitch = 0; + mergeInfo->cidinfo.isFixedPitch = 0; else fatal(h, "Parse error in the CID fontinfo file \"%s\" at line no %d. The isFixedPitch value could not be parsed as either \"true\" or \"false\".", filePath, lineno - 1); } else if (0 == strcmp(key, "Registry")) - strcpy(h->mergeInfo.cidinfo.Registry, value); + strcpy(mergeInfo->cidinfo.Registry, value); else if (0 == strcmp(key, "Ordering")) - strcpy(h->mergeInfo.cidinfo.Ordering, value); + strcpy(mergeInfo->cidinfo.Ordering, value); else if (0 == strcmp(key, "Supplement")) { - h->mergeInfo.cidinfo.Supplement = atoi(value); - if ((0 != strcmp("0", value)) && (h->mergeInfo.cidinfo.Supplement == 0)) + mergeInfo->cidinfo.Supplement = atoi(value); + if ((0 != strcmp("0", value)) && (mergeInfo->cidinfo.Supplement == 0)) fatal(h, "Parse error in the CID fontinfo file \"%s\" at line no %d. The Supplement value could not be parsed as a integer number.", filePath, lineno - 1); } else if (0 == strcmp(key, "version")) { - h->mergeInfo.cidinfo.fontVersion = (float)atof(value); - if (h->mergeInfo.cidinfo.fontVersion == 0.0) + mergeInfo->cidinfo.fontVersion = (float)atof(value); + if (mergeInfo->cidinfo.fontVersion == 0.0) fatal(h, "Parse error in the CID fontinfo file \"%s\" at line no %d. The fontVersion value could not be parsed as a fractional number.", filePath, lineno - 1); } else if (0 == strcmp(key, "XUID")) { char *p = value; @@ -6996,8 +1310,8 @@ static void readCIDFontInfo(txCtx h, char *filePath) { if (startp != NULL) { if (cnt > 15) fatal(h, "Parse error in the CID fontinfo file \"%s\" at line no %d. There are more than 16 values in the array.", filePath, lineno - 1); - h->mergeInfo.XUID.array[cnt] = atoi(startp); - if ((0 != strcmp("0", startp)) && (h->mergeInfo.XUID.array[cnt] == 0)) + mergeInfo->XUID.array[cnt] = atoi(startp); + if ((0 != strcmp("0", startp)) && (mergeInfo->XUID.array[cnt] == 0)) fatal(h, "Parse error in the CID fontinfo file \"%s\" at line no %d. The %d 'th XIUD value (%s) could not be parsed as an integer number.", filePath, lineno - 1, cnt + 1, p); startp = NULL; cnt++; @@ -7012,12 +1326,12 @@ static void readCIDFontInfo(txCtx h, char *filePath) { if (startp != NULL) { if (cnt > 15) fatal(h, "Parse error in the CID fontinfo file \"%s\" at line no %d. There are more than 16 values in the array.", filePath, lineno - 1); - h->mergeInfo.XUID.array[cnt] = atoi(startp); - if ((0 != strcmp("0", startp)) && (h->mergeInfo.XUID.array[cnt] == 0)) + mergeInfo->XUID.array[cnt] = atoi(startp); + if ((0 != strcmp("0", startp)) && (mergeInfo->XUID.array[cnt] == 0)) fatal(h, "Parse error in the CID fontinfo file \"%s\" at line no %d. The %d 'th XIUD value (%s) could not be parsed as an integer number.", filePath, lineno - 1, cnt + 1, p); cnt++; } - h->mergeInfo.XUID.cnt = cnt; + mergeInfo->XUID.cnt = cnt; } } } @@ -7028,19 +1342,19 @@ static void readCIDFontInfo(txCtx h, char *filePath) { { int missingKey = 0; - if (h->mergeInfo.cidinfo.CIDFontName[0] == 0) { + if (mergeInfo->cidinfo.CIDFontName[0] == 0) { fprintf(stderr, "Parse error in the CID fontinfo file \"%s\": missing required key \"FontName\".", filePath); missingKey = 1; - } else if (h->mergeInfo.cidinfo.Registry[0] == 0) { + } else if (mergeInfo->cidinfo.Registry[0] == 0) { fprintf(stderr, "Parse error in the CID fontinfo file \"%s\": missing required key \"Registry\".", filePath); missingKey = 1; - } else if (h->mergeInfo.cidinfo.Ordering[0] == 0) { + } else if (mergeInfo->cidinfo.Ordering[0] == 0) { fprintf(stderr, "Parse error in the CID fontinfo file \"%s\": missing required key \"Ordering\".", filePath); missingKey = 1; - } else if (h->mergeInfo.cidinfo.Supplement == -1) { + } else if (mergeInfo->cidinfo.Supplement == -1) { fprintf(stderr, "Parse error in the CID fontinfo file \"%s\": missing required key \"Supplement\".", filePath); missingKey = 1; - } else if (h->mergeInfo.cidinfo.fontVersion == 0.0) { + } else if (mergeInfo->cidinfo.fontVersion == 0.0) { fprintf(stderr, "Parse error in the CID fontinfo file \"%s\": missing required key \"version\".", filePath); missingKey = 1; } @@ -7051,27 +1365,12 @@ static void readCIDFontInfo(txCtx h, char *filePath) { return; } -static int CTL_CDECL matchGAEByName(const void *key, const void *value) { - return strcmp(key, ((GAEntry *)value)->srcName); -} - -static int CTL_CDECL matchGAEByCID(const void *key, const void *value) { - long firstCID = *(long *)key; - long secondCID = ((GAEntry *)value)->srcCID; - - if (firstCID == secondCID) - return 0; - if (firstCID < secondCID) - return -1; - return 1; -} - /* Merge the source font dict into the destination font, and then call glyphBegin */ static int mergeGlyphBegin(abfGlyphCallbacks *cb, abfGlyphInfo *srcInfo) { int result; txCtx h = cb->indirect_ctx; - MergeInfo *mergeInfo = &h->mergeInfo; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; GAFileInfo *gaf = &mergeInfo->glyphAliasSet.array[mergeInfo->fileIndex]; GAEntry *gae; abfGlyphInfo *info = srcInfo; @@ -7133,7 +1432,7 @@ static int mergeGlyphBegin(abfGlyphCallbacks *cb, abfGlyphInfo *srcInfo) { } else info->cid = (unsigned short)gae->dstCID; } - } else if ((h->mergeInfo.cidinfo.CIDFontName[0] != ABF_EMPTY_ARRAY) && (!(info->flags & ABF_GLYPH_CID))) { + } else if ((mergeInfo->cidinfo.CIDFontName[0] != ABF_EMPTY_ARRAY) && (!(info->flags & ABF_GLYPH_CID))) { /* else - file does not have GA file; everything gets copied through. However, if a cidfontinfo file has been specified, and the source is name-keyed, and the names are in the form cidXXXX, then the new @@ -7176,7 +1475,7 @@ static int mergeGlyphBegin(abfGlyphCallbacks *cb, abfGlyphInfo *srcInfo) { } /* Merge file. */ -static void mergeFile(txCtx h, char *srcname, boolean isFirstFont, sourceCtx *srcCtx) { +static void mergeFile(txCtx h, char *srcname, bool isFirstFont, sourceCtx *srcCtx) { long i; char *p; struct stat fileStat; @@ -7249,6 +1548,7 @@ static void mergeFile(txCtx h, char *srcname, boolean isFirstFont, sourceCtx *sr h->flags |= DONE_FILE; } +#if 0 /* see corresponding if'd out calls in readGlyphAliasFile below */ static int CTL_CDECL cmpGAEBySrcName(const void *first, const void *second) { return strcmp(((GAEntry *)first)->srcName, ((GAEntry *)second)->srcName); @@ -7263,27 +1563,29 @@ static int CTL_CDECL cmpGAEBySrcCID(const void *first, const void *second) { return -1; return 1; } +#endif -static boolean readGlyphAliasFile(txCtx h, int fileIndex, char *filePath) { +static bool readGlyphAliasFile(txCtx h, int fileIndex, char *filePath) { FILE *ga_fp; - boolean isGA = 0; + bool isGA = 0; char lineBuffer[MAX_DICT_ENTRY_LEN]; char progName[MAX_DICT_ENTRY_LEN]; int len; char *ret; unsigned short lineno = 0; GAFileInfo *gaf = NULL; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; /* Always make a glyphAliasSet entry - even if we are skipping a GA file and the current file turns out to be a font. we still need an empty glyphAliasSet entry for it.*/ - while (fileIndex >= h->mergeInfo.glyphAliasSet.cnt) { - gaf = dnaNEXT(h->mergeInfo.glyphAliasSet); + while (fileIndex >= mergeInfo->glyphAliasSet.cnt) { + gaf = dnaNEXT(mergeInfo->glyphAliasSet); dnaINIT(h->ctx.dna, gaf->gaEntrySet, 1, 300); dnaINIT(h->ctx.dna, gaf->seenGlyphs, 1, 300); } - if (h->mergeInfo.glyphAliasSet.cnt > MAX_MERGE_FILES) + if (mergeInfo->glyphAliasSet.cnt > MAX_MERGE_FILES) fatal(h, "Error. This program cannot merge more than %d files.", MAX_MERGE_FILES); /* This is because the cffWrite context gets a pointer to the gaf->FontName. If we allow resizing of the glyphAliasSet array, @@ -7381,6 +1683,7 @@ static int doMergeFileSet(txCtx h, int argc, char *argv[], int i) { int fileIndex = 0; int fileCount = 0; int curMaxFD = -1; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; /* allocate a list to hold the source font ctx's */ dnaINIT(h->ctx.dna, srcCtx.cfr, 5, 5); @@ -7388,19 +1691,19 @@ static int doMergeFileSet(txCtx h, int argc, char *argv[], int i) { dnaINIT(h->ctx.dna, srcCtx.svr, 5, 5); dnaINIT(h->ctx.dna, srcCtx.ufr, 5, 5); - dnaINIT(h->ctx.dna, h->mergeInfo.newiFDArray, MAX_MERGE_FILES, MAX_MERGE_FILES); - dnaINIT(h->ctx.dna, h->mergeInfo.glyphAliasSet, MAX_MERGE_FILES, MAX_MERGE_FILES); + dnaINIT(h->ctx.dna, mergeInfo->newiFDArray, MAX_MERGE_FILES, MAX_MERGE_FILES); + dnaINIT(h->ctx.dna, mergeInfo->glyphAliasSet, MAX_MERGE_FILES, MAX_MERGE_FILES); h->dst.begset(h); /* dest stream gets opened */ /* patch mergeGlyphBegin function over the &h->cb.glyph.beg() function ptr */ - h->mergeInfo.mergeGlyphBeg = h->cb.glyph.beg; + mergeInfo->mergeGlyphBeg = h->cb.glyph.beg; h->cb.glyph.beg = mergeGlyphBegin; switch (h->mode) { case mode_cff: - h->mergeInfo.compareFDArray = (CompareFDArrayCall)cfwCompareFDArrays; - h->mergeInfo.mergeFDArray = (MergeFDArrayCall)cfwMergeFDArray; + mergeInfo->compareFDArray = (CompareFDArrayCall)cfwCompareFDArrays; + mergeInfo->mergeFDArray = (MergeFDArrayCall)cfwMergeFDArray; break; default: fatal(h, "Merging not allowed in destination font mode <%s>.", h->modename); @@ -7408,7 +1711,7 @@ static int doMergeFileSet(txCtx h, int argc, char *argv[], int i) { /* a glyph alias file applies to the following font file. */ while (i < argc) { - boolean isGA; + bool isGA; char *filePath = argv[i++]; int j; @@ -7420,11 +1723,11 @@ static int doMergeFileSet(txCtx h, int argc, char *argv[], int i) { filePath = argv[i++]; } - h->mergeInfo.fileIndex = fileIndex; + mergeInfo->fileIndex = fileIndex; mergeFile(h, filePath, (fileIndex == 0), &srcCtx); - for (j = 0; j < h->mergeInfo.newiFDArray.cnt; j++) { - if (curMaxFD < h->mergeInfo.newiFDArray.array[j]) { - curMaxFD = h->mergeInfo.newiFDArray.array[j]; + for (j = 0; j < mergeInfo->newiFDArray.cnt; j++) { + if (curMaxFD < mergeInfo->newiFDArray.array[j]) { + curMaxFD = mergeInfo->newiFDArray.array[j]; fprintf(stderr, "Adding font dict %d from %s.\n", curMaxFD, h->src.stm.filename); } } @@ -7438,7 +1741,7 @@ static int doMergeFileSet(txCtx h, int argc, char *argv[], int i) { h->dst.endset(h); /* dest stream gets closed */ /* restore original h->cb.glyph.beg */ - h->cb.glyph.beg = h->mergeInfo.mergeGlyphBeg; + h->cb.glyph.beg = mergeInfo->mergeGlyphBeg; /* free the source font ctx's */ for (fileIndex = 0; fileIndex < srcCtx.cfr.cnt; fileIndex++) @@ -7458,15 +1761,15 @@ static int doMergeFileSet(txCtx h, int argc, char *argv[], int i) { dnaFREE(srcCtx.svr); h->svr.ctx = NULL; - for (fileIndex = 0; fileIndex < h->mergeInfo.glyphAliasSet.cnt; fileIndex++) { - if (h->mergeInfo.glyphAliasSet.array[fileCount].gaEntrySet.cnt != 0) { - dnaFREE(h->mergeInfo.glyphAliasSet.array[fileCount].gaEntrySet); - dnaFREE(h->mergeInfo.glyphAliasSet.array[fileCount].seenGlyphs); + for (fileIndex = 0; fileIndex < mergeInfo->glyphAliasSet.cnt; fileIndex++) { + if (mergeInfo->glyphAliasSet.array[fileCount].gaEntrySet.cnt != 0) { + dnaFREE(mergeInfo->glyphAliasSet.array[fileCount].gaEntrySet); + dnaFREE(mergeInfo->glyphAliasSet.array[fileCount].seenGlyphs); } } - dnaFREE(h->mergeInfo.glyphAliasSet); - dnaFREE(h->mergeInfo.newiFDArray); + dnaFREE(mergeInfo->glyphAliasSet); + dnaFREE(mergeInfo->newiFDArray); return i - 1; } @@ -7475,6 +1778,7 @@ static int doMergeFileSet(txCtx h, int argc, char *argv[], int i) { static void parseArgs(txCtx h, int argc, char *argv[]) { int i; char *arg; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; h->t1r.flags = 0; /* I initialize these here,as I need to set the std Encoding flags before calling setMode. */ h->cfr.flags = 0; @@ -7517,8 +1821,8 @@ static void parseArgs(txCtx h, int argc, char *argv[]) { h->cfw.flags |= CFW_CHECK_IF_GLYPHS_DIFFER; h->cfw.flags |= CFW_PRESERVE_GLYPH_ORDER; i = doMergeFileSet(h, argc, argv, i); - if (h->mergeInfo.mode != mode_cff) { /* output font 'h->file.dst" is cff; we need to convert to t1. */ - setMode(h, h->mergeInfo.mode); + if (mergeInfo->mode != mode_cff) { /* output font 'h->file.dst" is cff; we need to convert to t1. */ + setMode(h, mergeInfo->mode); strcpy(h->file.src, dstPath); strcpy(h->file.dst, dstPath); strcat(h->file.dst, ".temp"); @@ -7902,7 +2206,7 @@ static void parseArgs(txCtx h, int argc, char *argv[]) { readCIDFontInfo(h, argv[++i]); break; case opt_hints: - h->mergeInfo.hintsOnly = 1; + mergeInfo->hintsOnly = 1; break; case opt_decid: if (h->mode != mode_t1) @@ -8363,6 +2667,7 @@ static void initLocal(void *ctx, long cnt, SubrInfo *info) { /* Initialize context. */ static void txNew(txCtx h, char *progname) { ctlMemoryCallbacks cb; + MergeInfo *mergeInfo = (MergeInfo *)h->appSpecificInfo; h->progname = progname; h->flags = 0; @@ -8394,11 +2699,11 @@ static void txNew(txCtx h, char *progname) { h->ufow.ctx = NULL; h->ufow.flags = 0; h->ufr.altLayerDir = NULL; - h->mergeInfo.cidinfo.CIDFontName[0] = 0; - h->mergeInfo.seenNotdef = 0; - h->mergeInfo.mode = 0; - h->mergeInfo.hintsOnly = 0; - h->mergeInfo.compareNameOnly = 0; + mergeInfo->cidinfo.CIDFontName[0] = 0; + mergeInfo->seenNotdef = 0; + mergeInfo->mode = 0; + mergeInfo->hintsOnly = 0; + mergeInfo->compareNameOnly = 0; h->ctx.sfr = NULL; memInit(h); @@ -8495,6 +2800,7 @@ static void txFree(txCtx h) { /* Don't close debug streams because they use stderr */ dnaFree(h->ctx.dna); + free(h->appSpecificInfo); free(h); } @@ -8527,6 +2833,16 @@ int CTL_CDECL main(int argc, char *argv[]) { } memset(h, 0, sizeof(struct txCtx_)); + h->app = APP_MERGEFONTS; + h->appSpecificInfo = malloc(sizeof(MergeInfo)); + if (h == NULL) { + fprintf(stderr, "%s: out of memory\n", progname); + exit(1); + } + memset(h->appSpecificInfo, 0, sizeof(MergeInfo)); + + h->appSpecificFree = txFree; + txNew(h, progname); if (argc > 1 && getOptionIndex(argv[argc - 2]) == opt_s) { @@ -8540,7 +2856,7 @@ int CTL_CDECL main(int argc, char *argv[]) { /* Add args from script file */ addArgs(h, argv[argc - 1]); - parseArgs(h, h->script.args.cnt, h->script.args.array); + parseArgs(h, (int)h->script.args.cnt, h->script.args.array); } else parseArgs(h, argc, argv); diff --git a/c/public/config/linux/gcc/gcc.mak b/c/public/config/linux/gcc/gcc.mak old mode 100755 new mode 100644 diff --git a/c/public/config/linux/gcc/gcc_bc.mak b/c/public/config/linux/gcc/gcc_bc.mak old mode 100755 new mode 100644 diff --git a/c/public/config/linux/gcc/gcc_tx.mak b/c/public/config/linux/gcc/gcc_tx.mak old mode 100755 new mode 100644 index ad3a0da10..c564f090d --- a/c/public/config/linux/gcc/gcc_tx.mak +++ b/c/public/config/linux/gcc/gcc_tx.mak @@ -1,6 +1,6 @@ ######################################################################### # # -# Copyright 2014 Adobe Systems Incorporated. # +# Copyright 2014-2018 Adobe Systems Incorporated. # # All rights reserved. # # # ######################################################################### @@ -26,6 +26,7 @@ PRG_LIBS = \ $(CT_LIB_DIR)/t1write.a \ $(CT_LIB_DIR)/t2cstr.a \ $(CT_LIB_DIR)/ttread.a \ + $(CT_LIB_DIR)/tx_shared.a \ $(CT_LIB_DIR)/uforead.a \ $(CT_LIB_DIR)/ufowrite.a \ $(CT_LIB_DIR)/pstoken.a \ @@ -93,6 +94,9 @@ $(CT_LIB_DIR)/t2cstr.a: $(CT_LIB_DIR)/ttread.a: cd $(LIB_BUILD_DIR)/ttread/$(PLATFORM)/$(COMPILER)/$(CONFIG); $(MAKE) clean; $(MAKE); +$(CT_LIB_DIR)/tx_shared.a: + cd $(LIB_BUILD_DIR)/tx_shared/$(PLATFORM)/$(COMPILER)/$(CONFIG); $(MAKE) clean; $(MAKE); + $(CT_LIB_DIR)/uforead.a: cd $(LIB_BUILD_DIR)/uforead/$(PLATFORM)/$(COMPILER)/$(CONFIG); $(MAKE) clean; $(MAKE); diff --git a/c/public/lib/api/supportframepixel.h b/c/public/lib/api/supportframepixel.h deleted file mode 100644 index 8d721c68b..000000000 --- a/c/public/lib/api/supportframepixel.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. - This software is licensed as OpenSource, under the Apache License, Version 2.0. - This license is available at: http://opensource.org/licenses/Apache-2.0. */ - -/* - framepixel.h -*/ - -#ifndef FRAMEPIXEL_H -#define FRAMEPIXEL_H - -#include "supportpublictypes.h" -#include "supportenvironment.h" -#include "supportframepixeltypes.h" - -/* Bit Array Stuff: defined in bitarray.c */ - -extern readonly SWAPTYPE leftBitArray[SWAPUNIT]; -/* For i in [0, SCANUNIT), i'th element is a mask consisting of i zero - bits followed by SCANUNIT-i one bits (in device order). - */ -extern readonly SWAPTYPE rightBitArray[SWAPUNIT]; -/* For i in [0, SCANUNIT), i'th element is a mask consisting of i one - bits followed by SCANUNIT-i zero bits (in device order). - */ - -#endif /* FRAMEPIXEL_H */ diff --git a/c/public/lib/api/supportframepixeltypes.h b/c/public/lib/api/supportframepixeltypes.h deleted file mode 100644 index 396167a85..000000000 --- a/c/public/lib/api/supportframepixeltypes.h +++ /dev/null @@ -1,150 +0,0 @@ -/* Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. - This software is licensed as OpenSource, under the Apache License, Version 2.0. - This license is available at: http://opensource.org/licenses/Apache-2.0. */ - -/* - framepixeltypes.h -*/ - -#ifndef FRAMEPIXELTYPES_H -#define FRAMEPIXELTYPES_H - -#include "supportpublictypes.h" -#include "supportenvironment.h" - -/* - Scan unit definitions. - Raster memory (frame buffer, masks, etc.) is always accessed in units - of this size. Any compile-time dependence on the following definitions - requires building separate package configurations for each distinct - scan unit size. - */ -#ifndef SCANUNIT -#define SCANUNIT 32 -#endif - -#if (SCANUNIT != 8) && (SCANUNIT != 16) && (SCANUNIT != 32) && (SCANUNIT != 64) -#define SCANUNIT 32 -#endif /* (SCANUNIT!=8) && (SCANUNIT!=16) && (SCANUNIT!=32) && (SCANUNIT!=64) */ - -#if SCANUNIT == 8 -#define SCANSHIFT 3 -#define SCANMASK 07 -#define SCANTYPE Card8 -#define LASTSCANVAL 0xFF -#endif /* SCANUNIT==8 */ - -#if SCANUNIT == 16 -#define SCANSHIFT 4 -#define SCANMASK 017 -#define SCANTYPE Card16 -#define LASTSCANVAL 0xFFFF -#endif /* SCANUNIT==16 */ - -#if SCANUNIT == 32 -#define SCANSHIFT 5 -#define SCANMASK 037 -#define LASTSCANVAL 0xFFFFFFFF -#define SCANTYPE Card32 -#endif /* SCANUNIT==32 */ - -#if SCANUNIT == 64 -#define SCANSHIFT 6 -#define SCANMASK 077 -#define LASTSCANVAL 0xFFFFFFFFFFFFFFFF -#define SCANTYPE Card64 -#endif /* SCANUNIT==64 */ - -typedef SCANTYPE *PSCANTYPE; - -/* SWAPUNIT Definitions. Swapunit is the unit that bits should - be swapped when written to a mask - */ -#ifndef SWAPUNIT -/* Default to SCANUNIT values */ - -#define SWAPUNIT SCANUNIT -#define SWAPSHIFT SCANSHIFT -#define SWAPMASK SCANMASK -#define SWAPTYPE SCANTYPE -#define LASTSWAPVAL LASTSCANVAL -#define PSWAPTYPE PSCANTYPE - -#else /* SWAPUNIT */ -#if (SWAPUNIT > SCANUNIT) -/* SWAPUNIT must be less than or equal to SCANUNIT */ - -#define SWAPUNIT SCANUNIT -#define SWAPSHIFT SCANSHIFT -#define SWAPMASK SCANMASK -#define SWAPTYPE SCANTYPE -#define LASTSWAPVAL LASTSCANVAL -#define PSWAPTYPE PSCANTYPE -#endif /* (SWAPUNIT > SCANUNIT) */ - -#if (SWAPUNIT != 8) && (SWAPUNIT != 16) && (SWAPUNIT != 32) -#define SWAPUNIT 32 -#endif /* (SWAPUNIT!=8) && (SWAPUNIT!=16) && (SWAPUNIT!=32) */ - -#if SWAPUNIT == 8 -#define SWAPSHIFT 3 -#define SWAPMASK 07 -#define SWAPTYPE Card8 -#define LASTSWAPVAL 0xFF -#endif /* SWAPUNIT==8 */ - -#if SWAPUNIT == 16 -#define SWAPSHIFT 4 -#define SWAPMASK 017 -#define SWAPTYPE Card16 -#define LASTSWAPVAL 0xFFFF -#endif /* SWAPUNIT==16 */ - -#if SWAPUNIT == 32 -#define SWAPSHIFT 5 -#define SWAPMASK 037 -#define LASTSWAPVAL 0xFFFFFFFF -#define SWAPTYPE Card32 -#endif /* SWAPUNIT==32 */ - -typedef SWAPTYPE *PSWAPTYPE; - -#endif /* SWAPUNIT */ - -/* - DEVICE_CONSISTENT indicates whether the bit order of raster memory is - consistent with the native byte order of the CPU. For configurations in - which the orders are inconsistent, DEVICE_CONSISTENT must be defined in - CFLAGS as 0 because the default value is 1. - - A DEVICE_CONSISTENT value of 0 (inconsistent order) imposes special - requirements on how the contents of raster memory are to be treated - when sending the raster data as video to a printer or display. - Either the SCANUNIT size must be 8 or the data must be sent as SCANUNIT - size chunks whose byte order is opposite the CPU native byte order. - - Any compile-time dependence on the following definitions requires building - separate package configurations for consistent and inconsistent orders. - */ - -#ifndef DEVICE_CONSISTENT -#if ISP == isp_i80486 || ISP == isp_ppc || ISP == isp_x64 || ISP == isp_ia64 -#define DEVICE_CONSISTENT 0 -#else -#define DEVICE_CONSISTENT 1 -#endif -#endif /* DEVICE_CONSISTENT */ - -#if (SWAPBITS == DEVICE_CONSISTENT) -#define LSHIFT >> -#define RSHIFT << -#define LSHIFTEQ >>= -#define RSHIFTEQ <<= -#else /* (SWAPBITS == DEVICE_CONSISTENT) */ -#define LSHIFT << -#define RSHIFT >> -#define LSHIFTEQ <<= -#define RSHIFTEQ >>= -#endif /* (SWAPBITS == DEVICE_CONSISTENT) */ - -#endif /* FRAMEPIXELTYPES_H */ diff --git a/c/public/lib/api/tx_shared.h b/c/public/lib/api/tx_shared.h new file mode 100644 index 000000000..7cc35d94c --- /dev/null +++ b/c/public/lib/api/tx_shared.h @@ -0,0 +1,568 @@ +/* Copyright 2014-2018 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. + This software is licensed as OpenSource, under the Apache License, Version 2.0. + This license is available at: http://opensource.org/licenses/Apache-2.0. */ + +/* + Code shared by tx, rotatefont, and mergefonts. + */ + +#include "ctlshare.h" +#include "cfembed.h" +#include "cffread.h" +#include "cffwrite.h" +#include "ctutil.h" +#include "dynarr.h" +#include "pdfwrite.h" +#include "sfntread.h" +#include "t1read.h" +#include "ttread.h" +#include "t1write.h" +#include "svread.h" +#include "svgwrite.h" +#include "uforead.h" +#include "ufowrite.h" +#include "txops.h" +#include "dictops.h" +#include "abfdesc.h" +#include "sha1.h" + +#undef global /* Remove conflicting definition from buildch */ + +#include +#include +#include + +#if PLAT_MAC +#include +#include +#endif /* PLAT_MAC */ + +#include +#include +#include +#include +#include +#include +#include + +#if _WIN32 +#include +#include +#define stat _stat +#define S_IFDIR _S_IFDIR +#include /* to get _mkdir() */ +#include +#else +#include +#endif + +/* ----------------------- Miscellaneous Definitions ----------------------- */ + +#define ARRAY_LEN(t) (sizeof(t) / sizeof((t)[0])) + +/* Predefined tags */ +#define CID__ CTL_TAG('C', 'I', 'D', ' ') /* sfnt-wrapped CID table */ +#define POST_ CTL_TAG('P', 'O', 'S', 'T') /* Macintosh POST resource */ +#define TYP1_ CTL_TAG('T', 'Y', 'P', '1') /* GX Type 1 sfnt table */ +#define sfnt_ CTL_TAG('s', 'f', 'n', 't') /* sfnt resource */ + +/* File signatures */ +#define sig_PostScript0 CTL_TAG('%', '!', 0x00, 0x00) +#define sig_PostScript1 CTL_TAG('%', 'A', 0x00, 0x00) /* %ADO... */ +#define sig_PostScript2 CTL_TAG('%', '%', 0x00, 0x00) /* %%... */ +#define sig_PFB ((ctlTag)0x80010000) +#define sig_CFF ((ctlTag)0x01000000) +#define sig_CFF2 ((ctlTag)0x02000000) +#define sig_OTF CTL_TAG('O', 'T', 'T', 'O') +#define sig_MacResource ((ctlTag)0x00000100) +#define sig_AppleSingle ((ctlTag)0x00051600) +#define sig_AppleDouble ((ctlTag)0x00051607) +#define sig_UFO CTL_TAG('<', '?', 'x', 'm') +/* Generate n-bit mask */ +#define N_BIT_MASK(n) (~(~0UL << (n))) +enum { MAX_VERSION_SIZE = 100 }; + +typedef struct txCtx_ *txCtx; /* tx program context */ + +typedef struct /* Macintosh resource info */ +{ + ctlTag type; + unsigned short id; + unsigned long name; /* Name offset then name index */ + unsigned char attrs; + unsigned long offset; /* Offset to resource data (excludes length) */ + unsigned long length; /* Length of resource data */ +} ResInfo; + +typedef struct /* AppleSingle/Double entry descriptor */ +{ + unsigned long id; + long offset; + unsigned long length; +} EntryDesc; + +typedef struct /* Glyph name to Unicode value mapping */ +{ + char *gname; + unsigned short uv; +} Name2UV; + +enum /* Stream types */ +{ + stm_Src, /* Source */ + stm_SrcUFO, /* Source */ + stm_Dst, /* Destination */ + stm_Tmp, /* Temporary */ + stm_Dbg /* Debug */ +}; + +#define TMPSIZE 50000 /* Temporary stream buffer size */ + +typedef struct /* Data stream */ +{ + short type; + short flags; +#define STM_TMP_ERR (1 << 0) /* Temporary stream error occured */ +#define STM_DONT_CLOSE (1 << 1) /* Don't close stream */ + char *filename; + FILE *fp; + char *buf; + size_t pos; /* Tmp stream position */ +} Stream; + +typedef struct /* Font record */ +{ + int type; /* Font technology type */ + int iTTC; /* TrueType Collection index */ + long offset; /* File offset */ +} FontRec; + +typedef struct /* CFF subr data */ +{ + unsigned long count; + unsigned char offSize; + unsigned long offset; /* Offset array base */ + unsigned long dataref; + dnaDCL(unsigned char, stemcnt); /* Per-subr stem count */ + unsigned short bias; +} SubrInfo; + +typedef struct /* cmap format 4 segment */ +{ + unsigned short endCode; + unsigned short startCode; + short idDelta; + unsigned long idRangeOffset; /* changed from unsigned short */ +} cmapSegment4; + +enum /* Charstring types */ +{ + dcf_CharString, + dcf_GlobalSubr, + dcf_LocalSubr +}; + +typedef float FltMtx[6]; /* Float matrix */ + +/* Function types */ +typedef size_t (*SegRefillFunc)(txCtx h, char **ptr); +typedef void (*abfGlyphWidthCallback)(abfGlyphCallbacks *cb, float hAdv); +typedef void (*DumpElementProc)(txCtx h, long index, const ctlRegion *region); + +enum /* Source font technology types */ +{ + src_Type1, /* Type 1 */ + src_OTF, /* OTF */ + src_CFF, /* Naked CFF */ + src_TrueType, /* TrueType */ + src_SVG, /* SVG data. */ + src_UFO, /* UFO data. */ +}; +/* Note that for mergeFonts.c, SVG is supported only as a merge font, + and not as the first in the set. */ + +enum /* Operation modes */ +{ + mode_dump, + mode_ps, + mode_afm, + mode_path, + mode_cff, + mode_cef, + mode_pdf, + mode_mtx, + mode_t1, + mode_bc, /* is deprecated, but still support the option in order to be able to print an error message */ + mode_svg, + mode_ufow, + mode_dcf +}; + +/* Memory allocation failure simulation control values */ +enum { + FAIL_REPORT = -1, /* Report total calls to mem_manage() */ + FAIL_INACTIVE = -2 /* Inactivate memory allocation failure */ +}; + +typedef struct +{ + unsigned long regionCount; +} RegionInfo; + +enum WhichApp { + APP_TX, + APP_ROTATEFONT, + APP_MERGEFONTS +}; + +struct txCtx_ { + char *progname; /* This program's name (for diagnostics) */ + enum WhichApp app; /* this application (used in shared code) */ + long flags; /* Control flags */ +#define SEEN_MODE (1 << 0) /* Flags mode option seen */ +#define DONE_FILE (1 << 1) /* Processed font file */ +#define DUMP_RES (1 << 2) /* Print mac resource map */ +#define DUMP_ASD (1 << 3) /* Print AppleSingle/Double data */ +#define AUTO_FILE_FROM_FILE (1 << 4) /* Gen. dst filename from src filename */ +#define AUTO_FILE_FROM_FONT (1 << 5) /* Gen. dst filename from src FontName */ +#define SUBSET_OPT (1 << 6) /* Subsetting option specified */ +#define EVERY_FONT (1 << 7) /* Read every font from multi-font file */ +#define SHOW_NAMES (1 << 8) /* Show filename and FontName being processed */ +#define PRESERVE_GID (1 << 9) /* Preserve gids when subsetting */ +#define NO_UDV_CLAMPING (1 << 10) /* Don't clamp UVD's */ +#define SUBSET__EXCLUDE_OPT (1 << 11) /* use glyph list to exclude glyphs, instead of including them */ +#define SUBSET_SKIP_NOTDEF (1 << 12) /* While this is set, don't force the notdef into the current subset. */ +#define SUBSET_HAS_NOTDEF (1 << 13) /* Indcates that notdef has been added, no need to force it in.*/ +#define PATH_REMOVE_OVERLAP (1 << 14) /* Do not remove path overlaps */ +#define PATH_SUPRESS_HINTS (1 << 15) /* Do not remove path overlaps */ + int mode; /* Current mode */ + char *modename; /* Name of current mode */ + void *appSpecificInfo; /* different data for rotateFont.c & mergeFonts.c */ + void (*appSpecificFree)(txCtx h); /* free for app-specific info */ + abfTopDict *top; /* Top dictionary */ + struct /* Source data */ + { + int type; /* Font technology type */ + Stream stm; /* Input stream */ + long offset; /* Buffer offset */ + long length; /* Buffer length */ + char buf[BUFSIZ]; /* Buffer data */ + char *end; /* One past end of buffer */ + char *next; /* Next byte available */ + int print_file; /* Flags when to print filename ahead of debug */ + dnaDCL(abfGlyphInfo *, glyphs); /* Source glyph list when subsetting */ + dnaDCL(abfGlyphInfo *, exclude); /* Excluded glyph list when subsetting */ + dnaDCL(float, widths); /* Source glyph width for -t1 -3 mode */ + dnaDCL(Stream, streamStack); /* support recursive opening of source stream files ( for components) */ + } src; + struct /* Destination data */ + { + Stream stm; /* Output stream */ + char buf[BUFSIZ]; /* Buffer data */ + void (*begset)(txCtx h); + void (*begfont)(txCtx h, abfTopDict *top); + void (*endfont)(txCtx h); + void (*endset)(txCtx h); + } dst; + dnaDCL(FontRec, fonts); /* Source font records */ + struct /* Macintosh resources */ + { + dnaDCL(ResInfo, map); /* Resouce map */ + dnaDCL(char, names); /* Resouce names */ + } res; + struct /* AppleSingle/Double data */ + { + unsigned long magic; /* Magic #, 00051600-single, 00051607-double */ + unsigned long version; /* Format version */ + dnaDCL(EntryDesc, entries); /* Entry descriptors */ + } asd; + struct /* Font data segment */ + { + SegRefillFunc refill; /* Format-specific refill */ + size_t left; /* Bytes remaining in segment */ + } seg; + struct /* Script file data */ + { + char *buf; /* Whole file buffer */ + dnaDCL(char *, args); /* Arg list */ + } script; + struct /* File processing */ + { + char *sr; /* Source root path */ + char *sd; /* Source directory path */ + char *dd; /* Destination directory path */ + char src[FILENAME_MAX]; + char dst[FILENAME_MAX]; + } file; + struct /* Random subset data */ + { + dnaDCL(unsigned short, glyphs); /* Tag list */ + dnaDCL(char, args); /* Simulated -g args */ + } subset; + struct /* Option args */ + { + char *U; + char *i; + char *p; + char *P; + struct /* Glyph list (g option) */ + { + int cnt; /* Substring count */ + char *substrs; /* Concatenated substrings */ + } g; + struct + { + int level; + } path; + struct /* cef-specific */ + { + unsigned short flags; /* cefEmbedSpec flags */ + char *F; + } cef; + } arg; + struct /* t1read library */ + { + t1rCtx ctx; + Stream tmp; + Stream dbg; + long flags; + } t1r; + struct /* cffread library */ + { + cfrCtx ctx; + Stream dbg; + long flags; + } cfr; + struct /* ttread library */ + { + ttrCtx ctx; + Stream dbg; + long flags; + } ttr; + struct /* svread library */ + { + svrCtx ctx; + Stream tmp; + Stream dbg; + long flags; + } svr; + struct /* uforead library */ + { + ufoCtx ctx; + Stream src; + Stream dbg; + long flags; + char *altLayerDir; + } ufr; + struct /* cffwrite library */ + { + cfwCtx ctx; + Stream tmp; + Stream dbg; + long flags; + unsigned long maxNumSubrs; + } cfw; + struct /* cfembed library */ + { + cefCtx ctx; + Stream src; + Stream tmp0; + Stream tmp1; + dnaDCL(cefSubsetGlyph, subset); + dnaDCL(char *, gnames); + dnaDCL(unsigned short, lookup); /* Glyph lookup */ + } cef; + struct /* abf facilities */ + { + abfCtx ctx; + struct abfDumpCtx_ dump; + struct abfDrawCtx_ draw; + struct abfMetricsCtx_ metrics; + struct abfAFMCtx_ afm; + } abf; + struct /* pdfwrite library */ + { + pdwCtx ctx; + long flags; + long level; + } pdw; + struct /* Metrics mode data */ + { + int level; /* Output level */ + struct /* Metric data */ + { + struct abfMetricsCtx_ ctx; + abfGlyphCallbacks cb; + } metrics; + struct /* Aggregate bbox */ + { + float left; + float bottom; + float right; + float top; + struct /* Glyph that set value */ + { + abfGlyphInfo *left; + abfGlyphInfo *bottom; + abfGlyphInfo *right; + abfGlyphInfo *top; + } setby; + } bbox; + } mtx; + struct /* t1write library */ + { + long options; /* Control options */ +#define T1W_NO_UID (1 << 0) /* Remove UniqueID keys */ +#define T1W_DECID (1 << 1) /* -decid option */ +#define T1W_USEFD (1 << 2) /* -usefd option */ +#define T1W_REFORMAT (1 << 3) /* -pfb or -LWFN options */ +#define T1W_WAS_EMBEDDED (1 << 4) /* +E option */ + t1wCtx ctx; + Stream tmp; + Stream dbg; + long flags; /* Library flags */ + int lenIV; + long maxGlyphs; + long fd; /* -decid target fd */ + dnaDCL(char, gnames); /* -decid glyph names */ + } t1w; + struct /* svgwrite library */ + { + long options; /* Control options */ + svwCtx ctx; + unsigned short unrec; + Stream tmp; + Stream dbg; + long flags; /* Library flags */ + } svw; + struct /* ufowrite library */ + { + ufwCtx ctx; + Stream tmp; + Stream dbg; + long flags; /* Library flags */ + } ufow; + struct /* Dump cff mode */ + { + long flags; /* Control flags */ +#define DCF_Header (1 << 0) +#define DCF_NameINDEX (1 << 1) +#define DCF_TopDICTINDEX (1 << 3) +#define DCF_StringINDEX (1 << 4) +#define DCF_GlobalSubrINDEX (1 << 5) +#define DCF_Encoding (1 << 6) +#define DCF_Charset (1 << 7) +#define DCF_FDSelect (1 << 8) +#define DCF_FDArrayINDEX (1 << 9) +#define DCF_CharStringsINDEX (1 << 10) +#define DCF_PrivateDICT (1 << 11) +#define DCF_LocalSubrINDEX (1 << 12) +#define DCF_AllTables N_BIT_MASK(13) +#define DCF_BreakFlowed (1 << 13) /* Break flowed objects */ +#define DCF_TableSelected (1 << 14) /* -T option used */ +#define DCF_Flatten (1 << 15) /* Flatten charstrings */ +#define DCF_SaveStemCnt (1 << 16) /* Save h/vstems counts */ +#define DCF_IS_CUBE (1 << 17) /* Font has Cube data - use different stack and op limits. */ +#define DCF_IS_CFF2 (1 << 18) /* Font has CFF table is CFF 2 */ +#define DCF_END_HINTS (1 << 19) /* have seen moveto */ + + int level; /* Dump level */ + char *sep; /* Flowed text separator */ + SubrInfo global; /* Global subrs */ + dnaDCL(SubrInfo, local); /* Local subrs */ + dnaDCL(unsigned char, glyph); /* Per-glyph stem count */ + dnaDCL(RegionInfo, varRegionInfo); + long stemcnt; /* Current stem count */ + long vsIndex; /* needed to derive numRegions */ + long numRegions; /* needed to decode blend args */ + SubrInfo *fd; /* Current local info */ + } dcf; + struct /* Operand stack */ + { + long cnt; + float array[CFF2_MAX_OP_STACK]; + } stack; + struct /* Font Dict filter */ + { + dnaDCL(int, fdIndices); /* Source glyph width for -t1 -3 mode */ + } fd; + struct /* OTF cmap encoding */ + { + dnaDCL(unsigned long, encoding); + dnaDCL(cmapSegment4, segment); + } cmap; + struct /* Library contexts */ + { + dnaCtx dna; /* dynarr library */ + sfrCtx sfr; /* sfntread library */ + } ctx; + struct /* Callbacks */ + { + ctlMemoryCallbacks mem; + ctlStreamCallbacks stm; + abfGlyphCallbacks glyph; + abfGlyphBegCallback saveGlyphBeg; + abfGlyphCallbacks save; + int selected; + } cb; + struct /* Memory allocation failure simulation data */ + { + long iCall; /* Index of next call to mem_manange */ + long iFail; /* Index of failing call or FAIL_REPORT or FAIL_INACTIVE */ + } failmem; + long maxOpStack; +}; + +/* Check stack contains at least n elements. */ +#define CHKUFLOW(n) \ + do { \ + if (h->stack.cnt < (n)) fatal(h, "Type 2 stack underflow"); \ + } while (0) + +/* Check stack has room for n elements. */ +#define CHKOFLOW(n) \ + do { \ + if (h->stack.cnt + (n) > h->maxOpStack) \ + fatal(h, "Type 2 stack overflow"); \ + } while (0) + +/* Stack access without check. */ +#define INDEX(i) (h->stack.array[i]) +#define POP() (h->stack.array[--h->stack.cnt]) +#define PUSH(v) (h->stack.array[h->stack.cnt++] = (float)(v)) + +/* SID to standard string length */ +#define SID2STD_LEN 391 /* number of entries in stdstr1.h */ + +enum /* Glyph selector types */ +{ + sel_by_tag, + sel_by_cid, + sel_by_name +}; + +void buildFontList(txCtx h); +void callbackGlyph(txCtx h, int type, unsigned short id, char *name); +void callbackSubset(txCtx h); +void dcf_ParseTableArg(txCtx h, char *arg); +void dstFileSetName(txCtx h, char *filename); +void CTL_CDECL fatal(txCtx h, char *fmt, ...); +void fileError(txCtx h, char *filename); +float *getUDV(txCtx h); +void memInit(txCtx h); +void memFree(txCtx h, void *ptr); +void *memNew(txCtx h, size_t size); +void parseFDSubset(txCtx h); +void prepOTF(txCtx h); +void prepSubset(txCtx h); +void printText(int cnt, char *text[]); +long randrange(long N); +void *safeManage(ctlMemoryCallbacks *cb, void *old, size_t size); +void seedtime(void); +void setMode(txCtx h, int mode); +void stmFree(txCtx h, Stream *s); +void stmInit(txCtx h); +void svrReadFont(txCtx h, long origin); +void t1rReadFont(txCtx h, long origin); +void ttrReadFont(txCtx h, long origin, int iTTC); +void ufoReadFont(txCtx h, long origin); diff --git a/c/public/lib/build/absfont/win/visualstudio/absfont.vcxproj b/c/public/lib/build/absfont/win/visualstudio/absfont.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/cfembed/win/visualstudio/cfembed.vcxproj b/c/public/lib/build/cfembed/win/visualstudio/cfembed.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/cffread/win/visualstudio/cffread.vcxproj b/c/public/lib/build/cffread/win/visualstudio/cffread.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/cffwrite/win/visualstudio/cffwrite.vcxproj b/c/public/lib/build/cffwrite/win/visualstudio/cffwrite.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/ctutil/win/visualstudio/ctutil.vcxproj b/c/public/lib/build/ctutil/win/visualstudio/ctutil.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/dynarr/win/visualstudio/dynarr.vcxproj b/c/public/lib/build/dynarr/win/visualstudio/dynarr.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/pdfwrite/win/visualstudio/pdfwrite.vcxproj b/c/public/lib/build/pdfwrite/win/visualstudio/pdfwrite.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/pstoken/win/visualstudio/pstoken.vcxproj b/c/public/lib/build/pstoken/win/visualstudio/pstoken.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/sfntread/win/visualstudio/sfntread.vcxproj b/c/public/lib/build/sfntread/win/visualstudio/sfntread.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/sfntwrite/win/visualstudio/sfntwrite.vcxproj b/c/public/lib/build/sfntwrite/win/visualstudio/sfntwrite.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/sha1/win/visualstudio/sha1.vcxproj b/c/public/lib/build/sha1/win/visualstudio/sha1.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/support/linux/gcc/debug/Makefile b/c/public/lib/build/support/linux/gcc/debug/Makefile index aa4790af2..ea566be9d 100755 --- a/c/public/lib/build/support/linux/gcc/debug/Makefile +++ b/c/public/lib/build/support/linux/gcc/debug/Makefile @@ -12,11 +12,11 @@ CFLAGS = $(STD_OPTS) -g -DSTAGE=DEVELOP ROOT_DIR = ../../../../.. SRC_DIR = $(ROOT_DIR)/source/support -LIB_SRCS = $(SRC_DIR)/bitarray.c \ +LIB_SRCS = \ $(SRC_DIR)/canthappen.c \ $(SRC_DIR)/except.c \ $(SRC_DIR)/fixed.c -LIB_OBJS = bitarray.o canthappen.o except.o fixed.o +LIB_OBJS = canthappen.o except.o fixed.o LIB_TARGET = $(LIB_DIR)/support.a @@ -27,9 +27,6 @@ TARGETS = $(LIB_TARGET) include ../../../../../config/linux/gcc/gcc_tx.mak # Object rules -bitarray.o: - $(CC) $(CFLAGS) -c $(SRC_DIR)/bitarray.c -o $@ - canthappen.o: $(CC) $(CFLAGS) -c $(SRC_DIR)/canthappen.c -o $@ diff --git a/c/public/lib/build/support/linux/gcc/release/Makefile b/c/public/lib/build/support/linux/gcc/release/Makefile index 9089c7c36..05da1efce 100755 --- a/c/public/lib/build/support/linux/gcc/release/Makefile +++ b/c/public/lib/build/support/linux/gcc/release/Makefile @@ -13,11 +13,11 @@ CFLAGS = $(STD_OPTS) ROOT_DIR = ../../../../.. SRC_DIR = $(ROOT_DIR)/source/support -LIB_SRCS = $(SRC_DIR)/bitarray.c \ +LIB_SRCS = \ $(SRC_DIR)/canthappen.c \ $(SRC_DIR)/except.c \ $(SRC_DIR)/fixed.c -LIB_OBJS = bitarray.o canthappen.o except.o fixed.o +LIB_OBJS = canthappen.o except.o fixed.o LIB_TARGET = $(LIB_DIR)/support.a @@ -28,9 +28,6 @@ TARGETS = $(LIB_TARGET) include ../../../../../config/linux/gcc/gcc_tx.mak # Object rules -bitarray.o: - $(CC) $(CFLAGS) -c $(SRC_DIR)/bitarray.c -o $@ - canthappen.o: $(CC) $(CFLAGS) -c $(SRC_DIR)/canthappen.c -o $@ diff --git a/c/public/lib/build/support/osx/xcode/support.xcodeproj/project.pbxproj b/c/public/lib/build/support/osx/xcode/support.xcodeproj/project.pbxproj index ff054120a..367fdb7b4 100644 --- a/c/public/lib/build/support/osx/xcode/support.xcodeproj/project.pbxproj +++ b/c/public/lib/build/support/osx/xcode/support.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - BD8A43950D885A240078BEDA /* bitarray.c in Sources */ = {isa = PBXBuildFile; fileRef = BD8A43910D885A240078BEDA /* bitarray.c */; }; BD8A43960D885A240078BEDA /* canthappen.c in Sources */ = {isa = PBXBuildFile; fileRef = BD8A43920D885A240078BEDA /* canthappen.c */; }; BD8A43970D885A240078BEDA /* except.c in Sources */ = {isa = PBXBuildFile; fileRef = BD8A43930D885A240078BEDA /* except.c */; }; BD8A43980D885A240078BEDA /* fixed.c in Sources */ = {isa = PBXBuildFile; fileRef = BD8A43940D885A240078BEDA /* fixed.c */; }; @@ -17,11 +16,9 @@ BD8A43A20D885A770078BEDA /* supportenvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = BD8A43A10D885A770078BEDA /* supportenvironment.h */; }; BD8A43A40D885A7D0078BEDA /* supportcanthappen.h in Headers */ = {isa = PBXBuildFile; fileRef = BD8A43A30D885A7D0078BEDA /* supportcanthappen.h */; }; BD8A43A60D885A870078BEDA /* supportexcept.h in Headers */ = {isa = PBXBuildFile; fileRef = BD8A43A50D885A870078BEDA /* supportexcept.h */; }; - BD8A43AA0D885AA10078BEDA /* supportframepixel.h in Headers */ = {isa = PBXBuildFile; fileRef = BD8A43A90D885AA10078BEDA /* supportframepixel.h */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - BD8A43910D885A240078BEDA /* bitarray.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = bitarray.c; path = ../../../../source/support/bitarray.c; sourceTree = SOURCE_ROOT; }; BD8A43920D885A240078BEDA /* canthappen.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = canthappen.c; path = ../../../../source/support/canthappen.c; sourceTree = SOURCE_ROOT; }; BD8A43930D885A240078BEDA /* except.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = except.c; path = ../../../../source/support/except.c; sourceTree = SOURCE_ROOT; }; BD8A43940D885A240078BEDA /* fixed.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fixed.c; path = ../../../../source/support/fixed.c; sourceTree = SOURCE_ROOT; }; @@ -31,7 +28,6 @@ BD8A43A10D885A770078BEDA /* supportenvironment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = supportenvironment.h; path = ../../../../api/supportenvironment.h; sourceTree = SOURCE_ROOT; }; BD8A43A30D885A7D0078BEDA /* supportcanthappen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = supportcanthappen.h; path = ../../../../api/supportcanthappen.h; sourceTree = SOURCE_ROOT; }; BD8A43A50D885A870078BEDA /* supportexcept.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = supportexcept.h; path = ../../../../api/supportexcept.h; sourceTree = SOURCE_ROOT; }; - BD8A43A90D885AA10078BEDA /* supportframepixel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = supportframepixel.h; path = ../../../../api/supportframepixel.h; sourceTree = SOURCE_ROOT; }; BD8A5AB90D6F8FA900301916 /* release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = release.xcconfig; path = ../../../../config/xcconfig/release.xcconfig; sourceTree = SOURCE_ROOT; }; BD8A5ABA0D6F8FA900301916 /* debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = debug.xcconfig; path = ../../../../config/xcconfig/debug.xcconfig; sourceTree = SOURCE_ROOT; }; D2AAC046055464E500DB518D /* libsupport.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libsupport.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,7 +59,6 @@ 08FB7795FE84155DC02AAC07 /* Source */ = { isa = PBXGroup; children = ( - BD8A43910D885A240078BEDA /* bitarray.c */, BD8A43920D885A240078BEDA /* canthappen.c */, BD8A43930D885A240078BEDA /* except.c */, BD8A43940D885A240078BEDA /* fixed.c */, @@ -97,7 +92,6 @@ BD8A43A10D885A770078BEDA /* supportenvironment.h */, BD8A43A30D885A7D0078BEDA /* supportcanthappen.h */, BD8A43A50D885A870078BEDA /* supportexcept.h */, - BD8A43A90D885AA10078BEDA /* supportframepixel.h */, ); name = Header; sourceTree = ""; @@ -122,7 +116,6 @@ BD8A43A20D885A770078BEDA /* supportenvironment.h in Headers */, BD8A43A40D885A7D0078BEDA /* supportcanthappen.h in Headers */, BD8A43A60D885A870078BEDA /* supportexcept.h in Headers */, - BD8A43AA0D885AA10078BEDA /* supportframepixel.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -175,7 +168,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BD8A43950D885A240078BEDA /* bitarray.c in Sources */, BD8A43960D885A240078BEDA /* canthappen.c in Sources */, BD8A43970D885A240078BEDA /* except.c in Sources */, BD8A43980D885A240078BEDA /* fixed.c in Sources */, diff --git a/c/public/lib/build/support/win/visualstudio/support.vcxproj b/c/public/lib/build/support/win/visualstudio/support.vcxproj old mode 100755 new mode 100644 index 77f54dcad..103b9f69c --- a/c/public/lib/build/support/win/visualstudio/support.vcxproj +++ b/c/public/lib/build/support/win/visualstudio/support.vcxproj @@ -132,7 +132,6 @@ - diff --git a/c/public/lib/build/svgwrite/win/visualstudio/svgwrite.vcxproj b/c/public/lib/build/svgwrite/win/visualstudio/svgwrite.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/svread/win/visualstudio/svread.vcxproj b/c/public/lib/build/svread/win/visualstudio/svread.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/t1cstr/win/visualstudio/t1cstr.vcxproj b/c/public/lib/build/t1cstr/win/visualstudio/t1cstr.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/t1read/win/visualstudio/t1read.vcxproj b/c/public/lib/build/t1read/win/visualstudio/t1read.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/t1write/win/visualstudio/t1write.vcxproj b/c/public/lib/build/t1write/win/visualstudio/t1write.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/t2cstr/win/visualstudio/t2cstr.vcxproj b/c/public/lib/build/t2cstr/win/visualstudio/t2cstr.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/ttread/win/visualstudio/ttread.vcxproj b/c/public/lib/build/ttread/win/visualstudio/ttread.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/tx_shared/linux/gcc/debug/Makefile b/c/public/lib/build/tx_shared/linux/gcc/debug/Makefile new file mode 100755 index 000000000..b7d11bc61 --- /dev/null +++ b/c/public/lib/build/tx_shared/linux/gcc/debug/Makefile @@ -0,0 +1,28 @@ +######################################################################### +# # +# Copyright 2018 Adobe Systems Incorporated. # +# All rights reserved. # +# # +######################################################################### + +# Configuration +CONFIG = debug +CFLAGS = $(STD_OPTS) + +# Library +ROOT_DIR = ../../../../.. +SRC_DIR = $(ROOT_DIR)/source/tx_shared + +LIB_SRCS = $(SRC_DIR)/tx_shared.c +LIB_OBJS = tx_shared.o +LIB_TARGET = $(LIB_DIR)/tx_shared.a + +# Build targets +TARGETS = $(LIB_TARGET) + +# Standard definitions +include ../../../../../config/linux/gcc/gcc_tx.mak + +# Object rules +tx_shared.o: + $(CC) $(CFLAGS) -c $(SRC_DIR)/tx_shared.c -o $@ diff --git a/c/public/lib/build/tx_shared/linux/gcc/release/Makefile b/c/public/lib/build/tx_shared/linux/gcc/release/Makefile new file mode 100755 index 000000000..b3053eb24 --- /dev/null +++ b/c/public/lib/build/tx_shared/linux/gcc/release/Makefile @@ -0,0 +1,28 @@ +######################################################################### +# # +# Copyright 2018 Adobe Systems Incorporated. # +# All rights reserved. # +# # +######################################################################### + +# Configuration +CONFIG = release +CFLAGS = $(STD_OPTS) + +# Library +ROOT_DIR = ../../../../.. +SRC_DIR = $(ROOT_DIR)/source/tx_shared + +LIB_SRCS = $(SRC_DIR)/tx_shared.c +LIB_OBJS = tx_shared.o +LIB_TARGET = $(LIB_DIR)/tx_shared.a + +# Build targets +TARGETS = $(LIB_TARGET) + +# Standard definitions +include ../../../../../config/linux/gcc/gcc_tx.mak + +# Object rules +tx_shared.o: + $(CC) $(CFLAGS) -c $(SRC_DIR)/tx_shared.c -o $@ diff --git a/c/public/lib/build/tx_shared/osx/xcode/tx_shared.xcodeproj/project.pbxproj b/c/public/lib/build/tx_shared/osx/xcode/tx_shared.xcodeproj/project.pbxproj new file mode 100644 index 000000000..c9c251f73 --- /dev/null +++ b/c/public/lib/build/tx_shared/osx/xcode/tx_shared.xcodeproj/project.pbxproj @@ -0,0 +1,353 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + DEBF3ECC219254A00022A4C6 /* tx_shared.c in Sources */ = {isa = PBXBuildFile; fileRef = DEBF3ECB219254A00022A4C6 /* tx_shared.c */; }; + DEBF3ECE219255490022A4C6 /* tx_shared.h in Headers */ = {isa = PBXBuildFile; fileRef = DEBF3ECD219255490022A4C6 /* tx_shared.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DE8577CD2192544500D4F584 /* libtx_shared.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libtx_shared.a; sourceTree = BUILT_PRODUCTS_DIR; }; + DEB51F1521936C12003011C0 /* debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = debug.xcconfig; path = ../../../../config/xcconfig/debug.xcconfig; sourceTree = ""; }; + DEB51F1621936C1F003011C0 /* release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = release.xcconfig; path = ../../../../config/xcconfig/release.xcconfig; sourceTree = ""; }; + DEBF3ECB219254A00022A4C6 /* tx_shared.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tx_shared.c; path = ../../../../source/tx_shared/tx_shared.c; sourceTree = ""; }; + DEBF3ECD219255490022A4C6 /* tx_shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tx_shared.h; path = ../../../../api/tx_shared.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DE8577CB2192544500D4F584 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DE8577C42192544500D4F584 = { + isa = PBXGroup; + children = ( + DEB51F1421936BED003011C0 /* xconfig */, + DEBF3ECA219254770022A4C6 /* Source */, + DEBF3EC9219254630022A4C6 /* Headers */, + DE8577CE2192544500D4F584 /* Products */, + ); + sourceTree = ""; + }; + DE8577CE2192544500D4F584 /* Products */ = { + isa = PBXGroup; + children = ( + DE8577CD2192544500D4F584 /* libtx_shared.a */, + ); + name = Products; + sourceTree = ""; + }; + DEB51F1421936BED003011C0 /* xconfig */ = { + isa = PBXGroup; + children = ( + DEB51F1621936C1F003011C0 /* release.xcconfig */, + DEB51F1521936C12003011C0 /* debug.xcconfig */, + ); + name = xconfig; + sourceTree = ""; + }; + DEBF3EC9219254630022A4C6 /* Headers */ = { + isa = PBXGroup; + children = ( + DEBF3ECD219255490022A4C6 /* tx_shared.h */, + ); + name = Headers; + sourceTree = ""; + }; + DEBF3ECA219254770022A4C6 /* Source */ = { + isa = PBXGroup; + children = ( + DEBF3ECB219254A00022A4C6 /* tx_shared.c */, + ); + name = Source; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + DE8577C92192544500D4F584 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + DEBF3ECE219255490022A4C6 /* tx_shared.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + DE8577CC2192544500D4F584 /* tx_shared */ = { + isa = PBXNativeTarget; + buildConfigurationList = DE8577D12192544500D4F584 /* Build configuration list for PBXNativeTarget "tx_shared" */; + buildPhases = ( + DE8577C92192544500D4F584 /* Headers */, + DE8577CA2192544500D4F584 /* Sources */, + DE8577CB2192544500D4F584 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = tx_shared; + productName = tx_shared; + productReference = DE8577CD2192544500D4F584 /* libtx_shared.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DE8577C52192544500D4F584 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = Adobe; + TargetAttributes = { + DE8577CC2192544500D4F584 = { + CreatedOnToolsVersion = 10.1; + }; + }; + }; + buildConfigurationList = DE8577C82192544500D4F584 /* Build configuration list for PBXProject "tx_shared" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = DE8577C42192544500D4F584; + productRefGroup = DE8577CE2192544500D4F584 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DE8577CC2192544500D4F584 /* tx_shared */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + DE8577CA2192544500D4F584 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DEBF3ECC219254A00022A4C6 /* tx_shared.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + DE8577CF2192544500D4F584 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DEB51F1521936C12003011C0 /* debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + DE8577D02192544500D4F584 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DEB51F1621936C1F003011C0 /* release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + }; + name = Release; + }; + DE8577D22192544500D4F584 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DEB51F1521936C12003011C0 /* debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; + CLANG_CXX_LIBRARY = "compiler-default"; + CLANG_ENABLE_MODULES = NO; + CLANG_ENABLE_OBJC_ARC = NO; + CODE_SIGN_STYLE = Automatic; + CONFIGURATION_BUILD_DIR = ../../../../lib/osx/debug; + COPY_PHASE_STRIP = NO; + EXECUTABLE_PREFIX = lib; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; + GCC_ENABLE_CPP_RTTI = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "OSX=1", + "OS=os_osx", + ); + HEADER_SEARCH_PATHS = ( + "../../../../api/**", + "../../../../resource/**", + ); + MACOSX_DEPLOYMENT_TARGET = 10.8; + OTHER_CFLAGS = "-fno-inline"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = NO; + }; + name = Debug; + }; + DE8577D32192544500D4F584 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DEB51F1621936C1F003011C0 /* release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; + CLANG_CXX_LIBRARY = "compiler-default"; + CLANG_ENABLE_MODULES = NO; + CLANG_ENABLE_OBJC_ARC = NO; + CODE_SIGN_STYLE = Automatic; + CONFIGURATION_BUILD_DIR = ../../../../lib/osx/release; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = YES; + EXECUTABLE_PREFIX = lib; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; + GCC_ENABLE_CPP_RTTI = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "OSX=1", + "OS=os_osx", + ); + HEADER_SEARCH_PATHS = ( + "../../../../api/**", + "../../../../resource/**", + ); + MACOSX_DEPLOYMENT_TARGET = 10.8; + OTHER_CFLAGS = "-fno-inline"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DE8577C82192544500D4F584 /* Build configuration list for PBXProject "tx_shared" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DE8577CF2192544500D4F584 /* Debug */, + DE8577D02192544500D4F584 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DE8577D12192544500D4F584 /* Build configuration list for PBXNativeTarget "tx_shared" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DE8577D22192544500D4F584 /* Debug */, + DE8577D32192544500D4F584 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = DE8577C52192544500D4F584 /* Project object */; +} diff --git a/c/public/lib/build/tx_shared/win/visualstudio/tx_shared.vcxproj b/c/public/lib/build/tx_shared/win/visualstudio/tx_shared.vcxproj new file mode 100644 index 000000000..9a2935b7f --- /dev/null +++ b/c/public/lib/build/tx_shared/win/visualstudio/tx_shared.vcxproj @@ -0,0 +1,156 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + 15.0 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54} + Win32Proj + tx_shared + 10.0.17134.0 + + + + StaticLibrary + true + $(DefaultPlatformToolset) + MultiByte + + + StaticLibrary + false + $(DefaultPlatformToolset) + false + MultiByte + + + StaticLibrary + true + $(DefaultPlatformToolset) + MultiByte + + + StaticLibrary + false + $(DefaultPlatformToolset) + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + Disabled + CTL_CDECL=__cdecl;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + ../../../../api;../../../../resource;%(AdditionalIncludeDirectories) + MultiThreadedDebug + + + Windows + + + + + + + Level3 + Disabled + CTL_CDECL=__cdecl;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + ../../../../api;../../../../resource;%(AdditionalIncludeDirectories) + ProgramDatabase + false + Default + MultiThreadedDebug + + + Windows + + + %(ExportNamedFunctions) + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;CTL_CDECL=__cdecl;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + ../../../../api;../../../../resource;%(AdditionalIncludeDirectories) + MultiThreaded + + + Windows + true + true + + + + + Level3 + + + MaxSpeed + + + false + NDEBUG;CTL_CDECL=__cdecl;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + ../../../../api;../../../../resource;%(AdditionalIncludeDirectories) + false + MultiThreaded + + + Windows + true + true + + + + %(ExportNamedFunctions) + + + + + + \ No newline at end of file diff --git a/c/public/lib/build/uforead/win/visualstudio/uforead.vcxproj b/c/public/lib/build/uforead/win/visualstudio/uforead.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/build/ufowrite/win/visualstudio/ufowrite.vcxproj b/c/public/lib/build/ufowrite/win/visualstudio/ufowrite.vcxproj old mode 100755 new mode 100644 diff --git a/c/public/lib/config/linux/gcc/gcc.mak b/c/public/lib/config/linux/gcc/gcc.mak old mode 100755 new mode 100644 diff --git a/c/public/lib/config/linux/gcc/gcc_tx.mak b/c/public/lib/config/linux/gcc/gcc_tx.mak old mode 100755 new mode 100644 diff --git a/c/public/lib/source/cffwrite/cffwrite_subr.c b/c/public/lib/source/cffwrite/cffwrite_subr.c index 549fd21dd..db5179041 100644 --- a/c/public/lib/source/cffwrite/cffwrite_subr.c +++ b/c/public/lib/source/cffwrite/cffwrite_subr.c @@ -175,9 +175,9 @@ struct Subr_ { Subr *next; /* Next member of social group */ Subr *output; /* Link to next subr for match trie output */ unsigned char *cstr; /* Charstring */ - unsigned short length; /* Subr length (original bytes spanned) */ + uint32_t length; /* Subr length (original bytes spanned) */ unsigned short count; /* Occurance count */ - short deltalen; /* Delta length */ + int32_t deltalen; /* Delta length */ short subrnum; /* Biased subr number */ short numsize; /* Size of subr number (1, 2, or 3 bytes) */ short maskcnt; /* hint/cntrmask count */ @@ -199,13 +199,13 @@ struct Link_ /* Social group link */ { Subr *subr; /* Superior/inferior subr */ Link *next; /* Next record */ - unsigned short offset; /* Offset within superior/inferior */ + uint32_t offset; /* Offset within superior/inferior */ }; typedef struct /* Subr call within charstring */ { Subr *subr; /* Inferior subr */ - unsigned short offset; /* Offset within charstring */ + unsigned offset; /* Offset within charstring */ } Call; typedef dnaDCL(Call, CallList); @@ -275,8 +275,8 @@ struct subrCtx_ { #define TEST_SUBR_PREFIX_MAP(ctx, str) ((ctx)->subrPrefixMap[SUBR_PREFIX_MAP_INDEX(str[0], str[1])] & SUBR_PREFIX_MAP_BIT(str[1])) #define SET_SUBR_PREFIX_MAP(ctx, str) ((ctx)->subrPrefixMap[SUBR_PREFIX_MAP_INDEX(str[0], str[1])] |= SUBR_PREFIX_MAP_BIT(str[1])) unsigned char subrPrefixMap[SUBR_PREFIX_MAP_SIZE]; /* bit table where a bit is set when its corresponding subr 2-byte prefix selected */ - dnaDCL(unsigned short, subrLenMap); /* boolean table where a value is set when any subr with the corresponding length is selected */ - dnaDCL(unsigned short, prefixLen); /* Prefix byte length for each byte in a charstring */ + dnaDCL(uint32_t, subrLenMap); /* boolean table where a value is set when any subr with the corresponding length is selected */ + dnaDCL(uint32_t, prefixLen); /* Prefix byte length for each byte in a charstring */ unsigned maxSubrLen; /* Maximum subr length */ unsigned minSubrLen; /* Minimum subr lenth */ @@ -456,7 +456,7 @@ static Link *newLink(subrCtx h, Subr *subr, unsigned offset, Link *next) { Link *link = (Link *)newObject(h, &h->linkBlks, sizeof(Link), LINKS_PER_BLK); link->subr = subr; link->next = next; - link->offset = (unsigned short)offset; + link->offset = (uint32_t)offset; return link; } @@ -1285,7 +1285,7 @@ static void saveSubr(subrCtx h, unsigned char *edgeEnd, Node *node, subr->next = NULL; subr->output = NULL; subr->cstr = edgeEnd - subrLen; - subr->length = (unsigned short)subrLen; + subr->length = (uint32_t)subrLen; subr->count = (unsigned short)count; subr->deltalen = 0; subr->numsize = 1; @@ -1543,7 +1543,7 @@ static void listUpSubrMatches(subrCtx h, unsigned char *pstart, long length, int c = dnaNEXT(*callList); c->subr = subr; c->subr->order = callList->cnt; - c->offset = (unsigned short)offset; + c->offset = (uint32_t)offset; } } } diff --git a/c/public/lib/source/cffwrite/cffwrite_t2cstr.c b/c/public/lib/source/cffwrite/cffwrite_t2cstr.c index d164c5598..dcf528bd0 100644 --- a/c/public/lib/source/cffwrite/cffwrite_t2cstr.c +++ b/c/public/lib/source/cffwrite/cffwrite_t2cstr.c @@ -106,6 +106,7 @@ struct cstrCtx_ { } deltaStack; int numBlends; unsigned short maxstack; + int flushed_cnt; /* Number of values flushed out and stored on the client's stack */ float x; /* Current x-coordinate */ float y; /* Current y-coordinate */ float start_x; /* x-coordinate of current path initial moveto */ @@ -153,10 +154,6 @@ void cfwCstrNew(cfwCtx g) { /* Link contexts */ h->g = g; g->ctx.cstr = h; - if (g->flags & CFW_WRITE_CFF2) - h->maxstack = CFF2_MAX_OP_STACK; - else - h->maxstack = T2_MAX_OP_STACK; dnaINIT(g->ctx.dnaFail, h->cstr, 500, 5000); dnaINIT(g->ctx.dnaFail, h->masks, 30, 60); @@ -252,6 +249,11 @@ static int glyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { h->seqop = tx_noop; h->x = 0; h->y = 0; + if (g->flags & CFW_WRITE_CFF2) + h->maxstack = CFF2_MAX_OP_STACK; + else + h->maxstack = T2_MAX_OP_STACK; + h->flushed_cnt = 0; h->stack.cnt = 0; h->deltaStack.cnt = 0; h->numBlends = 0; @@ -325,6 +327,7 @@ static void saveop(cstrCtx h, int op) { } h->stack.cnt = 0; } + h->flushed_cnt = 0; /* Save op */ switch (op) { @@ -361,16 +364,34 @@ static void saveopDirect(cstrCtx h, int op) { h->stack.cnt = 0; } + h->flushed_cnt = 0; cstr_saveop(h, op); h->pendop = tx_noop; /* Clear pending op */ } +/* Returns 1 if argcnt plus blended args may overflow the operand stack */ +static int checkOverflowByArg(cstrCtx h, int argcnt) +{ + int blend_arg_cnt = h->glyph.info->blendInfo.numRegions; + if (blend_arg_cnt > 0) + blend_arg_cnt++; /* number of args */ + return (h->stack.cnt + h->flushed_cnt + argcnt + blend_arg_cnt + + ((h->g->flags & CFW_SUBRIZE) ? 1 : 0)) > h->maxstack; +} + +/* Returns 1 if a new set of default and delta values pushed to the delta stack will overflow the operand stack */ +static int checkOverflow(cstrCtx h) +{ + return (h->stack.cnt + h->flushed_cnt + h->deltaStack.cnt + 1 + h->glyph.info->blendInfo.numRegions + 1 + + ((h->g->flags & CFW_SUBRIZE) ? 1 : 0)) > h->maxstack; +} + /* Check stack headroom and flush pending op if next op causes overflow. When subroutinizer is enabled, reserve one extra space for a subr number. Return 1 on error else 0. */ static void flushop(cstrCtx h, int argcnt) { - if (h->stack.cnt + argcnt + ((h->g->flags & CFW_SUBRIZE) ? 1 : 0) > h->maxstack) { + if (checkOverflowByArg(h, argcnt)) { saveop(h, h->pendop); } } @@ -484,11 +505,18 @@ static void pushBlendDeltas(cstrCtx h, abfBlendArg *blendArg) { static void flushBlends(cstrCtx h) { int i; - if ((h->deltaStack.cnt + h->stack.cnt) > 513) { + if ((h->deltaStack.cnt + 1 + h->stack.cnt + h->flushed_cnt + + ((h->g->flags & CFW_SUBRIZE) ? 1 : 0)) > CFF2_MAX_OP_STACK) { cfwCtx g = h->g; cfwFatal(g, cfwErrStackOverflow, "Blend overflow"); } + /* Note that even after numbers are flushed out of our stack, non-blended values and blended values + * will still occupy space on the client's stack so need to be taken into account during overflow check + * until a stack-clearing operator is issued. + */ + h->flushed_cnt += h->stack.cnt + h->numBlends; + for (i = 0; i < h->deltaStack.cnt; i++) PUSH(h->deltaStack.array[i]); PUSH(h->numBlends); @@ -509,7 +537,7 @@ static void flushBlends(cstrCtx h) { static void flushStemBlends(cstrCtx h) { cfwCtx g = h->g; int i; - if ((h->deltaStack.cnt + h->stack.cnt) > 513) { + if ((h->deltaStack.cnt + h->stack.cnt) > CFF2_MAX_OP_STACK) { cfwCtx g = h->g; cfwFatal(g, cfwErrStackOverflow, "Blend overflow"); } @@ -531,7 +559,7 @@ static void pushBlend(cstrCtx h, abfBlendArg *arg1) { if (h->numBlends > 0) flushBlends(h); } else { - if (((h->numBlends + 1) * h->glyph.info->blendInfo.numRegions + h->stack.cnt) > 513) { + if (checkOverflow(h)) { flushBlends(h); } pushBlendDeltas(h, arg1); @@ -547,7 +575,7 @@ static void pushStemBlends(cstrCtx h, abfBlendArg *arg1) { if (h->numBlends > 0) flushStemBlends(h); } else { - if (((h->numBlends + 1) * h->glyph.info->blendInfo.numRegions + h->stack.cnt) > 513) { + if (checkOverflow(h)) { flushStemBlends(h); } pushBlendDeltas(h, arg1); diff --git a/c/public/lib/source/support/bitarray.c b/c/public/lib/source/support/bitarray.c deleted file mode 100644 index 9f1f69d63..000000000 --- a/c/public/lib/source/support/bitarray.c +++ /dev/null @@ -1,103 +0,0 @@ -/* Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. - This software is licensed as OpenSource, under the Apache License, Version 2.0. - This license is available at: http://opensource.org/licenses/Apache-2.0. */ - -/* - bitarray.c -*/ - -#include "supportenvironment.h" -#include "supportframepixel.h" - -/* NOTE: In the PostScript Environment the following leftBitArray and - rigthBitArrays are defined in the patternimpl.c module in the - devpattern package. -*/ - -#if SWAPBITS == DEVICE_CONSISTENT - -#if SWAPUNIT == 8 -PUBLIC readonly SWAPTYPE leftBitArray[SWAPUNIT] = - {0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80}; - -PUBLIC readonly SWAPTYPE rightBitArray[SWAPUNIT] = - {0x0, 0x1, 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f}; - -#endif /* SWAPUNIT==8 */ - -#if SWAPUNIT == 16 -PUBLIC readonly SWAPTYPE leftBitArray[SWAPUNIT] = - {0xffff, 0xfffe, 0xfffc, 0xfff8, 0xfff0, 0xffe0, 0xffc0, 0xff80, - 0xff00, 0xfe00, 0xfc00, 0xf800, 0xf000, 0xe000, 0xc000, 0x8000}; - -PUBLIC readonly SWAPTYPE rightBitArray[SWAPUNIT] = - {0x0, 0x1, 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, - 0xff, 0x1ff, 0x3ff, 0x7ff, 0xfff, 0x1fff, 0x3fff, 0x7fff}; - -#endif /* SWAPUNIT==16 */ - -#if SWAPUNIT == 32 -PUBLIC readonly SWAPTYPE leftBitArray[SWAPUNIT] = - {0xffffffffL, 0xfffffffeL, 0xfffffffcL, 0xfffffff8L, - 0xfffffff0L, 0xffffffe0L, 0xffffffc0L, 0xffffff80L, - 0xffffff00L, 0xfffffe00L, 0xfffffc00L, 0xfffff800L, - 0xfffff000L, 0xffffe000L, 0xffffc000L, 0xffff8000L, - 0xffff0000L, 0xfffe0000L, 0xfffc0000L, 0xfff80000L, - 0xfff00000L, 0xffe00000L, 0xffc00000L, 0xff800000L, - 0xff000000L, 0xfe000000L, 0xfc000000L, 0xf8000000L, - 0xf0000000L, 0xe0000000L, 0xc0000000L, 0x80000000L}; - -PUBLIC readonly SWAPTYPE rightBitArray[SWAPUNIT] = - {0x00000000L, 0x00000001L, 0x00000003L, 0x00000007L, - 0x0000000fL, 0x0000001fL, 0x0000003fL, 0x0000007fL, - 0x000000ffL, 0x000001ffL, 0x000003ffL, 0x000007ffL, - 0x00000fffL, 0x00001fffL, 0x00003fffL, 0x00007fffL, - 0x0000ffffL, 0x0001ffffL, 0x0003ffffL, 0x0007ffffL, - 0x000fffffL, 0x001fffffL, 0x003fffffL, 0x007fffffL, - 0x00ffffffL, 0x01ffffffL, 0x03ffffffL, 0x07ffffffL, - 0x0fffffffL, 0x1fffffffL, 0x3fffffffL, 0x7fffffffL}; - -#endif /* SWAPUNIT==32 */ - -#else /* SWAPBITS != DEVICE_CONSISTENT */ - -#if SWAPUNIT == 8 -PUBLIC readonly SWAPTYPE leftBitArray[SWAPUNIT] = - {0xff, 0x7f, 0x3f, 0x1f, 0xf, 0x7, 0x3, 0x1}; - -PUBLIC readonly SWAPTYPE rightBitArray[SWAPUNIT] = - {0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe}; - -#endif /* SWAPUNIT==8 */ - -#if SWAPUNIT == 16 -PUBLIC readonly SWAPTYPE leftBitArray[SWAPUNIT] = - {0xffff, 0x7fff, 0x3fff, 0x1fff, 0xfff, 0x7ff, 0x3ff, 0x1ff, - 0xff, 0x7f, 0x3f, 0x1f, 0xf, 0x7, 0x3, 0x1}; - -PUBLIC readonly SWAPTYPE rightBitArray[SWAPUNIT] = - {0x0000, 0x8000, 0xc000, 0xe000, 0xf000, 0xf800, 0xfc00, 0xfe00, - 0xff00, 0xff80, 0xffc0, 0xffe0, 0xfff0, 0xfff8, 0xfffc, 0xfffe}; - -#endif /* SWAPUNIT==16 */ - -#if SWAPUNIT == 32 -PUBLIC readonly SWAPTYPE leftBitArray[SWAPUNIT] = - {0xffffffffUL, 0x7fffffffL, 0x3fffffffL, 0x1fffffffL, 0xfffffffL, 0x7ffffffL, - 0x3ffffffL, 0x1ffffffL, 0xffffffL, 0x7fffffL, 0x3fffffL, 0x1fffffL, - 0xfffffL, 0x7ffffL, 0x3ffffL, 0x1ffffL, - 0xffffL, 0x7fffL, 0x3fffL, 0x1fffL, 0xfffL, 0x7ffL, 0x3ffL, 0x1ffL, - 0xffL, 0x7fL, 0x3fL, 0x1fL, 0xfL, 0x7L, 0x3L, 0x1L}; - -PUBLIC readonly SWAPTYPE rightBitArray[SWAPUNIT] = - {0x00000000UL, 0x80000000UL, 0xc0000000UL, 0xe0000000UL, 0xf0000000UL, - 0xf8000000UL, 0xfc000000UL, 0xfe000000UL, 0xff000000UL, 0xff800000UL, - 0xffc00000UL, 0xffe00000UL, 0xfff00000UL, 0xfff80000UL, 0xfffc0000UL, - 0xfffe0000UL, 0xffff0000UL, 0xffff8000UL, 0xffffc000UL, 0xffffe000UL, - 0xfffff000UL, 0xfffff800UL, 0xfffffc00UL, 0xfffffe00UL, 0xffffff00UL, - 0xffffff80UL, 0xffffffc0UL, 0xffffffe0UL, 0xfffffff0UL, 0xfffffff8UL, - 0xfffffffcUL, 0xfffffffeUL}; - -#endif /* SWAPUNIT==32 */ - -#endif /* SWAPBITS != DEVICE_CONSISTENT */ diff --git a/c/public/lib/source/tx_shared/tx_shared.c b/c/public/lib/source/tx_shared/tx_shared.c new file mode 100644 index 000000000..2bd66aa9a --- /dev/null +++ b/c/public/lib/source/tx_shared/tx_shared.c @@ -0,0 +1,5546 @@ +/* Copyright 2018 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. + This software is licensed as OpenSource, under the Apache License, Version 2.0. + This license is available at: http://opensource.org/licenses/Apache-2.0. */ + +/* Code shared by tx, rotatefont, and mergefonts. */ + +#include "tx_shared.h" + +static void dumpCstr(txCtx h, const ctlRegion *region, int inSubr); + +/* ----------------------------- Error Handling ---------------------------- */ + +/* If first debug message for source file; print filename */ +static void printFilename(txCtx h) { + fflush(stdout); + if (h->src.print_file) { + fprintf(stderr, "%s: --- %s\n", h->progname, + strcmp(h->src.stm.filename, "-") == 0 ? "stdin" : h->src.stm.filename); + h->src.print_file = 0; + } +} + +/* Fatal exception handler. */ +void CTL_CDECL fatal(txCtx h, char *fmt, ...) { + printFilename(h); + if (fmt != NULL) { + /* Print error message */ + va_list ap; + fprintf(stderr, "%s: ", h->progname); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fprintf(stderr, "\n"); + } + fprintf(stderr, "%s: fatal error\n", h->progname); + h->appSpecificFree(h); + exit(EXIT_FAILURE); +} + +/* Print file error message and quit */ +void fileError(txCtx h, char *filename) { + fatal(h, "file error <%s> [%s]", strerror(errno), filename); +} + +/* --------------------------- Memory Management --------------------------- */ + +/* Allocate memory. */ +void *memNew(txCtx h, size_t size) { + void *ptr = malloc(size); + if (ptr == NULL) + fatal(h, "no memory"); + return ptr; +} + +/* Free memory. */ +void memFree(txCtx h, void *ptr) { + if (ptr != NULL) + free(ptr); +} + +/* ---------------------------- Memory Callbacks --------------------------- */ + +/* Manage memory. */ +static void *mem_manage(ctlMemoryCallbacks *cb, void *old, size_t size) { + if (size > 0) { + txCtx h = cb->ctx; + if (h->failmem.iCall++ == h->failmem.iFail) { + /* Simulate memory allocation failure */ + fprintf(stderr, "mem_manage() failed on call %ld.\n", + h->failmem.iCall - 1L); + return NULL; + } else if (old == NULL) + return malloc(size); /* size != 0, old == NULL */ + else + return realloc(old, size); /* size != 0, old != NULL */ + } else { + if (old == NULL) + return NULL; /* size == 0, old == NULL */ + else { + free(old); /* size == 0, old != NULL */ + return NULL; + } + } +} + +/* Initialize memory callbacks. */ +void memInit(txCtx h) { + h->cb.mem.ctx = h; + h->cb.mem.manage = mem_manage; + h->failmem.iCall = 0; + h->failmem.iFail = FAIL_INACTIVE; +} + +/* Manage memory and handle failure. */ +void *safeManage(ctlMemoryCallbacks *cb, void *old, size_t size) { + txCtx h = cb->ctx; + void *ptr = h->cb.mem.manage(&h->cb.mem, old, size); + if (size > 0 && ptr == NULL) + fatal(h, "no memory"); + return ptr; +} + +/* ------------------------------- Tmp Stream ------------------------------ */ + +/* Intialize tmp stream. */ +static void tmpSet(Stream *s, char *filename) { + s->type = stm_Tmp; + s->flags = 0; + s->filename = filename; + s->fp = NULL; + s->buf = NULL; + s->pos = 0; +} + +/* Open tmp stream. */ +static Stream *tmp_open(txCtx h, Stream *s) { + s->buf = memNew(h, TMPSIZE + BUFSIZ); + memset(s->buf, 0, TMPSIZE + BUFSIZ); + s->fp = tmpfile(); + if (s->fp == NULL) + fileError(h, s->filename); + return s; +} + +/* Seek on tmp stream. */ +static int tmp_seek(Stream *s, long offset) { + s->pos = offset; + return (offset < TMPSIZE) ? 0 : fseek(s->fp, offset - TMPSIZE, SEEK_SET); +} + +/* Return tmp stream position. */ +static size_t tmp_tell(Stream *s) { + return s->pos; +} + +/* Read tmp stream. */ +static size_t tmp_read(Stream *s, char **ptr) { + size_t length; + if (s->pos < TMPSIZE) { + /* Using buffer */ + *ptr = s->buf + s->pos; + length = TMPSIZE - s->pos; + + /* Anticipate next read */ + if (fseek(s->fp, 0, SEEK_SET) == -1) { + s->flags |= STM_TMP_ERR; + return 0; + } + } else { + /* Using file */ + *ptr = s->buf + TMPSIZE; + length = fread(*ptr, 1, BUFSIZ, s->fp); + } + s->pos += length; + return length; +} + +/* Write to tmp stream. */ +static size_t tmp_write(Stream *s, size_t count, char *ptr) { + if (s->pos < TMPSIZE) { + size_t length; + /* Writing to buffer */ + length = TMPSIZE - s->pos; + if (length > count) + memcpy(s->buf + s->pos, ptr, count); + else { + /* Buffer overflow; completely fill buffer */ + memcpy(s->buf + s->pos, ptr, length); + + /* Write rest to tmp file */ + if (fseek(s->fp, 0, SEEK_SET) == -1) { + s->flags = STM_TMP_ERR; + return 0; + } + count = length + fwrite(ptr + length, 1, count - length, s->fp); + } + } else + /* Writing to file */ + count = fwrite(ptr, 1, count, s->fp); + s->pos += count; + return count; +} + +/* Close tmp stream. */ +static int tmp_close(txCtx h, Stream *s) { + int result = (s->fp != NULL) ? fclose(s->fp) : 0; + if (s->buf != NULL) + memFree(h, s->buf); + s->fp = NULL; + s->buf = NULL; + s->pos = 0; + return result; +} + +/* ---------------------------- Stream Callbacks --------------------------- */ + +/* Open stream. */ +static void *stm_open(ctlStreamCallbacks *cb, int id, size_t size) { + txCtx h = cb->direct_ctx; + Stream *s = NULL; /* Suppress optimizer warning */ + switch (id) { + case CEF_SRC_STREAM_ID: + /* Open CEF source stream */ + s = &h->cef.src; + if (strcmp(s->filename, "-") == 0) + s->fp = stdin; + else { + s->fp = fopen(s->filename, "rb"); + if (s->fp == NULL) + return NULL; + } + break; + case T1R_SRC_STREAM_ID: + case CFR_SRC_STREAM_ID: + case TTR_SRC_STREAM_ID: + case SVR_SRC_STREAM_ID: + /* Source stream already open; just return it */ + s = &h->src.stm; + break; + case UFO_SRC_STREAM_ID: { + if (cb->clientFileName != NULL) { + char buffer[FILENAME_MAX]; + sprintf(buffer, "%s/%s", h->file.src, cb->clientFileName); + s = &h->src.stm; + s->type = stm_SrcUFO; + s->fp = fopen(buffer, "rb"); + if (s->fp == NULL) { + return NULL; + } + *dnaNEXT(h->src.streamStack) = *s; + } else + return NULL; + break; + } + case CEF_DST_STREAM_ID: + /* Open CEF destination stream */ + s = &h->dst.stm; + if (strcmp(s->filename, "-") == 0) + s->fp = stdout; + else { + s->fp = fopen(s->filename, "w+b"); + if (s->fp == NULL) + return NULL; + } + break; + case CFW_DST_STREAM_ID: + case T1W_DST_STREAM_ID: + case PDW_DST_STREAM_ID: + case SVW_DST_STREAM_ID: + /* Open destination stream */ + s = &h->dst.stm; + if (strcmp(s->filename, "-") == 0) + s->fp = stdout; + else { + s->fp = fopen(s->filename, "wb"); + if (s->fp == NULL) + return NULL; + } + break; + case UFW_DST_STREAM_ID: { + if (cb->clientFileName != NULL) { + char buffer[FILENAME_MAX]; + sprintf(buffer, "%s/%s", h->file.dst, cb->clientFileName); + s = &h->dst.stm; + + s->fp = fopen(buffer, "wt"); + if (s->fp == NULL) { + return NULL; + } + } else + return NULL; + break; + } + case CEF_TMP0_STREAM_ID: + s = &h->cef.tmp0; + tmp_open(h, s); + break; + case CEF_TMP1_STREAM_ID: + s = &h->cef.tmp1; + tmp_open(h, s); + break; + case T1R_TMP_STREAM_ID: + s = &h->t1r.tmp; + tmp_open(h, s); + break; + case SVR_TMP_STREAM_ID: + s = &h->svr.tmp; + tmp_open(h, s); + break; + case CFW_TMP_STREAM_ID: + s = &h->cfw.tmp; + tmp_open(h, s); + break; + case T1W_TMP_STREAM_ID: + s = &h->t1w.tmp; + tmp_open(h, s); + break; + case SVW_TMP_STREAM_ID: + s = &h->svw.tmp; + tmp_open(h, s); + break; + case T1R_DBG_STREAM_ID: + s = &h->t1r.dbg; + break; + case SVR_DBG_STREAM_ID: + s = &h->svr.dbg; + break; + case UFO_DBG_STREAM_ID: + s = &h->ufr.dbg; + break; + case UFW_DBG_STREAM_ID: + s = &h->ufow.dbg; + break; + case CFR_DBG_STREAM_ID: + s = &h->cfr.dbg; + break; + case TTR_DBG_STREAM_ID: + s = &h->ttr.dbg; + break; + case CFW_DBG_STREAM_ID: + s = &h->cfw.dbg; + if (s->fp == NULL) + return NULL; + break; + case T1W_DBG_STREAM_ID: + s = &h->t1w.dbg; + if (s->fp == NULL) + return NULL; + break; + case SVW_DBG_STREAM_ID: + s = &h->svw.dbg; + if (s->fp == NULL) + return NULL; + break; + default: + fatal(h, "invalid stream open"); + } + return s; +} + +/* Seek to stream position. */ +static int stm_seek(ctlStreamCallbacks *cb, void *stream, long offset) { + if (offset >= 0) { + Stream *s = stream; + switch (s->type) { + case stm_Src: + case stm_SrcUFO: + case stm_Dst: + case stm_Dbg: + return fseek(s->fp, offset, SEEK_SET); + case stm_Tmp: + return tmp_seek(s, offset); + } + } + return -1; /* Bad seek */ +} + +/* Return stream position. */ +static long stm_tell(ctlStreamCallbacks *cb, void *stream) { + Stream *s = stream; + switch (s->type) { + case stm_Src: + case stm_SrcUFO: + case stm_Dbg: + return ftell(s->fp); + break; + case stm_Dst: + if (0 != strcmp("-", s->filename)) + return ftell(s->fp); + break; + + case stm_Tmp: + return (long)tmp_tell(s); + } + return 0; /* Suppress compiler warning */ +} + +/* Read from stream. */ +static size_t stm_read(ctlStreamCallbacks *cb, void *stream, char **ptr) { + Stream *s = stream; + switch (s->type) { + case stm_Src: + case stm_SrcUFO: { + txCtx h = cb->direct_ctx; + if (h->seg.refill != NULL) + return h->seg.refill(h, ptr); + } + /* Fall through */ + case stm_Dst: + *ptr = s->buf; + return fread(s->buf, 1, BUFSIZ, s->fp); + case stm_Tmp: + return tmp_read(s, ptr); + } + return 0; /* Suppress compiler warning */ +} + +/* Write to stream. */ +static size_t stm_write(ctlStreamCallbacks *cb, void *stream, + size_t count, char *ptr) { + Stream *s = stream; + switch (s->type) { + case stm_Src: + case stm_SrcUFO: + case stm_Dst: + return fwrite(ptr, 1, count, s->fp); + case stm_Tmp: + return tmp_write(s, count, ptr); + case stm_Dbg: { + txCtx h = cb->direct_ctx; + printFilename(h); + fprintf(stderr, "%s: (%s) %.*s\n", + h->progname, s->filename, (int)count, ptr); + } + return count; + } + return 0; /* Suppress compiler warning */ +} + +/* Return stream status. */ +static int stm_status(ctlStreamCallbacks *cb, void *stream) { + Stream *s = stream; + if (s->type == stm_Tmp) { + if (s->flags & STM_TMP_ERR) + return CTL_STREAM_ERROR; + else if (s->pos < TMPSIZE) + return CTL_STREAM_OK; + } + if (feof(s->fp)) + return CTL_STREAM_END; + else if (ferror(s->fp)) + return CTL_STREAM_ERROR; + else + return CTL_STREAM_OK; +} + +/* Close stream. */ +static int stm_close(ctlStreamCallbacks *cb, void *stream) { + txCtx h = cb->direct_ctx; + Stream *s = stream; + if (s->type == stm_Tmp) + return tmp_close(cb->direct_ctx, s); + else if (s->fp == NULL || s->fp == stdout || s->flags & STM_DONT_CLOSE) + return 0; + else { + int retval; + FILE *fp = s->fp; + retval = fclose(fp); + s->fp = NULL; /* Avoid re-close */ + if (s->type == stm_SrcUFO) { + h->src.streamStack.cnt--; + if (h->src.streamStack.cnt > 0) + *s = h->src.streamStack.array[h->src.streamStack.cnt - 1]; + } + return retval; + } +} + +/* Initialize stream record. */ +static void stmSet(Stream *s, int type, char *filename, char *buf) { + s->type = type; + s->flags = 0; + s->filename = filename; + s->fp = NULL; + s->buf = buf; + s->pos = 0; +} + +/* Initialize debug stream. */ +static void dbgSet(Stream *s, char *filename) { + s->type = stm_Dbg; + s->flags = STM_DONT_CLOSE; + s->filename = filename; + s->fp = stderr; + s->buf = NULL; + s->pos = 0; +} + +/* Close steam at exit if still open. */ +void stmFree(txCtx h, Stream *s) { + if (s->fp != NULL) + (void)fclose(s->fp); +} + +/* Initialize stream callbacks and stream records. */ +void stmInit(txCtx h) { + h->cb.stm.direct_ctx = h; + h->cb.stm.indirect_ctx = NULL; + h->cb.stm.clientFileName = NULL; + h->cb.stm.open = stm_open; + h->cb.stm.seek = stm_seek; + h->cb.stm.tell = stm_tell; + h->cb.stm.read = stm_read; + h->cb.stm.write = stm_write; + h->cb.stm.status = stm_status; + h->cb.stm.close = stm_close; + + stmSet(&h->src.stm, stm_Src, h->file.src, h->src.buf); + stmSet(&h->dst.stm, stm_Dst, h->file.dst, h->dst.buf); + + stmSet(&h->cef.src, stm_Src, h->file.src, h->src.buf); + + tmpSet(&h->cef.tmp0, "(cef) tmpfile0"); + tmpSet(&h->cef.tmp1, "(cef) tmpfile1"); + tmpSet(&h->t1r.tmp, "(t1r) tmpfile"); + tmpSet(&h->cfw.tmp, "(cfw) tmpfile"); + tmpSet(&h->t1w.tmp, "(t1w) tmpfile"); + tmpSet(&h->svw.tmp, "(svw) tmpfile"); + tmpSet(&h->svw.tmp, "(ufw) tmpfile"); + + dbgSet(&h->t1r.dbg, "t1r"); + dbgSet(&h->cfr.dbg, "cfr"); + dbgSet(&h->svr.dbg, "svr"); + dbgSet(&h->ufr.dbg, "ufr"); + dbgSet(&h->ufow.dbg, "ufw"); + dbgSet(&h->ttr.dbg, "ttr"); + dbgSet(&h->cfw.dbg, "cfw"); + dbgSet(&h->t1w.dbg, "t1w"); + dbgSet(&h->svw.dbg, "svw"); +} + +/* ----------------------------- File Handling ----------------------------- */ + +/* Initialize destination filename. */ +void dstFileSetName(txCtx h, char *filename) { + if (h->file.dd != NULL) + sprintf(h->file.dst, "%s/%s", h->file.dd, filename); + else + strcpy(h->file.dst, filename); +} + +/* Set automatic destination filename. */ +static void dstFileSetAutoName(txCtx h, abfTopDict *top) { + char buf[FILENAME_MAX]; + char *filename; + + if (h->flags & AUTO_FILE_FROM_FILE) { + char *p = strrchr(h->file.src, '/'); + if (p == NULL) + p = strrchr(h->file.src, '\\'); + strcpy(buf, (p == NULL) ? h->file.src : p + 1); + p = strrchr(buf, '.'); + if (p != NULL) + *p = '\0'; + filename = buf; + } else if (h->flags & AUTO_FILE_FROM_FONT) + filename = (top->sup.flags & ABF_CID_FONT) ? top->cid.CIDFontName.ptr : top->FDArray.array[0].FontName.ptr; + else + return; + + if (h->file.dd != NULL) + sprintf(h->file.dst, "%s/%s.%s", h->file.dd, filename, h->modename); + else + sprintf(h->file.dst, "%s.%s", filename, h->modename); +} + +/* Open destination file. */ +static void dstFileOpen(txCtx h, abfTopDict *top) { + dstFileSetAutoName(h, top); + + if (h->dst.stm.fp != NULL) + return; /* Already open */ + + /* Open dstination file */ + if (strcmp(h->dst.stm.filename, "-") == 0) + h->dst.stm.fp = stdout; + else { + h->dst.stm.fp = fopen(h->dst.stm.filename, "w"); + if (h->dst.stm.fp == NULL) + fileError(h, h->dst.stm.filename); + } +} + +/* Close destination file. */ +static void dstFileClose(txCtx h) { + if (h->dst.stm.fp != stdout) { + if (fclose(h->dst.stm.fp)) + fileError(h, h->dst.stm.filename); + } + h->dst.stm.fp = NULL; +} + +/* ------------------------------- Data Input ------------------------------ */ + +/* Fill source buffer. */ +static void fillbuf(txCtx h, long offset) { + h->src.length = (long)fread(h->src.buf, 1, sizeof(h->src.buf), h->src.stm.fp); + if (h->src.length == 0) { + if (feof(h->src.stm.fp)) + fatal(h, "end of file [%s]", h->src.stm.filename); + else + fileError(h, h->src.stm.filename); + } else { + h->src.offset = offset; + h->src.next = h->src.buf; + h->src.end = h->src.buf + h->src.length; + } + return; +} + +/* Read next sequential source buffer; update offset and return first byte. */ +static char nextbuf(txCtx h) { + fillbuf(h, h->src.offset + h->src.length); + return *h->src.next++; +} + +/* Seek to buffered data byte. */ +static void bufSeek(txCtx h, long offset) { + long delta = offset - h->src.offset; + if (delta >= 0 && delta < h->src.length) + /* Offset within current buffer; reposition next byte */ + h->src.next = h->src.buf + delta; + else { + if (fseek(h->src.stm.fp, offset, SEEK_SET)) + fileError(h, h->src.stm.filename); + fillbuf(h, offset); + } +} + +/* Copy count bytes from source stream. */ +static void readN(txCtx h, size_t count, char *ptr) { + size_t left = h->src.end - h->src.next; + + while (left < count) { + /* Copy buffer */ + memcpy(ptr, h->src.next, left); + ptr += left; + count -= left; + + /* Refill buffer */ + fillbuf(h, h->src.offset + h->src.length); + left = h->src.length; + } + + memcpy(ptr, h->src.next, count); + h->src.next += count; +} + +#define read1(h) \ + (unsigned char)((h->src.next == h->src.end) ? nextbuf(h) : *h->src.next++) + +/* Read 2-byte number. */ +static unsigned short read2(txCtx h) { + unsigned short value = read1(h) << 8; + return value | read1(h); +} + +/* Read 2-byte signed number. */ +static short sread2(txCtx h) { + unsigned short value = read1(h) << 8; + value |= read1(h); +#if SHRT_MAX == 32767 + return (short)value; +#else + return (short)((value > 32767) ? value - 65536 : value); +#endif +} + +/* Read 4-byte number. */ +static unsigned long read4(txCtx h) { + unsigned long value = (unsigned long)read1(h) << 24; + value |= (unsigned long)read1(h) << 16; + value |= read1(h) << 8; + return value | read1(h); +} + +/* Read 1-, 2-, 3-, or 4-byte number. */ +static unsigned long readn(txCtx h, int n) { + unsigned long value = 0; + switch (n) { + case 4: + value = read1(h); + case 3: + value = value << 8 | read1(h); + case 2: + value = value << 8 | read1(h); + case 1: + value = value << 8 | read1(h); + } + return value; +} + +/* ------------------------- RNG-Related Functions ------------------------ */ + +/* Seed RNG with scrambled time. */ +void seedtime(void) { + time_t now = time(NULL); + srand((unsigned)(now * now)); +} + +/* Return a random number in the range [0 - N). */ +long randrange(long N) { + return (long)((double)rand() / ((double)RAND_MAX + 1) * N); +} + +/* ------------------------------- dump mode ------------------------------- */ + +/* Begin font set. */ +static void dump_BegSet(txCtx h) { +} + +/* Begin font. */ +static void dump_BegFont(txCtx h, abfTopDict *top) { + dstFileOpen(h, top); + h->abf.dump.fp = h->dst.stm.fp; + if (h->fd.fdIndices.cnt > 0) { + h->abf.dump.excludeSubset = (h->flags & SUBSET__EXCLUDE_OPT); + h->abf.dump.fdCnt = (int)h->fd.fdIndices.cnt; + h->abf.dump.fdArray = h->fd.fdIndices.array; + } + top->sup.filename = + (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; + abfDumpBegFont(&h->abf.dump, top); +} + +/* End font. */ +static void dump_EndFont(txCtx h) { +} + +/* End font set. */ +static void dump_EndSet(txCtx h) { + dstFileClose(h); +} + +/* Setup dump mode. */ +static void dump_SetMode(txCtx h) { + /* Initialize control data */ + h->abf.dump.level = 1; + + /* Set mode name */ + h->modename = "dump"; + + /* Set library functions */ + h->dst.begset = dump_BegSet; + h->dst.begfont = dump_BegFont; + h->dst.endfont = dump_EndFont; + h->dst.endset = dump_EndSet; + + /* Initialize glyph callbacks */ + h->cb.glyph = abfGlyphDumpCallbacks; + h->cb.glyph.direct_ctx = &h->abf.dump; + + /* Set source library flags */ + h->t1r.flags = T1R_USE_MATRIX; + h->cfr.flags = CFR_USE_MATRIX; + + h->mode = mode_dump; +} + +/* Print text parameter. */ +void printText(int cnt, char *text[]) { + int i; + for (i = 0; i < cnt; i++) + printf("%s", text[i]); +} + +/* -------------------------------- ps mode -------------------------------- */ + +/* Begin font set. */ +static void ps_BegSet(txCtx h) { +} + +/* Begin font. */ +static void ps_BegFont(txCtx h, abfTopDict *top) { + if (h->abf.draw.level == 1 && h->arg.g.cnt == 0) + fatal(h, + "to use -1 option with all glyphs specify " + "an all-glyph range with -g 0-N option"); + dstFileOpen(h, top); + h->abf.draw.fp = h->dst.stm.fp; + if (h->src.type == src_TrueType) + h->abf.draw.flags |= ABF_FLIP_TICS; + else + h->abf.draw.flags &= ~ABF_FLIP_TICS; + top->sup.filename = + (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; + abfDrawBegFont(&h->abf.draw, top); +} + +/* End font. */ +static void ps_EndFont(txCtx h) { + abfDrawEndFont(&h->abf.draw); +} + +/* End font set. */ +static void ps_EndSet(txCtx h) { + dstFileClose(h); +} + +/* Setup ps mode. */ +static void ps_SetMode(txCtx h) { + /* Initialize control data */ + h->abf.draw.flags = 0; + h->abf.draw.level = 0; + + /* Set mode name */ + h->modename = "ps"; + + /* Set library functions */ + h->dst.begset = ps_BegSet; + h->dst.begfont = ps_BegFont; + h->dst.endfont = ps_EndFont; + h->dst.endset = ps_EndSet; + + /* Initialize glyph callbacks */ + h->cb.glyph = abfGlyphDrawCallbacks; + h->cb.glyph.direct_ctx = &h->abf.draw; + + /* Set source libarary flags */ + h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); + h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); + + h->mode = mode_ps; +} + +/* -------------------------------- afm mode ------------------------------- */ + +/* Begin font set. */ +static void afm_BegSet(txCtx h) { +} + +/* Begin new font. */ +static void afm_BegFont(txCtx h, abfTopDict *top) { + dstFileOpen(h, top); + h->abf.afm.tmp_fp = tmpfile(); + if (h->abf.afm.tmp_fp == NULL) { + fatal(h, "Error opening temp file for AFM."); + } + h->abf.afm.fp = h->dst.stm.fp; + top->sup.filename = + (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; + abfAFMBegFont(&h->abf.afm); +} + +/* End new font. */ +static void afm_EndFont(txCtx h) { + abfAFMEndFont(&h->abf.afm, h->top); +} + +/* End font set. */ +static void afm_EndSet(txCtx h) { + fclose(h->abf.afm.tmp_fp); + dstFileClose(h); +} + +/* Setup afm mode. */ +static void afm_SetMode(txCtx h) { + /* Set mode name */ + h->modename = "afm"; + + /* Set library functions */ + h->dst.begset = afm_BegSet; + h->dst.begfont = afm_BegFont; + h->dst.endfont = afm_EndFont; + h->dst.endset = afm_EndSet; + + /* Initialize glyph callbacks */ + h->cb.glyph = abfGlyphAFMCallbacks; + h->cb.glyph.direct_ctx = &h->abf.afm; + + /* Set source libarary flags */ + h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); + h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); + + h->mode = mode_afm; +} + +/* ------------------------------ Path Library ----------------------------- */ + +/* Begin font set. */ +static void path_BegSet(txCtx h) { +} + +/* Begin new font. */ +static void path_BegFont(txCtx h, abfTopDict *top) { + dstFileOpen(h, top); + top->sup.filename = + (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; + + if (h->arg.path.level == 1) { + /* Prepare draw facility */ + h->abf.draw.fp = h->dst.stm.fp; + if (h->src.type == src_TrueType) + h->abf.draw.flags |= ABF_FLIP_TICS; + else + h->abf.draw.flags &= ~ABF_FLIP_TICS; + abfDrawBegFont(&h->abf.draw, top); + } else { + /* Prepare dump facility */ + h->abf.dump.fp = h->dst.stm.fp; + h->abf.dump.left = 0; + h->abf.dump.excludeSubset = 0; + h->abf.dump.fdCnt = 0; + abfDumpBegFont(&h->abf.dump, top); + } + + if (abfBegFont(h->abf.ctx, top)) + fatal(h, NULL); +} + +/* End new font. */ +static void path_EndFont(txCtx h) { + if (h->arg.path.level == 1) + abfDrawEndFont(&h->abf.draw); + + /* Initialize glyph callbacks */ + if (h->arg.path.level == 0) { + h->cb.glyph = abfGlyphDumpCallbacks; + h->cb.glyph.direct_ctx = &h->abf.dump; + } else { + h->cb.glyph = abfGlyphDrawCallbacks; + h->cb.glyph.direct_ctx = &h->abf.draw; + } + if (h->flags & PATH_SUPRESS_HINTS) { + h->cb.glyph.stem = NULL; + h->cb.glyph.flex = NULL; + } + + if (abfEndFont(h->abf.ctx, ABF_PATH_REMOVE_OVERLAP, &h->cb.glyph)) + fatal(h, NULL); +} + +/* End font set. */ +static void path_EndSet(txCtx h) { + if (abfFree(h->abf.ctx)) + fatal(h, NULL); +} + +/* Set control functions. */ +static void path_SetMode(txCtx h) { + h->abf.draw.flags = 0; + h->abf.draw.level = 1; + h->abf.dump.level = 6; + + /* Set mode name */ + h->modename = "path"; + + /* Set library functions */ + h->dst.begset = path_BegSet; + h->dst.begfont = path_BegFont; + h->dst.endfont = path_EndFont; + h->dst.endset = path_EndSet; + + if (h->abf.ctx == NULL) { + /* Create library context */ + h->abf.ctx = abfNew(&h->cb.mem, ABF_CHECK_ARGS); + if (h->abf.ctx == NULL) + fatal(h, "(abf) can't init lib"); + } + + /* Initialize glyph callbacks */ + h->cb.glyph = abfGlyphPathCallbacks; + h->cb.glyph.direct_ctx = h->abf.ctx; + + h->t1r.flags |= (T1R_UPDATE_OPS | T1R_USE_MATRIX); + h->cfr.flags |= (CFR_UPDATE_OPS | CFR_USE_MATRIX); + + h->mode = mode_path; +} + +/* -------------------------------- cff mode ------------------------------- */ + +/* Reset the glyph flags. */ +static void resetGlyphs(txCtx h) { + int result = 1; + + switch (h->src.type) { + case src_Type1: + result = t1rResetGlyphs(h->t1r.ctx); + break; + case src_OTF: + case src_CFF: + result = cfrResetGlyphs(h->cfr.ctx); + break; + case src_TrueType: + result = ttrResetGlyphs(h->ttr.ctx); + break; + case src_SVG: + result = svrResetGlyphs(h->svr.ctx); + break; + case src_UFO: + result = ufoResetGlyphs(h->ufr.ctx); + break; + } + if (result) + fatal(h, NULL); +} + +/* Begin font set. */ +static void cff_BegSet(txCtx h) { + if (cfwBegSet(h->cfw.ctx, h->cfw.flags)) + fatal(h, NULL); +} + +/* Begin font. */ +static void cff_BegFont(txCtx h, abfTopDict *top) { + dstFileSetAutoName(h, top); + + if (h->app == APP_TX) { + if (h->flags & PATH_REMOVE_OVERLAP) { + h->cb.glyph = abfGlyphPathCallbacks; + h->cb.glyph.direct_ctx = h->abf.ctx; + if (abfBegFont(h->abf.ctx, top)) + fatal(h, NULL); + } else { + h->cb.glyph = cfwGlyphCallbacks; + h->cb.glyph.direct_ctx = h->cfw.ctx; + + if (!(h->cfw.flags & CFW_WRITE_CFF2)) { + /* This keeps these callbacks from being used when writing a + regular CFF, and avoids the overhead of processing the source + CFF2 blend args */ + h->cb.glyph.moveVF = NULL; + h->cb.glyph.lineVF = NULL; + h->cb.glyph.curveVF = NULL; + h->cb.glyph.stemVF = NULL; + } + + if (cfwBegFont(h->cfw.ctx, NULL, h->cfw.maxNumSubrs)) + fatal(h, NULL); + } + if (h->flags & PATH_SUPRESS_HINTS) { + h->cb.glyph.stem = NULL; + h->cb.glyph.flex = NULL; + } + } else { + /* APP_ROTATEFONT or APP_MERGEFONTS */ + /* we do not support subroutinization in rotateFont and mergeFonts, + so we can pass the default maxSubr value. */ + if (cfwBegFont(h->cfw.ctx, NULL, 0)) + fatal(h, NULL); + } +} + +/* End font. */ +static void cff_EndFont(txCtx h) { + if (h->app == APP_TX) { + if (h->flags & PATH_REMOVE_OVERLAP) { + if (cfwBegFont(h->cfw.ctx, NULL, h->cfw.maxNumSubrs)) + fatal(h, NULL); + + resetGlyphs(h); + h->cb.glyph = cfwGlyphCallbacks; + h->cb.glyph.direct_ctx = h->cfw.ctx; + if (!(h->cfw.flags & CFW_WRITE_CFF2)) { + /* This keeps these callbacks from being used when writing a + regular CFF, and avoids the overhead of trying to process the + source CFF2 blend args */ + h->cb.glyph.moveVF = NULL; + h->cb.glyph.lineVF = NULL; + h->cb.glyph.curveVF = NULL; + h->cb.glyph.stemVF = NULL; + } + if (h->flags & PATH_SUPRESS_HINTS) { + h->cb.glyph.stem = NULL; + h->cb.glyph.flex = NULL; + } + if (abfEndFont(h->abf.ctx, ABF_PATH_REMOVE_OVERLAP, &h->cb.glyph)) + fatal(h, NULL); + + if (cfwEndFont(h->cfw.ctx, h->top)) + fatal(h, NULL); + } else { + if (cfwEndFont(h->cfw.ctx, h->top)) + fatal(h, NULL); + } + } else { + /* APP_ROTATEFONT or APP_MERGEFONTS */ + if (cfwEndFont(h->cfw.ctx, h->top)) + fatal(h, NULL); + } +} + +/* End font set. */ +static void cff_EndSet(txCtx h) { + if (cfwEndSet(h->cfw.ctx)) + fatal(h, NULL); + if (h->app == APP_TX) { + if (abfFree(h->abf.ctx)) + fatal(h, NULL); + } +} + +/* Setup cff mode. */ +static void cff_SetMode(txCtx h) { + /* Initialize control data */ + + /* Set mode name */ + h->modename = "cff"; + + /* Set library functions */ + h->dst.begset = cff_BegSet; + h->dst.begfont = cff_BegFont; + h->dst.endfont = cff_EndFont; + h->dst.endset = cff_EndSet; + + if (h->cfw.ctx == NULL) { + /* Create library context */ + h->cfw.ctx = cfwNew(&h->cb.mem, &h->cb.stm, CFW_CHECK_ARGS); + if (h->cfw.ctx == NULL) + fatal(h, "(cfw) can't init lib"); + } + + /* The default callbacks. These get reset in cff_BegFont() and + cff_EndFont() as some options play the font data through a different + library on a first pass, before writing to cff on a second pass */ + h->cb.glyph = cfwGlyphCallbacks; + h->cb.glyph.direct_ctx = h->cfw.ctx; + + if (!(h->cfw.flags & CFW_WRITE_CFF2)) { + /* This keeps these callbacks from being used when writing a regular + CFF, and avoids the overhead of processing the source CFF2 blend + args */ + h->cb.glyph.moveVF = NULL; + h->cb.glyph.lineVF = NULL; + h->cb.glyph.curveVF = NULL; + h->cb.glyph.stemVF = NULL; + } + + if (h->app == APP_TX) { + if (h->abf.ctx == NULL) { + /* Create library context */ + h->abf.ctx = abfNew(&h->cb.mem, ABF_CHECK_ARGS); + if (h->abf.ctx == NULL) + fatal(h, "(abf) can't init lib"); + } + } + h->mode = mode_cff; +} + +/* ------------------------------ Preserve GID ------------------------------ */ + +#define PRESERVE_CHARSTRING (1 << 15) + +static void callbackPreserveGlyph(txCtx h, int type, unsigned short id, + char *name) { + h->src.glyphs.array[id]->flags |= PRESERVE_CHARSTRING; +} + +/* Begin glyph path. */ +static int preserveGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { + txCtx h = cb->direct_ctx; + cb->info = info; + h->cb.selected = + (h->src.glyphs.array[info->tag]->flags & PRESERVE_CHARSTRING) != 0; + return h->cb.save.beg(&h->cb.save, info); +} + +/* Save glyph width. */ +static void preserveGlyphWidth(abfGlyphCallbacks *cb, float hAdv) { + txCtx h = cb->direct_ctx; + h->cb.save.width(&h->cb.save, hAdv); +} + +/* Add move to path. */ +static void preserveGlyphMove(abfGlyphCallbacks *cb, float x0, float y0) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.move(&h->cb.save, x0, y0); + } +} + +/* Add line to path. */ +static void preserveGlyphLine(abfGlyphCallbacks *cb, float x1, float y1) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.line(&h->cb.save, x1, y1); + } +} + +/* Add curve to path. */ +static void preserveGlyphCurve(abfGlyphCallbacks *cb, + float x1, float y1, + float x2, float y2, + float x3, float y3) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.curve(&h->cb.save, x1, y1, x2, y2, x3, y3); + } +} + +static void preserveGlyphStem(abfGlyphCallbacks *cb, + int flags, float edge0, float edge1) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.stem(&h->cb.save, flags, edge0, edge1); + } +} + +static void preserveGlyphFlex(abfGlyphCallbacks *cb, float depth, + float x1, float y1, + float x2, float y2, + float x3, float y3, + float x4, float y4, + float x5, float y5, + float x6, float y6) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.flex(&h->cb.save, depth, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6); + } +} + +/* Ignore general glyph operator. */ +static void preserveGlyphGenop(abfGlyphCallbacks *cb, + int cnt, float *args, int op) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.genop(&h->cb.save, cnt, args, op); + } +} + +/* Handle seac operator. */ +static void preserveGlyphSeac(abfGlyphCallbacks *cb, + float adx, float ady, int bchar, int achar) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.seac(&h->cb.save, adx, ady, bchar, achar); + } +} + +/* End glyph path. */ +static void preserveGlyphEnd(abfGlyphCallbacks *cb) { + txCtx h = cb->direct_ctx; + h->cb.save.end(&h->cb.save); +} + +static void preserveCubeBlend(abfGlyphCallbacks *cb, unsigned int nBlends, unsigned int numVals, float *blendVals) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.cubeBlend(&h->cb.save, nBlends, numVals, blendVals); + } +} +static void preserveCubeSetwv(abfGlyphCallbacks *cb, unsigned int numDV) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.cubeSetwv(&h->cb.save, numDV); + } +} +static void preserveCubeCompose(abfGlyphCallbacks *cb, int cubeLEIndex, float x0, float y0, int numDV, float *ndv) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.cubeCompose(&h->cb.save, cubeLEIndex, x0, y0, numDV, ndv); + } +} +static void preserveCubeTransform(abfGlyphCallbacks *cb, float rotate, float scaleX, float scaleY, float skew, float skewY) { + txCtx h = cb->direct_ctx; + if (h->cb.selected) { + h->cb.save.cubeTransform(&h->cb.save, rotate, scaleX, scaleY, skew, skewY); + } +} + +/* preserve mode callbacks template. */ +static abfGlyphCallbacks preserveGlyphCallbacks = + { + NULL, + NULL, + NULL, + preserveGlyphBeg, + preserveGlyphWidth, + preserveGlyphMove, + preserveGlyphLine, + preserveGlyphCurve, + preserveGlyphStem, + preserveGlyphFlex, + preserveGlyphGenop, + preserveGlyphSeac, + preserveGlyphEnd, + preserveCubeBlend, + preserveCubeSetwv, + preserveCubeCompose, + preserveCubeTransform, + NULL, + NULL, + NULL, + NULL, +}; + +/* ------------------------------- Glyph List ------------------------------ */ + +/* Begin new glyph definition for gathering glyph info. */ +static int getGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { + txCtx h = cb->indirect_ctx; + *dnaNEXT(h->src.glyphs) = info; + return ABF_SKIP_RET; +} + +/* Make glyph list from font. */ +static void getGlyphList(txCtx h) { + if (h->src.glyphs.cnt > 0) + return; /* Already have list for this font */ + + h->cb.saveGlyphBeg = h->cb.glyph.beg; + + /* Insert data gather function */ + h->cb.glyph.beg = getGlyphBeg; + h->cb.glyph.indirect_ctx = h; + + /* Iterate glyphs */ + switch (h->src.type) { + case src_Type1: + if (t1rIterateGlyphs(h->t1r.ctx, &h->cb.glyph) || + t1rResetGlyphs(h->t1r.ctx)) + fatal(h, NULL); + break; + case src_OTF: + case src_CFF: + if (cfrIterateGlyphs(h->cfr.ctx, &h->cb.glyph) || + cfrResetGlyphs(h->cfr.ctx)) + fatal(h, NULL); + break; + case src_TrueType: + if (ttrIterateGlyphs(h->ttr.ctx, &h->cb.glyph) || + ttrResetGlyphs(h->ttr.ctx)) + fatal(h, NULL); + break; + case src_SVG: + if (svrIterateGlyphs(h->svr.ctx, &h->cb.glyph) || + svrResetGlyphs(h->svr.ctx)) + fatal(h, NULL); + break; + + case src_UFO: + if (ufoIterateGlyphs(h->ufr.ctx, &h->cb.glyph) || + ufoResetGlyphs(h->ufr.ctx)) + fatal(h, NULL); + break; + } + + /* Restore saved function */ + h->cb.glyph.beg = h->cb.saveGlyphBeg; +} + +/* Construct arg buffer from subset list to simulated -g option. */ +static void makeSubsetArgList(txCtx h) { + long i; + int rangecnt = 0; + unsigned short first = h->subset.glyphs.array[0]; + unsigned short last = first; + h->subset.args.cnt = 0; + for (i = 1; i <= h->subset.glyphs.cnt; i++) { + unsigned short curr; + if (i < h->subset.glyphs.cnt) + curr = h->subset.glyphs.array[i]; + else + curr = 0; + + if (last + 1 != curr) { + char buf[12]; /* 5 digits + hyphen + 5 digits + nul */ + if (first == last) + sprintf(buf, "%hu", last); + else + sprintf(buf, "%hu-%hu", first, last); + strcpy(dnaEXTEND(h->subset.args, (long)strlen(buf) + 1), buf); + first = curr; + rangecnt++; + } + last = curr; + } + h->arg.g.cnt = rangecnt; + h->arg.g.substrs = h->subset.args.array; +} + +/* ----------------------------- Subset Parsing ---------------------------- */ + +/* Parse subset args. */ +static void parseSubset(txCtx h, void (*select)(txCtx h, int type, + unsigned short id, char *name)) { + long i; + char *p = h->arg.g.substrs; + + for (i = 0; i < h->arg.g.cnt; i++) { + unsigned short id; + unsigned short lo; + unsigned short hi; + + if (*p == '/') { + /* CID */ + if (sscanf(p, "/%hu-/%hu", &lo, &hi) == 2) + ; + else if (sscanf(p, "/%hu", &lo) == 1) + hi = lo; + else + goto next; + + for (id = lo; id <= hi; id++) + select(h, sel_by_cid, id, NULL); + + } else if (isdigit(*p)) { + /* Tag */ + if (sscanf(p, "%hu-%hu", &lo, &hi) == 2) + ; + else if (sscanf(p, "%hu", &lo) == 1) + hi = lo; + else + goto next; + + for (id = lo; id <= hi; id++) + select(h, sel_by_tag, id, NULL); + } else + /* Name */ + select(h, sel_by_name, 0, p); + + /* Advance to next substring */ + next: + while (*p++ != '\0') + ; + } +} + +/* Parse subset args. */ +void parseFDSubset(txCtx h) { + long i; + char *p = h->arg.g.substrs; + + for (i = 0; i < h->arg.g.cnt; i++) { + unsigned short id; + unsigned short lo; + unsigned short hi; + + if (isdigit(*p)) { + /* Tag */ + if (sscanf(p, "%hu-%hu", &lo, &hi) == 2) + ; + else if (sscanf(p, "%hu", &lo) == 1) + hi = lo; + else + goto next; + + for (id = lo; id <= hi; id++) + *dnaNEXT(h->fd.fdIndices) = id; + } else { + fatal(h, "-fd argument is not an integer."); + } + /* Advance to next substring */ + next: + while (*p++ != '\0') + ; + } +} + +/* -------------------------------- cef mode ------------------------------- */ + +/* Begin font set. */ +static void cef_BegSet(txCtx h) { +} + +/* Begin font. */ +static void cef_BegFont(txCtx h, abfTopDict *top) { + dstFileSetAutoName(h, top); +} + +/* Compare glyphs by their CID. */ +static int CTL_CDECL cef_cmpByCID(const void *first, const void *second, + void *ctx) { + txCtx h = ctx; + abfGlyphInfo *a = h->src.glyphs.array[*(unsigned short *)first]; + abfGlyphInfo *b = h->src.glyphs.array[*(unsigned short *)second]; + if (a->cid < b->cid) + return -1; + else if (a->cid > b->cid) + return 1; + else + return 0; +} + +/* Match glyph by its CID. */ +static int CTL_CDECL cef_matchByCID(const void *key, const void *value, + void *ctx) { + txCtx h = ctx; + unsigned short a = *(unsigned short *)key; + unsigned short b = h->src.glyphs.array[*(unsigned short *)value]->cid; + if (a < b) + return -1; + else if (a > b) + return 1; + else + return 0; +} + +/* Compare glyphs by their name. */ +static int CTL_CDECL cef_cmpByName(const void *first, const void *second, + void *ctx) { + txCtx h = ctx; + return strcmp(h->src.glyphs.array[*(unsigned short *)first]->gname.ptr, + h->src.glyphs.array[*(unsigned short *)second]->gname.ptr); +} + +/* Match glyph by its name. */ +static int CTL_CDECL cef_matchByName(const void *key, const void *value, + void *ctx) { + txCtx h = ctx; + return strcmp(key, + h->src.glyphs.array[*(unsigned short *)value]->gname.ptr); +} + +/* Make glyph lookup array. */ +static void makeGlyphLookup(txCtx h, ctuCmpFunc cmp) { + long i; + + /* Make lookup array of all tags */ + dnaSET_CNT(h->cef.lookup, h->src.glyphs.cnt); + for (i = 0; i < h->cef.lookup.cnt; i++) + h->cef.lookup.array[i] = (unsigned short)i; + + /* Sort array */ + ctuQSort(h->cef.lookup.array, h->cef.lookup.cnt, + sizeof(unsigned short), cmp, h); +} + +/* Lookup glyph. */ +static void lookupGlyph(txCtx h, void *key, ctuMatchFunc match) { + size_t index; + if (ctuLookup(key, h->cef.lookup.array, h->cef.lookup.cnt, + sizeof(unsigned short), match, &index, h)) + dnaNEXT(h->cef.subset)->id = + h->src.glyphs.array[h->cef.lookup.array[index]]->tag; +} + +/* Select subset glyph. */ +static void selectGlyph(txCtx h, int type, unsigned short id, char *gname) { + switch (type) { + case sel_by_tag: + if (id < h->src.glyphs.cnt) + dnaNEXT(h->cef.subset)->id = id; + break; + case sel_by_cid: + if (h->top->sup.flags & ABF_CID_FONT) { + if (h->cef.lookup.cnt == 0) + /* Make CID lookup list */ + makeGlyphLookup(h, cef_cmpByCID); + lookupGlyph(h, &id, cef_matchByCID); + } + break; + case sel_by_name: + if (!(h->top->sup.flags & ABF_CID_FONT)) { + if (h->cef.lookup.cnt == 0) + /* Make glyph name lookup list */ + makeGlyphLookup(h, cef_cmpByName); + lookupGlyph(h, gname, cef_matchByName); + } + break; + } +} + +/* Match glyph name */ +static int CTL_CDECL matchName(const void *key, const void *value) { + return strcmp((char *)key, ((Name2UV *)value)->gname); +} + +/* Map glyph name to Unicode value using simplified assignment algorithm. */ +static unsigned short mapName2UV(txCtx h, char *gname, unsigned short *unrec) { + static const Name2UV agl[] = + { +#include "agl2uv.h" + }; + Name2UV *map = (Name2UV *)bsearch(gname, agl, ARRAY_LEN(agl), + sizeof(Name2UV), matchName); + if (map != NULL) + return map->uv; /* Match found */ + + /* Not found */ + if (strcmp(gname, ".notdef") == 0) + return 0xFFFF; /* No encoding for .notdef */ + + if (gname[0] == 'u' && + gname[1] == 'n' && + gname[2] == 'i' && + isxdigit(gname[3]) && !islower(gname[3]) && + isxdigit(gname[4]) && !islower(gname[4]) && + isxdigit(gname[5]) && !islower(gname[5]) && + isxdigit(gname[6]) && !islower(gname[6]) && + gname[7] == '\0') + /* uni name; return hex part */ + return (unsigned short)strtol(&gname[3], NULL, 16); + + /* return Private Use Area UV */ + return (*unrec)++; +} + +/* Get User Design Vector. */ +float *getUDV(txCtx h) { + static float UDV[CFF2_MAX_AXES]; + int i; + char *p; + char *q; + + if (h->arg.U == NULL) + return NULL; + + /* Parse User Design Vector */ + for (i = 0; i < CFF2_MAX_AXES; i++) + UDV[i] = 0.0; + + p = h->arg.U; + for (i = 0; i < CFF2_MAX_AXES; i++) { + UDV[i] = (float)strtod(p, &q); + if (p == q || (*q != ',' && *q != '\0')) + fatal(h, "bad UDV"); + else if (*q == '\0') + break; + p = q + 1; + } + + return UDV; +} + +/* Print CEF subset specification. */ +static void printSpec(txCtx h, cefEmbedSpec *spec) { + char *p; + long i; + + printf( + "--- CEF subset:\n" + "SRC font %s\n" + "SRC glyphs %ld\n" + "DST font %s\n" + "DST glyphs %ld\n", + h->cef.src.filename, h->src.glyphs.cnt, + h->dst.stm.filename, spec->subset.cnt); + + p = (h->top->sup.flags & ABF_CID_FONT) ? "/" : ""; + for (i = 0; i < spec->subset.cnt; i++) { + printf("%s%hu", p, spec->subset.array[i].id); + p = (h->top->sup.flags & ABF_CID_FONT) ? ",/" : ","; + } + printf("\n"); + + if (spec->subset.names == NULL) + return; + + /* Print glyph names */ + p = ""; + for (i = 0; i < spec->subset.cnt; i++) { + unsigned short id = spec->subset.array[i].id; + if (id < CEF_VID_BEGIN) + printf("%s%s", p, spec->subset.names[id]); + else + printf("%svid-%hu", p, id); + p = ","; + } + printf("\n"); +} + +/* CEF glyph mapping callback. */ +static void cefGlyphMap(cefMapCallback *cb, + unsigned short gid, abfGlyphInfo *info) { + int cid = info->flags & ABF_GLYPH_CID; + if (gid == 0) { + if (cid) + printf("DST map [gid]=/cid\n"); + else + printf("DST map [gid]=\n"); + } + if (cid) + printf("[%hu]=/%hu ", gid, info->cid); + else + printf("[%hu]=<%s> ", gid, info->gname.ptr); +} + +/* End font. */ +static void cef_EndFont(txCtx h) { + cefMapCallback map; + cefEmbedSpec spec; + int result; + long i; + unsigned short unrec; + + getGlyphList(h); + + if (h->arg.g.cnt == 0) { + /* Whole font subset */ + dnaSET_CNT(h->cef.subset, h->src.glyphs.cnt); + for (i = 0; i < h->cef.subset.cnt; i++) + h->cef.subset.array[i].id = (unsigned short)i; + } else { + h->cef.subset.cnt = 0; + h->cef.lookup.cnt = 0; + parseSubset(h, selectGlyph); + } + + h->cef.gnames.cnt = 0; + unrec = 0xE000; /* Start of Private Use Area */ + + if (h->top->sup.flags & ABF_CID_FONT) { + /* Make CID subset, encoding all glyphs in PUA */ + for (i = 0; i < h->cef.subset.cnt; i++) { + cefSubsetGlyph *dst = &h->cef.subset.array[i]; + abfGlyphInfo *src = h->src.glyphs.array[dst->id]; + dst->id = src->cid; + dst->uv = unrec++; + } + } else { + /* Make tag list and assign Unicode encoding */ + for (i = 0; i < h->cef.subset.cnt; i++) { + cefSubsetGlyph *dst = &h->cef.subset.array[i]; + abfGlyphInfo *src = h->src.glyphs.array[dst->id]; + dst->uv = mapName2UV(h, src->gname.ptr, &unrec); + } + + /* Decide whether to use name list */ + switch (h->src.type) { + case src_Type1: + break; /* Use names */ + case src_OTF: + case src_CFF: + if (rand() & 0x0100) + goto initspec; + break; /* Use names 50% of the time */ + case src_TrueType: + goto initspec; /* Don't use names */ + } + + /* Make name list */ + dnaSET_CNT(h->cef.gnames, h->src.glyphs.cnt + 1); + for (i = 0; i < h->src.glyphs.cnt; i++) + h->cef.gnames.array[i] = h->src.glyphs.array[i]->gname.ptr; + h->cef.gnames.array[i] = NULL; + } + +#if 0 + { + /* Add 2 virtual glyphs */ + cefSubsetGlyph *glyph = dnaEXTEND(h->cef.subset, 2); + glyph[0].id = CEF_VID_BEGIN + 0; + glyph[0].uv = 0xa000; + glyph[1].id = CEF_VID_BEGIN + 1; + glyph[1].uv = 0xa001; + } +#endif + + /* Initialize embedding spec. */ +initspec: + spec.flags = h->arg.cef.flags; + spec.newFontName = h->arg.cef.F; + spec.UDV = getUDV(h); + spec.URL = NULL; + spec.subset.cnt = h->cef.subset.cnt; + spec.subset.array = h->cef.subset.array; + spec.subset.names = (h->cef.gnames.cnt > 0) ? h->cef.gnames.array : NULL; + spec.kern.cnt = 0; + + printSpec(h, &spec); + + /* Turn off segmentation on source stream */ + h->seg.refill = NULL; + + /* Initialize glyph mapping callback */ + map.ctx = NULL; + map.glyphmap = cefGlyphMap; + + if (h->arg.cef.flags & CEF_WRITE_SVG) + cefSetSvwFlags(h->cef.ctx, h->svw.flags); + + /* Make embedding font */ + result = cefMakeEmbeddingFont(h->cef.ctx, &spec, &map); + if (result) + fatal(h, "(cef) %s", cefErrStr(result)); + else + printf("\n"); +} + +/* End font set. */ +static void cef_EndSet(txCtx h) { +} + +/* Setup cef mode. */ +static void cef_SetMode(txCtx h) { + /* Initialize args */ + h->arg.cef.F = NULL; + h->arg.cef.flags = 0; + h->svw.flags = SVW_NEWLINE_UNIX; /* In case cfembed library used in svgwrite mode */ + + /* Set mode name */ + h->modename = "cef"; + + /* Set library functions */ + h->dst.begset = cef_BegSet; + h->dst.begfont = cef_BegFont; + h->dst.endfont = cef_EndFont; + h->dst.endset = cef_EndSet; + + if (h->cef.ctx == NULL) { + h->cef.ctx = cefNew(&h->cb.mem, &h->cb.stm, CEF_CHECK_ARGS); + if (h->cef.ctx == NULL) + fatal(h, "(cef) can't init lib"); + } + + /* Set source library flags */ + h->t1r.flags = 0; + h->cfr.flags = 0; + + h->mode = mode_cef; +} + +/* -------------------------------- pdf mode ------------------------------- */ + +/* Begin font set. */ +static void pdf_BegSet(txCtx h) { +} + +/* Begin new font. */ +static void pdf_BegFont(txCtx h, abfTopDict *top) { + dstFileOpen(h, top); + top->sup.filename = + (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; + + if (h->src.type == src_TrueType) + h->pdw.flags |= PDW_FLIP_TICS; + else + h->pdw.flags &= ~PDW_FLIP_TICS; + + if (pdwBegFont(h->pdw.ctx, h->pdw.flags, h->pdw.level, top)) + fatal(h, NULL); +} + +/* End new font. */ +static void pdf_EndFont(txCtx h) { + if (pdwEndFont(h->pdw.ctx)) + fatal(h, NULL); +} + +/* End font set. */ +static void pdf_EndSet(txCtx h) { +} + +/* Set control functions. */ +static void pdf_SetMode(txCtx h) { + h->pdw.flags = 0; + h->pdw.level = 0; + + /* Set mode name */ + h->modename = "pdf"; + + /* Set library functions */ + h->dst.begset = pdf_BegSet; + h->dst.begfont = pdf_BegFont; + h->dst.endfont = pdf_EndFont; + h->dst.endset = pdf_EndSet; + + if (h->pdw.ctx == NULL) { + /* Create library context */ + h->pdw.ctx = pdwNew(&h->cb.mem, &h->cb.stm, PDW_CHECK_ARGS); + if (h->pdw.ctx == NULL) + fatal(h, "(pdw) can't init lib"); + } + + /* Initialize glyph callbacks */ + h->cb.glyph = pdwGlyphCallbacks; + h->cb.glyph.direct_ctx = h->pdw.ctx; + + h->t1r.flags |= (T1R_UPDATE_OPS | T1R_USE_MATRIX); + h->cfr.flags |= (CFR_UPDATE_OPS | CFR_USE_MATRIX); + + h->mode = mode_pdf; +} + +/* ------------------------------- mtx mode ------------------------------- */ + +/* Begin glyph path. */ +static int mtxGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { + txCtx h = cb->direct_ctx; + cb->info = info; + return h->mtx.metrics.cb.beg(&h->mtx.metrics.cb, info); +} + +/* Save glyph width. */ +static void mtxGlyphWidth(abfGlyphCallbacks *cb, float hAdv) { + txCtx h = cb->direct_ctx; + h->mtx.metrics.cb.width(&h->mtx.metrics.cb, hAdv); +} + +/* Add move to path. */ +static void mtxGlyphMove(abfGlyphCallbacks *cb, float x0, float y0) { + txCtx h = cb->direct_ctx; + h->mtx.metrics.cb.move(&h->mtx.metrics.cb, x0, y0); +} + +/* Add line to path. */ +static void mtxGlyphLine(abfGlyphCallbacks *cb, float x1, float y1) { + txCtx h = cb->direct_ctx; + h->mtx.metrics.cb.line(&h->mtx.metrics.cb, x1, y1); +} + +/* Add curve to path. */ +static void mtxGlyphCurve(abfGlyphCallbacks *cb, + float x1, float y1, + float x2, float y2, + float x3, float y3) { + txCtx h = cb->direct_ctx; + h->mtx.metrics.cb.curve(&h->mtx.metrics.cb, x1, y1, x2, y2, x3, y3); +} + +/* Ignore general glyph operator. */ +static void mtxGlyphGenop(abfGlyphCallbacks *cb, + int cnt, float *args, int op) { + /* Nothing to do */ +} + +/* Handle seac operator. */ +static void mtxGlyphSeac(abfGlyphCallbacks *cb, + float adx, float ady, int bchar, int achar) { + /* Nothing to do */ +} + +/* End glyph path. */ +static void mtxGlyphEnd(abfGlyphCallbacks *cb) { + txCtx h = cb->direct_ctx; + abfMetricsCtx g = &h->mtx.metrics.ctx; + abfGlyphInfo *info = cb->info; + + h->mtx.metrics.cb.end(&h->mtx.metrics.cb); + + fprintf(h->dst.stm.fp, "glyph[%hu] {", info->tag); + if (info->flags & ABF_GLYPH_CID) + /* Dump CID-keyed glyph */ + fprintf(h->dst.stm.fp, "%hu,%hhu", info->cid, info->iFD); + else { + /* Dump name-keyed glyph */ + abfEncoding *enc = &info->encoding; + fprintf(h->dst.stm.fp, "%s", info->gname.ptr); + if (enc->code == ABF_GLYPH_UNENC) + fprintf(h->dst.stm.fp, ",-"); + else { + /* Dump encoding */ + char *sep = ","; + do { + if (info->flags & ABF_GLYPH_UNICODE) + fprintf(h->dst.stm.fp, "%s0x%04lX", sep, enc->code); + else + fprintf(h->dst.stm.fp, "%s0x%02lX", sep, enc->code); + sep = "+"; + enc = enc->next; + } while (enc != NULL); + } + } + + if (h->mtx.level & 1) + /* Real metrics */ + fprintf(h->dst.stm.fp, ",%g,{%g,%g,%g,%g}}\n", g->real_mtx.hAdv, + g->real_mtx.left, g->real_mtx.bottom, + g->real_mtx.right, g->real_mtx.top); + else + /* Integer metrics */ + fprintf(h->dst.stm.fp, ",%ld,{%ld,%ld,%ld,%ld}}\n", g->int_mtx.hAdv, + g->int_mtx.left, g->int_mtx.bottom, + g->int_mtx.right, g->int_mtx.top); + + if (h->mtx.level > 1) { + /* Compute aggregate bounding box */ + if (g->real_mtx.left != 0 || + g->real_mtx.bottom != 0 || + g->real_mtx.right != 0 || + g->real_mtx.top != 0) { + /* Marking glyph */ + if (h->mtx.bbox.left == 0 && + h->mtx.bbox.bottom == 0 && + h->mtx.bbox.right == 0 && + h->mtx.bbox.top == 0) { + /* First marking glyph; set all values */ + h->mtx.bbox.left = g->real_mtx.left; + h->mtx.bbox.bottom = g->real_mtx.bottom; + h->mtx.bbox.right = g->real_mtx.right; + h->mtx.bbox.top = g->real_mtx.top; + + h->mtx.bbox.setby.left = info; + h->mtx.bbox.setby.bottom = info; + h->mtx.bbox.setby.right = info; + h->mtx.bbox.setby.top = info; + } else { + if (h->mtx.bbox.left > g->real_mtx.left) { + h->mtx.bbox.left = g->real_mtx.left; + h->mtx.bbox.setby.left = info; + } + if (h->mtx.bbox.bottom > g->real_mtx.bottom) { + h->mtx.bbox.bottom = g->real_mtx.bottom; + h->mtx.bbox.setby.bottom = info; + } + if (h->mtx.bbox.right < g->real_mtx.right) { + h->mtx.bbox.right = g->real_mtx.right; + h->mtx.bbox.setby.right = info; + } + if (h->mtx.bbox.top < g->real_mtx.top) { + h->mtx.bbox.top = g->real_mtx.top; + h->mtx.bbox.setby.top = info; + } + } + } + } +} + +/* Mtx mode callbacks template. */ +static abfGlyphCallbacks mtxGlyphCallbacks = + { + NULL, + NULL, + NULL, + mtxGlyphBeg, + mtxGlyphWidth, + mtxGlyphMove, + mtxGlyphLine, + mtxGlyphCurve, + NULL, + NULL, + mtxGlyphGenop, + mtxGlyphSeac, + mtxGlyphEnd, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, +}; + +/* Begin font set. */ +static void mtx_BegSet(txCtx h) { +} + +/* Begin font. */ +static void mtx_BegFont(txCtx h, abfTopDict *top) { + dstFileOpen(h, top); + + h->mtx.bbox.left = 0; + h->mtx.bbox.bottom = 0; + h->mtx.bbox.right = 0; + h->mtx.bbox.top = 0; + + if (top->sup.flags & ABF_CID_FONT) + fprintf(h->dst.stm.fp, + "### glyph[tag] {cid,fd,width,{left,bottom,right,top}}\n"); + else + fprintf(h->dst.stm.fp, + "### glyph[tag] {gname,enc,width,{left,bottom,right,top}}\n"); +} + +/* End font. */ +static void mtx_EndFont(txCtx h) { + if (h->mtx.level > 1) { + /* Print bbox information */ + fprintf(h->dst.stm.fp, "### aggregate\n"); + if (h->mtx.level == 2) + fprintf(h->dst.stm.fp, "bbox {%g,%g,%g,%g}\n", + floor(h->mtx.bbox.left), floor(h->mtx.bbox.bottom), + ceil(h->mtx.bbox.right), ceil(h->mtx.bbox.top)); + else + fprintf(h->dst.stm.fp, "bbox {%g,%g,%g,%g}\n", + h->mtx.bbox.left, h->mtx.bbox.bottom, + h->mtx.bbox.right, h->mtx.bbox.top); + + if (h->mtx.bbox.left != 0 || + h->mtx.bbox.bottom != 0 || + h->mtx.bbox.right != 0 || + h->mtx.bbox.top != 0) { + /* bbox was set; print setting glyph(s) */ + fprintf(h->dst.stm.fp, "tag {%hu,%hu,%hu,%hu}\n", + h->mtx.bbox.setby.left->tag, + h->mtx.bbox.setby.bottom->tag, + h->mtx.bbox.setby.right->tag, + h->mtx.bbox.setby.top->tag); + if (h->top->sup.flags & ABF_CID_FONT) + fprintf(h->dst.stm.fp, "cid {%hu,%hu,%hu,%hu}\n", + h->mtx.bbox.setby.left->cid, + h->mtx.bbox.setby.bottom->cid, + h->mtx.bbox.setby.right->cid, + h->mtx.bbox.setby.top->cid); + else + fprintf(h->dst.stm.fp, "gname {%s,%s,%s,%s}\n", + h->mtx.bbox.setby.left->gname.ptr, + h->mtx.bbox.setby.bottom->gname.ptr, + h->mtx.bbox.setby.right->gname.ptr, + h->mtx.bbox.setby.top->gname.ptr); + } + } +} + +/* End font set. */ +static void mtx_EndSet(txCtx h) { + dstFileClose(h); +} + +/* Setup mtx mode. */ +static void mtx_SetMode(txCtx h) { + h->mtx.level = 0; + + /* Set mode name */ + h->modename = "mtx"; + + /* Set library functions */ + h->dst.begset = mtx_BegSet; + h->dst.begfont = mtx_BegFont; + h->dst.endfont = mtx_EndFont; + h->dst.endset = mtx_EndSet; + + /* Initialize glyph callbacks */ + h->cb.glyph = mtxGlyphCallbacks; + h->cb.glyph.direct_ctx = h; + + /* Initialize metrics facility */ + h->mtx.metrics.cb = abfGlyphMetricsCallbacks; + h->mtx.metrics.cb.direct_ctx = &h->mtx.metrics.ctx; + h->mtx.metrics.ctx.flags = 0; + + /* Set source libarary flags */ + h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); + h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); + + h->mode = mode_mtx; +} + +/* --------------------------------- t1 mode ------------------------------- */ + +/* Begin font set. */ +static void t1_BegSet(txCtx h) { +} + +/* Begin new glyph definition for patching glyph info. if -decid enabled. */ +static int t1_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { + txCtx h = cb->indirect_ctx; + char gname[64]; + long nameLen; + + /* Notes: + * In rotateFont, we do not skip if the glyph is already seen, as a glyph + may be used to generate more than one rotated output glyph. + * In mergeFonts, we do NOT skip a glyph if it has already been seen, as + the same glyph may get copied more than once to a different target + font name. */ + if (h->app == APP_TX) { + if (info->flags & ABF_GLYPH_SEEN) + return ABF_SKIP_RET; /* Already in subset */ + } + + if (h->t1w.fd == -1) { + h->t1w.fd = info->iFD; /* First glyph; set target fd */ + } else if (info->cid == 0) /* For CID 0, always just use current iFD. */ + { + if (h->app != APP_TX) { + /* Handle .notdef glyph */ + if (info->flags & ABF_GLYPH_SEEN) + return ABF_SKIP_RET; /* Already in subset */ + } + info->iFD = h->t1w.fd; /* Force glyph to use selected fd */ + } else if (info->iFD != h->t1w.fd) { + if (h->t1w.options & T1W_USEFD) + info->iFD = h->t1w.fd; + else + fatal(h, "selected glyphs span multiple FDs"); + } + /* Create glyph name */ + if (info->cid == 0) + strcpy(gname, ".notdef"); + else + sprintf(gname, "cid%hu", info->cid); + nameLen = strlen(gname) + 1; + if ((h->t1w.gnames.size) < (h->t1w.gnames.cnt + nameLen)) { + dnaINDEX(h->t1w.gnames, h->t1w.gnames.size + nameLen); + /* Update all the gname ptrs, as we just moved h->t1w.gnames.array,and all the info->gname.ptr are invalid. */ + t1wUpdateGlyphNames(h->t1w.ctx, h->t1w.gnames.array); + } + + info->gname.ptr = &h->t1w.gnames.array[h->t1w.gnames.cnt]; + info->gname.impl = h->t1w.gnames.cnt; // hold current char index, to make renumbering this easier! + strcpy(info->gname.ptr, gname); + h->t1w.gnames.cnt += (long)nameLen; + + info->flags &= ~ABF_GLYPH_CID; /* Convert to name-keyed glyph */ + + return t1wGlyphCallbacks.beg(cb, info); +} + +/* Begin font. */ +static void t1_BegFont(txCtx h, abfTopDict *top) { + h->t1w.maxGlyphs = 0; + + if (h->app == APP_TX) { + /* Initialize glyph callbacks */ + if (h->flags & PATH_REMOVE_OVERLAP) { + h->cb.glyph = abfGlyphPathCallbacks; + h->cb.glyph.direct_ctx = h->abf.ctx; + } else { + h->cb.glyph = t1wGlyphCallbacks; + h->cb.glyph.direct_ctx = h->t1w.ctx; + } + if (h->flags & PATH_SUPRESS_HINTS) { + h->cb.glyph.stem = NULL; + h->cb.glyph.flex = NULL; + } + } + if (h->t1w.options & T1W_DECID) { + /* Convert cid-keyed font to name-keyed font */ + if (!(top->sup.flags & ABF_CID_FONT)) + fatal(h, "-decid specified for non-CID font"); + + /* Initialize */ + h->t1w.fd = -1; + (void)dnaGROW(h->t1w.gnames, + ((h->subset.glyphs.cnt > 0) ? h->subset.glyphs.cnt : top->sup.nGlyphs) * 8); + h->t1w.gnames.cnt = 0; + + /* Replace callback */ + if (!(h->flags & PATH_REMOVE_OVERLAP)) + h->cb.glyph.beg = t1_GlyphBeg; + h->cb.glyph.indirect_ctx = h; + } + if (h->t1w.options & T1W_WAS_EMBEDDED) + top->WasEmbedded = 1; + + if (h->t1w.flags & T1W_TYPE_BASE) + h->t1w.maxGlyphs = (top->sup.flags & ABF_CID_FONT) ? top->cid.CIDCount : top->sup.nGlyphs; + + dstFileSetAutoName(h, top); + + /* Initialize glyph callbacks */ + if (h->flags & PATH_REMOVE_OVERLAP) { + if (abfBegFont(h->abf.ctx, top)) + fatal(h, NULL); + } else { + if (t1wBegFont(h->t1w.ctx, h->t1w.flags, h->t1w.lenIV, h->t1w.maxGlyphs)) + fatal(h, NULL); + } +} + +/* Copy length bytes from source file to destination file. */ +static void copyFile(txCtx h, size_t length, + FILE *src, char *srcfile, + FILE *dst, char *dstfile) { + char buf[BUFSIZ]; + size_t cnt; + + /* Write whole buffers */ + cnt = length / BUFSIZ; + while (cnt--) + if (fread(buf, 1, BUFSIZ, src) != BUFSIZ) + fileError(h, srcfile); + else if (fwrite(buf, 1, BUFSIZ, dst) != BUFSIZ) + fileError(h, dstfile); + + /* Write partial buffers */ + cnt = length % BUFSIZ; + if (fread(buf, 1, cnt, src) != cnt) + fileError(h, srcfile); + else if (fwrite(buf, 1, cnt, dst) != cnt) + fileError(h, dstfile); +} + +/* Copy PFB segment. */ +static void copyPFBSegment(txCtx h, int type, long length, + FILE *src, char *srcfile, + FILE *dst, char *dstfile) { + /* Write segment header */ + putc(128, dst); + putc(type, dst); + putc(length & 0xFF, dst); + putc((length >> 8) & 0xFF, dst); + putc((length >> 16) & 0xFF, dst); + putc((length >> 24) & 0xFF, dst); + + /* Copy segment data */ + copyFile(h, length, src, srcfile, dst, dstfile); +} + +/* Write PFB format file. */ +static void writePFB(txCtx h, FILE *font, char *fontfile, + long begBinary, long begTrailer, long endTrailer) { + char *tmpfil = "(t1w) reformat tmpfil"; + FILE *tmp = tmpfile(); + if (tmp == NULL) + fileError(h, tmpfil); + + /* Write pfb font to tmp file */ + copyPFBSegment(h, 1, begBinary, font, fontfile, tmp, tmpfil); + copyPFBSegment(h, 2, begTrailer - begBinary, font, fontfile, tmp, tmpfil); + copyPFBSegment(h, 1, endTrailer - begTrailer, font, fontfile, tmp, tmpfil); + copyPFBSegment(h, 3, 0, font, fontfile, tmp, tmpfil); + + /* Copy tmp file to font file */ + font = freopen(fontfile, "wb", font); + if (font == NULL) + fileError(h, fontfile); + rewind(tmp); + copyFile(h, endTrailer + 4 * (1 + 1 + 4), tmp, tmpfil, font, fontfile); + + /* Close tmp file */ + if (fclose(tmp) == EOF) + fileError(h, tmpfil); +} + +/* Write 2-byte big-endian number. */ +static void write2(FILE *fp, unsigned short value) { + putc(value >> 8, fp); + putc(value, fp); +} + +/* Write 4-byte big-endian number. */ +static void write4(FILE *fp, unsigned long value) { + putc((value >> 24) & 0xFF, fp); + putc((value >> 16) & 0xFF, fp); + putc((value >> 8) & 0xFF, fp); + putc(value & 0xFF, fp); +} + +/* Write padding bytes */ +static void writePad(FILE *fp, long cnt) { + while (cnt--) + putc(0, fp); +} + +/* Copy POST resource. */ +static void copyPOSTRes(txCtx h, int type, long length, + FILE *src, char *srcfile, + FILE *dst, char *dstfile) { + /* Write resource header */ + write4(dst, 1 + 1 + length); + putc(type, dst); + putc(0, dst); + + /* Copy resource data */ + copyFile(h, length, src, srcfile, dst, dstfile); +} + +/* Copy POST resource. */ +static void writeSection(txCtx h, int type, long length, + FILE *src, char *srcfile, + FILE *dst, char *dstfile) { + /* Write full-length resouces */ + long cnt = length / 2046; + while (cnt--) + copyPOSTRes(h, type, 2046, src, srcfile, dst, dstfile); + + /* Write partial resource */ + cnt = length % 2046; + if (cnt > 0 || length == 0) + copyPOSTRes(h, type, cnt, src, srcfile, dst, dstfile); +} + +/* Write reference. */ +static void writeRef(FILE *fp, int *id, long *offset, long length) { + write2(fp, (unsigned short)((*id)++)); + write2(fp, (unsigned short)-1); + putc(0, fp); + putc((*offset >> 16) & 0xFF, fp); + putc((*offset >> 8) & 0xFF, fp); + putc(*offset & 0xFF, fp); + write4(fp, 0); + *offset += length + (4 + 1 + 1); +} + +/* Write references. */ +static void writeRefs(FILE *fp, int *id, long *offset, long length) { + long cnt = length / 2046; + while (cnt--) + writeRef(fp, id, offset, 2046); + + cnt = length % 2046; + if (cnt > 0 || length == 0) + writeRef(fp, id, offset, cnt); +} + +/* Write LWFN format file. */ +static void writeLWFN(txCtx h, FILE *font, char *fontfile, + long begBinary, long begTrailer, long endTrailer) { + enum { + MAP_HEADER_LEN = 16 + 4 + 4 * 2, + TYPE_LIST_LEN = 2 + 4 + 2 * 2, + REFERENCE_LEN = 2 * 2 + 1 + 3 + 4 + }; + int id; + long offset; + long length0 = begBinary; /* Text header */ + long length1 = begTrailer - begBinary; /* Binary section */ + long length2 = endTrailer - begTrailer; /* Text trailer */ + long length3 = 0; /* End-of-font program */ + long rescnt = ((length0 + 2045) / 2046 + + (length1 + 2045) / 2046 + + (length2 + 2045) / 2046 + + 1); + long datalen = rescnt * (4 + 1 + 1) + endTrailer; + long maplen = MAP_HEADER_LEN + TYPE_LIST_LEN + rescnt * REFERENCE_LEN; + char *tmpfil = "(t1w) reformat tmpfile"; + FILE *tmp = tmpfile(); + if (tmp == NULL) + fileError(h, tmpfil); + + /* Write resource header */ + write4(tmp, 256); + write4(tmp, 256 + datalen); + write4(tmp, datalen); + write4(tmp, maplen); + + /* Write system and application data area */ + writePad(tmp, 112 + 128); + + /* Write resources */ + writeSection(h, 1, length0, font, fontfile, tmp, tmpfil); + writeSection(h, 2, length1, font, fontfile, tmp, tmpfil); + writeSection(h, 1, length2, font, fontfile, tmp, tmpfil); + writeSection(h, 5, length3, font, fontfile, tmp, tmpfil); + + /* Write map header */ + writePad(tmp, 16 + 4 + 2); + write2(tmp, 0); + write2(tmp, MAP_HEADER_LEN); + write2(tmp, (unsigned short)maplen); + + /* Write type list */ + write2(tmp, 0); + write4(tmp, CTL_TAG('P', 'O', 'S', 'T')); + write2(tmp, (unsigned short)(rescnt - 1)); + write2(tmp, TYPE_LIST_LEN); + + /* Write reference list */ + id = 501; + offset = 0; + writeRefs(tmp, &id, &offset, length0); + writeRefs(tmp, &id, &offset, length1); + writeRefs(tmp, &id, &offset, length2); + writeRefs(tmp, &id, &offset, length3); + + /* Name list empty */ + + /* Copy tmp file to font file */ + font = freopen(fontfile, "wb", font); + if (font == NULL) + fileError(h, fontfile); + rewind(tmp); + copyFile(h, 256 + datalen + maplen, tmp, tmpfil, font, fontfile); + + /* Close tmp file */ + if (fclose(tmp) == EOF) + fileError(h, tmpfil); +} + +/* Perform platform-specific reformatting of file. */ +static void t1_Reformat(txCtx h) { + int state; + long begBinary; /* Offset to start of binary section */ + long begTrailer; /* Offset to start of trailer */ + long endTrailer; /* Offset to EOF */ + char *fontfile = h->dst.stm.filename; + FILE *font = fopen(fontfile, "rb"); + if (font == NULL) + fileError(h, fontfile); + + /* Find "eexec " string */ + state = 0; + for (;;) + switch (fgetc(font)) { + case 'e': + switch (state) { + case 0: + state = 1; + break; + case 1: + state = 2; + break; + case 3: + state = 4; + break; + default: + state = 0; + break; + } + break; + case 'x': + state = (state == 2) ? 3 : 0; + break; + case 'c': + state = (state == 4) ? 5 : 0; + break; + case ' ': + if (state == 5) { + begBinary = ftell(font); + if (begBinary == -1) + fileError(h, fontfile); + goto findTrailer; + } else + state = 0; + break; + case EOF: + if (feof(font)) + fatal(h, "can't find eexec"); + else + fileError(h, fontfile); + break; + } + +findTrailer: + /* Find a line of 64 '0' chars */ + state = 0; + for (;;) + switch (fgetc(font)) { + case '0': + if (++state == 64) { + begTrailer = ftell(font); + if (begTrailer == -1) + fileError(h, fontfile); + begTrailer -= 64; + goto findEOF; + } + break; + case EOF: + if (feof(font)) + fatal(h, "can't find tailer"); + else + fileError(h, fontfile); + break; + default: + state = 0; + break; + } + +findEOF: + /* Find end-of-file */ + if (fseek(font, 0, SEEK_END)) + fileError(h, fontfile); + endTrailer = ftell(font); + if (endTrailer == -1) + fileError(h, fontfile); + + rewind(font); + switch (h->t1w.flags & T1W_NEWLINE_MASK) { + case T1W_NEWLINE_WIN: + writePFB(h, font, fontfile, begBinary, begTrailer, endTrailer); + break; + case T1W_NEWLINE_MAC: + writeLWFN(h, font, fontfile, begBinary, begTrailer, endTrailer); + break; + } + + if (fclose(font) == EOF) + fileError(h, fontfile); +} + +/* End font. */ +static void t1_EndFont(txCtx h) { + if (h->t1w.options & T1W_DECID) { + /* Add .notdef (if not already added) */ + if (h->src.type == src_Type1) + (void)t1rGetGlyphByCID(h->t1r.ctx, 0, &h->cb.glyph); + + else if (h->src.type == src_CFF) + (void)cfrGetGlyphByCID(h->cfr.ctx, 0, &h->cb.glyph); + + /* Convert to name-keyed font */ + h->top->sup.flags &= ~ABF_CID_FONT; + h->top->FDArray.cnt = 1; + h->top->FDArray.array = &h->top->FDArray.array[h->t1w.fd]; + h->t1w.options |= T1W_NO_UID; /* Clear UniqueIDs */ + } + + if (h->t1w.options & T1W_NO_UID) { + h->top->UniqueID = ABF_UNSET_INT; + h->top->XUID.cnt = ABF_EMPTY_ARRAY; + h->top->cid.UIDBase = ABF_UNSET_INT; + } + + if (h->t1w.options & T1W_REFORMAT && + strcmp(h->dst.stm.filename, "-") == 0) + fatal(h, "stdout can't be used with -pfb or -LWFN options"); + + if (h->app == APP_TX) { + if (!(h->flags & PATH_REMOVE_OVERLAP)) { + if (t1wEndFont(h->t1w.ctx, h->top)) + fatal(h, NULL); + } else { + if (t1wBegFont(h->t1w.ctx, h->t1w.flags, h->t1w.lenIV, h->t1w.maxGlyphs)) + fatal(h, NULL); + + resetGlyphs(h); + h->cb.glyph = t1wGlyphCallbacks; + if (h->flags & PATH_SUPRESS_HINTS) { + h->cb.glyph.stem = NULL; + h->cb.glyph.flex = NULL; + } + h->cb.glyph.direct_ctx = h->t1w.ctx; + h->cb.glyph.indirect_ctx = h; + if (h->t1w.options & T1W_DECID) + h->cb.glyph.beg = t1_GlyphBeg; + if (abfEndFont(h->abf.ctx, ABF_PATH_REMOVE_OVERLAP, &h->cb.glyph)) + fatal(h, NULL); + + if (t1wEndFont(h->t1w.ctx, h->top)) + fatal(h, NULL); + } + } else { + if (t1wEndFont(h->t1w.ctx, h->top)) + fatal(h, NULL); + } + + if (h->t1w.options & T1W_REFORMAT) + t1_Reformat(h); +} + +/* End font set. */ +static void t1_EndSet(txCtx h) { +} + +/* Stream SING glyphlet callback. */ +static int get_stream(t1wSINGCallback *sing_cb) { + long length; + txCtx h = sing_cb->ctx; + FILE *fp = h->src.stm.fp; + + /* Get file size and seek to start */ + if (fseek(fp, 0, SEEK_END) != 0 || + (length = ftell(fp)) == -1 || + fseek(fp, 0, SEEK_SET) != 0) + return 1; + + /* Update returned data */ + sing_cb->stm = &h->src.stm; + sing_cb->length = length; + + return 0; +} + +/* Setup t1 mode. */ +static void t1_SetMode(txCtx h) { + /* Initialize control data */ + /* This is now set at the start of parseArgs + h->t1w.options = 0; + */ + h->t1w.flags = (T1W_TYPE_HOST | + T1W_ENCODE_ASCII | + T1W_OTHERSUBRS_PRIVATE | + T1W_NEWLINE_UNIX); + h->t1w.lenIV = 4; + h->t1w.fd = -1; + /* Set mode name */ + h->modename = "t1"; + + /* Set library functions */ + h->dst.begset = t1_BegSet; + h->dst.begfont = t1_BegFont; + h->dst.endfont = t1_EndFont; + h->dst.endset = t1_EndSet; + + if (h->t1w.ctx == NULL) { + /* Create library context */ + t1wSINGCallback sing_cb; + sing_cb.ctx = h; + sing_cb.stm = 0; + sing_cb.length = 0; + sing_cb.get_stream = get_stream; + h->t1w.ctx = t1wNew(&h->cb.mem, &h->cb.stm, T1W_CHECK_ARGS); + if (h->t1w.ctx == NULL || t1wSetSINGCallback(h->t1w.ctx, &sing_cb)) + fatal(h, "(t1w) can't init lib"); + } + + if (h->app == APP_TX) { + if (h->abf.ctx == NULL) { + /* Create library context */ + h->abf.ctx = abfNew(&h->cb.mem, ABF_CHECK_ARGS); + if (h->abf.ctx == NULL) + fatal(h, "(abf) can't init lib"); + } + } else { + /* Initialize glyph callbacks */ + h->cb.glyph = t1wGlyphCallbacks; + h->cb.glyph.direct_ctx = h->t1w.ctx; + } + + h->mode = mode_t1; +} + +/* -------------------------------- svg mode ------------------------------- */ + +/* Begin font set. */ +static void svg_BegSet(txCtx h) { +} + +/* Begin new glyph definition. */ +static int svg_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { + txCtx h = cb->indirect_ctx; + + /* Determine (or fabricate) Unicode value for glyph. */ + info->flags |= ABF_GLYPH_UNICODE; + if (h->top->sup.flags & ABF_CID_FONT) { + info->encoding.code = h->svw.unrec; + h->svw.unrec++; + } else + info->encoding.code = mapName2UV(h, info->gname.ptr, &h->svw.unrec); + + return svwGlyphCallbacks.beg(cb, info); +} + +/* Begin font. */ +static void svg_BegFont(txCtx h, abfTopDict *top) { + h->cb.glyph.beg = svg_GlyphBeg; + h->cb.glyph.indirect_ctx = h; + + h->svw.unrec = 0xE000; /* Start of Private Use Area */ + + dstFileSetAutoName(h, top); + if (svwBegFont(h->svw.ctx, h->svw.flags)) + fatal(h, NULL); +} + +/* End font. */ +static void svg_EndFont(txCtx h) { + if (svwEndFont(h->svw.ctx, h->top)) + fatal(h, NULL); +} + +/* End font set. */ +static void svg_EndSet(txCtx h) { +} + +/* Setup svg mode. */ +static void svg_SetMode(txCtx h) { + /* Initialize control data */ + h->svw.options = 0; + h->svw.flags = SVW_NEWLINE_UNIX; + + /* Set mode name */ + h->modename = "svg"; + + /* Set library functions */ + h->dst.begset = svg_BegSet; + h->dst.begfont = svg_BegFont; + h->dst.endfont = svg_EndFont; + h->dst.endset = svg_EndSet; + + if (h->svw.ctx == NULL) { + /* Create library context */ + h->svw.ctx = svwNew(&h->cb.mem, &h->cb.stm, SVW_CHECK_ARGS); + if (h->svw.ctx == NULL) + fatal(h, "(svw) can't init lib"); + } + + /* Initialize glyph callbacks */ + h->cb.glyph = svwGlyphCallbacks; + h->cb.glyph.direct_ctx = h->svw.ctx; + + /* Set source library flags */ + h->t1r.flags |= T1R_UPDATE_OPS; + h->cfr.flags |= CFR_UPDATE_OPS; + + h->mode = mode_svg; +} + +/* -------------------------------- ufo write mode ------------------------------- */ + +static void mkdir_tx(txCtx h, char *dirPath) { + int dirErr; +#ifdef _WIN32 + dirErr = _mkdir(dirPath); +#else + dirErr = mkdir(dirPath, 0000700 | 0000070 | 0000007); +#endif + + if (dirErr != 0) + fatal(h, "Failed to creater directory '%s'.\n", dirPath); +} + +/* Begin font set. */ +static void ufw_BegSet(txCtx h) { +} + +/* Begin new glyph definition. */ +static int ufw_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { + return ufwGlyphCallbacks.beg(cb, info); +} + +/* Begin font. */ +static void ufw_BegFont(txCtx h, abfTopDict *top) { + struct stat fileStat; + int statErrNo; + + h->cb.glyph.beg = ufw_GlyphBeg; + h->cb.glyph.indirect_ctx = h; + + /* Make sure the user isn't sending the output to std out */ + if (strcmp(h->dst.stm.filename, "-") == 0) { + fatal(h, "Please specify a file path for the destination UFO font. UFO fonts cannot be serialized to stdout."); + } + /* if the UFO parent dir does not exist, make it. + If it does exist, complain and quit. */ + statErrNo = stat(h->dst.stm.filename, &fileStat); + if (statErrNo == 0) { + fatal(h, "Destination UFO font already exists: %s.\n", h->dst.stm.filename); + } else { + char buffer[FILENAME_MAX]; + mkdir_tx(h, h->dst.stm.filename); + if (h->ufr.altLayerDir != NULL) + sprintf(buffer, "%s/%s", h->file.dst, h->ufr.altLayerDir); + else + sprintf(buffer, "%s/%s", h->file.dst, "glyphs"); + mkdir_tx(h, buffer); + } + + dstFileSetAutoName(h, top); + if (ufwBegFont(h->ufow.ctx, h->ufow.flags, h->ufr.altLayerDir)) + fatal(h, NULL); +} + +/* End font. */ +static void ufw_EndFont(txCtx h) { + if (ufwEndFont(h->ufow.ctx, h->top)) + fatal(h, NULL); +} + +/* End font set. */ +static void ufw_EndSet(txCtx h) { +} + +static void ufo_SetMode(txCtx h) { + /* Initialize control data */ + h->ufow.flags = 0; + + /* Set mode name */ + h->modename = "ufo_w"; + + /* Set library functions */ + h->dst.begset = ufw_BegSet; + h->dst.begfont = ufw_BegFont; + h->dst.endfont = ufw_EndFont; + h->dst.endset = ufw_EndSet; + + if (h->ufow.ctx == NULL) { + /* Create library context */ + h->ufow.ctx = ufwNew(&h->cb.mem, &h->cb.stm, UFW_CHECK_ARGS); + if (h->ufow.ctx == NULL) + fatal(h, "(ufow) can't init lib"); + } + + /* Initialize glyph callbacks */ + h->cb.glyph = ufwGlyphCallbacks; + h->cb.glyph.direct_ctx = h->ufow.ctx; + + /* Set source library flags. It is harmless to declare a font to be cune, and we have to flatten them if going to UFO */ + h->t1r.flags = T1R_UPDATE_OPS | T1R_FLATTEN_CUBE | T1R_IS_CUBE; + h->cfr.flags = CFR_UPDATE_OPS | CFR_FLATTEN_CUBE | T1R_IS_CUBE; + + h->mode = mode_ufow; +} + +/* -------------------------------- dcf mode ------------------------------- */ + +#define tx_reserved2 2 +#define t2_reserved17 17 + +/* Return size of region. */ +static long sizeRegion(const ctlRegion *region) { + return region->end - region->begin; +} + +/* Begin flowed text. */ +static void flowBeg(txCtx h) { + h->dcf.sep = ""; +} + +/* Title flowed text. */ +static void flowTitle(txCtx h, char *title) { + flowBeg(h); + fprintf(h->dst.stm.fp, "--- %s\n", title); +} + +/* End flowed text. */ +static void flowEnd(txCtx h) { + fprintf(h->dst.stm.fp, "\n"); +} + +/* Add flowed text. */ +static void flowAdd(txCtx h, char *fmt, ...) { + va_list ap; + if (h->dcf.flags & DCF_SaveStemCnt) + return; + va_start(ap, fmt); + vfprintf(h->dst.stm.fp, fmt, ap); + va_end(ap); +} + +/* Break flowed text. */ +static void flowBreak(txCtx h, char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + fprintf(h->dst.stm.fp, "%s", h->dcf.sep); + vfprintf(h->dst.stm.fp, fmt, ap); + va_end(ap); + h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "; +} + +/* Begin flowed element. */ +static void flowElemBeg(txCtx h, long index, int complex) { + fprintf(h->dst.stm.fp, "%s[%ld]={%s", h->dcf.sep, index, + (complex && (h->dcf.flags & DCF_BreakFlowed)) ? "\n" : ""); +} + +/* Add argument to flowed element. */ +static void flowArg(txCtx h, char *fmt, ...) { + va_list ap; + if (h->dcf.flags & DCF_SaveStemCnt) + return; + va_start(ap, fmt); + fprintf(h->dst.stm.fp, "%s", h->dcf.sep); + vfprintf(h->dst.stm.fp, fmt, ap); + va_end(ap); + h->dcf.sep = " "; +} + +/* Add operator to flowed element. */ +static void flowOp(txCtx h, char *fmt, ...) { + va_list ap; + if (h->dcf.flags & DCF_SaveStemCnt) + return; + va_start(ap, fmt); + fprintf(h->dst.stm.fp, "%s", h->dcf.sep); + vfprintf(h->dst.stm.fp, fmt, ap); + va_end(ap); + h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n " : " "; +} + +/* End flowed element. */ +static void flowElemEnd(txCtx h) { + fprintf(h->dst.stm.fp, "}"); + h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "; +} + +/* Begin font set. */ +static void dcf_BegSet(txCtx h) { +} + +/* Dump table tag line. */ +static void dumpTagLine(txCtx h, char *title, const ctlRegion *region) { + if (h->dcf.level < 1) { + static char dots[] = " ................"; + fprintf(h->dst.stm.fp, "### %s%.*s (%08lx-%08lx)\n", + title, (int)(sizeof(dots) - 1 - strlen(title)), dots, + region->begin, region->end - 1L); + } else + fprintf(h->dst.stm.fp, "### %s (%08lx-%08lx)\n", + title, region->begin, region->end - 1L); +} + +/* Dump CFF header. */ +static unsigned short dcf_DumpHeader(txCtx h, const ctlRegion *region) { + unsigned short major = 0; + FILE *fp = h->dst.stm.fp; + bufSeek(h, region->begin); + major = read1(h); + + if (!(h->dcf.flags & DCF_Header) || region->begin == -1) + return major; + + dumpTagLine(h, "Header", region); + if (h->dcf.level < 1) + return major; + + fprintf(fp, "major =%u\n", major); + fprintf(fp, "minor =%u\n", read1(h)); + fprintf(fp, "hdrSize=%u\n", read1(h)); + fprintf(fp, "offSize=%u\n", read1(h)); + return major; +} + +/* Dump CFF INDEX. */ +static void dumpINDEX(txCtx h, char *title, const ctlRegion *region, + DumpElementProc dumpElement) { + dumpTagLine(h, title, region); + if (h->dcf.level < 1) + return; + else { + unsigned long i; + long offset; + long dataref; + unsigned long count; + unsigned short countSize; + unsigned char offSize = 0; /* Suppress optimizer warning */ + ctlRegion element; + FILE *fp = h->dst.stm.fp; + + /* Read header */ + bufSeek(h, region->begin); + + if (h->dcf.flags & DCF_IS_CFF2) { + countSize = 4; + count = read4(h); + } else { + count = read2(h); + countSize = 2; + } + + if (count > 0) + offSize = read1(h); + + if (h->dcf.level < 5) { + /* Dump header */ + fprintf(fp, "count =%lu\n", count); + if (count == 0) + return; + fprintf(fp, "offSize=%u\n", offSize); + + /* Dump offset array */ + flowTitle(h, "offset[index]=value"); + for (i = 0; i <= count; i++) + flowBreak(h, "[%ld]=%lu", i, readn(h, offSize)); + flowEnd(h); + } else if (count == 0) { + fprintf(fp, "empty\n"); + return; + } + + /* Compute offset array base and data reference offset */ + offset = region->begin + countSize + 1; + dataref = offset + (count + 1) * offSize - 1; + + /* Dump object data */ + flowTitle(h, "object[index]={value}"); + bufSeek(h, offset); + element.begin = dataref + readn(h, offSize); + offset += offSize; + for (i = 0; i < count; i++) { + bufSeek(h, offset); + element.end = dataref + readn(h, offSize); + offset += offSize; + dumpElement(h, i, &element); + element.begin = element.end; + } + flowEnd(h); + } +} + +/* Dump string data. */ +static void dumpString(txCtx h, const ctlRegion *region) { + long cnt = sizeRegion(region); + bufSeek(h, region->begin); + while (cnt-- > 0) + flowAdd(h, "%c", read1(h)); +} + +/* Dump Name INDEX element. */ +static void dumpNameElement(txCtx h, long index, const ctlRegion *region) { + flowElemBeg(h, index, 0); + dumpString(h, region); + flowElemEnd(h); +} + +/* Dump Name INDEX table. */ +static void dcf_DumpNameINDEX(txCtx h, const ctlRegion *region) { + if (!(h->dcf.flags & DCF_NameINDEX) || region->begin == -1) + return; + + dumpINDEX(h, "Name INDEX", region, dumpNameElement); +} + +/* Dump CFF DICT. */ +static void dumpDICT(txCtx h, const ctlRegion *region) { + static char *opname[32] = + { + /* 0 */ "version", + /* 1 */ "Notice", + /* 2 */ "FullName", + /* 3 */ "FamilyName", + /* 4 */ "Weight", + /* 5 */ "FontBBox", + /* 6 */ "BlueValues", + /* 7 */ "OtherBlues", + /* 8 */ "FamilyBlues", + /* 9 */ "FamilyOtherBlues", + /* 10 */ "StdHW", + /* 11 */ "StdVW", + /* 12 */ "escape", + /* 13 */ "UniqueID", + /* 14 */ "XUID", + /* 15 */ "charset", + /* 16 */ "Encoding", + /* 17 */ "CharStrings", + /* 18 */ "Private", + /* 19 */ "Subrs", + /* 20 */ "defaultWidthX", + /* 21 */ "nominalWidthX", + /* 22 */ "vsindex", + /* 23 */ "blend", + /* 24 */ "VarStore", + /* 25 */ "maxstack", + /* 26 */ "reserved26", + /* 27 */ "reserved27", + /* 28 */ "shortint", + /* 29 */ "longint", + /* 30 */ "real", + /* 31 */ "blendLE", + }; + static char *escopname[] = + { + /* 0 */ "Copyright", + /* 1 */ "isFixedPitch", + /* 2 */ "ItalicAngle", + /* 3 */ "UnderlinePosition", + /* 4 */ "UnderlineThickness", + /* 5 */ "PaintType", + /* 6 */ "CharstringType", + /* 7 */ "FontMatrix", + /* 8 */ "StrokeWidth", + /* 9 */ "BlueScale", + /* 10 */ "BlueShift", + /* 11 */ "BlueFuzz", + /* 12 */ "StemSnapH", + /* 13 */ "StemSnapV", + /* 14 */ "ForceBold", + /* 15 */ "reservedESC15", + /* 16 */ "lenIV", + /* 17 */ "LanguageGroup", + /* 18 */ "ExpansionFactor", + /* 19 */ "initialRandomSeed", + /* 20 */ "SyntheticBase", + /* 21 */ "PostScript", + /* 22 */ "BaseFontName", + /* 23 */ "BaseFontBlend", + /* 24 */ "numMasters", + /* 25 */ "reservedESC25", + /* 26 */ "reservedESC26", + /* 27 */ "reservedESC27", + /* 28 */ "reservedESC28", + /* 29 */ "reservedESC29", + /* 30 */ "ROS", + /* 31 */ "CIDFontVersion", + /* 32 */ "CIDFontRevision", + /* 33 */ "CIDFontType", + /* 34 */ "CIDCount", + /* 35 */ "UIDBase", + /* 36 */ "FDArray", + /* 37 */ "FDIndex", + /* 38 */ "FontName", + /* 39 */ "Chameleon", + }; + long left = sizeRegion(region); + + h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? " " : ""; + bufSeek(h, region->begin); + while (left > 0) { + unsigned char byte = read1(h); + left--; + switch (byte) { + case cff_version: + case cff_Notice: + case cff_FullName: + case cff_FamilyName: + case cff_Weight: + case cff_FontBBox: + case cff_BlueValues: + case cff_OtherBlues: + case cff_FamilyBlues: + case cff_FamilyOtherBlues: + case cff_StdHW: + case cff_StdVW: + case cff_UniqueID: + case cff_XUID: + case cff_charset: + case cff_Encoding: + case cff_CharStrings: + case cff_Private: + case cff_Subrs: + case cff_defaultWidthX: + case cff_nominalWidthX: + case cff_vsindex: + case cff_blend: + case cff_VarStore: + case cff_maxstack: + case cff_reserved26: + case cff_reserved27: + case cff_BlendLE: + flowOp(h, opname[byte]); + break; + case cff_escape: { + /* Process escaped operator */ + unsigned char escop = read1(h); + left--; + if (escop > ARRAY_LEN(escopname) - 1) + flowOp(h, "reservedESC%d", escop); + else + flowOp(h, escopname[escop]); + break; + } + case cff_shortint: { + /* 3-byte number */ + short value = read1(h); + value = value << 8 | read1(h); + left -= 2; +#if SHRT_MAX > 32767 + /* short greater that 2 bytes; handle negative range */ + if (value > 32767) + value -= 65536; +#endif + flowArg(h, "%hd", value); + } break; + case cff_longint: { + /* 5-byte number */ + long value = read1(h); + value = value << 8 | read1(h); + value = value << 8 | read1(h); + value = value << 8 | read1(h); + left -= 4; +#if LONG_MAX > 2147483647 + /* long greater that 4 bytes; handle negative range */ + if (value > 2417483647) + value -= 4294967296; +#endif + flowArg(h, "%ld", value); + } break; + case cff_BCD: { + int count = 0; + int byte = 0; /* Suppress optimizer warning */ + flowArg(h, ""); + for (;;) { + int nibble; + + if (count++ & 1) + nibble = byte & 0xf; + else { + byte = read1(h); + left--; + nibble = byte >> 4; + } + if (nibble == 0xf) + break; + + flowAdd(h, "%c", "0123456789.EE?-?"[nibble]); + if (nibble == 0xc) + flowAdd(h, "-"); + } + } break; + case 247: + case 248: + case 249: + case 250: + /* Positive 2-byte number */ + flowArg(h, "%d", 108 + 256 * (byte - 247) + read1(h)); + left--; + break; + case 251: + case 252: + case 253: + case 254: + /* Negative 2-byte number */ + flowArg(h, "%d", -108 - 256 * (byte - 251) - read1(h)); + left--; + break; + case 255: + flowOp(h, "reserved255"); + break; + default: + /* 1-byte number */ + flowArg(h, "%d", byte - 139); + break; + } + } + if (h->dcf.flags & DCF_BreakFlowed) + fprintf(h->dst.stm.fp, "\n"); +} + +/* Dump DICT element. */ +static void dumpDICTElement(txCtx h, long index, const ctlRegion *region) { + flowElemBeg(h, index, 1); + dumpDICT(h, region); + flowElemEnd(h); +} + +/* Dump Top DICT INDEX table. */ +static void dcf_DumpTopDICTINDEX(txCtx h, const ctlRegion *region) { + if (!(h->dcf.flags & DCF_TopDICTINDEX) || region->begin == -1) + return; + + dumpINDEX(h, "Top DICT INDEX", region, dumpDICTElement); +} + +static void dcf_DumpTopDICT2(txCtx h, const ctlRegion *region) { + if (!(h->dcf.flags & DCF_TopDICTINDEX) || region->begin == -1) + return; + + dumpTagLine(h, "Top DICT Data", region); + dumpDICTElement(h, 0, region); + flowEnd(h); +} + +/* Dump String INDEX element. */ +static void dumpStringElement(txCtx h, long index, const ctlRegion *region) { + flowElemBeg(h, (h->dcf.level == 5) ? SID2STD_LEN + index : index, 0); + dumpString(h, region); + flowElemEnd(h); +} + +/* Dump String INDEX table. */ +static void dcf_DumpStringINDEX(txCtx h, const ctlRegion *region) { + if (!(h->dcf.flags & DCF_StringINDEX) || region->begin == -1) + return; + + dumpINDEX(h, "String INDEX", region, dumpStringElement); +} + +/* Flow stack args. */ +static void flowStack(txCtx h) { + long i; + for (i = 0; i < h->stack.cnt; i++) + flowArg(h, "%g", INDEX(i)); + h->stack.cnt = 0; +} + +/* Flow stack args and operator. */ +static void flowCommand(txCtx h, char *opname) { + flowStack(h); + flowOp(h, opname); +} + +/* Call subr. */ +static void callsubr(txCtx h, + SubrInfo *info, const ctlRegion *caller, long left) { + long arg; + ctlRegion callee; + long saveoff = caller->end - left; + + /* Validate and unbias subr number */ + CHKUFLOW(1); + arg = info->bias + (long)POP(); + if (arg < 0 || (arg >= (long)info->count)) + fatal(h, "invalid subr call"); + + /* Compute subr region */ + bufSeek(h, info->offset + arg * info->offSize); + callee.begin = info->dataref + readn(h, info->offSize); + callee.end = info->dataref + readn(h, info->offSize); + + /* Dump subr region */ + dumpCstr(h, &callee, 1); + + if (h->dcf.flags & DCF_SaveStemCnt) + info->stemcnt.array[arg] = (unsigned char)h->dcf.stemcnt; + + if (left > 0) + bufSeek(h, saveoff); +} + +/* Dump Type 2 charstring. */ +static void dumpCstr(txCtx h, const ctlRegion *region, int inSubr) { + static char *opname[32] = + { + /* 0 */ "reserved0", + /* 1 */ "hstem", + /* 2 */ "compose", + /* 3 */ "vstem", + /* 4 */ "vmoveto", + /* 5 */ "rlineto", + /* 6 */ "hlineto", + /* 7 */ "vlineto", + /* 8 */ "rrcurveto", + /* 9 */ "reserved9", + /* 10 */ "callsubr", + /* 11 */ "return", + /* 12 */ "escape", + /* 13 */ "reserved13", + /* 14 */ "endchar", + /* 15 */ "vsindex", + /* 16 */ "blend", + /* 17 */ "callgrel", + /* 18 */ "hstemhm", + /* 19 */ "hintmask", + /* 20 */ "cntrmask", + /* 21 */ "rmoveto", + /* 22 */ "hmoveto", + /* 23 */ "vstemhm", + /* 24 */ "rcurveline", + /* 25 */ "rlinecurve", + /* 26 */ "vvcurveto", + /* 27 */ "hhcurveto", + /* 28 */ "shortint", + /* 29 */ "callgsubr", + /* 30 */ "vhcurveto", + /* 31 */ "hvcurveto", + }; + static char *escopname[] = + { + /* 0 */ "dotsection", + /* 1 */ "reservedESC1", + /* 2 */ "reservedESC2", + /* 3 */ "and", + /* 4 */ "or", + /* 5 */ "not", + /* 6 */ "reservedESC6", + /* 7 */ "reservedESC7", + /* 8 */ "reservedESC8", + /* 9 */ "abs", + /* 10 */ "add", + /* 11 */ "sub", + /* 12 */ "div", + /* 13 */ "reservedESC13", + /* 14 */ "neg", + /* 15 */ "eq", + /* 16 */ "reservedESC16", + /* 17 */ "reservedESC17", + /* 18 */ "drop", + /* 19 */ "reservedESC19", + /* 20 */ "put", + /* 21 */ "get", + /* 22 */ "ifelse", + /* 23 */ "random", + /* 24 */ "mul", + /* 25 */ "reservedESC25", + /* 26 */ "sqrt", + /* 27 */ "dup", + /* 28 */ "exch", + /* 29 */ "index", + /* 30 */ "roll", + /* 31 */ "reservedESC31", + /* 32 */ "reservedESC32", + /* 33 */ "reservedESC33", + /* 34 */ "hflex", + /* 35 */ "flex", + /* 36 */ "hflex1", + /* 37 */ "flex1", + /* 38 */ "cntron", + /* 39 */ "blend1", + /* 40 */ "blend2", + /* 41 */ "blend3", + /* 42 */ "blend4", + /* 43 */ "blend6", + /* 44 */ "setwv1", + /* 45 */ "setwv2", + /* 46 */ "setwv3", + /* 47 */ "setwv4", + /* 48 */ "setwv5", + /* 49 */ "setwvN", + /* 50 */ "transform", + }; + long left = sizeRegion(region); + + if (!inSubr) + h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? " " : ""; + bufSeek(h, region->begin); + while (left > 0) { + unsigned char byte = read1(h); + left--; + switch (byte) { + case tx_reserved0: + case tx_rlineto: + case tx_hlineto: + case tx_vlineto: + case tx_rrcurveto: + case t2_reserved9: + case t2_reserved13: + case tx_endchar: + case t2_rcurveline: + case t2_rlinecurve: + case t2_vvcurveto: + case t2_hhcurveto: + case tx_vhcurveto: + case tx_hvcurveto: + flowCommand(h, opname[byte]); + break; + case tx_vmoveto: + case tx_rmoveto: + case tx_hmoveto: + h->dcf.flags |= DCF_END_HINTS; + flowCommand(h, opname[byte]); + break; + case t2_blend: + if ((h->dcf.flags & DCF_Flatten) && (!(h->dcf.flags & DCF_END_HINTS))) { + int numBlends = (int)h->stack.array[h->stack.cnt - 1]; + // take off 1 for num blend arguments, then pop the delta values: what's left are stem coords. + h->dcf.stemcnt += (h->stack.cnt - 1) - (numBlends * h->dcf.numRegions); + } + flowCommand(h, opname[byte]); + break; + case t2_vsindex: { + unsigned long vsIndex = (unsigned long)h->stack.array[0]; + h->dcf.numRegions = h->dcf.varRegionInfo.array[vsIndex].regionCount; + flowCommand(h, opname[byte]); + break; + } + case tx_compose: + flowCommand(h, opname[byte]); + break; + case tx_callgrel: + flowCommand(h, opname[byte]); + break; + case tx_callsubr: + if (h->dcf.flags & DCF_Flatten) + callsubr(h, h->dcf.fd, region, left); + else + flowCommand(h, opname[byte]); + break; + case tx_return: + if (!(h->dcf.flags & DCF_Flatten)) + flowCommand(h, opname[byte]); + break; + case t2_callgsubr: + if (h->dcf.flags & DCF_Flatten) + callsubr(h, &h->dcf.global, region, left); + else + flowCommand(h, opname[byte]); + break; + case tx_hstem: + case tx_vstem: + case t2_hstemhm: + case t2_vstemhm: + if (h->dcf.flags & DCF_Flatten) + h->dcf.stemcnt += h->stack.cnt; + flowCommand(h, opname[byte]); + break; + case t2_hintmask: + case t2_cntrmask: + if ((h->dcf.flags & DCF_Flatten) && (!(h->dcf.flags & DCF_END_HINTS))) + h->dcf.stemcnt += h->stack.cnt; + h->dcf.flags |= DCF_END_HINTS; + flowStack(h); + { + /* stemcnt is currently number of coordinates; number stems is the number of pairs of coordinates. */ + long masklen = ((h->dcf.stemcnt / 2) + 7) / 8; + flowOp(h, "%s[", opname[byte]); + left -= masklen; + while (masklen--) + flowAdd(h, "%02X", read1(h)); + flowAdd(h, "]"); + break; + } + case tx_escape: { + /* Process escaped operator */ + unsigned char escop = read1(h); + left--; + if (escop > ARRAY_LEN(escopname) - 1) { + flowStack(h); + flowOp(h, "reservedESC%d", escop); + } else + flowCommand(h, escopname[escop]); + break; + } + case t2_shortint: + /* 3-byte number */ + CHKOFLOW(1); + { + short value = read1(h); + value = value << 8 | read1(h); + left -= 2; +#if SHRT_MAX > 32767 + /* short greater that 2 bytes; handle negative range */ + if (value > 32767) + value -= 65536; +#endif + PUSH(value); + } + continue; + case 247: + case 248: + case 249: + case 250: + /* Positive 2-byte number */ + CHKOFLOW(1); + PUSH(108 + 256 * (byte - 247) + read1(h)); + left--; + continue; + case 251: + case 252: + case 253: + case 254: + /* Negative 2-byte number */ + CHKOFLOW(1); + PUSH(-108 - 256 * (byte - 251) - read1(h)); + left--; + continue; + case 255: + /* 5-byte number (16.16 fixed) */ + CHKOFLOW(1); + { + long value = read1(h); + value = value << 8 | read1(h); + value = value << 8 | read1(h); + value = value << 8 | read1(h); + left -= 4; +#if LONG_MAX > 2147483647 + /* long greater that 4 bytes; handle negative range */ + if (value > 2417483647) + value -= 4294967296; +#endif + PUSH(value / 65536.0); + } + continue; + default: + /* 1-byte number */ + CHKOFLOW(1); + PUSH(byte - 139); + continue; + } + } + if (!inSubr && (h->dcf.flags & DCF_BreakFlowed) && + !(h->dcf.flags & DCF_SaveStemCnt)) { + /* Handle left over args (if any) */ + flowStack(h); + fprintf(h->dst.stm.fp, "\n"); + } +} + +/* Dump global charstring element. */ +static void dumpGlobalElement(txCtx h, long index, const ctlRegion *region) { + h->dcf.stemcnt = h->dcf.global.stemcnt.array[index]; + h->stack.cnt = 0; + if (h->dcf.level > 1) + index -= h->dcf.global.bias; + flowElemBeg(h, index, 1); + dumpCstr(h, region, 0); + flowElemEnd(h); +} + +/* Dump Global Subr INDEX table. */ +static void dcf_DumpGlobalSubrINDEX(txCtx h, const ctlRegion *region) { + if (!(h->dcf.flags & DCF_GlobalSubrINDEX) || region->begin == -1) + return; + + h->flags &= ~DCF_Flatten; + dumpINDEX(h, "GlobalSubrINDEX", region, dumpGlobalElement); +} + +/* Dump encoding table. */ +static void dcf_DumpEncoding(txCtx h, const ctlRegion *region) { + FILE *fp = h->dst.stm.fp; + + if (!(h->dcf.flags & DCF_Encoding) || + region->begin == -1 || + h->top->sup.flags & ABF_CID_FONT) + return; + + switch (region->begin) { + case cff_StandardEncoding: + fprintf(fp, "### Encoding ........ (Standard)\n"); + break; + case cff_ExpertEncoding: + fprintf(fp, "### Encoding ........ (Expert)\n"); + break; + default: { + dumpTagLine(h, "Encoding", region); + if (h->dcf.level > 0) { + long gid; + long i; + long cnt; + unsigned char fmt; + + bufSeek(h, region->begin); + gid = 1; /* Skip glyph 0 (.notdef) */ + + fmt = read1(h); + fprintf(fp, "format =%x\n", fmt); + switch (fmt & 0x7f) { + case 0: + cnt = read1(h); + fprintf(fp, "nCodes =%ld\n", cnt); + flowTitle(h, "glyph[gid]=code"); + for (; gid <= cnt; gid++) + flowBreak(h, "[%ld]=%u", gid, read1(h)); + flowEnd(h); + break; + case 1: + cnt = read1(h); + fprintf(fp, "nRanges=%ld\n", cnt); + flowTitle(h, "Range1={first,nLeft}"); + for (i = 0; i < cnt; i++) { + unsigned char code = read1(h); + unsigned char nLeft = read1(h); + flowBreak(h, "[%ld]={%u,%u}", i, code, nLeft); + gid += nLeft + 1; + } + flowEnd(h); + break; + } + if (fmt & 0x80) { + /* Read supplementary encoding */ + cnt = read1(h); + fprintf(fp, "nSups=%ld\n", cnt); + flowTitle(h, "Supplement={code,sid}"); + for (i = 0; i < cnt; i++) { + unsigned char code = read1(h); + unsigned short sid = read2(h); + flowBreak(h, "[%ld]={%u,%hu}", i, code, sid); + } + flowEnd(h); + } + } + } break; + } +} + +/* Dump charset table. */ +static void dcf_DumpCharset(txCtx h, const ctlRegion *region) { + FILE *fp = h->dst.stm.fp; + + if (!(h->dcf.flags & DCF_Charset) || region->begin == -1) + return; + + switch (region->begin) { + case cff_ISOAdobeCharset: + fprintf(fp, "### Charset ......... (ISOAdobe)\n"); + break; + case cff_ExpertCharset: + fprintf(fp, "### Charset ......... (Expert)\n"); + break; + case cff_ExpertSubsetCharset: + fprintf(fp, "### Charset ......... (Expert Subset)\n"); + break; + default: { + dumpTagLine(h, "Charset", region); + if (h->dcf.level > 0) { + unsigned char fmt; + long i; + long gid; + + bufSeek(h, region->begin); + fmt = read1(h); + fprintf(fp, "format=%u\n", fmt); + gid = 1; /* Skip glyph 0 (.notdef) */ + + switch (fmt) { + case 0: + flowTitle(h, (h->top->sup.flags & ABF_CID_FONT) ? "glyph[gid]=cid" : "glyph[gid]=sid"); + for (; gid < h->top->sup.nGlyphs; gid++) + flowBreak(h, "[%ld]=%hu", gid, read2(h)); + flowEnd(h); + break; + case 1: + flowTitle(h, "Range1[index]={first,nLeft}"); + for (i = 0; gid < h->top->sup.nGlyphs; i++) { + unsigned short id = read2(h); + unsigned char nLeft = read1(h); + flowBreak(h, "[%ld]={%hu,%hhu}", i, id, nLeft); + gid += nLeft + 1; + } + flowEnd(h); + break; + case 2: + flowTitle(h, "Range2[index]={first,nLeft}"); + for (i = 0; gid < h->top->sup.nGlyphs; i++) { + unsigned short id = read2(h); + unsigned short nLeft = read2(h); + flowBreak(h, "[%ld]={%hu,%hu}", i, id, nLeft); + gid += nLeft + 1; + } + flowEnd(h); + break; + } + } + } break; + } +} + +/* Dump VarStore table. */ +static void dcf_getvsIndices(txCtx h, const ctlRegion *region) { + unsigned int i = 0; + unsigned short ivdSubtableCount; + dnaDCL(unsigned long, ivdSubtableOffsets); + long ivsStart = region->begin + 2; + + if (region->begin <= 0) + return; + bufSeek(h, region->begin); + read2(h); /* length */ + read2(h); /* format */ + + read4(h); /* regionListOffset */ + ivdSubtableCount = read2(h); + + dnaINIT(h->ctx.dna, ivdSubtableOffsets, ivdSubtableCount, ivdSubtableCount); + dnaSET_CNT(ivdSubtableOffsets, ivdSubtableCount); + + for (i = 0; i < ivdSubtableCount; i++) { + ivdSubtableOffsets.array[i] = read4(h); + } + + /* item variation data list */ + for (i = 0; i < ivdSubtableCount; i++) { + unsigned short regionIndexCount; + RegionInfo *regionIndexCountEntry; + + bufSeek(h, ivsStart + ivdSubtableOffsets.array[i]); + + read2(h); /* itemCount */ + read2(h); /* shortDeltaCount*/ + regionIndexCount = read2(h); + regionIndexCountEntry = dnaNEXT(h->dcf.varRegionInfo); + regionIndexCountEntry->regionCount = regionIndexCount; + } +} + +static void dcf_DumpVarStore(txCtx h, const ctlRegion *region) { + FILE *fp = h->dst.stm.fp; + + if (!(h->dcf.flags & DCF_FDSelect) || region->begin == -1) + return; + + dumpTagLine(h, "VarStore", region); + if (h->dcf.level < 1) + return; + else { + unsigned short length; + unsigned int i = 0; + unsigned long regionListOffset; + unsigned short ivdSubtableCount; + dnaDCL(unsigned long, ivdSubtableOffsets); + unsigned short axisCount, regionCount; + long ivsStart = region->begin + 2; + + bufSeek(h, region->begin); + length = read2(h); + fprintf(fp, "length =%u\n", length); + fprintf(fp, "format = %u\n", read2(h)); + + regionListOffset = read4(h); + fprintf(fp, "regionListOffset = %08lx\n", regionListOffset); + ivdSubtableCount = read2(h); + fprintf(fp, "subtableCount = %d\n", ivdSubtableCount); + + dnaINIT(h->ctx.dna, ivdSubtableOffsets, ivdSubtableCount, ivdSubtableCount); + dnaSET_CNT(ivdSubtableOffsets, ivdSubtableCount); + + fprintf(fp, "--- subtableOffsets[index]={offset}\n"); + for (i = 0; i < ivdSubtableCount; i++) { + ivdSubtableOffsets.array[i] = read4(h); + fprintf(fp, "[%u]={%08lx}\n", i, ivdSubtableOffsets.array[i]); + } + + bufSeek(h, ivsStart + regionListOffset); + fprintf(fp, "--- RegionList\n"); + axisCount = read2(h); + fprintf(fp, "axisCount = %u\n", axisCount); + regionCount = read2(h); + fprintf(fp, "regionCount = %u\n", regionCount); + + fprintf(fp, "--- RegionCoords[region,axis]={start,peak,end}\n"); + for (i = 0; i < regionCount; i++) { + unsigned short axis; + for (axis = 0; axis < axisCount; axis++) { + float start = ((float)read2(h)) / (1 << 14); + float peak = ((float)read2(h)) / (1 << 14); + float end = ((float)read2(h)) / (1 << 14); + fprintf(fp, "[%u,%u]={%g,%g,%g}\n", i, axis, start, peak, end); + } + } + + /* item variation data list */ + for (i = 0; i < ivdSubtableCount; i++) { + unsigned short itemCount; + unsigned short shortDeltaCount; + unsigned short regionIndexCount; + unsigned short r, t; + + fprintf(fp, "--- VarStoreSubtable[%u]\n", i); + + bufSeek(h, ivsStart + ivdSubtableOffsets.array[i]); + + itemCount = read2(h); + shortDeltaCount = read2(h); + regionIndexCount = read2(h); + fprintf(fp, "itemCount = %d\n", itemCount); + fprintf(fp, "shortDeltaCount = %d\n", shortDeltaCount); + fprintf(fp, "regionIndexCount = %d\n", regionIndexCount); + + /* region indices */ + fprintf(fp, "--- RegionIndex[region]={index}\n"); + for (r = 0; r < regionIndexCount; r++) { + fprintf(fp, "[%d]={%d}\n", r, read2(h)); + } + + /* load two-dimensional delta values array */ + fprintf(fp, "--- DeltaValue[item,region]={delta}\n"); + for (t = 0; t < itemCount; t++) { + for (r = 0; r < regionCount; r++) { + short delta = (short)((r < shortDeltaCount) ? read2(h) : (char)read1(h)); + fprintf(fp, "[%d,%d]={%d}\n", t, r, delta); + } + } + } + } + fprintf(fp, "\n"); +} + +/* Dump FDSelect table. */ +static void dcf_DumpFDSelect(txCtx h, const ctlRegion *region) { + FILE *fp = h->dst.stm.fp; + + if (!(h->dcf.flags & DCF_FDSelect) || region->begin == -1) + return; + + dumpTagLine(h, "FDSelect", region); + if (h->dcf.level < 1) + return; + else { + unsigned char fmt; + + bufSeek(h, region->begin); + fmt = read1(h); + fprintf(fp, "format =%u\n", fmt); + + switch (fmt) { + case 0: { + long gid; + flowTitle(h, "glyph[gid]=fd"); + for (gid = 0; gid < h->top->sup.nGlyphs; gid++) + flowBreak(h, "[%ld]=%u", gid, read1(h)); + flowEnd(h); + } break; + case 3: { + long i; + long nRanges = read2(h); + fprintf(fp, "nRanges=%ld\n", nRanges); + flowTitle(h, "Range3[index]={first,fd}"); + for (i = 0; i < nRanges; i++) { + unsigned short first = read2(h); + unsigned char fd = read1(h); + flowBreak(h, "[%ld]={%hu,%u}", i, first, fd); + } + flowEnd(h); + fprintf(fp, "sentinel=%hu\n", read2(h)); + } break; + default: + fatal(h, "invalid FDSelect format"); + } + } +} + +/* Dump FDArray INDEX table. */ +static void dcf_DumpFDArrayINDEX(txCtx h, const ctlRegion *region) { + if (!(h->dcf.flags & DCF_FDArrayINDEX) || region->begin == -1) + return; + + dumpINDEX(h, "FDArray INDEX", region, dumpDICTElement); +} + +/* Dump charstring element. */ +static void dumpCstrElement(txCtx h, long index, const ctlRegion *region) { + h->dcf.stemcnt = h->dcf.glyph.array[index]; + h->stack.cnt = 0; + flowElemBeg(h, index, 1); + dumpCstr(h, region, 0); + flowElemEnd(h); +} + +/* Dump CharString INDEX. */ +static void dcf_DumpCharStringsINDEX(txCtx h, const ctlRegion *region) { + if (!(h->dcf.flags & DCF_CharStringsINDEX) || region->begin == -1) + return; + + if (h->arg.g.cnt > 0) { + /* Dump selected glyphs from INDEX */ + fprintf(h->dst.stm.fp, "### CharStrings (flattened)\n"); + if (h->dcf.level < 1) + return; + flowBeg(h); + fprintf(h->dst.stm.fp, "--- glyph[tag]={%s,path}\n", + (h->top->sup.flags & ABF_CID_FONT) ? "cid" : "name"); + h->dcf.flags |= DCF_Flatten; + callbackSubset(h); + flowEnd(h); + } else { + /* Dump entire INDEX */ + h->dcf.flags &= ~DCF_Flatten; + dumpINDEX(h, "CharStrings INDEX", region, dumpCstrElement); + } +} + +/* Dump Private DICT. */ +static void dcf_DumpPrivateDICT(txCtx h, const ctlRegion *region) { + if (!(h->dcf.flags & DCF_PrivateDICT) || region->begin == -1) + return; + + dumpTagLine(h, "Private DICT", region); + if (h->dcf.level < 1) + return; + dumpDICT(h, region); +} + +/* Dump local charstring element. */ +static void dumpLocalElement(txCtx h, long index, const ctlRegion *region) { + h->dcf.stemcnt = h->dcf.fd->stemcnt.array[index]; + h->stack.cnt = 0; + if (h->dcf.level > 1) + index -= h->dcf.fd->bias; + flowElemBeg(h, index, 1); + dumpCstr(h, region, 0); + flowElemEnd(h); +} + +/* Dump Local Subr INDEX table. */ +static void dcf_DumpLocalSubrINDEX(txCtx h, const ctlRegion *region) { + if (!(h->dcf.flags & DCF_LocalSubrINDEX) || region->begin == -1) + return; + + h->flags &= ~DCF_Flatten; + dumpINDEX(h, "Local Subr INDEX", region, dumpLocalElement); +} + +/* Initialize subr info from INDEX. */ +static void initSubrInfo(txCtx h, const ctlRegion *region, SubrInfo *info) { + uint16_t countSize; + if (region->begin == -1) { + /* Empty region */ + info->count = 0; + return; + } + + bufSeek(h, region->begin); + + if (h->dcf.flags & DCF_IS_CFF2) { + countSize = 4; + info->count = read4(h); + } else { + info->count = read2(h); + countSize = 2; + } + + if (info->count == 0) + return; + + info->offSize = read1(h); + info->offset = region->begin + countSize + 1; + info->dataref = info->offset + (info->count + 1) * info->offSize - 1; + + dnaSET_CNT(info->stemcnt, info->count); + memset(info->stemcnt.array, 0, info->count); + + if (info->count < 1240) + info->bias = 107; + else if (info->count < 33900) + info->bias = 1131; + else + info->bias = 32768; +} + +static void dcf_setNumRegions(txCtx h, abfGlyphInfo *info) { + /* If there is a Variation Region, then we get the regionCount for the current vsIndex. + We need this in order to count stems when blends are present. */ + if (h->dcf.varRegionInfo.cnt == 0) { + h->dcf.numRegions = 0; + } else { + h->dcf.numRegions = h->dcf.varRegionInfo.array[info->blendInfo.vsindex].regionCount; + } +} + +/* Glyph begin callback to save count stems. */ +static int dcf_SaveStemCount(abfGlyphCallbacks *cb, abfGlyphInfo *info) { + txCtx h = cb->indirect_ctx; + + h->dcf.fd = &h->dcf.local.array[info->iFD]; + h->dcf.stemcnt = 0; + h->dcf.flags &= ~DCF_END_HINTS; + dcf_setNumRegions(h, info); + + h->stack.cnt = 0; + dumpCstr(h, &info->sup, 0); + h->dcf.glyph.array[info->tag] = (unsigned char)h->dcf.stemcnt; + + return ABF_SKIP_RET; +} + +/* Glyph charstring dump callback. */ +static int dcf_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { + txCtx h = cb->indirect_ctx; + FILE *fp = h->dst.stm.fp; + + /* Customized flowElemBeg() */ + if (info->flags & ABF_GLYPH_CID) + fprintf(fp, "%s[%hu]={\\%hu,%s", h->dcf.sep, info->tag, info->cid, + (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "); + else + fprintf(fp, "%s[%hu]={%s,%s", h->dcf.sep, info->tag, info->gname.ptr, + (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "); + + h->dcf.fd = &h->dcf.local.array[info->iFD]; + h->dcf.stemcnt = 0; + h->dcf.flags &= ~DCF_END_HINTS; + dcf_setNumRegions(h, info); + + h->stack.cnt = 0; + dumpCstr(h, &info->sup, 0); + + flowElemEnd(h); + + return ABF_SKIP_RET; +} + +/* Initialize charstring dump. */ +static void initCstrs(txCtx h, abfTopDict *top) { + int i; + int subrDump = h->dcf.flags & (DCF_GlobalSubrINDEX | DCF_LocalSubrINDEX); + + if (h->dcf.level < 1 || + !(subrDump || (h->dcf.flags & DCF_CharStringsINDEX))) + return; /* Nothing to do */ + + /* Initialize global subrs */ + initSubrInfo(h, + &cfrGetSingleRegions(h->cfr.ctx)->GlobalSubrINDEX, + &h->dcf.global); + + /* Initialize local subrs */ + dnaSET_CNT(h->dcf.local, top->FDArray.cnt); + for (i = 0; i < h->dcf.local.cnt; i++) + initSubrInfo(h, + &cfrGetRepeatRegions(h->cfr.ctx, i)->LocalSubrINDEX, + &h->dcf.local.array[i]); + + if (!subrDump && h->arg.g.cnt > 0) + return; + + /* Initialize glyph charstrings */ + dnaSET_CNT(h->dcf.glyph, top->sup.nGlyphs); + memset(h->dcf.glyph.array, 0, h->dcf.glyph.cnt); + + /* Save stem counts */ + h->dcf.flags |= (DCF_Flatten | DCF_SaveStemCnt); + h->cb.glyph.beg = dcf_SaveStemCount; + + if (cfrIterateGlyphs(h->cfr.ctx, &h->cb.glyph)) + fatal(h, NULL); + + h->cb.glyph.beg = dcf_GlyphBeg; + h->dcf.flags &= ~(DCF_Flatten | DCF_SaveStemCnt); +} + +/* Begin new font. */ +static void dcf_BegFont(txCtx h, abfTopDict *top) { + int i; + const cfrSingleRegions *single; + unsigned short major; + if (h->src.type != src_OTF && h->src.type != src_CFF) + fatal(h, "-dcf mode: non-CFF font"); + + if (h->arg.g.cnt > 0) { + /* Glyph subset specified; select CharStringsINDEX dump */ + if (!(h->dcf.flags & DCF_TableSelected)) + /* Clear default table selections */ + h->dcf.flags &= ~DCF_AllTables; + h->dcf.flags |= DCF_CharStringsINDEX; + if (h->dcf.level == 0) + /* Set useful dump level */ + h->dcf.level = 5; + } + + h->src.offset = -BUFSIZ; + dstFileOpen(h, top); + + single = cfrGetSingleRegions(h->cfr.ctx); + major = dcf_DumpHeader(h, &single->Header); + if (major == 1) { + if (h->dcf.flags & DCF_IS_CUBE) + h->maxOpStack = TX_MAX_OP_STACK_CUBE; + else + h->maxOpStack = T2_MAX_OP_STACK; + initCstrs(h, top); + dcf_DumpNameINDEX(h, &single->NameINDEX); + dcf_DumpTopDICTINDEX(h, &single->TopDICTINDEX); + dcf_DumpStringINDEX(h, &single->StringINDEX); + dcf_DumpGlobalSubrINDEX(h, &single->GlobalSubrINDEX); + dcf_DumpEncoding(h, &single->Encoding); + dcf_DumpCharset(h, &single->Charset); + } else { + /* number of regions needs to be known for reading charstrings */ + dcf_getvsIndices(h, &single->VarStore); + h->dcf.flags |= DCF_IS_CFF2; + h->maxOpStack = CFF2_MAX_OP_STACK; + initCstrs(h, top); + dcf_DumpTopDICT2(h, &single->TopDICTINDEX); + dcf_DumpGlobalSubrINDEX(h, &single->GlobalSubrINDEX); + } + dcf_DumpFDSelect(h, &single->FDSelect); + dcf_DumpVarStore(h, &single->VarStore); + dcf_DumpFDArrayINDEX(h, &single->FDArrayINDEX); + dcf_DumpCharStringsINDEX(h, &single->CharStringsINDEX); + + for (i = 0; i < top->FDArray.cnt; i++) { + const cfrRepeatRegions *repeat = cfrGetRepeatRegions(h->cfr.ctx, i); + if (top->FDArray.cnt > 1 && + (h->dcf.flags & (DCF_PrivateDICT | DCF_LocalSubrINDEX))) + fprintf(h->dst.stm.fp, "--- FD[%d]\n", i); + dcf_DumpPrivateDICT(h, &repeat->PrivateDICT); + h->dcf.fd = &h->dcf.local.array[i]; + dcf_DumpLocalSubrINDEX(h, &repeat->LocalSubrINDEX); + } +} + +/* End new font. */ +static void dcf_EndFont(txCtx h) { +} + +/* End font set. */ +static void dcf_EndSet(txCtx h) { + dstFileClose(h); +} + +/* Setup dcf mode. */ +static void dcf_SetMode(txCtx h) { + /* Set mode name */ + h->modename = "dcf"; + + /* h->dcf.flags is now set at the start of parseArgs + h->dcf.flags = DCF_AllTables|DCF_BreakFlowed; + h->dcf.level = 5; + */ + + /* Set library functions */ + h->dst.begset = dcf_BegSet; + h->dst.begfont = dcf_BegFont; + h->dst.endfont = dcf_EndFont; + h->dst.endset = dcf_EndSet; + + /* Initialize glyph callbacks */ + h->cb.glyph.beg = dcf_GlyphBeg; + h->cb.glyph.indirect_ctx = h; + + /* Set source library flag */ + /* These are now set at the start of parseArgs + h->cfr.flags = 0; + */ + + h->mode = mode_dcf; +} + +/* Parse -T argument. */ +void dcf_ParseTableArg(txCtx h, char *arg) { + long save_flags = h->dcf.flags & DCF_BreakFlowed; + h->dcf.flags = 0; + for (;;) { + int c = *arg++; + switch (c) { + case '\0': + h->dcf.flags |= save_flags; + h->dcf.flags |= DCF_TableSelected; + return; + case 'h': + h->dcf.flags |= DCF_Header; + break; + case 'n': + h->dcf.flags |= DCF_NameINDEX; + break; + case 't': + h->dcf.flags |= DCF_TopDICTINDEX; + break; + case 's': + h->dcf.flags |= DCF_StringINDEX; + break; + case 'g': + h->dcf.flags |= DCF_GlobalSubrINDEX; + break; + case 'e': + h->dcf.flags |= DCF_Encoding; + break; + case 'C': + h->dcf.flags |= DCF_Charset; + break; + case 'f': + h->dcf.flags |= DCF_FDSelect; + break; + case 'F': + h->dcf.flags |= DCF_FDArrayINDEX; + break; + case 'c': + h->dcf.flags |= DCF_CharStringsINDEX; + break; + case 'p': + h->dcf.flags |= DCF_PrivateDICT; + break; + case 'l': + h->dcf.flags |= DCF_LocalSubrINDEX; + break; + case 'a': + if (strcmp(arg, "ll") == 0) { + h->dcf.flags = DCF_AllTables; + break; + } + /* Fall through */ + default: + fprintf(stderr, "%s: option -T invalid selector '%c' (ignored)\n", + h->progname, c); + } + } +} + +/* ---------------------------- Subset Creation ---------------------------- */ + +/* Make random subset. */ +static void makeRandSubset(txCtx h, char *opt, char *arg) { + long i; + char *p; + float percent = (float)strtod(arg, &p); + if (*p != '\0' || percent < 0 || percent > 100) + fatal(h, "bad arg (%s)", opt); + + /* Initialize glyph list */ + dnaSET_CNT(h->subset.glyphs, h->top->sup.nGlyphs); + for (i = 0; i < h->subset.glyphs.cnt; i++) + h->subset.glyphs.array[i] = (unsigned short)i; + + /* Randomize glyph list by random permutation method */ + for (i = 0; i < h->subset.glyphs.cnt - 1; i++) { + long j = randrange(h->subset.glyphs.cnt - i); + unsigned short tmp = h->subset.glyphs.array[i]; + h->subset.glyphs.array[i] = h->subset.glyphs.array[i + j]; + h->subset.glyphs.array[i + j] = tmp; + } + + /* Trim array to specified percentage */ + h->subset.glyphs.cnt = (long)(percent / 100.0 * h->subset.glyphs.cnt + 0.5); + if (h->subset.glyphs.cnt == 0) + h->subset.glyphs.cnt = 1; +} + +/* Make Font Dict subset. */ +static void makeFDSubset(txCtx h) { + long i, j; + + if (!(h->top->sup.flags & ABF_CID_FONT)) + fatal(h, "-fd specified for non-CID font"); + + getGlyphList(h); + + for (i = 0; i < h->src.glyphs.cnt; i++) { + abfGlyphInfo *info = h->src.glyphs.array[i]; + if (h->flags & SUBSET__EXCLUDE_OPT) { + unsigned int match = 0; + for (j = 0; j < h->fd.fdIndices.cnt; j++) { + if (info->iFD == h->fd.fdIndices.array[j]) { + match = 1; + break; + } + } + if (!match) + *dnaNEXT(h->subset.glyphs) = info->tag; + + } else { + for (j = 0; j < h->fd.fdIndices.cnt; j++) { + if (info->iFD == h->fd.fdIndices.array[j]) { + *dnaNEXT(h->subset.glyphs) = info->tag; + break; + } + } + } + } + + if (h->subset.glyphs.cnt == 0) + fatal(h, "no glyphs selected by -fd argument"); +} + +/* Begin new glyph definition for gathering glyph info. */ +static int getExcludeGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { + txCtx h = cb->indirect_ctx; + *dnaNEXT(h->src.exclude) = info; + if (info->flags & ABF_GLYPH_CID) { + if (info->cid == 0) + h->flags &= ~SUBSET_HAS_NOTDEF; + } else { + if (strcmp(info->gname.ptr, ".notdef") == 0) + h->flags &= ~SUBSET_HAS_NOTDEF; + } + + return ABF_SKIP_RET; +} + +/* Compare glyphs by their tag. */ +static int CTL_CDECL cmpExcludeByTag(const void *first, const void *second) { + const abfGlyphInfo *a = *(abfGlyphInfo **)first; + const abfGlyphInfo *b = *(abfGlyphInfo **)second; + if (a->tag < b->tag) + return -1; + else if (a->tag > b->tag) + return 1; + else + return 0; +} + +/* Match glyph by its tag. */ +static int CTL_CDECL matchExcludedByTag(const void *key, const void *value, + void *ctx) { + unsigned short a = *(unsigned short *)key; + unsigned short b = (*(abfGlyphInfo **)value)->tag; + if (a < b) + return -1; + else if (a > b) + return 1; + else + return 0; +} + +static void invertSubset(txCtx h) { + long i; + long cnt; + + /* iterate over all glyphs such that h->exclude.array will be filled with tags of glyphs that match. */ + h->cb.saveGlyphBeg = h->cb.glyph.beg; + + /* Insert data gather function */ + h->cb.glyph.beg = getExcludeGlyphBeg; + h->cb.glyph.indirect_ctx = h; + h->flags |= SUBSET_SKIP_NOTDEF; + h->flags |= SUBSET_HAS_NOTDEF; /* This gets cleared by the getExcludeGlyphBeg if the .notdef is seen.*/ + callbackSubset(h); + h->flags &= ~SUBSET_SKIP_NOTDEF; + qsort(h->src.exclude.array, h->src.exclude.cnt, + sizeof(h->src.exclude.array[0]), cmpExcludeByTag); + + /* Restore saved function */ + h->cb.glyph.beg = h->cb.saveGlyphBeg; + + getGlyphList(h); + dnaSET_CNT(h->subset.glyphs, h->src.glyphs.cnt); + cnt = 0; + for (i = 0; i < h->src.glyphs.cnt; i++) { + size_t index; + unsigned short tag = h->src.glyphs.array[i]->tag; + if (!ctuLookup(&tag, h->src.exclude.array, h->src.exclude.cnt, + sizeof(h->src.exclude.array[0]), matchExcludedByTag, &index, h)) { + h->subset.glyphs.array[cnt] = tag; + cnt++; + } + } + dnaSET_CNT(h->subset.glyphs, cnt); +} + +/* Make glyph subset. */ +void prepSubset(txCtx h) { + /* In the ReadFont function, the reader library iterates through the + glyphs specified by the glyph list argument. What this function does is + to create the glyph list argument, according to which is specified of + the several options which request a subset. Note that even if the user + is excluding only one or two glyphs with the the -gx option, the glyph + list arg is still very short, as it uses ranges of GIDs. + + This function first creates a list of selected glyphs in the + h->subset.glyphs DNA. IF there are not such glyphs, it returns. Else, it + then proceeds to build the glyph list arg in makeSubsetArgList() */ + if (h->flags & SHOW_NAMES) { + fflush(stdout); + if (h->top->sup.flags & ABF_CID_FONT) + fprintf(stderr, "--- CIDFontName: %s\n", + h->top->cid.CIDFontName.ptr); + else + fprintf(stderr, "--- FontName: %s\n", + h->top->FDArray.array[0].FontName.ptr); + } + + h->flags &= ~SUBSET_HAS_NOTDEF; + h->src.glyphs.cnt = 0; + h->src.exclude.cnt = 0; + h->subset.glyphs.cnt = 0; + + /* Make subset glyph list */ + if (h->arg.p != NULL) + makeRandSubset(h, "-p", h->arg.p); + else if (h->arg.P != NULL) + makeRandSubset(h, "-P", h->arg.P); + else if (h->fd.fdIndices.cnt > 0) + makeFDSubset(h); + else if (h->flags & SUBSET__EXCLUDE_OPT) + invertSubset(h); + else { + if (h->flags & SUBSET_OPT) { + if (h->flags & PRESERVE_GID) { + getGlyphList(h); + parseSubset(h, callbackPreserveGlyph); + h->src.glyphs.array[0]->flags |= PRESERVE_CHARSTRING; + h->arg.g.cnt = 0; + h->cb.save = h->cb.glyph; + h->cb.glyph = preserveGlyphCallbacks; + h->cb.glyph.direct_ctx = h; + } + } + } + + if (h->subset.glyphs.cnt == 0) + return; /* no subset */ + + /* Make subset arg list */ + makeSubsetArgList(h); + if ((h->mode == mode_cff || h->mode == mode_t1 || h->mode == mode_svg || h->mode == mode_ufow) && (h->flags & SHOW_NAMES)) { + char *p; + char *q; + long i; + + /* Print subset */ + fprintf(stderr, + "--- subset:\n" + "SRC font %s\n" + "SRC glyphs %ld\n" + "DST font %s\n" + "DST glyphs %ld\n", + h->src.stm.filename, h->top->sup.nGlyphs, + h->dst.stm.filename, h->subset.glyphs.cnt); + p = ""; + q = h->arg.g.substrs; + for (i = 0; i < h->arg.g.cnt; i++) { + fprintf(stderr, "%s%s", p, q); + p = ","; + q += strlen(q) + 1; + } + fprintf(stderr, "\n"); + } +} + +/* Callback glyph according to type technology and selector. */ +void callbackGlyph(txCtx h, int type, unsigned short id, char *name) { + switch (h->src.type) { + case src_Type1: + switch (type) { + case sel_by_tag: + (void)t1rGetGlyphByTag(h->t1r.ctx, id, &h->cb.glyph); + break; + case sel_by_cid: + (void)t1rGetGlyphByCID(h->t1r.ctx, id, &h->cb.glyph); + break; + case sel_by_name: + (void)t1rGetGlyphByName(h->t1r.ctx, name, &h->cb.glyph); + break; + } + break; + case src_OTF: + case src_CFF: + switch (type) { + case sel_by_tag: + (void)cfrGetGlyphByTag(h->cfr.ctx, id, &h->cb.glyph); + break; + case sel_by_cid: + (void)cfrGetGlyphByCID(h->cfr.ctx, id, &h->cb.glyph); + break; + case sel_by_name: + (void)cfrGetGlyphByName(h->cfr.ctx, name, &h->cb.glyph); + break; + } + break; + case src_TrueType: + switch (type) { + case sel_by_tag: + (void)ttrGetGlyphByTag(h->ttr.ctx, id, &h->cb.glyph); + break; + case sel_by_cid: + /* Invalid; do nothing */ + break; + case sel_by_name: + (void)ttrGetGlyphByName(h->ttr.ctx, name, &h->cb.glyph); + break; + } + break; + + case src_SVG: + switch (type) { + case sel_by_tag: + (void)svrGetGlyphByTag(h->svr.ctx, id, &h->cb.glyph); + break; + case sel_by_cid: + fatal(h, "Cannot read glyphs from SVG fonts by CID "); + break; + case sel_by_name: + (void)svrGetGlyphByName(h->svr.ctx, name, &h->cb.glyph); + break; + } + break; + case src_UFO: + switch (type) { + case sel_by_tag: + (void)ufoGetGlyphByTag(h->ufr.ctx, id, &h->cb.glyph); + break; + case sel_by_cid: + fatal(h, "Cannot read glyphs from UFO fonts by CID "); + break; + case sel_by_name: + (void)ufoGetGlyphByName(h->ufr.ctx, name, &h->cb.glyph); + break; + } + break; + } +} + +/* Add .notdef glyph to destination font. If it's already added it will be skipped. */ +static void addNotdef(txCtx h) { + if (((h->src.type == src_Type1) || (h->src.type == src_SVG) || (h->src.type == src_UFO)) && !(h->top->sup.flags & ABF_CID_FONT)) + callbackGlyph(h, sel_by_name, 0, ".notdef"); + else + callbackGlyph(h, sel_by_tag, 0, NULL); +} + +/* Filter glyphs using the glyph list pararmeter. */ +void callbackSubset(txCtx h) { + parseSubset(h, callbackGlyph); + if (!((SUBSET_SKIP_NOTDEF & h->flags) || (SUBSET_HAS_NOTDEF & h->flags))) { + switch (h->mode) { + case mode_cff: + addNotdef(h); + break; + case mode_t1: + if (!(h->t1w.flags & T1W_TYPE_ADDN) && !(h->t1w.options & T1W_DECID)) + addNotdef(h); + break; + } + } +} + +/* ----------------------------- t1read Library ---------------------------- */ + +/* Read font with t1read library. */ +void t1rReadFont(txCtx h, long origin) { + if (h->t1r.ctx == NULL) { + /* Initialize library */ + h->t1r.ctx = t1rNew(&h->cb.mem, &h->cb.stm, T1R_CHECK_ARGS); + if (h->t1r.ctx == NULL) + fatal(h, "(t1r) can't init lib"); + } + + if (h->flags & SUBSET_OPT && h->mode != mode_dump) + h->t1r.flags |= T1R_UPDATE_OPS; /* Convert seac for subsets */ + + if (h->flags & NO_UDV_CLAMPING) + h->t1r.flags |= T1R_NO_UDV_CLAMPING; + + if (t1rBegFont(h->t1r.ctx, h->t1r.flags, origin, &h->top, getUDV(h))) + fatal(h, NULL); + + prepSubset(h); + + h->dst.begfont(h, h->top); + + if (h->mode != mode_cef) { + if (h->arg.g.cnt != 0) + callbackSubset(h); + else if (t1rIterateGlyphs(h->t1r.ctx, &h->cb.glyph)) + fatal(h, NULL); + } + + h->dst.endfont(h); + + if (t1rEndFont(h->t1r.ctx)) + fatal(h, NULL); +} + +/* ----------------------------- svread Library ---------------------------- */ + +/* Read font with svread library. */ +void svrReadFont(txCtx h, long origin) { + if (h->svr.ctx == NULL) { + /* Initialize library */ + h->svr.ctx = svrNew(&h->cb.mem, &h->cb.stm, SVR_CHECK_ARGS); + if (h->svr.ctx == NULL) + fatal(h, "(svr) can't init lib"); + } + + if (svrBegFont(h->svr.ctx, h->svr.flags, &h->top)) + fatal(h, NULL); + + prepSubset(h); + + h->dst.begfont(h, h->top); + + if (h->mode != mode_cef) { + if (h->arg.g.cnt != 0) + callbackSubset(h); + else if (svrIterateGlyphs(h->svr.ctx, &h->cb.glyph)) + fatal(h, NULL); + } + + h->dst.endfont(h); + + if (svrEndFont(h->svr.ctx)) + fatal(h, NULL); +} + +/* ----------------------------- ufo read Library ---------------------------- */ + +/* Read font with ufo read library. */ +void ufoReadFont(txCtx h, long origin) { + if (h->ufr.ctx == NULL) { + /* Initialize library */ + h->ufr.ctx = ufoNew(&h->cb.mem, &h->cb.stm, UFO_CHECK_ARGS); + if (h->ufr.ctx == NULL) + fatal(h, "(ufr) can't init lib"); + } + + if (ufoBegFont(h->ufr.ctx, h->ufr.flags, &h->top, h->ufr.altLayerDir)) + fatal(h, NULL); + + prepSubset(h); + + h->dst.begfont(h, h->top); + + if (h->mode != mode_cef) { + if (h->arg.g.cnt != 0) + callbackSubset(h); + else if (ufoIterateGlyphs(h->ufr.ctx, &h->cb.glyph)) + fatal(h, NULL); + } + + h->dst.endfont(h); + + if (ufoEndFont(h->ufr.ctx)) + fatal(h, NULL); +} + +/* ---------------------------- cffread Library ---------------------------- */ + +/* Read format 12 Unicode cmap. Assumes format field already read. */ +static void readCmap14(txCtx h) { + /* Skip format and length fields */ + (void)read2(h); + (void)read4(h); + + read4(h); /* numVarSelectorRecords */ + + /* Not yet implemented - not sure it is worth the effort: spot and ttx are more useful outputs for this Unicode format. */ + return; +} + +static void readCmap12(txCtx h) { + unsigned long nGroups; + unsigned long i; + + /* Skip reserved, language, and length fields */ + (void)read2(h); + (void)read4(h); + (void)read4(h); + + nGroups = read4(h); + for (i = 0; i < nGroups; i++) { + unsigned long startCharCode = read4(h); + unsigned long endCharCode = read4(h); + unsigned long startGlyphId = read4(h); + + while (startCharCode <= endCharCode) { + if (startGlyphId >= (unsigned long)h->top->sup.nGlyphs) + return; + h->cmap.encoding.array[startGlyphId++] = startCharCode++; + } + } +} + +/* Read Unicode cmap. */ +static void readCmap(txCtx h, size_t offset) { + unsigned short segCount; + cmapSegment4 *segment; + cmapSegment4 *segmentEnd; + + /* Check format */ + bufSeek(h, (long)offset); + switch (read2(h)) { + case 4: + break; + case 14: + readCmap14(h); + return; + case 12: + readCmap12(h); + return; + default: + return; + } + + /* Read format 4 subtable; skip length and language fields */ + (void)read2(h); /* length */ + (void)read2(h); /* language */ + + /* Read segment count and allocate */ + segCount = read2(h) / 2; + dnaSET_CNT(h->cmap.segment, segCount); + segmentEnd = &h->cmap.segment.array[segCount]; + + /* Skip binary search fields */ + (void)read2(h); /* searchRange */ + (void)read2(h); /* entrySelector */ + (void)read2(h); /* rangeShift */ + + /* Read segment arrays */ + for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) + segment->endCode = read2(h); + (void)read2(h); /* Skip password */ + for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) + segment->startCode = read2(h); + for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) + segment->idDelta = sread2(h); + offset = h->src.next - h->src.buf + h->src.offset; + for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) { + unsigned short idRangeOffset = read2(h); + segment->idRangeOffset = + (idRangeOffset == 0) ? 0 : (unsigned long)(offset + idRangeOffset); + offset += 2; + } + + /* Derive mapping from segments */ + for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) { + unsigned short gid; + unsigned long code; + + if (segment->idRangeOffset == 0) { + gid = segment->idDelta + segment->startCode; + for (code = segment->startCode; code <= segment->endCode; ++code) { + if (code == 0xffff || gid >= h->cmap.encoding.cnt) + break; + if (gid != 0 && h->cmap.encoding.array[gid] == ABF_GLYPH_UNENC) + h->cmap.encoding.array[gid] = (unsigned short)code; + ++gid; + } + } else { + bufSeek(h, segment->idRangeOffset); + for (code = segment->startCode; code <= segment->endCode; ++code) { + gid = read2(h); + if (code != 0xffff && gid != 0 && gid < h->cmap.encoding.cnt && + h->cmap.encoding.array[gid] == ABF_GLYPH_UNENC) + h->cmap.encoding.array[gid] = (unsigned short)code; + } + } + } +} + +/* Begin new glyph definition for gathering glyph info. */ +static int otfGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { + txCtx h = cb->indirect_ctx; + unsigned long code = h->cmap.encoding.array[info->tag]; + if (code != ABF_GLYPH_UNENC) { + info->flags |= ABF_GLYPH_UNICODE; + info->encoding.code = code; + } + return h->cb.saveGlyphBeg(cb, info); +} + +/* Prepare to process OTF font. */ +void prepOTF(txCtx h) { + long unioff; + long uni5off; + long winoff; + unsigned short uniscore; + unsigned short winscore; + unsigned short version; + unsigned short nEncodings; + unsigned short i; + sfrTable *table; + + /* Install new callback */ + h->cb.saveGlyphBeg = h->cb.glyph.beg; + h->cb.glyph.beg = otfGlyphBeg; + h->cb.glyph.indirect_ctx = h; + + /* Prepare encoding array */ + dnaSET_CNT(h->cmap.encoding, h->top->sup.nGlyphs); + for (i = 0; i < h->cmap.encoding.cnt; i++) + h->cmap.encoding.array[i] = ABF_GLYPH_UNENC; + + /* Get cmap table */ + table = sfrGetTableByTag(h->ctx.sfr, CTL_TAG('c', 'm', 'a', 'p')); + if (table == NULL) + fatal(h, "OTF: can't find cmap"); + + /* Force seek */ + h->src.offset = LONG_MAX; + bufSeek(h, table->offset); + + /* Read and check version */ + version = read2(h); + if (version != 0) + fatal(h, "cmap: bad version"); + + /* Search for Unicode and Windows subtables */ + unioff = 0; + uniscore = 0; + winoff = 0; + winscore = 0; + nEncodings = read2(h); + for (i = 0; i < nEncodings; i++) { + /* Read encoding entry */ + unsigned short platformId = read2(h); + unsigned short platspecId = read2(h); + unsigned long suboff = read4(h); + + /* Select table */ + switch (platformId) { + case 0: /* Unicode platform */ + if ((platspecId == 3 || /* Unicode */ + platspecId == 4) && /* UCS-4 */ + (unioff == 0 || uniscore < platspecId)) { + unioff = table->offset + suboff; + uniscore = platspecId; + } else if (platspecId == 5) { + uni5off = table->offset + suboff; + readCmap(h, uni5off); /* read UVS cmap. */ + } + break; + case 3: /* Windows platform */ + if ((platspecId == 1 || /* Unicode */ + platspecId == 10) && /* UCS-4 */ + (winoff == 0 || winscore < platspecId)) { + winoff = table->offset + suboff; + winscore = platspecId; + } + break; + } + } + + if (unioff != 0) + readCmap(h, unioff); /* Prefer Unicode platform... */ + else if (winoff != 0) + readCmap(h, winoff); /* ...to Windows platform */ +} + +/* ----------------------------- ttread Library ---------------------------- */ + +/* Read font with ttread library. */ +void ttrReadFont(txCtx h, long origin, int iTTC) { + if (h->ttr.ctx == NULL) { + h->ttr.ctx = ttrNew(&h->cb.mem, &h->cb.stm, TTR_CHECK_ARGS); + if (h->ttr.ctx == NULL) + fatal(h, "(ttr) can't init lib"); + } + + if (ttrBegFont(h->ttr.ctx, h->ttr.flags, origin, iTTC, &h->top)) + fatal(h, NULL); + + prepSubset(h); + + h->dst.begfont(h, h->top); + + if (h->mode != mode_cef) { + if (h->arg.g.cnt != 0) + callbackSubset(h); + else if (ttrIterateGlyphs(h->ttr.ctx, &h->cb.glyph)) + fatal(h, NULL); + } + + h->dst.endfont(h); + + if (ttrEndFont(h->ttr.ctx)) + fatal(h, NULL); +} + +/* ---------------- Platform-Specific Font Wrapper Callbacks --------------- */ + +/* Prepare next segment of font data. */ +static size_t nextseg(txCtx h, char **ptr) { + size_t srcleft = h->src.end - h->src.next; + + if (srcleft == 0) { + /* Refill empty source buffer */ + fillbuf(h, h->src.offset + h->src.length); + srcleft = h->src.length; + } + + *ptr = h->src.next; + if (srcleft <= h->seg.left) { + /* Return full buffer */ + h->seg.left -= srcleft; + h->src.next += srcleft; + } else { + /* Return partial buffer */ + srcleft = h->seg.left; + h->src.next += h->seg.left; + h->seg.left = 0; + } + + return srcleft; +} + +/* Refill input buffer from PFB stream. */ +static size_t PFBRefill(txCtx h, char **ptr) { + while (h->seg.left == 0) { + /* New segment; read segment header */ + int escape = read1(h); + int type = read1(h); + + /* Check segment header */ + if (escape != 128 || (type != 1 && type != 2 && type != 3)) + fatal(h, "bad PFB segment type"); + + if (type == 3) { + /* EOF */ + *ptr = NULL; + return 0; + } else { + /* Read segment length (little endian) */ + h->seg.left = read1(h); + h->seg.left |= read1(h) << 8; + h->seg.left |= (long)read1(h) << 16; + h->seg.left |= (long)read1(h) << 24; + } + } + + return nextseg(h, ptr); +} + +/* Refill input buffer from POST resource stream. */ +static size_t POSTRefill(txCtx h, char **ptr) { + while (h->seg.left == 0) { + /* New POST resource */ + int type; + + /* Read length and type */ + h->seg.left = read4(h) - 2; + + type = read1(h); + (void)read1(h); /* Discard padding byte (not documented) */ + + /* Process resource data */ + switch (type) { + case 0: + /* Comment; skip data */ + bufSeek(h, h->src.offset + (long)h->seg.left); + h->seg.left = 0; + break; + case 1: /* ASCII */ + case 2: /* Binary */ + break; + case 3: /* End-of-file */ + case 5: /* End-of-data */ + *ptr = NULL; + return 0; + case 4: /* Data in data fork; unsupported */ + default: /* Unknown POST type */ + fatal(h, "bad POST resource type"); + } + } + + return nextseg(h, ptr); +} + +/* ----------------------------- sfnt Handling ----------------------------- */ + +/* Add font record to list. */ +static void addFont(txCtx h, int type, int iTTC, long offset) { + FontRec *rec = dnaNEXT(h->fonts); + rec->type = type; + rec->iTTC = iTTC; + rec->offset = offset; +} + +static void addTTCFont(txCtx h, int ttcIndex, long origin, long offset) { + ctlTag version; + int result; + result = sfrBegFont(h->ctx.sfr, &h->src.stm, offset, &version); + switch (result) { + case sfrSuccess: { + switch (version) { + case sfr_v1_0_tag: + case sfr_true_tag: + /* TrueType */ + addFont(h, src_TrueType, ttcIndex, origin); + break; + case sfr_OTTO_tag: + /* OTF */ + addFont(h, src_OTF, ttcIndex, origin); + break; + default: + fatal(h, "(sfr) %s", sfrErrStr(sfrErrBadSfnt)); + } + break; + case sfrErrBadSfnt: + break; + default: + fatal(h, "(sfr) %s", sfrErrStr(result)); + } + } +} + +/* Add TrueType Collection font. */ +static void addTTC(txCtx h, long origin) { + /* sfrGetNextTTCOffset() returns 0 when it is asked to get the next offset + after the last real font, so it serves effectively as a test for + iterating through all the fonts in the TTC. */ + int i; + long offset; + + if (h->arg.i != NULL) { + int j; + i = (int)strtol(h->arg.i, NULL, 0); + if (i < 0) + fatal(h, "bad TTC index (-i)"); + + for (j = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); j++) { + if (j < i) + continue; + addTTCFont(h, i, origin, offset); + break; + } + + } else if (h->flags & EVERY_FONT) { + /* -y option; add whole collection */ + for (i = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); i++) { + addTTCFont(h, i, origin, offset); + } + } else { + /* Dump TTC index and quit */ + printf( + "### TrueType Collection (TTC)\n" + "\n" + "--- TableDirectory[index]=offset\n"); + for (i = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); i++) + printf("[%d]=%08lx\n", i, offset); + + printf( + "\n" + "Re-run %s and select a single table in the directory\n" + "with the -i option or every table with the -y option.\n", + h->progname); + exit(1); + } +} + +/* Read 4-byte signature and try to match against sfnt. */ +static void readsfnt(txCtx h, long origin) { + /* Note that 'origin' is the offset from the file to the beginning of the + font data for either a TTC, OTF or TTF font. It is NOT the offset to an SFNT-based font + in a TTC. The sfr functions access tables in an sfnt-based font at an + offset equal to the table offset from the sfnt table directory plus the 'origin' offset. + in + */ + enum { + CID__HDR_SIZE = 4 * 4 + 3 * 2, /* 'CID ' table header size */ + TYP1_HDR_SIZE = 5 * 4 + 2 * 2 /* 'TYP1' table header size */ + }; + ctlTag version; + sfrTable *table; + int result; + + if (h->ctx.sfr == NULL) { + /* Initialize library */ + h->ctx.sfr = + sfrNew(&h->cb.mem, &h->cb.stm, SFR_CHECK_ARGS); + if (h->ctx.sfr == NULL) + fatal(h, "(sfr) can't init lib"); + } + + result = sfrBegFont(h->ctx.sfr, &h->src.stm, origin, &version); + switch (result) { + case sfrSuccess: + switch (version) { + case sfr_v1_0_tag: + case sfr_true_tag: + /* TrueType */ + addFont(h, src_TrueType, 0, origin); + break; + case sfr_OTTO_tag: + /* OTF */ + addFont(h, src_OTF, 0, origin); + break; + case sfr_typ1_tag: + /* GX or sfnt-wrapped CID font */ + table = sfrGetTableByTag(h->ctx.sfr, CID__); + if (table != NULL) + addFont(h, src_Type1, 0, table->offset + CID__HDR_SIZE); + else { + table = sfrGetTableByTag(h->ctx.sfr, TYP1_); + if (table != NULL) + addFont(h, src_Type1, 0, table->offset + TYP1_HDR_SIZE); + } + break; + case sfr_ttcf_tag: + /* TrueType Collection */ + addTTC(h, origin); + break; + } + break; + case sfrErrBadSfnt: + break; + default: + fatal(h, "(sfr) %s", sfrErrStr(result)); + } + + result = sfrEndFont(h->ctx.sfr); + if (result) + fatal(h, "(sfr) %s", sfrErrStr(result)); +} + +/* ------------------------- Macintosh Resource Map ------------------------ */ + +/* Print Macintosh resource map. */ +static void printResMap(txCtx h, long origin) { + long i; + printf( + "### Macintosh Resource Fork (%08lx)\n" + "\n" + "Type Id Attr Offset Length Name\n" + "---- ----- ---- -------- -------- --------\n", + origin); + for (i = 0; i < h->res.map.cnt; i++) { + ResInfo *res = &h->res.map.array[i]; + printf("%c%c%c%c %5hu %02hhx %08lx %08lx %s\n", + (int)(res->type >> 24 & 0xff), (int)(res->type >> 16 & 0xff), + (int)(res->type >> 8 & 0xff), (int)(res->type & 0xff), + res->id, res->attrs, res->offset, res->length, + (res->name == 0xffff) ? "--none--" : &h->res.names.array[res->name]); + } +} + +/* Print resource map and re-run note for user and quit. */ +static void printNote(txCtx h, long origin) { + printf( + "Macintosh FFIL with multiple sfnt resources:\n" + "\n"); + printResMap(h, origin); + printf( + "\n" + "Re-run %s and select a single sfnt resource with the\n" + "-i option or every sfnt resource with the -y option.\n", + h->progname); + exit(1); +} + +/* Read and process Macintosh resource map. */ +static void doResMap(txCtx h, long origin) { + /* Macintosh resource structures */ + struct + { + unsigned long mapOffset; + } header; + struct + { + unsigned short attrs; + unsigned short typeListOffset; + unsigned short nameListOffset; + } map; +#if 0 + /* Included for reference only */ + struct + { + unsigned long type; + unsigned short cnt; + unsigned short refListOffset; + } type; + struct + { + unsigned short id; + unsigned short nameOffset; + char attrs; + char dataOffset[3]; + unsigned long reserved; + } refList; +#endif + enum { + HEADER_SIZE = 256, /* Resource header size */ + MAP_SKIP_SIZE = 16 + 4 + 2 * 2, /* Skip to typeListOffset */ + REFLIST_SKIP_SIZE = 2 * 2 + 1 /* Skip to dataOffset */ + }; + long typeListCnt; + long i; + long j; + + /* Read header (4-byte header.dataOffset already read) */ + header.mapOffset = origin + read4(h); + + /* Read map */ + bufSeek(h, header.mapOffset + MAP_SKIP_SIZE); + map.typeListOffset = read2(h); + map.nameListOffset = read2(h); + + h->res.map.cnt = 0; + + /* Read type list */ + typeListCnt = read2(h); + for (i = 0; i <= typeListCnt; i++) { + unsigned long type = read4(h); + unsigned short cnt = read2(h); + unsigned short offset = read2(h); + ResInfo *res = dnaEXTEND(h->res.map, cnt + 1); + res->type = type; + res->length = cnt; + res->offset = offset; + for (j = 1; j <= cnt; j++) + res[j].type = type; + } + + /* Read reference list */ + i = 0; + while (i < h->res.map.cnt) { + ResInfo *res = &h->res.map.array[i]; + long cnt = (long)res->length; + bufSeek(h, header.mapOffset + map.typeListOffset + res->offset); + for (j = 0; j <= cnt; j++) { + res->id = read2(h); + res->name = read2(h); + res->attrs = read1(h); + res->offset = (unsigned long)read1(h) << 16; + res->offset |= read1(h) << 8; + res->offset |= read1(h); + res->offset += HEADER_SIZE; + res->offset += origin; + (void)read4(h); + res++; + } + i += j; + } + + /* Read names */ + for (i = 0; i < h->res.map.cnt; i++) { + ResInfo *res = &h->res.map.array[i]; + if (res->name != 0xffff) { + char *name; + int length; + bufSeek(h, header.mapOffset + map.nameListOffset + res->name); + length = read1(h); + res->name = h->res.names.cnt; + name = dnaEXTEND(h->res.names, length + 1); + readN(h, length, name); + name[length] = '\0'; + } + } + + /* Read resource data lengths */ + for (i = 0; i < h->res.map.cnt; i++) { + ResInfo *res = &h->res.map.array[i]; + bufSeek(h, res->offset); + res->length = read4(h); + if (res->type != POST_) + res->offset += 4; + } + + /* Process resource map */ + if (h->flags & DUMP_RES) { + /* -r option; print resource map and exit */ + printResMap(h, origin); + exit(0); + } else if (h->arg.i != NULL) { + /* -i option; look for specific sfnt resource */ + unsigned short id = (unsigned short)strtol(h->arg.i, NULL, 0); + + for (i = 0; i < h->res.map.cnt; i++) { + ResInfo *res = &h->res.map.array[i]; + if (res->type == sfnt_ && res->id == id) { + readsfnt(h, res->offset); + return; + } + } + fatal(h, "resource not found"); + } else { + /* Look for sfnt/POST resources */ + for (i = 0; i < h->res.map.cnt; i++) { + ResInfo *res = &h->res.map.array[i]; + switch (res->type) { + case sfnt_: + if (h->flags & EVERY_FONT) + /* -y option; add sfnt */ + readsfnt(h, res->offset); + else if (i + 1 == h->res.map.cnt || + h->res.map.array[i + 1].type != sfnt_) { + /* Singleton sfnt resource */ + readsfnt(h, res->offset); + return; + } else + /* Multiple sfnt resources; print note */ + printNote(h, origin); + break; + case POST_: + h->seg.refill = POSTRefill; + addFont(h, src_Type1, 0, res->offset); + return; + } + } + } +} + +/* ----------------------- AppleSingle/Double Formats ---------------------- */ + +/* Process AppleSingle/Double format data. */ +static void doASDFormats(txCtx h, ctlTag magic) { + char junk[16]; + long i; + + h->asd.magic = magic; + h->asd.version = read4(h); + + /* Skip filler */ + readN(h, sizeof(junk), junk); + + /* Read number of entries */ + dnaSET_CNT(h->asd.entries, read2(h)); + + /* Read entry descriptors */ + for (i = 0; i < h->asd.entries.cnt; i++) { + EntryDesc *entry = &h->asd.entries.array[i]; + entry->id = read4(h); + entry->offset = read4(h); + entry->length = read4(h); + } + + if (h->flags & DUMP_ASD) { + /* -R option; print AppleSingle/Double data */ + printf( + "### %s Format, Version %1.1f\n" + "\n", + (h->asd.magic == sig_AppleSingle) ? "AppleSingle" : "AppleDouble", + h->asd.version / 65536.0); + + printf( + "Id Offset Length Description\n" + "-- -------- -------- -------------\n"); + + for (i = 0; i < h->asd.entries.cnt; i++) { + static char *desc[] = + { + /* 00 */ "--unknown--", + /* 01 */ "Data Fork", + /* 02 */ "Resource Fork", + /* 03 */ "Real Name", + /* 04 */ "Comment", + /* 05 */ "Icon, B&W", + /* 06 */ "Icon, Color", + /* 07 */ "File Info (old format)", + /* 08 */ "File Dates Info", + /* 09 */ "Finder Info", + /* 10 */ "Macintosh File Info", + /* 11 */ "ProDOS File Info", + /* 12 */ "MS-DOS File Info", + /* 13 */ "Short Name", + /* 14 */ "AFP File Info", + /* 15 */ "Directory ID", + }; + EntryDesc *entry = &h->asd.entries.array[i]; + printf("%02lx %08lx %08lx %s\n", + entry->id, entry->offset, entry->length, + (entry->id < ARRAY_LEN(desc)) ? desc[entry->id] : "--unknown--"); + } + exit(0); + } else + for (i = 0; i < h->asd.entries.cnt; i++) { + EntryDesc *entry = &h->asd.entries.array[i]; + if (entry->length > 0) + switch (entry->id) { + case 1: + /* Data fork (AppleSingle); see if it's an sfnt */ + readsfnt(h, entry->offset); + break; + case 2: + /* Resource fork (AppleSingle/Double) */ + bufSeek(h, entry->offset + 4); + doResMap(h, entry->offset); + break; + } + } +} + +/* Scan source file for fonts and build font list. */ +void buildFontList(txCtx h) { + ctlTag sig; + h->fonts.cnt = 0; + + /* Initialize segment */ + h->seg.refill = NULL; + + if (h->src.stm.fp == NULL) { + /* We get here only if h->file.src is a directory. Check if it is UFO font */ + char tempFileName[FILENAME_MAX]; + FILE *tempFP; + sprintf(tempFileName, "%s/glyphs/contents.plist", h->file.src); + tempFP = fopen(tempFileName, "rt"); + if (tempFP != NULL) { + // it is a ufo font! + fclose(tempFP); + addFont(h, src_UFO, 0, 0); + } else { + fileError(h, h->src.stm.filename); + } + } else { + /* Read first buffer */ + fillbuf(h, 0); + /* Make 2-byte signature */ + sig = (ctlTag)read1(h) << 24; + sig |= (ctlTag)read1(h) << 16; + + switch (sig) { + case sig_PostScript0: + case sig_PostScript1: + case sig_PostScript2: + addFont(h, src_Type1, 0, 0); + break; + case sig_PFB: + h->seg.refill = PFBRefill; + addFont(h, src_Type1, 0, 0); + break; + case sig_CFF: + case sig_CFF2: + addFont(h, src_CFF, 0, 0); + break; + default: + /* Make 4-byte signature */ + sig |= read1(h) << 8; + sig |= read1(h); + switch (sig) { + case sig_MacResource: + doResMap(h, 0); + break; + case sig_AppleSingle: + case sig_AppleDouble: + doASDFormats(h, sig); + break; + default: + readsfnt(h, 0); + } + } + + if (h->fonts.cnt == 0) { + if ((0 == strncmp(h->src.buf, "src.buf, "fonts.cnt == 0) + fatal(h, "bad font file: %s", h->src.stm.filename); +} + +/* ------------------------------------------------------------------------- */ + +/* Setup new mode. */ +void setMode(txCtx h, int mode) { + /* Initialize files */ + h->file.sr = NULL; + h->file.sd = NULL; + h->file.dd = NULL; + strcpy(h->file.src, "-"); + strcpy(h->file.dst, "-"); + + /* Begin new mode */ + switch (mode) { + case mode_dump: + dump_SetMode(h); + break; + case mode_ps: + ps_SetMode(h); + break; + case mode_afm: + afm_SetMode(h); + break; + case mode_path: + path_SetMode(h); + break; + case mode_cff: + cff_SetMode(h); + break; + case mode_cef: + cef_SetMode(h); + break; + case mode_pdf: + pdf_SetMode(h); + break; + case mode_mtx: + mtx_SetMode(h); + break; + case mode_t1: + t1_SetMode(h); + break; + case mode_svg: + svg_SetMode(h); + break; + case mode_ufow: + ufo_SetMode(h); + break; + case mode_dcf: + dcf_SetMode(h); + break; + } + + h->flags |= SEEN_MODE; +} diff --git a/c/rotatefont/build/osx/xcode/rotateFont.xcodeproj/project.pbxproj b/c/rotatefont/build/osx/xcode/rotateFont.xcodeproj/project.pbxproj index 4e98ddc9b..ad3f5fbb7 100644 --- a/c/rotatefont/build/osx/xcode/rotateFont.xcodeproj/project.pbxproj +++ b/c/rotatefont/build/osx/xcode/rotateFont.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ buildPhases = ( ); dependencies = ( + DE770BB821937AA500E12570 /* PBXTargetDependency */, BDE029BB190F02EA0013858F /* PBXTargetDependency */, BDE029B9190F02E70013858F /* PBXTargetDependency */, BDBB2A7017A84A46002059B0 /* PBXTargetDependency */, @@ -66,6 +67,7 @@ BDE029BD190F03350013858F /* libufowrite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDA148C718FF437900788518 /* libufowrite.a */; }; BDEA9B8A1E499C7500EFF385 /* libnameread.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEA9B7F1E499BAE00EFF385 /* libnameread.a */; }; BDEA9B8B1E499C7800EFF385 /* libvarread.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEA9B851E499BBA00EFF385 /* libvarread.a */; }; + DE4B9A2821935BDE00C8BB92 /* libtx_shared.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DE4B9A2621935BD100C8BB92 /* libtx_shared.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -545,6 +547,27 @@ remoteGlobalIDString = D2AAC045055464E500DB518D; remoteInfo = varread; }; + DE4B9A2521935BD100C8BB92 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DE4B9A2121935BD100C8BB92 /* tx_shared.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DE8577CD2192544500D4F584; + remoteInfo = tx_shared; + }; + DE770BB421937A9A00E12570 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DE4B9A2121935BD100C8BB92 /* tx_shared.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = DE8577CC2192544500D4F584; + remoteInfo = tx_shared; + }; + DE770BB721937AA500E12570 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DE4B9A2121935BD100C8BB92 /* tx_shared.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = DE8577CC2192544500D4F584; + remoteInfo = tx_shared; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -586,6 +609,7 @@ BDA34F540D6F6B680009FF85 /* pstoken.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = pstoken.xcodeproj; path = ../../../../public/lib/build/pstoken/osx/xcode/pstoken.xcodeproj; sourceTree = SOURCE_ROOT; }; BDEA9B7A1E499BAE00EFF385 /* nameread.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = nameread.xcodeproj; path = ../../../../public/lib/build/nameread/osx/xcode/nameread.xcodeproj; sourceTree = ""; }; BDEA9B801E499BBA00EFF385 /* varread.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = varread.xcodeproj; path = ../../../../public/lib/build/varread/osx/xcode/varread.xcodeproj; sourceTree = ""; }; + DE4B9A2121935BD100C8BB92 /* tx_shared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = tx_shared.xcodeproj; path = ../../../../public/lib/build/tx_shared/osx/xcode/tx_shared.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -593,6 +617,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DE4B9A2821935BDE00C8BB92 /* libtx_shared.a in Frameworks */, BDEA9B8B1E499C7800EFF385 /* libvarread.a in Frameworks */, BDEA9B8A1E499C7500EFF385 /* libnameread.a in Frameworks */, BDE029BD190F03350013858F /* libufowrite.a in Frameworks */, @@ -630,6 +655,7 @@ BDA34AEC0D6F3F530009FF85 /* Headers */, 08FB7795FE84155DC02AAC07 /* Source */, 1AB674ADFE9D54B511CA2CBB /* Products */, + DE4B9A2721935BDE00C8BB92 /* Frameworks */, ); name = cvt2sing; sourceTree = ""; @@ -773,6 +799,7 @@ BDA34E880D6F654F0009FF85 /* t1read.xcodeproj */, BD43E1B90DAB3FF200F5623C /* t1write.xcodeproj */, BDA34F290D6F6A9E0009FF85 /* t2cstr.xcodeproj */, + DE4B9A2121935BD100C8BB92 /* tx_shared.xcodeproj */, BDA34E9C0D6F657B0009FF85 /* ttread.xcodeproj */, BDEA9B801E499BBA00EFF385 /* varread.xcodeproj */, ); @@ -891,6 +918,21 @@ name = Products; sourceTree = ""; }; + DE4B9A2221935BD100C8BB92 /* Products */ = { + isa = PBXGroup; + children = ( + DE4B9A2621935BD100C8BB92 /* libtx_shared.a */, + ); + name = Products; + sourceTree = ""; + }; + DE4B9A2721935BDE00C8BB92 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -904,6 +946,7 @@ buildRules = ( ); dependencies = ( + DE770BB521937A9A00E12570 /* PBXTargetDependency */, BDEA9B891E499C6C00EFF385 /* PBXTargetDependency */, BDEA9B871E499C6800EFF385 /* PBXTargetDependency */, BDE029B7190F02E10013858F /* PBXTargetDependency */, @@ -1035,6 +1078,10 @@ ProductGroup = BDA34E9D0D6F657B0009FF85 /* Products */; ProjectRef = BDA34E9C0D6F657B0009FF85 /* ttread.xcodeproj */; }, + { + ProductGroup = DE4B9A2221935BD100C8BB92 /* Products */; + ProjectRef = DE4B9A2121935BD100C8BB92 /* tx_shared.xcodeproj */; + }, { ProductGroup = BDA148B718FF432B00788518 /* Products */; ProjectRef = BDA148B618FF432B00788518 /* uforead.xcodeproj */; @@ -1218,6 +1265,13 @@ remoteRef = BDEA9B841E499BBA00EFF385 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + DE4B9A2621935BD100C8BB92 /* libtx_shared.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libtx_shared.a; + remoteRef = DE4B9A2521935BD100C8BB92 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; /* End PBXReferenceProxy section */ /* Begin PBXSourcesBuildPhase section */ @@ -1457,6 +1511,16 @@ name = varread; targetProxy = BDEA9B881E499C6C00EFF385 /* PBXContainerItemProxy */; }; + DE770BB521937A9A00E12570 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = tx_shared; + targetProxy = DE770BB421937A9A00E12570 /* PBXContainerItemProxy */; + }; + DE770BB821937AA500E12570 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = tx_shared; + targetProxy = DE770BB721937AA500E12570 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ diff --git a/c/rotatefont/build/win/visualstudio/rotateFont.sln b/c/rotatefont/build/win/visualstudio/rotateFont.sln index 9f03d0886..a12cfd351 100644 --- a/c/rotatefont/build/win/visualstudio/rotateFont.sln +++ b/c/rotatefont/build/win/visualstudio/rotateFont.sln @@ -1,10 +1,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.27703.2047 +VisualStudioVersion = 15.0.26228.48 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rotateFont", "rotateFont.vcxproj", "{66C1C775-5375-41AC-BEC0-93173237700D}" ProjectSection(ProjectDependencies) = postProject {0F6C5C6E-5B6D-463D-81DF-CCEB1271C759} = {0F6C5C6E-5B6D-463D-81DF-CCEB1271C759} + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54} = {34A7C3B7-FC39-49B3-A554-C532F2DC4A54} {DA4450E3-E694-4F89-AEB3-D1A5498BD6F5} = {DA4450E3-E694-4F89-AEB3-D1A5498BD6F5} EndProjectSection EndProject @@ -54,6 +55,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nameread", "..\..\..\..\pub EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "varread", "..\..\..\..\public\lib\build\varread\win\visualstudio\varread.vcxproj", "{0F6C5C6E-5B6D-463D-81DF-CCEB1271C759}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tx_shared", "..\..\..\..\public\lib\build\tx_shared\win\visualstudio\tx_shared.vcxproj", "{34A7C3B7-FC39-49B3-A554-C532F2DC4A54}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -254,6 +257,14 @@ Global {0F6C5C6E-5B6D-463D-81DF-CCEB1271C759}.Release|x64.Build.0 = Release|x64 {0F6C5C6E-5B6D-463D-81DF-CCEB1271C759}.Release|x86.ActiveCfg = Release|Win32 {0F6C5C6E-5B6D-463D-81DF-CCEB1271C759}.Release|x86.Build.0 = Release|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x64.ActiveCfg = Debug|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x64.Build.0 = Debug|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x86.ActiveCfg = Debug|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x86.Build.0 = Debug|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x64.ActiveCfg = Release|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x64.Build.0 = Release|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x86.ActiveCfg = Release|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/c/rotatefont/build/win/visualstudio/rotateFont.vcxproj b/c/rotatefont/build/win/visualstudio/rotateFont.vcxproj old mode 100755 new mode 100644 index d8ea2aa64..925a0bb7a --- a/c/rotatefont/build/win/visualstudio/rotateFont.vcxproj +++ b/c/rotatefont/build/win/visualstudio/rotateFont.vcxproj @@ -1,4 +1,4 @@ - + @@ -257,6 +257,9 @@ {0e9d40d8-c144-4760-adc1-22d0e23a72eb} false + + {34a7c3b7-fc39-49b3-a554-c532f2dc4a54} + {2E122640-3CD7-4064-9AA3-9C685EE1A4DA} false @@ -272,4 +275,4 @@ - + \ No newline at end of file diff --git a/c/rotatefont/source/rotateFont.c b/c/rotatefont/source/rotateFont.c index 3bae86085..e18f2d36c 100644 --- a/c/rotatefont/source/rotateFont.c +++ b/c/rotatefont/source/rotateFont.c @@ -1,187 +1,18 @@ -/* Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. -This software is licensed as OpenSource, under the Apache License, Version 2.0. This license is available at: http://opensource.org/licenses/Apache-2.0. */ +/* Copyright 2014-2018 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. + This software is licensed as OpenSource, under the Apache License, Version 2.0. + This license is available at: http://opensource.org/licenses/Apache-2.0. */ /* * rotateFont. A minor modification of the tx code base. */ -#include "ctlshare.h" +#include "tx_shared.h" #define ROTATE_VERSION CTL_MAKE_VERSION(1, 2, 0) -#include "cfembed.h" -#include "cffread.h" -#include "cffwrite.h" -#include "ctutil.h" -#include "dynarr.h" -#include "pdfwrite.h" -#include "sfntread.h" -#include "t1read.h" -#include "ttread.h" -#include "t1write.h" -#include "svread.h" -#include "svgwrite.h" -#include "uforead.h" -#include "ufowrite.h" -#include "txops.h" -#include "dictops.h" -#include "abfdesc.h" -#include "supportframepixeltypes.h" -#include "sha1.h" - -#undef global /* Remove conflicting definition from buildch */ - -#include -#include - -#if PLAT_MAC -#include -#include -#endif /* PLAT_MAC */ - -#include -#include -#include -#include -#include -#include -#include - -#if _WIN32 -#include -#include -#define stat _stat -#define S_IFDIR _S_IFDIR -#include /* to get _mkdir() */ -#include -#else -#include -#endif - -/* -------------------------------- Options -------------------------------- */ - -/* Note: options.h must be ascii sorted by option string */ - -enum /* Option enumeration */ -{ - opt_None, /* Not an option */ -#define DCL_OPT(string, index) index, -#include "options.h" - opt_Count -}; - -static const char *options[] = - { -#undef DCL_OPT -#define DCL_OPT(string, index) string, -#include "options.h" -}; - -/* ----------------------- Miscellaneous Definitions ----------------------- */ - -#define ARRAY_LEN(t) (sizeof(t) / sizeof((t)[0])) - -/* Predefined tags */ -#define CID__ CTL_TAG('C', 'I', 'D', ' ') /* sfnt-wrapped CID table */ -#define POST_ CTL_TAG('P', 'O', 'S', 'T') /* Macintosh POST resource */ -#define TYP1_ CTL_TAG('T', 'Y', 'P', '1') /* GX Type 1 sfnt table */ -#define sfnt_ CTL_TAG('s', 'f', 'n', 't') /* sfnt resource */ - -/* File signatures */ -#define sig_PostScript0 CTL_TAG('%', '!', 0x00, 0x00) -#define sig_PostScript1 CTL_TAG('%', 'A', 0x00, 0x00) /* %ADO... */ -#define sig_PostScript2 CTL_TAG('%', '%', 0x00, 0x00) /* %%... */ -#define sig_PFB ((ctlTag)0x80010000) -#define sig_CFF ((ctlTag)0x01000000) -#define sig_OTF CTL_TAG('O', 'T', 'T', 'O') -#define sig_MacResource ((ctlTag)0x00000100) -#define sig_AppleSingle ((ctlTag)0x00051600) -#define sig_AppleDouble ((ctlTag)0x00051607) -#define sig_UFO CTL_TAG('<', '?', 'x', 'm') -/* Generate n-bit mask */ -#define N_BIT_MASK(n) (~(~0UL << (n))) #define kHADV_NOT_SPECIFIED 11111.0 /* If the value is this, we don't overwrite the glyphs original advance width*/ #define kkHADV_NOT_SPECIFIED_NAME "None" -enum { MAX_VERSION_SIZE = 100 }; - -typedef struct txCtx_ *txCtx; /* tx program context */ - -typedef struct /* Macintosh resource info */ -{ - ctlTag type; - unsigned short id; - unsigned long name; /* Name offset then name index */ - unsigned char attrs; - unsigned long offset; /* Offset to resource data (excludes length) */ - unsigned long length; /* Length of resource data */ -} ResInfo; - -typedef struct /* AppleSingle/Double entry descriptor */ -{ - unsigned long id; - long offset; - unsigned long length; -} EntryDesc; - -typedef struct /* Glyph name to Unicode value mapping */ -{ - char *gname; - unsigned short uv; -} Name2UV; - -enum /* Stream types */ -{ - stm_Src, /* Source */ - stm_Dst, /* Destination */ - stm_Tmp, /* Temporary */ - stm_Dbg /* Debug */ -}; -#define TMPSIZE 50000 /* Temporary stream buffer size */ - -typedef struct /* Data stream */ -{ - short type; - short flags; -#define STM_TMP_ERR (1 << 0) /* Temporary stream error occured */ -#define STM_DONT_CLOSE (1 << 1) /* Don't close stream */ - char *filename; - FILE *fp; - char *buf; - size_t pos; /* Tmp stream position */ -} Stream; - -typedef struct /* Font record */ -{ - int type; /* Font technology type */ - int iTTC; /* TrueType Collection index */ - long offset; /* File offset */ -} FontRec; - -typedef struct /* CFF subr data */ -{ - unsigned short count; - unsigned char offSize; - unsigned long offset; /* Offset array base */ - unsigned long dataref; - dnaDCL(unsigned char, stemcnt); /* Per-subr stem count */ - unsigned short bias; -} SubrInfo; - -typedef struct /* cmap format 4 segment */ -{ - unsigned short endCode; - unsigned short startCode; - short idDelta; - unsigned long idRangeOffset; /* changed from unsigned short */ -} cmapSegment4; - -enum /* Charstring types */ -{ - dcf_CharString, - dcf_GlobalSubr, - dcf_LocalSubr -}; typedef struct { #define MAX_PS_NAMELEN 128 @@ -218,4989 +49,113 @@ typedef struct RotateGlyphEntry *curRGE; /* index of RotateGlyphEntry for the current glyph */ } RotateInfo; -typedef float FltMtx[6]; /* Float matrix */ - -/* Function types */ -typedef size_t (*SegRefillFunc)(txCtx h, char **ptr); -typedef void (*abfGlyphWidthCallback)(abfGlyphCallbacks *cb, float hAdv); -typedef void (*DumpElementProc)(txCtx h, long index, const ctlRegion *region); +/* -------------------------------- Options -------------------------------- */ -enum /* Source font technology types */ -{ - src_Type1, /* Type 1 */ - src_OTF, /* OTF */ - src_CFF, /* Naked CFF */ - src_TrueType, /* TrueType */ - src_SVG, /* SVG data. */ - src_UFO, /* UFO data. */ -}; +/* Note: options.h must be ascii sorted by option string */ -enum /* Operation modes */ +enum /* Option enumeration */ { - mode_dump, - mode_ps, - mode_afm, - mode_path, - mode_cff, - mode_cef, - mode_pdf, - mode_mtx, - mode_t1, - mode_bc, /* is deprecated, but still support the option in order to be able to print an error message */ - mode_svg, - mode_ufow, - mode_dcf -}; - -/* Memory allocation failure simulation control values */ -enum { - FAIL_REPORT = -1, /* Report total calls to mem_manage() */ - FAIL_INACTIVE = -2 /* Inactivate memory allocation failure */ -}; - -struct txCtx_ { - char *progname; /* This program's name (for diagnostics) */ - long flags; /* Control flags */ -#define SEEN_MODE (1 << 0) /* Flags mode option seen */ -#define DONE_FILE (1 << 1) /* Processed font file */ -#define DUMP_RES (1 << 2) /* Print mac resource map */ -#define DUMP_ASD (1 << 3) /* Print AppleSingle/Double data */ -#define AUTO_FILE_FROM_FILE (1 << 4) /* Gen. dst filename from src filename */ -#define AUTO_FILE_FROM_FONT (1 << 5) /* Gen. dst filename from src FontName */ -#define SUBSET_OPT (1 << 6) /* Subsetting option specified */ -#define EVERY_FONT (1 << 7) /* Read every font from multi-font file */ -#define SHOW_NAMES (1 << 8) /* Show filename and FontName being processed */ -#define PRESERVE_GID (1 << 9) /* Preserve gids when subsetting */ -#define NO_UDV_CLAMPING (1 << 10) /* Don't clamp UVD's */ -#define SUBSET__EXCLUDE_OPT (1 << 11) /* use glyph list to exclude glyphs, instead of including them */ -#define SUBSET_SKIP_NOTDEF (1 << 12) /* While this is set, don't force the notdef into the current subset. */ -#define SUBSET_HAS_NOTDEF (1 << 13) /* Indcates that notdef has been added, no need to force it in.*/ - int mode; /* Current mode */ - char *modename; /* Name of current mode */ - abfTopDict *top; /* Top dictionary */ - RotateInfo rotateInfo; - struct /* Source data */ - { - int type; /* Font technology type */ - Stream stm; /* Input stream */ - long offset; /* Buffer offset */ - long length; /* Buffer length */ - char buf[BUFSIZ]; /* Buffer data */ - char *end; /* One past end of buffer */ - char *next; /* Next byte available */ - int print_file; /* Flags when to print filename ahead of debug */ - dnaDCL(abfGlyphInfo *, glyphs); /* Source glyph list when subsetting */ - dnaDCL(abfGlyphInfo *, exclude); /* Excluded glyph list when subsetting */ - dnaDCL(float, widths); /* Source glyph width for -t1 -3 mode */ - dnaDCL(Stream, streamStack); /* support recursive opening of source stream files ( for components) */ - } src; - struct /* Destination data */ - { - Stream stm; /* Output stream */ - char buf[BUFSIZ]; /* Buffer data */ - void (*begset)(txCtx h); - void (*begfont)(txCtx h, abfTopDict *top); - void (*endfont)(txCtx h); - void (*endset)(txCtx h); - } dst; - dnaDCL(FontRec, fonts); /* Source font records */ - struct /* Macintosh resources */ - { - dnaDCL(ResInfo, map); /* Resouce map */ - dnaDCL(char, names); /* Resouce names */ - } res; - struct /* AppleSingle/Double data */ - { - unsigned long magic; /* Magic #, 00051600-single, 00051607-double */ - unsigned long version; /* Format version */ - dnaDCL(EntryDesc, entries); /* Entry descriptors */ - } asd; - struct /* Font data segment */ - { - SegRefillFunc refill; /* Format-specific refill */ - size_t left; /* Bytes remaining in segment */ - } seg; - struct /* Script file data */ - { - char *buf; /* Whole file buffer */ - dnaDCL(char *, args); /* Arg list */ - } script; - struct /* File processing */ - { - char *sr; /* Source root path */ - char *sd; /* Source directory path */ - char *dd; /* Destination directory path */ - char src[FILENAME_MAX]; - char dst[FILENAME_MAX]; - } file; - struct /* Random subset data */ - { - dnaDCL(unsigned short, glyphs); /* Tag list */ - dnaDCL(char, args); /* Simulated -g args */ - } subset; - struct /* Option args */ - { - char *U; - char *i; - char *p; - char *P; - struct /* Glyph list (g option) */ - { - int cnt; /* Substring count */ - char *substrs; /* Concatenated substrings */ - } g; - struct - { - int level; - } path; - struct /* cef-specific */ - { - unsigned short flags; /* cefEmbedSpec flags */ - char *F; - } cef; - } arg; - struct /* t1read library */ - { - t1rCtx ctx; - Stream tmp; - Stream dbg; - long flags; - } t1r; - struct /* cffread library */ - { - cfrCtx ctx; - Stream dbg; - long flags; - } cfr; - struct /* ttread library */ - { - ttrCtx ctx; - Stream dbg; - long flags; - } ttr; - struct /* svread library */ - { - svrCtx ctx; - Stream tmp; - Stream dbg; - long flags; - } svr; - struct /* uforead library */ - { - ufoCtx ctx; - Stream src; - Stream dbg; - long flags; - char *altLayerDir; - } ufr; - struct /* cffwrite library */ - { - cfwCtx ctx; - Stream tmp; - Stream dbg; - long flags; - } cfw; - struct /* cfembed library */ - { - cefCtx ctx; - Stream src; - Stream tmp0; - Stream tmp1; - dnaDCL(cefSubsetGlyph, subset); - dnaDCL(char *, gnames); - dnaDCL(unsigned short, lookup); /* Glyph lookup */ - } cef; - struct /* abf facilities */ - { - abfCtx ctx; - struct abfDumpCtx_ dump; - struct abfDrawCtx_ draw; - struct abfMetricsCtx_ metrics; - struct abfAFMCtx_ afm; - } abf; - struct /* pdfwrite library */ - { - pdwCtx ctx; - long flags; - long level; - } pdw; - struct /* Metrics mode data */ - { - int level; /* Output level */ - struct /* Metric data */ - { - struct abfMetricsCtx_ ctx; - abfGlyphCallbacks cb; - } metrics; - struct /* Aggregate bbox */ - { - float left; - float bottom; - float right; - float top; - struct /* Glyph that set value */ - { - abfGlyphInfo *left; - abfGlyphInfo *bottom; - abfGlyphInfo *right; - abfGlyphInfo *top; - } setby; - } bbox; - } mtx; - struct /* t1write library */ - { - long options; /* Control options */ -#define T1W_NO_UID (1 << 0) /* Remove UniqueID keys */ -#define T1W_DECID (1 << 1) /* -decid option */ -#define T1W_USEFD (1 << 2) /* -usefd option */ -#define T1W_REFORMAT (1 << 3) /* -pfb or -LWFN options */ -#define T1W_WAS_EMBEDDED (1 << 4) /* +E option */ - t1wCtx ctx; - Stream tmp; - Stream dbg; - long flags; /* Library flags */ - int lenIV; - int fd; /* -decid target fd */ - dnaDCL(char, gnames); /* -decid glyph names */ - } t1w; - struct /* svgwrite library */ - { - long options; /* Control options */ - svwCtx ctx; - unsigned short unrec; - Stream tmp; - Stream dbg; - long flags; /* Library flags */ - } svw; - struct /* ufowrite library */ - { - ufwCtx ctx; - Stream tmp; - Stream dbg; - long flags; /* Library flags */ - } ufow; - struct /* Dump cff mode */ - { - long flags; /* Control flags */ -#define DCF_Header (1<<0) -#define DCF_NameINDEX (1<<1) -#define DCF_TopDICTINDEX (1<<3) -#define DCF_StringINDEX (1<<4) -#define DCF_GlobalSubrINDEX (1<<5) -#define DCF_Encoding (1<<6) -#define DCF_Charset (1<<7) -#define DCF_FDSelect (1<<8) -#define DCF_FDArrayINDEX (1<<9) -#define DCF_CharStringsINDEX (1<<10) -#define DCF_PrivateDICT (1<<11) -#define DCF_LocalSubrINDEX (1<<12) -#define DCF_AllTables N_BIT_MASK(13) -#define DCF_BreakFlowed (1<<13) /* Break flowed objects */ -#define DCF_TableSelected (1<<14) /* -T option used */ -#define DCF_Flatten (1<<15) /* Flatten charstrings */ -#define DCF_SaveStemCnt (1<<16) /* Save h/vstems counts */ -#define DCF_IS_CUBE (1<<17) /* Font has Cube data - use different stack and op limits. */ - - int level; /* Dump level */ - char *sep; /* Flowed text separator */ - SubrInfo global; /* Global subrs */ - dnaDCL(SubrInfo, local); /* Local subrs */ - dnaDCL(unsigned char, glyph); /* Per-glyph stem count */ - long stemcnt; /* Current stem count */ - SubrInfo *fd; /* Current local info */ - } dcf; - struct /* Operand stack */ - { - long cnt; - float array[TX_MAX_OP_STACK_CUBE]; - } stack; - struct /* Font Dict filter */ - { - dnaDCL(int, fdIndices); /* Source glyph width for -t1 -3 mode */ - } fd; - struct /* OTF cmap encoding */ - { - dnaDCL(unsigned long, encoding); - dnaDCL(cmapSegment4, segment); - } cmap; - struct /* Library contexts */ - { - dnaCtx dna; /* dynarr library */ - sfrCtx sfr; /* sfntread library */ - } ctx; - struct /* Callbacks */ - { - ctlMemoryCallbacks mem; - ctlStreamCallbacks stm; - abfGlyphCallbacks glyph; - abfGlyphBegCallback saveGlyphBeg; - abfGlyphCallbacks save; - int selected; - } cb; - struct /* Memory allocation failure simulation data */ - { - long iCall; /* Index of next call to mem_manange */ - long iFail; /* Index of failing call or FAIL_REPORT or FAIL_INACTIVE */ - } failmem; - long maxOpStack; + opt_None, /* Not an option */ +#define DCL_OPT(string, index) index, +#include "options.h" + opt_Count }; -/* Check stack contains at least n elements. */ -#define CHKUFLOW(n) \ - do { \ - if (h->stack.cnt < (n)) fatal(h, "Type 2 stack underflow"); \ - } while (0) - -/* Check stack has room for n elements. */ -#define CHKOFLOW(n) \ - do { \ - if (h->stack.cnt + (n) > h->maxOpStack) \ - fatal(h, "Type 2 stack overflow"); \ - } while (0) - -/* Stack access without check. */ -#define INDEX(i) (h->stack.array[i]) -#define POP() (h->stack.array[--h->stack.cnt]) -#define PUSH(v) (h->stack.array[h->stack.cnt++] = (float)(v)) - -/* SID to standard string map */ -static char *sid2std[] = +static const char *options[] = { -#include "stdstr1.h" -}; - -static void dumpCstr(txCtx h, const ctlRegion *region, int inSubr); -static void condAddNotdef(txCtx h); -static void callbackSubset(txCtx h); -static void txFree(txCtx h); - -/* ----------------------------- Error Handling ---------------------------- */ - -/* If first debug message for source file; print filename */ -static void printFilename(txCtx h) { - fflush(stdout); - if (h->src.print_file) { - fprintf(stderr, "%s: --- %s\n", h->progname, - strcmp(h->src.stm.filename, "-") == 0 ? "stdin" : h->src.stm.filename); - h->src.print_file = 0; - } -} - -/* Fatal exception handler. */ -static void CTL_CDECL fatal(txCtx h, char *fmt, ...) { - printFilename(h); - if (fmt != NULL) { - /* Print error message */ - va_list ap; - fprintf(stderr, "%s: ", h->progname); - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - va_end(ap); - fprintf(stderr, "\n"); - } - fprintf(stderr, "%s: fatal error\n", h->progname); - txFree(h); - exit(EXIT_FAILURE); -} - -/* Print file error message and quit */ -static void fileError(txCtx h, char *filename) { - fatal(h, "file error <%s> [%s]", strerror(errno), filename); -} - -/* --------------------------- Memory Management --------------------------- */ - -/* Allocate memory. */ -static void *memNew(txCtx h, size_t size) { - void *ptr = malloc(size); - if (ptr == NULL) - fatal(h, "no memory"); - return ptr; -} - -/* Free memory. */ -static void memFree(txCtx h, void *ptr) { - if (ptr != NULL) - free(ptr); -} - -/* ---------------------------- Memory Callbacks --------------------------- */ - -/* Manage memory. */ -static void *mem_manage(ctlMemoryCallbacks *cb, void *old, size_t size) { - if (size > 0) { - txCtx h = cb->ctx; - if (h->failmem.iCall++ == h->failmem.iFail) { - /* Simulate memory allocation failure */ - fprintf(stderr, "mem_manage() failed on call %ld.\n", - h->failmem.iCall - 1L); - return NULL; - } else if (old == NULL) - return malloc(size); /* size != 0, old == NULL */ - else - return realloc(old, size); /* size != 0, old != NULL */ - } else { - if (old == NULL) - return NULL; /* size == 0, old == NULL */ - else { - free(old); /* size == 0, old != NULL */ - return NULL; - } - } -} - -/* Initialize memory callbacks. */ -static void memInit(txCtx h) { - h->cb.mem.ctx = h; - h->cb.mem.manage = mem_manage; - h->failmem.iCall = 0; - h->failmem.iFail = FAIL_INACTIVE; -} - -/* Manage memory and handle failure. */ -static void *safeManage(ctlMemoryCallbacks *cb, void *old, size_t size) { - txCtx h = cb->ctx; - void *ptr = h->cb.mem.manage(&h->cb.mem, old, size); - if (size > 0 && ptr == NULL) - fatal(h, "no memory"); - return ptr; -} - -/* ------------------------------- Tmp Stream ------------------------------ */ - -/* Intialize tmp stream. */ -static void tmpSet(Stream *s, char *filename) { - s->type = stm_Tmp; - s->flags = 0; - s->filename = filename; - s->fp = NULL; - s->buf = NULL; - s->pos = 0; -} - -/* Open tmp stream. */ -static Stream *tmp_open(txCtx h, Stream *s) { - s->buf = memNew(h, TMPSIZE + BUFSIZ); - memset(s->buf, 0, TMPSIZE + BUFSIZ); - s->fp = tmpfile(); - if (s->fp == NULL) - fileError(h, s->filename); - return s; -} - -/* Seek on tmp stream. */ -static int tmp_seek(Stream *s, long offset) { - s->pos = offset; - return (offset < TMPSIZE) ? 0 : fseek(s->fp, offset - TMPSIZE, SEEK_SET); -} - -/* Return tmp stream position. */ -static size_t tmp_tell(Stream *s) { - return s->pos; -} - -/* Read tmp stream. */ -static size_t tmp_read(Stream *s, char **ptr) { - size_t length; - if (s->pos < TMPSIZE) { - /* Using buffer */ - *ptr = s->buf + s->pos; - length = TMPSIZE - s->pos; - - /* Anticipate next read */ - if (fseek(s->fp, 0, SEEK_SET) == -1) { - s->flags |= STM_TMP_ERR; - return 0; - } - } else { - /* Using file */ - *ptr = s->buf + TMPSIZE; - length = fread(*ptr, 1, BUFSIZ, s->fp); - } - s->pos += length; - return length; -} - -/* Write to tmp stream. */ -static size_t tmp_write(Stream *s, size_t count, char *ptr) { - if (s->pos < TMPSIZE) { - /* Writing to buffer */ - size_t length = TMPSIZE - s->pos; - if (length > count) - memcpy(s->buf + s->pos, ptr, count); - else { - /* Buffer overflow; completely fill buffer */ - memcpy(s->buf + s->pos, ptr, length); - - /* Write rest to tmp file */ - if (fseek(s->fp, 0, SEEK_SET) == -1) { - s->flags = STM_TMP_ERR; - return 0; - } - count = length + fwrite(ptr + length, 1, count - length, s->fp); - } - } else - /* Writing to file */ - count = fwrite(ptr, 1, count, s->fp); - s->pos += count; - return count; -} - -/* Close tmp stream. */ -static int tmp_close(txCtx h, Stream *s) { - int result = (s->fp != NULL) ? fclose(s->fp) : 0; - if (s->buf != NULL) - memFree(h, s->buf); - s->fp = NULL; - s->buf = NULL; - s->pos = 0; - return result; -} - -/* ---------------------------- Stream Callbacks --------------------------- */ - -/* Open stream. */ -static void *stm_open(ctlStreamCallbacks *cb, int id, size_t size) { - txCtx h = cb->direct_ctx; - Stream *s = NULL; /* Suppress optimizer warning */ - switch (id) { - case CEF_SRC_STREAM_ID: - /* Open CEF source stream */ - s = &h->cef.src; - if (strcmp(s->filename, "-") == 0) - s->fp = stdin; - else { - s->fp = fopen(s->filename, "rb"); - if (s->fp == NULL) - return NULL; - } - break; - case T1R_SRC_STREAM_ID: - case CFR_SRC_STREAM_ID: - case TTR_SRC_STREAM_ID: - case SVR_SRC_STREAM_ID: - /* Source stream already open; just return it */ - s = &h->src.stm; - break; - case UFO_SRC_STREAM_ID: { - if (cb->clientFileName != NULL) { - char buffer[FILENAME_MAX]; - sprintf(buffer, "%s/%s", h->file.src, cb->clientFileName); - s = &h->src.stm; - - s->fp = fopen(buffer, "rb"); - if (s->fp == NULL) { - return NULL; - } - *dnaNEXT(h->src.streamStack) = *s; - } else - return NULL; - break; - } - case CEF_DST_STREAM_ID: - /* Open CEF destination stream */ - s = &h->dst.stm; - if (strcmp(s->filename, "-") == 0) - s->fp = stdout; - else { - s->fp = fopen(s->filename, "w+b"); - if (s->fp == NULL) - return NULL; - } - break; - case CFW_DST_STREAM_ID: - case T1W_DST_STREAM_ID: - case PDW_DST_STREAM_ID: - case SVW_DST_STREAM_ID: - /* Open destination stream */ - s = &h->dst.stm; - if (strcmp(s->filename, "-") == 0) - s->fp = stdout; - else { - s->fp = fopen(s->filename, "wb"); - if (s->fp == NULL) - return NULL; - } - break; - case UFW_DST_STREAM_ID: { - if (cb->clientFileName != NULL) { - char buffer[FILENAME_MAX]; - sprintf(buffer, "%s/%s", h->file.dst, cb->clientFileName); - s = &h->dst.stm; - - s->fp = fopen(buffer, "wt"); - if (s->fp == NULL) { - return NULL; - } - } else - return NULL; - break; - } - case CEF_TMP0_STREAM_ID: - s = &h->cef.tmp0; - tmp_open(h, s); - break; - case CEF_TMP1_STREAM_ID: - s = &h->cef.tmp1; - tmp_open(h, s); - break; - case T1R_TMP_STREAM_ID: - s = &h->t1r.tmp; - tmp_open(h, s); - break; - case SVR_TMP_STREAM_ID: - s = &h->svr.tmp; - tmp_open(h, s); - break; - case CFW_TMP_STREAM_ID: - s = &h->cfw.tmp; - tmp_open(h, s); - break; - case T1W_TMP_STREAM_ID: - s = &h->t1w.tmp; - tmp_open(h, s); - break; - case SVW_TMP_STREAM_ID: - s = &h->svw.tmp; - tmp_open(h, s); - break; - case T1R_DBG_STREAM_ID: - s = &h->t1r.dbg; - break; - case SVR_DBG_STREAM_ID: - s = &h->svr.dbg; - break; - case UFO_DBG_STREAM_ID: - s = &h->ufr.dbg; - break; - case UFW_DBG_STREAM_ID: - s = &h->ufow.dbg; - break; - case CFR_DBG_STREAM_ID: - s = &h->cfr.dbg; - break; - case TTR_DBG_STREAM_ID: - s = &h->ttr.dbg; - break; - case CFW_DBG_STREAM_ID: - s = &h->cfw.dbg; - if (s->fp == NULL) - return NULL; - break; - case T1W_DBG_STREAM_ID: - s = &h->t1w.dbg; - if (s->fp == NULL) - return NULL; - break; - case SVW_DBG_STREAM_ID: - s = &h->svw.dbg; - if (s->fp == NULL) - return NULL; - break; - default: - fatal(h, "invalid stream open"); - } - return s; -} - -/* Seek to stream position. */ -static int stm_seek(ctlStreamCallbacks *cb, void *stream, long offset) { - if (offset >= 0) { - Stream *s = stream; - switch (s->type) { - case stm_Src: - case stm_Dst: - case stm_Dbg: - return fseek(s->fp, offset, SEEK_SET); - case stm_Tmp: - return tmp_seek(s, offset); - } - } - return -1; /* Bad seek */ -} - -/* Return stream position. */ -static long stm_tell(ctlStreamCallbacks *cb, void *stream) { - Stream *s = stream; - switch (s->type) { - case stm_Src: - case stm_Dbg: - return ftell(s->fp); - break; - case stm_Dst: - if (0 != strcmp("-", s->filename)) - return ftell(s->fp); - break; - - case stm_Tmp: - return (long)tmp_tell(s); - } - return 0; /* Suppress compiler warning */ -} - -/* Read from stream. */ -static size_t stm_read(ctlStreamCallbacks *cb, void *stream, char **ptr) { - Stream *s = stream; - switch (s->type) { - case stm_Src: { - txCtx h = cb->direct_ctx; - if (h->seg.refill != NULL) - return h->seg.refill(h, ptr); - } - /* Fall through */ - case stm_Dst: - *ptr = s->buf; - return fread(s->buf, 1, BUFSIZ, s->fp); - case stm_Tmp: - return tmp_read(s, ptr); - } - return 0; /* Suppress compiler warning */ -} - -/* Write to stream. */ -static size_t stm_write(ctlStreamCallbacks *cb, void *stream, - size_t count, char *ptr) { - Stream *s = stream; - switch (s->type) { - case stm_Src: - case stm_Dst: - return fwrite(ptr, 1, count, s->fp); - case stm_Tmp: - return tmp_write(s, count, ptr); - case stm_Dbg: { - txCtx h = cb->direct_ctx; - printFilename(h); - fprintf(stderr, "%s: (%s) %.*s\n", - h->progname, s->filename, (int)count, ptr); - } - return count; - } - return 0; /* Suppress compiler warning */ -} - -/* Return stream status. */ -static int stm_status(ctlStreamCallbacks *cb, void *stream) { - Stream *s = stream; - if (s->type == stm_Tmp) { - if (s->flags & STM_TMP_ERR) - return CTL_STREAM_ERROR; - else if (s->pos < TMPSIZE) - return CTL_STREAM_OK; - } - if (feof(s->fp)) - return CTL_STREAM_END; - else if (ferror(s->fp)) - return CTL_STREAM_ERROR; - else - return CTL_STREAM_OK; -} - -/* Close stream. */ -static int stm_close(ctlStreamCallbacks *cb, void *stream) { - txCtx h = cb->direct_ctx; - Stream *s = stream; - if (s->type == stm_Tmp) - return tmp_close(cb->direct_ctx, s); - else if (s->fp == NULL || s->fp == stdout || s->flags & STM_DONT_CLOSE) - return 0; - else { - int retval; - FILE *fp = s->fp; - retval = fclose(fp); - s->fp = NULL; /* Avoid re-close */ - if (s->type == stm_Src) { - h->src.streamStack.cnt--; - if (h->src.streamStack.cnt > 0) - *s = h->src.streamStack.array[h->src.streamStack.cnt - 1]; - } - return retval; - } -} - -/* Initialize stream record. */ -static void stmSet(Stream *s, int type, char *filename, char *buf) { - s->type = type; - s->flags = 0; - s->filename = filename; - s->fp = NULL; - s->buf = buf; - s->pos = 0; -} - -/* Initialize debug stream. */ -static void dbgSet(Stream *s, char *filename) { - s->type = stm_Dbg; - s->flags = STM_DONT_CLOSE; - s->filename = filename; - s->fp = stderr; - s->buf = NULL; - s->pos = 0; -} - -/* Close steam at exit if still open. */ -static void stmFree(txCtx h, Stream *s) { - if (s->fp != NULL) - (void)fclose(s->fp); -} - -/* Initialize stream callbacks and stream records. */ -static void stmInit(txCtx h) { - h->cb.stm.direct_ctx = h; - h->cb.stm.indirect_ctx = NULL; - h->cb.stm.clientFileName = NULL; - h->cb.stm.open = stm_open; - h->cb.stm.seek = stm_seek; - h->cb.stm.tell = stm_tell; - h->cb.stm.read = stm_read; - h->cb.stm.write = stm_write; - h->cb.stm.status = stm_status; - h->cb.stm.close = stm_close; - - stmSet(&h->src.stm, stm_Src, h->file.src, h->src.buf); - stmSet(&h->dst.stm, stm_Dst, h->file.dst, h->dst.buf); - - stmSet(&h->cef.src, stm_Src, h->file.src, h->src.buf); - - tmpSet(&h->cef.tmp0, "(cef) tmpfile0"); - tmpSet(&h->cef.tmp1, "(cef) tmpfile1"); - tmpSet(&h->t1r.tmp, "(t1r) tmpfile"); - tmpSet(&h->cfw.tmp, "(cfw) tmpfile"); - tmpSet(&h->t1w.tmp, "(t1w) tmpfile"); - tmpSet(&h->svw.tmp, "(svw) tmpfile"); - tmpSet(&h->svw.tmp, "(ufw) tmpfile"); - - dbgSet(&h->t1r.dbg, "t1r"); - dbgSet(&h->cfr.dbg, "cfr"); - dbgSet(&h->svr.dbg, "svr"); - dbgSet(&h->ufr.dbg, "ufr"); - dbgSet(&h->ufow.dbg, "ufw"); - dbgSet(&h->ttr.dbg, "ttr"); - dbgSet(&h->cfw.dbg, "cfw"); - dbgSet(&h->t1w.dbg, "t1w"); - dbgSet(&h->svw.dbg, "svw"); -} - -/* ----------------------------- File Handling ----------------------------- */ - -/* Initialize destination filename. */ -static void dstFileSetName(txCtx h, char *filename) { - if (h->file.dd != NULL) - sprintf(h->file.dst, "%s/%s", h->file.dd, filename); - else - strcpy(h->file.dst, filename); -} - -/* Set automatic destination filename. */ -static void dstFileSetAutoName(txCtx h, abfTopDict *top) { - char buf[FILENAME_MAX]; - char *filename; - - if (h->flags & AUTO_FILE_FROM_FILE) { - char *p = strrchr(h->file.src, '/'); - if (p == NULL) - p = strrchr(h->file.src, '\\'); - strcpy(buf, (p == NULL) ? h->file.src : p + 1); - p = strrchr(buf, '.'); - if (p != NULL) - *p = '\0'; - filename = buf; - } else if (h->flags & AUTO_FILE_FROM_FONT) - filename = (top->sup.flags & ABF_CID_FONT) ? top->cid.CIDFontName.ptr : top->FDArray.array[0].FontName.ptr; - else - return; - - if (h->file.dd != NULL) - sprintf(h->file.dst, "%s/%s.%s", h->file.dd, filename, h->modename); - else - sprintf(h->file.dst, "%s.%s", filename, h->modename); -} - -/* Open destination file. */ -static void dstFileOpen(txCtx h, abfTopDict *top) { - dstFileSetAutoName(h, top); - - if (h->dst.stm.fp != NULL) - return; /* Already open */ - - /* Open dstination file */ - if (strcmp(h->dst.stm.filename, "-") == 0) - h->dst.stm.fp = stdout; - else { - h->dst.stm.fp = fopen(h->dst.stm.filename, "w"); - if (h->dst.stm.fp == NULL) - fileError(h, h->dst.stm.filename); - } -} - -/* Close destination file. */ -static void dstFileClose(txCtx h) { - if (h->dst.stm.fp != stdout) { - if (fclose(h->dst.stm.fp)) - fileError(h, h->dst.stm.filename); - } - h->dst.stm.fp = NULL; -} - -/* ------------------------------- Data Input ------------------------------ */ - -/* Fill source buffer. */ -static void fillbuf(txCtx h, long offset) { - h->src.length = (long)fread(h->src.buf, 1, sizeof(h->src.buf), h->src.stm.fp); - if (h->src.length == 0) { - if (feof(h->src.stm.fp)) - fatal(h, "end of file [%s]", h->src.stm.filename); - else - fileError(h, h->src.stm.filename); - } else { - h->src.offset = offset; - h->src.next = h->src.buf; - h->src.end = h->src.buf + h->src.length; - } - return; -} - -/* Read next sequential source buffer; update offset and return first byte. */ -static char nextbuf(txCtx h) { - fillbuf(h, h->src.offset + h->src.length); - return *h->src.next++; -} - -/* Seek to buffered data byte. */ -static void bufSeek(txCtx h, long offset) { - long delta = offset - h->src.offset; - if (delta >= 0 && delta < h->src.length) - /* Offset within current buffer; reposition next byte */ - h->src.next = h->src.buf + delta; - else { - if (fseek(h->src.stm.fp, offset, SEEK_SET)) - fileError(h, h->src.stm.filename); - fillbuf(h, offset); - } -} - -/* Copy count bytes from source stream. */ -static void readN(txCtx h, size_t count, char *ptr) { - size_t left = h->src.end - h->src.next; - - while (left < count) { - /* Copy buffer */ - memcpy(ptr, h->src.next, left); - ptr += left; - count -= left; - - /* Refill buffer */ - fillbuf(h, h->src.offset + h->src.length); - left = h->src.length; - } - - memcpy(ptr, h->src.next, count); - h->src.next += count; -} - -#define read1(h) \ - (unsigned char)((h->src.next == h->src.end) ? nextbuf(h) : *h->src.next++) - -/* Read 2-byte number. */ -static unsigned short read2(txCtx h) { - unsigned short value = read1(h) << 8; - return value | read1(h); -} - -/* Read 2-byte signed number. */ -static short sread2(txCtx h) { - unsigned short value = read1(h) << 8; - value |= read1(h); -#if SHRT_MAX == 32767 - return (short)value; -#else - return (short)((value > 32767) ? value - 65536 : value); -#endif -} - -/* Read 4-byte number. */ -static unsigned long read4(txCtx h) { - unsigned long value = (unsigned long)read1(h) << 24; - value |= (unsigned long)read1(h) << 16; - value |= read1(h) << 8; - return value | read1(h); -} - -/* Read 1-, 2-, 3-, or 4-byte number. */ -static unsigned long readn(txCtx h, int n) { - unsigned long value = 0; - switch (n) { - case 4: - value = read1(h); - case 3: - value = value << 8 | read1(h); - case 2: - value = value << 8 | read1(h); - case 1: - value = value << 8 | read1(h); - } - return value; -} - -/* ------------------------- RNG-Related Functions ------------------------ */ - -/* Seed RNG with scrambled time. */ -static void seedtime(void) { - time_t now = time(NULL); - srand((unsigned)(now * now)); -} - -/* Return a random number in the range [0 - N). */ -static long randrange(long N) { - return (long)((double)rand() / ((double)RAND_MAX + 1) * N); -} - -/* ------------------------------- dump mode ------------------------------- */ - -/* Begin font set. */ -static void dump_BegSet(txCtx h) { -} - -/* Begin font. */ -static void dump_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - h->abf.dump.fp = h->dst.stm.fp; - if (h->fd.fdIndices.cnt > 0) { - h->abf.dump.excludeSubset = (h->flags & SUBSET__EXCLUDE_OPT); - h->abf.dump.fdCnt = h->fd.fdIndices.cnt; - h->abf.dump.fdArray = h->fd.fdIndices.array; - } - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - abfDumpBegFont(&h->abf.dump, top); -} - -/* End font. */ -static void dump_EndFont(txCtx h) { -} - -/* End font set. */ -static void dump_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup dump mode. */ -static void dump_SetMode(txCtx h) { - /* Initialize control data */ - h->abf.dump.level = 1; - - /* Set mode name */ - h->modename = "dump"; - - /* Set library functions */ - h->dst.begset = dump_BegSet; - h->dst.begfont = dump_BegFont; - h->dst.endfont = dump_EndFont; - h->dst.endset = dump_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphDumpCallbacks; - h->cb.glyph.direct_ctx = &h->abf.dump; - - /* Set source library flags */ - h->t1r.flags = T1R_USE_MATRIX; - h->cfr.flags = CFR_USE_MATRIX; - - h->mode = mode_dump; -} - -/* Print text parameter. */ -static void printText(int cnt, char *text[]) { - int i; - for (i = 0; i < cnt; i++) - printf("%s", text[i]); -} - -/* Mode-specific help. */ -static void dump_Help(txCtx h) { - static char *text[] = - { -#include "dump.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- ps mode -------------------------------- */ - -/* Begin font set. */ -static void ps_BegSet(txCtx h) { -} - -/* Begin font. */ -static void ps_BegFont(txCtx h, abfTopDict *top) { - if (h->abf.draw.level == 1 && h->arg.g.cnt == 0) - fatal(h, - "to use -1 option with all glyphs specify " - "an all-glyph range with -g 0-N option"); - dstFileOpen(h, top); - h->abf.draw.fp = h->dst.stm.fp; - if (h->src.type == src_TrueType) - h->abf.draw.flags |= ABF_FLIP_TICS; - else - h->abf.draw.flags &= ~ABF_FLIP_TICS; - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - abfDrawBegFont(&h->abf.draw, top); -} - -/* End font. */ -static void ps_EndFont(txCtx h) { - abfDrawEndFont(&h->abf.draw); -} - -/* End font set. */ -static void ps_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup ps mode. */ -static void ps_SetMode(txCtx h) { - /* Initialize control data */ - h->abf.draw.flags = 0; - h->abf.draw.level = 0; - - /* Set mode name */ - h->modename = "ps"; - - /* Set library functions */ - h->dst.begset = ps_BegSet; - h->dst.begfont = ps_BegFont; - h->dst.endfont = ps_EndFont; - h->dst.endset = ps_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphDrawCallbacks; - h->cb.glyph.direct_ctx = &h->abf.draw; - - /* Set source libarary flags */ - h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_ps; -} - -/* Mode-specific help. */ -static void ps_Help(txCtx h) { - static char *text[] = - { -#include "ps.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- afm mode ------------------------------- */ - -/* Begin font set. */ -static void afm_BegSet(txCtx h) { -} - -/* Begin new font. */ -static void afm_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - h->abf.afm.tmp_fp = tmpfile(); - if (h->abf.afm.tmp_fp == NULL) { - fatal(h, "Error opening temp file for AFM."); - } - h->abf.afm.fp = h->dst.stm.fp; - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - abfAFMBegFont(&h->abf.afm); -} - -/* End new font. */ -static void afm_EndFont(txCtx h) { - abfAFMEndFont(&h->abf.afm, h->top); -} - -/* End font set. */ -static void afm_EndSet(txCtx h) { - fclose(h->abf.afm.tmp_fp); - dstFileClose(h); -} - -/* Setup afm mode. */ -static void afm_SetMode(txCtx h) { - /* Set mode name */ - h->modename = "afm"; - - /* Set library functions */ - h->dst.begset = afm_BegSet; - h->dst.begfont = afm_BegFont; - h->dst.endfont = afm_EndFont; - h->dst.endset = afm_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphAFMCallbacks; - h->cb.glyph.direct_ctx = &h->abf.afm; - - /* Set source libarary flags */ - h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_afm; -} - -/* Mode-specific help. */ -static void afm_Help(txCtx h) { - static char *text[] = - { -#include "afm.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* ------------------------------ Path Library ----------------------------- */ - -/* Begin font set. */ -static void path_BegSet(txCtx h) { -} - -/* Begin new font. */ -static void path_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - - if (h->arg.path.level == 1) { - /* Prepare draw facility */ - h->abf.draw.fp = h->dst.stm.fp; - if (h->src.type == src_TrueType) - h->abf.draw.flags |= ABF_FLIP_TICS; - else - h->abf.draw.flags &= ~ABF_FLIP_TICS; - abfDrawBegFont(&h->abf.draw, top); - } else { - /* Prepare dump facility */ - h->abf.dump.fp = h->dst.stm.fp; - h->abf.dump.left = 0; - h->abf.dump.excludeSubset = 0; - h->abf.dump.fdCnt = 0; - abfDumpBegFont(&h->abf.dump, top); - } - - if (abfBegFont(h->abf.ctx, top)) - fatal(h, NULL); -} - -/* End new font. */ -static void path_EndFont(txCtx h) { - if (h->arg.path.level == 1) - abfDrawEndFont(&h->abf.draw); - - /* Initialize glyph callbacks */ - if (h->arg.path.level == 0) { - h->cb.glyph = abfGlyphDumpCallbacks; - h->cb.glyph.direct_ctx = &h->abf.dump; - } else { - h->cb.glyph = abfGlyphDrawCallbacks; - h->cb.glyph.direct_ctx = &h->abf.draw; - } - - if (abfEndFont(h->abf.ctx, ABF_PATH_REMOVE_OVERLAP, &h->cb.glyph)) - fatal(h, NULL); -} - -/* End font set. */ -static void path_EndSet(txCtx h) { - if (abfFree(h->abf.ctx)) - fatal(h, NULL); -} - -/* Set control functions. */ -static void path_SetMode(txCtx h) { - h->abf.draw.flags = 0; - h->abf.draw.level = 1; - h->abf.dump.level = 6; - - /* Set mode name */ - h->modename = "path"; - - /* Set library functions */ - h->dst.begset = path_BegSet; - h->dst.begfont = path_BegFont; - h->dst.endfont = path_EndFont; - h->dst.endset = path_EndSet; - - if (h->abf.ctx == NULL) { - /* Create library context */ - h->abf.ctx = abfNew(&h->cb.mem, ABF_CHECK_ARGS); - if (h->abf.ctx == NULL) - fatal(h, "(abf) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphPathCallbacks; - h->cb.glyph.direct_ctx = h->abf.ctx; - - h->t1r.flags |= (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags |= (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_path; -} - -/* Mode-specific help. */ -static void path_Help(txCtx h) { - static char *text[] = - { -#include "path.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- cff mode ------------------------------- */ - -/* Begin font set. */ -static void cff_BegSet(txCtx h) { - if (cfwBegSet(h->cfw.ctx, h->cfw.flags)) - fatal(h, NULL); -} - -/* Begin font. */ -static void cff_BegFont(txCtx h, abfTopDict *top) { - dstFileSetAutoName(h, top); - - // we do not support subroutinzation in rotateFont, so can pass the default maxSubr value. - if (cfwBegFont(h->cfw.ctx, NULL, 0)) - fatal(h, NULL); -} - -/* End font. */ -static void cff_EndFont(txCtx h) { - if (cfwEndFont(h->cfw.ctx, h->top)) - fatal(h, NULL); -} - -/* End font set. */ -static void cff_EndSet(txCtx h) { - if (cfwEndSet(h->cfw.ctx)) - fatal(h, NULL); -} - -/* Setup cff mode. */ -static void cff_SetMode(txCtx h) { - /* Initialize control data */ - /* This is now set at the start of parseArgs - h->cfw.flags = 0; - */ - - /* Set mode name */ - h->modename = "cff"; - - /* Set library functions */ - h->dst.begset = cff_BegSet; - h->dst.begfont = cff_BegFont; - h->dst.endfont = cff_EndFont; - h->dst.endset = cff_EndSet; - - if (h->cfw.ctx == NULL) { - /* Create library context */ - h->cfw.ctx = cfwNew(&h->cb.mem, &h->cb.stm, CFW_CHECK_ARGS); - if (h->cfw.ctx == NULL) - fatal(h, "(cfw) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = cfwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->cfw.ctx; - - if (!(h->cfw.flags & CFW_WRITE_CFF2)) { - /* This keeps these callbacks from being used when writing a regular - CFF, and avoids the overhead of trying to process the source CFF2 - blend args */ - h->cb.glyph.moveVF = NULL; - h->cb.glyph.lineVF = NULL; - h->cb.glyph.curveVF = NULL; - } - - /* Set source library flags */ - /* These are now set at the start of parseArgs - h->t1r.flags = 0; - h->cfr.flags = 0; - */ - - h->mode = mode_cff; -} - -/* Mode-specific help. */ -static void cff_Help(txCtx h) { - static char *text[] = - { -#include "cff.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* ------------------------------ Preserve GID ------------------------------ */ - -#define PRESERVE_CHARSTRING (1 << 15) - -static void callbackPreserveGlyph(txCtx h, int type, unsigned short id, - char *name) { - h->src.glyphs.array[id]->flags |= PRESERVE_CHARSTRING; -} - -/* Begin glyph path. */ -static int preserveGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->direct_ctx; - cb->info = info; - h->cb.selected = - (h->src.glyphs.array[info->tag]->flags & PRESERVE_CHARSTRING) != 0; - return h->cb.save.beg(&h->cb.save, info); -} - -/* Save glyph width. */ -static void preserveGlyphWidth(abfGlyphCallbacks *cb, float hAdv) { - txCtx h = cb->direct_ctx; - h->cb.save.width(&h->cb.save, hAdv); -} - -/* Add move to path. */ -static void preserveGlyphMove(abfGlyphCallbacks *cb, float x0, float y0) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.move(&h->cb.save, x0, y0); - } -} - -/* Add line to path. */ -static void preserveGlyphLine(abfGlyphCallbacks *cb, float x1, float y1) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.line(&h->cb.save, x1, y1); - } -} - -/* Add curve to path. */ -static void preserveGlyphCurve(abfGlyphCallbacks *cb, - float x1, float y1, - float x2, float y2, - float x3, float y3) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.curve(&h->cb.save, x1, y1, x2, y2, x3, y3); - } -} - -static void preserveGlyphStem(abfGlyphCallbacks *cb, - int flags, float edge0, float edge1) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.stem(&h->cb.save, flags, edge0, edge1); - } -} - -static void preserveGlyphFlex(abfGlyphCallbacks *cb, float depth, - float x1, float y1, - float x2, float y2, - float x3, float y3, - float x4, float y4, - float x5, float y5, - float x6, float y6) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.flex(&h->cb.save, depth, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6); - } -} - -/* Ignore general glyph operator. */ -static void preserveGlyphGenop(abfGlyphCallbacks *cb, - int cnt, float *args, int op) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.genop(&h->cb.save, cnt, args, op); - } -} - -/* Handle seac operator. */ -static void preserveGlyphSeac(abfGlyphCallbacks *cb, - float adx, float ady, int bchar, int achar) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.seac(&h->cb.save, adx, ady, bchar, achar); - } -} - -/* End glyph path. */ -static void preserveGlyphEnd(abfGlyphCallbacks *cb) { - txCtx h = cb->direct_ctx; - h->cb.save.end(&h->cb.save); -} - -static void preserveCubeBlend(abfGlyphCallbacks *cb, unsigned int nBlends, unsigned int numVals, float *blendVals) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeBlend(&h->cb.save, nBlends, numVals, blendVals); - } -} -static void preserveCubeSetwv(abfGlyphCallbacks *cb, unsigned int numDV) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeSetwv(&h->cb.save, numDV); - } -} -static void preserveCubeCompose(abfGlyphCallbacks *cb, int cubeLEIndex, float x0, float y0, int numDV, float *ndv) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeCompose(&h->cb.save, cubeLEIndex, x0, y0, numDV, ndv); - } -} -static void preserveCubeTransform(abfGlyphCallbacks *cb, float rotate, float scaleX, float scaleY, float skew, float skewY) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeTransform(&h->cb.save, rotate, scaleX, scaleY, skew, skewY); - } -} - -/* preserve mode callbacks template. */ -static abfGlyphCallbacks preserveGlyphCallbacks = - { - NULL, - NULL, - NULL, - preserveGlyphBeg, - preserveGlyphWidth, - preserveGlyphMove, - preserveGlyphLine, - preserveGlyphCurve, - preserveGlyphStem, - preserveGlyphFlex, - preserveGlyphGenop, - preserveGlyphSeac, - preserveGlyphEnd, - preserveCubeBlend, - preserveCubeSetwv, - preserveCubeCompose, - preserveCubeTransform, -}; - -/* ------------------------------- Glyph List ------------------------------ */ - -/* Begin new glyph definition for gathering glyph info. */ -static int getGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - *dnaNEXT(h->src.glyphs) = info; - return ABF_SKIP_RET; -} - -/* Make glyph list from font. */ -static void getGlyphList(txCtx h) { - if (h->src.glyphs.cnt > 0) - return; /* Already have list for this font */ - - h->cb.saveGlyphBeg = h->cb.glyph.beg; - - /* Insert data gather function */ - h->cb.glyph.beg = getGlyphBeg; - h->cb.glyph.indirect_ctx = h; - - /* Iterate glyphs */ - switch (h->src.type) { - case src_Type1: - if (t1rIterateGlyphs(h->t1r.ctx, &h->cb.glyph) || - t1rResetGlyphs(h->t1r.ctx)) - fatal(h, NULL); - break; - case src_OTF: - case src_CFF: - if (cfrIterateGlyphs(h->cfr.ctx, &h->cb.glyph) || - cfrResetGlyphs(h->cfr.ctx)) - fatal(h, NULL); - break; - case src_TrueType: - if (ttrIterateGlyphs(h->ttr.ctx, &h->cb.glyph) || - ttrResetGlyphs(h->ttr.ctx)) - fatal(h, NULL); - break; - case src_SVG: - if (svrIterateGlyphs(h->svr.ctx, &h->cb.glyph) || - svrResetGlyphs(h->svr.ctx)) - fatal(h, NULL); - break; - - case src_UFO: - if (ufoIterateGlyphs(h->ufr.ctx, &h->cb.glyph) || - ufoResetGlyphs(h->ufr.ctx)) - fatal(h, NULL); - break; - } - - /* Restore saved function */ - h->cb.glyph.beg = h->cb.saveGlyphBeg; -} - -/* Compare glyphs by their name. */ -static int CTL_CDECL cmpByName(const void *first, const void *second) { - return strcmp((*(abfGlyphInfo **)first)->gname.ptr, - (*(abfGlyphInfo **)second)->gname.ptr); -} - -/* Sort glyph list by glyph name. */ -static void sortGlyphsByName(txCtx h) { - qsort(h->src.glyphs.array, h->src.glyphs.cnt, - sizeof(h->src.glyphs.array[0]), cmpByName); -} - -/* Compare glyphs by their fd. */ -static int CTL_CDECL cmpByFD(const void *first, const void *second) { - const abfGlyphInfo *a = *(abfGlyphInfo **)first; - const abfGlyphInfo *b = *(abfGlyphInfo **)second; - if (a->iFD < b->iFD) - return -1; - else if (a->iFD > b->iFD) - return 1; - else if (a->cid < b->cid) - return -1; - else if (a->cid > b->cid) - return 1; - else - return 0; -} - -/* Sort glyph list by FD index. */ -static void sortGlyphsByFD(txCtx h) { - qsort(h->src.glyphs.array, h->src.glyphs.cnt, - sizeof(h->src.glyphs.array[0]), cmpByFD); -} - -/* Make glyph subset from glyph list. */ -static void makeSubsetGlyphList(txCtx h) { - long i; - dnaSET_CNT(h->subset.glyphs, h->src.glyphs.cnt); - for (i = 0; i < h->src.glyphs.cnt; i++) - h->subset.glyphs.array[i] = h->src.glyphs.array[i]->tag; -} - -/* Construct arg buffer from subset list to simulated -g option. */ -static void makeSubsetArgList(txCtx h) { - long i; - long rangecnt = 0; - unsigned short first = h->subset.glyphs.array[0]; - unsigned short last = first; - h->subset.args.cnt = 0; - for (i = 1; i <= h->subset.glyphs.cnt; i++) { - unsigned short curr; - if (i < h->subset.glyphs.cnt) - curr = h->subset.glyphs.array[i]; - else - curr = 0; - - if (last + 1 != curr) { - char buf[12]; /* 5 digits + hyphen + 5 digits + nul */ - if (first == last) - sprintf(buf, "%hu", last); - else - sprintf(buf, "%hu-%hu", first, last); - strcpy(dnaEXTEND(h->subset.args, (long)strlen(buf) + 1), buf); - first = curr; - rangecnt++; - } - last = curr; - } - h->arg.g.cnt = rangecnt; - h->arg.g.substrs = h->subset.args.array; -} - -/* ----------------------------- Subset Parsing ---------------------------- */ - -enum /* Glyph selector types */ -{ - sel_by_tag, - sel_by_cid, - sel_by_name -}; - -/* Parse subset args. */ -static void parseSubset(txCtx h, void (*select)(txCtx h, int type, - unsigned short id, char *name)) { - long i; - char *p = h->arg.g.substrs; - - for (i = 0; i < h->arg.g.cnt; i++) { - unsigned short id; - unsigned short lo; - unsigned short hi; - - if (*p == '/') { - /* CID */ - if (sscanf(p, "/%hu-/%hu", &lo, &hi) == 2) - ; - else if (sscanf(p, "/%hu", &lo) == 1) - hi = lo; - else - goto next; - - for (id = lo; id <= hi; id++) - select(h, sel_by_cid, id, NULL); - - } else if (isdigit(*p)) { - /* Tag */ - if (sscanf(p, "%hu-%hu", &lo, &hi) == 2) - ; - else if (sscanf(p, "%hu", &lo) == 1) - hi = lo; - else - goto next; - - for (id = lo; id <= hi; id++) - select(h, sel_by_tag, id, NULL); - } else - /* Name */ - select(h, sel_by_name, 0, p); - - /* Advance to next substring */ - next: - while (*p++ != '\0') - ; - } -} - -/* Parse subset args. */ -static void parseFDSubset(txCtx h) { - long i; - char *p = h->arg.g.substrs; - - for (i = 0; i < h->arg.g.cnt; i++) { - unsigned short id; - unsigned short lo; - unsigned short hi; - - if (isdigit(*p)) { - /* Tag */ - if (sscanf(p, "%hu-%hu", &lo, &hi) == 2) - ; - else if (sscanf(p, "%hu", &lo) == 1) - hi = lo; - else - goto next; - - for (id = lo; id <= hi; id++) - *dnaNEXT(h->fd.fdIndices) = id; - } else { - fatal(h, "-fd argument is not an integer."); - } - /* Advance to next substring */ - next: - while (*p++ != '\0') - ; - } -} - -/* -------------------------------- cef mode ------------------------------- */ - -/* Begin font set. */ -static void cef_BegSet(txCtx h) { -} - -/* Begin font. */ -static void cef_BegFont(txCtx h, abfTopDict *top) { - dstFileSetAutoName(h, top); -} - -/* Compare glyphs by their CID. */ -static int CTL_CDECL cef_cmpByCID(const void *first, const void *second, - void *ctx) { - txCtx h = ctx; - abfGlyphInfo *a = h->src.glyphs.array[*(unsigned short *)first]; - abfGlyphInfo *b = h->src.glyphs.array[*(unsigned short *)second]; - if (a->cid < b->cid) - return -1; - else if (a->cid > b->cid) - return 1; - else - return 0; -} - -/* Match glyph by its CID. */ -static int CTL_CDECL cef_matchByCID(const void *key, const void *value, - void *ctx) { - txCtx h = ctx; - unsigned short a = *(unsigned short *)key; - unsigned short b = h->src.glyphs.array[*(unsigned short *)value]->cid; - if (a < b) - return -1; - else if (a > b) - return 1; - else - return 0; -} - -/* Compare glyphs by their name. */ -static int CTL_CDECL cef_cmpByName(const void *first, const void *second, - void *ctx) { - txCtx h = ctx; - return strcmp(h->src.glyphs.array[*(unsigned short *)first]->gname.ptr, - h->src.glyphs.array[*(unsigned short *)second]->gname.ptr); -} - -/* Match glyph by its name. */ -static int CTL_CDECL cef_matchByName(const void *key, const void *value, - void *ctx) { - txCtx h = ctx; - return strcmp(key, - h->src.glyphs.array[*(unsigned short *)value]->gname.ptr); -} - -/* Make glyph lookup array. */ -static void makeGlyphLookup(txCtx h, ctuCmpFunc cmp) { - long i; - - /* Make lookup array of all tags */ - dnaSET_CNT(h->cef.lookup, h->src.glyphs.cnt); - for (i = 0; i < h->cef.lookup.cnt; i++) - h->cef.lookup.array[i] = (unsigned short)i; - - /* Sort array */ - ctuQSort(h->cef.lookup.array, h->cef.lookup.cnt, - sizeof(unsigned short), cmp, h); -} - -/* Lookup glyph. */ -static void lookupGlyph(txCtx h, void *key, ctuMatchFunc match) { - size_t index; - if (ctuLookup(key, h->cef.lookup.array, h->cef.lookup.cnt, - sizeof(unsigned short), match, &index, h)) - dnaNEXT(h->cef.subset)->id = - h->src.glyphs.array[h->cef.lookup.array[index]]->tag; -} - -/* Select subset glyph. */ -static void selectGlyph(txCtx h, int type, unsigned short id, char *gname) { - switch (type) { - case sel_by_tag: - if (id < h->src.glyphs.cnt) - dnaNEXT(h->cef.subset)->id = id; - break; - case sel_by_cid: - if (h->top->sup.flags & ABF_CID_FONT) { - if (h->cef.lookup.cnt == 0) - /* Make CID lookup list */ - makeGlyphLookup(h, cef_cmpByCID); - lookupGlyph(h, &id, cef_matchByCID); - } - break; - case sel_by_name: - if (!(h->top->sup.flags & ABF_CID_FONT)) { - if (h->cef.lookup.cnt == 0) - /* Make glyph name lookup list */ - makeGlyphLookup(h, cef_cmpByName); - lookupGlyph(h, gname, cef_matchByName); - } - break; - } -} - -/* Match glyph name */ -static int CTL_CDECL matchName(const void *key, const void *value) { - return strcmp((char *)key, ((Name2UV *)value)->gname); -} - -/* Map glyph name to Unicode value using simplified assignment algorithm. */ -static unsigned short mapName2UV(txCtx h, char *gname, unsigned short *unrec) { - static const Name2UV agl[] = - { -#include "agl2uv.h" - }; - Name2UV *map = (Name2UV *)bsearch(gname, agl, ARRAY_LEN(agl), - sizeof(Name2UV), matchName); - if (map != NULL) - return map->uv; /* Match found */ - - /* Not found */ - if (strcmp(gname, ".notdef") == 0) - return 0xFFFF; /* No encoding for .notdef */ - - if (gname[0] == 'u' && - gname[1] == 'n' && - gname[2] == 'i' && - isxdigit(gname[3]) && !islower(gname[3]) && - isxdigit(gname[4]) && !islower(gname[4]) && - isxdigit(gname[5]) && !islower(gname[5]) && - isxdigit(gname[6]) && !islower(gname[6]) && - gname[7] == '\0') - /* uni name; return hex part */ - return (unsigned short)strtol(&gname[3], NULL, 16); - - /* return Private Use Area UV */ - return (*unrec)++; -} - -/* Get User Design Vector. */ -static float *getUDV(txCtx h) { - static float UDV[T1_MAX_AXES]; - int i; - char *p; - char *q; - - if (h->arg.U == NULL) - return NULL; - - /* Parse User Design Vector */ - for (i = 0; i < T1_MAX_AXES; i++) - UDV[i] = 0.0; - - p = h->arg.U; - for (i = 0; i < T1_MAX_AXES; i++) { - UDV[i] = (float)strtod(p, &q); - if (p == q || (*q != ',' && *q != '\0')) - fatal(h, "bad UDV"); - else if (*q == '\0') - break; - p = q + 1; - } - - return UDV; -} - -/* Print CEF subset specification. */ -static void printSpec(txCtx h, cefEmbedSpec *spec) { - char *p; - long i; - - printf( - "--- CEF subset:\n" - "SRC font %s\n" - "SRC glyphs %ld\n" - "DST font %s\n" - "DST glyphs %ld\n", - h->cef.src.filename, h->src.glyphs.cnt, - h->dst.stm.filename, spec->subset.cnt); - - p = (h->top->sup.flags & ABF_CID_FONT) ? "/" : ""; - for (i = 0; i < spec->subset.cnt; i++) { - printf("%s%hu", p, spec->subset.array[i].id); - p = (h->top->sup.flags & ABF_CID_FONT) ? ",/" : ","; - } - printf("\n"); - - if (spec->subset.names == NULL) - return; - - /* Print glyph names */ - p = ""; - for (i = 0; i < spec->subset.cnt; i++) { - unsigned short id = spec->subset.array[i].id; - if (id < CEF_VID_BEGIN) - printf("%s%s", p, spec->subset.names[id]); - else - printf("%svid-%hu", p, id); - p = ","; - } - printf("\n"); -} - -/* CEF glyph mapping callback. */ -static void cefGlyphMap(cefMapCallback *cb, - unsigned short gid, abfGlyphInfo *info) { - int cid = info->flags & ABF_GLYPH_CID; - if (gid == 0) { - if (cid) - printf("DST map [gid]=/cid\n"); - else - printf("DST map [gid]=\n"); - } - if (cid) - printf("[%hu]=/%hu ", gid, info->cid); - else - printf("[%hu]=<%s> ", gid, info->gname.ptr); -} - -/* End font. */ -static void cef_EndFont(txCtx h) { - cefMapCallback map; - cefEmbedSpec spec; - int result; - long i; - unsigned short unrec; - - getGlyphList(h); - - if (h->arg.g.cnt == 0) { - /* Whole font subset */ - dnaSET_CNT(h->cef.subset, h->src.glyphs.cnt); - for (i = 0; i < h->cef.subset.cnt; i++) - h->cef.subset.array[i].id = (unsigned short)i; - } else { - h->cef.subset.cnt = 0; - h->cef.lookup.cnt = 0; - parseSubset(h, selectGlyph); - } - - h->cef.gnames.cnt = 0; - unrec = 0xE000; /* Start of Private Use Area */ - - if (h->top->sup.flags & ABF_CID_FONT) { - /* Make CID subset, encoding all glyphs in PUA */ - for (i = 0; i < h->cef.subset.cnt; i++) { - cefSubsetGlyph *dst = &h->cef.subset.array[i]; - abfGlyphInfo *src = h->src.glyphs.array[dst->id]; - dst->id = src->cid; - dst->uv = unrec++; - } - } else { - /* Make tag list and assign Unicode encoding */ - for (i = 0; i < h->cef.subset.cnt; i++) { - cefSubsetGlyph *dst = &h->cef.subset.array[i]; - abfGlyphInfo *src = h->src.glyphs.array[dst->id]; - dst->uv = mapName2UV(h, src->gname.ptr, &unrec); - } - - /* Decide whether to use name list */ - switch (h->src.type) { - case src_Type1: - break; /* Use names */ - case src_OTF: - case src_CFF: - if (rand() & 0x0100) - goto initspec; - break; /* Use names 50% of the time */ - case src_TrueType: - goto initspec; /* Don't use names */ - } - - /* Make name list */ - dnaSET_CNT(h->cef.gnames, h->src.glyphs.cnt + 1); - for (i = 0; i < h->src.glyphs.cnt; i++) - h->cef.gnames.array[i] = h->src.glyphs.array[i]->gname.ptr; - h->cef.gnames.array[i] = NULL; - } - -#if 0 - { - /* Add 2 virtual glyphs */ - cefSubsetGlyph *glyph = dnaEXTEND(h->cef.subset, 2); - glyph[0].id = CEF_VID_BEGIN + 0; - glyph[0].uv = 0xa000; - glyph[1].id = CEF_VID_BEGIN + 1; - glyph[1].uv = 0xa001; - } -#endif - - /* Initialize embedding spec. */ -initspec: - spec.flags = h->arg.cef.flags; - spec.newFontName = h->arg.cef.F; - spec.UDV = getUDV(h); - spec.URL = NULL; - spec.subset.cnt = h->cef.subset.cnt; - spec.subset.array = h->cef.subset.array; - spec.subset.names = (h->cef.gnames.cnt > 0) ? h->cef.gnames.array : NULL; - spec.kern.cnt = 0; - - printSpec(h, &spec); - - /* Turn off segmentation on source stream */ - h->seg.refill = NULL; - - /* Initialize glyph mapping callback */ - map.ctx = NULL; - map.glyphmap = cefGlyphMap; - - if (h->arg.cef.flags & CEF_WRITE_SVG) - cefSetSvwFlags(h->cef.ctx, h->svw.flags); - - /* Make embedding font */ - result = cefMakeEmbeddingFont(h->cef.ctx, &spec, &map); - if (result) - fatal(h, "(cef) %s", cefErrStr(result)); - else - printf("\n"); -} - -/* End font set. */ -static void cef_EndSet(txCtx h) { -} - -/* Setup cef mode. */ -static void cef_SetMode(txCtx h) { - /* Initialize args */ - h->arg.cef.F = NULL; - h->arg.cef.flags = 0; - h->svw.flags = SVW_NEWLINE_UNIX; /* In case cfembed library used in svgwrite mode */ - - /* Set mode name */ - h->modename = "cef"; - - /* Set library functions */ - h->dst.begset = cef_BegSet; - h->dst.begfont = cef_BegFont; - h->dst.endfont = cef_EndFont; - h->dst.endset = cef_EndSet; - - if (h->cef.ctx == NULL) { - h->cef.ctx = cefNew(&h->cb.mem, &h->cb.stm, CEF_CHECK_ARGS); - if (h->cef.ctx == NULL) - fatal(h, "(cef) can't init lib"); - } - - /* Set source libarary flags */ - h->t1r.flags = 0; - h->cfr.flags = 0; - - h->mode = mode_cef; -} - -/* Mode-specific help. */ -static void cef_Help(txCtx h) { - static char *text[] = - { -#include "cef.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- pdf mode ------------------------------- */ - -/* Begin font set. */ -static void pdf_BegSet(txCtx h) { -} - -/* Begin new font. */ -static void pdf_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - - if (h->src.type == src_TrueType) - h->pdw.flags |= PDW_FLIP_TICS; - else - h->pdw.flags &= ~PDW_FLIP_TICS; - - if (pdwBegFont(h->pdw.ctx, h->pdw.flags, h->pdw.level, top)) - fatal(h, NULL); -} - -/* End new font. */ -static void pdf_EndFont(txCtx h) { - if (pdwEndFont(h->pdw.ctx)) - fatal(h, NULL); -} - -/* End font set. */ -static void pdf_EndSet(txCtx h) { -} - -/* Set control functions. */ -static void pdf_SetMode(txCtx h) { - h->pdw.flags = 0; - h->pdw.level = 0; - - /* Set mode name */ - h->modename = "pdf"; - - /* Set library functions */ - h->dst.begset = pdf_BegSet; - h->dst.begfont = pdf_BegFont; - h->dst.endfont = pdf_EndFont; - h->dst.endset = pdf_EndSet; - - if (h->pdw.ctx == NULL) { - /* Create library context */ - h->pdw.ctx = pdwNew(&h->cb.mem, &h->cb.stm, PDW_CHECK_ARGS); - if (h->pdw.ctx == NULL) - fatal(h, "(pdw) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = pdwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->pdw.ctx; - - h->t1r.flags |= (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags |= (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_pdf; -} - -/* Mode-specific help. */ -static void pdf_Help(txCtx h) { - static char *text[] = - { -#include "pdf.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* ------------------------------- mtx mode ------------------------------- */ - -/* Begin glyph path. */ -static int mtxGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->direct_ctx; - cb->info = info; - return h->mtx.metrics.cb.beg(&h->mtx.metrics.cb, info); -} - -/* Save glyph width. */ -static void mtxGlyphWidth(abfGlyphCallbacks *cb, float hAdv) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.width(&h->mtx.metrics.cb, hAdv); -} - -/* Add move to path. */ -static void mtxGlyphMove(abfGlyphCallbacks *cb, float x0, float y0) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.move(&h->mtx.metrics.cb, x0, y0); -} - -/* Add line to path. */ -static void mtxGlyphLine(abfGlyphCallbacks *cb, float x1, float y1) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.line(&h->mtx.metrics.cb, x1, y1); -} - -/* Add curve to path. */ -static void mtxGlyphCurve(abfGlyphCallbacks *cb, - float x1, float y1, - float x2, float y2, - float x3, float y3) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.curve(&h->mtx.metrics.cb, x1, y1, x2, y2, x3, y3); -} - -/* Ignore general glyph operator. */ -static void mtxGlyphGenop(abfGlyphCallbacks *cb, - int cnt, float *args, int op) { - /* Nothing to do */ -} - -/* Handle seac operator. */ -static void mtxGlyphSeac(abfGlyphCallbacks *cb, - float adx, float ady, int bchar, int achar) { - /* Nothing to do */ -} - -/* End glyph path. */ -static void mtxGlyphEnd(abfGlyphCallbacks *cb) { - txCtx h = cb->direct_ctx; - abfMetricsCtx g = &h->mtx.metrics.ctx; - abfGlyphInfo *info = cb->info; - - h->mtx.metrics.cb.end(&h->mtx.metrics.cb); - - fprintf(h->dst.stm.fp, "glyph[%hu] {", info->tag); - if (info->flags & ABF_GLYPH_CID) - /* Dump CID-keyed glyph */ - fprintf(h->dst.stm.fp, "%hu,%hhu", info->cid, info->iFD); - else { - /* Dump name-keyed glyph */ - abfEncoding *enc = &info->encoding; - fprintf(h->dst.stm.fp, "%s", info->gname.ptr); - if (enc->code == ABF_GLYPH_UNENC) - fprintf(h->dst.stm.fp, ",-"); - else { - /* Dump encoding */ - char *sep = ","; - do { - if (info->flags & ABF_GLYPH_UNICODE) - fprintf(h->dst.stm.fp, "%s0x%04lX", sep, enc->code); - else - fprintf(h->dst.stm.fp, "%s0x%02lX", sep, enc->code); - sep = "+"; - enc = enc->next; - } while (enc != NULL); - } - } - - if (h->mtx.level & 1) - /* Real metrics */ - fprintf(h->dst.stm.fp, ",%g,{%g,%g,%g,%g}}\n", g->real_mtx.hAdv, - g->real_mtx.left, g->real_mtx.bottom, - g->real_mtx.right, g->real_mtx.top); - else - /* Integer metrics */ - fprintf(h->dst.stm.fp, ",%ld,{%ld,%ld,%ld,%ld}}\n", g->int_mtx.hAdv, - g->int_mtx.left, g->int_mtx.bottom, - g->int_mtx.right, g->int_mtx.top); - - if (h->mtx.level > 1) { - /* Compute aggregate bounding box */ - if (g->real_mtx.left != 0 || - g->real_mtx.bottom != 0 || - g->real_mtx.right != 0 || - g->real_mtx.top != 0) { - /* Marking glyph */ - if (h->mtx.bbox.left == 0 && - h->mtx.bbox.bottom == 0 && - h->mtx.bbox.right == 0 && - h->mtx.bbox.top == 0) { - /* First marking glyph; set all values */ - h->mtx.bbox.left = g->real_mtx.left; - h->mtx.bbox.bottom = g->real_mtx.bottom; - h->mtx.bbox.right = g->real_mtx.right; - h->mtx.bbox.top = g->real_mtx.top; - - h->mtx.bbox.setby.left = info; - h->mtx.bbox.setby.bottom = info; - h->mtx.bbox.setby.right = info; - h->mtx.bbox.setby.top = info; - } else { - if (h->mtx.bbox.left > g->real_mtx.left) { - h->mtx.bbox.left = g->real_mtx.left; - h->mtx.bbox.setby.left = info; - } - if (h->mtx.bbox.bottom > g->real_mtx.bottom) { - h->mtx.bbox.bottom = g->real_mtx.bottom; - h->mtx.bbox.setby.bottom = info; - } - if (h->mtx.bbox.right < g->real_mtx.right) { - h->mtx.bbox.right = g->real_mtx.right; - h->mtx.bbox.setby.right = info; - } - if (h->mtx.bbox.top < g->real_mtx.top) { - h->mtx.bbox.top = g->real_mtx.top; - h->mtx.bbox.setby.top = info; - } - } - } - } -} - -/* Mtx mode callbacks template. */ -static abfGlyphCallbacks mtxGlyphCallbacks = - { - NULL, - NULL, - NULL, - mtxGlyphBeg, - mtxGlyphWidth, - mtxGlyphMove, - mtxGlyphLine, - mtxGlyphCurve, - NULL, - NULL, - mtxGlyphGenop, - mtxGlyphSeac, - mtxGlyphEnd, -}; - -/* Begin font set. */ -static void mtx_BegSet(txCtx h) { -} - -/* Begin font. */ -static void mtx_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - - h->mtx.bbox.left = 0; - h->mtx.bbox.bottom = 0; - h->mtx.bbox.right = 0; - h->mtx.bbox.top = 0; - - if (top->sup.flags & ABF_CID_FONT) - fprintf(h->dst.stm.fp, - "### glyph[tag] {cid,fd,width,{left,bottom,right,top}}\n"); - else - fprintf(h->dst.stm.fp, - "### glyph[tag] {gname,enc,width,{left,bottom,right,top}}\n"); -} - -/* End font. */ -static void mtx_EndFont(txCtx h) { - if (h->mtx.level > 1) { - /* Print bbox information */ - fprintf(h->dst.stm.fp, "### aggregate\n"); - if (h->mtx.level == 2) - fprintf(h->dst.stm.fp, "bbox {%g,%g,%g,%g}\n", - floor(h->mtx.bbox.left), floor(h->mtx.bbox.bottom), - ceil(h->mtx.bbox.right), ceil(h->mtx.bbox.top)); - else - fprintf(h->dst.stm.fp, "bbox {%g,%g,%g,%g}\n", - h->mtx.bbox.left, h->mtx.bbox.bottom, - h->mtx.bbox.right, h->mtx.bbox.top); - - if (h->mtx.bbox.left != 0 || - h->mtx.bbox.bottom != 0 || - h->mtx.bbox.right != 0 || - h->mtx.bbox.top != 0) { - /* bbox was set; print setting glyph(s) */ - fprintf(h->dst.stm.fp, "tag {%hu,%hu,%hu,%hu}\n", - h->mtx.bbox.setby.left->tag, - h->mtx.bbox.setby.bottom->tag, - h->mtx.bbox.setby.right->tag, - h->mtx.bbox.setby.top->tag); - if (h->top->sup.flags & ABF_CID_FONT) - fprintf(h->dst.stm.fp, "cid {%hu,%hu,%hu,%hu}\n", - h->mtx.bbox.setby.left->cid, - h->mtx.bbox.setby.bottom->cid, - h->mtx.bbox.setby.right->cid, - h->mtx.bbox.setby.top->cid); - else - fprintf(h->dst.stm.fp, "gname {%s,%s,%s,%s}\n", - h->mtx.bbox.setby.left->gname.ptr, - h->mtx.bbox.setby.bottom->gname.ptr, - h->mtx.bbox.setby.right->gname.ptr, - h->mtx.bbox.setby.top->gname.ptr); - } - } -} - -/* End font set. */ -static void mtx_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup mtx mode. */ -static void mtx_SetMode(txCtx h) { - h->mtx.level = 0; - - /* Set mode name */ - h->modename = "mtx"; - - /* Set library functions */ - h->dst.begset = mtx_BegSet; - h->dst.begfont = mtx_BegFont; - h->dst.endfont = mtx_EndFont; - h->dst.endset = mtx_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = mtxGlyphCallbacks; - h->cb.glyph.direct_ctx = h; - - /* Initialize metrics facility */ - h->mtx.metrics.cb = abfGlyphMetricsCallbacks; - h->mtx.metrics.cb.direct_ctx = &h->mtx.metrics.ctx; - h->mtx.metrics.ctx.flags = 0; - - /* Set source libarary flags */ - h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_mtx; -} - -/* Mode-specific help. */ -static void mtx_Help(txCtx h) { - static char *text[] = - { -#include "mtx.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* --------------------------------- t1 mode ------------------------------- */ - -/* Begin font set. */ -static void t1_BegSet(txCtx h) { -} - -/* Begin new glyph definition for patching glyph info. if -decid enabled. */ -static int t1_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - char gname[9]; - - /* We do not skip if the glyph is already seen. A glyph may be used to generate more than one rotated output glyph. */ - if (h->t1w.fd == -1) { - h->t1w.fd = info->iFD; /* First glyph; set target fd */ - } else if (info->cid == 0) /* For CID 0, always just use current iFD. */ - { - /* Handle .notdef glyph */ - if (info->flags & ABF_GLYPH_SEEN) - return ABF_SKIP_RET; /* Already in subset */ - info->iFD = h->t1w.fd; /* Force glyph to use selected fd */ - } else if (info->iFD != h->t1w.fd) { - if (h->t1w.options & T1W_USEFD) - info->iFD = h->t1w.fd; - else - fatal(h, "selected glyphs span multiple FDs"); - } - /* Create glyph name */ - if (info->cid == 0) - strcpy(gname, ".notdef"); - else - sprintf(gname, "cid%hu", info->cid); - info->gname.ptr = &h->t1w.gnames.array[h->t1w.gnames.cnt]; - strcpy(info->gname.ptr, gname); - h->t1w.gnames.cnt += (long)strlen(gname) + 1; - - info->flags &= ~ABF_GLYPH_CID; /* Convert to name-keyed glyph */ - - return t1wGlyphCallbacks.beg(cb, info); -} - -/* Begin font. */ -static void t1_BegFont(txCtx h, abfTopDict *top) { - long maxglyphs = 0; - - if (h->t1w.options & T1W_DECID) { - /* Convert cid-keyed font to name-keyed font */ - if (!(top->sup.flags & ABF_CID_FONT)) - fatal(h, "-decid specified for non-CID font"); - - /* Initialize */ - h->t1w.fd = -1; - (void)dnaGROW(h->t1w.gnames, - ((h->subset.glyphs.cnt > 0) ? h->subset.glyphs.cnt : top->sup.nGlyphs) * 8); - h->t1w.gnames.cnt = 0; - - /* Replace callback */ - h->cb.glyph.beg = t1_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - } - if (h->t1w.options & T1W_WAS_EMBEDDED) - top->WasEmbedded = 1; - - if (h->t1w.flags & T1W_TYPE_BASE) - maxglyphs = (top->sup.flags & ABF_CID_FONT) ? top->cid.CIDCount : top->sup.nGlyphs; - - dstFileSetAutoName(h, top); - if (t1wBegFont(h->t1w.ctx, h->t1w.flags, h->t1w.lenIV, maxglyphs)) - fatal(h, NULL); -} - -/* Copy length bytes from source file to destination file. */ -static void copyFile(txCtx h, size_t length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - char buf[BUFSIZ]; - size_t cnt; - - /* Write whole buffers */ - cnt = length / BUFSIZ; - while (cnt--) - if (fread(buf, 1, BUFSIZ, src) != BUFSIZ) - fileError(h, srcfile); - else if (fwrite(buf, 1, BUFSIZ, dst) != BUFSIZ) - fileError(h, dstfile); - - /* Write partial buffers */ - cnt = length % BUFSIZ; - if (fread(buf, 1, cnt, src) != cnt) - fileError(h, srcfile); - else if (fwrite(buf, 1, cnt, dst) != cnt) - fileError(h, dstfile); -} - -/* Copy PFB segment. */ -static void copyPFBSegment(txCtx h, int type, long length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - /* Write segment header */ - putc(128, dst); - putc(type, dst); - putc(length, dst); - putc(length >> 8, dst); - putc(length >> 16, dst); - putc(length >> 24, dst); - - /* Copy segment data */ - copyFile(h, length, src, srcfile, dst, dstfile); -} - -/* Write PFB format file. */ -static void writePFB(txCtx h, FILE *font, char *fontfile, - long begBinary, long begTrailer, long endTrailer) { - char *tmpfil = "(t1w) reformat tmpfil"; - FILE *tmp = tmpfile(); - if (tmp == NULL) - fileError(h, tmpfil); - - /* Write pfb font to tmp file */ - copyPFBSegment(h, 1, begBinary, font, fontfile, tmp, tmpfil); - copyPFBSegment(h, 2, begTrailer - begBinary, font, fontfile, tmp, tmpfil); - copyPFBSegment(h, 1, endTrailer - begTrailer, font, fontfile, tmp, tmpfil); - copyPFBSegment(h, 3, 0, font, fontfile, tmp, tmpfil); - - /* Copy tmp file to font file */ - font = freopen(fontfile, "wb", font); - if (font == NULL) - fileError(h, fontfile); - rewind(tmp); - copyFile(h, endTrailer + 4 * (1 + 1 + 4), tmp, tmpfil, font, fontfile); - - /* Close tmp file */ - if (fclose(tmp) == EOF) - fileError(h, tmpfil); -} - -/* Write 2-byte big-endian number. */ -static void write2(FILE *fp, unsigned short value) { - putc(value >> 8, fp); - putc(value, fp); -} - -/* Write 4-byte big-endian number. */ -static void write4(FILE *fp, unsigned long value) { - putc(value >> 24, fp); - putc(value >> 16, fp); - putc(value >> 8, fp); - putc(value, fp); -} - -/* Write padding bytes */ -static void writePad(FILE *fp, long cnt) { - while (cnt--) - putc(0, fp); -} - -/* Copy POST resource. */ -static void copyPOSTRes(txCtx h, int type, long length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - /* Write resource header */ - write4(dst, 1 + 1 + length); - putc(type, dst); - putc(0, dst); - - /* Copy resource data */ - copyFile(h, length, src, srcfile, dst, dstfile); -} - -/* Copy POST resource. */ -static void writeSection(txCtx h, int type, long length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - /* Write full-length resouces */ - int cnt = length / 2046; - while (cnt--) - copyPOSTRes(h, type, 2046, src, srcfile, dst, dstfile); - - /* Write partial resource */ - cnt = length % 2046; - if (cnt > 0 || length == 0) - copyPOSTRes(h, type, cnt, src, srcfile, dst, dstfile); -} - -/* Write reference. */ -static void writeRef(FILE *fp, int *id, long *offset, long length) { - write2(fp, (unsigned short)((*id)++)); - write2(fp, (unsigned short)-1); - putc(0, fp); - putc(*offset >> 16, fp); - putc(*offset >> 8, fp); - putc(*offset, fp); - write4(fp, 0); - *offset += length + (4 + 1 + 1); -} - -/* Write references. */ -static void writeRefs(FILE *fp, int *id, long *offset, long length) { - int cnt = length / 2046; - while (cnt--) - writeRef(fp, id, offset, 2046); - - cnt = length % 2046; - if (cnt > 0 || length == 0) - writeRef(fp, id, offset, cnt); -} - -/* Write LWFN format file. */ -static void writeLWFN(txCtx h, FILE *font, char *fontfile, - long begBinary, long begTrailer, long endTrailer) { - enum { - MAP_HEADER_LEN = 16 + 4 + 4 * 2, - TYPE_LIST_LEN = 2 + 4 + 2 * 2, - REFERENCE_LEN = 2 * 2 + 1 + 3 + 4 - }; - int id; - long offset; - long length0 = begBinary; /* Text header */ - long length1 = begTrailer - begBinary; /* Binary section */ - long length2 = endTrailer - begTrailer; /* Text trailer */ - long length3 = 0; /* End-of-font program */ - int rescnt = ((length0 + 2045) / 2046 + - (length1 + 2045) / 2046 + - (length2 + 2045) / 2046 + - 1); - long datalen = rescnt * (4 + 1 + 1) + endTrailer; - long maplen = MAP_HEADER_LEN + TYPE_LIST_LEN + rescnt * REFERENCE_LEN; - char *tmpfil = "(t1w) reformat tmpfile"; - FILE *tmp = tmpfile(); - if (tmp == NULL) - fileError(h, tmpfil); - - /* Write resource header */ - write4(tmp, 256); - write4(tmp, 256 + datalen); - write4(tmp, datalen); - write4(tmp, maplen); - - /* Write system and application data area */ - writePad(tmp, 112 + 128); - - /* Write resources */ - writeSection(h, 1, length0, font, fontfile, tmp, tmpfil); - writeSection(h, 2, length1, font, fontfile, tmp, tmpfil); - writeSection(h, 1, length2, font, fontfile, tmp, tmpfil); - writeSection(h, 5, length3, font, fontfile, tmp, tmpfil); - - /* Write map header */ - writePad(tmp, 16 + 4 + 2); - write2(tmp, 0); - write2(tmp, MAP_HEADER_LEN); - write2(tmp, (unsigned short)maplen); - - /* Write type list */ - write2(tmp, 0); - write4(tmp, CTL_TAG('P', 'O', 'S', 'T')); - write2(tmp, (unsigned short)(rescnt - 1)); - write2(tmp, TYPE_LIST_LEN); - - /* Write reference list */ - id = 501; - offset = 0; - writeRefs(tmp, &id, &offset, length0); - writeRefs(tmp, &id, &offset, length1); - writeRefs(tmp, &id, &offset, length2); - writeRefs(tmp, &id, &offset, length3); - - /* Name list empty */ - - /* Copy tmp file to font file */ - font = freopen(fontfile, "wb", font); - if (font == NULL) - fileError(h, fontfile); - rewind(tmp); - copyFile(h, 256 + datalen + maplen, tmp, tmpfil, font, fontfile); - - /* Close tmp file */ - if (fclose(tmp) == EOF) - fileError(h, tmpfil); -} - -/* Perform platform-specific reformatting of file. */ -static void t1_Reformat(txCtx h) { - int state; - long begBinary; /* Offset to start of binary section */ - long begTrailer; /* Offset to start of trailer */ - long endTrailer; /* Offset to EOF */ - char *fontfile = h->dst.stm.filename; - FILE *font = fopen(fontfile, "rb"); - if (font == NULL) - fileError(h, fontfile); - - /* Find "eexec " string */ - state = 0; - for (;;) - switch (fgetc(font)) { - case 'e': - switch (state) { - case 0: - state = 1; - break; - case 1: - state = 2; - break; - case 3: - state = 4; - break; - default: - state = 0; - break; - } - break; - case 'x': - state = (state == 2) ? 3 : 0; - break; - case 'c': - state = (state == 4) ? 5 : 0; - break; - case ' ': - if (state == 5) { - begBinary = ftell(font); - if (begBinary == -1) - fileError(h, fontfile); - goto findTrailer; - } else - state = 0; - break; - case EOF: - if (feof(font)) - fatal(h, "can't find eexec"); - else - fileError(h, fontfile); - break; - } - -findTrailer: - /* Find a line of 64 '0' chars */ - state = 0; - for (;;) - switch (fgetc(font)) { - case '0': - if (++state == 64) { - begTrailer = ftell(font); - if (begTrailer == -1) - fileError(h, fontfile); - begTrailer -= 64; - goto findEOF; - } - break; - case EOF: - if (feof(font)) - fatal(h, "can't find tailer"); - else - fileError(h, fontfile); - break; - default: - state = 0; - break; - } - -findEOF: - /* Find end-of-file */ - if (fseek(font, 0, SEEK_END)) - fileError(h, fontfile); - endTrailer = ftell(font); - if (endTrailer == -1) - fileError(h, fontfile); - - rewind(font); - switch (h->t1w.flags & T1W_NEWLINE_MASK) { - case T1W_NEWLINE_WIN: - writePFB(h, font, fontfile, begBinary, begTrailer, endTrailer); - break; - case T1W_NEWLINE_MAC: - writeLWFN(h, font, fontfile, begBinary, begTrailer, endTrailer); - break; - } - - if (fclose(font) == EOF) - fileError(h, fontfile); -} - -/* End font. */ -static void t1_EndFont(txCtx h) { - if (h->t1w.options & T1W_DECID) { - /* Add .notdef (if not already added) */ - if (h->src.type == src_Type1) - (void)t1rGetGlyphByCID(h->t1r.ctx, 0, &h->cb.glyph); - - else if (h->src.type == src_CFF) - (void)cfrGetGlyphByCID(h->cfr.ctx, 0, &h->cb.glyph); - - /* Convert to name-keyed font */ - h->top->sup.flags &= ~ABF_CID_FONT; - h->top->FDArray.cnt = 1; - h->top->FDArray.array = &h->top->FDArray.array[h->t1w.fd]; - h->t1w.options |= T1W_NO_UID; /* Clear UniqueIDs */ - } - - if (h->t1w.options & T1W_NO_UID) { - h->top->UniqueID = ABF_UNSET_INT; - h->top->XUID.cnt = ABF_EMPTY_ARRAY; - h->top->cid.UIDBase = ABF_UNSET_INT; - } - - if (h->t1w.options & T1W_REFORMAT && - strcmp(h->dst.stm.filename, "-") == 0) - fatal(h, "stdout can't be used with -pfb or -LWFN options"); - - if (t1wEndFont(h->t1w.ctx, h->top)) - fatal(h, NULL); - - if (h->t1w.options & T1W_REFORMAT) - t1_Reformat(h); -} - -/* End font set. */ -static void t1_EndSet(txCtx h) { -} - -/* Stream SING glyphlet callback. */ -static int get_stream(t1wSINGCallback *sing_cb) { - long length; - txCtx h = sing_cb->ctx; - FILE *fp = h->src.stm.fp; - - /* Get file size and seek to start */ - if (fseek(fp, 0, SEEK_END) != 0 || - (length = ftell(fp)) == -1 || - fseek(fp, 0, SEEK_SET) != 0) - return 1; - - /* Update returned data */ - sing_cb->stm = &h->src.stm; - sing_cb->length = length; - - return 0; -} - -/* Setup t1 mode. */ -static void t1_SetMode(txCtx h) { - /* Initialize control data */ - /* This is now set at the start of parseArgs - h->t1w.options = 0; - */ - h->t1w.flags = (T1W_TYPE_HOST | - T1W_ENCODE_ASCII | - T1W_OTHERSUBRS_PRIVATE | - T1W_NEWLINE_UNIX); - h->t1w.lenIV = 4; - h->t1w.fd = -1; - /* Set mode name */ - h->modename = "t1"; - - /* Set library functions */ - h->dst.begset = t1_BegSet; - h->dst.begfont = t1_BegFont; - h->dst.endfont = t1_EndFont; - h->dst.endset = t1_EndSet; - - if (h->t1w.ctx == NULL) { - /* Create library context */ - t1wSINGCallback sing_cb; - sing_cb.ctx = h; - sing_cb.stm = 0; - sing_cb.length = 0; - sing_cb.get_stream = get_stream; - h->t1w.ctx = t1wNew(&h->cb.mem, &h->cb.stm, T1W_CHECK_ARGS); - if (h->t1w.ctx == NULL || t1wSetSINGCallback(h->t1w.ctx, &sing_cb)) - fatal(h, "(t1w) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = t1wGlyphCallbacks; - h->cb.glyph.direct_ctx = h->t1w.ctx; - - /* Set source library flags */ - /* These are now set at the start of parseArgs - h->t1r.flags = 0; - h->cfr.flags = 0; - */ - - h->mode = mode_t1; -} - -/* Mode-specific help. */ -static void t1_Help(txCtx h) { - static char *text[] = - { -#include "t1.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- svg mode ------------------------------- */ - -/* Begin font set. */ -static void svg_BegSet(txCtx h) { -} - -/* Begin new glyph definition. */ -static int svg_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - - /* Determine (or fabricate) Unicode value for glyph. */ - info->flags |= ABF_GLYPH_UNICODE; - if (h->top->sup.flags & ABF_CID_FONT) { - info->encoding.code = h->svw.unrec; - h->svw.unrec++; - } else - info->encoding.code = mapName2UV(h, info->gname.ptr, &h->svw.unrec); - - return svwGlyphCallbacks.beg(cb, info); -} - -/* Begin font. */ -static void svg_BegFont(txCtx h, abfTopDict *top) { - h->cb.glyph.beg = svg_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - - h->svw.unrec = 0xE000; /* Start of Private Use Area */ - - dstFileSetAutoName(h, top); - if (svwBegFont(h->svw.ctx, h->svw.flags)) - fatal(h, NULL); -} - -/* End font. */ -static void svg_EndFont(txCtx h) { - if (svwEndFont(h->svw.ctx, h->top)) - fatal(h, NULL); -} - -/* End font set. */ -static void svg_EndSet(txCtx h) { -} - -/* Setup svg mode. */ -static void svg_SetMode(txCtx h) { - /* Initialize control data */ - h->svw.options = 0; - h->svw.flags = SVW_NEWLINE_UNIX; - - /* Set mode name */ - h->modename = "svg"; - - /* Set library functions */ - h->dst.begset = svg_BegSet; - h->dst.begfont = svg_BegFont; - h->dst.endfont = svg_EndFont; - h->dst.endset = svg_EndSet; - - if (h->svw.ctx == NULL) { - /* Create library context */ - h->svw.ctx = svwNew(&h->cb.mem, &h->cb.stm, SVW_CHECK_ARGS); - if (h->svw.ctx == NULL) - fatal(h, "(svw) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = svwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->svw.ctx; - - /* Set source library flags */ - h->t1r.flags |= T1R_UPDATE_OPS; - h->cfr.flags |= CFR_UPDATE_OPS; - - h->mode = mode_svg; -} - -/* Mode-specific help. */ -static void svg_Help(txCtx h) { - static char *text[] = - { -#include "svg.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- ufo write mode ------------------------------- */ - -static void mkdir_tx(txCtx h, char *dirPath) { - int dirErr; -#ifdef _WIN32 - dirErr = _mkdir(dirPath); -#else - dirErr = mkdir(dirPath, 0000700 | 0000070 | 0000007); -#endif - - if (dirErr != 0) - fatal(h, "Failed to creater directory '%s'.\n", dirPath); -} - -/* Begin font set. */ -static void ufw_BegSet(txCtx h) { -} - -/* Begin new glyph definition. */ -static int ufw_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - return ufwGlyphCallbacks.beg(cb, info); -} - -/* Begin font. */ -static void ufw_BegFont(txCtx h, abfTopDict *top) { - struct stat fileStat; - int statErrNo; - - h->cb.glyph.beg = ufw_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - - /* Make sure the user isn't sending the output to std out */ - if (strcmp(h->dst.stm.filename, "-") == 0) { - fatal(h, "Please specify a file path for the destination UFO font. UFO fonts cannot be serialized to stdout."); - } - /* if the UFO parent dir does not exist, make it. - If it does exist, complain and quit. */ - statErrNo = stat(h->dst.stm.filename, &fileStat); - if (statErrNo == 0) { - fatal(h, "Destination UFO font already exists: %s.\n", h->dst.stm.filename); - } else { - char buffer[FILENAME_MAX]; - mkdir_tx(h, h->dst.stm.filename); - if (h->ufr.altLayerDir != NULL) - sprintf(buffer, "%s/%s", h->file.dst, h->ufr.altLayerDir); - else - sprintf(buffer, "%s/%s", h->file.dst, "glyphs"); - mkdir_tx(h, buffer); - } - - dstFileSetAutoName(h, top); - if (ufwBegFont(h->ufow.ctx, h->ufow.flags, h->ufr.altLayerDir)) - fatal(h, NULL); -} - -/* End font. */ -static void ufw_EndFont(txCtx h) { - if (ufwEndFont(h->ufow.ctx, h->top)) - fatal(h, NULL); -} - -/* End font set. */ -static void ufw_EndSet(txCtx h) { -} - -static void ufo_SetMode(txCtx h) { - /* Initialize control data */ - h->ufow.flags = 0; - - /* Set mode name */ - h->modename = "ufo_w"; - - /* Set library functions */ - h->dst.begset = ufw_BegSet; - h->dst.begfont = ufw_BegFont; - h->dst.endfont = ufw_EndFont; - h->dst.endset = ufw_EndSet; - - if (h->ufow.ctx == NULL) { - /* Create library context */ - h->ufow.ctx = ufwNew(&h->cb.mem, &h->cb.stm, UFW_CHECK_ARGS); - if (h->ufow.ctx == NULL) - fatal(h, "(ufow) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = ufwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->ufow.ctx; - - /* Set source library flags. It is harmless to declare a font to be cune, and we have to flatten them if going to UFO */ - h->t1r.flags = T1R_UPDATE_OPS | T1R_FLATTEN_CUBE | T1R_IS_CUBE; - h->cfr.flags = CFR_UPDATE_OPS | CFR_FLATTEN_CUBE | T1R_IS_CUBE; - - h->mode = mode_ufow; -} - -/* Mode-specific help. */ -static void ufo_Help(txCtx h) { - static char *text[] = - { -#include "ufo.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- dcf mode ------------------------------- */ - -#define tx_reserved2 2 -#define t2_reserved17 17 - -/* Return size of region. */ -static long sizeRegion(const ctlRegion *region) { - return region->end - region->begin; -} - -/* Begin flowed text. */ -static void flowBeg(txCtx h) { - h->dcf.sep = ""; -} - -/* Title flowed text. */ -static void flowTitle(txCtx h, char *title) { - flowBeg(h); - fprintf(h->dst.stm.fp, "--- %s\n", title); -} - -/* End flowed text. */ -static void flowEnd(txCtx h) { - fprintf(h->dst.stm.fp, "\n"); -} - -/* Add flowed text. */ -static void flowAdd(txCtx h, char *fmt, ...) { - va_list ap; - if (h->dcf.flags & DCF_SaveStemCnt) - return; - va_start(ap, fmt); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); -} - -/* Break flowed text. */ -static void flowBreak(txCtx h, char *fmt, ...) { - va_list ap; - va_start(ap, fmt); - fprintf(h->dst.stm.fp, "%s", h->dcf.sep); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "; -} - -/* Begin flowed element. */ -static void flowElemBeg(txCtx h, long index, int complex) { - fprintf(h->dst.stm.fp, "%s[%ld]={%s", h->dcf.sep, index, - (complex && (h->dcf.flags & DCF_BreakFlowed)) ? "\n" : ""); -} - -/* Add argument to flowed element. */ -static void flowArg(txCtx h, char *fmt, ...) { - va_list ap; - if (h->dcf.flags & DCF_SaveStemCnt) - return; - va_start(ap, fmt); - fprintf(h->dst.stm.fp, "%s", h->dcf.sep); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); - h->dcf.sep = " "; -} - -/* Add operator to flowed element. */ -static void flowOp(txCtx h, char *fmt, ...) { - va_list ap; - if (h->dcf.flags & DCF_SaveStemCnt) - return; - va_start(ap, fmt); - fprintf(h->dst.stm.fp, "%s", h->dcf.sep); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n " : " "; -} - -/* End flowed element. */ -static void flowElemEnd(txCtx h) { - fprintf(h->dst.stm.fp, "}"); - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "; -} - -/* Begin font set. */ -static void dcf_BegSet(txCtx h) { -} - -/* Dump table tag line. */ -static void dumpTagLine(txCtx h, char *title, const ctlRegion *region) { - if (h->dcf.level < 1) { - static char dots[] = " ................"; - fprintf(h->dst.stm.fp, "### %s%.*s (%08lx-%08lx)\n", - title, (int)(sizeof(dots) - 1 - strlen(title)), dots, - region->begin, region->end - 1L); - } else - fprintf(h->dst.stm.fp, "### %s (%08lx-%08lx)\n", - title, region->begin, region->end - 1L); -} - -/* Dump CFF header. */ -static void dcf_DumpHeader(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_Header) || region->begin == -1) - return; - - dumpTagLine(h, "Header", region); - if (h->dcf.level < 1) - return; - - bufSeek(h, region->begin); - fprintf(fp, "major =%u\n", read1(h)); - fprintf(fp, "minor =%u\n", read1(h)); - fprintf(fp, "hdrSize=%u\n", read1(h)); - fprintf(fp, "offSize=%u\n", read1(h)); -} - -/* Dump CFF INDEX. */ -static void dumpINDEX(txCtx h, char *title, const ctlRegion *region, - DumpElementProc dumpElement) { - dumpTagLine(h, title, region); - if (h->dcf.level < 1) - return; - else { - long i; - long offset; - long dataref; - unsigned short count; - unsigned char offSize = 0; /* Suppress optimizer warning */ - ctlRegion element; - FILE *fp = h->dst.stm.fp; - - /* Read header */ - bufSeek(h, region->begin); - count = read2(h); - if (count > 0) - offSize = read1(h); - - if (h->dcf.level < 5) { - /* Dump header */ - fprintf(fp, "count =%hu\n", count); - if (count == 0) - return; - fprintf(fp, "offSize=%u\n", offSize); - - /* Dump offset array */ - flowTitle(h, "offset[index]=value"); - for (i = 0; i <= count; i++) - flowBreak(h, "[%ld]=%lu", i, readn(h, offSize)); - flowEnd(h); - } else if (count == 0) { - fprintf(fp, "empty\n"); - return; - } - - /* Compute offset array base and data reference offset */ - offset = region->begin + 2 + 1; - dataref = offset + (count + 1) * offSize - 1; - - /* Dump object data */ - flowTitle(h, "object[index]={value}"); - bufSeek(h, offset); - element.begin = dataref + readn(h, offSize); - offset += offSize; - for (i = 0; i < count; i++) { - bufSeek(h, offset); - element.end = dataref + readn(h, offSize); - offset += offSize; - dumpElement(h, i, &element); - element.begin = element.end; - } - flowEnd(h); - } -} - -/* Dump string data. */ -static void dumpString(txCtx h, const ctlRegion *region) { - long cnt = sizeRegion(region); - bufSeek(h, region->begin); - while (cnt-- > 0) - flowAdd(h, "%c", read1(h)); -} - -/* Dump Name INDEX element. */ -static void dumpNameElement(txCtx h, long index, const ctlRegion *region) { - flowElemBeg(h, index, 0); - dumpString(h, region); - flowElemEnd(h); -} - -/* Dump Name INDEX table. */ -static void dcf_DumpNameINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_NameINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "Name INDEX", region, dumpNameElement); -} - -/* Dump CFF DICT. */ -static void dumpDICT(txCtx h, const ctlRegion *region) { - static char *opname[32] = - { - /* 0 */ "version", - /* 1 */ "Notice", - /* 2 */ "FullName", - /* 3 */ "FamilyName", - /* 4 */ "Weight", - /* 5 */ "FontBBox", - /* 6 */ "BlueValues", - /* 7 */ "OtherBlues", - /* 8 */ "FamilyBlues", - /* 9 */ "FamilyOtherBlues", - /* 10 */ "StdHW", - /* 11 */ "StdVW", - /* 12 */ "escape", - /* 13 */ "UniqueID", - /* 14 */ "XUID", - /* 15 */ "charset", - /* 16 */ "Encoding", - /* 17 */ "CharStrings", - /* 18 */ "Private", - /* 19 */ "Subrs", - /* 20 */ "defaultWidthX", - /* 21 */ "nominalWidthX", - /* 22 */ "reserved22", - /* 23 */ "reserved23", - /* 24 */ "reserved24", - /* 25 */ "reserved25", - /* 26 */ "reserved26", - /* 27 */ "reserved27", - /* 28 */ "shortint", - /* 29 */ "longint", - /* 30 */ "BCD", - /* 31 */ "reserved31", - }; - static char *escopname[] = - { - /* 0 */ "Copyright", - /* 1 */ "isFixedPitch", - /* 2 */ "ItalicAngle", - /* 3 */ "UnderlinePosition", - /* 4 */ "UnderlineThickness", - /* 5 */ "PaintType", - /* 6 */ "CharstringType", - /* 7 */ "FontMatrix", - /* 8 */ "StrokeWidth", - /* 9 */ "BlueScale", - /* 10 */ "BlueShift", - /* 11 */ "BlueFuzz", - /* 12 */ "StemSnapH", - /* 13 */ "StemSnapV", - /* 14 */ "ForceBold", - /* 15 */ "reservedESC15", - /* 16 */ "lenIV", - /* 17 */ "LanguageGroup", - /* 18 */ "ExpansionFactor", - /* 19 */ "initialRandomSeed", - /* 20 */ "SyntheticBase", - /* 21 */ "PostScript", - /* 22 */ "BaseFontName", - /* 23 */ "BaseFontBlend", - /* 24 */ "reservedESC24", - /* 25 */ "reservedESC25", - /* 26 */ "reservedESC26", - /* 27 */ "reservedESC27", - /* 28 */ "reservedESC28", - /* 29 */ "reservedESC29", - /* 30 */ "ROS", - /* 31 */ "CIDFontVersion", - /* 32 */ "CIDFontRevision", - /* 33 */ "CIDFontType", - /* 34 */ "CIDCount", - /* 35 */ "UIDBase", - /* 36 */ "FDArray", - /* 37 */ "FDIndex", - /* 38 */ "FontName", - /* 39 */ "Chameleon", - }; - long left = sizeRegion(region); - - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? " " : ""; - bufSeek(h, region->begin); - while (left > 0) { - unsigned char byte = read1(h); - left--; - switch (byte) { - case cff_version: - case cff_Notice: - case cff_FullName: - case cff_FamilyName: - case cff_Weight: - case cff_FontBBox: - case cff_BlueValues: - case cff_OtherBlues: - case cff_FamilyBlues: - case cff_FamilyOtherBlues: - case cff_StdHW: - case cff_StdVW: - case cff_UniqueID: - case cff_XUID: - case cff_charset: - case cff_Encoding: - case cff_CharStrings: - case cff_Private: - case cff_Subrs: - case cff_defaultWidthX: - case cff_nominalWidthX: - case cff_vsindex: - case cff_blend: - case cff_VarStore: - case cff_maxstack: - case cff_reserved26: - case cff_reserved27: - case cff_BlendLE: - flowOp(h, opname[byte]); - break; - case cff_escape: { - /* Process escaped operator */ - unsigned char escop = read1(h); - left--; - if (escop > ARRAY_LEN(escopname) - 1) - flowOp(h, "reservedESC%d", escop); - else - flowOp(h, escopname[escop]); - break; - } - case cff_shortint: { - /* 3-byte number */ - short value = read1(h); - value = value << 8 | read1(h); - left -= 2; -#if SHRT_MAX > 32767 - /* short greater that 2 bytes; handle negative range */ - if (value > 32767) - value -= 65536; -#endif - flowArg(h, "%hd", value); - } break; - case cff_longint: { - /* 5-byte number */ - long value = read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - left -= 4; -#if LONG_MAX > 2147483647 - /* long greater that 4 bytes; handle negative range */ - if (value > 2417483647) - value -= 4294967296; -#endif - flowArg(h, "%ld", value); - } break; - case cff_BCD: { - int count = 0; - int byte = 0; /* Suppress optimizer warning */ - flowArg(h, ""); - for (;;) { - int nibble; - - if (count++ & 1) - nibble = byte & 0xf; - else { - byte = read1(h); - left--; - nibble = byte >> 4; - } - if (nibble == 0xf) - break; - - flowAdd(h, "%c", "0123456789.EE?-?"[nibble]); - if (nibble == 0xc) - flowAdd(h, "-"); - } - } break; - case 247: - case 248: - case 249: - case 250: - /* Positive 2-byte number */ - flowArg(h, "%d", 108 + 256 * (byte - 247) + read1(h)); - left--; - break; - case 251: - case 252: - case 253: - case 254: - /* Negative 2-byte number */ - flowArg(h, "%d", -108 - 256 * (byte - 251) - read1(h)); - left--; - break; - case 255: - flowOp(h, "reserved255"); - break; - default: - /* 1-byte number */ - flowArg(h, "%d", byte - 139); - break; - } - } - if (h->dcf.flags & DCF_BreakFlowed) - fprintf(h->dst.stm.fp, "\n"); -} - -/* Dump DICT element. */ -static void dumpDICTElement(txCtx h, long index, const ctlRegion *region) { - flowElemBeg(h, index, 1); - dumpDICT(h, region); - flowElemEnd(h); -} - -/* Dump Top DICT INDEX table. */ -static void dcf_DumpTopDICTINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_TopDICTINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "Top DICT INDEX", region, dumpDICTElement); -} - -/* Dump String INDEX element. */ -static void dumpStringElement(txCtx h, long index, const ctlRegion *region) { - flowElemBeg(h, (h->dcf.level == 5) ? ARRAY_LEN(sid2std) + index : index, 0); - dumpString(h, region); - flowElemEnd(h); -} - -/* Dump String INDEX table. */ -static void dcf_DumpStringINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_StringINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "String INDEX", region, dumpStringElement); -} - -/* Flow stack args. */ -static void flowStack(txCtx h) { - long i; - for (i = 0; i < h->stack.cnt; i++) - flowArg(h, "%g", INDEX(i)); - h->stack.cnt = 0; -} - -/* Flow stack args and operator. */ -static void flowCommand(txCtx h, char *opname) { - flowStack(h); - flowOp(h, opname); -} - -/* Call subr. */ -static void callsubr(txCtx h, - SubrInfo *info, const ctlRegion *caller, long left) { - long arg; - ctlRegion callee; - long saveoff = caller->end - left; - - /* Validate and unbias subr number */ - CHKUFLOW(1); - arg = info->bias + (long)POP(); - if (arg < 0 || arg >= info->count) - fatal(h, "invalid subr call"); - - /* Compute subr region */ - bufSeek(h, info->offset + arg * info->offSize); - callee.begin = info->dataref + readn(h, info->offSize); - callee.end = info->dataref + readn(h, info->offSize); - - /* Dump subr region */ - dumpCstr(h, &callee, 1); - - if (h->dcf.flags & DCF_SaveStemCnt) - info->stemcnt.array[arg] = (unsigned char)h->dcf.stemcnt; - - if (left > 0) - bufSeek(h, saveoff); -} - -/* Dump Type 2 charstring. */ -static void dumpCstr(txCtx h, const ctlRegion *region, int inSubr) { - static char *opname[32] = - { - /* 0 */ "reserved0", - /* 1 */ "hstem", - /* 2 */ "compose", - /* 3 */ "vstem", - /* 4 */ "vmoveto", - /* 5 */ "rlineto", - /* 6 */ "hlineto", - /* 7 */ "vlineto", - /* 8 */ "rrcurveto", - /* 9 */ "reserved9", - /* 10 */ "callsubr", - /* 11 */ "return", - /* 12 */ "escape", - /* 13 */ "reserved13", - /* 14 */ "endchar", - /* 15 */ "reserved15", - /* 16 */ "reserved16", - /* 17 */ "callgrel", - /* 18 */ "hstemhm", - /* 19 */ "hintmask", - /* 20 */ "cntrmask", - /* 21 */ "rmoveto", - /* 22 */ "hmoveto", - /* 23 */ "vstemhm", - /* 24 */ "rcurveline", - /* 25 */ "rlinecurve", - /* 26 */ "vvcurveto", - /* 27 */ "hhcurveto", - /* 28 */ "shortint", - /* 29 */ "callgsubr", - /* 30 */ "vhcurveto", - /* 31 */ "hvcurveto", - }; - static char *escopname[] = - { - /* 0 */ "dotsection", - /* 1 */ "reservedESC1", - /* 2 */ "reservedESC2", - /* 3 */ "and", - /* 4 */ "or", - /* 5 */ "not", - /* 6 */ "reservedESC6", - /* 7 */ "reservedESC7", - /* 8 */ "reservedESC8", - /* 9 */ "abs", - /* 10 */ "add", - /* 11 */ "sub", - /* 12 */ "div", - /* 13 */ "reservedESC13", - /* 14 */ "neg", - /* 15 */ "eq", - /* 16 */ "reservedESC16", - /* 17 */ "reservedESC17", - /* 18 */ "drop", - /* 19 */ "reservedESC19", - /* 20 */ "put", - /* 21 */ "get", - /* 22 */ "ifelse", - /* 23 */ "random", - /* 24 */ "mul", - /* 25 */ "reservedESC25", - /* 26 */ "sqrt", - /* 27 */ "dup", - /* 28 */ "exch", - /* 29 */ "index", - /* 30 */ "roll", - /* 31 */ "reservedESC31", - /* 32 */ "reservedESC32", - /* 33 */ "reservedESC33", - /* 34 */ "hflex", - /* 35 */ "flex", - /* 36 */ "hflex1", - /* 37 */ "flex1", - /* 38 */ "cntron", - /* 39 */ "blend1", - /* 40 */ "blend2", - /* 41 */ "blend3", - /* 42 */ "blend4", - /* 43 */ "blend6", - /* 44 */ "setwv1", - /* 45 */ "setwv2", - /* 46 */ "setwv3", - /* 47 */ "setwv4", - /* 48 */ "setwv5", - /* 49 */ "setwvN", - /* 50 */ "transform", - }; - long left = sizeRegion(region); - - if (!inSubr) - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? " " : ""; - bufSeek(h, region->begin); - while (left > 0) { - unsigned char byte = read1(h); - left--; - switch (byte) { - case tx_reserved0: - case tx_vmoveto: - case tx_rlineto: - case tx_hlineto: - case tx_vlineto: - case tx_rrcurveto: - case t2_reserved9: - case t2_reserved13: - case tx_endchar: - case t2_vsindex: - case t2_blend: - case tx_rmoveto: - case tx_hmoveto: - case t2_rcurveline: - case t2_rlinecurve: - case t2_vvcurveto: - case t2_hhcurveto: - case tx_vhcurveto: - case tx_hvcurveto: - flowCommand(h, opname[byte]); - break; - case tx_compose: - flowCommand(h, opname[byte]); - break; - case tx_callgrel: - flowCommand(h, opname[byte]); - break; - case tx_callsubr: - if (h->dcf.flags & DCF_Flatten) - callsubr(h, h->dcf.fd, region, left); - else - flowCommand(h, opname[byte]); - break; - case tx_return: - if (!(h->dcf.flags & DCF_Flatten)) - flowCommand(h, opname[byte]); - break; - case t2_callgsubr: - if (h->dcf.flags & DCF_Flatten) - callsubr(h, &h->dcf.global, region, left); - else - flowCommand(h, opname[byte]); - break; - case tx_hstem: - case tx_vstem: - case t2_hstemhm: - case t2_vstemhm: - if (h->dcf.flags & DCF_Flatten) - h->dcf.stemcnt += h->stack.cnt / 2; - flowCommand(h, opname[byte]); - break; - case t2_hintmask: - case t2_cntrmask: - if (h->dcf.flags & DCF_Flatten) - h->dcf.stemcnt += h->stack.cnt / 2; - flowStack(h); - { - int masklen = (h->dcf.stemcnt + 7) / 8; - flowOp(h, "%s[", opname[byte]); - left -= masklen; - while (masklen--) - flowAdd(h, "%02X", read1(h)); - flowAdd(h, "]"); - break; - } - case tx_escape: { - /* Process escaped operator */ - unsigned char escop = read1(h); - left--; - if (escop > ARRAY_LEN(escopname) - 1) { - flowStack(h); - flowOp(h, "reservedESC%d", escop); - } else - flowCommand(h, escopname[escop]); - break; - } - case t2_shortint: - /* 3-byte number */ - CHKOFLOW(1); - { - short value = read1(h); - value = value << 8 | read1(h); - left -= 2; -#if SHRT_MAX > 32767 - /* short greater that 2 bytes; handle negative range */ - if (value > 32767) - value -= 65536; -#endif - PUSH(value); - } - continue; - case 247: - case 248: - case 249: - case 250: - /* Positive 2-byte number */ - CHKOFLOW(1); - PUSH(108 + 256 * (byte - 247) + read1(h)); - left--; - continue; - case 251: - case 252: - case 253: - case 254: - /* Negative 2-byte number */ - CHKOFLOW(1); - PUSH(-108 - 256 * (byte - 251) - read1(h)); - left--; - continue; - case 255: - /* 5-byte number (16.16 fixed) */ - CHKOFLOW(1); - { - long value = read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - left -= 4; -#if LONG_MAX > 2147483647 - /* long greater that 4 bytes; handle negative range */ - if (value > 2417483647) - value -= 4294967296; -#endif - PUSH(value / 65536.0); - } - continue; - default: - /* 1-byte number */ - CHKOFLOW(1); - PUSH(byte - 139); - continue; - } - } - if (!inSubr && (h->dcf.flags & DCF_BreakFlowed) && - !(h->dcf.flags & DCF_SaveStemCnt)) { - /* Handle left over args (if any) */ - flowStack(h); - fprintf(h->dst.stm.fp, "\n"); - } -} - -/* Dump global charstring element. */ -static void dumpGlobalElement(txCtx h, long index, const ctlRegion *region) { - h->dcf.stemcnt = h->dcf.global.stemcnt.array[index]; - h->stack.cnt = 0; - if (h->dcf.level > 1) - index -= h->dcf.global.bias; - flowElemBeg(h, index, 1); - dumpCstr(h, region, 0); - flowElemEnd(h); -} - -/* Dump Global Subr INDEX table. */ -static void dcf_DumpGlobalSubrINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_GlobalSubrINDEX) || region->begin == -1) - return; - - h->flags &= ~DCF_Flatten; - dumpINDEX(h, "GlobalSubrINDEX", region, dumpGlobalElement); -} - -/* Dump encoding table. */ -static void dcf_DumpEncoding(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_Encoding) || - region->begin == -1 || - h->top->sup.flags & ABF_CID_FONT) - return; - - switch (region->begin) { - case cff_StandardEncoding: - fprintf(fp, "### Encoding ........ (Standard)\n"); - break; - case cff_ExpertEncoding: - fprintf(fp, "### Encoding ........ (Expert)\n"); - break; - default: { - dumpTagLine(h, "Encoding", region); - if (h->dcf.level > 0) { - long gid; - long i; - long cnt; - unsigned char fmt; - - bufSeek(h, region->begin); - gid = 1; /* Skip glyph 0 (.notdef) */ - - fmt = read1(h); - fprintf(fp, "format =%x\n", fmt); - switch (fmt & 0x7f) { - case 0: - cnt = read1(h); - fprintf(fp, "nCodes =%ld\n", cnt); - flowTitle(h, "glyph[gid]=code"); - for (; gid <= cnt; gid++) - flowBreak(h, "[%ld]=%u", gid, read1(h)); - flowEnd(h); - break; - case 1: - cnt = read1(h); - fprintf(fp, "nRanges=%ld\n", cnt); - flowTitle(h, "Range1={first,nLeft}"); - for (i = 0; i < cnt; i++) { - unsigned char code = read1(h); - unsigned char nLeft = read1(h); - flowBreak(h, "[%ld]={%u,%u}", i, code, nLeft); - gid += nLeft + 1; - } - flowEnd(h); - break; - } - if (fmt & 0x80) { - /* Read supplementary encoding */ - cnt = read1(h); - fprintf(fp, "nSups=%ld\n", cnt); - flowTitle(h, "Supplement={code,sid}"); - for (i = 0; i < cnt; i++) { - unsigned char code = read1(h); - unsigned short sid = read2(h); - flowBreak(h, "[%ld]={%u,%hu}", i, code, sid); - } - flowEnd(h); - } - } - } break; - } -} - -/* Dump charset table. */ -static void dcf_DumpCharset(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_Charset) || region->begin == -1) - return; - - switch (region->begin) { - case cff_ISOAdobeCharset: - fprintf(fp, "### Charset ......... (ISOAdobe)\n"); - break; - case cff_ExpertCharset: - fprintf(fp, "### Charset ......... (Expert)\n"); - break; - case cff_ExpertSubsetCharset: - fprintf(fp, "### Charset ......... (Expert Subset)\n"); - break; - default: { - dumpTagLine(h, "Charset", region); - if (h->dcf.level > 0) { - unsigned char fmt; - long i; - long gid; - - bufSeek(h, region->begin); - fmt = read1(h); - fprintf(fp, "format=%u\n", fmt); - gid = 1; /* Skip glyph 0 (.notdef) */ - - switch (fmt) { - case 0: - flowTitle(h, (h->top->sup.flags & ABF_CID_FONT) ? "glyph[gid]=cid" : "glyph[gid]=sid"); - for (; gid < h->top->sup.nGlyphs; gid++) - flowBreak(h, "[%ld]=%hu", gid, read2(h)); - flowEnd(h); - break; - case 1: - flowTitle(h, "Range1[index]={first,nLeft}"); - for (i = 0; gid < h->top->sup.nGlyphs; i++) { - unsigned short id = read2(h); - unsigned char nLeft = read1(h); - flowBreak(h, "[%ld]={%hu,%hhu}", i, id, nLeft); - gid += nLeft + 1; - } - flowEnd(h); - break; - case 2: - flowTitle(h, "Range2[index]={first,nLeft}"); - for (i = 0; gid < h->top->sup.nGlyphs; i++) { - unsigned short id = read2(h); - unsigned short nLeft = read2(h); - flowBreak(h, "[%ld]={%hu,%hu}", i, id, nLeft); - gid += nLeft + 1; - } - flowEnd(h); - break; - } - } - } break; - } -} - -/* Dump FDSelect table. */ -static void dcf_DumpFDSelect(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_FDSelect) || region->begin == -1) - return; - - dumpTagLine(h, "FDSelect", region); - if (h->dcf.level < 1) - return; - else { - unsigned char fmt; - - bufSeek(h, region->begin); - fmt = read1(h); - fprintf(fp, "format =%u\n", fmt); - - switch (fmt) { - case 0: { - long gid; - flowTitle(h, "glyph[gid]=fd"); - for (gid = 0; gid < h->top->sup.nGlyphs; gid++) - flowBreak(h, "[%ld]=%u", gid, read1(h)); - flowEnd(h); - } break; - case 3: { - long i; - long nRanges = read2(h); - fprintf(fp, "nRanges=%ld\n", nRanges); - flowTitle(h, "Range3[index]={first,fd}"); - for (i = 0; i < nRanges; i++) { - unsigned short first = read2(h); - unsigned char fd = read1(h); - flowBreak(h, "[%ld]={%hu,%u}", i, first, fd); - } - flowEnd(h); - fprintf(fp, "sentinel=%hu\n", read2(h)); - } break; - default: - fatal(h, "invalid FDSelect format"); - } - } -} - -/* Dump FDArray INDEX table. */ -static void dcf_DumpFDArrayINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_FDArrayINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "FDArray INDEX", region, dumpDICTElement); -} - -/* Dump charstring element. */ -static void dumpCstrElement(txCtx h, long index, const ctlRegion *region) { - h->dcf.stemcnt = h->dcf.glyph.array[index]; - h->stack.cnt = 0; - flowElemBeg(h, index, 1); - dumpCstr(h, region, 0); - flowElemEnd(h); -} - -/* Dump CharString INDEX. */ -static void dcf_DumpCharStringsINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_CharStringsINDEX) || region->begin == -1) - return; - - if (h->arg.g.cnt > 0) { - /* Dump selected glyphs from INDEX */ - fprintf(h->dst.stm.fp, "### CharStrings (flattened)\n"); - if (h->dcf.level < 1) - return; - flowBeg(h); - fprintf(h->dst.stm.fp, "--- glyph[tag]={%s,path}\n", - (h->top->sup.flags & ABF_CID_FONT) ? "cid" : "name"); - h->dcf.flags |= DCF_Flatten; - callbackSubset(h); - flowEnd(h); - } else { - /* Dump entire INDEX */ - h->dcf.flags &= ~DCF_Flatten; - dumpINDEX(h, "CharStrings INDEX", region, dumpCstrElement); - } -} - -/* Dump Private DICT. */ -static void dcf_DumpPrivateDICT(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_PrivateDICT) || region->begin == -1) - return; - - dumpTagLine(h, "Private DICT", region); - if (h->dcf.level < 1) - return; - dumpDICT(h, region); -} - -/* Dump local charstring element. */ -static void dumpLocalElement(txCtx h, long index, const ctlRegion *region) { - h->dcf.stemcnt = h->dcf.fd->stemcnt.array[index]; - h->stack.cnt = 0; - if (h->dcf.level > 1) - index -= h->dcf.fd->bias; - flowElemBeg(h, index, 1); - dumpCstr(h, region, 0); - flowElemEnd(h); -} - -/* Dump Local Subr INDEX table. */ -static void dcf_DumpLocalSubrINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_LocalSubrINDEX) || region->begin == -1) - return; - - h->flags &= ~DCF_Flatten; - dumpINDEX(h, "Local Subr INDEX", region, dumpLocalElement); -} - -/* Initialize subr info from INDEX. */ -static void initSubrInfo(txCtx h, const ctlRegion *region, SubrInfo *info) { - if (region->begin == -1) { - /* Empty region */ - info->count = 0; - return; - } - - bufSeek(h, region->begin); - info->count = read2(h); - if (info->count == 0) - return; - - info->offSize = read1(h); - info->offset = region->begin + 2 + 1; - info->dataref = info->offset + (info->count + 1) * info->offSize - 1; - - dnaSET_CNT(info->stemcnt, info->count); - memset(info->stemcnt.array, 0, info->count); - - if (info->count < 1240) - info->bias = 107; - else if (info->count < 33900) - info->bias = 1131; - else - info->bias = 32768; -} - -/* Glyph begin callback to save count stems. */ -static int dcf_SaveStemCount(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - - h->dcf.fd = &h->dcf.local.array[info->iFD]; - h->dcf.stemcnt = 0; - h->stack.cnt = 0; - dumpCstr(h, &info->sup, 0); - h->dcf.glyph.array[info->tag] = (unsigned char)h->dcf.stemcnt; - - return ABF_SKIP_RET; -} - -/* Glyph charstring dump callback. */ -static int dcf_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - FILE *fp = h->dst.stm.fp; - - /* Customized flowElemBeg() */ - if (info->flags & ABF_GLYPH_CID) - fprintf(fp, "%s[%hu]={\\%hu,%s", h->dcf.sep, info->tag, info->cid, - (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "); - else - fprintf(fp, "%s[%hu]={%s,%s", h->dcf.sep, info->tag, info->gname.ptr, - (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "); - - h->dcf.fd = &h->dcf.local.array[info->iFD]; - h->dcf.stemcnt = 0; - h->stack.cnt = 0; - dumpCstr(h, &info->sup, 0); - - flowElemEnd(h); - - return ABF_SKIP_RET; -} - -/* Initialize charstring dump. */ -static void initCstrs(txCtx h, abfTopDict *top) { - long i; - int subrDump = h->dcf.flags & (DCF_GlobalSubrINDEX | DCF_LocalSubrINDEX); - - if (h->dcf.level < 1 || - !(subrDump || (h->dcf.flags & DCF_CharStringsINDEX))) - return; /* Nothing to do */ - - /* Initialize global subrs */ - initSubrInfo(h, - &cfrGetSingleRegions(h->cfr.ctx)->GlobalSubrINDEX, - &h->dcf.global); - - /* Initialize local subrs */ - dnaSET_CNT(h->dcf.local, top->FDArray.cnt); - for (i = 0; i < h->dcf.local.cnt; i++) - initSubrInfo(h, - &cfrGetRepeatRegions(h->cfr.ctx, i)->LocalSubrINDEX, - &h->dcf.local.array[i]); - - if (!subrDump && h->arg.g.cnt > 0) - return; - - /* Initialize glyph charstrings */ - dnaSET_CNT(h->dcf.glyph, top->sup.nGlyphs); - memset(h->dcf.glyph.array, 0, h->dcf.glyph.cnt); - - /* Save stem counts */ - h->dcf.flags |= (DCF_Flatten | DCF_SaveStemCnt); - h->cb.glyph.beg = dcf_SaveStemCount; - - if (cfrIterateGlyphs(h->cfr.ctx, &h->cb.glyph)) - fatal(h, NULL); - - h->cb.glyph.beg = dcf_GlyphBeg; - h->dcf.flags &= ~(DCF_Flatten | DCF_SaveStemCnt); -} - -/* Begin new font. */ -static void dcf_BegFont(txCtx h, abfTopDict *top) { - long i; - const cfrSingleRegions *single; - - if (h->src.type != src_OTF && h->src.type != src_CFF) - fatal(h, "-dcf mode: non-CFF font"); - if (h->dcf.flags & DCF_IS_CUBE) - h->maxOpStack = TX_MAX_OP_STACK_CUBE; - else - h->maxOpStack = T2_MAX_OP_STACK; - - if (h->arg.g.cnt > 0) { - /* Glyph subset specified; select CharStringsINDEX dump */ - if (!(h->dcf.flags & DCF_TableSelected)) - /* Clear default table selections */ - h->dcf.flags &= ~DCF_AllTables; - h->dcf.flags |= DCF_CharStringsINDEX; - if (h->dcf.level == 0) - /* Set useful dump level */ - h->dcf.level = 5; - } - - h->src.offset = -BUFSIZ; - dstFileOpen(h, top); - - initCstrs(h, top); - - single = cfrGetSingleRegions(h->cfr.ctx); - dcf_DumpHeader(h, &single->Header); - dcf_DumpNameINDEX(h, &single->NameINDEX); - dcf_DumpTopDICTINDEX(h, &single->TopDICTINDEX); - dcf_DumpStringINDEX(h, &single->StringINDEX); - dcf_DumpGlobalSubrINDEX(h, &single->GlobalSubrINDEX); - dcf_DumpEncoding(h, &single->Encoding); - dcf_DumpCharset(h, &single->Charset); - dcf_DumpFDSelect(h, &single->FDSelect); - dcf_DumpFDArrayINDEX(h, &single->FDArrayINDEX); - dcf_DumpCharStringsINDEX(h, &single->CharStringsINDEX); - - for (i = 0; i < top->FDArray.cnt; i++) { - const cfrRepeatRegions *repeat = cfrGetRepeatRegions(h->cfr.ctx, i); - if (top->FDArray.cnt > 1 && - (h->dcf.flags & (DCF_PrivateDICT | DCF_LocalSubrINDEX))) - fprintf(h->dst.stm.fp, "--- FD[%ld]\n", i); - dcf_DumpPrivateDICT(h, &repeat->PrivateDICT); - h->dcf.fd = &h->dcf.local.array[i]; - dcf_DumpLocalSubrINDEX(h, &repeat->LocalSubrINDEX); - } -} - -/* End new font. */ -static void dcf_EndFont(txCtx h) { -} - -/* End font set. */ -static void dcf_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup dcf mode. */ -static void dcf_SetMode(txCtx h) { - /* Set mode name */ - h->modename = "dcf"; - - /* h->dcf.flags is now set at the start of parseArgs - h->dcf.flags = DCF_AllTables|DCF_BreakFlowed; - h->dcf.level = 5; - */ - - /* Set library functions */ - h->dst.begset = dcf_BegSet; - h->dst.begfont = dcf_BegFont; - h->dst.endfont = dcf_EndFont; - h->dst.endset = dcf_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph.beg = dcf_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - - /* Set source library flag */ - /* These are now set at the start of parseArgs - h->cfr.flags = 0; - */ - - h->mode = mode_dcf; -} - -/* Mode-specific help. */ -static void dcf_Help(txCtx h) { - static char *text[] = - { -#include "dcf.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* Parse -T argument. */ -static void dcf_ParseTableArg(txCtx h, char *arg) { - long save_flags = h->dcf.flags & DCF_BreakFlowed; - h->dcf.flags = 0; - for (;;) { - int c = *arg++; - switch (c) { - case '\0': - h->dcf.flags |= save_flags; - h->dcf.flags |= DCF_TableSelected; - return; - case 'h': - h->dcf.flags |= DCF_Header; - break; - case 'n': - h->dcf.flags |= DCF_NameINDEX; - break; - case 't': - h->dcf.flags |= DCF_TopDICTINDEX; - break; - case 's': - h->dcf.flags |= DCF_StringINDEX; - break; - case 'g': - h->dcf.flags |= DCF_GlobalSubrINDEX; - break; - case 'e': - h->dcf.flags |= DCF_Encoding; - break; - case 'C': - h->dcf.flags |= DCF_Charset; - break; - case 'f': - h->dcf.flags |= DCF_FDSelect; - break; - case 'F': - h->dcf.flags |= DCF_FDArrayINDEX; - break; - case 'c': - h->dcf.flags |= DCF_CharStringsINDEX; - break; - case 'p': - h->dcf.flags |= DCF_PrivateDICT; - break; - case 'l': - h->dcf.flags |= DCF_LocalSubrINDEX; - break; - case 'a': - if (strcmp(arg, "ll") == 0) { - h->dcf.flags = DCF_AllTables; - break; - } - /* Fall through */ - default: - fprintf(stderr, "%s: option -T invalid selector '%c' (ignored)\n", - h->progname, c); - } - } -} - -/* ---------------------------- Subset Creation ---------------------------- */ - -/* Make random subset. */ -static void makeRandSubset(txCtx h, char *opt, char *arg) { - long i; - char *p; - float percent = (float)strtod(arg, &p); - if (*p != '\0' || percent < 0 || percent > 100) - fatal(h, "bad arg (%s)", opt); - - /* Initialize glyph list */ - dnaSET_CNT(h->subset.glyphs, h->top->sup.nGlyphs); - for (i = 0; i < h->subset.glyphs.cnt; i++) - h->subset.glyphs.array[i] = (unsigned short)i; - - /* Randomize glyph list by random permutation method */ - for (i = 0; i < h->subset.glyphs.cnt - 1; i++) { - long j = randrange(h->subset.glyphs.cnt - i); - unsigned short tmp = h->subset.glyphs.array[i]; - h->subset.glyphs.array[i] = h->subset.glyphs.array[i + j]; - h->subset.glyphs.array[i + j] = tmp; - } - - /* Trim array to specified percentage */ - h->subset.glyphs.cnt = (long)(percent / 100.0 * h->subset.glyphs.cnt + 0.5); - if (h->subset.glyphs.cnt == 0) - h->subset.glyphs.cnt = 1; -} - -/* Make Font Dict subset. */ -static void makeFDSubset(txCtx h) { - long i, j; - - if (!(h->top->sup.flags & ABF_CID_FONT)) - fatal(h, "-fd specified for non-CID font"); - - getGlyphList(h); - - for (i = 0; i < h->src.glyphs.cnt; i++) { - abfGlyphInfo *info = h->src.glyphs.array[i]; - if (h->flags & SUBSET__EXCLUDE_OPT) { - unsigned int match = 0; - for (j = 0; j < h->fd.fdIndices.cnt; j++) { - if (info->iFD == h->fd.fdIndices.array[j]) { - match = 1; - break; - } - } - if (!match) - *dnaNEXT(h->subset.glyphs) = info->tag; - - } else { - for (j = 0; j < h->fd.fdIndices.cnt; j++) { - if (info->iFD == h->fd.fdIndices.array[j]) { - *dnaNEXT(h->subset.glyphs) = info->tag; - break; - } - } - } - } - - if (h->subset.glyphs.cnt == 0) - fatal(h, "no glyphs selected by -fd argument"); -} - -/* Begin new glyph definition for gathering glyph info. */ -static int getExcludeGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - *dnaNEXT(h->src.exclude) = info; - if (info->flags & ABF_GLYPH_CID) { - if (info->cid == 0) - h->flags &= ~SUBSET_HAS_NOTDEF; - } else { - if (strcmp(info->gname.ptr, ".notdef") == 0) - h->flags &= ~SUBSET_HAS_NOTDEF; - } - - return ABF_SKIP_RET; -} - -/* Compare glyphs by their tag. */ -static int CTL_CDECL cmpExcludeByTag(const void *first, const void *second) { - const abfGlyphInfo *a = *(abfGlyphInfo **)first; - const abfGlyphInfo *b = *(abfGlyphInfo **)second; - if (a->tag < b->tag) - return -1; - else if (a->tag > b->tag) - return 1; - else - return 0; -} - -/* Match glyph by its tag. */ -static int CTL_CDECL matchExcludedByTag(const void *key, const void *value, - void *ctx) { - unsigned short a = *(unsigned short *)key; - unsigned short b = (*(abfGlyphInfo **)value)->tag; - if (a < b) - return -1; - else if (a > b) - return 1; - else - return 0; -} - -static void invertSubset(txCtx h) { - long i; - long cnt; - - /* iterate over all glyphs such that h->exclude.array will be filled with tags of glyphs that match. */ - h->cb.saveGlyphBeg = h->cb.glyph.beg; - - /* Insert data gather function */ - h->cb.glyph.beg = getExcludeGlyphBeg; - h->cb.glyph.indirect_ctx = h; - h->flags |= SUBSET_SKIP_NOTDEF; - h->flags |= SUBSET_HAS_NOTDEF; /* This gets cleared by the getExcludeGlyphBeg if the .notdef is seen.*/ - callbackSubset(h); - h->flags &= ~SUBSET_SKIP_NOTDEF; - qsort(h->src.exclude.array, h->src.exclude.cnt, - sizeof(h->src.exclude.array[0]), cmpExcludeByTag); - - /* Restore saved function */ - h->cb.glyph.beg = h->cb.saveGlyphBeg; - - getGlyphList(h); - dnaSET_CNT(h->subset.glyphs, h->src.glyphs.cnt); - cnt = 0; - for (i = 0; i < h->src.glyphs.cnt; i++) { - size_t index; - unsigned short tag = h->src.glyphs.array[i]->tag; - if (!ctuLookup(&tag, h->src.exclude.array, h->src.exclude.cnt, - sizeof(h->src.exclude.array[0]), matchExcludedByTag, &index, h)) { - h->subset.glyphs.array[cnt] = tag; - cnt++; - } - } - dnaSET_CNT(h->subset.glyphs, cnt); -} - -/* Make glyph subset. */ -static void prepSubset(txCtx h) { - /* In the ReadFont function, the reader library iterates through the - glyphs specified by the glyph list argument. What this function does is - to create the glyph list argument, according to which is specified of - the several options which request a subset. Note that even if the user - is excluding only one or two glyphs with the the -gx option, the glyph - list arg is still very short, as it uses ranges of GIDs. - - This function first creates a list of selected glyphs in the - h->subset.glyphs DNA. IF there are not such glyphs, it returns. Else, it - then proceeds to build the glyph list arg in makeSubsetArgList() */ - if (h->flags & SHOW_NAMES) { - fflush(stdout); - if (h->top->sup.flags & ABF_CID_FONT) - fprintf(stderr, "--- CIDFontName: %s\n", - h->top->cid.CIDFontName.ptr); - else - fprintf(stderr, "--- FontName: %s\n", - h->top->FDArray.array[0].FontName.ptr); - } - - h->flags &= ~SUBSET_HAS_NOTDEF; - h->src.glyphs.cnt = 0; - h->src.exclude.cnt = 0; - h->subset.glyphs.cnt = 0; - - /* Make subset glyph list */ - if (h->arg.p != NULL) - makeRandSubset(h, "-p", h->arg.p); - else if (h->arg.P != NULL) - makeRandSubset(h, "-P", h->arg.P); - else if (h->fd.fdIndices.cnt > 0) - makeFDSubset(h); - else if (h->flags & SUBSET__EXCLUDE_OPT) - invertSubset(h); - else { - if (h->flags & SUBSET_OPT) { - if (h->flags & PRESERVE_GID) { - getGlyphList(h); - parseSubset(h, callbackPreserveGlyph); - h->src.glyphs.array[0]->flags |= PRESERVE_CHARSTRING; - h->arg.g.cnt = 0; - h->cb.save = h->cb.glyph; - h->cb.glyph = preserveGlyphCallbacks; - h->cb.glyph.direct_ctx = h; - } - } - } - - if (h->subset.glyphs.cnt == 0) - return; /* no subset */ - - /* Make subset arg list */ - makeSubsetArgList(h); - if ((h->mode == mode_cff || h->mode == mode_t1 || h->mode == mode_svg || h->mode == mode_ufow) && (h->flags & SHOW_NAMES)) { - char *p; - char *q; - long i; - - /* Print subset */ - fprintf(stderr, - "--- subset:\n" - "SRC font %s\n" - "SRC glyphs %ld\n" - "DST font %s\n" - "DST glyphs %ld\n", - h->src.stm.filename, h->top->sup.nGlyphs, - h->dst.stm.filename, h->subset.glyphs.cnt); - p = ""; - q = h->arg.g.substrs; - for (i = 0; i < h->arg.g.cnt; i++) { - fprintf(stderr, "%s%s", p, q); - p = ","; - q += strlen(q) + 1; - } - fprintf(stderr, "\n"); - } -} - -/* Callback glyph according to type technology and selector. */ -static void callbackGlyph(txCtx h, int type, unsigned short id, char *name) { - switch (h->src.type) { - case src_Type1: - switch (type) { - case sel_by_tag: - (void)t1rGetGlyphByTag(h->t1r.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - (void)t1rGetGlyphByCID(h->t1r.ctx, id, &h->cb.glyph); - break; - case sel_by_name: - (void)t1rGetGlyphByName(h->t1r.ctx, name, &h->cb.glyph); - break; - } - break; - case src_OTF: - case src_CFF: - switch (type) { - case sel_by_tag: - (void)cfrGetGlyphByTag(h->cfr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - (void)cfrGetGlyphByCID(h->cfr.ctx, id, &h->cb.glyph); - break; - case sel_by_name: - (void)cfrGetGlyphByName(h->cfr.ctx, name, &h->cb.glyph); - break; - } - break; - case src_TrueType: - switch (type) { - case sel_by_tag: - (void)ttrGetGlyphByTag(h->ttr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - /* Invalid; do nothing */ - break; - case sel_by_name: - (void)ttrGetGlyphByName(h->ttr.ctx, name, &h->cb.glyph); - break; - } - break; - - case src_SVG: - switch (type) { - case sel_by_tag: - (void)svrGetGlyphByTag(h->svr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - fatal(h, "Cannot read glyphs from SVG fonts by CID "); - break; - case sel_by_name: - (void)svrGetGlyphByName(h->svr.ctx, name, &h->cb.glyph); - break; - } - break; - case src_UFO: - switch (type) { - case sel_by_tag: - (void)ufoGetGlyphByTag(h->ufr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - fatal(h, "Cannot read glyphs from UFO fonts by CID "); - break; - case sel_by_name: - (void)ufoGetGlyphByName(h->ufr.ctx, name, &h->cb.glyph); - break; - } - break; - } -} - -/* Add .notdef glyph to destination font. If it's already added it will be skipped. */ -static void addNotdef(txCtx h) { - if (((h->src.type == src_Type1) || (h->src.type == src_SVG) || (h->src.type == src_UFO)) && !(h->top->sup.flags & ABF_CID_FONT)) - callbackGlyph(h, sel_by_name, 0, ".notdef"); - else - callbackGlyph(h, sel_by_tag, 0, NULL); -} - -/* Filter glyphs using the glyph list pararmeter. */ -static void callbackSubset(txCtx h) { - parseSubset(h, callbackGlyph); - if (!((SUBSET_SKIP_NOTDEF & h->flags) || (SUBSET_HAS_NOTDEF & h->flags))) { - switch (h->mode) { - case mode_cff: - addNotdef(h); - break; - case mode_t1: - if (!(h->t1w.flags & T1W_TYPE_ADDN) && !(h->t1w.options & T1W_DECID)) - addNotdef(h); - break; - } - } -} - -/* ----------------------------- t1read Library ---------------------------- */ - -/* Read font with t1read library. */ -static void t1rReadFont(txCtx h, long origin) { - if (h->t1r.ctx == NULL) { - /* Initialize library */ - h->t1r.ctx = t1rNew(&h->cb.mem, &h->cb.stm, T1R_CHECK_ARGS); - if (h->t1r.ctx == NULL) - fatal(h, "(t1r) can't init lib"); - } - - if (h->flags & SUBSET_OPT && h->mode != mode_dump) - h->t1r.flags |= T1R_UPDATE_OPS; /* Convert seac for subsets */ - - if (h->flags & NO_UDV_CLAMPING) - h->t1r.flags |= T1R_NO_UDV_CLAMPING; - - if (t1rBegFont(h->t1r.ctx, h->t1r.flags, origin, &h->top, getUDV(h))) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (t1rIterateGlyphs(h->t1r.ctx, &h->cb.glyph)) - fatal(h, NULL); - } - - h->dst.endfont(h); - - if (t1rEndFont(h->t1r.ctx)) - fatal(h, NULL); -} - -/* ----------------------------- svread Library ---------------------------- */ - -/* Read font with svread library. */ -static void svrReadFont(txCtx h, long origin) { - if (h->svr.ctx == NULL) { - /* Initialize library */ - h->svr.ctx = svrNew(&h->cb.mem, &h->cb.stm, SVR_CHECK_ARGS); - if (h->svr.ctx == NULL) - fatal(h, "(svr) can't init lib"); - } - - if (svrBegFont(h->svr.ctx, h->svr.flags, &h->top)) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (svrIterateGlyphs(h->svr.ctx, &h->cb.glyph)) - fatal(h, NULL); - } - - h->dst.endfont(h); - - if (svrEndFont(h->svr.ctx)) - fatal(h, NULL); -} - -/* ----------------------------- ufo read Library ---------------------------- */ - -/* Read font with ufo rread library. */ -static void ufoReadFont(txCtx h, long origin) { - if (h->ufr.ctx == NULL) { - /* Initialize library */ - h->ufr.ctx = ufoNew(&h->cb.mem, &h->cb.stm, UFO_CHECK_ARGS); - if (h->ufr.ctx == NULL) - fatal(h, "(ufr) can't init lib"); - } - - if (ufoBegFont(h->ufr.ctx, h->ufr.flags, &h->top, h->ufr.altLayerDir)) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (ufoIterateGlyphs(h->ufr.ctx, &h->cb.glyph)) - fatal(h, NULL); - } +#undef DCL_OPT +#define DCL_OPT(string, index) string, +#include "options.h" +}; - h->dst.endfont(h); +/* ------------------------------ Help Text -------------------------------- */ - if (ufoEndFont(h->ufr.ctx)) - fatal(h, NULL); +static void afm_Help(txCtx h) { + static char *text[] = { +#include "afm.h" + }; + printText(ARRAY_LEN(text), text); } -/* ---------------------------- cffread Library ---------------------------- */ +static void cef_Help(txCtx h) { + static char *text[] = { +#include "cef.h" + }; + printText(ARRAY_LEN(text), text); +} -/* Read format 12 Unicode cmap. Assumes format field already read. */ -static void readCmap12(txCtx h) { - unsigned long nGroups; - unsigned long i; - - /* Skip reserved, language, and length fields */ - (void)read2(h); - (void)read4(h); - (void)read4(h); - - nGroups = read4(h); - for (i = 0; i < nGroups; i++) { - unsigned long startCharCode = read4(h); - unsigned long endCharCode = read4(h); - unsigned long startGlyphId = read4(h); - - while (startCharCode <= endCharCode) { - if (startGlyphId >= (unsigned long)h->top->sup.nGlyphs) - return; - h->cmap.encoding.array[startGlyphId++] = startCharCode++; - } - } +static void cff_Help(txCtx h) { + static char *text[] = { +#include "cff.h" + }; + printText(ARRAY_LEN(text), text); } -/* Read format 4 Unicode cmap. */ -static void readCmap(txCtx h, size_t offset) { - unsigned short segCount; - cmapSegment4 *segment; - cmapSegment4 *segmentEnd; +static void dcf_Help(txCtx h) { + static char *text[] = { +#include "dcf.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Check format */ - bufSeek(h, (long)offset); - switch (read2(h)) { - case 4: - break; - case 12: - readCmap12(h); - return; - default: - return; - } +static void dump_Help(txCtx h) { + static char *text[] = { +#include "dump.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Read format 4 subtable; skip length and language fields */ - (void)read2(h); /* length */ - (void)read2(h); /* language */ - - /* Read segment count and allocate */ - segCount = read2(h) / 2; - dnaSET_CNT(h->cmap.segment, segCount); - segmentEnd = &h->cmap.segment.array[segCount]; - - /* Skip binary search fields */ - (void)read2(h); /* searchRange */ - (void)read2(h); /* entrySelector */ - (void)read2(h); /* rangeShift */ - - /* Read segment arrays */ - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) - segment->endCode = read2(h); - (void)read2(h); /* Skip password */ - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) - segment->startCode = read2(h); - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) - segment->idDelta = sread2(h); - offset = h->src.next - h->src.buf + h->src.offset; - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) { - unsigned short idRangeOffset = read2(h); - segment->idRangeOffset = - (idRangeOffset == 0) ? 0 : (unsigned long)(offset + idRangeOffset); - offset += 2; - } +static void mtx_Help(txCtx h) { + static char *text[] = { +#include "mtx.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Derive mapping from segments */ - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) { - unsigned short gid; - unsigned long code; - - if (segment->idRangeOffset == 0) { - gid = segment->idDelta + segment->startCode; - for (code = segment->startCode; code <= segment->endCode; ++code) { - if (code == 0xffff || gid >= h->cmap.encoding.cnt) - break; - if (gid != 0 && h->cmap.encoding.array[gid] == ABF_GLYPH_UNENC) - h->cmap.encoding.array[gid] = (unsigned short)code; - ++gid; - } - } else { - bufSeek(h, segment->idRangeOffset); - for (code = segment->startCode; code <= segment->endCode; ++code) { - gid = read2(h); - if (code != 0xffff && gid != 0 && gid < h->cmap.encoding.cnt && - h->cmap.encoding.array[gid] == ABF_GLYPH_UNENC) - h->cmap.encoding.array[gid] = (unsigned short)code; - } - } - } +static void path_Help(txCtx h) { + static char *text[] = { +#include "path.h" + }; + printText(ARRAY_LEN(text), text); } -/* Begin new glyph definition for gathering glyph info. */ -static int otfGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - unsigned long code = h->cmap.encoding.array[info->tag]; - if (code != ABF_GLYPH_UNENC) { - info->flags |= ABF_GLYPH_UNICODE; - info->encoding.code = code; - } - return h->cb.saveGlyphBeg(cb, info); +static void pdf_Help(txCtx h) { + static char *text[] = { +#include "pdf.h" + }; + printText(ARRAY_LEN(text), text); } -/* Prepare to process OTF font. */ -static void prepOTF(txCtx h) { - long unioff; - long winoff; - unsigned short uniscore; - unsigned short winscore; - unsigned short version; - unsigned short nEncodings; - unsigned short i; - sfrTable *table; - - /* Install new callback */ - h->cb.saveGlyphBeg = h->cb.glyph.beg; - h->cb.glyph.beg = otfGlyphBeg; - h->cb.glyph.indirect_ctx = h; +static void ps_Help(txCtx h) { + static char *text[] = { +#include "ps.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Prepare encoding array */ - dnaSET_CNT(h->cmap.encoding, h->top->sup.nGlyphs); - for (i = 0; i < h->cmap.encoding.cnt; i++) - h->cmap.encoding.array[i] = ABF_GLYPH_UNENC; - - /* Get cmap table */ - table = sfrGetTableByTag(h->ctx.sfr, CTL_TAG('c', 'm', 'a', 'p')); - if (table == NULL) - fatal(h, "OTF: can't find cmap"); - - /* Force seek */ - h->src.offset = LONG_MAX; - bufSeek(h, table->offset); - - /* Read and check version */ - version = read2(h); - if (version != 0) - fatal(h, "cmap: bad version"); - - /* Search for Unicode and Windows subtables */ - unioff = 0; - uniscore = 0; - winoff = 0; - winscore = 0; - nEncodings = read2(h); - for (i = 0; i < nEncodings; i++) { - /* Read encoding entry */ - unsigned short platformId = read2(h); - unsigned short platspecId = read2(h); - unsigned long suboff = read4(h); - - /* Select table */ - switch (platformId) { - case 0: /* Unicode platform */ - if (unioff == 0 || uniscore < platspecId) { - unioff = table->offset + suboff; - uniscore = platspecId; - } - break; - case 3: /* Windows platform */ - if ((platspecId == 1 || /* Unicode */ - platspecId == 10) && /* UCS-4 */ - (winoff == 0 || winscore < platspecId)) { - winoff = table->offset + suboff; - winscore = platspecId; - } - break; - } - } +static void svg_Help(txCtx h) { + static char *text[] = { +#include "svg.h" + }; + printText(ARRAY_LEN(text), text); +} + +static void t1_Help(txCtx h) { + static char *text[] = { +#include "t1.h" + }; + printText(ARRAY_LEN(text), text); +} - if (unioff != 0) - readCmap(h, unioff); /* Prefer Unicode platform... */ - else if (winoff != 0) - readCmap(h, winoff); /* ...to Windows platform */ +static void ufo_Help(txCtx h) { + static char *text[] = { +#include "ufo.h" + }; + printText(ARRAY_LEN(text), text); } +/* ---------------------------- cffread Library ---------------------------- */ + /* Read font with cffread library. */ static void cfrReadFont(txCtx h, long origin, int ttcIndex) { if (h->cfr.ctx == NULL) { @@ -5242,607 +197,6 @@ static void cfrReadFont(txCtx h, long origin, int ttcIndex) { fatal(h, NULL); } -/* ----------------------------- ttread Library ---------------------------- */ - -/* Read font with ttread library. */ -static void ttrReadFont(txCtx h, long origin, int iTTC) { - if (h->ttr.ctx == NULL) { - h->ttr.ctx = ttrNew(&h->cb.mem, &h->cb.stm, TTR_CHECK_ARGS); - if (h->ttr.ctx == NULL) - fatal(h, "(ttr) can't init lib"); - } - - if (ttrBegFont(h->ttr.ctx, h->ttr.flags, origin, iTTC, &h->top)) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (ttrIterateGlyphs(h->ttr.ctx, &h->cb.glyph)) - fatal(h, NULL); - } - - h->dst.endfont(h); - - if (ttrEndFont(h->ttr.ctx)) - fatal(h, NULL); -} - -/* ---------------- Platform-Specific Font Wrapper Callbacks --------------- */ - -/* Prepare next segment of font data. */ -static size_t nextseg(txCtx h, char **ptr) { - size_t srcleft = h->src.end - h->src.next; - - if (srcleft == 0) { - /* Refill empty source buffer */ - fillbuf(h, h->src.offset + h->src.length); - srcleft = h->src.length; - } - - *ptr = h->src.next; - if (srcleft <= h->seg.left) { - /* Return full buffer */ - h->seg.left -= srcleft; - h->src.next += srcleft; - } else { - /* Return partial buffer */ - srcleft = h->seg.left; - h->src.next += h->seg.left; - h->seg.left = 0; - } - - return srcleft; -} - -/* Refill input buffer from PFB stream. */ -static size_t PFBRefill(txCtx h, char **ptr) { - while (h->seg.left == 0) { - /* New segment; read segment header */ - int escape = read1(h); - int type = read1(h); - - /* Check segment header */ - if (escape != 128 || (type != 1 && type != 2 && type != 3)) - fatal(h, "bad PFB segment type"); - - if (type == 3) { - /* EOF */ - *ptr = NULL; - return 0; - } else { - /* Read segment length (little endian) */ - h->seg.left = read1(h); - h->seg.left |= read1(h) << 8; - h->seg.left |= (long)read1(h) << 16; - h->seg.left |= (long)read1(h) << 24; - } - } - - return nextseg(h, ptr); -} - -/* Refill input buffer from POST resource stream. */ -static size_t POSTRefill(txCtx h, char **ptr) { - while (h->seg.left == 0) { - /* New POST resource */ - int type; - - /* Read length and type */ - h->seg.left = read4(h) - 2; - - type = read1(h); - (void)read1(h); /* Discard padding byte (not documented) */ - - /* Process resource data */ - switch (type) { - case 0: - /* Comment; skip data */ - bufSeek(h, h->src.offset + (long)h->seg.left); - h->seg.left = 0; - break; - case 1: /* ASCII */ - case 2: /* Binary */ - break; - case 3: /* End-of-file */ - case 5: /* End-of-data */ - *ptr = NULL; - return 0; - case 4: /* Data in data fork; unsupported */ - default: /* Unknown POST type */ - fatal(h, "bad POST resource type"); - } - } - - return nextseg(h, ptr); -} - -/* ----------------------------- sfnt Handling ----------------------------- */ - -/* Add font record to list. */ -static void addFont(txCtx h, int type, int iTTC, long offset) { - FontRec *rec = dnaNEXT(h->fonts); - rec->type = type; - rec->iTTC = iTTC; - rec->offset = offset; -} - -static void addTTCFont(txCtx h, int ttcIndex, long origin, long offset) { - ctlTag version; - int result; - result = sfrBegFont(h->ctx.sfr, &h->src.stm, offset, &version); - switch (result) { - case sfrSuccess: { - switch (version) { - case sfr_v1_0_tag: - case sfr_true_tag: - /* TrueType */ - addFont(h, src_TrueType, ttcIndex, origin); - break; - case sfr_OTTO_tag: - /* OTF */ - addFont(h, src_OTF, ttcIndex, origin); - break; - default: - fatal(h, "(sfr) %s", sfrErrStr(sfrErrBadSfnt)); - } - break; - case sfrErrBadSfnt: - break; - default: - fatal(h, "(sfr) %s", sfrErrStr(result)); - } - } -} - -/* Add TrueType Collection font. */ -static void addTTC(txCtx h, long origin) { - /* sfrGetNextTTCOffset() returns 0 when it is asked to get the next offset - after the last real font, so it serves effectively as a test for - iterating through all the fonts in the TTC. */ - long i; - long offset; - - if (h->arg.i != NULL) { - int j; - i = strtol(h->arg.i, NULL, 0); - if (i < 0) - fatal(h, "bad TTC index (-i)"); - - for (j = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); j++) { - if (j < i) - continue; - addTTCFont(h, i, origin, offset); - break; - } - - } else if (h->flags & EVERY_FONT) { - /* -y option; add whole collection */ - for (i = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); i++) { - addTTCFont(h, i, origin, offset); - } - } else { - /* Dump TTC index and quit */ - printf( - "### TrueType Collection (TTC)\n" - "\n" - "--- TableDirectory[index]=offset\n"); - for (i = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); i++) - printf("[%ld]=%08lx\n", i, offset); - - printf( - "\n" - "Re-run %s and select a single table in the directory\n" - "with the -i option or every table with the -y option.\n", - h->progname); - exit(1); - } -} - -/* Read 4-byte signature and try to match against sfnt. */ -static void readsfnt(txCtx h, long origin) { - /* Note that 'origin' is the offset from the file to the beginning of the - font data for either a TTC, OTF or TTF font. It is NOT the offset to an SFNT-based font - in a TTC. The sfr functions access tables in an sfnt-based font at an - offset equal to the table offset from the sfnt table directory plus the 'origin' offset. - in - */ - enum { - CID__HDR_SIZE = 4 * 4 + 3 * 2, /* 'CID ' table header size */ - TYP1_HDR_SIZE = 5 * 4 + 2 * 2 /* 'TYP1' table header size */ - }; - ctlTag version; - sfrTable *table; - int result; - - if (h->ctx.sfr == NULL) { - /* Initialize library */ - h->ctx.sfr = - sfrNew(&h->cb.mem, &h->cb.stm, SFR_CHECK_ARGS); - if (h->ctx.sfr == NULL) - fatal(h, "(sfr) can't init lib"); - } - - result = sfrBegFont(h->ctx.sfr, &h->src.stm, origin, &version); - switch (result) { - case sfrSuccess: - switch (version) { - case sfr_v1_0_tag: - case sfr_true_tag: - /* TrueType */ - addFont(h, src_TrueType, 0, origin); - break; - case sfr_OTTO_tag: - /* OTF */ - addFont(h, src_OTF, 0, origin); - break; - case sfr_typ1_tag: - /* GX or sfnt-wrapped CID font */ - table = sfrGetTableByTag(h->ctx.sfr, CID__); - if (table != NULL) - addFont(h, src_Type1, 0, table->offset + CID__HDR_SIZE); - else { - table = sfrGetTableByTag(h->ctx.sfr, TYP1_); - if (table != NULL) - addFont(h, src_Type1, 0, table->offset + TYP1_HDR_SIZE); - } - break; - case sfr_ttcf_tag: - /* TrueType Collection */ - addTTC(h, origin); - break; - } - break; - case sfrErrBadSfnt: - break; - default: - fatal(h, "(sfr) %s", sfrErrStr(result)); - } - - result = sfrEndFont(h->ctx.sfr); - if (result) - fatal(h, "(sfr) %s", sfrErrStr(result)); -} - -/* ------------------------- Macintosh Resource Map ------------------------ */ - -/* Print Macintosh resource map. */ -static void printResMap(txCtx h, long origin) { - long i; - printf( - "### Macintosh Resource Fork (%08lx)\n" - "\n" - "Type Id Attr Offset Length Name\n" - "---- ----- ---- -------- -------- --------\n", - origin); - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - printf("%c%c%c%c %5hu %02hhx %08lx %08lx %s\n", - (int)(res->type >> 24 & 0xff), (int)(res->type >> 16 & 0xff), - (int)(res->type >> 8 & 0xff), (int)(res->type & 0xff), - res->id, res->attrs, res->offset, res->length, - (res->name == 0xffff) ? "--none--" : &h->res.names.array[res->name]); - } -} - -/* Print resource map and re-run note for user and quit. */ -static void printNote(txCtx h, long origin) { - printf( - "Macintosh FFIL with multiple sfnt resources:\n" - "\n"); - printResMap(h, origin); - printf( - "\n" - "Re-run %s and select a single sfnt resource with the\n" - "-i option or every sfnt resource with the -y option.\n", - h->progname); - exit(1); -} - -/* Read and process Macintosh resource map. */ -static void doResMap(txCtx h, long origin) { - /* Macintosh resource structures */ - struct - { - unsigned long mapOffset; - } header; - struct - { - unsigned short attrs; - unsigned short typeListOffset; - unsigned short nameListOffset; - } map; -#if 0 - /* Included for reference only */ - struct - { - unsigned long type; - unsigned short cnt; - unsigned short refListOffset; - } type; - struct - { - unsigned short id; - unsigned short nameOffset; - char attrs; - char dataOffset[3]; - unsigned long reserved; - } refList; -#endif - enum { - HEADER_SIZE = 256, /* Resource header size */ - MAP_SKIP_SIZE = 16 + 4 + 2 * 2, /* Skip to typeListOffset */ - REFLIST_SKIP_SIZE = 2 * 2 + 1 /* Skip to dataOffset */ - }; - long typeListCnt; - long i; - long j; - - /* Read header (4-byte header.dataOffset already read) */ - header.mapOffset = origin + read4(h); - - /* Read map */ - bufSeek(h, header.mapOffset + MAP_SKIP_SIZE); - map.typeListOffset = read2(h); - map.nameListOffset = read2(h); - - h->res.map.cnt = 0; - - /* Read type list */ - typeListCnt = read2(h); - for (i = 0; i <= typeListCnt; i++) { - unsigned long type = read4(h); - unsigned short cnt = read2(h); - unsigned short offset = read2(h); - ResInfo *res = dnaEXTEND(h->res.map, cnt + 1); - res->type = type; - res->length = cnt; - res->offset = offset; - for (j = 1; j <= cnt; j++) - res[j].type = type; - } - - /* Read reference list */ - i = 0; - while (i < h->res.map.cnt) { - ResInfo *res = &h->res.map.array[i]; - long cnt = (long)res->length; - bufSeek(h, header.mapOffset + map.typeListOffset + res->offset); - for (j = 0; j <= cnt; j++) { - res->id = read2(h); - res->name = read2(h); - res->attrs = read1(h); - res->offset = (unsigned long)read1(h) << 16; - res->offset |= read1(h) << 8; - res->offset |= read1(h); - res->offset += HEADER_SIZE; - res->offset += origin; - (void)read4(h); - res++; - } - i += j; - } - - /* Read names */ - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - if (res->name != 0xffff) { - char *name; - int length; - bufSeek(h, header.mapOffset + map.nameListOffset + res->name); - length = read1(h); - res->name = h->res.names.cnt; - name = dnaEXTEND(h->res.names, length + 1); - readN(h, length, name); - name[length] = '\0'; - } - } - - /* Read resource data lengths */ - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - bufSeek(h, res->offset); - res->length = read4(h); - if (res->type != POST_) - res->offset += 4; - } - - /* Process resource map */ - if (h->flags & DUMP_RES) { - /* -r option; print resource map and exit */ - printResMap(h, origin); - exit(0); - } else if (h->arg.i != NULL) { - /* -i option; look for specific sfnt resource */ - unsigned short id = (unsigned short)strtol(h->arg.i, NULL, 0); - - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - if (res->type == sfnt_ && res->id == id) { - readsfnt(h, res->offset); - return; - } - } - fatal(h, "resource not found"); - } else { - /* Look for sfnt/POST resources */ - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - switch (res->type) { - case sfnt_: - if (h->flags & EVERY_FONT) - /* -y option; add sfnt */ - readsfnt(h, res->offset); - else if (i + 1 == h->res.map.cnt || - h->res.map.array[i + 1].type != sfnt_) { - /* Singleton sfnt resource */ - readsfnt(h, res->offset); - return; - } else - /* Multiple sfnt resources; print note */ - printNote(h, origin); - break; - case POST_: - h->seg.refill = POSTRefill; - addFont(h, src_Type1, 0, res->offset); - return; - } - } - } -} - -/* ----------------------- AppleSingle/Double Formats ---------------------- */ - -/* Process AppleSingle/Double format data. */ -static void doASDFormats(txCtx h, ctlTag magic) { - char junk[16]; - long i; - - h->asd.magic = magic; - h->asd.version = read4(h); - - /* Skip filler */ - readN(h, sizeof(junk), junk); - - /* Read number of entries */ - dnaSET_CNT(h->asd.entries, read2(h)); - - /* Read entry descriptors */ - for (i = 0; i < h->asd.entries.cnt; i++) { - EntryDesc *entry = &h->asd.entries.array[i]; - entry->id = read4(h); - entry->offset = read4(h); - entry->length = read4(h); - } - - if (h->flags & DUMP_ASD) { - /* -R option; print AppleSingle/Double data */ - printf( - "### %s Format, Version %1.1f\n" - "\n", - (h->asd.magic == sig_AppleSingle) ? "AppleSingle" : "AppleDouble", - h->asd.version / 65536.0); - - printf( - "Id Offset Length Description\n" - "-- -------- -------- -------------\n"); - - for (i = 0; i < h->asd.entries.cnt; i++) { - static char *desc[] = - { - /* 00 */ "--unknown--", - /* 01 */ "Data Fork", - /* 02 */ "Resource Fork", - /* 03 */ "Real Name", - /* 04 */ "Comment", - /* 05 */ "Icon, B&W", - /* 06 */ "Icon, Color", - /* 07 */ "File Info (old format)", - /* 08 */ "File Dates Info", - /* 09 */ "Finder Info", - /* 10 */ "Macintosh File Info", - /* 11 */ "ProDOS File Info", - /* 12 */ "MS-DOS File Info", - /* 13 */ "Short Name", - /* 14 */ "AFP File Info", - /* 15 */ "Directory ID", - }; - EntryDesc *entry = &h->asd.entries.array[i]; - printf("%02lx %08lx %08lx %s\n", - entry->id, entry->offset, entry->length, - (entry->id < ARRAY_LEN(desc)) ? desc[entry->id] : "--unknown--"); - } - exit(0); - } else - for (i = 0; i < h->asd.entries.cnt; i++) { - EntryDesc *entry = &h->asd.entries.array[i]; - if (entry->length > 0) - switch (entry->id) { - case 1: - /* Data fork (AppleSingle); see if it's an sfnt */ - readsfnt(h, entry->offset); - break; - case 2: - /* Resource fork (AppleSingle/Double) */ - bufSeek(h, entry->offset + 4); - doResMap(h, entry->offset); - break; - } - } -} - -/* Scan source file for fonts and build font list. */ -static void buildFontList(txCtx h) { - ctlTag sig; - int fillErr = 0; - h->fonts.cnt = 0; - - /* Initialize segment */ - h->seg.refill = NULL; - - if (h->src.stm.fp == NULL) { - /* We get here only if h->file.src is a directory. Check if it is UFO font */ - char tempFileName[FILENAME_MAX]; - FILE *tempFP; - sprintf(tempFileName, "%s/glyphs/contents.plist", h->file.src); - tempFP = fopen(tempFileName, "rt"); - if (tempFP != NULL) { - // it is a ufo font! - fclose(tempFP); - addFont(h, src_UFO, 0, 0); - } else { - fileError(h, h->src.stm.filename); - } - } else { - /* Read first buffer */ - fillbuf(h, 0); - /* Make 2-byte signature */ - sig = (ctlTag)read1(h) << 24; - sig |= (ctlTag)read1(h) << 16; - - switch (sig) { - case sig_PostScript0: - case sig_PostScript1: - case sig_PostScript2: - addFont(h, src_Type1, 0, 0); - break; - case sig_PFB: - h->seg.refill = PFBRefill; - addFont(h, src_Type1, 0, 0); - break; - case sig_CFF: - addFont(h, src_CFF, 0, 0); - break; - default: - /* Make 4-byte signature */ - sig |= read1(h) << 8; - sig |= read1(h); - switch (sig) { - case sig_MacResource: - doResMap(h, 0); - break; - case sig_AppleSingle: - case sig_AppleDouble: - doASDFormats(h, sig); - break; - default: - readsfnt(h, 0); - } - } - - if (h->fonts.cnt == 0) { - if ((0 == strncmp(h->src.buf, "src.buf, "fonts.cnt == 0) - fatal(h, "bad font file: %s", h->src.stm.filename); -} - /* ----------------------------- Usage and Help ---------------------------- */ /* Print usage information. */ @@ -5982,7 +336,7 @@ static void addArgs(txCtx h, char *filename) { } /* Get version callback function. */ -static void getversion(ctlVersionCallbacks *cb, long version, char *libname) { +static void getversion(ctlVersionCallbacks *cb, int version, char *libname) { char version_buf[MAX_VERSION_SIZE]; printf(" %-10s%s\n", libname, CTL_SPLIT_VERSION(version_buf, version)); } @@ -6020,58 +374,6 @@ static void printVersions(txCtx h) { exit(0); } -/* Setup new mode. */ -static void setMode(txCtx h, int mode) { - /* Initialize files */ - h->file.sr = NULL; - h->file.sd = NULL; - h->file.dd = NULL; - strcpy(h->file.src, "-"); - strcpy(h->file.dst, "-"); - - /* Begin new mode */ - switch (mode) { - case mode_dump: - dump_SetMode(h); - break; - case mode_ps: - ps_SetMode(h); - break; - case mode_afm: - afm_SetMode(h); - break; - case mode_path: - path_SetMode(h); - break; - case mode_cff: - cff_SetMode(h); - break; - case mode_cef: - cef_SetMode(h); - break; - case mode_pdf: - pdf_SetMode(h); - break; - case mode_mtx: - mtx_SetMode(h); - break; - case mode_t1: - t1_SetMode(h); - break; - case mode_svg: - svg_SetMode(h); - break; - case mode_ufow: - ufo_SetMode(h); - break; - case mode_dcf: - dcf_SetMode(h); - break; - } - - h->flags |= SEEN_MODE; -} - /* Match options. */ static int CTL_CDECL matchOpts(const void *key, const void *value) { return strcmp((char *)key, *(char **)value); @@ -6144,11 +446,12 @@ static void scaleDicts(abfTopDict *top, float invScaleFactor) { static void rotateEndFont(txCtx h) { abfTopDict *top = h->top; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; float FontBBox[8]; float tempArrray[14]; float *topFontBBox = top->FontBBox; - int i, j, cnt, tempCnt; + int i, j; + long cnt, tempCnt; /* restore matrix values */ for (i = 0; i < 6; i++) @@ -6181,7 +484,7 @@ static void rotateEndFont(txCtx h) { /* Rotation is not a multiple of 90 degrees. We need to examine the other two corners of the fontBBox to see if they now define new maxima/minima */ - if (!(h->rotateInfo.flags & ROTATE_KEEP_HINTS)) { + if (!(rotateInfo->flags & ROTATE_KEEP_HINTS)) { FontBBox[4] = TX(topFontBBox[0], topFontBBox[3]); FontBBox[5] = TY(topFontBBox[0], topFontBBox[3]); FontBBox[6] = TX(topFontBBox[2], topFontBBox[1]); @@ -6383,7 +686,7 @@ static void rotateEndFont(txCtx h) { } } - h->rotateInfo.endfont(h); /* call original h->dst.endfont */ + rotateInfo->endfont(h); /* call original h->dst.endfont */ } static int CTL_CDECL matchRGE(const void *key, const void *value) { @@ -6399,7 +702,7 @@ static int CTL_CDECL matchRGE(const void *key, const void *value) { static int rotate_beg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { txCtx h = cb->indirect_ctx; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; long srcCID = info->cid; char *srcName = info->gname.ptr; RotateGlyphEntry *rge; @@ -6433,11 +736,11 @@ static int rotate_beg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { static void rotate_width(abfGlyphCallbacks *cb, float hAdv) { txCtx h = cb->indirect_ctx; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; int seenRGEVal = 0; - if (h->rotateInfo.curRGE != NULL) { - float tmp = (float)h->rotateInfo.curRGE->hAdv; + if (rotateInfo->curRGE != NULL) { + float tmp = (float)rotateInfo->curRGE->hAdv; if (tmp != kHADV_NOT_SPECIFIED) { hAdv = tmp; seenRGEVal = 1; @@ -6456,7 +759,7 @@ static void rotate_width(abfGlyphCallbacks *cb, float hAdv) { static void rotate_move(abfGlyphCallbacks *cb, float x0, float y0) { float x, y; txCtx h = cb->indirect_ctx; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; x = TX(x0, y0); y = TY(x0, y0); rotateInfo->savedGlyphCB.move(&rotateInfo->savedGlyphCB, x, y); @@ -6465,7 +768,7 @@ static void rotate_move(abfGlyphCallbacks *cb, float x0, float y0) { static void rotate_line(abfGlyphCallbacks *cb, float x1, float y1) { float x, y; txCtx h = cb->indirect_ctx; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; x = TX(x1, y1); y = TY(x1, y1); rotateInfo->savedGlyphCB.line(&rotateInfo->savedGlyphCB, x, y); @@ -6477,11 +780,11 @@ static void rotate_curve(abfGlyphCallbacks *cb, float x3, float y3) { float xn1, yn1, xn2, yn2, xn3, yn3; txCtx h = cb->indirect_ctx; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; xn1 = TX(x1, y1); - yn1 = TY(x1, y1), + yn1 = TY(x1, y1); xn2 = TX(x2, y2); - yn2 = TY(x2, y2), + yn2 = TY(x2, y2); xn3 = TX(x3, y3); yn3 = TY(x3, y3); @@ -6491,7 +794,7 @@ static void rotate_curve(abfGlyphCallbacks *cb, static void rotate_stem(abfGlyphCallbacks *cb, int flags, float edge0, float edge1) { txCtx h = cb->indirect_ctx; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; float *farray = rotateInfo->curMatrix; float temp = edge0; float offset, scale; @@ -6585,7 +888,7 @@ static void rotate_flex(abfGlyphCallbacks *cb, float depth, float x6, float y6) { float xn1, yn1, xn2, yn2, xn3, yn3, xn4, yn4, xn5, yn5, xn6, yn6; txCtx h = cb->indirect_ctx; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; xn1 = TX(x1, y1); yn1 = TY(x1, y1); xn2 = TX(x2, y2); @@ -6610,20 +913,20 @@ static void rotate_flex(abfGlyphCallbacks *cb, float depth, static void rotate_genop(abfGlyphCallbacks *cb, int cnt, float *args, int op) { txCtx h = cb->indirect_ctx; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; rotateInfo->savedGlyphCB.genop(&rotateInfo->savedGlyphCB, cnt, args, op); } static void rotate_seac(abfGlyphCallbacks *cb, float adx, float ady, int bchar, int achar) { txCtx h = cb->indirect_ctx; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; rotateInfo->savedGlyphCB.seac(&rotateInfo->savedGlyphCB, adx, ady, bchar, achar); } static void rotate_end(abfGlyphCallbacks *cb) { txCtx h = cb->indirect_ctx; - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; rotateInfo->savedGlyphCB.end(&rotateInfo->savedGlyphCB); } @@ -6639,7 +942,7 @@ static int CTL_CDECL cmpRGE(const void *first, const void *second) { } static void rotateLoadGlyphList(txCtx h, char *filePath) { - RotateInfo *rotateInfo = &h->rotateInfo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; int namesAreCID = -1; FILE *rtf_fp; char lineBuffer[MAX_PS_NAMELEN * 2]; @@ -6712,14 +1015,15 @@ static void rotateLoadGlyphList(txCtx h, char *filePath) { } static void setupRotationCallbacks(txCtx h) { - h->rotateInfo.savedGlyphCB = h->cb.glyph; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; + rotateInfo->savedGlyphCB = h->cb.glyph; h->cb.glyph.indirect_ctx = h; h->cb.glyph.beg = rotate_beg; h->cb.glyph.width = rotate_width; h->cb.glyph.move = rotate_move; h->cb.glyph.line = rotate_line; h->cb.glyph.curve = rotate_curve; - if ((h->rotateInfo.flags & ROTATE_KEEP_HINTS) || (h->rotateInfo.origMatrix[1] == 0)) /* rotation is some mulitple of 90 degrees */ + if ((rotateInfo->flags & ROTATE_KEEP_HINTS) || (rotateInfo->origMatrix[1] == 0)) /* rotation is some mulitple of 90 degrees */ { h->cb.glyph.stem = rotate_stem; h->cb.glyph.flex = rotate_flex; @@ -6730,14 +1034,15 @@ static void setupRotationCallbacks(txCtx h) { h->cb.glyph.genop = rotate_genop; h->cb.glyph.seac = rotate_seac; h->cb.glyph.end = rotate_end; - h->rotateInfo.endfont = h->dst.endfont; + rotateInfo->endfont = h->dst.endfont; h->dst.endfont = rotateEndFont; - if (h->rotateInfo.rtFile[0] != 0) - rotateLoadGlyphList(h, h->rotateInfo.rtFile); + if (rotateInfo->rtFile[0] != 0) + rotateLoadGlyphList(h, rotateInfo->rtFile); } -static int setRotationMatrix(txCtx h, int argc, char **argv, int i, boolean isMatrix) { - float *farray = h->rotateInfo.origMatrix; +static int setRotationMatrix(txCtx h, int argc, char **argv, int i, bool isMatrix) { + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; + float *farray = rotateInfo->origMatrix; char *arg = argv[i]; int j; /* arguments may be either "degrees xoffset yoffset" or the full 6 valued font transform matrix */ @@ -6794,29 +1099,29 @@ static int setRotationMatrix(txCtx h, int argc, char **argv, int i, boolean isMa } i += 2; } - h->rotateInfo.flags |= ROTATE_MATRIX_SET; + rotateInfo->flags |= ROTATE_MATRIX_SET; if (((farray[0] == 0) && (farray[3] == 0)) || ((farray[1] == 0) && (farray[2] == 0))) { - h->rotateInfo.flags |= ROTATE_KEEP_HINTS; /* this is a rotation by some multiple of 90 degrees */ + rotateInfo->flags |= ROTATE_KEEP_HINTS; /* this is a rotation by some multiple of 90 degrees */ if ((farray[0] < 0.0) && (farray[3] < 0.0)) - h->rotateInfo.flags |= ROTATE_180; + rotateInfo->flags |= ROTATE_180; else if ((farray[0] > 0.0) && (farray[3] > 0.0)) - h->rotateInfo.flags |= ROTATE_0; + rotateInfo->flags |= ROTATE_0; else if ((farray[1] < 0.0) && (farray[2] > 0.0)) /* 90 degrees.*/ - h->rotateInfo.flags |= ROTATE_90; + rotateInfo->flags |= ROTATE_90; else if ((farray[1] > 0.0) && (farray[2] < 0)) /* -90 degrees.*/ - h->rotateInfo.flags |= ROTATE_270; + rotateInfo->flags |= ROTATE_270; } - if (!(h->rotateInfo.flags & ROT_OVERRIDE_WIDTH_FLAGS)) { + if (!(rotateInfo->flags & ROT_OVERRIDE_WIDTH_FLAGS)) { if (farray[1] == 0) - h->rotateInfo.flags |= ROT_TRANSFORM_WIDTHS; /* transform widths for no rotation, 180 mirror, or shearing */ + rotateInfo->flags |= ROT_TRANSFORM_WIDTHS; /* transform widths for no rotation, 180 mirror, or shearing */ else - h->rotateInfo.flags |= ROT_SET_WIDTH_EM; + rotateInfo->flags |= ROT_SET_WIDTH_EM; } for (j = 0; j < 6; j++) - h->rotateInfo.curMatrix[j] = h->rotateInfo.origMatrix[j]; + rotateInfo->curMatrix[j] = rotateInfo->origMatrix[j]; return i; } @@ -6827,6 +1132,7 @@ static void doFile(txCtx h, char *srcname) { char *p; struct stat fileStat; int statErrNo; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; /* Set src name */ if (h->file.sr != NULL) { @@ -6884,7 +1190,7 @@ static void doFile(txCtx h, char *srcname) { } /* insert the rotation call-backs. */ - if (h->rotateInfo.flags & ROTATE_MATRIX_SET) + if (rotateInfo->flags & ROTATE_MATRIX_SET) setupRotationCallbacks(h); /* Process font according to type */ @@ -6994,11 +1300,11 @@ static int doAutoFileSet(txCtx h, int argc, char *argv[], int i) { return i - 1; } - /* Parse argument list. */ static void parseArgs(txCtx h, int argc, char *argv[]) { int i; char *arg; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; h->t1r.flags = 0; /* I initialize these here,as I need to set the std Encoding flags before calling setMode. */ h->cfr.flags = 0; @@ -7074,27 +1380,27 @@ static void parseArgs(txCtx h, int argc, char *argv[]) { h->ufr.altLayerDir = argv[++i]; break; case opt_row: - h->rotateInfo.flags |= ROT_OVERRIDE_WIDTH_FLAGS; + rotateInfo->flags |= ROT_OVERRIDE_WIDTH_FLAGS; break; case opt_rtw: - h->rotateInfo.flags |= ROT_OVERRIDE_WIDTH_FLAGS; - h->rotateInfo.flags |= ROT_TRANSFORM_WIDTHS; + rotateInfo->flags |= ROT_OVERRIDE_WIDTH_FLAGS; + rotateInfo->flags |= ROT_TRANSFORM_WIDTHS; break; case opt_rew: - h->rotateInfo.flags |= ROT_OVERRIDE_WIDTH_FLAGS; - h->rotateInfo.flags |= ROT_SET_WIDTH_EM; + rotateInfo->flags |= ROT_OVERRIDE_WIDTH_FLAGS; + rotateInfo->flags |= ROT_SET_WIDTH_EM; break; case opt_rt: - if (h->rotateInfo.flags & ROTATE_MATRIX_SET) + if (rotateInfo->flags & ROTATE_MATRIX_SET) fatal(h, "-rt option must preceed -rtf option, and cannot be specified twice or with -matrix"); i = setRotationMatrix(h, argc, argv, ++i, 0); break; case opt_rtf: if (!argsleft) goto noarg; - strcpy(h->rotateInfo.rtFile, argv[++i]); - if (!(h->rotateInfo.flags & ROTATE_MATRIX_SET)) { - float *farray = h->rotateInfo.origMatrix; + strcpy(rotateInfo->rtFile, argv[++i]); + if (!(rotateInfo->flags & ROTATE_MATRIX_SET)) { + float *farray = rotateInfo->origMatrix; int j; farray[0] = 1.0; farray[1] = 0; @@ -7103,14 +1409,14 @@ static void parseArgs(txCtx h, int argc, char *argv[]) { farray[4] = 0; farray[5] = 0; for (j = 0; j < 6; j++) - h->rotateInfo.curMatrix[j] = h->rotateInfo.origMatrix[j]; - h->rotateInfo.flags |= ROTATE_MATRIX_SET; - h->rotateInfo.flags |= ROTATE_KEEP_HINTS; - h->rotateInfo.flags |= ROTATE_0; + rotateInfo->curMatrix[j] = rotateInfo->origMatrix[j]; + rotateInfo->flags |= ROTATE_MATRIX_SET; + rotateInfo->flags |= ROTATE_KEEP_HINTS; + rotateInfo->flags |= ROTATE_0; } break; case opt_matrix: - if (h->rotateInfo.flags & ROTATE_MATRIX_SET) + if (rotateInfo->flags & ROTATE_MATRIX_SET) fatal(h, "-matrix option must preceed -rtf option, and cannot be specified twice or with -rt"); i = setRotationMatrix(h, argc, argv, ++i, 1); break; @@ -7897,12 +2203,13 @@ static void initLocal(void *ctx, long cnt, SubrInfo *info) { /* Initialize context. */ static void txNew(txCtx h, char *progname) { ctlMemoryCallbacks cb; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; h->progname = progname; h->flags = 0; - h->rotateInfo.flags = 0; - h->rotateInfo.rtFile[0] = 0; - h->rotateInfo.curRGE = NULL; + rotateInfo->flags = 0; + rotateInfo->rtFile[0] = 0; + rotateInfo->curRGE = NULL; h->script.buf = NULL; h->arg.p = NULL; @@ -7945,7 +2252,7 @@ static void txNew(txCtx h, char *progname) { h->failmem.iCall = 0; /* Reset call index */ - dnaINIT(h->ctx.dna, h->rotateInfo.rotateGlyphEntries, 256, 768); + dnaINIT(h->ctx.dna, rotateInfo->rotateGlyphEntries, 256, 768); dnaINIT(h->ctx.dna, h->src.glyphs, 256, 768); dnaINIT(h->ctx.dna, h->src.exclude, 256, 768); dnaINIT(h->ctx.dna, h->src.widths, 256, 768); @@ -7978,9 +2285,10 @@ static void txNew(txCtx h, char *progname) { /* Free context. */ static void txFree(txCtx h) { long i; + RotateInfo *rotateInfo = (RotateInfo *)h->appSpecificInfo; memFree(h, h->script.buf); - dnaFREE(h->rotateInfo.rotateGlyphEntries); + dnaFREE(rotateInfo->rotateGlyphEntries); dnaFREE(h->src.glyphs); dnaFREE(h->src.exclude); dnaFREE(h->src.widths); @@ -8029,6 +2337,7 @@ static void txFree(txCtx h) { /* Don't close debug streams because they use stderr */ dnaFree(h->ctx.dna); + free(h->appSpecificInfo); free(h); } @@ -8061,6 +2370,17 @@ int CTL_CDECL main(int argc, char *argv[]) { } memset(h, 0, sizeof(struct txCtx_)); + + h->app = APP_ROTATEFONT; + h->appSpecificInfo = malloc(sizeof(RotateInfo)); + if (h == NULL) { + fprintf(stderr, "%s: out of memory\n", progname); + exit(1); + } + memset(h->appSpecificInfo, 0, sizeof(RotateInfo)); + + h->appSpecificFree = txFree; + txNew(h, progname); if (argc > 1 && getOptionIndex(argv[argc - 2]) == opt_s) { @@ -8074,7 +2394,7 @@ int CTL_CDECL main(int argc, char *argv[]) { /* Add args from script file */ addArgs(h, argv[argc - 1]); - parseArgs(h, h->script.args.cnt, h->script.args.array); + parseArgs(h, (int)h->script.args.cnt, h->script.args.array); } else parseArgs(h, argc, argv); diff --git a/c/sfntdiff/build/win/visualstudio/sfntdiff.vcxproj b/c/sfntdiff/build/win/visualstudio/sfntdiff.vcxproj old mode 100755 new mode 100644 diff --git a/c/sfntedit/build/win/visualstudio/sfntedit.vcxproj b/c/sfntedit/build/win/visualstudio/sfntedit.vcxproj old mode 100755 new mode 100644 diff --git a/c/spot/build/linux/gcc/debug/Makefile b/c/spot/build/linux/gcc/debug/Makefile index c7ac4ced9..aec88dc52 100755 --- a/c/spot/build/linux/gcc/debug/Makefile +++ b/c/spot/build/linux/gcc/debug/Makefile @@ -61,7 +61,6 @@ PRG_SRCS = $(SRC_DIR)/BASE.c \ $(SRC_DIR)/main.c \ $(SRC_DIR)/map.c \ $(SRC_DIR)/maxp.c \ - $(SRC_DIR)/memcheck.c \ $(SRC_DIR)/name.c \ $(SRC_DIR)/opt.c \ $(SRC_DIR)/pathbuild.c \ @@ -132,8 +131,6 @@ PRG_INCLUDES = $(SRC_DIR)/BASE.h \ $(SRC_DIR)/loca.h \ $(SRC_DIR)/map.h \ $(SRC_DIR)/maxp.h \ - $(SRC_DIR)/memcheck.h \ - $(SRC_DIR)/name.h \ $(SRC_DIR)/nicename.h \ $(SRC_DIR)/numtypes.h \ $(SRC_DIR)/opt.h \ @@ -202,7 +199,6 @@ PRG_OBJS = $(OBJECT_DIR)/BASE.o \ $(OBJECT_DIR)/main.o \ $(OBJECT_DIR)/map.o \ $(OBJECT_DIR)/maxp.o \ - $(OBJECT_DIR)/memcheck.o \ $(OBJECT_DIR)/name.o \ $(OBJECT_DIR)/opt.o \ $(OBJECT_DIR)/pathbuild.o \ @@ -360,9 +356,6 @@ $(OBJECT_DIR)/map.o: $(SRC_DIR)/map.c $(PRG_INCLUDES) $(OBJECT_DIR)/maxp.o: $(SRC_DIR)/maxp.c $(PRG_INCLUDES) $(CC) $(CFLAGS) -c $(SRC_DIR)/maxp.c -o $(OBJECT_DIR)/maxp.o -$(OBJECT_DIR)/memcheck.o: $(SRC_DIR)/memcheck.c $(PRG_INCLUDES) - $(CC) $(CFLAGS) -c $(SRC_DIR)/memcheck.c -o $(OBJECT_DIR)/memcheck.o - $(OBJECT_DIR)/name.o: $(SRC_DIR)/name.c $(PRG_INCLUDES) $(CC) $(CFLAGS) -c $(SRC_DIR)/name.c -o $(OBJECT_DIR)/name.o diff --git a/c/spot/build/linux/gcc/release/Makefile b/c/spot/build/linux/gcc/release/Makefile index c58627144..c37e4b0b7 100755 --- a/c/spot/build/linux/gcc/release/Makefile +++ b/c/spot/build/linux/gcc/release/Makefile @@ -61,7 +61,6 @@ PRG_SRCS = $(SRC_DIR)/BASE.c \ $(SRC_DIR)/main.c \ $(SRC_DIR)/map.c \ $(SRC_DIR)/maxp.c \ - $(SRC_DIR)/memcheck.c \ $(SRC_DIR)/name.c \ $(SRC_DIR)/opt.c \ $(SRC_DIR)/pathbuild.c \ @@ -132,7 +131,6 @@ PRG_INCLUDES = $(SRC_DIR)/BASE.h \ $(SRC_DIR)/loca.h \ $(SRC_DIR)/map.h \ $(SRC_DIR)/maxp.h \ - $(SRC_DIR)/memcheck.h \ $(SRC_DIR)/name.h \ $(SRC_DIR)/nicename.h \ $(SRC_DIR)/numtypes.h \ @@ -202,7 +200,6 @@ PRG_OBJS = $(OBJECT_DIR)/BASE.o \ $(OBJECT_DIR)/main.o \ $(OBJECT_DIR)/map.o \ $(OBJECT_DIR)/maxp.o \ - $(OBJECT_DIR)/memcheck.o \ $(OBJECT_DIR)/name.o \ $(OBJECT_DIR)/opt.o \ $(OBJECT_DIR)/pathbuild.o \ @@ -360,9 +357,6 @@ $(OBJECT_DIR)/map.o: $(SRC_DIR)/map.c $(PRG_INCLUDES) $(OBJECT_DIR)/maxp.o: $(SRC_DIR)/maxp.c $(PRG_INCLUDES) $(CC) $(CFLAGS) -c $(SRC_DIR)/maxp.c -o $(OBJECT_DIR)/maxp.o -$(OBJECT_DIR)/memcheck.o: $(SRC_DIR)/memcheck.c $(PRG_INCLUDES) - $(CC) $(CFLAGS) -c $(SRC_DIR)/memcheck.c -o $(OBJECT_DIR)/memcheck.o - $(OBJECT_DIR)/name.o: $(SRC_DIR)/name.c $(PRG_INCLUDES) $(CC) $(CFLAGS) -c $(SRC_DIR)/name.c -o $(OBJECT_DIR)/name.o diff --git a/c/spot/build/osx/xcode/spot.xcodeproj/project.pbxproj b/c/spot/build/osx/xcode/spot.xcodeproj/project.pbxproj index f904f0253..3165bf985 100644 --- a/c/spot/build/osx/xcode/spot.xcodeproj/project.pbxproj +++ b/c/spot/build/osx/xcode/spot.xcodeproj/project.pbxproj @@ -42,7 +42,6 @@ BD5262E20CF2B52F0052C7B8 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = BD5262560CF2B52F0052C7B8 /* main.c */; }; BD5262E30CF2B52F0052C7B8 /* map.c in Sources */ = {isa = PBXBuildFile; fileRef = BD5262570CF2B52F0052C7B8 /* map.c */; }; BD5262E50CF2B52F0052C7B8 /* maxp.c in Sources */ = {isa = PBXBuildFile; fileRef = BD5262590CF2B52F0052C7B8 /* maxp.c */; }; - BD5262E70CF2B52F0052C7B8 /* memcheck.c in Sources */ = {isa = PBXBuildFile; fileRef = BD52625B0CF2B52F0052C7B8 /* memcheck.c */; }; BD5262E90CF2B52F0052C7B8 /* META.c in Sources */ = {isa = PBXBuildFile; fileRef = BD52625D0CF2B52F0052C7B8 /* META.c */; }; BD5262EB0CF2B52F0052C7B8 /* MMFX.c in Sources */ = {isa = PBXBuildFile; fileRef = BD52625F0CF2B52F0052C7B8 /* MMFX.c */; }; BD5262ED0CF2B52F0052C7B8 /* MMSD.c in Sources */ = {isa = PBXBuildFile; fileRef = BD5262610CF2B52F0052C7B8 /* MMSD.c */; }; @@ -149,8 +148,6 @@ BD5262580CF2B52F0052C7B8 /* map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = map.h; path = ../../../source/map.h; sourceTree = SOURCE_ROOT; }; BD5262590CF2B52F0052C7B8 /* maxp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = maxp.c; path = ../../../source/maxp.c; sourceTree = SOURCE_ROOT; }; BD52625A0CF2B52F0052C7B8 /* maxp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = maxp.h; path = ../../../source/maxp.h; sourceTree = SOURCE_ROOT; }; - BD52625B0CF2B52F0052C7B8 /* memcheck.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = memcheck.c; path = ../../../source/memcheck.c; sourceTree = SOURCE_ROOT; }; - BD52625C0CF2B52F0052C7B8 /* memcheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = memcheck.h; path = ../../../source/memcheck.h; sourceTree = SOURCE_ROOT; }; BD52625D0CF2B52F0052C7B8 /* META.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = META.c; path = ../../../source/META.c; sourceTree = SOURCE_ROOT; }; BD52625E0CF2B52F0052C7B8 /* META.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = META.h; path = ../../../source/META.h; sourceTree = SOURCE_ROOT; }; BD52625F0CF2B52F0052C7B8 /* MMFX.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MMFX.c; path = ../../../source/MMFX.c; sourceTree = SOURCE_ROOT; }; @@ -314,8 +311,6 @@ BD5262580CF2B52F0052C7B8 /* map.h */, BD5262590CF2B52F0052C7B8 /* maxp.c */, BD52625A0CF2B52F0052C7B8 /* maxp.h */, - BD52625B0CF2B52F0052C7B8 /* memcheck.c */, - BD52625C0CF2B52F0052C7B8 /* memcheck.h */, BD52625D0CF2B52F0052C7B8 /* META.c */, BD52625E0CF2B52F0052C7B8 /* META.h */, BD52625F0CF2B52F0052C7B8 /* MMFX.c */, @@ -480,7 +475,6 @@ BD5262E20CF2B52F0052C7B8 /* main.c in Sources */, BD5262E30CF2B52F0052C7B8 /* map.c in Sources */, BD5262E50CF2B52F0052C7B8 /* maxp.c in Sources */, - BD5262E70CF2B52F0052C7B8 /* memcheck.c in Sources */, BD5262E90CF2B52F0052C7B8 /* META.c in Sources */, BD5262EB0CF2B52F0052C7B8 /* MMFX.c in Sources */, BD5262ED0CF2B52F0052C7B8 /* MMSD.c in Sources */, diff --git a/c/spot/build/win/visualstudio/spot.sln b/c/spot/build/win/visualstudio/spot.sln old mode 100755 new mode 100644 diff --git a/c/spot/build/win/visualstudio/spot.vcxproj b/c/spot/build/win/visualstudio/spot.vcxproj old mode 100755 new mode 100644 index 9def9d9b8..ef76d9a77 --- a/c/spot/build/win/visualstudio/spot.vcxproj +++ b/c/spot/build/win/visualstudio/spot.vcxproj @@ -189,7 +189,6 @@ - diff --git a/c/spot/source/GPOS.c b/c/spot/source/GPOS.c index 99e911d04..02a8b3e1d 100644 --- a/c/spot/source/GPOS.c +++ b/c/spot/source/GPOS.c @@ -1010,20 +1010,57 @@ static Byte8 *dumpTitle(Card32 tag, IntX flavor) { if (tag == 0) { return ("GPOS table features "); - } else if (tag == (STR2TAG("altv"))) - return ("altv (Alternate vertical metrics)"); + } else if (tag == (STR2TAG("abvm"))) + return ("abvm (Above-base Mark Positioning)"); + else if (tag == (STR2TAG("blwm"))) + return ("blwm (Below-base Mark Positioning)"); else if (tag == (STR2TAG("case"))) - return ("case (Case-sensitive positioning)"); + return ("case (Case-Sensitive Forms)"); else if (tag == (STR2TAG("cpct"))) - return ("cpct (Centered punctuation)"); + return ("cpct (Centered CJK Punctuation)"); else if (tag == (STR2TAG("cpsp"))) - return ("cpsp (Capitals spacing)"); + return ("cpsp (Capital Spacing)"); + else if (tag == (STR2TAG("curs"))) + return ("curs (Cursive Positioning)"); + else if (tag == (STR2TAG("dist"))) + return ("dist (Distances)"); + else if (tag == (STR2TAG("fwid"))) + return ("fwid (Full Widths)"); else if (tag == (STR2TAG("halt"))) - return ("halt (Alternate Half-width metrics)"); + return ("halt (Alternate Half Widths)"); else if (tag == (STR2TAG("hwid"))) - return ("hwid (Half-width metrics)"); + return ("hwid (Half Widths)"); else if (tag == (STR2TAG("lfbd"))) - return ("lfbd (Left-bounds positioning)"); + return ("lfbd (Left Bounds)"); + else if (tag == (STR2TAG("mark"))) + return ("mark (Mark Positioning)"); + else if (tag == (STR2TAG("mkmk"))) + return ("mkmk (Mark to Mark Positioning)"); + else if (tag == (STR2TAG("opbd"))) + return ("opbd (Optical Bounds)"); + else if (tag == (STR2TAG("palt"))) + return ("palt (Proportional Alternate Widths)"); + else if (tag == (STR2TAG("pwid"))) + return ("pwid (Proportional Widths)"); + else if (tag == (STR2TAG("qwid"))) + return ("qwid (Quarter Widths)"); + else if (tag == (STR2TAG("rtbd"))) + return ("rtbd (Right Bounds)"); + else if (tag == (STR2TAG("subs"))) + return ("subs (Subscript)"); + else if (tag == (STR2TAG("sups"))) + return ("sups (Superscript)"); + else if (tag == (STR2TAG("size"))) + return ("size (Optical Size)"); + else if (tag == (STR2TAG("twid"))) + return ("twid (Third Widths)"); + else if (tag == (STR2TAG("valt"))) + return ("valt (Alternate Vertical Metrics)"); + else if (tag == (STR2TAG("vhal"))) + return ("vhal (Alternate Vertical Half Metrics)"); + else if (tag == (STR2TAG("vpal"))) + return ("vpal (Proportional Alternate Vertical Metrics)"); + else if (tag == (STR2TAG("kern"))) { if (flavor == 1) { if (proofIsAltKanjiKern()) @@ -1041,38 +1078,8 @@ static Byte8 *dumpTitle(Card32 tag, IntX flavor) { else return ("kern"); } - } else if (tag == (STR2TAG("mark"))) - return ("mark (Mark positioning)"); - else if (tag == (STR2TAG("opbd"))) - return ("opbd (Optical bounds positioning)"); - else if (tag == (STR2TAG("palt"))) - return ("palt (Alternate Proportional-width metrics)"); - else if (tag == (STR2TAG("pwid"))) - return ("pwid (Proportional-width metrics)"); - else if (tag == (STR2TAG("qwid"))) - return ("qwid (Quarter-width metrics)"); - else if (tag == (STR2TAG("rtbd"))) - return ("rtbd (Right-bounds positioning)"); - else if (tag == (STR2TAG("subs"))) - return ("subs (Subscript positioning)"); - else if (tag == (STR2TAG("twid"))) - return ("twid (Third-width metrics)"); - else if (tag == (STR2TAG("valt"))) - return ("valt (Alternate vertical metrics)"); - else if (tag == (STR2TAG("vhal"))) - return ("vhal (Vertical alternate Half-width metrics)"); - else if (tag == (STR2TAG("mkmk"))) - return ("mkmk (Mark to Mark Positioning)"); - else if (tag == (STR2TAG("dist"))) - return ("dist (Distances )"); - else if (tag == (STR2TAG("abvm"))) - return ("abvm (Above-base Mark Positioning)"); - else if (tag == (STR2TAG("blwm"))) - return ("blwm ( Below-base Mark Positioning)"); - else if (tag == (STR2TAG("curs"))) - return ("curs (Cursive Positioning)"); - else if (tag == (STR2TAG("vkrn"))) { + } else if (tag == (STR2TAG("vkrn"))) { if (flavor == 2) { if (proofIsAltKanjiKern()) return ("vkrn (Vertical class kerning) + AltMetrics"); @@ -1085,10 +1092,7 @@ static Byte8 *dumpTitle(Card32 tag, IntX flavor) { return ("vkrn (Vertical pair kerning)"); } - } else if (tag == (STR2TAG("vpal"))) - return ("vpal (Vertical alt. Proportional-width metrics)"); - - else { + } else { sprintf(othertag, "'%c%c%c%c' (Unknown/Unregistered tag)", TAG_ARG(tag)); return (othertag); } diff --git a/c/spot/source/GSUB.c b/c/spot/source/GSUB.c index 61eb3e942..e52ae1d90 100644 --- a/c/spot/source/GSUB.c +++ b/c/spot/source/GSUB.c @@ -758,174 +758,215 @@ static Byte8 *dumpTitle(Card32 tag, IntX flavor) { if (tag == 0) { return ("GSUB table features "); } else if (tag == (STR2TAG("aalt"))) - return ("aalt (Access all alternates)"); + return ("aalt (Access All Alternates)"); + else if (tag == (STR2TAG("abvf"))) + return ("abvf (Above-base Forms)"); + else if (tag == (STR2TAG("abvs"))) + return ("abvs (Above-base Substitutions)"); else if (tag == (STR2TAG("afrc"))) - return ("afrc (Alternative fractions)"); - else if (tag == (STR2TAG("c2sc"))) - return ("c2sc (Small Caps substitution (Majuscules))"); + return ("afrc (Alternative Fractions)"); + else if (tag == (STR2TAG("akhn"))) + return ("akhn (Akhands)"); + else if (tag == (STR2TAG("blwf"))) + return ("blwf (Below-base Forms)"); + else if (tag == (STR2TAG("blws"))) + return ("blws (Below-base Substitutions)"); else if (tag == (STR2TAG("calt"))) - return ("calt (Connection alternates)"); + return ("calt (Contextual Alternates)"); else if (tag == (STR2TAG("case"))) - return ("case (Case-sensitive substitution)"); + return ("case (Case-Sensitive Forms)"); + else if (tag == (STR2TAG("ccmp"))) + return ("ccmp (Glyph Composition/Decomposition)"); + else if (tag == (STR2TAG("cfar"))) + return ("cfar (Conjuct Form After Ro)"); + else if (tag == (STR2TAG("cjct"))) + return ("cjct (Conjuct Forms)"); else if (tag == (STR2TAG("clig"))) - return ("clig (Contextual ligature substitution)"); - else if (tag == (STR2TAG("crcy"))) - return ("crcy (Currency substitution)"); + return ("clig (Contextual Ligatures)"); else if (tag == (STR2TAG("cswh"))) - return ("cswh (Contextual swash substitution)"); - else if (tag == (STR2TAG("DCMP"))) - return ("DCMP (Ligature decomposition)"); + return ("cswh (Contextual Swash)"); + else if (tag == (STR2TAG("c2pc"))) + return ("c2pc (Petite Capitals from Capitals)"); + else if (tag == (STR2TAG("c2sc"))) + return ("c2sc (Small Capitals from Capitals)"); else if (tag == (STR2TAG("dlig"))) - return ("dlig (Discretionary ligature substitution)"); + return ("dlig (Discretionary Ligatures)"); else if (tag == (STR2TAG("dnom"))) return ("dnom (Denominators)"); - else if (tag == (STR2TAG("dpng"))) - return ("dpng (Dipthong substitution)"); + else if (tag == (STR2TAG("dtls"))) + return ("dtls (Dotless Forms)"); else if (tag == (STR2TAG("expt"))) - return ("expt (Expert-forms substitution)"); + return ("expt (Expert Forms)"); + else if (tag == (STR2TAG("falt"))) + return ("falt (Final Glyph on Line Alternates)"); + else if (tag == (STR2TAG("fin2"))) + return ("fin2 (Terminal Forms #2)"); + else if (tag == (STR2TAG("fin3"))) + return ("fin3 (Terminal Forms #3)"); else if (tag == (STR2TAG("fina"))) - return ("fina (Terminal alternates)"); - else if (tag == (STR2TAG("frac"))) { - if (flavor == 4) - return ("frac (Pre-built Fraction substitution)"); - else if (flavor == 5) - return ("frac (Arbitrary Fraction substitution)"); - else - return ("frac (Fraction substitution)"); - } else if (tag == (STR2TAG("fwid"))) - return ("fwid (Full-width substitution)"); + return ("fina (Terminal Forms)"); + else if (tag == (STR2TAG("flac"))) + return ("flac (Flattened accent forms)"); + else if (tag == (STR2TAG("frac"))) + return ("frac (Fractions)"); + else if (tag == (STR2TAG("fwid"))) + return ("fwid (Full Widths)"); + else if (tag == (STR2TAG("half"))) + return ("half (Half Forms)"); + else if (tag == (STR2TAG("haln"))) + return ("haln (Halant Forms)"); else if (tag == (STR2TAG("hist"))) - return ("hist (Historical alternates)"); + return ("hist (Historical Forms)"); else if (tag == (STR2TAG("hkna"))) return ("hkna (Horizontal Kana Alternates)"); else if (tag == (STR2TAG("hlig"))) - return ("hlig (Historical ligatures)"); + return ("hlig (Historical Ligatures)"); else if (tag == (STR2TAG("hngl"))) - return ("hngl (Hanja to Hangul substitution)"); + return ("hngl (Hangul)"); + else if (tag == (STR2TAG("hojo"))) + return ("hojo (Hojo Kanji Forms)"); else if (tag == (STR2TAG("hwid"))) - return ("hwid (Half-width substitution)"); + return ("hwid (Half Widths)"); else if (tag == (STR2TAG("init"))) - return ("init (Initial alternates)"); + return ("init (Initial Forms)"); + else if (tag == (STR2TAG("isol"))) + return ("isol (Isolated Forms)"); else if (tag == (STR2TAG("ital"))) - return ("ital (Italics alternates)"); - else if (tag == (STR2TAG("jajp"))) - return ("jajp (Japanese forms)"); + return ("ital (Italics)"); + else if (tag == (STR2TAG("jalt"))) + return ("jalt (Justification Alternates)"); else if (tag == (STR2TAG("jp78"))) - return ("jp78 (JIS78-forms substitution)"); + return ("jp78 (JIS78 Forms)"); else if (tag == (STR2TAG("jp83"))) - return ("jp83 (JIS83-forms substitution)"); + return ("jp83 (JIS83 Forms)"); else if (tag == (STR2TAG("jp90"))) - return ("jp90 (JIS90-forms substitution)"); - else if (tag == (STR2TAG("kokr"))) - return ("kokr (Korean forms)"); + return ("jp90 (JIS90 Forms)"); + else if (tag == (STR2TAG("jp04"))) + return ("jp04 (JIS2004 Forms)"); else if (tag == (STR2TAG("liga"))) - return ("liga (Ligature substitution)"); + return ("liga (Standard Ligatures)"); + else if (tag == (STR2TAG("ljmo"))) + return ("ljmo (Leading Jamo Forms)"); else if (tag == (STR2TAG("lnum"))) - return ("lnum (Lining figures)"); + return ("lnum (Lining Figures)"); + else if (tag == (STR2TAG("locl"))) + return ("locl (Localized Forms)"); + else if (tag == (STR2TAG("ltra"))) + return ("ltra (Left-to-Right Alternates)"); + else if (tag == (STR2TAG("ltrm"))) + return ("ltrm (Left-to-Right Mirrored Forms)"); + else if (tag == (STR2TAG("med2"))) + return ("med2 (Medial Forms #2)"); else if (tag == (STR2TAG("medi"))) - return ("medi (Medial alternates)"); + return ("medi (Medial Forms)"); else if (tag == (STR2TAG("mgrk"))) return ("mgrk (Mathematical Greek)"); else if (tag == (STR2TAG("mset"))) - return ("mset (Mark positioning substitution)"); + return ("mset (Mark Positioning via Substitution)"); else if (tag == (STR2TAG("nalt"))) - return ("nalt (Alternate annotation forms)"); + return ("nalt (Alternate Annotation Forms)"); else if (tag == (STR2TAG("nlck"))) - return ("nlck (National Language Committee kanji)"); + return ("nlck (NLC Kanji Forms)"); + else if (tag == (STR2TAG("nukt"))) + return ("nukt (Nukta Forms)"); else if (tag == (STR2TAG("numr"))) return ("numr (Numerators)"); - else if (tag == (STR2TAG("nutf"))) - return ("nutf ('Nut' fractions)"); else if (tag == (STR2TAG("onum"))) - return ("onum (Oldstyle figures)"); + return ("onum (Oldstyle Figures)"); else if (tag == (STR2TAG("ordn"))) - return ("ordn (Ordinals substitution)"); + return ("ordn (Ordinals)"); else if (tag == (STR2TAG("ornm"))) return ("ornm (Ornaments)"); + else if (tag == (STR2TAG("pcap"))) + return ("pcap (Petite Capitals)"); + else if (tag == (STR2TAG("pkna"))) + return ("pkna (Proportional Kana)"); else if (tag == (STR2TAG("pnum"))) - return ("pnum (Proportional figures)"); + return ("pnum (Proportional Figures)"); + else if (tag == (STR2TAG("pref"))) + return ("pref (Pre-base Forms)"); + else if (tag == (STR2TAG("pres"))) + return ("pres (Pre-base Substitutions)"); + else if (tag == (STR2TAG("pstf"))) + return ("pstf (Post-base Forms)"); + else if (tag == (STR2TAG("psts"))) + return ("psts (Post-base Substitutions)"); else if (tag == (STR2TAG("pwid"))) - return ("pwid (Proportional-width substitution)"); + return ("pwid (Proportional Widths)"); else if (tag == (STR2TAG("qwid"))) - return ("qwid (Quarter-width substitution)"); + return ("qwid (Quarter Widths)"); else if (tag == (STR2TAG("rand"))) - return ("rand (Random-selection alternates)"); + return ("rand (Randomize)"); + else if (tag == (STR2TAG("rclt"))) + return ("rclt (Required Contextual Alternates)"); + else if (tag == (STR2TAG("rkrf"))) + return ("rkrf (Rakar Forms)"); + else if (tag == (STR2TAG("rlig"))) + return ("rlig (Required Ligatures)"); + else if (tag == (STR2TAG("rphf"))) + return ("rphf (Reph Forms)"); + else if (tag == (STR2TAG("rtla"))) + return ("rtla (Right-to-Left Alternates)"); + else if (tag == (STR2TAG("rtlm"))) + return ("rtlm (Right-to-Left Mirrored Forms)"); else if (tag == (STR2TAG("ruby"))) return ("ruby (Ruby Notation Forms)"); + else if (tag == (STR2TAG("rvrn"))) + return ("rvrn (Required Variation Alternates)"); else if (tag == (STR2TAG("salt"))) - return ("salt (Stylistic alternates)"); - else if (tag == (STR2TAG("SALT"))) - return ("SALT (Stylistic alternates)"); + return ("salt (Stylistic Alternates)"); else if (tag == (STR2TAG("sinf"))) - return ("sinf (Scientific subscript/inferiors)"); + return ("sinf (Scientific Inferiors)"); else if (tag == (STR2TAG("smcp"))) - return ("smcp (Small Caps substitution (Minuscules))"); + return ("smcp (Small Capitals)"); else if (tag == (STR2TAG("smpl"))) - return ("smpl (Simplified-forms substitution)"); + return ("smpl (Simplified Forms)"); + else if (tag == (STR2TAG("ssty"))) + return ("ssty (Math script style alternates)"); + else if (tag == (STR2TAG("stch"))) + return ("stch (Stretching Glyph Decomposition)"); else if (tag == (STR2TAG("subs"))) - return ("subs (Subscript substitution)"); + return ("subs (Subscript)"); else if (tag == (STR2TAG("sups"))) - return ("sups (Superscript substitution)"); + return ("sups (Superscript)"); else if (tag == (STR2TAG("swsh"))) - return ("swsh (Swash alternates)"); + return ("swsh (Swash)"); else if (tag == (STR2TAG("titl"))) - return ("titl (Titling alternates)"); + return ("titl (Titling)"); + else if (tag == (STR2TAG("tjmo"))) + return ("tjmo (Trailing Jamo Forms)"); else if (tag == (STR2TAG("tnam"))) - return ("tnam (Traditional name forms)"); + return ("tnam (Traditional Name Forms)"); else if (tag == (STR2TAG("tnum"))) - return ("tnum (Tabular figures)"); + return ("tnum (Tabular Figures)"); else if (tag == (STR2TAG("trad"))) - return ("trad (Traditional-forms substitution)"); + return ("trad (Traditional Forms)"); else if (tag == (STR2TAG("twid"))) - return ("twid (Third-width substitution)"); - else if (tag == (STR2TAG("vert"))) - return ("vert (Vertical-forms substitution)"); - else if (tag == (STR2TAG("vivn"))) - return ("vivn (Vietnamese Forms)"); - else if (tag == (STR2TAG("vrt2"))) - return ("vrt2 (Rotated vertical-forms substitution)"); - else if (tag == (STR2TAG("zero"))) - return ("zero (Slashed-Zero substitution)"); - else if (tag == (STR2TAG("zhcn"))) - return ("zhcn (Simplified Chinese Forms)"); - else if (tag == (STR2TAG("zhtw"))) - return ("zhtw (Traditional Chinese Forms)"); - else if (tag == (STR2TAG("akhn"))) - return ("akhn (Akhands)"); - else if (tag == (STR2TAG("blwf"))) - return ("blwf (Below-base Forms)"); - else if (tag == (STR2TAG("half"))) - return ("half ( Half Forms)"); + return ("twid (Third Widths)"); + else if (tag == (STR2TAG("unic"))) + return ("unic (Unicase)"); else if (tag == (STR2TAG("vatu"))) return ("vatu (Vattu Variants)"); + else if (tag == (STR2TAG("vert"))) + return ("vert (Vertical Writing)"); + else if (tag == (STR2TAG("vjmo"))) + return ("vjmo (Vowel Jamo Forms)"); else if (tag == (STR2TAG("vkna"))) return ("vkna (Vertical Kana Alternates)"); - else if (tag == (STR2TAG("pstf"))) - return ("pstf (Post-base Forms)"); - else if (tag == (STR2TAG("nukt"))) - return ("nukt (Nukta Forms)"); - else if (tag == (STR2TAG("abvs"))) - return ("abvs (Above-base Substitutions)"); - else if (tag == (STR2TAG("blws"))) - return ("blws (Below-base Substitutions)"); - else if (tag == (STR2TAG("falt"))) - return ("falt (Final Glyph on Line Alternates)"); - else if (tag == (STR2TAG("haln"))) - return ("haln (Halant Forms)"); - else if (tag == (STR2TAG("isol"))) - return ("isol (Isolated Forms)"); - else if (tag == (STR2TAG("jalt"))) - return ("jalt (Justification Alternates)"); - else if (tag == (STR2TAG("locl"))) - return ("locl (Localized Forms)"); - else if (tag == (STR2TAG("pres"))) - return ("pres (Pre-base Substitutions)"); - else if (tag == (STR2TAG("psts"))) - return ("psts (Post-base Substitutions)"); - else if (tag == (STR2TAG("rphf"))) - return ("rphf (Reph Forms)"); + else if (tag == (STR2TAG("vrt2"))) + return ("vrt2 (Vertical Alternates and Rotation)"); + else if (tag == (STR2TAG("vrtr"))) + return ("vrtr (Vertical Alternates for Rotation)"); + else if (tag == (STR2TAG("zero"))) + return ("zero (Slashed-Zero substitution)"); - else { + else if ((tag >= (STR2TAG("cv01"))) && (tag <= (STR2TAG("cv99")))) { + sprintf(othertag, "%c%c%c%c (Character Variant)", TAG_ARG(tag)); + return othertag; + } else if ((tag >= (STR2TAG("ss01"))) && (tag <= (STR2TAG("ss20")))) { + sprintf(othertag, "%c%c%c%c (Stylistic Set)", TAG_ARG(tag)); + return othertag; + } else { sprintf(othertag, "'%c%c%c%c' (Unknown/Unregistered tag)", TAG_ARG(tag)); return (othertag); } @@ -941,107 +982,6 @@ static IntX isVerticalFeature(Card32 tag, IntX flavor) { return 0; } -#if 0 -static IntX isAlternatesFormat(Card32 tag, IntX flavor) { - if (tag == 0) - return 0; - else if (tag == (STR2TAG("CALT"))) - return 1; - else if (tag == (STR2TAG("fina"))) - return 1; - else if (tag == (STR2TAG("HIST"))) - return 1; - else if (tag == (STR2TAG("init"))) - return 1; - else if (tag == (STR2TAG("medi"))) - return 1; - else if (tag == (STR2TAG("NALT"))) - return 1; - else if (tag == (STR2TAG("ORNM"))) - return 1; - else if (tag == (STR2TAG("RAND"))) - return 1; - else if (tag == (STR2TAG("SALT"))) - return 1; - else if (tag == (STR2TAG("swsh"))) - return 1; - else if (tag == (STR2TAG("TITL"))) - return 1; - return 0; -} - -static IntX isOneToOneFormat(Card32 tag, IntX flavor) { - if (tag == 0) - return 0; - else if (tag == (STR2TAG("C2SC"))) - return 1; - else if (tag == (STR2TAG("EXPT"))) - return 1; - else if (tag == (STR2TAG("FWID"))) - return 1; - else if (tag == (STR2TAG("HWID"))) - return 1; - else if (tag == (STR2TAG("JP78"))) - return 1; - else if (tag == (STR2TAG("JP83"))) - return 1; - else if (tag == (STR2TAG("LNUM"))) - return 1; - else if (tag == (STR2TAG("onum"))) - return 1; - else if (tag == (STR2TAG("ORDN"))) - return 1; - else if (tag == (STR2TAG("pnum"))) - return 1; - else if (tag == (STR2TAG("PWID"))) - return 1; - else if (tag == (STR2TAG("smcp"))) - return 1; - else if (tag == (STR2TAG("SMPL"))) - return 1; - else if (tag == (STR2TAG("sups"))) - return 1; - else if (tag == (STR2TAG("subs"))) - return 1; - else if (tag == (STR2TAG("TNUM"))) - return 1; - else if (tag == (STR2TAG("TRAD"))) - return 1; - else if (tag == (STR2TAG("vert"))) - return 1; - else if (tag == (STR2TAG("ZERO"))) - return 1; - return 0; -} - -static IntX isOnetoManyFormat(Card32 tag, IntX flavor) { - if (tag == 0) - return 0; - else if (tag == (STR2TAG("DCMP"))) - return 1; - return 0; -} - -static IntX isManyToOneFormat(Card32 tag, IntX flavor) { - if (tag == 0) - return 0; - else if (tag == (STR2TAG("dlig"))) - return 1; - else if (tag == (STR2TAG("DPNG"))) - return 1; - else if (tag == (STR2TAG("frac"))) { - if (flavor == 4) - return 1; - else if (flavor == 5) - return 1; - else - return 1; - } else if (tag == (STR2TAG("liga"))) - return 1; - return 0; -} -#endif - static void dumpMessage(char *str, Tag feature) { if (isVerticalFeature(feature, 0)) { proofSetVerticalMode(); @@ -2947,7 +2887,7 @@ static void proofChainContext3(ChainContextSubstFormat3 *fmt) { if (fmt->InputGlyphCount == 1) { GlyphId inputgid[1]; - GlyphId outputgid[1]; + GlyphId outputgid[2]; IntX inputcount, outputcount; Card32 nitems; IntX j, o; diff --git a/c/spot/source/global.c b/c/spot/source/global.c index 05612bc66..80af17b58 100644 --- a/c/spot/source/global.c +++ b/c/spot/source/global.c @@ -23,9 +23,6 @@ #include "head.h" #include "name.h" #include "map.h" -#if MEMCHECK -#include "memcheck.h" -#endif Global global; /* Global data */ static IntX nameLookupType = 0; extern jmp_buf mark; @@ -127,9 +124,6 @@ void *memNew(size_t size) { memError(); else memset((char *)ptr, 0, size); -#if MEMCHECK - memAllocated(ptr); -#endif return ptr; } @@ -138,21 +132,12 @@ void *memResize(void *old, size_t size) { void *new = realloc(old, size); if (new == NULL) memError(); - if (old != new) { -#if MEMCHECK - memDeallocated(old); - memAllocated(new); -#endif - } return new; } /* Free memory */ void memFree(void *ptr) { if (ptr != NULL) { -#if MEMCHECK - memDeallocated(ptr); -#endif free(ptr); } } diff --git a/c/spot/source/main.c b/c/spot/source/main.c index 35518af01..c068d763c 100644 --- a/c/spot/source/main.c +++ b/c/spot/source/main.c @@ -14,9 +14,6 @@ #include "proof.h" #include "da.h" #include "sys.h" -#if MEMCHECK -#include "memcheck.h" -#endif #include "cmap.h" #include #include "setjmp.h" @@ -879,9 +876,6 @@ PyObject *main_python(PyObject *self, PyObject *args) { fileClose(); freemap(); argFree(argfree, argv); -#if MEMCHECK - memReport(); -#endif fclose(PyOutFile); PyOutFile = NULL; return Py_None; @@ -1003,9 +997,6 @@ execscript : { fileClose(); freemap(); argFree(argfree, argv); -#if MEMCHECK - memReport(); -#endif fclose(PyOutFile); PyOutFile = NULL; return Py_None; diff --git a/c/spot/source/memcheck.c b/c/spot/source/memcheck.c deleted file mode 100644 index 9231c8839..000000000 --- a/c/spot/source/memcheck.c +++ /dev/null @@ -1,90 +0,0 @@ -/* Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. - This software is licensed as OpenSource, under the Apache License, Version 2.0. - This license is available at: http://opensource.org/licenses/Apache-2.0. */ - -/* - * Miscellaneous memory leak checker. - */ - -#include "memcheck.h" -#include "stdio.h" - -#ifdef MEMCHECK -static int counter = 0; -#define MAXPOINTERS 100000 -static int pointersneeded = MAXPOINTERS; - -typedef struct { - void *ptr; - int refs; -} memEntry; - -static memEntry entries[MAXPOINTERS]; -#endif - -char *memtemp[] = - { -#ifdef MEMCHECK -#include "memchecklist.h" - -#else - 0 -#endif -}; - -void memAllocated(void *ptr) { -#ifdef MEMCHECK - int i; - int j = 0; - - for (i = 0; memtemp[i] != 0; i++) - if (ptr == memtemp[i]) - j++; - - for (i = counter - 1; i >= 0; i--) - if (entries[i].refs == 0) { - entries[i].refs = 1; - entries[i].ptr = ptr; - return; - } - if (counter < MAXPOINTERS) { - entries[counter].refs = 1; - entries[counter++].ptr = ptr; - } else - pointersneeded++; -#endif -} - -void memDeallocated(void *ptr) { -#ifdef MEMCHECK - int i; - - for (i = counter - 1; i >= 0; i--) - if (entries[i].ptr == ptr) { - entries[i].refs--; - if (entries[i].refs < 0) - fprintf(stderr, "Freeing %hx multiple times\n", ptr); - break; - } -#endif -} - -void memReport(void) { -#ifdef MEMCHECK - int i, errorcounter = 0; - FILE *f; - - if (pointersneeded > MAXPOINTERS) - fprintf(stderr, "Memcheck needs %d entries.\n", pointersneeded); - - f = fopen("C:\\PerforceDepotFDK\\font_development\\FDK\\Tools\\Programs\\otfproof\\source\\memchecklist.h", "w"); - - for (i = 0; i < counter; i++) - if (entries[i].refs > 0) { - fprintf(f, "0x%lx, \n", entries[i].ptr); - errorcounter++; - } - fprintf(f, "0 /*%d entries*/\n", errorcounter); - fclose(f); -#endif -} diff --git a/c/spot/source/memcheck.h b/c/spot/source/memcheck.h deleted file mode 100644 index 1bdf42266..000000000 --- a/c/spot/source/memcheck.h +++ /dev/null @@ -1,12 +0,0 @@ -/* Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. - This software is licensed as OpenSource, under the Apache License, Version 2.0. - This license is available at: http://opensource.org/licenses/Apache-2.0. */ - -#ifndef MEMCHECK_H -#define MEMCHECK_H - -void memAllocated(void *ptr); -void memDeallocated(void *ptr); -void memReport(void); - -#endif /* MEMCHECK_H */ diff --git a/c/tx/build/osx/xcode/tx.xcodeproj/project.pbxproj b/c/tx/build/osx/xcode/tx.xcodeproj/project.pbxproj index c510bd6b4..94193fa9a 100644 --- a/c/tx/build/osx/xcode/tx.xcodeproj/project.pbxproj +++ b/c/tx/build/osx/xcode/tx.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ buildPhases = ( ); dependencies = ( + DEF9BB4D21937A1B0051E856 /* PBXTargetDependency */, BD5E122F17A7396F007BA047 /* PBXTargetDependency */, BD5E121B17A7390C007BA047 /* PBXTargetDependency */, BD5E122917A7390C007BA047 /* PBXTargetDependency */, @@ -65,6 +66,7 @@ BD613CDF10F7988700F98996 /* libsvread.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD613CC710F7986500F98996 /* libsvread.a */; }; BDA7084D173321C0009B6A63 /* libuforead.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD1FAAAF1731D2E200472BF0 /* libuforead.a */; }; BDAF347117D6A9DE004B2EA0 /* libufowrite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDAF345717D6A9AF004B2EA0 /* libufowrite.a */; }; + DE7A844C21926BB3006244BC /* libtx_shared.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DEBF3F04219259C10022A4C6 /* libtx_shared.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -537,6 +539,27 @@ remoteGlobalIDString = D2AAC045055464E500DB518D; remoteInfo = svread; }; + DEBF3F03219259C10022A4C6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DEBF3EFF219259C10022A4C6 /* tx_shared.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DE8577CD2192544500D4F584; + remoteInfo = tx_shared; + }; + DEF9BB4921937A070051E856 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DEBF3EFF219259C10022A4C6 /* tx_shared.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = DE8577CC2192544500D4F584; + remoteInfo = tx_shared; + }; + DEF9BB4C21937A1B0051E856 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DEBF3EFF219259C10022A4C6 /* tx_shared.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = DE8577CC2192544500D4F584; + remoteInfo = tx_shared; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -573,11 +596,8 @@ BD4990AD0D7DE99B005EF88C /* ctlshare.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ctlshare.h; path = ../../../../public/lib/api/ctlshare.h; sourceTree = SOURCE_ROOT; }; BD4990AF0D7DE9BA005EF88C /* t1read.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = t1read.h; path = ../../../../public/lib/api/t1read.h; sourceTree = SOURCE_ROOT; }; BD4990B10D7DE9C1005EF88C /* t1write.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = t1write.h; path = ../../../../public/lib/api/t1write.h; sourceTree = SOURCE_ROOT; }; - BD4990B30D7DE9DA005EF88C /* buildch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = buildch.h; path = ../../../../public/lib/api/buildch.h; sourceTree = SOURCE_ROOT; }; - BD4990B50D7DE9EA005EF88C /* atmqred.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = atmqred.h; path = ../../../../public/lib/api/atmqred.h; sourceTree = SOURCE_ROOT; }; BD4990B80D7DEA3C005EF88C /* sha1.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sha1.h; path = ../../../../public/lib/api/sha1.h; sourceTree = SOURCE_ROOT; }; BD4990BA0D7DEA5C005EF88C /* sfntwrite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sfntwrite.h; path = ../../../../public/lib/api/sfntwrite.h; sourceTree = SOURCE_ROOT; }; - BD4990BE0D7DEA9A005EF88C /* supportframepixeltypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = supportframepixeltypes.h; path = ../../../../public/lib/api/supportframepixeltypes.h; sourceTree = SOURCE_ROOT; }; BD4990C00D7DEAD3005EF88C /* txops.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = txops.h; path = ../../../../public/lib/resource/txops.h; sourceTree = SOURCE_ROOT; }; BD4990C20D7DEADC005EF88C /* dictops.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dictops.h; path = ../../../../public/lib/resource/dictops.h; sourceTree = SOURCE_ROOT; }; BD4990C50D7DEB85005EF88C /* sfntread.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sfntread.h; path = ../../../../public/lib/api/sfntread.h; sourceTree = SOURCE_ROOT; }; @@ -606,6 +626,7 @@ BD613CC210F7986500F98996 /* svread.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = svread.xcodeproj; path = ../../../../public/lib/build/svread/osx/xcode/svread.xcodeproj; sourceTree = SOURCE_ROOT; }; BDAF345217D6A9AF004B2EA0 /* ufowrite.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ufowrite.xcodeproj; path = ../../../../public/lib/build/ufowrite/osx/xcode/ufowrite.xcodeproj; sourceTree = ""; }; BDC28A801808539300053E7D /* ufo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ufo.h; path = ../../../source/ufo.h; sourceTree = ""; }; + DEBF3EFF219259C10022A4C6 /* tx_shared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = tx_shared.xcodeproj; path = ../../../../public/lib/build/tx_shared/osx/xcode/tx_shared.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -613,6 +634,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DE7A844C21926BB3006244BC /* libtx_shared.a in Frameworks */, 8EE84C601DEDFADD00157252 /* libnameread.a in Frameworks */, 8E8759E71DCD415400C7A081 /* libvarread.a in Frameworks */, BDAF347117D6A9DE004B2EA0 /* libufowrite.a in Frameworks */, @@ -651,6 +673,7 @@ BD4990480D7DE60A005EF88C /* Headers */, 08FB7795FE84155DC02AAC07 /* Source */, 1AB674ADFE9D54B511CA2CBB /* Products */, + DE7A844A21926BB3006244BC /* Frameworks */, ); name = tx; sourceTree = ""; @@ -732,8 +755,6 @@ BD4990DF0D7DED23005EF88C /* abfdesc.h */, BD4990940D7DE82C005EF88C /* absfont.h */, BD4990D90D7DECE5005EF88C /* agl2uv.h */, - BD4990B50D7DE9EA005EF88C /* atmqred.h */, - BD4990B30D7DE9DA005EF88C /* buildch.h */, BD49909A0D7DE8F5005EF88C /* cfembed.h */, BD4990960D7DE869005EF88C /* cffread.h */, BD4990980D7DE8E7005EF88C /* cffwrite.h */, @@ -747,7 +768,6 @@ BD4990BA0D7DEA5C005EF88C /* sfntwrite.h */, BD4990DB0D7DECFD005EF88C /* stdenc2.h */, BD4990DD0D7DED10005EF88C /* stdstr1.h */, - BD4990BE0D7DEA9A005EF88C /* supportframepixeltypes.h */, BD4990A60D7DE966005EF88C /* svgwrite.h */, BD4990AF0D7DE9BA005EF88C /* t1read.h */, BD4990B10D7DE9C1005EF88C /* t1write.h */, @@ -780,6 +800,7 @@ BD5E11CE17A73839007BA047 /* t1write.xcodeproj */, BD5E11D417A73840007BA047 /* t2cstr.xcodeproj */, BD5E11E017A7384E007BA047 /* ttread.xcodeproj */, + DEBF3EFF219259C10022A4C6 /* tx_shared.xcodeproj */, BD1FAAA71731D2E100472BF0 /* uforead.xcodeproj */, BDAF345217D6A9AF004B2EA0 /* ufowrite.xcodeproj */, 8E8759DD1DCBF66500C7A081 /* varread.xcodeproj */, @@ -947,6 +968,21 @@ name = Products; sourceTree = ""; }; + DE7A844A21926BB3006244BC /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + DEBF3F00219259C10022A4C6 /* Products */ = { + isa = PBXGroup; + children = ( + DEBF3F04219259C10022A4C6 /* libtx_shared.a */, + ); + name = Products; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -960,6 +996,7 @@ buildRules = ( ); dependencies = ( + DEF9BB4A21937A070051E856 /* PBXTargetDependency */, 8EE84C621DEDFAEB00157252 /* PBXTargetDependency */, 8E8759E91DCD416100C7A081 /* PBXTargetDependency */, BDAF347017D6A9D4004B2EA0 /* PBXTargetDependency */, @@ -1091,6 +1128,10 @@ ProductGroup = BD5E11E117A7384E007BA047 /* Products */; ProjectRef = BD5E11E017A7384E007BA047 /* ttread.xcodeproj */; }, + { + ProductGroup = DEBF3F00219259C10022A4C6 /* Products */; + ProjectRef = DEBF3EFF219259C10022A4C6 /* tx_shared.xcodeproj */; + }, { ProductGroup = BD1FAAA81731D2E100472BF0 /* Products */; ProjectRef = BD1FAAA71731D2E100472BF0 /* uforead.xcodeproj */; @@ -1274,6 +1315,13 @@ remoteRef = BDAF345617D6A9AF004B2EA0 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + DEBF3F04219259C10022A4C6 /* libtx_shared.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libtx_shared.a; + remoteRef = DEBF3F03219259C10022A4C6 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; /* End PBXReferenceProxy section */ /* Begin PBXSourcesBuildPhase section */ @@ -1508,6 +1556,16 @@ name = svread; targetProxy = BDD086E114E49DE600F0FC0D /* PBXContainerItemProxy */; }; + DEF9BB4A21937A070051E856 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = tx_shared; + targetProxy = DEF9BB4921937A070051E856 /* PBXContainerItemProxy */; + }; + DEF9BB4D21937A1B0051E856 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = tx_shared; + targetProxy = DEF9BB4C21937A1B0051E856 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ diff --git a/c/tx/build/win/visualstudio/tx.sln b/c/tx/build/win/visualstudio/tx.sln index 9584f236d..747cf007b 100644 --- a/c/tx/build/win/visualstudio/tx.sln +++ b/c/tx/build/win/visualstudio/tx.sln @@ -1,8 +1,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.27703.2047 +VisualStudioVersion = 15.0.26228.48 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tx", "tx.vcxproj", "{724EF7F1-8890-4571-8A39-FFF69187DA5A}" + ProjectSection(ProjectDependencies) = postProject + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54} = {34A7C3B7-FC39-49B3-A554-C532F2DC4A54} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "absfont", "..\..\..\..\public\lib\build\absfont\win\visualstudio\absfont.vcxproj", "{5C96B932-078E-4696-86F2-49C60402F36C}" EndProject @@ -50,6 +53,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "varread", "..\..\..\..\publ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nameread", "..\..\..\..\public\lib\build\nameread\win\visualstudio\nameread.vcxproj", "{DA4450E3-E694-4F89-AEB3-D1A5498BD6F5}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tx_shared", "..\..\..\..\public\lib\build\tx_shared\win\visualstudio\tx_shared.vcxproj", "{34A7C3B7-FC39-49B3-A554-C532F2DC4A54}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -250,6 +255,14 @@ Global {DA4450E3-E694-4F89-AEB3-D1A5498BD6F5}.Release|x64.Build.0 = Release|x64 {DA4450E3-E694-4F89-AEB3-D1A5498BD6F5}.Release|x86.ActiveCfg = Release|Win32 {DA4450E3-E694-4F89-AEB3-D1A5498BD6F5}.Release|x86.Build.0 = Release|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x64.ActiveCfg = Debug|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x64.Build.0 = Debug|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x86.ActiveCfg = Debug|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Debug|x86.Build.0 = Debug|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x64.ActiveCfg = Release|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x64.Build.0 = Release|x64 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x86.ActiveCfg = Release|Win32 + {34A7C3B7-FC39-49B3-A554-C532F2DC4A54}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/c/tx/build/win/visualstudio/tx.vcxproj b/c/tx/build/win/visualstudio/tx.vcxproj old mode 100755 new mode 100644 index 5e27f03a1..c519944f5 --- a/c/tx/build/win/visualstudio/tx.vcxproj +++ b/c/tx/build/win/visualstudio/tx.vcxproj @@ -280,6 +280,9 @@ {0f6c5c6e-5b6d-463d-81df-cceb1271c759} + + {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} + diff --git a/c/tx/source/tx.c b/c/tx/source/tx.c index a04e2bb86..847ec5f25 100644 --- a/c/tx/source/tx.c +++ b/c/tx/source/tx.c @@ -1,5519 +1,124 @@ -/* Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. -This software is licensed as OpenSource, under the Apache License, Version 2.0. This license is available at: http://opensource.org/licenses/Apache-2.0. */ +/* Copyright 2014-2018 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. + This software is licensed as OpenSource, under the Apache License, Version 2.0. + This license is available at: http://opensource.org/licenses/Apache-2.0. */ /* * Type eXchange. */ -#include "ctlshare.h" +#include "tx_shared.h" #define TX_VERSION CTL_MAKE_VERSION(1, 2, 0) -#include "cfembed.h" -#include "cffread.h" -#include "cffwrite.h" -#include "ctutil.h" -#include "dynarr.h" -#include "pdfwrite.h" -#include "sfntread.h" -#include "t1read.h" -#include "ttread.h" -#include "t1write.h" -#include "svread.h" -#include "svgwrite.h" -#include "uforead.h" -#include "ufowrite.h" #include "varread.h" -#include "txops.h" -#include "dictops.h" -#include "abfdesc.h" -#include "supportframepixeltypes.h" -#include "sha1.h" -#undef global /* Remove conflicting definition from buildch */ - -#include -#include - -#if PLAT_MAC -#include -#include -#endif /* PLAT_MAC */ - -#include -#include -#include -#include -#include -#include -#include - -#if _WIN32 -#include -#include -#define stat _stat -#define S_IFDIR _S_IFDIR -#include /* to get _mkdir() */ -#include -#else -#include -#endif - -/* -------------------------------- Options -------------------------------- */ - -/* Note: options.h must be ascii sorted by option string */ - -enum /* Option enumeration */ -{ - opt_None, /* Not an option */ -#define DCL_OPT(string, index) index, -#include "options.h" - opt_Count -}; - -static const char *options[] = - { -#undef DCL_OPT -#define DCL_OPT(string, index) string, -#include "options.h" -}; - -/* ----------------------- Miscellaneous Definitions ----------------------- */ - -#define ARRAY_LEN(t) (sizeof(t) / sizeof((t)[0])) - -/* Predefined tags */ -#define CID__ CTL_TAG('C', 'I', 'D', ' ') /* sfnt-wrapped CID table */ -#define POST_ CTL_TAG('P', 'O', 'S', 'T') /* Macintosh POST resource */ -#define TYP1_ CTL_TAG('T', 'Y', 'P', '1') /* GX Type 1 sfnt table */ -#define sfnt_ CTL_TAG('s', 'f', 'n', 't') /* sfnt resource */ - -/* File signatures */ -#define sig_PostScript0 CTL_TAG('%', '!', 0x00, 0x00) -#define sig_PostScript1 CTL_TAG('%', 'A', 0x00, 0x00) /* %ADO... */ -#define sig_PostScript2 CTL_TAG('%', '%', 0x00, 0x00) /* %%... */ -#define sig_PFB ((ctlTag)0x80010000) -#define sig_CFF ((ctlTag)0x01000000) -#define sig_CFF2 ((ctlTag)0x02000000) -#define sig_OTF CTL_TAG('O', 'T', 'T', 'O') -#define sig_MacResource ((ctlTag)0x00000100) -#define sig_AppleSingle ((ctlTag)0x00051600) -#define sig_AppleDouble ((ctlTag)0x00051607) -#define sig_UFO CTL_TAG('<', '?', 'x', 'm') -/* Generate n-bit mask */ -#define N_BIT_MASK(n) (~(~0UL << (n))) -enum { MAX_VERSION_SIZE = 100 }; - -typedef struct txCtx_ *txCtx; /* tx program context */ - -typedef struct /* Macintosh resource info */ -{ - ctlTag type; - unsigned short id; - unsigned long name; /* Name offset then name index */ - unsigned char attrs; - unsigned long offset; /* Offset to resource data (excludes length) */ - unsigned long length; /* Length of resource data */ -} ResInfo; - -typedef struct /* AppleSingle/Double entry descriptor */ -{ - unsigned long id; - long offset; - unsigned long length; -} EntryDesc; - -typedef struct /* Glyph name to Unicode value mapping */ -{ - char *gname; - unsigned short uv; -} Name2UV; - -enum /* Stream types */ -{ - stm_Src, /* Source */ - stm_Dst, /* Destination */ - stm_Tmp, /* Temporary */ - stm_Dbg /* Debug */ -}; - -#define TMPSIZE 50000 /* Temporary stream buffer size */ - -typedef struct /* Data stream */ -{ - short type; - short flags; -#define STM_TMP_ERR (1 << 0) /* Temporary stream error occured */ -#define STM_DONT_CLOSE (1 << 1) /* Don't close stream */ - char *filename; - FILE *fp; - char *buf; - size_t pos; /* Tmp stream position */ -} Stream; - -typedef struct /* Font record */ -{ - int type; /* Font technology type */ - int iTTC; /* TrueType Collection index */ - long offset; /* File offset */ -} FontRec; - -typedef struct /* CFF subr data */ -{ - unsigned long count; - unsigned char offSize; - unsigned long offset; /* Offset array base */ - unsigned long dataref; - dnaDCL(unsigned char, stemcnt); /* Per-subr stem count */ - unsigned short bias; -} SubrInfo; - -typedef struct /* cmap format 4 segment */ -{ - unsigned short endCode; - unsigned short startCode; - short idDelta; - unsigned long idRangeOffset; /* changed from unsigned short */ -} cmapSegment4; - -typedef struct -{ - unsigned long regionCount; -} RegionInfo; - -enum /* Charstring types */ -{ - dcf_CharString, - dcf_GlobalSubr, - dcf_LocalSubr -}; - -typedef float FltMtx[6]; /* Float matrix */ - -/* Function types */ -typedef size_t (*SegRefillFunc)(txCtx h, char **ptr); -typedef void (*abfGlyphWidthCallback)(abfGlyphCallbacks *cb, float hAdv); -typedef void (*DumpElementProc)(txCtx h, long index, const ctlRegion *region); - -enum /* Source font technology types */ -{ - src_Type1, /* Type 1 */ - src_OTF, /* OTF */ - src_CFF, /* Naked CFF */ - src_TrueType, /* TrueType */ - src_SVG, /* SVG data. */ - src_UFO, /* UFO data. */ -}; - -enum /* Operation modes */ -{ - mode_dump, - mode_ps, - mode_afm, - mode_path, - mode_cff, - mode_cef, - mode_pdf, - mode_mtx, - mode_t1, - mode_bc, /* is deprecated, but still support the option in order to be able to print an error message */ - mode_svg, - mode_ufow, - mode_dcf -}; - -/* Memory allocation failure simulation control values */ -enum { - FAIL_REPORT = -1, /* Report total calls to mem_manage() */ - FAIL_INACTIVE = -2 /* Inactivate memory allocation failure */ -}; - -struct txCtx_ { - char *progname; /* This program's name (for diagnostics) */ - long flags; /* Control flags */ -#define SEEN_MODE (1 << 0) /* Flags mode option seen */ -#define DONE_FILE (1 << 1) /* Processed font file */ -#define DUMP_RES (1 << 2) /* Print mac resource map */ -#define DUMP_ASD (1 << 3) /* Print AppleSingle/Double data */ -#define AUTO_FILE_FROM_FILE (1 << 4) /* Gen. dst filename from src filename */ -#define AUTO_FILE_FROM_FONT (1 << 5) /* Gen. dst filename from src FontName */ -#define SUBSET_OPT (1 << 6) /* Subsetting option specified */ -#define EVERY_FONT (1 << 7) /* Read every font from multi-font file */ -#define SHOW_NAMES (1 << 8) /* Show filename and FontName being processed */ -#define PRESERVE_GID (1 << 9) /* Preserve gids when subsetting */ -#define NO_UDV_CLAMPING (1 << 10) /* Don't clamp UVD's */ -#define SUBSET__EXCLUDE_OPT (1 << 11) /* use glyph list to exclude glyphs, instead of including them */ -#define SUBSET_SKIP_NOTDEF (1 << 12) /* While this is set, don't force the notdef into the current subset. */ -#define SUBSET_HAS_NOTDEF (1 << 13) /* Indcates that notdef has been added, no need to force it in.*/ -#define PATH_REMOVE_OVERLAP (1 << 14) /* Do not remove path overlaps */ -#define PATH_SUPRESS_HINTS (1 << 15) /* Do not remove path overlaps */ - int mode; /* Current mode */ - char *modename; /* Name of current mode */ - abfTopDict *top; /* Top dictionary */ - struct /* Source data */ - { - int type; /* Font technology type */ - Stream stm; /* Input stream */ - long offset; /* Buffer offset */ - long length; /* Buffer length */ - char buf[BUFSIZ]; /* Buffer data */ - char *end; /* One past end of buffer */ - char *next; /* Next byte available */ - int print_file; /* Flags when to print filename ahead of debug */ - dnaDCL(abfGlyphInfo *, glyphs); /* Source glyph list when subsetting */ - dnaDCL(abfGlyphInfo *, exclude); /* Excluded glyph list when subsetting */ - dnaDCL(float, widths); /* Source glyph width for -t1 -3 mode */ - dnaDCL(Stream, streamStack); /* support recursive opening of source stream files ( for components) */ - } src; - struct /* Destination data */ - { - Stream stm; /* Output stream */ - char buf[BUFSIZ]; /* Buffer data */ - void (*begset)(txCtx h); - void (*begfont)(txCtx h, abfTopDict *top); - void (*endfont)(txCtx h); - void (*endset)(txCtx h); - } dst; - dnaDCL(FontRec, fonts); /* Source font records */ - struct /* Macintosh resources */ - { - dnaDCL(ResInfo, map); /* Resouce map */ - dnaDCL(char, names); /* Resouce names */ - } res; - struct /* AppleSingle/Double data */ - { - unsigned long magic; /* Magic #, 00051600-single, 00051607-double */ - unsigned long version; /* Format version */ - dnaDCL(EntryDesc, entries); /* Entry descriptors */ - } asd; - struct /* Font data segment */ - { - SegRefillFunc refill; /* Format-specific refill */ - size_t left; /* Bytes remaining in segment */ - } seg; - struct /* Script file data */ - { - char *buf; /* Whole file buffer */ - dnaDCL(char *, args); /* Arg list */ - } script; - struct /* File processing */ - { - char *sr; /* Source root path */ - char *sd; /* Source directory path */ - char *dd; /* Destination directory path */ - char src[FILENAME_MAX]; - char dst[FILENAME_MAX]; - } file; - struct /* Random subset data */ - { - dnaDCL(unsigned short, glyphs); /* Tag list */ - dnaDCL(char, args); /* Simulated -g args */ - } subset; - struct /* Option args */ - { - char *U; - char *i; - char *p; - char *P; - struct /* Glyph list (g option) */ - { - int cnt; /* Substring count */ - char *substrs; /* Concatenated substrings */ - } g; - struct - { - int level; - } path; - struct /* cef-specific */ - { - unsigned short flags; /* cefEmbedSpec flags */ - char *F; - } cef; - } arg; - struct /* t1read library */ - { - t1rCtx ctx; - Stream tmp; - Stream dbg; - long flags; - } t1r; - struct /* cffread library */ - { - cfrCtx ctx; - Stream dbg; - long flags; - } cfr; - struct /* ttread library */ - { - ttrCtx ctx; - Stream dbg; - long flags; - } ttr; - struct /* svread library */ - { - svrCtx ctx; - Stream tmp; - Stream dbg; - long flags; - } svr; - struct /* uforead library */ - { - ufoCtx ctx; - Stream src; - Stream dbg; - long flags; - char *altLayerDir; - } ufr; - struct /* cffwrite library */ - { - cfwCtx ctx; - Stream tmp; - Stream dbg; - long flags; - unsigned long maxNumSubrs; - } cfw; - struct /* cfembed library */ - { - cefCtx ctx; - Stream src; - Stream tmp0; - Stream tmp1; - dnaDCL(cefSubsetGlyph, subset); - dnaDCL(char *, gnames); - dnaDCL(unsigned short, lookup); /* Glyph lookup */ - } cef; - struct /* abf facilities */ - { - abfCtx ctx; - struct abfDumpCtx_ dump; - struct abfDrawCtx_ draw; - struct abfMetricsCtx_ metrics; - struct abfAFMCtx_ afm; - } abf; - struct /* pdfwrite library */ - { - pdwCtx ctx; - long flags; - long level; - } pdw; - struct /* Metrics mode data */ - { - int level; /* Output level */ - struct /* Metric data */ - { - struct abfMetricsCtx_ ctx; - abfGlyphCallbacks cb; - } metrics; - struct /* Aggregate bbox */ - { - float left; - float bottom; - float right; - float top; - struct /* Glyph that set value */ - { - abfGlyphInfo *left; - abfGlyphInfo *bottom; - abfGlyphInfo *right; - abfGlyphInfo *top; - } setby; - } bbox; - } mtx; - struct /* t1write library */ - { - long options; /* Control options */ -#define T1W_NO_UID (1 << 0) /* Remove UniqueID keys */ -#define T1W_DECID (1 << 1) /* -decid option */ -#define T1W_USEFD (1 << 2) /* -usefd option */ -#define T1W_REFORMAT (1 << 3) /* -pfb or -LWFN options */ -#define T1W_WAS_EMBEDDED (1 << 4) /* +E option */ - t1wCtx ctx; - Stream tmp; - Stream dbg; - long flags; /* Library flags */ - int lenIV; - long maxGlyphs; - long fd; /* -decid target fd */ - dnaDCL(char, gnames); /* -decid glyph names */ - } t1w; - struct /* svgwrite library */ - { - long options; /* Control options */ - svwCtx ctx; - unsigned short unrec; - Stream tmp; - Stream dbg; - long flags; /* Library flags */ - } svw; - struct /* ufowrite library */ - { - ufwCtx ctx; - Stream tmp; - Stream dbg; - long flags; /* Library flags */ - } ufow; - struct /* Dump cff mode */ - { - long flags; /* Control flags */ -#define DCF_Header (1 << 0) -#define DCF_NameINDEX (1 << 1) -#define DCF_TopDICTINDEX (1 << 3) -#define DCF_StringINDEX (1 << 4) -#define DCF_GlobalSubrINDEX (1 << 5) -#define DCF_Encoding (1 << 6) -#define DCF_Charset (1 << 7) -#define DCF_FDSelect (1 << 8) -#define DCF_FDArrayINDEX (1 << 9) -#define DCF_CharStringsINDEX (1 << 10) -#define DCF_PrivateDICT (1 << 11) -#define DCF_LocalSubrINDEX (1 << 12) -#define DCF_AllTables N_BIT_MASK(13) -#define DCF_BreakFlowed (1 << 13) /* Break flowed objects */ -#define DCF_TableSelected (1 << 14) /* -T option used */ -#define DCF_Flatten (1 << 15) /* Flatten charstrings */ -#define DCF_SaveStemCnt (1 << 16) /* Save h/vstems counts */ -#define DCF_IS_CUBE (1 << 17) /* Font has Cube data - use different stack and op limits. */ -#define DCF_IS_CFF2 (1 << 18) /* Font has CFF table is CFF 2 */ -#define DCF_END_HINTS (1 << 19) /* have seen moveto */ - - int level; /* Dump level */ - char *sep; /* Flowed text separator */ - SubrInfo global; /* Global subrs */ - dnaDCL(SubrInfo, local); /* Local subrs */ - dnaDCL(unsigned char, glyph); /* Per-glyph stem count */ - dnaDCL(RegionInfo, varRegionInfo); - long stemcnt; /* Current stem count */ - long vsIndex; /* needed to derive numRegions */ - long numRegions; /* needed to decode blend args */ - SubrInfo *fd; /* Current local info */ - } dcf; - struct /* Operand stack */ - { - long cnt; - float array[CFF2_MAX_OP_STACK]; - } stack; - struct /* Font Dict filter */ - { - dnaDCL(int, fdIndices); /* Source glyph width for -t1 -3 mode */ - } fd; - struct /* OTF cmap encoding */ - { - dnaDCL(unsigned long, encoding); - dnaDCL(cmapSegment4, segment); - } cmap; - struct /* Library contexts */ - { - dnaCtx dna; /* dynarr library */ - sfrCtx sfr; /* sfntread library */ - } ctx; - struct /* Callbacks */ - { - ctlMemoryCallbacks mem; - ctlStreamCallbacks stm; - abfGlyphCallbacks glyph; - abfGlyphBegCallback saveGlyphBeg; - abfGlyphCallbacks save; - int selected; - } cb; - struct /* Memory allocation failure simulation data */ - { - long iCall; /* Index of next call to mem_manange */ - long iFail; /* Index of failing call or FAIL_REPORT or FAIL_INACTIVE */ - } failmem; - long maxOpStack; -}; - -/* Check stack contains at least n elements. */ -#define CHKUFLOW(n) \ - do { \ - if (h->stack.cnt < (n)) fatal(h, "Type 2 stack underflow"); \ - } while (0) - -/* Check stack has room for n elements. */ -#define CHKOFLOW(n) \ - do { \ - if (h->stack.cnt + (n) > h->maxOpStack) \ - fatal(h, "Type 2 stack overflow"); \ - } while (0) - -/* Stack access without check. */ -#define INDEX(i) (h->stack.array[i]) -#define POP() (h->stack.array[--h->stack.cnt]) -#define PUSH(v) (h->stack.array[h->stack.cnt++] = (float)(v)) - -/* SID to standard string length */ -#define SID2STD_LEN 391 /* number of entries in stdstr1.h */ - -static void dumpCstr(txCtx h, const ctlRegion *region, int inSubr); -static void callbackSubset(txCtx h); -static void txFree(txCtx h); - -/* ----------------------------- Error Handling ---------------------------- */ - -/* If first debug message for source file; print filename */ -static void printFilename(txCtx h) { - fflush(stdout); - if (h->src.print_file) { - fprintf(stderr, "%s: --- %s\n", h->progname, - strcmp(h->src.stm.filename, "-") == 0 ? "stdin" : h->src.stm.filename); - h->src.print_file = 0; - } -} - -/* Fatal exception handler. */ -static void CTL_CDECL fatal(txCtx h, char *fmt, ...) { - printFilename(h); - if (fmt != NULL) { - /* Print error message */ - va_list ap; - fprintf(stderr, "%s: ", h->progname); - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - va_end(ap); - fprintf(stderr, "\n"); - } - fprintf(stderr, "%s: fatal error\n", h->progname); - txFree(h); - exit(EXIT_FAILURE); -} - -/* Print file error message and quit */ -static void fileError(txCtx h, char *filename) { - fatal(h, "file error <%s> [%s]", strerror(errno), filename); -} - -/* --------------------------- Memory Management --------------------------- */ - -/* Allocate memory. */ -static void *memNew(txCtx h, size_t size) { - void *ptr = malloc(size); - if (ptr == NULL) - fatal(h, "no memory"); - return ptr; -} - -/* Free memory. */ -static void memFree(txCtx h, void *ptr) { - if (ptr != NULL) - free(ptr); -} - -/* ---------------------------- Memory Callbacks --------------------------- */ - -/* Manage memory. */ -static void *mem_manage(ctlMemoryCallbacks *cb, void *old, size_t size) { - if (size > 0) { - txCtx h = cb->ctx; - if (h->failmem.iCall++ == h->failmem.iFail) { - /* Simulate memory allocation failure */ - fprintf(stderr, "mem_manage() failed on call %ld.\n", - h->failmem.iCall - 1L); - return NULL; - } else if (old == NULL) - return malloc(size); /* size != 0, old == NULL */ - else - return realloc(old, size); /* size != 0, old != NULL */ - } else { - if (old == NULL) - return NULL; /* size == 0, old == NULL */ - else { - free(old); /* size == 0, old != NULL */ - return NULL; - } - } -} - -/* Initialize memory callbacks. */ -static void memInit(txCtx h) { - h->cb.mem.ctx = h; - h->cb.mem.manage = mem_manage; - h->failmem.iCall = 0; - h->failmem.iFail = FAIL_INACTIVE; -} - -/* Manage memory and handle failure. */ -static void *safeManage(ctlMemoryCallbacks *cb, void *old, size_t size) { - txCtx h = cb->ctx; - void *ptr = h->cb.mem.manage(&h->cb.mem, old, size); - if (size > 0 && ptr == NULL) - fatal(h, "no memory"); - return ptr; -} - -/* ------------------------------- Tmp Stream ------------------------------ */ - -/* Intialize tmp stream. */ -static void tmpSet(Stream *s, char *filename) { - s->type = stm_Tmp; - s->flags = 0; - s->filename = filename; - s->fp = NULL; - s->buf = NULL; - s->pos = 0; -} - -/* Open tmp stream. */ -static Stream *tmp_open(txCtx h, Stream *s) { - s->buf = memNew(h, TMPSIZE + BUFSIZ); - memset(s->buf, 0, TMPSIZE + BUFSIZ); - s->fp = tmpfile(); - if (s->fp == NULL) - fileError(h, s->filename); - return s; -} - -/* Seek on tmp stream. */ -static int tmp_seek(Stream *s, long offset) { - s->pos = offset; - return (offset < TMPSIZE) ? 0 : fseek(s->fp, offset - TMPSIZE, SEEK_SET); -} - -/* Return tmp stream position. */ -static size_t tmp_tell(Stream *s) { - return s->pos; -} - -/* Read tmp stream. */ -static size_t tmp_read(Stream *s, char **ptr) { - size_t length; - if (s->pos < TMPSIZE) { - /* Using buffer */ - *ptr = s->buf + s->pos; - length = TMPSIZE - s->pos; - - /* Anticipate next read */ - if (fseek(s->fp, 0, SEEK_SET) == -1) { - s->flags |= STM_TMP_ERR; - return 0; - } - } else { - /* Using file */ - *ptr = s->buf + TMPSIZE; - length = fread(*ptr, 1, BUFSIZ, s->fp); - } - s->pos += length; - return length; -} - -/* Write to tmp stream. */ -static size_t tmp_write(Stream *s, size_t count, char *ptr) { - if (s->pos < TMPSIZE) { - size_t length; - /* Writing to buffer */ - length = TMPSIZE - s->pos; - if (length > count) - memcpy(s->buf + s->pos, ptr, count); - else { - /* Buffer overflow; completely fill buffer */ - memcpy(s->buf + s->pos, ptr, length); - - /* Write rest to tmp file */ - if (fseek(s->fp, 0, SEEK_SET) == -1) { - s->flags = STM_TMP_ERR; - return 0; - } - count = length + fwrite(ptr + length, 1, count - length, s->fp); - } - } else - /* Writing to file */ - count = fwrite(ptr, 1, count, s->fp); - s->pos += count; - return count; -} - -/* Close tmp stream. */ -static int tmp_close(txCtx h, Stream *s) { - int result = (s->fp != NULL) ? fclose(s->fp) : 0; - if (s->buf != NULL) - memFree(h, s->buf); - s->fp = NULL; - s->buf = NULL; - s->pos = 0; - return result; -} - -/* ---------------------------- Stream Callbacks --------------------------- */ - -/* Open stream. */ -static void *stm_open(ctlStreamCallbacks *cb, int id, size_t size) { - txCtx h = cb->direct_ctx; - Stream *s = NULL; /* Suppress optimizer warning */ - switch (id) { - case CEF_SRC_STREAM_ID: - /* Open CEF source stream */ - s = &h->cef.src; - if (strcmp(s->filename, "-") == 0) - s->fp = stdin; - else { - s->fp = fopen(s->filename, "rb"); - if (s->fp == NULL) - return NULL; - } - break; - case T1R_SRC_STREAM_ID: - case CFR_SRC_STREAM_ID: - case TTR_SRC_STREAM_ID: - case SVR_SRC_STREAM_ID: - /* Source stream already open; just return it */ - s = &h->src.stm; - break; - case UFO_SRC_STREAM_ID: { - if (cb->clientFileName != NULL) { - char buffer[FILENAME_MAX]; - sprintf(buffer, "%s/%s", h->file.src, cb->clientFileName); - s = &h->src.stm; - - s->fp = fopen(buffer, "rb"); - if (s->fp == NULL) { - return NULL; - } - *dnaNEXT(h->src.streamStack) = *s; - } else - return NULL; - break; - } - case CEF_DST_STREAM_ID: - /* Open CEF destination stream */ - s = &h->dst.stm; - if (strcmp(s->filename, "-") == 0) - s->fp = stdout; - else { - s->fp = fopen(s->filename, "w+b"); - if (s->fp == NULL) - return NULL; - } - break; - case CFW_DST_STREAM_ID: - case T1W_DST_STREAM_ID: - case PDW_DST_STREAM_ID: - case SVW_DST_STREAM_ID: - /* Open destination stream */ - s = &h->dst.stm; - if (strcmp(s->filename, "-") == 0) - s->fp = stdout; - else { - s->fp = fopen(s->filename, "wb"); - if (s->fp == NULL) - return NULL; - } - break; - case UFW_DST_STREAM_ID: { - if (cb->clientFileName != NULL) { - char buffer[FILENAME_MAX]; - sprintf(buffer, "%s/%s", h->file.dst, cb->clientFileName); - s = &h->dst.stm; - - s->fp = fopen(buffer, "wt"); - if (s->fp == NULL) { - return NULL; - } - } else - return NULL; - break; - } - case CEF_TMP0_STREAM_ID: - s = &h->cef.tmp0; - tmp_open(h, s); - break; - case CEF_TMP1_STREAM_ID: - s = &h->cef.tmp1; - tmp_open(h, s); - break; - case T1R_TMP_STREAM_ID: - s = &h->t1r.tmp; - tmp_open(h, s); - break; - case SVR_TMP_STREAM_ID: - s = &h->svr.tmp; - tmp_open(h, s); - break; - case CFW_TMP_STREAM_ID: - s = &h->cfw.tmp; - tmp_open(h, s); - break; - case T1W_TMP_STREAM_ID: - s = &h->t1w.tmp; - tmp_open(h, s); - break; - case SVW_TMP_STREAM_ID: - s = &h->svw.tmp; - tmp_open(h, s); - break; - case T1R_DBG_STREAM_ID: - s = &h->t1r.dbg; - break; - case SVR_DBG_STREAM_ID: - s = &h->svr.dbg; - break; - case UFO_DBG_STREAM_ID: - s = &h->ufr.dbg; - break; - case UFW_DBG_STREAM_ID: - s = &h->ufow.dbg; - break; - case CFR_DBG_STREAM_ID: - s = &h->cfr.dbg; - break; - case TTR_DBG_STREAM_ID: - s = &h->ttr.dbg; - break; - case CFW_DBG_STREAM_ID: - s = &h->cfw.dbg; - if (s->fp == NULL) - return NULL; - break; - case T1W_DBG_STREAM_ID: - s = &h->t1w.dbg; - if (s->fp == NULL) - return NULL; - break; - case SVW_DBG_STREAM_ID: - s = &h->svw.dbg; - if (s->fp == NULL) - return NULL; - break; - default: - fatal(h, "invalid stream open"); - } - return s; -} - -/* Seek to stream position. */ -static int stm_seek(ctlStreamCallbacks *cb, void *stream, long offset) { - if (offset >= 0) { - Stream *s = stream; - switch (s->type) { - case stm_Src: - case stm_Dst: - case stm_Dbg: - return fseek(s->fp, offset, SEEK_SET); - case stm_Tmp: - return tmp_seek(s, offset); - } - } - return -1; /* Bad seek */ -} - -/* Return stream position. */ -static long stm_tell(ctlStreamCallbacks *cb, void *stream) { - Stream *s = stream; - switch (s->type) { - case stm_Src: - case stm_Dbg: - return ftell(s->fp); - break; - case stm_Dst: - if (0 != strcmp("-", s->filename)) - return ftell(s->fp); - break; - - case stm_Tmp: - return (long)tmp_tell(s); - } - return 0; /* Suppress compiler warning */ -} - -/* Read from stream. */ -static size_t stm_read(ctlStreamCallbacks *cb, void *stream, char **ptr) { - Stream *s = stream; - switch (s->type) { - case stm_Src: { - txCtx h = cb->direct_ctx; - if (h->seg.refill != NULL) - return h->seg.refill(h, ptr); - } - /* Fall through */ - case stm_Dst: - *ptr = s->buf; - return fread(s->buf, 1, BUFSIZ, s->fp); - case stm_Tmp: - return tmp_read(s, ptr); - } - return 0; /* Suppress compiler warning */ -} - -/* Write to stream. */ -static size_t stm_write(ctlStreamCallbacks *cb, void *stream, - size_t count, char *ptr) { - Stream *s = stream; - switch (s->type) { - case stm_Src: - case stm_Dst: - return fwrite(ptr, 1, count, s->fp); - case stm_Tmp: - return tmp_write(s, count, ptr); - case stm_Dbg: { - txCtx h = cb->direct_ctx; - printFilename(h); - fprintf(stderr, "%s: (%s) %.*s\n", - h->progname, s->filename, (int)count, ptr); - } - return count; - } - return 0; /* Suppress compiler warning */ -} - -/* Return stream status. */ -static int stm_status(ctlStreamCallbacks *cb, void *stream) { - Stream *s = stream; - if (s->type == stm_Tmp) { - if (s->flags & STM_TMP_ERR) - return CTL_STREAM_ERROR; - else if (s->pos < TMPSIZE) - return CTL_STREAM_OK; - } - if (feof(s->fp)) - return CTL_STREAM_END; - else if (ferror(s->fp)) - return CTL_STREAM_ERROR; - else - return CTL_STREAM_OK; -} - -/* Close stream. */ -static int stm_close(ctlStreamCallbacks *cb, void *stream) { - txCtx h = cb->direct_ctx; - Stream *s = stream; - if (s->type == stm_Tmp) - return tmp_close(cb->direct_ctx, s); - else if (s->fp == NULL || s->fp == stdout || s->flags & STM_DONT_CLOSE) - return 0; - else { - int retval; - FILE *fp = s->fp; - retval = fclose(fp); - s->fp = NULL; /* Avoid re-close */ - if (s->type == stm_Src) { - h->src.streamStack.cnt--; - if (h->src.streamStack.cnt > 0) - *s = h->src.streamStack.array[h->src.streamStack.cnt - 1]; - } - return retval; - } -} - -/* Initialize stream record. */ -static void stmSet(Stream *s, int type, char *filename, char *buf) { - s->type = type; - s->flags = 0; - s->filename = filename; - s->fp = NULL; - s->buf = buf; - s->pos = 0; -} - -/* Initialize debug stream. */ -static void dbgSet(Stream *s, char *filename) { - s->type = stm_Dbg; - s->flags = STM_DONT_CLOSE; - s->filename = filename; - s->fp = stderr; - s->buf = NULL; - s->pos = 0; -} - -/* Close steam at exit if still open. */ -static void stmFree(txCtx h, Stream *s) { - if (s->fp != NULL) - (void)fclose(s->fp); -} - -/* Initialize stream callbacks and stream records. */ -static void stmInit(txCtx h) { - h->cb.stm.direct_ctx = h; - h->cb.stm.indirect_ctx = NULL; - h->cb.stm.clientFileName = NULL; - h->cb.stm.open = stm_open; - h->cb.stm.seek = stm_seek; - h->cb.stm.tell = stm_tell; - h->cb.stm.read = stm_read; - h->cb.stm.write = stm_write; - h->cb.stm.status = stm_status; - h->cb.stm.close = stm_close; - - stmSet(&h->src.stm, stm_Src, h->file.src, h->src.buf); - stmSet(&h->dst.stm, stm_Dst, h->file.dst, h->dst.buf); - - stmSet(&h->cef.src, stm_Src, h->file.src, h->src.buf); - - tmpSet(&h->cef.tmp0, "(cef) tmpfile0"); - tmpSet(&h->cef.tmp1, "(cef) tmpfile1"); - tmpSet(&h->t1r.tmp, "(t1r) tmpfile"); - tmpSet(&h->cfw.tmp, "(cfw) tmpfile"); - tmpSet(&h->t1w.tmp, "(t1w) tmpfile"); - tmpSet(&h->svw.tmp, "(svw) tmpfile"); - tmpSet(&h->svw.tmp, "(ufw) tmpfile"); - - dbgSet(&h->t1r.dbg, "t1r"); - dbgSet(&h->cfr.dbg, "cfr"); - dbgSet(&h->svr.dbg, "svr"); - dbgSet(&h->ufr.dbg, "ufr"); - dbgSet(&h->ufow.dbg, "ufw"); - dbgSet(&h->ttr.dbg, "ttr"); - dbgSet(&h->cfw.dbg, "cfw"); - dbgSet(&h->t1w.dbg, "t1w"); - dbgSet(&h->svw.dbg, "svw"); -} - -/* ----------------------------- File Handling ----------------------------- */ - -/* Initialize destination filename. */ -static void dstFileSetName(txCtx h, char *filename) { - if (h->file.dd != NULL) - sprintf(h->file.dst, "%s/%s", h->file.dd, filename); - else - strcpy(h->file.dst, filename); -} - -/* Set automatic destination filename. */ -static void dstFileSetAutoName(txCtx h, abfTopDict *top) { - char buf[FILENAME_MAX]; - char *filename; - - if (h->flags & AUTO_FILE_FROM_FILE) { - char *p = strrchr(h->file.src, '/'); - if (p == NULL) - p = strrchr(h->file.src, '\\'); - strcpy(buf, (p == NULL) ? h->file.src : p + 1); - p = strrchr(buf, '.'); - if (p != NULL) - *p = '\0'; - filename = buf; - } else if (h->flags & AUTO_FILE_FROM_FONT) - filename = (top->sup.flags & ABF_CID_FONT) ? top->cid.CIDFontName.ptr : top->FDArray.array[0].FontName.ptr; - else - return; - - if (h->file.dd != NULL) - sprintf(h->file.dst, "%s/%s.%s", h->file.dd, filename, h->modename); - else - sprintf(h->file.dst, "%s.%s", filename, h->modename); -} - -/* Open destination file. */ -static void dstFileOpen(txCtx h, abfTopDict *top) { - dstFileSetAutoName(h, top); - - if (h->dst.stm.fp != NULL) - return; /* Already open */ - - /* Open dstination file */ - if (strcmp(h->dst.stm.filename, "-") == 0) - h->dst.stm.fp = stdout; - else { - h->dst.stm.fp = fopen(h->dst.stm.filename, "w"); - if (h->dst.stm.fp == NULL) - fileError(h, h->dst.stm.filename); - } -} - -/* Close destination file. */ -static void dstFileClose(txCtx h) { - if (h->dst.stm.fp != stdout) { - if (fclose(h->dst.stm.fp)) - fileError(h, h->dst.stm.filename); - } - h->dst.stm.fp = NULL; -} - -/* ------------------------------- Data Input ------------------------------ */ - -/* Fill source buffer. */ -static void fillbuf(txCtx h, long offset) { - h->src.length = (long)fread(h->src.buf, 1, sizeof(h->src.buf), h->src.stm.fp); - if (h->src.length == 0) { - if (feof(h->src.stm.fp)) - fatal(h, "end of file [%s]", h->src.stm.filename); - else - fileError(h, h->src.stm.filename); - } else { - h->src.offset = offset; - h->src.next = h->src.buf; - h->src.end = h->src.buf + h->src.length; - } - return; -} - -/* Read next sequential source buffer; update offset and return first byte. */ -static char nextbuf(txCtx h) { - fillbuf(h, h->src.offset + h->src.length); - return *h->src.next++; -} - -/* Seek to buffered data byte. */ -static void bufSeek(txCtx h, long offset) { - long delta = offset - h->src.offset; - if (delta >= 0 && delta < h->src.length) - /* Offset within current buffer; reposition next byte */ - h->src.next = h->src.buf + delta; - else { - if (fseek(h->src.stm.fp, offset, SEEK_SET)) - fileError(h, h->src.stm.filename); - fillbuf(h, offset); - } -} - -/* Copy count bytes from source stream. */ -static void readN(txCtx h, size_t count, char *ptr) { - size_t left = h->src.end - h->src.next; - - while (left < count) { - /* Copy buffer */ - memcpy(ptr, h->src.next, left); - ptr += left; - count -= left; - - /* Refill buffer */ - fillbuf(h, h->src.offset + h->src.length); - left = h->src.length; - } - - memcpy(ptr, h->src.next, count); - h->src.next += count; -} - -#define read1(h) \ - (unsigned char)((h->src.next == h->src.end) ? nextbuf(h) : *h->src.next++) - -/* Read 2-byte number. */ -static unsigned short read2(txCtx h) { - unsigned short value = read1(h) << 8; - return value | read1(h); -} - -/* Read 2-byte signed number. */ -static short sread2(txCtx h) { - unsigned short value = read1(h) << 8; - value |= read1(h); -#if SHRT_MAX == 32767 - return (short)value; -#else - return (short)((value > 32767) ? value - 65536 : value); -#endif -} - -/* Read 4-byte number. */ -static unsigned long read4(txCtx h) { - unsigned long value = (unsigned long)read1(h) << 24; - value |= (unsigned long)read1(h) << 16; - value |= read1(h) << 8; - return value | read1(h); -} - -/* Read 1-, 2-, 3-, or 4-byte number. */ -static unsigned long readn(txCtx h, int n) { - unsigned long value = 0; - switch (n) { - case 4: - value = read1(h); - case 3: - value = value << 8 | read1(h); - case 2: - value = value << 8 | read1(h); - case 1: - value = value << 8 | read1(h); - } - return value; -} - -/* ------------------------- RNG-Related Functions ------------------------ */ - -/* Seed RNG with scrambled time. */ -static void seedtime(void) { - time_t now = time(NULL); - srand((unsigned)(now * now)); -} - -/* Return a random number in the range [0 - N). */ -static long randrange(long N) { - return (long)((double)rand() / ((double)RAND_MAX + 1) * N); -} - -/* ------------------------------- dump mode ------------------------------- */ - -/* Begin font set. */ -static void dump_BegSet(txCtx h) { -} - -/* Begin font. */ -static void dump_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - h->abf.dump.fp = h->dst.stm.fp; - if (h->fd.fdIndices.cnt > 0) { - h->abf.dump.excludeSubset = (h->flags & SUBSET__EXCLUDE_OPT); - h->abf.dump.fdCnt = (int)h->fd.fdIndices.cnt; - h->abf.dump.fdArray = h->fd.fdIndices.array; - } - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - abfDumpBegFont(&h->abf.dump, top); -} - -/* End font. */ -static void dump_EndFont(txCtx h) { -} - -/* End font set. */ -static void dump_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup dump mode. */ -static void dump_SetMode(txCtx h) { - /* Initialize control data */ - h->abf.dump.level = 1; - - /* Set mode name */ - h->modename = "dump"; - - /* Set library functions */ - h->dst.begset = dump_BegSet; - h->dst.begfont = dump_BegFont; - h->dst.endfont = dump_EndFont; - h->dst.endset = dump_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphDumpCallbacks; - h->cb.glyph.direct_ctx = &h->abf.dump; - - /* Set source library flags */ - h->t1r.flags = T1R_USE_MATRIX; - h->cfr.flags = CFR_USE_MATRIX; - - h->mode = mode_dump; -} - -/* Print text parameter. */ -static void printText(int cnt, char *text[]) { - int i; - for (i = 0; i < cnt; i++) - printf("%s", text[i]); -} - -/* Mode-specific help. */ -static void dump_Help(txCtx h) { - static char *text[] = - { -#include "dump.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- ps mode -------------------------------- */ - -/* Begin font set. */ -static void ps_BegSet(txCtx h) { -} - -/* Begin font. */ -static void ps_BegFont(txCtx h, abfTopDict *top) { - if (h->abf.draw.level == 1 && h->arg.g.cnt == 0) - fatal(h, - "to use -1 option with all glyphs specify " - "an all-glyph range with -g 0-N option"); - dstFileOpen(h, top); - h->abf.draw.fp = h->dst.stm.fp; - if (h->src.type == src_TrueType) - h->abf.draw.flags |= ABF_FLIP_TICS; - else - h->abf.draw.flags &= ~ABF_FLIP_TICS; - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - abfDrawBegFont(&h->abf.draw, top); -} - -/* End font. */ -static void ps_EndFont(txCtx h) { - abfDrawEndFont(&h->abf.draw); -} - -/* End font set. */ -static void ps_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup ps mode. */ -static void ps_SetMode(txCtx h) { - /* Initialize control data */ - h->abf.draw.flags = 0; - h->abf.draw.level = 0; - - /* Set mode name */ - h->modename = "ps"; - - /* Set library functions */ - h->dst.begset = ps_BegSet; - h->dst.begfont = ps_BegFont; - h->dst.endfont = ps_EndFont; - h->dst.endset = ps_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphDrawCallbacks; - h->cb.glyph.direct_ctx = &h->abf.draw; - - /* Set source libarary flags */ - h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_ps; -} - -/* Mode-specific help. */ -static void ps_Help(txCtx h) { - static char *text[] = - { -#include "ps.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- afm mode ------------------------------- */ - -/* Begin font set. */ -static void afm_BegSet(txCtx h) { -} - -/* Begin new font. */ -static void afm_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - h->abf.afm.tmp_fp = tmpfile(); - if (h->abf.afm.tmp_fp == NULL) { - fatal(h, "Error opening temp file for AFM."); - } - h->abf.afm.fp = h->dst.stm.fp; - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - abfAFMBegFont(&h->abf.afm); -} - -/* End new font. */ -static void afm_EndFont(txCtx h) { - abfAFMEndFont(&h->abf.afm, h->top); -} - -/* End font set. */ -static void afm_EndSet(txCtx h) { - fclose(h->abf.afm.tmp_fp); - dstFileClose(h); -} - -/* Setup afm mode. */ -static void afm_SetMode(txCtx h) { - /* Set mode name */ - h->modename = "afm"; - - /* Set library functions */ - h->dst.begset = afm_BegSet; - h->dst.begfont = afm_BegFont; - h->dst.endfont = afm_EndFont; - h->dst.endset = afm_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphAFMCallbacks; - h->cb.glyph.direct_ctx = &h->abf.afm; - - /* Set source libarary flags */ - h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_afm; -} - -/* Mode-specific help. */ -static void afm_Help(txCtx h) { - static char *text[] = - { -#include "afm.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* ------------------------------ Path Library ----------------------------- */ - -/* Begin font set. */ -static void path_BegSet(txCtx h) { -} - -/* Begin new font. */ -static void path_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - - if (h->arg.path.level == 1) { - /* Prepare draw facility */ - h->abf.draw.fp = h->dst.stm.fp; - if (h->src.type == src_TrueType) - h->abf.draw.flags |= ABF_FLIP_TICS; - else - h->abf.draw.flags &= ~ABF_FLIP_TICS; - abfDrawBegFont(&h->abf.draw, top); - } else { - /* Prepare dump facility */ - h->abf.dump.fp = h->dst.stm.fp; - h->abf.dump.left = 0; - h->abf.dump.excludeSubset = 0; - h->abf.dump.fdCnt = 0; - abfDumpBegFont(&h->abf.dump, top); - } - - if (abfBegFont(h->abf.ctx, top)) - fatal(h, NULL); -} - -/* End new font. */ -static void path_EndFont(txCtx h) { - if (h->arg.path.level == 1) - abfDrawEndFont(&h->abf.draw); - - /* Initialize glyph callbacks */ - if (h->arg.path.level == 0) { - h->cb.glyph = abfGlyphDumpCallbacks; - h->cb.glyph.direct_ctx = &h->abf.dump; - } else { - h->cb.glyph = abfGlyphDrawCallbacks; - h->cb.glyph.direct_ctx = &h->abf.draw; - } - if (h->flags & PATH_SUPRESS_HINTS) { - h->cb.glyph.stem = NULL; - h->cb.glyph.flex = NULL; - } - - if (abfEndFont(h->abf.ctx, ABF_PATH_REMOVE_OVERLAP, &h->cb.glyph)) - fatal(h, NULL); -} - -/* End font set. */ -static void path_EndSet(txCtx h) { - if (abfFree(h->abf.ctx)) - fatal(h, NULL); -} - -/* Set control functions. */ -static void path_SetMode(txCtx h) { - h->abf.draw.flags = 0; - h->abf.draw.level = 1; - h->abf.dump.level = 6; - - /* Set mode name */ - h->modename = "path"; - - /* Set library functions */ - h->dst.begset = path_BegSet; - h->dst.begfont = path_BegFont; - h->dst.endfont = path_EndFont; - h->dst.endset = path_EndSet; - - if (h->abf.ctx == NULL) { - /* Create library context */ - h->abf.ctx = abfNew(&h->cb.mem, ABF_CHECK_ARGS); - if (h->abf.ctx == NULL) - fatal(h, "(abf) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = abfGlyphPathCallbacks; - h->cb.glyph.direct_ctx = h->abf.ctx; - - h->t1r.flags |= (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags |= (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_path; -} - -/* Mode-specific help. */ -static void path_Help(txCtx h) { - static char *text[] = - { -#include "path.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- cff mode ------------------------------- */ - -/* Reset the glyph flags. */ -static void resetGlyphs(txCtx h) { - int result = 1; - - switch (h->src.type) { - case src_Type1: - result = t1rResetGlyphs(h->t1r.ctx); - break; - case src_OTF: - case src_CFF: - result = cfrResetGlyphs(h->cfr.ctx); - break; - case src_TrueType: - result = ttrResetGlyphs(h->ttr.ctx); - break; - case src_SVG: - result = svrResetGlyphs(h->svr.ctx); - break; - case src_UFO: - result = ufoResetGlyphs(h->ufr.ctx); - break; - } - if (result) - fatal(h, NULL); -} - -/* Begin font set. */ -static void cff_BegSet(txCtx h) { - if (cfwBegSet(h->cfw.ctx, h->cfw.flags)) - fatal(h, NULL); -} - -/* Begin font. */ -static void cff_BegFont(txCtx h, abfTopDict *top) { - dstFileSetAutoName(h, top); - if (h->flags & PATH_REMOVE_OVERLAP) { - h->cb.glyph = abfGlyphPathCallbacks; - h->cb.glyph.direct_ctx = h->abf.ctx; - if (abfBegFont(h->abf.ctx, top)) - fatal(h, NULL); - } else { - h->cb.glyph = cfwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->cfw.ctx; - - if (!(h->cfw.flags & CFW_WRITE_CFF2)) { - /* This keeps these callbacks from being used when writing a - regular CFF, and avoids the overhead of processing the source - CFF2 blend args */ - h->cb.glyph.moveVF = NULL; - h->cb.glyph.lineVF = NULL; - h->cb.glyph.curveVF = NULL; - h->cb.glyph.stemVF = NULL; - } - - if (cfwBegFont(h->cfw.ctx, NULL, h->cfw.maxNumSubrs)) - fatal(h, NULL); - } - if (h->flags & PATH_SUPRESS_HINTS) { - h->cb.glyph.stem = NULL; - h->cb.glyph.flex = NULL; - } -} - -/* End font. */ -static void cff_EndFont(txCtx h) { - if (h->flags & PATH_REMOVE_OVERLAP) { - if (cfwBegFont(h->cfw.ctx, NULL, h->cfw.maxNumSubrs)) - fatal(h, NULL); - - resetGlyphs(h); - h->cb.glyph = cfwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->cfw.ctx; - if (!(h->cfw.flags & CFW_WRITE_CFF2)) { - /* This keeps these callbacks from being used when writing a - regular CFF, and avoids the overhead of trying to process the - source CFF2 blend args */ - h->cb.glyph.moveVF = NULL; - h->cb.glyph.lineVF = NULL; - h->cb.glyph.curveVF = NULL; - h->cb.glyph.stemVF = NULL; - } - if (h->flags & PATH_SUPRESS_HINTS) { - h->cb.glyph.stem = NULL; - h->cb.glyph.flex = NULL; - } - if (abfEndFont(h->abf.ctx, ABF_PATH_REMOVE_OVERLAP, &h->cb.glyph)) - fatal(h, NULL); - - if (cfwEndFont(h->cfw.ctx, h->top)) - fatal(h, NULL); - } else { - if (cfwEndFont(h->cfw.ctx, h->top)) - fatal(h, NULL); - } -} - -/* End font set. */ -static void cff_EndSet(txCtx h) { - if (cfwEndSet(h->cfw.ctx)) - fatal(h, NULL); - if (abfFree(h->abf.ctx)) - fatal(h, NULL); -} - -/* Setup cff mode. */ -static void cff_SetMode(txCtx h) { - /* Initialize control data */ - /* This is now set at the start of parseArgs - h->cfw.flags = 0; - */ - - /* Set mode name */ - h->modename = "cff"; - - /* Set library functions */ - h->dst.begset = cff_BegSet; - h->dst.begfont = cff_BegFont; - h->dst.endfont = cff_EndFont; - h->dst.endset = cff_EndSet; - - if (h->cfw.ctx == NULL) { - /* Create library context */ - h->cfw.ctx = cfwNew(&h->cb.mem, &h->cb.stm, CFW_CHECK_ARGS); - if (h->cfw.ctx == NULL) - fatal(h, "(cfw) can't init lib"); - } - - /* The default callbacks. These get reset in cff_BegFont() and - cff_EndFont() as some options play the font data through a different - library on a first pass, before writing to cff on a second pass */ - h->cb.glyph = cfwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->cfw.ctx; - - if (!(h->cfw.flags & CFW_WRITE_CFF2)) { - /* This keeps these callbacks from being used when writing a regular - CFF, and avoids the overhead of processing the source CFF2 blend - args */ - h->cb.glyph.moveVF = NULL; - h->cb.glyph.lineVF = NULL; - h->cb.glyph.curveVF = NULL; - h->cb.glyph.stemVF = NULL; - } - - if (h->abf.ctx == NULL) { - /* Create library context */ - h->abf.ctx = abfNew(&h->cb.mem, ABF_CHECK_ARGS); - if (h->abf.ctx == NULL) - fatal(h, "(abf) can't init lib"); - } - - /* Set source library flags */ - /* These are now set at the start of parseArgs - h->t1r.flags = 0; - h->cfr.flags = 0; - */ - - h->mode = mode_cff; -} - -/* Mode-specific help. */ -static void cff_Help(txCtx h) { - static char *text[] = - { -#include "cff.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* ------------------------------ Preserve GID ------------------------------ */ - -#define PRESERVE_CHARSTRING (1 << 15) - -static void callbackPreserveGlyph(txCtx h, int type, unsigned short id, - char *name) { - h->src.glyphs.array[id]->flags |= PRESERVE_CHARSTRING; -} - -/* Begin glyph path. */ -static int preserveGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->direct_ctx; - cb->info = info; - h->cb.selected = - (h->src.glyphs.array[info->tag]->flags & PRESERVE_CHARSTRING) != 0; - return h->cb.save.beg(&h->cb.save, info); -} - -/* Save glyph width. */ -static void preserveGlyphWidth(abfGlyphCallbacks *cb, float hAdv) { - txCtx h = cb->direct_ctx; - h->cb.save.width(&h->cb.save, hAdv); -} - -/* Add move to path. */ -static void preserveGlyphMove(abfGlyphCallbacks *cb, float x0, float y0) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.move(&h->cb.save, x0, y0); - } -} - -/* Add line to path. */ -static void preserveGlyphLine(abfGlyphCallbacks *cb, float x1, float y1) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.line(&h->cb.save, x1, y1); - } -} - -/* Add curve to path. */ -static void preserveGlyphCurve(abfGlyphCallbacks *cb, - float x1, float y1, - float x2, float y2, - float x3, float y3) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.curve(&h->cb.save, x1, y1, x2, y2, x3, y3); - } -} - -static void preserveGlyphStem(abfGlyphCallbacks *cb, - int flags, float edge0, float edge1) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.stem(&h->cb.save, flags, edge0, edge1); - } -} - -static void preserveGlyphFlex(abfGlyphCallbacks *cb, float depth, - float x1, float y1, - float x2, float y2, - float x3, float y3, - float x4, float y4, - float x5, float y5, - float x6, float y6) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.flex(&h->cb.save, depth, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6); - } -} - -/* Ignore general glyph operator. */ -static void preserveGlyphGenop(abfGlyphCallbacks *cb, - int cnt, float *args, int op) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.genop(&h->cb.save, cnt, args, op); - } -} - -/* Handle seac operator. */ -static void preserveGlyphSeac(abfGlyphCallbacks *cb, - float adx, float ady, int bchar, int achar) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.seac(&h->cb.save, adx, ady, bchar, achar); - } -} - -/* End glyph path. */ -static void preserveGlyphEnd(abfGlyphCallbacks *cb) { - txCtx h = cb->direct_ctx; - h->cb.save.end(&h->cb.save); -} - -static void preserveCubeBlend(abfGlyphCallbacks *cb, unsigned int nBlends, unsigned int numVals, float *blendVals) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeBlend(&h->cb.save, nBlends, numVals, blendVals); - } -} -static void preserveCubeSetwv(abfGlyphCallbacks *cb, unsigned int numDV) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeSetwv(&h->cb.save, numDV); - } -} -static void preserveCubeCompose(abfGlyphCallbacks *cb, int cubeLEIndex, float x0, float y0, int numDV, float *ndv) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeCompose(&h->cb.save, cubeLEIndex, x0, y0, numDV, ndv); - } -} -static void preserveCubeTransform(abfGlyphCallbacks *cb, float rotate, float scaleX, float scaleY, float skew, float skewY) { - txCtx h = cb->direct_ctx; - if (h->cb.selected) { - h->cb.save.cubeTransform(&h->cb.save, rotate, scaleX, scaleY, skew, skewY); - } -} - -/* preserve mode callbacks template. */ -static abfGlyphCallbacks preserveGlyphCallbacks = - { - NULL, - NULL, - NULL, - preserveGlyphBeg, - preserveGlyphWidth, - preserveGlyphMove, - preserveGlyphLine, - preserveGlyphCurve, - preserveGlyphStem, - preserveGlyphFlex, - preserveGlyphGenop, - preserveGlyphSeac, - preserveGlyphEnd, - preserveCubeBlend, - preserveCubeSetwv, - preserveCubeCompose, - preserveCubeTransform, - NULL, - NULL, - NULL, - NULL, -}; - -/* ------------------------------- Glyph List ------------------------------ */ - -/* Begin new glyph definition for gathering glyph info. */ -static int getGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - *dnaNEXT(h->src.glyphs) = info; - return ABF_SKIP_RET; -} - -/* Make glyph list from font. */ -static void getGlyphList(txCtx h) { - if (h->src.glyphs.cnt > 0) - return; /* Already have list for this font */ - - h->cb.saveGlyphBeg = h->cb.glyph.beg; - - /* Insert data gather function */ - h->cb.glyph.beg = getGlyphBeg; - h->cb.glyph.indirect_ctx = h; - - /* Iterate glyphs */ - switch (h->src.type) { - case src_Type1: - if (t1rIterateGlyphs(h->t1r.ctx, &h->cb.glyph) || - t1rResetGlyphs(h->t1r.ctx)) - fatal(h, NULL); - break; - case src_OTF: - case src_CFF: - if (cfrIterateGlyphs(h->cfr.ctx, &h->cb.glyph) || - cfrResetGlyphs(h->cfr.ctx)) - fatal(h, NULL); - break; - case src_TrueType: - if (ttrIterateGlyphs(h->ttr.ctx, &h->cb.glyph) || - ttrResetGlyphs(h->ttr.ctx)) - fatal(h, NULL); - break; - case src_SVG: - if (svrIterateGlyphs(h->svr.ctx, &h->cb.glyph) || - svrResetGlyphs(h->svr.ctx)) - fatal(h, NULL); - break; - - case src_UFO: - if (ufoIterateGlyphs(h->ufr.ctx, &h->cb.glyph) || - ufoResetGlyphs(h->ufr.ctx)) - fatal(h, NULL); - break; - } - - /* Restore saved function */ - h->cb.glyph.beg = h->cb.saveGlyphBeg; -} - -/* Construct arg buffer from subset list to simulated -g option. */ -static void makeSubsetArgList(txCtx h) { - long i; - int rangecnt = 0; - unsigned short first = h->subset.glyphs.array[0]; - unsigned short last = first; - h->subset.args.cnt = 0; - for (i = 1; i <= h->subset.glyphs.cnt; i++) { - unsigned short curr; - if (i < h->subset.glyphs.cnt) - curr = h->subset.glyphs.array[i]; - else - curr = 0; - - if (last + 1 != curr) { - char buf[12]; /* 5 digits + hyphen + 5 digits + nul */ - if (first == last) - sprintf(buf, "%hu", last); - else - sprintf(buf, "%hu-%hu", first, last); - strcpy(dnaEXTEND(h->subset.args, (long)strlen(buf) + 1), buf); - first = curr; - rangecnt++; - } - last = curr; - } - h->arg.g.cnt = rangecnt; - h->arg.g.substrs = h->subset.args.array; -} - -/* ----------------------------- Subset Parsing ---------------------------- */ - -enum /* Glyph selector types */ -{ - sel_by_tag, - sel_by_cid, - sel_by_name -}; - -/* Parse subset args. */ -static void parseSubset(txCtx h, void (*select)(txCtx h, int type, - unsigned short id, char *name)) { - long i; - char *p = h->arg.g.substrs; - - for (i = 0; i < h->arg.g.cnt; i++) { - unsigned short id; - unsigned short lo; - unsigned short hi; - - if (*p == '/') { - /* CID */ - if (sscanf(p, "/%hu-/%hu", &lo, &hi) == 2) - ; - else if (sscanf(p, "/%hu", &lo) == 1) - hi = lo; - else - goto next; - - for (id = lo; id <= hi; id++) - select(h, sel_by_cid, id, NULL); - - } else if (isdigit(*p)) { - /* Tag */ - if (sscanf(p, "%hu-%hu", &lo, &hi) == 2) - ; - else if (sscanf(p, "%hu", &lo) == 1) - hi = lo; - else - goto next; - - for (id = lo; id <= hi; id++) - select(h, sel_by_tag, id, NULL); - } else - /* Name */ - select(h, sel_by_name, 0, p); - - /* Advance to next substring */ - next: - while (*p++ != '\0') - ; - } -} - -/* Parse subset args. */ -static void parseFDSubset(txCtx h) { - long i; - char *p = h->arg.g.substrs; - - for (i = 0; i < h->arg.g.cnt; i++) { - unsigned short id; - unsigned short lo; - unsigned short hi; - - if (isdigit(*p)) { - /* Tag */ - if (sscanf(p, "%hu-%hu", &lo, &hi) == 2) - ; - else if (sscanf(p, "%hu", &lo) == 1) - hi = lo; - else - goto next; - - for (id = lo; id <= hi; id++) - *dnaNEXT(h->fd.fdIndices) = id; - } else { - fatal(h, "-fd argument is not an integer."); - } - /* Advance to next substring */ - next: - while (*p++ != '\0') - ; - } -} - -/* -------------------------------- cef mode ------------------------------- */ - -/* Begin font set. */ -static void cef_BegSet(txCtx h) { -} - -/* Begin font. */ -static void cef_BegFont(txCtx h, abfTopDict *top) { - dstFileSetAutoName(h, top); -} - -/* Compare glyphs by their CID. */ -static int CTL_CDECL cef_cmpByCID(const void *first, const void *second, - void *ctx) { - txCtx h = ctx; - abfGlyphInfo *a = h->src.glyphs.array[*(unsigned short *)first]; - abfGlyphInfo *b = h->src.glyphs.array[*(unsigned short *)second]; - if (a->cid < b->cid) - return -1; - else if (a->cid > b->cid) - return 1; - else - return 0; -} - -/* Match glyph by its CID. */ -static int CTL_CDECL cef_matchByCID(const void *key, const void *value, - void *ctx) { - txCtx h = ctx; - unsigned short a = *(unsigned short *)key; - unsigned short b = h->src.glyphs.array[*(unsigned short *)value]->cid; - if (a < b) - return -1; - else if (a > b) - return 1; - else - return 0; -} - -/* Compare glyphs by their name. */ -static int CTL_CDECL cef_cmpByName(const void *first, const void *second, - void *ctx) { - txCtx h = ctx; - return strcmp(h->src.glyphs.array[*(unsigned short *)first]->gname.ptr, - h->src.glyphs.array[*(unsigned short *)second]->gname.ptr); -} - -/* Match glyph by its name. */ -static int CTL_CDECL cef_matchByName(const void *key, const void *value, - void *ctx) { - txCtx h = ctx; - return strcmp(key, - h->src.glyphs.array[*(unsigned short *)value]->gname.ptr); -} - -/* Make glyph lookup array. */ -static void makeGlyphLookup(txCtx h, ctuCmpFunc cmp) { - long i; - - /* Make lookup array of all tags */ - dnaSET_CNT(h->cef.lookup, h->src.glyphs.cnt); - for (i = 0; i < h->cef.lookup.cnt; i++) - h->cef.lookup.array[i] = (unsigned short)i; - - /* Sort array */ - ctuQSort(h->cef.lookup.array, h->cef.lookup.cnt, - sizeof(unsigned short), cmp, h); -} - -/* Lookup glyph. */ -static void lookupGlyph(txCtx h, void *key, ctuMatchFunc match) { - size_t index; - if (ctuLookup(key, h->cef.lookup.array, h->cef.lookup.cnt, - sizeof(unsigned short), match, &index, h)) - dnaNEXT(h->cef.subset)->id = - h->src.glyphs.array[h->cef.lookup.array[index]]->tag; -} - -/* Select subset glyph. */ -static void selectGlyph(txCtx h, int type, unsigned short id, char *gname) { - switch (type) { - case sel_by_tag: - if (id < h->src.glyphs.cnt) - dnaNEXT(h->cef.subset)->id = id; - break; - case sel_by_cid: - if (h->top->sup.flags & ABF_CID_FONT) { - if (h->cef.lookup.cnt == 0) - /* Make CID lookup list */ - makeGlyphLookup(h, cef_cmpByCID); - lookupGlyph(h, &id, cef_matchByCID); - } - break; - case sel_by_name: - if (!(h->top->sup.flags & ABF_CID_FONT)) { - if (h->cef.lookup.cnt == 0) - /* Make glyph name lookup list */ - makeGlyphLookup(h, cef_cmpByName); - lookupGlyph(h, gname, cef_matchByName); - } - break; - } -} - -/* Match glyph name */ -static int CTL_CDECL matchName(const void *key, const void *value) { - return strcmp((char *)key, ((Name2UV *)value)->gname); -} - -/* Map glyph name to Unicode value using simplified assignment algorithm. */ -static unsigned short mapName2UV(txCtx h, char *gname, unsigned short *unrec) { - static const Name2UV agl[] = - { -#include "agl2uv.h" - }; - Name2UV *map = (Name2UV *)bsearch(gname, agl, ARRAY_LEN(agl), - sizeof(Name2UV), matchName); - if (map != NULL) - return map->uv; /* Match found */ - - /* Not found */ - if (strcmp(gname, ".notdef") == 0) - return 0xFFFF; /* No encoding for .notdef */ - - if (gname[0] == 'u' && - gname[1] == 'n' && - gname[2] == 'i' && - isxdigit(gname[3]) && !islower(gname[3]) && - isxdigit(gname[4]) && !islower(gname[4]) && - isxdigit(gname[5]) && !islower(gname[5]) && - isxdigit(gname[6]) && !islower(gname[6]) && - gname[7] == '\0') - /* uni name; return hex part */ - return (unsigned short)strtol(&gname[3], NULL, 16); - - /* return Private Use Area UV */ - return (*unrec)++; -} - -/* Get User Design Vector. */ -static float *getUDV(txCtx h) { - static float UDV[CFF2_MAX_AXES]; - int i; - char *p; - char *q; - - if (h->arg.U == NULL) - return NULL; - - /* Parse User Design Vector */ - for (i = 0; i < CFF2_MAX_AXES; i++) - UDV[i] = 0.0; - - p = h->arg.U; - for (i = 0; i < CFF2_MAX_AXES; i++) { - UDV[i] = (float)strtod(p, &q); - if (p == q || (*q != ',' && *q != '\0')) - fatal(h, "bad UDV"); - else if (*q == '\0') - break; - p = q + 1; - } - - return UDV; -} - -/* Print CEF subset specification. */ -static void printSpec(txCtx h, cefEmbedSpec *spec) { - char *p; - long i; - - printf( - "--- CEF subset:\n" - "SRC font %s\n" - "SRC glyphs %ld\n" - "DST font %s\n" - "DST glyphs %ld\n", - h->cef.src.filename, h->src.glyphs.cnt, - h->dst.stm.filename, spec->subset.cnt); - - p = (h->top->sup.flags & ABF_CID_FONT) ? "/" : ""; - for (i = 0; i < spec->subset.cnt; i++) { - printf("%s%hu", p, spec->subset.array[i].id); - p = (h->top->sup.flags & ABF_CID_FONT) ? ",/" : ","; - } - printf("\n"); - - if (spec->subset.names == NULL) - return; - - /* Print glyph names */ - p = ""; - for (i = 0; i < spec->subset.cnt; i++) { - unsigned short id = spec->subset.array[i].id; - if (id < CEF_VID_BEGIN) - printf("%s%s", p, spec->subset.names[id]); - else - printf("%svid-%hu", p, id); - p = ","; - } - printf("\n"); -} - -/* CEF glyph mapping callback. */ -static void cefGlyphMap(cefMapCallback *cb, - unsigned short gid, abfGlyphInfo *info) { - int cid = info->flags & ABF_GLYPH_CID; - if (gid == 0) { - if (cid) - printf("DST map [gid]=/cid\n"); - else - printf("DST map [gid]=\n"); - } - if (cid) - printf("[%hu]=/%hu ", gid, info->cid); - else - printf("[%hu]=<%s> ", gid, info->gname.ptr); -} - -/* End font. */ -static void cef_EndFont(txCtx h) { - cefMapCallback map; - cefEmbedSpec spec; - int result; - long i; - unsigned short unrec; - - getGlyphList(h); - - if (h->arg.g.cnt == 0) { - /* Whole font subset */ - dnaSET_CNT(h->cef.subset, h->src.glyphs.cnt); - for (i = 0; i < h->cef.subset.cnt; i++) - h->cef.subset.array[i].id = (unsigned short)i; - } else { - h->cef.subset.cnt = 0; - h->cef.lookup.cnt = 0; - parseSubset(h, selectGlyph); - } - - h->cef.gnames.cnt = 0; - unrec = 0xE000; /* Start of Private Use Area */ - - if (h->top->sup.flags & ABF_CID_FONT) { - /* Make CID subset, encoding all glyphs in PUA */ - for (i = 0; i < h->cef.subset.cnt; i++) { - cefSubsetGlyph *dst = &h->cef.subset.array[i]; - abfGlyphInfo *src = h->src.glyphs.array[dst->id]; - dst->id = src->cid; - dst->uv = unrec++; - } - } else { - /* Make tag list and assign Unicode encoding */ - for (i = 0; i < h->cef.subset.cnt; i++) { - cefSubsetGlyph *dst = &h->cef.subset.array[i]; - abfGlyphInfo *src = h->src.glyphs.array[dst->id]; - dst->uv = mapName2UV(h, src->gname.ptr, &unrec); - } - - /* Decide whether to use name list */ - switch (h->src.type) { - case src_Type1: - break; /* Use names */ - case src_OTF: - case src_CFF: - if (rand() & 0x0100) - goto initspec; - break; /* Use names 50% of the time */ - case src_TrueType: - goto initspec; /* Don't use names */ - } - - /* Make name list */ - dnaSET_CNT(h->cef.gnames, h->src.glyphs.cnt + 1); - for (i = 0; i < h->src.glyphs.cnt; i++) - h->cef.gnames.array[i] = h->src.glyphs.array[i]->gname.ptr; - h->cef.gnames.array[i] = NULL; - } - -#if 0 - { - /* Add 2 virtual glyphs */ - cefSubsetGlyph *glyph = dnaEXTEND(h->cef.subset, 2); - glyph[0].id = CEF_VID_BEGIN + 0; - glyph[0].uv = 0xa000; - glyph[1].id = CEF_VID_BEGIN + 1; - glyph[1].uv = 0xa001; - } -#endif - - /* Initialize embedding spec. */ -initspec: - spec.flags = h->arg.cef.flags; - spec.newFontName = h->arg.cef.F; - spec.UDV = getUDV(h); - spec.URL = NULL; - spec.subset.cnt = h->cef.subset.cnt; - spec.subset.array = h->cef.subset.array; - spec.subset.names = (h->cef.gnames.cnt > 0) ? h->cef.gnames.array : NULL; - spec.kern.cnt = 0; - - printSpec(h, &spec); - - /* Turn off segmentation on source stream */ - h->seg.refill = NULL; - - /* Initialize glyph mapping callback */ - map.ctx = NULL; - map.glyphmap = cefGlyphMap; - - if (h->arg.cef.flags & CEF_WRITE_SVG) - cefSetSvwFlags(h->cef.ctx, h->svw.flags); - - /* Make embedding font */ - result = cefMakeEmbeddingFont(h->cef.ctx, &spec, &map); - if (result) - fatal(h, "(cef) %s", cefErrStr(result)); - else - printf("\n"); -} - -/* End font set. */ -static void cef_EndSet(txCtx h) { -} - -/* Setup cef mode. */ -static void cef_SetMode(txCtx h) { - /* Initialize args */ - h->arg.cef.F = NULL; - h->arg.cef.flags = 0; - h->svw.flags = SVW_NEWLINE_UNIX; /* In case cfembed library used in svgwrite mode */ - - /* Set mode name */ - h->modename = "cef"; - - /* Set library functions */ - h->dst.begset = cef_BegSet; - h->dst.begfont = cef_BegFont; - h->dst.endfont = cef_EndFont; - h->dst.endset = cef_EndSet; - - if (h->cef.ctx == NULL) { - h->cef.ctx = cefNew(&h->cb.mem, &h->cb.stm, CEF_CHECK_ARGS); - if (h->cef.ctx == NULL) - fatal(h, "(cef) can't init lib"); - } - - /* Set source libarary flags */ - h->t1r.flags = 0; - h->cfr.flags = 0; - - h->mode = mode_cef; -} - -/* Mode-specific help. */ -static void cef_Help(txCtx h) { - static char *text[] = - { -#include "cef.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- pdf mode ------------------------------- */ - -/* Begin font set. */ -static void pdf_BegSet(txCtx h) { -} - -/* Begin new font. */ -static void pdf_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - top->sup.filename = - (strcmp(h->src.stm.filename, "-") == 0) ? "stdin" : h->src.stm.filename; - - if (h->src.type == src_TrueType) - h->pdw.flags |= PDW_FLIP_TICS; - else - h->pdw.flags &= ~PDW_FLIP_TICS; - - if (pdwBegFont(h->pdw.ctx, h->pdw.flags, h->pdw.level, top)) - fatal(h, NULL); -} - -/* End new font. */ -static void pdf_EndFont(txCtx h) { - if (pdwEndFont(h->pdw.ctx)) - fatal(h, NULL); -} - -/* End font set. */ -static void pdf_EndSet(txCtx h) { -} - -/* Set control functions. */ -static void pdf_SetMode(txCtx h) { - h->pdw.flags = 0; - h->pdw.level = 0; - - /* Set mode name */ - h->modename = "pdf"; - - /* Set library functions */ - h->dst.begset = pdf_BegSet; - h->dst.begfont = pdf_BegFont; - h->dst.endfont = pdf_EndFont; - h->dst.endset = pdf_EndSet; - - if (h->pdw.ctx == NULL) { - /* Create library context */ - h->pdw.ctx = pdwNew(&h->cb.mem, &h->cb.stm, PDW_CHECK_ARGS); - if (h->pdw.ctx == NULL) - fatal(h, "(pdw) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = pdwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->pdw.ctx; - - h->t1r.flags |= (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags |= (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_pdf; -} - -/* Mode-specific help. */ -static void pdf_Help(txCtx h) { - static char *text[] = - { -#include "pdf.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* ------------------------------- mtx mode ------------------------------- */ - -/* Begin glyph path. */ -static int mtxGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->direct_ctx; - cb->info = info; - return h->mtx.metrics.cb.beg(&h->mtx.metrics.cb, info); -} - -/* Save glyph width. */ -static void mtxGlyphWidth(abfGlyphCallbacks *cb, float hAdv) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.width(&h->mtx.metrics.cb, hAdv); -} - -/* Add move to path. */ -static void mtxGlyphMove(abfGlyphCallbacks *cb, float x0, float y0) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.move(&h->mtx.metrics.cb, x0, y0); -} - -/* Add line to path. */ -static void mtxGlyphLine(abfGlyphCallbacks *cb, float x1, float y1) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.line(&h->mtx.metrics.cb, x1, y1); -} - -/* Add curve to path. */ -static void mtxGlyphCurve(abfGlyphCallbacks *cb, - float x1, float y1, - float x2, float y2, - float x3, float y3) { - txCtx h = cb->direct_ctx; - h->mtx.metrics.cb.curve(&h->mtx.metrics.cb, x1, y1, x2, y2, x3, y3); -} - -/* Ignore general glyph operator. */ -static void mtxGlyphGenop(abfGlyphCallbacks *cb, - int cnt, float *args, int op) { - /* Nothing to do */ -} - -/* Handle seac operator. */ -static void mtxGlyphSeac(abfGlyphCallbacks *cb, - float adx, float ady, int bchar, int achar) { - /* Nothing to do */ -} - -/* End glyph path. */ -static void mtxGlyphEnd(abfGlyphCallbacks *cb) { - txCtx h = cb->direct_ctx; - abfMetricsCtx g = &h->mtx.metrics.ctx; - abfGlyphInfo *info = cb->info; - - h->mtx.metrics.cb.end(&h->mtx.metrics.cb); - - fprintf(h->dst.stm.fp, "glyph[%hu] {", info->tag); - if (info->flags & ABF_GLYPH_CID) - /* Dump CID-keyed glyph */ - fprintf(h->dst.stm.fp, "%hu,%hhu", info->cid, info->iFD); - else { - /* Dump name-keyed glyph */ - abfEncoding *enc = &info->encoding; - fprintf(h->dst.stm.fp, "%s", info->gname.ptr); - if (enc->code == ABF_GLYPH_UNENC) - fprintf(h->dst.stm.fp, ",-"); - else { - /* Dump encoding */ - char *sep = ","; - do { - if (info->flags & ABF_GLYPH_UNICODE) - fprintf(h->dst.stm.fp, "%s0x%04lX", sep, enc->code); - else - fprintf(h->dst.stm.fp, "%s0x%02lX", sep, enc->code); - sep = "+"; - enc = enc->next; - } while (enc != NULL); - } - } - - if (h->mtx.level & 1) - /* Real metrics */ - fprintf(h->dst.stm.fp, ",%g,{%g,%g,%g,%g}}\n", g->real_mtx.hAdv, - g->real_mtx.left, g->real_mtx.bottom, - g->real_mtx.right, g->real_mtx.top); - else - /* Integer metrics */ - fprintf(h->dst.stm.fp, ",%ld,{%ld,%ld,%ld,%ld}}\n", g->int_mtx.hAdv, - g->int_mtx.left, g->int_mtx.bottom, - g->int_mtx.right, g->int_mtx.top); - - if (h->mtx.level > 1) { - /* Compute aggregate bounding box */ - if (g->real_mtx.left != 0 || - g->real_mtx.bottom != 0 || - g->real_mtx.right != 0 || - g->real_mtx.top != 0) { - /* Marking glyph */ - if (h->mtx.bbox.left == 0 && - h->mtx.bbox.bottom == 0 && - h->mtx.bbox.right == 0 && - h->mtx.bbox.top == 0) { - /* First marking glyph; set all values */ - h->mtx.bbox.left = g->real_mtx.left; - h->mtx.bbox.bottom = g->real_mtx.bottom; - h->mtx.bbox.right = g->real_mtx.right; - h->mtx.bbox.top = g->real_mtx.top; - - h->mtx.bbox.setby.left = info; - h->mtx.bbox.setby.bottom = info; - h->mtx.bbox.setby.right = info; - h->mtx.bbox.setby.top = info; - } else { - if (h->mtx.bbox.left > g->real_mtx.left) { - h->mtx.bbox.left = g->real_mtx.left; - h->mtx.bbox.setby.left = info; - } - if (h->mtx.bbox.bottom > g->real_mtx.bottom) { - h->mtx.bbox.bottom = g->real_mtx.bottom; - h->mtx.bbox.setby.bottom = info; - } - if (h->mtx.bbox.right < g->real_mtx.right) { - h->mtx.bbox.right = g->real_mtx.right; - h->mtx.bbox.setby.right = info; - } - if (h->mtx.bbox.top < g->real_mtx.top) { - h->mtx.bbox.top = g->real_mtx.top; - h->mtx.bbox.setby.top = info; - } - } - } - } -} - -/* Mtx mode callbacks template. */ -static abfGlyphCallbacks mtxGlyphCallbacks = - { - NULL, - NULL, - NULL, - mtxGlyphBeg, - mtxGlyphWidth, - mtxGlyphMove, - mtxGlyphLine, - mtxGlyphCurve, - NULL, - NULL, - mtxGlyphGenop, - mtxGlyphSeac, - mtxGlyphEnd, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, -}; - -/* Begin font set. */ -static void mtx_BegSet(txCtx h) { -} - -/* Begin font. */ -static void mtx_BegFont(txCtx h, abfTopDict *top) { - dstFileOpen(h, top); - - h->mtx.bbox.left = 0; - h->mtx.bbox.bottom = 0; - h->mtx.bbox.right = 0; - h->mtx.bbox.top = 0; - - if (top->sup.flags & ABF_CID_FONT) - fprintf(h->dst.stm.fp, - "### glyph[tag] {cid,fd,width,{left,bottom,right,top}}\n"); - else - fprintf(h->dst.stm.fp, - "### glyph[tag] {gname,enc,width,{left,bottom,right,top}}\n"); -} - -/* End font. */ -static void mtx_EndFont(txCtx h) { - if (h->mtx.level > 1) { - /* Print bbox information */ - fprintf(h->dst.stm.fp, "### aggregate\n"); - if (h->mtx.level == 2) - fprintf(h->dst.stm.fp, "bbox {%g,%g,%g,%g}\n", - floor(h->mtx.bbox.left), floor(h->mtx.bbox.bottom), - ceil(h->mtx.bbox.right), ceil(h->mtx.bbox.top)); - else - fprintf(h->dst.stm.fp, "bbox {%g,%g,%g,%g}\n", - h->mtx.bbox.left, h->mtx.bbox.bottom, - h->mtx.bbox.right, h->mtx.bbox.top); - - if (h->mtx.bbox.left != 0 || - h->mtx.bbox.bottom != 0 || - h->mtx.bbox.right != 0 || - h->mtx.bbox.top != 0) { - /* bbox was set; print setting glyph(s) */ - fprintf(h->dst.stm.fp, "tag {%hu,%hu,%hu,%hu}\n", - h->mtx.bbox.setby.left->tag, - h->mtx.bbox.setby.bottom->tag, - h->mtx.bbox.setby.right->tag, - h->mtx.bbox.setby.top->tag); - if (h->top->sup.flags & ABF_CID_FONT) - fprintf(h->dst.stm.fp, "cid {%hu,%hu,%hu,%hu}\n", - h->mtx.bbox.setby.left->cid, - h->mtx.bbox.setby.bottom->cid, - h->mtx.bbox.setby.right->cid, - h->mtx.bbox.setby.top->cid); - else - fprintf(h->dst.stm.fp, "gname {%s,%s,%s,%s}\n", - h->mtx.bbox.setby.left->gname.ptr, - h->mtx.bbox.setby.bottom->gname.ptr, - h->mtx.bbox.setby.right->gname.ptr, - h->mtx.bbox.setby.top->gname.ptr); - } - } -} - -/* End font set. */ -static void mtx_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup mtx mode. */ -static void mtx_SetMode(txCtx h) { - h->mtx.level = 0; - - /* Set mode name */ - h->modename = "mtx"; - - /* Set library functions */ - h->dst.begset = mtx_BegSet; - h->dst.begfont = mtx_BegFont; - h->dst.endfont = mtx_EndFont; - h->dst.endset = mtx_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph = mtxGlyphCallbacks; - h->cb.glyph.direct_ctx = h; - - /* Initialize metrics facility */ - h->mtx.metrics.cb = abfGlyphMetricsCallbacks; - h->mtx.metrics.cb.direct_ctx = &h->mtx.metrics.ctx; - h->mtx.metrics.ctx.flags = 0; - - /* Set source libarary flags */ - h->t1r.flags = (T1R_UPDATE_OPS | T1R_USE_MATRIX); - h->cfr.flags = (CFR_UPDATE_OPS | CFR_USE_MATRIX); - - h->mode = mode_mtx; -} - -/* Mode-specific help. */ -static void mtx_Help(txCtx h) { - static char *text[] = - { -#include "mtx.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* --------------------------------- t1 mode ------------------------------- */ - -/* Begin font set. */ -static void t1_BegSet(txCtx h) { -} - -/* Begin new glyph definition for patching glyph info. if -decid enabled. */ -static int t1_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - char gname[64]; - long nameLen; - - if (info->flags & ABF_GLYPH_SEEN) - return ABF_SKIP_RET; /* Already in subset */ - - if (h->t1w.fd == -1) { - h->t1w.fd = info->iFD; /* First glyph; set target fd */ - } else if (info->cid == 0) /* For CID 0, always just use current iFD. */ - { - info->iFD = h->t1w.fd; - } else if (info->iFD != h->t1w.fd) { - if (h->t1w.options & T1W_USEFD) - info->iFD = h->t1w.fd; - else - fatal(h, "selected glyphs span multiple FDs"); - } - /* Create glyph name */ - if (info->cid == 0) - strcpy(gname, ".notdef"); - else - sprintf(gname, "cid%hu", info->cid); - nameLen = strlen(gname) + 1; - if ((h->t1w.gnames.size) < (h->t1w.gnames.cnt + nameLen)) { - dnaINDEX(h->t1w.gnames, h->t1w.gnames.size + nameLen); - /* Update all the gname ptrs, as we just moved h->t1w.gnames.array,and all the info->gname.ptr are invalid. */ - t1wUpdateGlyphNames(h->t1w.ctx, h->t1w.gnames.array); - } - - info->gname.ptr = &h->t1w.gnames.array[h->t1w.gnames.cnt]; - info->gname.impl = h->t1w.gnames.cnt; // hold current char index, to make renumbering this easier! - strcpy(info->gname.ptr, gname); - h->t1w.gnames.cnt += (long)nameLen; - - info->flags &= ~ABF_GLYPH_CID; /* Convert to name-keyed glyph */ - - return t1wGlyphCallbacks.beg(cb, info); -} - -/* Begin font. */ -static void t1_BegFont(txCtx h, abfTopDict *top) { - h->t1w.maxGlyphs = 0; - - /* Initialize glyph callbacks */ - if (h->flags & PATH_REMOVE_OVERLAP) { - h->cb.glyph = abfGlyphPathCallbacks; - h->cb.glyph.direct_ctx = h->abf.ctx; - } else { - h->cb.glyph = t1wGlyphCallbacks; - h->cb.glyph.direct_ctx = h->t1w.ctx; - } - if (h->flags & PATH_SUPRESS_HINTS) { - h->cb.glyph.stem = NULL; - h->cb.glyph.flex = NULL; - } - - if (h->t1w.options & T1W_DECID) { - /* Convert cid-keyed font to name-keyed font */ - if (!(top->sup.flags & ABF_CID_FONT)) - fatal(h, "-decid specified for non-CID font"); - - /* Initialize */ - h->t1w.fd = -1; - (void)dnaGROW(h->t1w.gnames, - ((h->subset.glyphs.cnt > 0) ? h->subset.glyphs.cnt : top->sup.nGlyphs) * 8); - h->t1w.gnames.cnt = 0; - - /* Replace callback */ - if (!(h->flags & PATH_REMOVE_OVERLAP)) - h->cb.glyph.beg = t1_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - } - if (h->t1w.options & T1W_WAS_EMBEDDED) - top->WasEmbedded = 1; - - if (h->t1w.flags & T1W_TYPE_BASE) - h->t1w.maxGlyphs = (top->sup.flags & ABF_CID_FONT) ? top->cid.CIDCount : top->sup.nGlyphs; - - dstFileSetAutoName(h, top); - - /* Initialize glyph callbacks */ - if (h->flags & PATH_REMOVE_OVERLAP) { - if (abfBegFont(h->abf.ctx, top)) - fatal(h, NULL); - } else { - if (t1wBegFont(h->t1w.ctx, h->t1w.flags, h->t1w.lenIV, h->t1w.maxGlyphs)) - fatal(h, NULL); - } -} - -/* Copy length bytes from source file to destination file. */ -static void copyFile(txCtx h, size_t length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - char buf[BUFSIZ]; - size_t cnt; - - /* Write whole buffers */ - cnt = length / BUFSIZ; - while (cnt--) - if (fread(buf, 1, BUFSIZ, src) != BUFSIZ) - fileError(h, srcfile); - else if (fwrite(buf, 1, BUFSIZ, dst) != BUFSIZ) - fileError(h, dstfile); - - /* Write partial buffers */ - cnt = length % BUFSIZ; - if (fread(buf, 1, cnt, src) != cnt) - fileError(h, srcfile); - else if (fwrite(buf, 1, cnt, dst) != cnt) - fileError(h, dstfile); -} - -/* Copy PFB segment. */ -static void copyPFBSegment(txCtx h, int type, long length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - /* Write segment header */ - putc(128, dst); - putc(type, dst); - putc(length & 0xFF, dst); - putc((length >> 8) & 0xFF, dst); - putc((length >> 16) & 0xFF, dst); - putc((length >> 24) & 0xFF, dst); - - /* Copy segment data */ - copyFile(h, length, src, srcfile, dst, dstfile); -} - -/* Write PFB format file. */ -static void writePFB(txCtx h, FILE *font, char *fontfile, - long begBinary, long begTrailer, long endTrailer) { - char *tmpfil = "(t1w) reformat tmpfil"; - FILE *tmp = tmpfile(); - if (tmp == NULL) - fileError(h, tmpfil); - - /* Write pfb font to tmp file */ - copyPFBSegment(h, 1, begBinary, font, fontfile, tmp, tmpfil); - copyPFBSegment(h, 2, begTrailer - begBinary, font, fontfile, tmp, tmpfil); - copyPFBSegment(h, 1, endTrailer - begTrailer, font, fontfile, tmp, tmpfil); - copyPFBSegment(h, 3, 0, font, fontfile, tmp, tmpfil); - - /* Copy tmp file to font file */ - font = freopen(fontfile, "wb", font); - if (font == NULL) - fileError(h, fontfile); - rewind(tmp); - copyFile(h, endTrailer + 4 * (1 + 1 + 4), tmp, tmpfil, font, fontfile); - - /* Close tmp file */ - if (fclose(tmp) == EOF) - fileError(h, tmpfil); -} - -/* Write 2-byte big-endian number. */ -static void write2(FILE *fp, unsigned short value) { - putc(value >> 8, fp); - putc(value, fp); -} - -/* Write 4-byte big-endian number. */ -static void write4(FILE *fp, unsigned long value) { - putc((value >> 24) & 0xFF, fp); - putc((value >> 16) & 0xFF, fp); - putc((value >> 8) & 0xFF, fp); - putc(value & 0xFF, fp); -} - -/* Write padding bytes */ -static void writePad(FILE *fp, long cnt) { - while (cnt--) - putc(0, fp); -} - -/* Copy POST resource. */ -static void copyPOSTRes(txCtx h, int type, long length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - /* Write resource header */ - write4(dst, 1 + 1 + length); - putc(type, dst); - putc(0, dst); - - /* Copy resource data */ - copyFile(h, length, src, srcfile, dst, dstfile); -} - -/* Copy POST resource. */ -static void writeSection(txCtx h, int type, long length, - FILE *src, char *srcfile, - FILE *dst, char *dstfile) { - /* Write full-length resouces */ - long cnt = length / 2046; - while (cnt--) - copyPOSTRes(h, type, 2046, src, srcfile, dst, dstfile); - - /* Write partial resource */ - cnt = length % 2046; - if (cnt > 0 || length == 0) - copyPOSTRes(h, type, cnt, src, srcfile, dst, dstfile); -} - -/* Write reference. */ -static void writeRef(FILE *fp, int *id, long *offset, long length) { - write2(fp, (unsigned short)((*id)++)); - write2(fp, (unsigned short)-1); - putc(0, fp); - putc((*offset >> 16) & 0xFF, fp); - putc((*offset >> 8) & 0xFF, fp); - putc(*offset & 0xFF, fp); - write4(fp, 0); - *offset += length + (4 + 1 + 1); -} - -/* Write references. */ -static void writeRefs(FILE *fp, int *id, long *offset, long length) { - long cnt = length / 2046; - while (cnt--) - writeRef(fp, id, offset, 2046); - - cnt = length % 2046; - if (cnt > 0 || length == 0) - writeRef(fp, id, offset, cnt); -} - -/* Write LWFN format file. */ -static void writeLWFN(txCtx h, FILE *font, char *fontfile, - long begBinary, long begTrailer, long endTrailer) { - enum { - MAP_HEADER_LEN = 16 + 4 + 4 * 2, - TYPE_LIST_LEN = 2 + 4 + 2 * 2, - REFERENCE_LEN = 2 * 2 + 1 + 3 + 4 - }; - int id; - long offset; - long length0 = begBinary; /* Text header */ - long length1 = begTrailer - begBinary; /* Binary section */ - long length2 = endTrailer - begTrailer; /* Text trailer */ - long length3 = 0; /* End-of-font program */ - long rescnt = ((length0 + 2045) / 2046 + - (length1 + 2045) / 2046 + - (length2 + 2045) / 2046 + - 1); - long datalen = rescnt * (4 + 1 + 1) + endTrailer; - long maplen = MAP_HEADER_LEN + TYPE_LIST_LEN + rescnt * REFERENCE_LEN; - char *tmpfil = "(t1w) reformat tmpfile"; - FILE *tmp = tmpfile(); - if (tmp == NULL) - fileError(h, tmpfil); - - /* Write resource header */ - write4(tmp, 256); - write4(tmp, 256 + datalen); - write4(tmp, datalen); - write4(tmp, maplen); - - /* Write system and application data area */ - writePad(tmp, 112 + 128); - - /* Write resources */ - writeSection(h, 1, length0, font, fontfile, tmp, tmpfil); - writeSection(h, 2, length1, font, fontfile, tmp, tmpfil); - writeSection(h, 1, length2, font, fontfile, tmp, tmpfil); - writeSection(h, 5, length3, font, fontfile, tmp, tmpfil); - - /* Write map header */ - writePad(tmp, 16 + 4 + 2); - write2(tmp, 0); - write2(tmp, MAP_HEADER_LEN); - write2(tmp, (unsigned short)maplen); - - /* Write type list */ - write2(tmp, 0); - write4(tmp, CTL_TAG('P', 'O', 'S', 'T')); - write2(tmp, (unsigned short)(rescnt - 1)); - write2(tmp, TYPE_LIST_LEN); - - /* Write reference list */ - id = 501; - offset = 0; - writeRefs(tmp, &id, &offset, length0); - writeRefs(tmp, &id, &offset, length1); - writeRefs(tmp, &id, &offset, length2); - writeRefs(tmp, &id, &offset, length3); - - /* Name list empty */ - - /* Copy tmp file to font file */ - font = freopen(fontfile, "wb", font); - if (font == NULL) - fileError(h, fontfile); - rewind(tmp); - copyFile(h, 256 + datalen + maplen, tmp, tmpfil, font, fontfile); - - /* Close tmp file */ - if (fclose(tmp) == EOF) - fileError(h, tmpfil); -} - -/* Perform platform-specific reformatting of file. */ -static void t1_Reformat(txCtx h) { - int state; - long begBinary; /* Offset to start of binary section */ - long begTrailer; /* Offset to start of trailer */ - long endTrailer; /* Offset to EOF */ - char *fontfile = h->dst.stm.filename; - FILE *font = fopen(fontfile, "rb"); - if (font == NULL) - fileError(h, fontfile); - - /* Find "eexec " string */ - state = 0; - for (;;) - switch (fgetc(font)) { - case 'e': - switch (state) { - case 0: - state = 1; - break; - case 1: - state = 2; - break; - case 3: - state = 4; - break; - default: - state = 0; - break; - } - break; - case 'x': - state = (state == 2) ? 3 : 0; - break; - case 'c': - state = (state == 4) ? 5 : 0; - break; - case ' ': - if (state == 5) { - begBinary = ftell(font); - if (begBinary == -1) - fileError(h, fontfile); - goto findTrailer; - } else - state = 0; - break; - case EOF: - if (feof(font)) - fatal(h, "can't find eexec"); - else - fileError(h, fontfile); - break; - } - -findTrailer: - /* Find a line of 64 '0' chars */ - state = 0; - for (;;) - switch (fgetc(font)) { - case '0': - if (++state == 64) { - begTrailer = ftell(font); - if (begTrailer == -1) - fileError(h, fontfile); - begTrailer -= 64; - goto findEOF; - } - break; - case EOF: - if (feof(font)) - fatal(h, "can't find tailer"); - else - fileError(h, fontfile); - break; - default: - state = 0; - break; - } - -findEOF: - /* Find end-of-file */ - if (fseek(font, 0, SEEK_END)) - fileError(h, fontfile); - endTrailer = ftell(font); - if (endTrailer == -1) - fileError(h, fontfile); - - rewind(font); - switch (h->t1w.flags & T1W_NEWLINE_MASK) { - case T1W_NEWLINE_WIN: - writePFB(h, font, fontfile, begBinary, begTrailer, endTrailer); - break; - case T1W_NEWLINE_MAC: - writeLWFN(h, font, fontfile, begBinary, begTrailer, endTrailer); - break; - } - - if (fclose(font) == EOF) - fileError(h, fontfile); -} - -/* End font. */ -static void t1_EndFont(txCtx h) { - if (h->t1w.options & T1W_DECID) { - /* Add .notdef (if not already added) */ - if (h->src.type == src_Type1) - (void)t1rGetGlyphByCID(h->t1r.ctx, 0, &h->cb.glyph); - - else if (h->src.type == src_CFF) - (void)cfrGetGlyphByCID(h->cfr.ctx, 0, &h->cb.glyph); - - /* Convert to name-keyed font */ - h->top->sup.flags &= ~ABF_CID_FONT; - h->top->FDArray.cnt = 1; - h->top->FDArray.array = &h->top->FDArray.array[h->t1w.fd]; - h->t1w.options |= T1W_NO_UID; /* Clear UniqueIDs */ - } - - if (h->t1w.options & T1W_NO_UID) { - h->top->UniqueID = ABF_UNSET_INT; - h->top->XUID.cnt = ABF_EMPTY_ARRAY; - h->top->cid.UIDBase = ABF_UNSET_INT; - } - - if (h->t1w.options & T1W_REFORMAT && - strcmp(h->dst.stm.filename, "-") == 0) - fatal(h, "stdout can't be used with -pfb or -LWFN options"); - - if (!(h->flags & PATH_REMOVE_OVERLAP)) { - if (t1wEndFont(h->t1w.ctx, h->top)) - fatal(h, NULL); - } else { - if (t1wBegFont(h->t1w.ctx, h->t1w.flags, h->t1w.lenIV, h->t1w.maxGlyphs)) - fatal(h, NULL); - - resetGlyphs(h); - h->cb.glyph = t1wGlyphCallbacks; - if (h->flags & PATH_SUPRESS_HINTS) { - h->cb.glyph.stem = NULL; - h->cb.glyph.flex = NULL; - } - h->cb.glyph.direct_ctx = h->t1w.ctx; - h->cb.glyph.indirect_ctx = h; - if (h->t1w.options & T1W_DECID) - h->cb.glyph.beg = t1_GlyphBeg; - if (abfEndFont(h->abf.ctx, ABF_PATH_REMOVE_OVERLAP, &h->cb.glyph)) - fatal(h, NULL); - - if (t1wEndFont(h->t1w.ctx, h->top)) - fatal(h, NULL); - } - - if (h->t1w.options & T1W_REFORMAT) - t1_Reformat(h); -} - -/* End font set. */ -static void t1_EndSet(txCtx h) { -} - -/* Stream SING glyphlet callback. */ -static int get_stream(t1wSINGCallback *sing_cb) { - long length; - txCtx h = sing_cb->ctx; - FILE *fp = h->src.stm.fp; - - /* Get file size and seek to start */ - if (fseek(fp, 0, SEEK_END) != 0 || - (length = ftell(fp)) == -1 || - fseek(fp, 0, SEEK_SET) != 0) - return 1; - - /* Update returned data */ - sing_cb->stm = &h->src.stm; - sing_cb->length = length; - - return 0; -} - -/* Setup t1 mode. */ -static void t1_SetMode(txCtx h) { - /* Initialize control data */ - /* This is now set at the start of parseArgs - h->t1w.options = 0; - */ - h->t1w.flags = (T1W_TYPE_HOST | - T1W_ENCODE_ASCII | - T1W_OTHERSUBRS_PRIVATE | - T1W_NEWLINE_UNIX); - h->t1w.lenIV = 4; - h->t1w.fd = -1; - /* Set mode name */ - h->modename = "t1"; - - /* Set library functions */ - h->dst.begset = t1_BegSet; - h->dst.begfont = t1_BegFont; - h->dst.endfont = t1_EndFont; - h->dst.endset = t1_EndSet; - - if (h->t1w.ctx == NULL) { - /* Create library context */ - t1wSINGCallback sing_cb; - sing_cb.ctx = h; - sing_cb.stm = 0; - sing_cb.length = 0; - sing_cb.get_stream = get_stream; - h->t1w.ctx = t1wNew(&h->cb.mem, &h->cb.stm, T1W_CHECK_ARGS); - if (h->t1w.ctx == NULL || t1wSetSINGCallback(h->t1w.ctx, &sing_cb)) - fatal(h, "(t1w) can't init lib"); - } - - if (h->abf.ctx == NULL) { - /* Create library context */ - h->abf.ctx = abfNew(&h->cb.mem, ABF_CHECK_ARGS); - if (h->abf.ctx == NULL) - fatal(h, "(abf) can't init lib"); - } - - /* Set source library flags */ - /* These are now set at the start of parseArgs - h->t1r.flags = 0; - h->cfr.flags = 0; - */ - - h->mode = mode_t1; -} - -/* Mode-specific help. */ -static void t1_Help(txCtx h) { - static char *text[] = - { -#include "t1.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- svg mode ------------------------------- */ - -/* Begin font set. */ -static void svg_BegSet(txCtx h) { -} - -/* Begin new glyph definition. */ -static int svg_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - - /* Determine (or fabricate) Unicode value for glyph. */ - info->flags |= ABF_GLYPH_UNICODE; - if (h->top->sup.flags & ABF_CID_FONT) { - info->encoding.code = h->svw.unrec; - h->svw.unrec++; - } else - info->encoding.code = mapName2UV(h, info->gname.ptr, &h->svw.unrec); - - return svwGlyphCallbacks.beg(cb, info); -} - -/* Begin font. */ -static void svg_BegFont(txCtx h, abfTopDict *top) { - h->cb.glyph.beg = svg_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - - h->svw.unrec = 0xE000; /* Start of Private Use Area */ - - dstFileSetAutoName(h, top); - if (svwBegFont(h->svw.ctx, h->svw.flags)) - fatal(h, NULL); -} - -/* End font. */ -static void svg_EndFont(txCtx h) { - if (svwEndFont(h->svw.ctx, h->top)) - fatal(h, NULL); -} - -/* End font set. */ -static void svg_EndSet(txCtx h) { -} - -/* Setup svg mode. */ -static void svg_SetMode(txCtx h) { - /* Initialize control data */ - h->svw.options = 0; - h->svw.flags = SVW_NEWLINE_UNIX; - - /* Set mode name */ - h->modename = "svg"; - - /* Set library functions */ - h->dst.begset = svg_BegSet; - h->dst.begfont = svg_BegFont; - h->dst.endfont = svg_EndFont; - h->dst.endset = svg_EndSet; - - if (h->svw.ctx == NULL) { - /* Create library context */ - h->svw.ctx = svwNew(&h->cb.mem, &h->cb.stm, SVW_CHECK_ARGS); - if (h->svw.ctx == NULL) - fatal(h, "(svw) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = svwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->svw.ctx; - - /* Set source library flags */ - h->t1r.flags |= T1R_UPDATE_OPS; - h->cfr.flags |= CFR_UPDATE_OPS; - - h->mode = mode_svg; -} - -/* Mode-specific help. */ -static void svg_Help(txCtx h) { - static char *text[] = - { -#include "svg.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- ufo write mode ------------------------------- */ - -static void mkdir_tx(txCtx h, char *dirPath) { - int dirErr; -#ifdef _WIN32 - dirErr = _mkdir(dirPath); -#else - dirErr = mkdir(dirPath, 0000700 | 0000070 | 0000007); -#endif - - if (dirErr != 0) - fatal(h, "Failed to creater directory '%s'.\n", dirPath); -} - -/* Begin font set. */ -static void ufw_BegSet(txCtx h) { -} - -/* Begin new glyph definition. */ -static int ufw_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - return ufwGlyphCallbacks.beg(cb, info); -} - -/* Begin font. */ -static void ufw_BegFont(txCtx h, abfTopDict *top) { - struct stat fileStat; - int statErrNo; - - h->cb.glyph.beg = ufw_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - - /* Make sure the user isn't sending the output to std out */ - if (strcmp(h->dst.stm.filename, "-") == 0) { - fatal(h, "Please specify a file path for the destination UFO font. UFO fonts cannot be serialized to stdout."); - } - /* if the UFO parent dir does not exist, make it. - If it does exist, complain and quit. */ - statErrNo = stat(h->dst.stm.filename, &fileStat); - if (statErrNo == 0) { - fatal(h, "Destination UFO font already exists: %s.\n", h->dst.stm.filename); - } else { - char buffer[FILENAME_MAX]; - mkdir_tx(h, h->dst.stm.filename); - if (h->ufr.altLayerDir != NULL) - sprintf(buffer, "%s/%s", h->file.dst, h->ufr.altLayerDir); - else - sprintf(buffer, "%s/%s", h->file.dst, "glyphs"); - mkdir_tx(h, buffer); - } - - dstFileSetAutoName(h, top); - if (ufwBegFont(h->ufow.ctx, h->ufow.flags, h->ufr.altLayerDir)) - fatal(h, NULL); -} - -/* End font. */ -static void ufw_EndFont(txCtx h) { - if (ufwEndFont(h->ufow.ctx, h->top)) - fatal(h, NULL); -} - -/* End font set. */ -static void ufw_EndSet(txCtx h) { -} - -static void ufo_SetMode(txCtx h) { - /* Initialize control data */ - h->ufow.flags = 0; - - /* Set mode name */ - h->modename = "ufo_w"; - - /* Set library functions */ - h->dst.begset = ufw_BegSet; - h->dst.begfont = ufw_BegFont; - h->dst.endfont = ufw_EndFont; - h->dst.endset = ufw_EndSet; - - if (h->ufow.ctx == NULL) { - /* Create library context */ - h->ufow.ctx = ufwNew(&h->cb.mem, &h->cb.stm, UFW_CHECK_ARGS); - if (h->ufow.ctx == NULL) - fatal(h, "(ufow) can't init lib"); - } - - /* Initialize glyph callbacks */ - h->cb.glyph = ufwGlyphCallbacks; - h->cb.glyph.direct_ctx = h->ufow.ctx; - - /* Set source library flags. It is harmless to declare a font to be cune, and we have to flatten them if going to UFO */ - h->t1r.flags = T1R_UPDATE_OPS | T1R_FLATTEN_CUBE | T1R_IS_CUBE; - h->cfr.flags = CFR_UPDATE_OPS | CFR_FLATTEN_CUBE | T1R_IS_CUBE; - - h->mode = mode_ufow; -} - -/* Mode-specific help. */ -static void ufo_Help(txCtx h) { - static char *text[] = - { -#include "ufo.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* -------------------------------- dcf mode ------------------------------- */ - -#define tx_reserved2 2 -#define t2_reserved17 17 - -/* Return size of region. */ -static long sizeRegion(const ctlRegion *region) { - return region->end - region->begin; -} - -/* Begin flowed text. */ -static void flowBeg(txCtx h) { - h->dcf.sep = ""; -} - -/* Title flowed text. */ -static void flowTitle(txCtx h, char *title) { - flowBeg(h); - fprintf(h->dst.stm.fp, "--- %s\n", title); -} - -/* End flowed text. */ -static void flowEnd(txCtx h) { - fprintf(h->dst.stm.fp, "\n"); -} - -/* Add flowed text. */ -static void flowAdd(txCtx h, char *fmt, ...) { - va_list ap; - if (h->dcf.flags & DCF_SaveStemCnt) - return; - va_start(ap, fmt); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); -} - -/* Break flowed text. */ -static void flowBreak(txCtx h, char *fmt, ...) { - va_list ap; - va_start(ap, fmt); - fprintf(h->dst.stm.fp, "%s", h->dcf.sep); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "; -} - -/* Begin flowed element. */ -static void flowElemBeg(txCtx h, long index, int complex) { - fprintf(h->dst.stm.fp, "%s[%ld]={%s", h->dcf.sep, index, - (complex && (h->dcf.flags & DCF_BreakFlowed)) ? "\n" : ""); -} - -/* Add argument to flowed element. */ -static void flowArg(txCtx h, char *fmt, ...) { - va_list ap; - if (h->dcf.flags & DCF_SaveStemCnt) - return; - va_start(ap, fmt); - fprintf(h->dst.stm.fp, "%s", h->dcf.sep); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); - h->dcf.sep = " "; -} - -/* Add operator to flowed element. */ -static void flowOp(txCtx h, char *fmt, ...) { - va_list ap; - if (h->dcf.flags & DCF_SaveStemCnt) - return; - va_start(ap, fmt); - fprintf(h->dst.stm.fp, "%s", h->dcf.sep); - vfprintf(h->dst.stm.fp, fmt, ap); - va_end(ap); - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n " : " "; -} - -/* End flowed element. */ -static void flowElemEnd(txCtx h) { - fprintf(h->dst.stm.fp, "}"); - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "; -} - -/* Begin font set. */ -static void dcf_BegSet(txCtx h) { -} - -/* Dump table tag line. */ -static void dumpTagLine(txCtx h, char *title, const ctlRegion *region) { - if (h->dcf.level < 1) { - static char dots[] = " ................"; - fprintf(h->dst.stm.fp, "### %s%.*s (%08lx-%08lx)\n", - title, (int)(sizeof(dots) - 1 - strlen(title)), dots, - region->begin, region->end - 1L); - } else - fprintf(h->dst.stm.fp, "### %s (%08lx-%08lx)\n", - title, region->begin, region->end - 1L); -} - -/* Dump CFF header. */ -static unsigned short dcf_DumpHeader(txCtx h, const ctlRegion *region) { - unsigned short major = 0; - FILE *fp = h->dst.stm.fp; - bufSeek(h, region->begin); - major = read1(h); - - if (!(h->dcf.flags & DCF_Header) || region->begin == -1) - return major; - - dumpTagLine(h, "Header", region); - if (h->dcf.level < 1) - return major; - - fprintf(fp, "major =%u\n", major); - fprintf(fp, "minor =%u\n", read1(h)); - fprintf(fp, "hdrSize=%u\n", read1(h)); - fprintf(fp, "offSize=%u\n", read1(h)); - return major; -} - -/* Dump CFF INDEX. */ -static void dumpINDEX(txCtx h, char *title, const ctlRegion *region, - DumpElementProc dumpElement) { - dumpTagLine(h, title, region); - if (h->dcf.level < 1) - return; - else { - unsigned long i; - long offset; - long dataref; - unsigned long count; - unsigned short countSize; - unsigned char offSize = 0; /* Suppress optimizer warning */ - ctlRegion element; - FILE *fp = h->dst.stm.fp; - - /* Read header */ - bufSeek(h, region->begin); - - if (h->dcf.flags & DCF_IS_CFF2) { - countSize = 4; - count = read4(h); - } else { - count = read2(h); - countSize = 2; - } - - if (count > 0) - offSize = read1(h); - - if (h->dcf.level < 5) { - /* Dump header */ - fprintf(fp, "count =%lu\n", count); - if (count == 0) - return; - fprintf(fp, "offSize=%u\n", offSize); - - /* Dump offset array */ - flowTitle(h, "offset[index]=value"); - for (i = 0; i <= count; i++) - flowBreak(h, "[%ld]=%lu", i, readn(h, offSize)); - flowEnd(h); - } else if (count == 0) { - fprintf(fp, "empty\n"); - return; - } - - /* Compute offset array base and data reference offset */ - offset = region->begin + countSize + 1; - dataref = offset + (count + 1) * offSize - 1; - - /* Dump object data */ - flowTitle(h, "object[index]={value}"); - bufSeek(h, offset); - element.begin = dataref + readn(h, offSize); - offset += offSize; - for (i = 0; i < count; i++) { - bufSeek(h, offset); - element.end = dataref + readn(h, offSize); - offset += offSize; - dumpElement(h, i, &element); - element.begin = element.end; - } - flowEnd(h); - } -} - -/* Dump string data. */ -static void dumpString(txCtx h, const ctlRegion *region) { - long cnt = sizeRegion(region); - bufSeek(h, region->begin); - while (cnt-- > 0) - flowAdd(h, "%c", read1(h)); -} - -/* Dump Name INDEX element. */ -static void dumpNameElement(txCtx h, long index, const ctlRegion *region) { - flowElemBeg(h, index, 0); - dumpString(h, region); - flowElemEnd(h); -} - -/* Dump Name INDEX table. */ -static void dcf_DumpNameINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_NameINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "Name INDEX", region, dumpNameElement); -} - -/* Dump CFF DICT. */ -static void dumpDICT(txCtx h, const ctlRegion *region) { - static char *opname[32] = - { - /* 0 */ "version", - /* 1 */ "Notice", - /* 2 */ "FullName", - /* 3 */ "FamilyName", - /* 4 */ "Weight", - /* 5 */ "FontBBox", - /* 6 */ "BlueValues", - /* 7 */ "OtherBlues", - /* 8 */ "FamilyBlues", - /* 9 */ "FamilyOtherBlues", - /* 10 */ "StdHW", - /* 11 */ "StdVW", - /* 12 */ "escape", - /* 13 */ "UniqueID", - /* 14 */ "XUID", - /* 15 */ "charset", - /* 16 */ "Encoding", - /* 17 */ "CharStrings", - /* 18 */ "Private", - /* 19 */ "Subrs", - /* 20 */ "defaultWidthX", - /* 21 */ "nominalWidthX", - /* 22 */ "vsindex", - /* 23 */ "blend", - /* 24 */ "VarStore", - /* 25 */ "maxstack", - /* 26 */ "reserved26", - /* 27 */ "reserved27", - /* 28 */ "shortint", - /* 29 */ "longint", - /* 30 */ "real", - /* 31 */ "blendLE", - }; - static char *escopname[] = - { - /* 0 */ "Copyright", - /* 1 */ "isFixedPitch", - /* 2 */ "ItalicAngle", - /* 3 */ "UnderlinePosition", - /* 4 */ "UnderlineThickness", - /* 5 */ "PaintType", - /* 6 */ "CharstringType", - /* 7 */ "FontMatrix", - /* 8 */ "StrokeWidth", - /* 9 */ "BlueScale", - /* 10 */ "BlueShift", - /* 11 */ "BlueFuzz", - /* 12 */ "StemSnapH", - /* 13 */ "StemSnapV", - /* 14 */ "ForceBold", - /* 15 */ "reservedESC15", - /* 16 */ "lenIV", - /* 17 */ "LanguageGroup", - /* 18 */ "ExpansionFactor", - /* 19 */ "initialRandomSeed", - /* 20 */ "SyntheticBase", - /* 21 */ "PostScript", - /* 22 */ "BaseFontName", - /* 23 */ "BaseFontBlend", - /* 24 */ "numMasters", - /* 25 */ "reservedESC25", - /* 26 */ "reservedESC26", - /* 27 */ "reservedESC27", - /* 28 */ "reservedESC28", - /* 29 */ "reservedESC29", - /* 30 */ "ROS", - /* 31 */ "CIDFontVersion", - /* 32 */ "CIDFontRevision", - /* 33 */ "CIDFontType", - /* 34 */ "CIDCount", - /* 35 */ "UIDBase", - /* 36 */ "FDArray", - /* 37 */ "FDIndex", - /* 38 */ "FontName", - /* 39 */ "Chameleon", - }; - long left = sizeRegion(region); - - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? " " : ""; - bufSeek(h, region->begin); - while (left > 0) { - unsigned char byte = read1(h); - left--; - switch (byte) { - case cff_version: - case cff_Notice: - case cff_FullName: - case cff_FamilyName: - case cff_Weight: - case cff_FontBBox: - case cff_OtherBlues: - case cff_FamilyBlues: - case cff_FamilyOtherBlues: - case cff_StdHW: - case cff_StdVW: - case cff_UniqueID: - case cff_XUID: - case cff_charset: - case cff_Encoding: - case cff_CharStrings: - case cff_Private: - case cff_Subrs: - case cff_defaultWidthX: - case cff_nominalWidthX: - case cff_vsindex: - case cff_blend: - case cff_VarStore: - case cff_maxstack: - case cff_reserved26: - case cff_reserved27: - flowOp(h, opname[byte]); - break; - case cff_BlueValues: - case cff_BlendLE: - flowOp(h, opname[byte]); - break; - case cff_escape: { - /* Process escaped operator */ - unsigned char escop = read1(h); - left--; - if (escop > ARRAY_LEN(escopname) - 1) - flowOp(h, "reservedESC%d", escop); - else - flowOp(h, escopname[escop]); - break; - } - case cff_shortint: { - /* 3-byte number */ - short value = read1(h); - value = value << 8 | read1(h); - left -= 2; -#if SHRT_MAX > 32767 - /* short greater that 2 bytes; handle negative range */ - if (value > 32767) - value -= 65536; -#endif - flowArg(h, "%hd", value); - } break; - case cff_longint: { - /* 5-byte number */ - long value = read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - left -= 4; -#if LONG_MAX > 2147483647 - /* long greater that 4 bytes; handle negative range */ - if (value > 2417483647) - value -= 4294967296; -#endif - flowArg(h, "%ld", value); - } break; - case cff_BCD: { - int count = 0; - int byte = 0; /* Suppress optimizer warning */ - flowArg(h, ""); - for (;;) { - int nibble; - - if (count++ & 1) - nibble = byte & 0xf; - else { - byte = read1(h); - left--; - nibble = byte >> 4; - } - if (nibble == 0xf) - break; - - flowAdd(h, "%c", "0123456789.EE?-?"[nibble]); - if (nibble == 0xc) - flowAdd(h, "-"); - } - } break; - case 247: - case 248: - case 249: - case 250: - /* Positive 2-byte number */ - flowArg(h, "%d", 108 + 256 * (byte - 247) + read1(h)); - left--; - break; - case 251: - case 252: - case 253: - case 254: - /* Negative 2-byte number */ - flowArg(h, "%d", -108 - 256 * (byte - 251) - read1(h)); - left--; - break; - case 255: - flowOp(h, "reserved255"); - break; - default: - /* 1-byte number */ - flowArg(h, "%d", byte - 139); - break; - } - } - if (h->dcf.flags & DCF_BreakFlowed) - fprintf(h->dst.stm.fp, "\n"); -} - -/* Dump DICT element. */ -static void dumpDICTElement(txCtx h, long index, const ctlRegion *region) { - flowElemBeg(h, index, 1); - dumpDICT(h, region); - flowElemEnd(h); -} - -/* Dump Top DICT INDEX table. */ -static void dcf_DumpTopDICTINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_TopDICTINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "Top DICT INDEX", region, dumpDICTElement); -} - -static void dcf_DumpTopDICT2(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_TopDICTINDEX) || region->begin == -1) - return; - - dumpTagLine(h, "Top DICT Data", region); - dumpDICTElement(h, 0, region); - flowEnd(h); -} - -/* Dump String INDEX element. */ -static void dumpStringElement(txCtx h, long index, const ctlRegion *region) { - flowElemBeg(h, (h->dcf.level == 5) ? SID2STD_LEN + index : index, 0); - dumpString(h, region); - flowElemEnd(h); -} - -/* Dump String INDEX table. */ -static void dcf_DumpStringINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_StringINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "String INDEX", region, dumpStringElement); -} - -/* Flow stack args. */ -static void flowStack(txCtx h) { - long i; - for (i = 0; i < h->stack.cnt; i++) - flowArg(h, "%g", INDEX(i)); - h->stack.cnt = 0; -} - -/* Flow stack args and operator. */ -static void flowCommand(txCtx h, char *opname) { - flowStack(h); - flowOp(h, opname); -} - -/* Call subr. */ -static void callsubr(txCtx h, - SubrInfo *info, const ctlRegion *caller, long left) { - long arg; - ctlRegion callee; - long saveoff = caller->end - left; - - /* Validate and unbias subr number */ - CHKUFLOW(1); - arg = info->bias + (long)POP(); - if (arg < 0 || (arg >= (long)info->count)) - fatal(h, "invalid subr call"); - - /* Compute subr region */ - bufSeek(h, info->offset + arg * info->offSize); - callee.begin = info->dataref + readn(h, info->offSize); - callee.end = info->dataref + readn(h, info->offSize); - - /* Dump subr region */ - dumpCstr(h, &callee, 1); - - if (h->dcf.flags & DCF_SaveStemCnt) - info->stemcnt.array[arg] = (unsigned char)h->dcf.stemcnt; - - if (left > 0) - bufSeek(h, saveoff); -} - -/* Dump Type 2 charstring. */ -static void dumpCstr(txCtx h, const ctlRegion *region, int inSubr) { - static char *opname[32] = - { - /* 0 */ "reserved0", - /* 1 */ "hstem", - /* 2 */ "compose", - /* 3 */ "vstem", - /* 4 */ "vmoveto", - /* 5 */ "rlineto", - /* 6 */ "hlineto", - /* 7 */ "vlineto", - /* 8 */ "rrcurveto", - /* 9 */ "reserved9", - /* 10 */ "callsubr", - /* 11 */ "return", - /* 12 */ "escape", - /* 13 */ "reserved13", - /* 14 */ "endchar", - /* 15 */ "vsindex", - /* 16 */ "blend", - /* 17 */ "callgrel", - /* 18 */ "hstemhm", - /* 19 */ "hintmask", - /* 20 */ "cntrmask", - /* 21 */ "rmoveto", - /* 22 */ "hmoveto", - /* 23 */ "vstemhm", - /* 24 */ "rcurveline", - /* 25 */ "rlinecurve", - /* 26 */ "vvcurveto", - /* 27 */ "hhcurveto", - /* 28 */ "shortint", - /* 29 */ "callgsubr", - /* 30 */ "vhcurveto", - /* 31 */ "hvcurveto", - }; - static char *escopname[] = - { - /* 0 */ "dotsection", - /* 1 */ "reservedESC1", - /* 2 */ "reservedESC2", - /* 3 */ "and", - /* 4 */ "or", - /* 5 */ "not", - /* 6 */ "reservedESC6", - /* 7 */ "reservedESC7", - /* 8 */ "reservedESC8", - /* 9 */ "abs", - /* 10 */ "add", - /* 11 */ "sub", - /* 12 */ "div", - /* 13 */ "reservedESC13", - /* 14 */ "neg", - /* 15 */ "eq", - /* 16 */ "reservedESC16", - /* 17 */ "reservedESC17", - /* 18 */ "drop", - /* 19 */ "reservedESC19", - /* 20 */ "put", - /* 21 */ "get", - /* 22 */ "ifelse", - /* 23 */ "random", - /* 24 */ "mul", - /* 25 */ "reservedESC25", - /* 26 */ "sqrt", - /* 27 */ "dup", - /* 28 */ "exch", - /* 29 */ "index", - /* 30 */ "roll", - /* 31 */ "reservedESC31", - /* 32 */ "reservedESC32", - /* 33 */ "reservedESC33", - /* 34 */ "hflex", - /* 35 */ "flex", - /* 36 */ "hflex1", - /* 37 */ "flex1", - /* 38 */ "cntron", - /* 39 */ "blend1", - /* 40 */ "blend2", - /* 41 */ "blend3", - /* 42 */ "blend4", - /* 43 */ "blend6", - /* 44 */ "setwv1", - /* 45 */ "setwv2", - /* 46 */ "setwv3", - /* 47 */ "setwv4", - /* 48 */ "setwv5", - /* 49 */ "setwvN", - /* 50 */ "transform", - }; - long left = sizeRegion(region); - - if (!inSubr) - h->dcf.sep = (h->dcf.flags & DCF_BreakFlowed) ? " " : ""; - bufSeek(h, region->begin); - while (left > 0) { - unsigned char byte = read1(h); - left--; - switch (byte) { - case tx_reserved0: - case tx_rlineto: - case tx_hlineto: - case tx_vlineto: - case tx_rrcurveto: - case t2_reserved9: - case t2_reserved13: - case tx_endchar: - case t2_rcurveline: - case t2_rlinecurve: - case t2_vvcurveto: - case t2_hhcurveto: - case tx_vhcurveto: - case tx_hvcurveto: - flowCommand(h, opname[byte]); - break; - case tx_vmoveto: - case tx_rmoveto: - case tx_hmoveto: - h->dcf.flags |= DCF_END_HINTS; - flowCommand(h, opname[byte]); - break; - case t2_blend: - if ((h->dcf.flags & DCF_Flatten) && (!(h->dcf.flags & DCF_END_HINTS))) { - int numBlends = (int)h->stack.array[h->stack.cnt - 1]; - // take off 1 for num blend arguments, then pop the delta values: what's left are stem coords. - h->dcf.stemcnt += (h->stack.cnt - 1) - (numBlends * h->dcf.numRegions); - } - flowCommand(h, opname[byte]); - break; - case t2_vsindex: { - unsigned long vsIndex = (unsigned long)h->stack.array[0]; - h->dcf.numRegions = h->dcf.varRegionInfo.array[vsIndex].regionCount; - flowCommand(h, opname[byte]); - break; - } - case tx_compose: - flowCommand(h, opname[byte]); - break; - case tx_callgrel: - flowCommand(h, opname[byte]); - break; - case tx_callsubr: - if (h->dcf.flags & DCF_Flatten) - callsubr(h, h->dcf.fd, region, left); - else - flowCommand(h, opname[byte]); - break; - case tx_return: - if (!(h->dcf.flags & DCF_Flatten)) - flowCommand(h, opname[byte]); - break; - case t2_callgsubr: - if (h->dcf.flags & DCF_Flatten) - callsubr(h, &h->dcf.global, region, left); - else - flowCommand(h, opname[byte]); - break; - case tx_hstem: - case tx_vstem: - case t2_hstemhm: - case t2_vstemhm: - if (h->dcf.flags & DCF_Flatten) - h->dcf.stemcnt += h->stack.cnt; - flowCommand(h, opname[byte]); - break; - case t2_hintmask: - case t2_cntrmask: - if ((h->dcf.flags & DCF_Flatten) && (!(h->dcf.flags & DCF_END_HINTS))) - h->dcf.stemcnt += h->stack.cnt; - h->dcf.flags |= DCF_END_HINTS; - flowStack(h); - { - /* stemcnt is currently number of coordinates; number stems is the number of pairs of coordinates. */ - long masklen = ((h->dcf.stemcnt / 2) + 7) / 8; - flowOp(h, "%s[", opname[byte]); - left -= masklen; - while (masklen--) - flowAdd(h, "%02X", read1(h)); - flowAdd(h, "]"); - break; - } - case tx_escape: { - /* Process escaped operator */ - unsigned char escop = read1(h); - left--; - if (escop > ARRAY_LEN(escopname) - 1) { - flowStack(h); - flowOp(h, "reservedESC%d", escop); - } else - flowCommand(h, escopname[escop]); - break; - } - case t2_shortint: - /* 3-byte number */ - CHKOFLOW(1); - { - short value = read1(h); - value = value << 8 | read1(h); - left -= 2; -#if SHRT_MAX > 32767 - /* short greater that 2 bytes; handle negative range */ - if (value > 32767) - value -= 65536; -#endif - PUSH(value); - } - continue; - case 247: - case 248: - case 249: - case 250: - /* Positive 2-byte number */ - CHKOFLOW(1); - PUSH(108 + 256 * (byte - 247) + read1(h)); - left--; - continue; - case 251: - case 252: - case 253: - case 254: - /* Negative 2-byte number */ - CHKOFLOW(1); - PUSH(-108 - 256 * (byte - 251) - read1(h)); - left--; - continue; - case 255: - /* 5-byte number (16.16 fixed) */ - CHKOFLOW(1); - { - long value = read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - value = value << 8 | read1(h); - left -= 4; -#if LONG_MAX > 2147483647 - /* long greater that 4 bytes; handle negative range */ - if (value > 2417483647) - value -= 4294967296; -#endif - PUSH(value / 65536.0); - } - continue; - default: - /* 1-byte number */ - CHKOFLOW(1); - PUSH(byte - 139); - continue; - } - } - if (!inSubr && (h->dcf.flags & DCF_BreakFlowed) && - !(h->dcf.flags & DCF_SaveStemCnt)) { - /* Handle left over args (if any) */ - flowStack(h); - fprintf(h->dst.stm.fp, "\n"); - } -} - -/* Dump global charstring element. */ -static void dumpGlobalElement(txCtx h, long index, const ctlRegion *region) { - h->dcf.stemcnt = h->dcf.global.stemcnt.array[index]; - h->stack.cnt = 0; - if (h->dcf.level > 1) - index -= h->dcf.global.bias; - flowElemBeg(h, index, 1); - dumpCstr(h, region, 0); - flowElemEnd(h); -} - -/* Dump Global Subr INDEX table. */ -static void dcf_DumpGlobalSubrINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_GlobalSubrINDEX) || region->begin == -1) - return; - - h->flags &= ~DCF_Flatten; - dumpINDEX(h, "GlobalSubrINDEX", region, dumpGlobalElement); -} - -/* Dump encoding table. */ -static void dcf_DumpEncoding(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_Encoding) || - region->begin == -1 || - h->top->sup.flags & ABF_CID_FONT) - return; - - switch (region->begin) { - case cff_StandardEncoding: - fprintf(fp, "### Encoding ........ (Standard)\n"); - break; - case cff_ExpertEncoding: - fprintf(fp, "### Encoding ........ (Expert)\n"); - break; - default: { - dumpTagLine(h, "Encoding", region); - if (h->dcf.level > 0) { - long gid; - long i; - long cnt; - unsigned char fmt; - - bufSeek(h, region->begin); - gid = 1; /* Skip glyph 0 (.notdef) */ - - fmt = read1(h); - fprintf(fp, "format =%x\n", fmt); - switch (fmt & 0x7f) { - case 0: - cnt = read1(h); - fprintf(fp, "nCodes =%ld\n", cnt); - flowTitle(h, "glyph[gid]=code"); - for (; gid <= cnt; gid++) - flowBreak(h, "[%ld]=%u", gid, read1(h)); - flowEnd(h); - break; - case 1: - cnt = read1(h); - fprintf(fp, "nRanges=%ld\n", cnt); - flowTitle(h, "Range1={first,nLeft}"); - for (i = 0; i < cnt; i++) { - unsigned char code = read1(h); - unsigned char nLeft = read1(h); - flowBreak(h, "[%ld]={%u,%u}", i, code, nLeft); - gid += nLeft + 1; - } - flowEnd(h); - break; - } - if (fmt & 0x80) { - /* Read supplementary encoding */ - cnt = read1(h); - fprintf(fp, "nSups=%ld\n", cnt); - flowTitle(h, "Supplement={code,sid}"); - for (i = 0; i < cnt; i++) { - unsigned char code = read1(h); - unsigned short sid = read2(h); - flowBreak(h, "[%ld]={%u,%hu}", i, code, sid); - } - flowEnd(h); - } - } - } break; - } -} - -/* Dump charset table. */ -static void dcf_DumpCharset(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_Charset) || region->begin == -1) - return; - - switch (region->begin) { - case cff_ISOAdobeCharset: - fprintf(fp, "### Charset ......... (ISOAdobe)\n"); - break; - case cff_ExpertCharset: - fprintf(fp, "### Charset ......... (Expert)\n"); - break; - case cff_ExpertSubsetCharset: - fprintf(fp, "### Charset ......... (Expert Subset)\n"); - break; - default: { - dumpTagLine(h, "Charset", region); - if (h->dcf.level > 0) { - unsigned char fmt; - long i; - long gid; - - bufSeek(h, region->begin); - fmt = read1(h); - fprintf(fp, "format=%u\n", fmt); - gid = 1; /* Skip glyph 0 (.notdef) */ - - switch (fmt) { - case 0: - flowTitle(h, (h->top->sup.flags & ABF_CID_FONT) ? "glyph[gid]=cid" : "glyph[gid]=sid"); - for (; gid < h->top->sup.nGlyphs; gid++) - flowBreak(h, "[%ld]=%hu", gid, read2(h)); - flowEnd(h); - break; - case 1: - flowTitle(h, "Range1[index]={first,nLeft}"); - for (i = 0; gid < h->top->sup.nGlyphs; i++) { - unsigned short id = read2(h); - unsigned char nLeft = read1(h); - flowBreak(h, "[%ld]={%hu,%hhu}", i, id, nLeft); - gid += nLeft + 1; - } - flowEnd(h); - break; - case 2: - flowTitle(h, "Range2[index]={first,nLeft}"); - for (i = 0; gid < h->top->sup.nGlyphs; i++) { - unsigned short id = read2(h); - unsigned short nLeft = read2(h); - flowBreak(h, "[%ld]={%hu,%hu}", i, id, nLeft); - gid += nLeft + 1; - } - flowEnd(h); - break; - } - } - } break; - } -} - -/* Dump VarStore table. */ -static void dcf_getvsIndices(txCtx h, const ctlRegion *region) { - unsigned int i = 0; - unsigned short ivdSubtableCount; - dnaDCL(unsigned long, ivdSubtableOffsets); - long ivsStart = region->begin + 2; - - if (region->begin <= 0) - return; - bufSeek(h, region->begin); - read2(h); /* length */ - read2(h); /* format */ - - read4(h); /* regionListOffset */ - ivdSubtableCount = read2(h); - - dnaINIT(h->ctx.dna, ivdSubtableOffsets, ivdSubtableCount, ivdSubtableCount); - dnaSET_CNT(ivdSubtableOffsets, ivdSubtableCount); - - for (i = 0; i < ivdSubtableCount; i++) { - ivdSubtableOffsets.array[i] = read4(h); - } - - /* item variation data list */ - for (i = 0; i < ivdSubtableCount; i++) { - unsigned short regionIndexCount; - RegionInfo *regionIndexCountEntry; - - bufSeek(h, ivsStart + ivdSubtableOffsets.array[i]); - - read2(h); /* itemCount */ - read2(h); /* shortDeltaCount*/ - regionIndexCount = read2(h); - regionIndexCountEntry = dnaNEXT(h->dcf.varRegionInfo); - regionIndexCountEntry->regionCount = regionIndexCount; - } -} - -static void dcf_DumpVarStore(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_FDSelect) || region->begin == -1) - return; - - dumpTagLine(h, "VarStore", region); - if (h->dcf.level < 1) - return; - else { - unsigned short length; - unsigned int i = 0; - unsigned long regionListOffset; - unsigned short ivdSubtableCount; - dnaDCL(unsigned long, ivdSubtableOffsets); - unsigned short axisCount, regionCount; - long ivsStart = region->begin + 2; - - bufSeek(h, region->begin); - length = read2(h); - fprintf(fp, "length =%u\n", length); - fprintf(fp, "format = %u\n", read2(h)); - - regionListOffset = read4(h); - fprintf(fp, "regionListOffset = %08lx\n", regionListOffset); - ivdSubtableCount = read2(h); - fprintf(fp, "subtableCount = %d\n", ivdSubtableCount); - - dnaINIT(h->ctx.dna, ivdSubtableOffsets, ivdSubtableCount, ivdSubtableCount); - dnaSET_CNT(ivdSubtableOffsets, ivdSubtableCount); - - fprintf(fp, "--- subtableOffsets[index]={offset}\n"); - for (i = 0; i < ivdSubtableCount; i++) { - ivdSubtableOffsets.array[i] = read4(h); - fprintf(fp, "[%u]={%08lx}\n", i, ivdSubtableOffsets.array[i]); - } - - bufSeek(h, ivsStart + regionListOffset); - fprintf(fp, "--- RegionList\n"); - axisCount = read2(h); - fprintf(fp, "axisCount = %u\n", axisCount); - regionCount = read2(h); - fprintf(fp, "regionCount = %u\n", regionCount); - - fprintf(fp, "--- RegionCoords[region,axis]={start,peak,end}\n"); - for (i = 0; i < regionCount; i++) { - unsigned short axis; - for (axis = 0; axis < axisCount; axis++) { - float start = ((float)read2(h)) / (1 << 14); - float peak = ((float)read2(h)) / (1 << 14); - float end = ((float)read2(h)) / (1 << 14); - fprintf(fp, "[%u,%u]={%g,%g,%g}\n", i, axis, start, peak, end); - } - } - - /* item variation data list */ - for (i = 0; i < ivdSubtableCount; i++) { - unsigned short itemCount; - unsigned short shortDeltaCount; - unsigned short regionIndexCount; - unsigned short r, t; - - fprintf(fp, "--- VarStoreSubtable[%u]\n", i); - - bufSeek(h, ivsStart + ivdSubtableOffsets.array[i]); - - itemCount = read2(h); - shortDeltaCount = read2(h); - regionIndexCount = read2(h); - fprintf(fp, "itemCount = %d\n", itemCount); - fprintf(fp, "shortDeltaCount = %d\n", shortDeltaCount); - fprintf(fp, "regionIndexCount = %d\n", regionIndexCount); - - /* region indices */ - fprintf(fp, "--- RegionIndex[region]={index}\n"); - for (r = 0; r < regionIndexCount; r++) { - fprintf(fp, "[%d]={%d}\n", r, read2(h)); - } - - /* load two-dimensional delta values array */ - fprintf(fp, "--- DeltaValue[item,region]={delta}\n"); - for (t = 0; t < itemCount; t++) { - for (r = 0; r < regionCount; r++) { - short delta = (short)((r < shortDeltaCount) ? read2(h) : (char)read1(h)); - fprintf(fp, "[%d,%d]={%d}\n", t, r, delta); - } - } - } - } - fprintf(fp, "\n"); -} - -/* Dump FDSelect table. */ -static void dcf_DumpFDSelect(txCtx h, const ctlRegion *region) { - FILE *fp = h->dst.stm.fp; - - if (!(h->dcf.flags & DCF_FDSelect) || region->begin == -1) - return; - - dumpTagLine(h, "FDSelect", region); - if (h->dcf.level < 1) - return; - else { - unsigned char fmt; - - bufSeek(h, region->begin); - fmt = read1(h); - fprintf(fp, "format =%u\n", fmt); - - switch (fmt) { - case 0: { - long gid; - flowTitle(h, "glyph[gid]=fd"); - for (gid = 0; gid < h->top->sup.nGlyphs; gid++) - flowBreak(h, "[%ld]=%u", gid, read1(h)); - flowEnd(h); - } break; - case 3: { - long i; - long nRanges = read2(h); - fprintf(fp, "nRanges=%ld\n", nRanges); - flowTitle(h, "Range3[index]={first,fd}"); - for (i = 0; i < nRanges; i++) { - unsigned short first = read2(h); - unsigned char fd = read1(h); - flowBreak(h, "[%ld]={%hu,%u}", i, first, fd); - } - flowEnd(h); - fprintf(fp, "sentinel=%hu\n", read2(h)); - } break; - default: - fatal(h, "invalid FDSelect format"); - } - } -} - -/* Dump FDArray INDEX table. */ -static void dcf_DumpFDArrayINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_FDArrayINDEX) || region->begin == -1) - return; - - dumpINDEX(h, "FDArray INDEX", region, dumpDICTElement); -} - -/* Dump charstring element. */ -static void dumpCstrElement(txCtx h, long index, const ctlRegion *region) { - h->dcf.stemcnt = h->dcf.glyph.array[index]; - h->stack.cnt = 0; - flowElemBeg(h, index, 1); - dumpCstr(h, region, 0); - flowElemEnd(h); -} - -/* Dump CharString INDEX. */ -static void dcf_DumpCharStringsINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_CharStringsINDEX) || region->begin == -1) - return; - - if (h->arg.g.cnt > 0) { - /* Dump selected glyphs from INDEX */ - fprintf(h->dst.stm.fp, "### CharStrings (flattened)\n"); - if (h->dcf.level < 1) - return; - flowBeg(h); - fprintf(h->dst.stm.fp, "--- glyph[tag]={%s,path}\n", - (h->top->sup.flags & ABF_CID_FONT) ? "cid" : "name"); - h->dcf.flags |= DCF_Flatten; - callbackSubset(h); - flowEnd(h); - } else { - /* Dump entire INDEX */ - h->dcf.flags &= ~DCF_Flatten; - dumpINDEX(h, "CharStrings INDEX", region, dumpCstrElement); - } -} - -/* Dump Private DICT. */ -static void dcf_DumpPrivateDICT(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_PrivateDICT) || region->begin == -1) - return; - - dumpTagLine(h, "Private DICT", region); - if (h->dcf.level < 1) - return; - dumpDICT(h, region); -} - -/* Dump local charstring element. */ -static void dumpLocalElement(txCtx h, long index, const ctlRegion *region) { - h->dcf.stemcnt = h->dcf.fd->stemcnt.array[index]; - h->stack.cnt = 0; - if (h->dcf.level > 1) - index -= h->dcf.fd->bias; - flowElemBeg(h, index, 1); - dumpCstr(h, region, 0); - flowElemEnd(h); -} - -/* Dump Local Subr INDEX table. */ -static void dcf_DumpLocalSubrINDEX(txCtx h, const ctlRegion *region) { - if (!(h->dcf.flags & DCF_LocalSubrINDEX) || region->begin == -1) - return; - - h->flags &= ~DCF_Flatten; - dumpINDEX(h, "Local Subr INDEX", region, dumpLocalElement); -} - -/* Initialize subr info from INDEX. */ -static void initSubrInfo(txCtx h, const ctlRegion *region, SubrInfo *info) { - Card16 countSize; - if (region->begin == -1) { - /* Empty region */ - info->count = 0; - return; - } - - bufSeek(h, region->begin); - - if (h->dcf.flags & DCF_IS_CFF2) { - countSize = 4; - info->count = read4(h); - } else { - info->count = read2(h); - countSize = 2; - } - - if (info->count == 0) - return; - - info->offSize = read1(h); - info->offset = region->begin + countSize + 1; - info->dataref = info->offset + (info->count + 1) * info->offSize - 1; - - dnaSET_CNT(info->stemcnt, info->count); - memset(info->stemcnt.array, 0, info->count); - - if (info->count < 1240) - info->bias = 107; - else if (info->count < 33900) - info->bias = 1131; - else - info->bias = 32768; -} - -static void dcf_setNumRegions(txCtx h, abfGlyphInfo *info) { - /* If there is a Variation Region, then we get the regionCount for the current vsIndex. - We need this in order to count stems when blends are present. */ - if (h->dcf.varRegionInfo.cnt == 0) { - h->dcf.numRegions = 0; - } else { - h->dcf.numRegions = h->dcf.varRegionInfo.array[info->blendInfo.vsindex].regionCount; - } -} - -/* Glyph begin callback to save count stems. */ -static int dcf_SaveStemCount(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - - h->dcf.fd = &h->dcf.local.array[info->iFD]; - h->dcf.stemcnt = 0; - h->dcf.flags &= ~DCF_END_HINTS; - dcf_setNumRegions(h, info); - - h->stack.cnt = 0; - dumpCstr(h, &info->sup, 0); - h->dcf.glyph.array[info->tag] = (unsigned char)h->dcf.stemcnt; - - return ABF_SKIP_RET; -} - -/* Glyph charstring dump callback. */ -static int dcf_GlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - FILE *fp = h->dst.stm.fp; - - /* Customized flowElemBeg() */ - if (info->flags & ABF_GLYPH_CID) - fprintf(fp, "%s[%hu]={\\%hu,%s", h->dcf.sep, info->tag, info->cid, - (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "); - else - fprintf(fp, "%s[%hu]={%s,%s", h->dcf.sep, info->tag, info->gname.ptr, - (h->dcf.flags & DCF_BreakFlowed) ? "\n" : " "); - - h->dcf.fd = &h->dcf.local.array[info->iFD]; - h->dcf.stemcnt = 0; - h->dcf.flags &= ~DCF_END_HINTS; - dcf_setNumRegions(h, info); - - h->stack.cnt = 0; - dumpCstr(h, &info->sup, 0); - - flowElemEnd(h); - - return ABF_SKIP_RET; -} - -/* Initialize charstring dump. */ -static void initCstrs(txCtx h, abfTopDict *top) { - int i; - int subrDump = h->dcf.flags & (DCF_GlobalSubrINDEX | DCF_LocalSubrINDEX); - - if (h->dcf.level < 1 || - !(subrDump || (h->dcf.flags & DCF_CharStringsINDEX))) - return; /* Nothing to do */ - - /* Initialize global subrs */ - initSubrInfo(h, - &cfrGetSingleRegions(h->cfr.ctx)->GlobalSubrINDEX, - &h->dcf.global); - - /* Initialize local subrs */ - dnaSET_CNT(h->dcf.local, top->FDArray.cnt); - for (i = 0; i < h->dcf.local.cnt; i++) - initSubrInfo(h, - &cfrGetRepeatRegions(h->cfr.ctx, i)->LocalSubrINDEX, - &h->dcf.local.array[i]); - - if (!subrDump && h->arg.g.cnt > 0) - return; - - /* Initialize glyph charstrings */ - dnaSET_CNT(h->dcf.glyph, top->sup.nGlyphs); - memset(h->dcf.glyph.array, 0, h->dcf.glyph.cnt); - - /* Save stem counts */ - h->dcf.flags |= (DCF_Flatten | DCF_SaveStemCnt); - h->cb.glyph.beg = dcf_SaveStemCount; - - if (cfrIterateGlyphs(h->cfr.ctx, &h->cb.glyph)) - fatal(h, NULL); - - h->cb.glyph.beg = dcf_GlyphBeg; - h->dcf.flags &= ~(DCF_Flatten | DCF_SaveStemCnt); -} - -/* Begin new font. */ -static void dcf_BegFont(txCtx h, abfTopDict *top) { - int i; - const cfrSingleRegions *single; - unsigned short major; - if (h->src.type != src_OTF && h->src.type != src_CFF) - fatal(h, "-dcf mode: non-CFF font"); - - if (h->arg.g.cnt > 0) { - /* Glyph subset specified; select CharStringsINDEX dump */ - if (!(h->dcf.flags & DCF_TableSelected)) - /* Clear default table selections */ - h->dcf.flags &= ~DCF_AllTables; - h->dcf.flags |= DCF_CharStringsINDEX; - if (h->dcf.level == 0) - /* Set useful dump level */ - h->dcf.level = 5; - } - - h->src.offset = -BUFSIZ; - dstFileOpen(h, top); - - single = cfrGetSingleRegions(h->cfr.ctx); - major = dcf_DumpHeader(h, &single->Header); - if (major == 1) { - if (h->dcf.flags & DCF_IS_CUBE) - h->maxOpStack = TX_MAX_OP_STACK_CUBE; - else - h->maxOpStack = T2_MAX_OP_STACK; - initCstrs(h, top); - dcf_DumpNameINDEX(h, &single->NameINDEX); - dcf_DumpTopDICTINDEX(h, &single->TopDICTINDEX); - dcf_DumpStringINDEX(h, &single->StringINDEX); - dcf_DumpGlobalSubrINDEX(h, &single->GlobalSubrINDEX); - dcf_DumpEncoding(h, &single->Encoding); - dcf_DumpCharset(h, &single->Charset); - } else { - /* number of regions needs to be known for reading charstrings */ - dcf_getvsIndices(h, &single->VarStore); - h->dcf.flags |= DCF_IS_CFF2; - h->maxOpStack = CFF2_MAX_OP_STACK; - initCstrs(h, top); - dcf_DumpTopDICT2(h, &single->TopDICTINDEX); - } - dcf_DumpFDSelect(h, &single->FDSelect); - dcf_DumpVarStore(h, &single->VarStore); - dcf_DumpFDArrayINDEX(h, &single->FDArrayINDEX); - dcf_DumpCharStringsINDEX(h, &single->CharStringsINDEX); - - for (i = 0; i < top->FDArray.cnt; i++) { - const cfrRepeatRegions *repeat = cfrGetRepeatRegions(h->cfr.ctx, i); - if (top->FDArray.cnt > 1 && - (h->dcf.flags & (DCF_PrivateDICT | DCF_LocalSubrINDEX))) - fprintf(h->dst.stm.fp, "--- FD[%d]\n", i); - dcf_DumpPrivateDICT(h, &repeat->PrivateDICT); - h->dcf.fd = &h->dcf.local.array[i]; - dcf_DumpLocalSubrINDEX(h, &repeat->LocalSubrINDEX); - } -} - -/* End new font. */ -static void dcf_EndFont(txCtx h) { -} - -/* End font set. */ -static void dcf_EndSet(txCtx h) { - dstFileClose(h); -} - -/* Setup dcf mode. */ -static void dcf_SetMode(txCtx h) { - /* Set mode name */ - h->modename = "dcf"; - - /* h->dcf.flags is now set at the start of parseArgs - h->dcf.flags = DCF_AllTables|DCF_BreakFlowed; - h->dcf.level = 5; - */ - - /* Set library functions */ - h->dst.begset = dcf_BegSet; - h->dst.begfont = dcf_BegFont; - h->dst.endfont = dcf_EndFont; - h->dst.endset = dcf_EndSet; - - /* Initialize glyph callbacks */ - h->cb.glyph.beg = dcf_GlyphBeg; - h->cb.glyph.indirect_ctx = h; - - /* Set source library flag */ - /* These are now set at the start of parseArgs - h->cfr.flags = 0; - */ - - h->mode = mode_dcf; -} - -/* Mode-specific help. */ -static void dcf_Help(txCtx h) { - static char *text[] = - { -#include "dcf.h" - }; - printText(ARRAY_LEN(text), text); -} - -/* Parse -T argument. */ -static void dcf_ParseTableArg(txCtx h, char *arg) { - long save_flags = h->dcf.flags & DCF_BreakFlowed; - h->dcf.flags = 0; - for (;;) { - int c = *arg++; - switch (c) { - case '\0': - h->dcf.flags |= save_flags; - h->dcf.flags |= DCF_TableSelected; - return; - case 'h': - h->dcf.flags |= DCF_Header; - break; - case 'n': - h->dcf.flags |= DCF_NameINDEX; - break; - case 't': - h->dcf.flags |= DCF_TopDICTINDEX; - break; - case 's': - h->dcf.flags |= DCF_StringINDEX; - break; - case 'g': - h->dcf.flags |= DCF_GlobalSubrINDEX; - break; - case 'e': - h->dcf.flags |= DCF_Encoding; - break; - case 'C': - h->dcf.flags |= DCF_Charset; - break; - case 'f': - h->dcf.flags |= DCF_FDSelect; - break; - case 'F': - h->dcf.flags |= DCF_FDArrayINDEX; - break; - case 'c': - h->dcf.flags |= DCF_CharStringsINDEX; - break; - case 'p': - h->dcf.flags |= DCF_PrivateDICT; - break; - case 'l': - h->dcf.flags |= DCF_LocalSubrINDEX; - break; - case 'a': - if (strcmp(arg, "ll") == 0) { - h->dcf.flags = DCF_AllTables; - break; - } - /* Fall through */ - default: - fprintf(stderr, "%s: option -T invalid selector '%c' (ignored)\n", - h->progname, c); - } - } -} - -/* ---------------------------- Subset Creation ---------------------------- */ - -/* Make random subset. */ -static void makeRandSubset(txCtx h, char *opt, char *arg) { - long i; - char *p; - float percent = (float)strtod(arg, &p); - if (*p != '\0' || percent < 0 || percent > 100) - fatal(h, "bad arg (%s)", opt); - - /* Initialize glyph list */ - dnaSET_CNT(h->subset.glyphs, h->top->sup.nGlyphs); - for (i = 0; i < h->subset.glyphs.cnt; i++) - h->subset.glyphs.array[i] = (unsigned short)i; - - /* Randomize glyph list by random permutation method */ - for (i = 0; i < h->subset.glyphs.cnt - 1; i++) { - long j = randrange(h->subset.glyphs.cnt - i); - unsigned short tmp = h->subset.glyphs.array[i]; - h->subset.glyphs.array[i] = h->subset.glyphs.array[i + j]; - h->subset.glyphs.array[i + j] = tmp; - } - - /* Trim array to specified percentage */ - h->subset.glyphs.cnt = (long)(percent / 100.0 * h->subset.glyphs.cnt + 0.5); - if (h->subset.glyphs.cnt == 0) - h->subset.glyphs.cnt = 1; -} - -/* Make Font Dict subset. */ -static void makeFDSubset(txCtx h) { - long i, j; - - if (!(h->top->sup.flags & ABF_CID_FONT)) - fatal(h, "-fd specified for non-CID font"); - - getGlyphList(h); - - for (i = 0; i < h->src.glyphs.cnt; i++) { - abfGlyphInfo *info = h->src.glyphs.array[i]; - if (h->flags & SUBSET__EXCLUDE_OPT) { - unsigned int match = 0; - for (j = 0; j < h->fd.fdIndices.cnt; j++) { - if (info->iFD == h->fd.fdIndices.array[j]) { - match = 1; - break; - } - } - if (!match) - *dnaNEXT(h->subset.glyphs) = info->tag; - - } else { - for (j = 0; j < h->fd.fdIndices.cnt; j++) { - if (info->iFD == h->fd.fdIndices.array[j]) { - *dnaNEXT(h->subset.glyphs) = info->tag; - break; - } - } - } - } - - if (h->subset.glyphs.cnt == 0) - fatal(h, "no glyphs selected by -fd argument"); -} - -/* Begin new glyph definition for gathering glyph info. */ -static int getExcludeGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - *dnaNEXT(h->src.exclude) = info; - if (info->flags & ABF_GLYPH_CID) { - if (info->cid == 0) - h->flags &= ~SUBSET_HAS_NOTDEF; - } else { - if (strcmp(info->gname.ptr, ".notdef") == 0) - h->flags &= ~SUBSET_HAS_NOTDEF; - } - - return ABF_SKIP_RET; -} - -/* Compare glyphs by their tag. */ -static int CTL_CDECL cmpExcludeByTag(const void *first, const void *second) { - const abfGlyphInfo *a = *(abfGlyphInfo **)first; - const abfGlyphInfo *b = *(abfGlyphInfo **)second; - if (a->tag < b->tag) - return -1; - else if (a->tag > b->tag) - return 1; - else - return 0; -} - -/* Match glyph by its tag. */ -static int CTL_CDECL matchExcludedByTag(const void *key, const void *value, - void *ctx) { - unsigned short a = *(unsigned short *)key; - unsigned short b = (*(abfGlyphInfo **)value)->tag; - if (a < b) - return -1; - else if (a > b) - return 1; - else - return 0; -} - -static void invertSubset(txCtx h) { - long i; - long cnt; - - /* iterate over all glyphs such that h->exclude.array will be filled with tags of glyphs that match. */ - h->cb.saveGlyphBeg = h->cb.glyph.beg; - - /* Insert data gather function */ - h->cb.glyph.beg = getExcludeGlyphBeg; - h->cb.glyph.indirect_ctx = h; - h->flags |= SUBSET_SKIP_NOTDEF; - h->flags |= SUBSET_HAS_NOTDEF; /* This gets cleared by the getExcludeGlyphBeg if the .notdef is seen.*/ - callbackSubset(h); - h->flags &= ~SUBSET_SKIP_NOTDEF; - qsort(h->src.exclude.array, h->src.exclude.cnt, - sizeof(h->src.exclude.array[0]), cmpExcludeByTag); - - /* Restore saved function */ - h->cb.glyph.beg = h->cb.saveGlyphBeg; - - getGlyphList(h); - dnaSET_CNT(h->subset.glyphs, h->src.glyphs.cnt); - cnt = 0; - for (i = 0; i < h->src.glyphs.cnt; i++) { - size_t index; - unsigned short tag = h->src.glyphs.array[i]->tag; - if (!ctuLookup(&tag, h->src.exclude.array, h->src.exclude.cnt, - sizeof(h->src.exclude.array[0]), matchExcludedByTag, &index, h)) { - h->subset.glyphs.array[cnt] = tag; - cnt++; - } - } - dnaSET_CNT(h->subset.glyphs, cnt); -} - -/* Make glyph subset. */ -static void prepSubset(txCtx h) { - /* In the ReadFont function, the reader library iterates through the - glyphs specified by the glyph list argument. What this function does is - to create the glyph list argument, according to which is specified of - the several options which request a subset. Note that even if the user - is excluding only one or two glyphs with the the -gx option, the glyph - list arg is still very short, as it uses ranges of GIDs. - - This function first creates a list of selected glyphs in the - h->subset.glyphs DNA. IF there are not such glyphs, it returns. Else, it - then proceeds to build the glyph list arg in makeSubsetArgList() */ - if (h->flags & SHOW_NAMES) { - fflush(stdout); - if (h->top->sup.flags & ABF_CID_FONT) - fprintf(stderr, "--- CIDFontName: %s\n", - h->top->cid.CIDFontName.ptr); - else - fprintf(stderr, "--- FontName: %s\n", - h->top->FDArray.array[0].FontName.ptr); - } - - h->flags &= ~SUBSET_HAS_NOTDEF; - h->src.glyphs.cnt = 0; - h->src.exclude.cnt = 0; - h->subset.glyphs.cnt = 0; - - /* Make subset glyph list */ - if (h->arg.p != NULL) - makeRandSubset(h, "-p", h->arg.p); - else if (h->arg.P != NULL) - makeRandSubset(h, "-P", h->arg.P); - else if (h->fd.fdIndices.cnt > 0) - makeFDSubset(h); - else if (h->flags & SUBSET__EXCLUDE_OPT) - invertSubset(h); - else { - if (h->flags & SUBSET_OPT) { - if (h->flags & PRESERVE_GID) { - getGlyphList(h); - parseSubset(h, callbackPreserveGlyph); - h->src.glyphs.array[0]->flags |= PRESERVE_CHARSTRING; - h->arg.g.cnt = 0; - h->cb.save = h->cb.glyph; - h->cb.glyph = preserveGlyphCallbacks; - h->cb.glyph.direct_ctx = h; - } - } - } - - if (h->subset.glyphs.cnt == 0) - return; /* no subset */ - - /* Make subset arg list */ - makeSubsetArgList(h); - if ((h->mode == mode_cff || h->mode == mode_t1) || h->mode == mode_svg || h->mode == (mode_ufow && (h->flags & SHOW_NAMES))) { - char *p; - char *q; - long i; - - /* Print subset */ - fprintf(stderr, - "--- subset:\n" - "SRC font %s\n" - "SRC glyphs %ld\n" - "DST font %s\n" - "DST glyphs %ld\n", - h->src.stm.filename, h->top->sup.nGlyphs, - h->dst.stm.filename, h->subset.glyphs.cnt); - p = ""; - q = h->arg.g.substrs; - for (i = 0; i < h->arg.g.cnt; i++) { - fprintf(stderr, "%s%s", p, q); - p = ","; - q += strlen(q) + 1; - } - fprintf(stderr, "\n"); - } -} - -/* Callback glyph according to type technology and selector. */ -static void callbackGlyph(txCtx h, int type, unsigned short id, char *name) { - switch (h->src.type) { - case src_Type1: - switch (type) { - case sel_by_tag: - (void)t1rGetGlyphByTag(h->t1r.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - (void)t1rGetGlyphByCID(h->t1r.ctx, id, &h->cb.glyph); - break; - case sel_by_name: - (void)t1rGetGlyphByName(h->t1r.ctx, name, &h->cb.glyph); - break; - } - break; - case src_OTF: - case src_CFF: - switch (type) { - case sel_by_tag: - (void)cfrGetGlyphByTag(h->cfr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - (void)cfrGetGlyphByCID(h->cfr.ctx, id, &h->cb.glyph); - break; - case sel_by_name: - (void)cfrGetGlyphByName(h->cfr.ctx, name, &h->cb.glyph); - break; - } - break; - case src_TrueType: - switch (type) { - case sel_by_tag: - (void)ttrGetGlyphByTag(h->ttr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - /* Invalid; do nothing */ - break; - case sel_by_name: - (void)ttrGetGlyphByName(h->ttr.ctx, name, &h->cb.glyph); - break; - } - break; - - case src_SVG: - switch (type) { - case sel_by_tag: - (void)svrGetGlyphByTag(h->svr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - fatal(h, "Cannot read glyphs from SVG fonts by CID "); - break; - case sel_by_name: - (void)svrGetGlyphByName(h->svr.ctx, name, &h->cb.glyph); - break; - } - break; - case src_UFO: - switch (type) { - case sel_by_tag: - (void)ufoGetGlyphByTag(h->ufr.ctx, id, &h->cb.glyph); - break; - case sel_by_cid: - fatal(h, "Cannot read glyphs from UFO fonts by CID "); - break; - case sel_by_name: - (void)ufoGetGlyphByName(h->ufr.ctx, name, &h->cb.glyph); - break; - } - break; - } -} - -/* Add .notdef glyph to destination font. If it's already added it will be skipped. */ -static void addNotdef(txCtx h) { - if (((h->src.type == src_Type1) || (h->src.type == src_SVG) || (h->src.type == src_UFO)) && !(h->top->sup.flags & ABF_CID_FONT)) - callbackGlyph(h, sel_by_name, 0, ".notdef"); - else - callbackGlyph(h, sel_by_tag, 0, NULL); -} - -/* Filter glyphs using the glyph list pararmeter. */ -static void callbackSubset(txCtx h) { - parseSubset(h, callbackGlyph); - if (!((SUBSET_SKIP_NOTDEF & h->flags) || (SUBSET_HAS_NOTDEF & h->flags))) { - switch (h->mode) { - case mode_cff: - addNotdef(h); - break; - case mode_t1: - if (!(h->t1w.flags & T1W_TYPE_ADDN) && !(h->t1w.options & T1W_DECID)) - addNotdef(h); - break; - } - } -} - -/* ----------------------------- t1read Library ---------------------------- */ - -/* Read font with t1read library. */ -static void t1rReadFont(txCtx h, long origin) { - if (h->t1r.ctx == NULL) { - /* Initialize library */ - h->t1r.ctx = t1rNew(&h->cb.mem, &h->cb.stm, T1R_CHECK_ARGS); - if (h->t1r.ctx == NULL) - fatal(h, "(t1r) can't init lib"); - } - - if (h->flags & SUBSET_OPT && h->mode != mode_dump) - h->t1r.flags |= T1R_UPDATE_OPS; /* Convert seac for subsets */ - - if (h->flags & NO_UDV_CLAMPING) - h->t1r.flags |= T1R_NO_UDV_CLAMPING; - - if (t1rBegFont(h->t1r.ctx, h->t1r.flags, origin, &h->top, getUDV(h))) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (t1rIterateGlyphs(h->t1r.ctx, &h->cb.glyph)) - fatal(h, NULL); - } - - h->dst.endfont(h); - - if (t1rEndFont(h->t1r.ctx)) - fatal(h, NULL); -} - -/* ----------------------------- svread Library ---------------------------- */ - -/* Read font with svread library. */ -static void svrReadFont(txCtx h, long origin) { - if (h->svr.ctx == NULL) { - /* Initialize library */ - h->svr.ctx = svrNew(&h->cb.mem, &h->cb.stm, SVR_CHECK_ARGS); - if (h->svr.ctx == NULL) - fatal(h, "(svr) can't init lib"); - } - - if (svrBegFont(h->svr.ctx, h->svr.flags, &h->top)) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (svrIterateGlyphs(h->svr.ctx, &h->cb.glyph)) - fatal(h, NULL); - } - - h->dst.endfont(h); - - if (svrEndFont(h->svr.ctx)) - fatal(h, NULL); -} - -/* ----------------------------- ufo read Library ---------------------------- */ - -/* Read font with ufo rread library. */ -static void ufoReadFont(txCtx h, long origin) { - if (h->ufr.ctx == NULL) { - /* Initialize library */ - h->ufr.ctx = ufoNew(&h->cb.mem, &h->cb.stm, UFO_CHECK_ARGS); - if (h->ufr.ctx == NULL) - fatal(h, "(ufr) can't init lib"); - } - - if (ufoBegFont(h->ufr.ctx, h->ufr.flags, &h->top, h->ufr.altLayerDir)) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (ufoIterateGlyphs(h->ufr.ctx, &h->cb.glyph)) - fatal(h, NULL); - } - - h->dst.endfont(h); - - if (ufoEndFont(h->ufr.ctx)) - fatal(h, NULL); -} - -/* ---------------------------- cffread Library ---------------------------- */ - -/* Read format 12 Unicode cmap. Assumes format field already read. */ -static void readCmap14(txCtx h) { - /* Skip format and length fields */ - (void)read2(h); - (void)read4(h); - - read4(h); /* numVarSelectorRecords */ +/* -------------------------------- Options -------------------------------- */ - /* Not yet implemented - not sure it is worth the effort: spot and ttx are more useful outputs for this Unicode format. */ - return; -} +/* Note: options.h must be ascii sorted by option string */ -static void readCmap12(txCtx h) { - unsigned long nGroups; - unsigned long i; +enum /* Option enumeration */ +{ + opt_None, /* Not an option */ +#define DCL_OPT(string, index) index, +#include "options.h" + opt_Count +}; - /* Skip reserved, language, and length fields */ - (void)read2(h); - (void)read4(h); - (void)read4(h); +static const char *options[] = + { +#undef DCL_OPT +#define DCL_OPT(string, index) string, +#include "options.h" +}; - nGroups = read4(h); - for (i = 0; i < nGroups; i++) { - unsigned long startCharCode = read4(h); - unsigned long endCharCode = read4(h); - unsigned long startGlyphId = read4(h); +/* ------------------------------ Help Text -------------------------------- */ - while (startCharCode <= endCharCode) { - if (startGlyphId >= (unsigned long)h->top->sup.nGlyphs) - return; - h->cmap.encoding.array[startGlyphId++] = startCharCode++; - } - } +static void afm_Help(txCtx h) { + static char *text[] = { +#include "afm.h" + }; + printText(ARRAY_LEN(text), text); } -/* Read Unicode cmap. */ -static void readCmap(txCtx h, size_t offset) { - unsigned short segCount; - cmapSegment4 *segment; - cmapSegment4 *segmentEnd; - - /* Check format */ - bufSeek(h, (long)offset); - switch (read2(h)) { - case 4: - break; - case 14: - readCmap14(h); - return; - case 12: - readCmap12(h); - return; - default: - return; - } - - /* Read format 4 subtable; skip length and language fields */ - (void)read2(h); /* length */ - (void)read2(h); /* language */ - - /* Read segment count and allocate */ - segCount = read2(h) / 2; - dnaSET_CNT(h->cmap.segment, segCount); - segmentEnd = &h->cmap.segment.array[segCount]; - - /* Skip binary search fields */ - (void)read2(h); /* searchRange */ - (void)read2(h); /* entrySelector */ - (void)read2(h); /* rangeShift */ - - /* Read segment arrays */ - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) - segment->endCode = read2(h); - (void)read2(h); /* Skip password */ - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) - segment->startCode = read2(h); - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) - segment->idDelta = sread2(h); - offset = h->src.next - h->src.buf + h->src.offset; - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) { - unsigned short idRangeOffset = read2(h); - segment->idRangeOffset = - (idRangeOffset == 0) ? 0 : (unsigned long)(offset + idRangeOffset); - offset += 2; - } - - /* Derive mapping from segments */ - for (segment = h->cmap.segment.array; segment != segmentEnd; ++segment) { - unsigned short gid; - unsigned long code; - - if (segment->idRangeOffset == 0) { - gid = segment->idDelta + segment->startCode; - for (code = segment->startCode; code <= segment->endCode; ++code) { - if (code == 0xffff || gid >= h->cmap.encoding.cnt) - break; - if (gid != 0 && h->cmap.encoding.array[gid] == ABF_GLYPH_UNENC) - h->cmap.encoding.array[gid] = (unsigned short)code; - ++gid; - } - } else { - bufSeek(h, segment->idRangeOffset); - for (code = segment->startCode; code <= segment->endCode; ++code) { - gid = read2(h); - if (code != 0xffff && gid != 0 && gid < h->cmap.encoding.cnt && - h->cmap.encoding.array[gid] == ABF_GLYPH_UNENC) - h->cmap.encoding.array[gid] = (unsigned short)code; - } - } - } +static void cef_Help(txCtx h) { + static char *text[] = { +#include "cef.h" + }; + printText(ARRAY_LEN(text), text); } -/* Begin new glyph definition for gathering glyph info. */ -static int otfGlyphBeg(abfGlyphCallbacks *cb, abfGlyphInfo *info) { - txCtx h = cb->indirect_ctx; - unsigned long code = h->cmap.encoding.array[info->tag]; - if (code != ABF_GLYPH_UNENC) { - info->flags |= ABF_GLYPH_UNICODE; - info->encoding.code = code; - } - return h->cb.saveGlyphBeg(cb, info); +static void cff_Help(txCtx h) { + static char *text[] = { +#include "cff.h" + }; + printText(ARRAY_LEN(text), text); } -/* Prepare to process OTF font. */ -static void prepOTF(txCtx h) { - long unioff; - long uni5off; - long winoff; - unsigned short uniscore; - unsigned short winscore; - unsigned short version; - unsigned short nEncodings; - unsigned short i; - sfrTable *table; +static void dcf_Help(txCtx h) { + static char *text[] = { +#include "dcf.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Install new callback */ - h->cb.saveGlyphBeg = h->cb.glyph.beg; - h->cb.glyph.beg = otfGlyphBeg; - h->cb.glyph.indirect_ctx = h; +static void dump_Help(txCtx h) { + static char *text[] = { +#include "dump.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Prepare encoding array */ - dnaSET_CNT(h->cmap.encoding, h->top->sup.nGlyphs); - for (i = 0; i < h->cmap.encoding.cnt; i++) - h->cmap.encoding.array[i] = ABF_GLYPH_UNENC; +static void mtx_Help(txCtx h) { + static char *text[] = { +#include "mtx.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Get cmap table */ - table = sfrGetTableByTag(h->ctx.sfr, CTL_TAG('c', 'm', 'a', 'p')); - if (table == NULL) - fatal(h, "OTF: can't find cmap"); +static void path_Help(txCtx h) { + static char *text[] = { +#include "path.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Force seek */ - h->src.offset = LONG_MAX; - bufSeek(h, table->offset); +static void pdf_Help(txCtx h) { + static char *text[] = { +#include "pdf.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Read and check version */ - version = read2(h); - if (version != 0) - fatal(h, "cmap: bad version"); +static void ps_Help(txCtx h) { + static char *text[] = { +#include "ps.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Search for Unicode and Windows subtables */ - unioff = 0; - uniscore = 0; - winoff = 0; - winscore = 0; - nEncodings = read2(h); - for (i = 0; i < nEncodings; i++) { - /* Read encoding entry */ - unsigned short platformId = read2(h); - unsigned short platspecId = read2(h); - unsigned long suboff = read4(h); +static void svg_Help(txCtx h) { + static char *text[] = { +#include "svg.h" + }; + printText(ARRAY_LEN(text), text); +} - /* Select table */ - switch (platformId) { - case 0: /* Unicode platform */ - if ((platspecId == 3 || /* Unicode */ - platspecId == 4) && /* UCS-4 */ - (unioff == 0 || uniscore < platspecId)) { - unioff = table->offset + suboff; - uniscore = platspecId; - } else if (platspecId == 5) { - uni5off = table->offset + suboff; - readCmap(h, uni5off); /* read UVS cmap. */ - } - break; - case 3: /* Windows platform */ - if ((platspecId == 1 || /* Unicode */ - platspecId == 10) && /* UCS-4 */ - (winoff == 0 || winscore < platspecId)) { - winoff = table->offset + suboff; - winscore = platspecId; - } - break; - } - } +static void t1_Help(txCtx h) { + static char *text[] = { +#include "t1.h" + }; + printText(ARRAY_LEN(text), text); +} - if (unioff != 0) - readCmap(h, unioff); /* Prefer Unicode platform... */ - else if (winoff != 0) - readCmap(h, winoff); /* ...to Windows platform */ +static void ufo_Help(txCtx h) { + static char *text[] = { +#include "ufo.h" + }; + printText(ARRAY_LEN(text), text); } +/* ---------------------------- cffread Library ---------------------------- */ + /* Read font with cffread library. */ static void cfrReadFont(txCtx h, long origin, int ttcIndex) { float *uv; @@ -5559,607 +164,6 @@ static void cfrReadFont(txCtx h, long origin, int ttcIndex) { fatal(h, NULL); } -/* ----------------------------- ttread Library ---------------------------- */ - -/* Read font with ttread library. */ -static void ttrReadFont(txCtx h, long origin, int iTTC) { - if (h->ttr.ctx == NULL) { - h->ttr.ctx = ttrNew(&h->cb.mem, &h->cb.stm, TTR_CHECK_ARGS); - if (h->ttr.ctx == NULL) - fatal(h, "(ttr) can't init lib"); - } - - if (ttrBegFont(h->ttr.ctx, h->ttr.flags, origin, iTTC, &h->top)) - fatal(h, NULL); - - prepSubset(h); - - h->dst.begfont(h, h->top); - - if (h->mode != mode_cef) { - if (h->arg.g.cnt != 0) - callbackSubset(h); - else if (ttrIterateGlyphs(h->ttr.ctx, &h->cb.glyph)) - fatal(h, NULL); - } - - h->dst.endfont(h); - - if (ttrEndFont(h->ttr.ctx)) - fatal(h, NULL); -} - -/* ---------------- Platform-Specific Font Wrapper Callbacks --------------- */ - -/* Prepare next segment of font data. */ -static size_t nextseg(txCtx h, char **ptr) { - size_t srcleft = h->src.end - h->src.next; - - if (srcleft == 0) { - /* Refill empty source buffer */ - fillbuf(h, h->src.offset + h->src.length); - srcleft = h->src.length; - } - - *ptr = h->src.next; - if (srcleft <= h->seg.left) { - /* Return full buffer */ - h->seg.left -= srcleft; - h->src.next += srcleft; - } else { - /* Return partial buffer */ - srcleft = h->seg.left; - h->src.next += h->seg.left; - h->seg.left = 0; - } - - return srcleft; -} - -/* Refill input buffer from PFB stream. */ -static size_t PFBRefill(txCtx h, char **ptr) { - while (h->seg.left == 0) { - /* New segment; read segment header */ - int escape = read1(h); - int type = read1(h); - - /* Check segment header */ - if (escape != 128 || (type != 1 && type != 2 && type != 3)) - fatal(h, "bad PFB segment type"); - - if (type == 3) { - /* EOF */ - *ptr = NULL; - return 0; - } else { - /* Read segment length (little endian) */ - h->seg.left = read1(h); - h->seg.left |= read1(h) << 8; - h->seg.left |= (long)read1(h) << 16; - h->seg.left |= (long)read1(h) << 24; - } - } - - return nextseg(h, ptr); -} - -/* Refill input buffer from POST resource stream. */ -static size_t POSTRefill(txCtx h, char **ptr) { - while (h->seg.left == 0) { - /* New POST resource */ - int type; - - /* Read length and type */ - h->seg.left = read4(h) - 2; - - type = read1(h); - (void)read1(h); /* Discard padding byte (not documented) */ - - /* Process resource data */ - switch (type) { - case 0: - /* Comment; skip data */ - bufSeek(h, h->src.offset + (long)h->seg.left); - h->seg.left = 0; - break; - case 1: /* ASCII */ - case 2: /* Binary */ - break; - case 3: /* End-of-file */ - case 5: /* End-of-data */ - *ptr = NULL; - return 0; - case 4: /* Data in data fork; unsupported */ - default: /* Unknown POST type */ - fatal(h, "bad POST resource type"); - } - } - - return nextseg(h, ptr); -} - -/* ----------------------------- sfnt Handling ----------------------------- */ - -/* Add font record to list. */ -static void addFont(txCtx h, int type, int iTTC, long offset) { - FontRec *rec = dnaNEXT(h->fonts); - rec->type = type; - rec->iTTC = iTTC; - rec->offset = offset; -} - -static void addTTCFont(txCtx h, int ttcIndex, long origin, long offset) { - ctlTag version; - int result; - result = sfrBegFont(h->ctx.sfr, &h->src.stm, offset, &version); - switch (result) { - case sfrSuccess: { - switch (version) { - case sfr_v1_0_tag: - case sfr_true_tag: - /* TrueType */ - addFont(h, src_TrueType, ttcIndex, origin); - break; - case sfr_OTTO_tag: - /* OTF */ - addFont(h, src_OTF, ttcIndex, origin); - break; - default: - fatal(h, "(sfr) %s", sfrErrStr(sfrErrBadSfnt)); - } - break; - case sfrErrBadSfnt: - break; - default: - fatal(h, "(sfr) %s", sfrErrStr(result)); - } - } -} - -/* Add TrueType Collection font. */ -static void addTTC(txCtx h, long origin) { - /* sfrGetNextTTCOffset() returns 0 when it is asked to get the next offset - after the last real font, so it serves effectively as a test for - iterating through all the fonts in the TTC. */ - int i; - long offset; - - if (h->arg.i != NULL) { - int j; - i = (int)strtol(h->arg.i, NULL, 0); - if (i < 0) - fatal(h, "bad TTC index (-i)"); - - for (j = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); j++) { - if (j < i) - continue; - addTTCFont(h, i, origin, offset); - break; - } - - } else if (h->flags & EVERY_FONT) { - /* -y option; add whole collection */ - for (i = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); i++) { - addTTCFont(h, i, origin, offset); - } - } else { - /* Dump TTC index and quit */ - printf( - "### TrueType Collection (TTC)\n" - "\n" - "--- TableDirectory[index]=offset\n"); - for (i = 0; (offset = sfrGetNextTTCOffset(h->ctx.sfr)); i++) - printf("[%d]=%08lx\n", i, offset); - - printf( - "\n" - "Re-run %s and select a single table in the directory\n" - "with the -i option or every table with the -y option.\n", - h->progname); - exit(1); - } -} - -/* Read 4-byte signature and try to match against sfnt. */ -static void readsfnt(txCtx h, long origin) { - /* Note that 'origin' is the offset from the file to the beginning of the - font data for either a TTC, OTF or TTF font. It is NOT the offset to an SFNT-based font - in a TTC. The sfr functions access tables in an sfnt-based font at an - offset equal to the table offset from the sfnt table directory plus the 'origin' offset. - in - */ - enum { - CID__HDR_SIZE = 4 * 4 + 3 * 2, /* 'CID ' table header size */ - TYP1_HDR_SIZE = 5 * 4 + 2 * 2 /* 'TYP1' table header size */ - }; - ctlTag version; - sfrTable *table; - int result; - - if (h->ctx.sfr == NULL) { - /* Initialize library */ - h->ctx.sfr = - sfrNew(&h->cb.mem, &h->cb.stm, SFR_CHECK_ARGS); - if (h->ctx.sfr == NULL) - fatal(h, "(sfr) can't init lib"); - } - - result = sfrBegFont(h->ctx.sfr, &h->src.stm, origin, &version); - switch (result) { - case sfrSuccess: - switch (version) { - case sfr_v1_0_tag: - case sfr_true_tag: - /* TrueType */ - addFont(h, src_TrueType, 0, origin); - break; - case sfr_OTTO_tag: - /* OTF */ - addFont(h, src_OTF, 0, origin); - break; - case sfr_typ1_tag: - /* GX or sfnt-wrapped CID font */ - table = sfrGetTableByTag(h->ctx.sfr, CID__); - if (table != NULL) - addFont(h, src_Type1, 0, table->offset + CID__HDR_SIZE); - else { - table = sfrGetTableByTag(h->ctx.sfr, TYP1_); - if (table != NULL) - addFont(h, src_Type1, 0, table->offset + TYP1_HDR_SIZE); - } - break; - case sfr_ttcf_tag: - /* TrueType Collection */ - addTTC(h, origin); - break; - } - break; - case sfrErrBadSfnt: - break; - default: - fatal(h, "(sfr) %s", sfrErrStr(result)); - } - - result = sfrEndFont(h->ctx.sfr); - if (result) - fatal(h, "(sfr) %s", sfrErrStr(result)); -} - -/* ------------------------- Macintosh Resource Map ------------------------ */ - -/* Print Macintosh resource map. */ -static void printResMap(txCtx h, long origin) { - long i; - printf( - "### Macintosh Resource Fork (%08lx)\n" - "\n" - "Type Id Attr Offset Length Name\n" - "---- ----- ---- -------- -------- --------\n", - origin); - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - printf("%c%c%c%c %5hu %02hhx %08lx %08lx %s\n", - (int)(res->type >> 24 & 0xff), (int)(res->type >> 16 & 0xff), - (int)(res->type >> 8 & 0xff), (int)(res->type & 0xff), - res->id, res->attrs, res->offset, res->length, - (res->name == 0xffff) ? "--none--" : &h->res.names.array[res->name]); - } -} - -/* Print resource map and re-run note for user and quit. */ -static void printNote(txCtx h, long origin) { - printf( - "Macintosh FFIL with multiple sfnt resources:\n" - "\n"); - printResMap(h, origin); - printf( - "\n" - "Re-run %s and select a single sfnt resource with the\n" - "-i option or every sfnt resource with the -y option.\n", - h->progname); - exit(1); -} - -/* Read and process Macintosh resource map. */ -static void doResMap(txCtx h, long origin) { - /* Macintosh resource structures */ - struct - { - unsigned long mapOffset; - } header; - struct - { - unsigned short attrs; - unsigned short typeListOffset; - unsigned short nameListOffset; - } map; -#if 0 - /* Included for reference only */ - struct - { - unsigned long type; - unsigned short cnt; - unsigned short refListOffset; - } type; - struct - { - unsigned short id; - unsigned short nameOffset; - char attrs; - char dataOffset[3]; - unsigned long reserved; - } refList; -#endif - enum { - HEADER_SIZE = 256, /* Resource header size */ - MAP_SKIP_SIZE = 16 + 4 + 2 * 2, /* Skip to typeListOffset */ - REFLIST_SKIP_SIZE = 2 * 2 + 1 /* Skip to dataOffset */ - }; - long typeListCnt; - long i; - long j; - - /* Read header (4-byte header.dataOffset already read) */ - header.mapOffset = origin + read4(h); - - /* Read map */ - bufSeek(h, header.mapOffset + MAP_SKIP_SIZE); - map.typeListOffset = read2(h); - map.nameListOffset = read2(h); - - h->res.map.cnt = 0; - - /* Read type list */ - typeListCnt = read2(h); - for (i = 0; i <= typeListCnt; i++) { - unsigned long type = read4(h); - unsigned short cnt = read2(h); - unsigned short offset = read2(h); - ResInfo *res = dnaEXTEND(h->res.map, cnt + 1); - res->type = type; - res->length = cnt; - res->offset = offset; - for (j = 1; j <= cnt; j++) - res[j].type = type; - } - - /* Read reference list */ - i = 0; - while (i < h->res.map.cnt) { - ResInfo *res = &h->res.map.array[i]; - long cnt = (long)res->length; - bufSeek(h, header.mapOffset + map.typeListOffset + res->offset); - for (j = 0; j <= cnt; j++) { - res->id = read2(h); - res->name = read2(h); - res->attrs = read1(h); - res->offset = (unsigned long)read1(h) << 16; - res->offset |= read1(h) << 8; - res->offset |= read1(h); - res->offset += HEADER_SIZE; - res->offset += origin; - (void)read4(h); - res++; - } - i += j; - } - - /* Read names */ - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - if (res->name != 0xffff) { - char *name; - int length; - bufSeek(h, header.mapOffset + map.nameListOffset + res->name); - length = read1(h); - res->name = h->res.names.cnt; - name = dnaEXTEND(h->res.names, length + 1); - readN(h, length, name); - name[length] = '\0'; - } - } - - /* Read resource data lengths */ - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - bufSeek(h, res->offset); - res->length = read4(h); - if (res->type != POST_) - res->offset += 4; - } - - /* Process resource map */ - if (h->flags & DUMP_RES) { - /* -r option; print resource map and exit */ - printResMap(h, origin); - exit(0); - } else if (h->arg.i != NULL) { - /* -i option; look for specific sfnt resource */ - unsigned short id = (unsigned short)strtol(h->arg.i, NULL, 0); - - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - if (res->type == sfnt_ && res->id == id) { - readsfnt(h, res->offset); - return; - } - } - fatal(h, "resource not found"); - } else { - /* Look for sfnt/POST resources */ - for (i = 0; i < h->res.map.cnt; i++) { - ResInfo *res = &h->res.map.array[i]; - switch (res->type) { - case sfnt_: - if (h->flags & EVERY_FONT) - /* -y option; add sfnt */ - readsfnt(h, res->offset); - else if (i + 1 == h->res.map.cnt || - h->res.map.array[i + 1].type != sfnt_) { - /* Singleton sfnt resource */ - readsfnt(h, res->offset); - return; - } else - /* Multiple sfnt resources; print note */ - printNote(h, origin); - break; - case POST_: - h->seg.refill = POSTRefill; - addFont(h, src_Type1, 0, res->offset); - return; - } - } - } -} - -/* ----------------------- AppleSingle/Double Formats ---------------------- */ - -/* Process AppleSingle/Double format data. */ -static void doASDFormats(txCtx h, ctlTag magic) { - char junk[16]; - long i; - - h->asd.magic = magic; - h->asd.version = read4(h); - - /* Skip filler */ - readN(h, sizeof(junk), junk); - - /* Read number of entries */ - dnaSET_CNT(h->asd.entries, read2(h)); - - /* Read entry descriptors */ - for (i = 0; i < h->asd.entries.cnt; i++) { - EntryDesc *entry = &h->asd.entries.array[i]; - entry->id = read4(h); - entry->offset = read4(h); - entry->length = read4(h); - } - - if (h->flags & DUMP_ASD) { - /* -R option; print AppleSingle/Double data */ - printf( - "### %s Format, Version %1.1f\n" - "\n", - (h->asd.magic == sig_AppleSingle) ? "AppleSingle" : "AppleDouble", - h->asd.version / 65536.0); - - printf( - "Id Offset Length Description\n" - "-- -------- -------- -------------\n"); - - for (i = 0; i < h->asd.entries.cnt; i++) { - static char *desc[] = - { - /* 00 */ "--unknown--", - /* 01 */ "Data Fork", - /* 02 */ "Resource Fork", - /* 03 */ "Real Name", - /* 04 */ "Comment", - /* 05 */ "Icon, B&W", - /* 06 */ "Icon, Color", - /* 07 */ "File Info (old format)", - /* 08 */ "File Dates Info", - /* 09 */ "Finder Info", - /* 10 */ "Macintosh File Info", - /* 11 */ "ProDOS File Info", - /* 12 */ "MS-DOS File Info", - /* 13 */ "Short Name", - /* 14 */ "AFP File Info", - /* 15 */ "Directory ID", - }; - EntryDesc *entry = &h->asd.entries.array[i]; - printf("%02lx %08lx %08lx %s\n", - entry->id, entry->offset, entry->length, - (entry->id < ARRAY_LEN(desc)) ? desc[entry->id] : "--unknown--"); - } - exit(0); - } else - for (i = 0; i < h->asd.entries.cnt; i++) { - EntryDesc *entry = &h->asd.entries.array[i]; - if (entry->length > 0) - switch (entry->id) { - case 1: - /* Data fork (AppleSingle); see if it's an sfnt */ - readsfnt(h, entry->offset); - break; - case 2: - /* Resource fork (AppleSingle/Double) */ - bufSeek(h, entry->offset + 4); - doResMap(h, entry->offset); - break; - } - } -} - -/* Scan source file for fonts and build font list. */ -static void buildFontList(txCtx h) { - ctlTag sig; - h->fonts.cnt = 0; - - /* Initialize segment */ - h->seg.refill = NULL; - - if (h->src.stm.fp == NULL) { - /* We get here only if h->file.src is a directory. Check if it is UFO font */ - char tempFileName[FILENAME_MAX]; - FILE *tempFP; - sprintf(tempFileName, "%s/glyphs/contents.plist", h->file.src); - tempFP = fopen(tempFileName, "rt"); - if (tempFP != NULL) { - // it is a ufo font! - fclose(tempFP); - addFont(h, src_UFO, 0, 0); - } else { - fileError(h, h->src.stm.filename); - } - } else { - /* Read first buffer */ - fillbuf(h, 0); - /* Make 2-byte signature */ - sig = (ctlTag)read1(h) << 24; - sig |= (ctlTag)read1(h) << 16; - - switch (sig) { - case sig_PostScript0: - case sig_PostScript1: - case sig_PostScript2: - addFont(h, src_Type1, 0, 0); - break; - case sig_PFB: - h->seg.refill = PFBRefill; - addFont(h, src_Type1, 0, 0); - break; - case sig_CFF: - case sig_CFF2: - addFont(h, src_CFF, 0, 0); - break; - default: - /* Make 4-byte signature */ - sig |= read1(h) << 8; - sig |= read1(h); - switch (sig) { - case sig_MacResource: - doResMap(h, 0); - break; - case sig_AppleSingle: - case sig_AppleDouble: - doASDFormats(h, sig); - break; - default: - readsfnt(h, 0); - } - } - - if (h->fonts.cnt == 0) { - if ((0 == strncmp(h->src.buf, "src.buf, "fonts.cnt == 0) - fatal(h, "bad font file: %s", h->src.stm.filename); -} - /* ----------------------------- Usage and Help ---------------------------- */ /* Print usage information. */ @@ -6338,58 +342,6 @@ static void printVersions(txCtx h) { exit(0); } -/* Setup new mode. */ -static void setMode(txCtx h, int mode) { - /* Initialize files */ - h->file.sr = NULL; - h->file.sd = NULL; - h->file.dd = NULL; - strcpy(h->file.src, "-"); - strcpy(h->file.dst, "-"); - - /* Begin new mode */ - switch (mode) { - case mode_dump: - dump_SetMode(h); - break; - case mode_ps: - ps_SetMode(h); - break; - case mode_afm: - afm_SetMode(h); - break; - case mode_path: - path_SetMode(h); - break; - case mode_cff: - cff_SetMode(h); - break; - case mode_cef: - cef_SetMode(h); - break; - case mode_pdf: - pdf_SetMode(h); - break; - case mode_mtx: - mtx_SetMode(h); - break; - case mode_t1: - t1_SetMode(h); - break; - case mode_svg: - svg_SetMode(h); - break; - case mode_ufow: - ufo_SetMode(h); - break; - case mode_dcf: - dcf_SetMode(h); - break; - } - - h->flags |= SEEN_MODE; -} - /* Match options. */ static int CTL_CDECL matchOpts(const void *key, const void *value) { return strcmp((char *)key, *(char **)value); @@ -7657,6 +1609,10 @@ int CTL_CDECL main(int argc, char *argv[]) { } memset(h, 0, sizeof(struct txCtx_)); + h->app = APP_TX; + h->appSpecificInfo = NULL; /* unused in tx.c, used in rotateFont.c & mergeFonts.c */ + h->appSpecificFree = txFree; + txNew(h, progname); if (argc > 1 && getOptionIndex(argv[argc - 2]) == opt_s) { diff --git a/python/afdko/autohint.py b/python/afdko/autohint.py index e37b6062c..01ec8fcf3 100644 --- a/python/afdko/autohint.py +++ b/python/afdko/autohint.py @@ -1,4 +1,3 @@ -#!/bin/env python from __future__ import print_function __copyright__ = """Copyright 2016 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. diff --git a/python/afdko/buildcff2vf.py b/python/afdko/buildcff2vf.py index 5cf397731..e15eb67e2 100644 --- a/python/afdko/buildcff2vf.py +++ b/python/afdko/buildcff2vf.py @@ -985,7 +985,8 @@ def run(args=None): if os.path.exists(varFontPath): os.remove(varFontPath) - varFont, varModel, masterPaths = varLib.build(designSpacePath, otfFinder) + varFont, varModel, masterPaths = varLib.build(designSpacePath, + otfFinder, exclude=("CFF2",)) blendError = buildCFF2Font(varFontPath, varFont, varModel, masterPaths, post_format_3) diff --git a/python/afdko/checkoutlinesufo.py b/python/afdko/checkoutlinesufo.py index 54c27192c..a43c69aa7 100644 --- a/python/afdko/checkoutlinesufo.py +++ b/python/afdko/checkoutlinesufo.py @@ -6,11 +6,10 @@ from __future__ import print_function, absolute_import -__version__ = '2.2.1' +__version__ = '2.3.0' import argparse from functools import cmp_to_key -import hashlib import os import re import shutil @@ -20,8 +19,8 @@ import booleanOperations.booleanGlyph import defcon -import ufoLib from fontPens.digestPointPen import DigestPointPen +from fontTools import ufoLib from afdko import ufotools from afdko.ufotools import kProcessedGlyphsLayer as PROCD_GLYPHS_LAYER @@ -51,7 +50,6 @@ def __init__(self, font_path): self.defcon_font = None self.use_hash_map = False self.ufo_font_hash_data = None - self.ufo_format = 2 self.save_to_default_layer = False def open(self, use_hash_map): @@ -157,6 +155,7 @@ def save(self): layer.save(glyph_set) if self.font_type == UFO_FONT_TYPE: + ufotools.regenerate_glyph_hashes(self.ufo_font_hash_data) # Write the hash data, if it has changed. self.ufo_font_hash_data.close() elif self.font_type == TYPE1_FONT_TYPE: @@ -200,23 +199,6 @@ def check_skip_glyph(self, glyph_name, do_all): self.ufo_font_hash_data.getOrSkipGlyphXML(glyph_name, do_all) return skip - @staticmethod - def build_glyph_hash(width, glyph_digest): - data_list = [str(width)] - for x, y in glyph_digest: - data_list.append("%s%s" % (x, y)) - data_list.sort() - data = "".join(data_list) - if len(data) < 128: - glyph_hash = data - else: - glyph_hash = hashlib.sha512(data).hexdigest() - return glyph_hash - - def update_hash_entry(self, glyph_name, changed): - if self.ufo_font_hash_data is not None: # isn't a UFO font. - self.ufo_font_hash_data.updateHashEntry(glyph_name, changed) - def clear_hash_map(self): if self.ufo_font_hash_data is not None: self.ufo_font_hash_data.clearHashMap() @@ -1082,7 +1064,6 @@ def run(args=None): if changed and options.allow_changes: font_changed = True original_contours = list(defcon_glyph) - font_file.update_hash_entry(glyph_name, changed) if options.write_to_default_layer: fixed_glyph = defcon_glyph fixed_glyph.clearContours() diff --git a/python/afdko/fdkutils.py b/python/afdko/fdkutils.py old mode 100755 new mode 100644 index febe994e9..f7dac47a6 --- a/python/afdko/fdkutils.py +++ b/python/afdko/fdkutils.py @@ -1,7 +1,7 @@ # Copyright 2016 Adobe. All rights reserved. """ -fdkutils.py v1.2.7 Aug 28 2018 +fdkutils.py v1.2.8 Dec 7 2018 A module of functions that are needed by several of the AFDKO scripts. """ @@ -11,7 +11,7 @@ import subprocess import tempfile -from fontTools.misc.py23 import tounicode +from fontTools.misc.py23 import tounicode, tostr def get_temp_file_path(): @@ -24,6 +24,19 @@ def get_resources_dir(): return os.path.join(os.path.dirname(__file__), 'resources') +def run_shell_command(args): + """ + Runs a shell command. + Returns True if the command was successful, and False otherwise. + """ + try: + subprocess.check_call(args) + return True + except (subprocess.CalledProcessError, OSError) as err: + print(err) + return False + + def runShellCmd(cmd): try: p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, @@ -41,13 +54,13 @@ def runShellCmdLogging(cmd): proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) while 1: - output = proc.stdout.readline() + output = proc.stdout.readline().rstrip() if output: - print(output, end=' ') + print(tostr(output)) if proc.poll() is not None: - output = proc.stdout.readline() + output = proc.stdout.readline().rstrip() if output: - print(output, end=' ') + print(tostr(output)) break except (subprocess.CalledProcessError, OSError) as err: msg = "Error executing command '%s'\n%s" % (cmd, err) diff --git a/python/afdko/makeinstancesufo.py b/python/afdko/makeinstancesufo.py old mode 100755 new mode 100644 index 6dc16c039..5aecc32e4 --- a/python/afdko/makeinstancesufo.py +++ b/python/afdko/makeinstancesufo.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python - # Copyright 2015 Adobe. All rights reserved. """ @@ -15,13 +13,13 @@ import os import shutil import sys -from subprocess import PIPE, Popen -from fontTools.misc.py23 import open, tounicode, tobytes +from fontTools.misc.py23 import open, tobytes from defcon import Font -from mutatorMath.ufo import build as mutatorMathBuild +from psautohint.__main__ import main as psautohint from ufonormalizer import normalizeUFO +from ufoProcessor import build as ufoProcessorBuild try: import xml.etree.cElementTree as ET @@ -32,7 +30,7 @@ from afdko.ufotools import validateLayers -__version__ = '2.0.0' +__version__ = '2.2.0' logger = logging.getLogger(__name__) @@ -40,10 +38,6 @@ DFLT_DESIGNSPACE_FILENAME = "font.designspace" -class SnapShotError(Exception): - pass - - def readDesignSpaceFile(options): """ Read design space file. build a new instancesList with all the instances from the ds file @@ -102,7 +96,7 @@ def readDesignSpaceFile(options): def updateInstance(options, fontInstancePath): """ - Run checkoutlinesufo and autohint, unless explicitly suppressed. + Run checkoutlinesufo and psautohint, unless explicitly suppressed. """ if options.doOverlapRemoval: logger.info("Doing overlap removal with checkoutlinesufo on %s ..." % @@ -116,29 +110,14 @@ def updateInstance(options, fontInstancePath): raise if options.doAutoHint: - logger.info("Running autohint on %s ..." % fontInstancePath) - logList = [] - opList = ['-q', '-nb', fontInstancePath] + logger.info("Running psautohint on %s ..." % fontInstancePath) + ah_args = ['--no-zones-stems', fontInstancePath] if options.no_round: - opList.insert(0, "-dec") - opList.insert(0, 'autohint') - proc = Popen(opList, stdout=PIPE) - while 1: - output = tounicode(proc.stdout.readline()) - if output: - logList.append(output) - if proc.poll() is not None: - output = proc.stdout.readline() - if output: - if options.verbose == 1: - print(output, end='') - logList.append(output) - break - log = "".join(logList) - if not ("Done with font" in log): - logger.error(log) - logger.error("Error in autohinting %s" % fontInstancePath) - raise(SnapShotError) + ah_args.insert(0, '-d') + try: + psautohint(ah_args) + except Exception: + raise def clearCustomLibs(dFont): @@ -230,7 +209,7 @@ def roundSelectedValues(dFont): def postProcessInstance(fontPath, options): dFont = Font(fontPath) clearCustomLibs(dFont) - if options.no_round: + if not options.no_round: roundSelectedValues(dFont) dFont.save() @@ -247,13 +226,13 @@ def run(options): if not dsPath: return - version = 2 + version = 3 if len(newInstancesList) == 1: logger.info("Building 1 instance...") else: logger.info("Building %s instances..." % len(newInstancesList)) - mutatorMathBuild(documentPath=dsPath, outputUFOFormatVersion=version, - roundGeometry=(not options.no_round)) + ufoProcessorBuild(documentPath=dsPath, outputUFOFormatVersion=version, + roundGeometry=(not options.no_round), logger=logger) if (dsPath != options.dsPath) and os.path.exists(dsPath): os.remove(dsPath) @@ -397,9 +376,8 @@ def main(args=None): try: run(opts) - except SnapShotError: - logger.error("Quitting after error.") - return 1 + except Exception: + raise if __name__ == "__main__": diff --git a/python/afdko/makeotf.py b/python/afdko/makeotf.py old mode 100755 new mode 100644 index a6d4b4673..8fcb39f70 --- a/python/afdko/makeotf.py +++ b/python/afdko/makeotf.py @@ -26,7 +26,7 @@ """ __version__ = """\ -makeotf.py v2.5.2 Sep 20 2018 +makeotf.py v2.6.0 Dec 7 2018 """ __methods__ = """ @@ -2200,28 +2200,26 @@ def copyTTFGlyphTables(inputFilePath, tempOutputPath, outputPath): for tableTag in ["GDEF", "GSUB", "GPOS", "cmap", "name", "OS/2", "BASE"]: if tableTag not in tableDump: continue - command = "sfntedit -x \"%s\"=\"%s\" \"%s\" 2>&1" % ( - tableTag, tempTablePath, tempOutputPath) - log = fdkutils.runShellCmd(command) - if not ("Done." in log): - print(log) + args1 = ['sfntedit', '-x', '%s=%s' % (tableTag, tempTablePath), + tempOutputPath] + success1 = fdkutils.run_shell_command(args1) + if not success1: print("Error removing table '%s' from OTF font reference." % tableTag) return - command = "sfntedit -a \"%s\"=\"%s\" \"%s\" 2>&1" % ( - tableTag, tempTablePath, outputPath) - log = fdkutils.runShellCmd(command) - if not ("Done." in log): - print(log) + args2 = ['sfntedit', '-a', '%s=%s' % (tableTag, tempTablePath), + outputPath] + success2 = fdkutils.run_shell_command(args2) + if not success2: print("Error adding makeotf-made table '%s' to TrueType font." % tableTag) return - print("\tcopied \"%s\"." % tableTag) + print(" copied \"%s\"" % tableTag) - command = "sfntedit -f \"%s\" 2>&1" % outputPath - fdkutils.runShellCmd(command) + # fix checksums + fdkutils.run_shell_command(['sfntedit', '-f', outputPath]) print("Succeeded in merging makeotf tables with TrueType source font to " "final TrueType output font at '%s'." % outputPath) diff --git a/python/afdko/otc2otf.py b/python/afdko/otc2otf.py old mode 100755 new mode 100644 index 970d1f32e..158bdc6f6 --- a/python/afdko/otc2otf.py +++ b/python/afdko/otc2otf.py @@ -1,4 +1,4 @@ -# otc2otf.py v1.3 October 13 2017 +# otc2otf.py v1.4 Jan 8 2019 from __future__ import print_function __copyright__ = """Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. @@ -26,6 +26,9 @@ import os import struct +from fontTools.misc.py23 import tostr + + class OTCError(TypeError): pass @@ -138,7 +141,7 @@ def parseArgs(args): data = fp.read(4) if data != b'ttcf': - raise OTCErrr("File is not an OpenType Collection file: '%s'." % (fontPath)) + raise OTCError("File is not an OpenType Collection file: '%s'." % (fontPath)) return fontPath, doReportOnly @@ -179,7 +182,7 @@ def getPSName(data): if psName == None: psName = "PSNameUndefined" - return psName + return tostr(psName) def readFontFile(fontOffset, data, tableDict, doReportOnly): sfntType, numTables, searchRange, entrySelector, rangeShift = struct.unpack(sfntDirectoryFormat, data[fontOffset:fontOffset + sfntDirectorySize]) @@ -200,10 +203,10 @@ def readFontFile(fontOffset, data, tableDict, doReportOnly): entryData = entryData[sfntDirectoryEntrySize:] i += 1 if seenGlyf: - fontEntry.fileName = fontEntry.psName + ".ttf" + fontEntry.fileName = "%s.ttf" % fontEntry.psName else: - fontEntry.fileName = fontEntry.psName + ".otf" - + fontEntry.fileName = "%s.otf" % fontEntry.psName + if doReportOnly: print("%s" % (fontEntry.fileName)) for tableEntry in fontEntry.tableList: @@ -218,7 +221,7 @@ def readFontFile(fontOffset, data, tableDict, doReportOnly): return fontEntry -def writeOTFFont(fontEntry): +def writeOTFFont(fontEntry, directory): dataList = [] numTables = len(fontEntry.tableList) @@ -243,8 +246,12 @@ def writeOTFFont(fontEntry): dataList.append(tableData) fontData = b"".join(dataList) - - with open(fontEntry.fileName, "wb") as fp: + try: + font_file_path = os.path.join(directory.decode(sys.getfilesystemencoding()), fontEntry.fileName) + except AttributeError: + font_file_path = os.path.join(directory, fontEntry.fileName) + + with open(font_file_path, "wb") as fp: fp.write(fontData) return @@ -270,10 +277,11 @@ def run(args): fontList.append(fontEntry) offsetdata = offsetdata[offsetSize:] i += 1 - - if not doReportOnly: + + if not doReportOnly: + directory = os.path.dirname(os.path.realpath(fontPath)) for fontEntry in fontList: - writeOTFFont(fontEntry) + writeOTFFont(fontEntry, directory) print("Output font:", fontEntry.fileName) print("Done") diff --git a/python/afdko/otf2otc.py b/python/afdko/otf2otc.py old mode 100755 new mode 100644 index 21160cbe4..ca71a4689 --- a/python/afdko/otf2otc.py +++ b/python/afdko/otf2otc.py @@ -1,5 +1,7 @@ # otf2otc.py v1.5 October 12 2017 +from fontTools.misc.py23 import tostr + __copyright__ = """Copyright 2014,2017 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. """ @@ -308,18 +310,18 @@ def run(args): unSharedTables = [] for tableEntryList in tableList: if len(tableEntryList) > 1: - unSharedTables.append(tableEntryList[0].tag.decode('ascii')) + unSharedTables.append(tostr(tableEntryList[0].tag.decode('ascii'))) else: - sharedTables.append(tableEntryList[0].tag.decode('ascii')) + sharedTables.append(tostr(tableEntryList[0].tag.decode('ascii'))) if len(sharedTables) == 0: print("No tables are shared") else: - print("Shared tables:", sharedTables) + print("Shared tables: %s" % repr(sharedTables)) if len(unSharedTables) == 0: print("All tables are shared") else: - print("Un-shared tables:", unSharedTables) - + print("Un-shared tables: %s" % repr(unSharedTables)) + print("Done") diff --git a/python/afdko/otf2ttf.py b/python/afdko/otf2ttf.py old mode 100755 new mode 100644 index 62b4f7359..d92e615f8 --- a/python/afdko/otf2ttf.py +++ b/python/afdko/otf2ttf.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python from __future__ import print_function, division, absolute_import import argparse diff --git a/python/afdko/pdfdoc.py b/python/afdko/pdfdoc.py old mode 100755 new mode 100644 diff --git a/python/afdko/pdfgen.py b/python/afdko/pdfgen.py old mode 100755 new mode 100644 diff --git a/python/afdko/pdfgeom.py b/python/afdko/pdfgeom.py old mode 100755 new mode 100644 diff --git a/python/afdko/pdfmetrics.py b/python/afdko/pdfmetrics.py old mode 100755 new mode 100644 diff --git a/python/afdko/pdfutils.py b/python/afdko/pdfutils.py old mode 100755 new mode 100644 diff --git a/python/afdko/proofpdf.py b/python/afdko/proofpdf.py index 21f3ce56f..01df401c7 100644 --- a/python/afdko/proofpdf.py +++ b/python/afdko/proofpdf.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python - # Copyright 2014 Adobe. All rights reserved. """ diff --git a/python/afdko/resources/Adobe-CNS1/Adobe-CNS1_sequences.txt b/python/afdko/resources/Adobe-CNS1/Adobe-CNS1_sequences.txt old mode 100755 new mode 100644 diff --git a/python/afdko/resources/Adobe-GB1/Adobe-GB1_sequences.txt b/python/afdko/resources/Adobe-GB1/Adobe-GB1_sequences.txt old mode 100755 new mode 100644 diff --git a/python/afdko/resources/Adobe-Japan1/Adobe-Japan1_sequences.txt b/python/afdko/resources/Adobe-Japan1/Adobe-Japan1_sequences.txt old mode 100755 new mode 100644 diff --git a/python/afdko/stemhist.py b/python/afdko/stemhist.py index 13f643e23..e3b202bd4 100644 --- a/python/afdko/stemhist.py +++ b/python/afdko/stemhist.py @@ -1,4 +1,3 @@ -#!/bin/env python from __future__ import print_function __copyright__ = """Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/). All Rights Reserved. diff --git a/python/afdko/ttfcomponentizer.py b/python/afdko/ttfcomponentizer.py old mode 100755 new mode 100644 index 27114bb12..5a9ddc13f --- a/python/afdko/ttfcomponentizer.py +++ b/python/afdko/ttfcomponentizer.py @@ -1,11 +1,9 @@ -#!/usr/bin/env python - # Copyright 2018 Adobe. All rights reserved. """ Takes in a TrueType font and looks for a UFO font stored in the same folder. Uses the UFO's components data to componentize matching TrueType glyphs. -The script only supports components that are not scaled, rotated or flipped. +The script only supports components that are not scaled, rotated nor flipped. """ from __future__ import print_function @@ -14,34 +12,138 @@ import os import sys -from fontTools.ttLib import TTFont, getTableModule from fontTools.misc.py23 import open +from fontTools.ttLib import TTFont, getTableModule +from fontTools.ufoLib.errors import UFOLibError from defcon import Font -from ufoLib import UFOLibError -__version__ = '0.1.0' +__version__ = '0.2.1' PUBLIC_PSNAMES = "public.postscriptNames" GOADB_FILENAME = "GlyphOrderAndAliasDB" -def get_font_format(font_file_path): - with open(font_file_path, "rb") as f: - head = f.read(4).decode() - if head in ("\0\1\0\0", "true"): - return "TTF" - return None +class ComponentsData(object): + def __init__(self): + self.names = () + self.positions = () + self.same_advwidth = False + def add_component(self, name, pos): + self.names += (name,) + self.positions += (pos,) -def validate_font_path(path): - path = os.path.realpath(path) - if not (os.path.isfile(path) and get_font_format(path) == 'TTF'): - print("ERROR: {} is not a valid TrueType font file path.".format(path), - file=sys.stderr) - return None - return path + +class TTComponentizer(object): + def __init__(self, ufo, ps_names, options): + self.ufo = ufo + self.ps_names = ps_names + self.opts = options + self.composites_data = {} + self.comp_count = 0 + + def componentize(self): + # Get the composites' info from processing the UFO + self.get_composites_data() + + self.componentize_ttf() + + plural = "s were" if self.comp_count != 1 else " was" + print("Done! {} glyph{} componentized.".format( + self.comp_count, plural), file=sys.stdout) + + def get_composites_data(self): + """ + Iterate thru each glyph of a UFO and collect the names and positions + of all components that make up a composite glyph. The process will + only collect data for composites that are strictly made with components + (i.e. no mixed contours-components composites), and whose components + only have x and y transformations (thus composites with scaled, + rotated, or flipped componentes will NOT be considered). + + Fills the 'composites_data' dictionary whose keys are composite names + and whose values are ComponentsData objects. + + NOTE: All glyph names in the returned dictionary are production names. + """ + for glyph in self.ufo: + if glyph.components and not len(glyph): + ttcomps = ComponentsData() + all_comps_are_basic = True + for i, comp in enumerate(glyph.components): + if comp.transformation[:4] != (1, 0, 0, 1): + all_comps_are_basic = False + break + comp_name = self.ps_names.get(comp.baseGlyph, + comp.baseGlyph) + ttcomps.add_component(comp_name, comp.transformation[4:]) + if i == 0: + ttcomps.same_advwidth = self.check_1st_comp_advwidth( + glyph) + if all_comps_are_basic: + glyf_name = self.ps_names.get(glyph.name, glyph.name) + self.composites_data[glyf_name] = ttcomps + + def check_1st_comp_advwidth(self, glyph): + """ + Returns True if the advance width of the composite glyph is the same + as the advance width of its first component, and False otherwise. + This information is essential for setting the flag of the composite's + first component later on. + """ + return glyph.width == self.ufo[glyph.components[0].baseGlyph].width + + def componentize_ttf(self): + """ + Loads a TrueType font and iterates thru a dictionary of composites + data. Remakes some glyphs in the glyf table from being made of + countours to being made of components. + + Saves the modified font in a new location if an output path was + provided, otherwise overwrites the original one. + + Updates a count of the glyphs that got componentized. + """ + font = TTFont(self.opts.font_path) + glyf_table = font['glyf'] + + for gname in self.composites_data: + if gname not in glyf_table: + continue + if not all([cname in glyf_table for cname in self.composites_data[ + gname].names]): + continue + + components = self.assemble_components(self.composites_data[gname]) + + glyph = glyf_table[gname] + glyph.__dict__.clear() + setattr(glyph, "components", components) + glyph.numberOfContours = -1 + self.comp_count += 1 + + if self.opts.output_path: + font.save(os.path.realpath(self.opts.output_path)) + else: + font.save(self.opts.font_path) + + @staticmethod + def assemble_components(comps_data): + """ + Assemble and return a list of GlyphComponent objects. + """ + components = [] + for i, cname in enumerate(comps_data.names): + component = getTableModule('glyf').GlyphComponent() + component.glyphName = cname + component.x, component.y = comps_data.positions[i] + component.flags = 0x4 + if i == 0 and comps_data.same_advwidth: + component.flags = 0x204 + components.append(component) + return components def get_ufo_path(ttf_path): @@ -82,7 +184,7 @@ def read_txt_file_lines(file_path): def process_goadb(goadb_path): """ - Read a GOAD file and return a dictionary mapping glyph design names to + Read a GOADB file and return a dictionary mapping glyph design names to glyph production names. The returned mapping may be empty as it will only contain entries for glyph names that change from design to production. The sctructure of each line of a GOADB file is: @@ -174,97 +276,21 @@ def get_glyph_names_mapping(ufo_path): return ufo, get_goadb_names_mapping(ufo_path) -class ComponentsData(object): - def __init__(self): - self.names = () - self.positions = () - - def add_component(self, name, pos): - self.names += (name,) - self.positions += (pos,) - - -def get_composites_data(ufo, ps_names): - """ - Iterate thru each glyph of a UFO and collect the names and positions of - all components that make up a composite glyph. The process will only - collect data for composites that are strictly made with components (i.e. - no mixed contours-components composites), and whose components only have - x and y transformations (thus composites with scaled, rotated, or flipped - componentes will NOT be considered). - - Returns a dictionary whose keys are composite names and whose values are - ComponentsData objects. - - NOTE: All glyph names in the returned dictionary are production names. - """ - composites_data = {} - for glyph in ufo: - if glyph.components and not len(glyph): - components = ComponentsData() - all_comps_are_basic = True - for comp in glyph.components: - if comp.transformation[:4] != (1, 0, 0, 1): - all_comps_are_basic = False - break - comp_name = ps_names.get(comp.baseGlyph, comp.baseGlyph) - components.add_component(comp_name, comp.transformation[4:]) - if all_comps_are_basic: - glyf_name = ps_names.get(glyph.name, glyph.name) - composites_data[glyf_name] = components - return composites_data - - -def assemble_components(comps_data): - """ - Assemble and return a list of GlyphComponent objects. - """ - components = [] - for i, cname in enumerate(comps_data.names): - component = getTableModule('glyf').GlyphComponent() - component.glyphName = cname - component.x, component.y = comps_data.positions[i] - component.flags = 0x204 if i == 0 else 0x4 - components.append(component) - return components - - -def componentize_ttf(font_path, composites_data, output_path): - """ - Load a TrueType font and iterate thru a dictionary of composites data. - Remakes some glyphs in the glyf table from being made of countours to - being made of components. - - Saves the modified font in a new location if an output path was provided, - otherwise overwrites the original one. - - Returns a count of the glyphs that got componentized. - """ - font = TTFont(font_path) - glyf_table = font['glyf'] - comp_count = 0 - - for gname in composites_data: - if gname not in glyf_table: - continue - if not all( - [cname in glyf_table for cname in composites_data[gname].names]): - continue - - components = assemble_components(composites_data[gname]) - - glyph = glyf_table[gname] - glyph.__dict__.clear() - setattr(glyph, "components", components) - glyph.numberOfContours = -1 - comp_count += 1 +def get_font_format(font_file_path): + with open(font_file_path, "rb") as f: + head = f.read(4).decode() + if head in ("\0\1\0\0", "true"): + return "TTF" + return None - if output_path: - font.save(os.path.realpath(output_path)) - else: - font.save(font_path) - return comp_count +def validate_font_path(path): + path = os.path.realpath(path) + if not (os.path.isfile(path) and get_font_format(path) == 'TTF'): + print("ERROR: {} is not a valid TrueType font file path.".format(path), + file=sys.stderr) + return None + return path def get_options(args): @@ -306,20 +332,13 @@ def main(args=None): file=sys.stderr) return 1 - # Get the design->production glyph names mapping, and the UFO + # Get the design->production glyph names mapping, and the UFO object ufo, ps_names = get_glyph_names_mapping(ufo_path) if not ufo: return 1 - # Get the composites' info from processing the UFO - composites_data = get_composites_data(ufo, ps_names) - - comp_count = componentize_ttf(opts.font_path, composites_data, - opts.output_path) - - plural = "s were" if comp_count != 1 else " was" - print("Done! {} glyph{} componentized.".format(comp_count, plural), - file=sys.stdout) + ttcomp = TTComponentizer(ufo, ps_names, opts) + ttcomp.componentize() if __name__ == "__main__": diff --git a/python/afdko/ttxn.py b/python/afdko/ttxn.py old mode 100755 new mode 100644 index f273a85ea..0327e17a9 --- a/python/afdko/ttxn.py +++ b/python/afdko/ttxn.py @@ -1,5 +1,3 @@ -#! /usr/bin/env python - # Copyright 2014 Adobe. All Rights Reserved. """ diff --git a/python/afdko/ufotools.py b/python/afdko/ufotools.py index a755e3906..f1fb0de1e 100644 --- a/python/afdko/ufotools.py +++ b/python/afdko/ufotools.py @@ -1,7 +1,8 @@ # Copyright 2017 Adobe. All rights reserved. -from __future__ import print_function, absolute_import +from __future__ import print_function, absolute_import, unicode_literals +import ast import hashlib import os import plistlib @@ -12,12 +13,12 @@ except ImportError: import xml.etree.ElementTree as ET -from fontTools.misc.py23 import open, tobytes, tounicode +from fontTools.misc.py23 import open, tobytes, tounicode, tostr, round from afdko import convertfonttocid, fdkutils __doc__ = """ -ufotools.py v1.32.0 Nov 1 2018 +ufotools.py v1.32.4 Dec 13 2018 This module supports using the Adobe FDK tools which operate on 'bez' files with UFO fonts. It provides low level utilities to manipulate UFO @@ -329,14 +330,14 @@ def debugMsg(*args): kDefaultGlyphsLayerName = "public.default" kDefaultGlyphsLayer = "glyphs" kProcessedGlyphsLayerName = "com.adobe.type.processedglyphs" -kProcessedGlyphsLayer = "glyphs." + kProcessedGlyphsLayerName +kProcessedGlyphsLayer = "glyphs.%s" % kProcessedGlyphsLayerName kFontInfoName = "fontinfo.plist" kContentsName = "contents.plist" kLibName = "lib.plist" kPublicGlyphOrderKey = "public.glyphOrder" kAdobeDomainPrefix = "com.adobe.type" -kAdobHashMapName = "%s.processedHashMap" % (kAdobeDomainPrefix) +kAdobHashMapName = "%s.processedHashMap" % kAdobeDomainPrefix kAdobHashMapVersionName = "hashMapVersion" kAdobHashMapVersion = (1, 0) # If major version differs, do not use. kAutohintName = "autohint" @@ -379,7 +380,7 @@ class BezParseError(Exception): class UFOFontData(object): def __init__(self, parentPath, useHashMap, programName): - self.parentPath = parentPath + self.parentPath = tounicode(parentPath, encoding='utf-8') self.glyphMap = {} self.processedLayerGlyphMap = {} self.newGlyphMap = {} @@ -395,11 +396,12 @@ def __init__(self, parentPath, useHashMap, programName): # hash matches hash of current glyph data. self.hashMap = {} self.fontDict = None - self.programName = programName + self.programName = tostr(programName) self.curSrcDir = None self.hashMapChanged = 0 - self.glyphDefaultDir = os.path.join(parentPath, "glyphs") - self.glyphLayerDir = os.path.join(parentPath, kProcessedGlyphsLayer) + self.glyphDefaultDir = os.path.join(self.parentPath, "glyphs") + self.glyphLayerDir = os.path.join(self.parentPath, + kProcessedGlyphsLayer) self.glyphWriteDir = self.glyphLayerDir self.historyList = [] self.requiredHistory = [] # See documentation above. @@ -509,7 +511,7 @@ def readHashMap(self): if os.path.exists(hashPath): with open(hashPath, "r", encoding='utf-8') as fp: data = fp.read() - newMap = eval(data) + newMap = ast.literal_eval(data) else: newMap = {kAdobHashMapVersionName: kAdobHashMapVersion} @@ -599,6 +601,9 @@ def getGlyphProcessedPath(self, glyphName): return glyphPath def updateHashEntry(self, glyphName, changed): + """ + THIS METHOD DOES NOT UPDATE THE GLYPH HASHES!! + """ # srcHarsh has already been set: we are fixing the history list. if not self.useHashMap: return @@ -614,7 +619,7 @@ def updateHashEntry(self, glyphName, changed): # and we have just created a new glyph in the processed layer, # then reset the history. if (not self.useProcessedLayer) and changed: - self.hashMap[glyphName] = [srcHash, [self.programName]] + self.hashMap[glyphName] = [tostr(srcHash), [self.programName]] return # If the program is not in the history list, add it. elif self.programName not in historyList: @@ -654,7 +659,8 @@ def checkSkipGlyph(self, glyphName, newSrcHash, doAll): # case for Checkoutlines if not self.useProcessedLayer: self.hashMapChanged = 1 - self.hashMap[glyphName] = [newSrcHash, [self.programName]] + self.hashMap[glyphName] = [tostr(newSrcHash), + [self.programName]] glyphPath = self.getGlyphProcessedPath(glyphName) if glyphPath and os.path.exists(glyphPath): os.remove(glyphPath) @@ -682,7 +688,7 @@ def checkSkipGlyph(self, glyphName, newSrcHash, doAll): # If the source hash has changed, we need to # delete the processed layer glyph. self.hashMapChanged = 1 - self.hashMap[glyphName] = [newSrcHash, [self.programName]] + self.hashMap[glyphName] = [tostr(newSrcHash), [self.programName]] glyphPath = self.getGlyphProcessedPath(glyphName) if glyphPath and os.path.exists(glyphPath): os.remove(glyphPath) @@ -698,7 +704,7 @@ def getGlyphXML(self, glyphDir, glyphFileName): try: widthXML = glifXML.find("advance") if widthXML is not None: - width = int(eval(widthXML.get("width"))) + width = round(ast.literal_eval(widthXML.get("width")), 9) else: width = 1000 except UFOParseError as e: @@ -1026,7 +1032,7 @@ def buildGlyphHashValue(self, width, outlineXML, glyphName, glyphData must be the official XML from a GLIF. We skip contours with only one point. """ - dataList = ["w%s" % (str(width))] + dataList = ["w%s" % width] if level > 10: raise UFOParseError( "In parsing component, exceeded 10 levels of reference. " @@ -1098,11 +1104,11 @@ def buildGlyphHashValue(self, width, outlineXML, glyphName, for transformTag in ["xScale", "xyScale", "yxScale", "yScale", "xOffset", "yOffset"]: try: - value = childContour.attrib[transformTag] - rval = eval(value) - if int(rval) == rval: - value = str(int(rval)) - dataList.append(value) + value = round(ast.literal_eval( + childContour.attrib[transformTag]), 9) + if int(value) == value: + value = int(value) + dataList.append(str(value)) except KeyError: pass componentXML = etRoot.parse(componentPath) @@ -1114,10 +1120,10 @@ def buildGlyphHashValue(self, width, outlineXML, glyphName, dataList.extend(componentDataList) data = "".join(dataList) if len(data) < 128: - hash = data + hash_ = data else: - hash = hashlib.sha512(data.encode("ascii")).hexdigest() - return hash, dataList + hash_ = hashlib.sha512(data.encode("ascii")).hexdigest() + return hash_, dataList def getComponentOutline(self, componentItem): try: @@ -1165,7 +1171,6 @@ def close(self): if self.hashMapChanged: self.writeHashMap() self.hashMapChanged = 0 - return def clearHashMap(self): self.hashMap = {kAdobHashMapVersionName: kAdobHashMapVersion} @@ -2252,73 +2257,71 @@ def convertBezToGLIF(ufoFontData, glyphName, bezString, hintsOnly=False): return glifXML +def regenerate_glyph_hashes(ufo_font_data): + """ + The handling of the glyph hashes is super convoluted. + This method fixes https://github.com/adobe-type-tools/afdko/issues/349 + """ + for gname, gfilename in ufo_font_data.getGlyphMap().items(): + gwidth, _, outline_xml = ufo_font_data.getGlyphXML( + ufo_font_data.glyphDefaultDir, gfilename) + hash_entry = ufo_font_data.hashMap.get(gname, None) + if not hash_entry: + continue + ghash, _ = ufo_font_data.buildGlyphHashValue( + gwidth, outline_xml, gname, True) + hash_entry[0] = tostr(ghash) + + def checkHashMaps(fontPath, doSync): """ - This function checks that all the glyphs in the processed glyph - layer have a src glyph hash which matches the hash of the - corresponding default layer glyph. If not, it returns an error. + Checks if the hashes of the glyphs in the default layer match the hash + values stored in the UFO's 'data/com.adobe.type.processedHashMap' file. + + Returns a tuple of a boolean and a list. The boolean is True if all glyph + hashes matched. The list contains strings that report the glyph names + whose hash did not match. If doSync is True, it will delete any glyph in the processed glyph layer directory which does not have a matching glyph in the default - layer, or whose src glyph hash does not match. It will then update + layer, or whose source glyph hash does not match. It will then update the contents.plist file for the processed glyph layer, and delete the program specific hash maps. """ msgList = [] allMatch = True - useHashMap = True - programName = "CheckOutlines" - ufoFontData = UFOFontData(fontPath, useHashMap, programName) - gm = ufoFontData.getGlyphMap() - gNameList = gm.keys() + ufoFontData = UFOFontData(fontPath, True, '') ufoFontData.readHashMap() + # Don't need to check the glyph hashes if there aren't any. - if len(ufoFontData.hashMap) > 0: - for glyphName in gNameList: - glyphFileName = gm[glyphName] - glyphPath = os.path.join( - ufoFontData.glyphDefaultDir, glyphFileName) - etRoot = ET.ElementTree() - glifXML = etRoot.parse(glyphPath) - outlineXML = glifXML.find("outline") - failedMatch = 0 - if outlineXML is not None: - hashMap = ufoFontData.hashMap - try: - widthXML = glifXML.find("advance") - if widthXML is not None: - width = int(eval(widthXML.get("width"))) - else: - width = 1000 - oldHash, historyList = hashMap[glyphName] - useDefaultGlyphDir = True - newHash, dataList = ufoFontData.buildGlyphHashValue( - width, outlineXML, glyphName, useDefaultGlyphDir) - # print("\toldHash", oldHash) - if oldHash != newHash: - failedMatch = 1 - except KeyError: - pass - else: - continue + if not ufoFontData.hashMap: + return allMatch, msgList + + for glyphName, glyphFileName in ufoFontData.getGlyphMap().items(): + hash_entry = ufoFontData.hashMap.get(glyphName, None) + if not hash_entry: + continue + else: + oldHash = hash_entry[0] + + width, _, outlineXML = ufoFontData.getGlyphXML( + ufoFontData.glyphDefaultDir, glyphFileName) + if not outlineXML: + continue + + newHash, _ = ufoFontData.buildGlyphHashValue( + width, outlineXML, glyphName, True) + + if oldHash != newHash: + allMatch = False + if len(msgList) < 10: + msgList.append("Glyph %s seems to have been modified since " + "last time checkoutlinesufo processed this " + "font." % glyphName) + elif len(msgList) == 10: + msgList.append("(additional messages omitted)") - if failedMatch: - allMatch = False - if len(msgList) < 10: - msgList.append( - "src glyph %s is newer than processed layer. " - "programName: %s" % (glyphName, programName)) - # print("glyph differs", glyphName) - # print("\told hash map:", oldHash) - # print("\tnew hash map:", newHash) - - elif len(msgList) == 10: - msgList.append( - "More glyphs differ between source and processed " - "layer.") - else: - continue if doSync: fileList = os.listdir(ufoFontData.glyphWriteDir) fileList = filter(lambda fileName: fileName.endswith(".glif"), @@ -2341,6 +2344,7 @@ def checkHashMaps(fontPath, doSync): print("Removed outdated file: %s" % glyphPath) except OSError: print("Cannot delete outdated file: %s" % glyphPath) + return allMatch, msgList @@ -2428,7 +2432,7 @@ def cleanupContentsList(glyphDirPath, doWarning=True): # now update and write the processed processedGlyphDirPath # contents.plist file. - itemList = contentsDict.items() + itemList = list(contentsDict.items()) for glyphName, fileName in itemList: if fileName not in fileDict: del contentsDict[glyphName] @@ -2483,7 +2487,8 @@ def validateLayers(ufoFontPath, doWarning=True): def makeUFOFMNDB(srcFontPath): - fontInfoPath = os.path.join(srcFontPath, kFontInfoName) # default + fontInfoPath = os.path.join(tounicode(srcFontPath, encoding='utf-8'), + kFontInfoName) # default fiMap, fiList = parsePList(fontInfoPath) psName = "NoFamilyName-Regular" familyName = "NoFamilyName" diff --git a/requirements.txt b/requirements.txt index d03cb5790..d3c1cdb1f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,9 @@ -booleanOperations==0.8.0 -cu2qu==1.6.4 -defcon==0.5.3 -fontMath==0.4.7 -fontPens==0.1.0 -fontTools==3.31.0 -mutatorMath==2.1.1 -psautohint==1.8.1 -ufoLib[lxml]==2.3.2 -ufonormalizer==0.3.5 -ufoProcessor==1.0.1 +booleanOperations==0.8.2 +cu2qu[cli]==1.6.5 +defcon[lxml,pens]==0.6.0 +fontMath==0.4.9 +fontTools[ufo,unicode,lxml]==3.35.1 +mutatorMath==2.1.2 +psautohint==1.9.1 +ufonormalizer==0.3.6 +ufoProcessor==1.0.3 diff --git a/tests/autohint_test.py b/tests/autohint_test.py old mode 100755 new mode 100644 index fd271c2b7..cc26de059 --- a/tests/autohint_test.py +++ b/tests/autohint_test.py @@ -100,4 +100,5 @@ def test_beztools_hhint_over_limit_bug629(): expected_path = get_expected_path(test_filename) runner(CMD + ['-o', 'nb', 'o', '_{}'.format(actual_path), '-f', test_filename]) - assert differ([expected_path, actual_path]) + assert differ([expected_path, actual_path, + '-s', r'%%Copyright: Copyright']) diff --git a/tests/buildcff2vf_test.py b/tests/buildcff2vf_test.py old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c1177.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c1177.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c13393.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c13393.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c13498.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c13498.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c13887.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c13887.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c14066.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c14066.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c14872.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c14872.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c14879.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c14879.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c15147.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c15147.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c15202.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c15202.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c15324.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c15324.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c16877.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c16877.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c16976.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c16976.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c17290.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c17290.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c17700.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c17700.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c17751.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c17751.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c17852.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c17852.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c17986.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c17986.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c18165.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c18165.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c18480.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c18480.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c18868.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c18868.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c19523.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c19523.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c19753.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c19753.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c1984.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c1984.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c2057.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c2057.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c21305.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c21305.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c21932.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c21932.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22029.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22029.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22050.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22050.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22369.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22369.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22370.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22370.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22379.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22379.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22395.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22395.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22450.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c22450.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c2267.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c2267.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c2645.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c2645.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c2663.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c2663.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c3452.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c3452.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c3555.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c3555.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c3758.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c3758.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c4866.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c4866.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c5640.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c5640.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6260.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6260.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6378.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6378.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6385.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6385.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6440.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6440.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6447.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6447.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6449.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6449.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6550.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6550.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6821.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c6821.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c7225.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c7225.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c7253.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c7253.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c7701.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c7701.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c7716.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c7716.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c7734.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c7734.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c8611.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/c8611.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_0/MasterSet_Kanji_75-w0.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/glyphs/c18868.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/glyphs/c18868.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_1/MasterSet_Kanji_75-w239.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c1177.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c1177.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c14872.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c14872.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c16976.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c16976.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c19523.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c19523.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c19753.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c19753.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c21305.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c21305.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c5640.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c5640.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c6260.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c6260.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c7253.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/c7253.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_10/MasterSet_Kanji_75-w670.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/glyphs/c3555.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/glyphs/c3555.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_11/MasterSet_Kanji_75-w699.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/glyphs/c3555.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/glyphs/c3555.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_12/MasterSet_Kanji_75-w700.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/glyphs/c13393.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/glyphs/c13393.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_13/MasterSet_Kanji_75-w799.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/glyphs/c13393.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/glyphs/c13393.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_14/MasterSet_Kanji_75-w800.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c13498.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c13498.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c14066.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c14066.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c16877.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c16877.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c22369.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c22369.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c22370.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c22370.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c22379.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c22379.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c3758.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c3758.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6378.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6378.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6385.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6385.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6440.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6440.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6447.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6447.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6449.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6449.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6550.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c6550.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c7701.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c7701.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c8611.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/c8611.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_15/MasterSet_Kanji_75-w889.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c13498.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c13498.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c14066.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c14066.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c16877.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c16877.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c22369.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c22369.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c22370.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c22370.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c22379.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c22379.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c3758.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c3758.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6378.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6378.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6385.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6385.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6440.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6440.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6447.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6447.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6449.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6449.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6550.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c6550.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c7701.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c7701.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c8611.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/c8611.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_16/MasterSet_Kanji_75-w890.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c1177.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c1177.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c13393.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c13393.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c13498.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c13498.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c13887.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c13887.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c14066.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c14066.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c14872.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c14872.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c14879.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c14879.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c15147.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c15147.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c15202.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c15202.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c15324.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c15324.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c16877.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c16877.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c16976.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c16976.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c17290.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c17290.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c17700.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c17700.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c17751.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c17751.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c17852.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c17852.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c17986.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c17986.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c18165.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c18165.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c18480.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c18480.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c18868.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c18868.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c19523.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c19523.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c19753.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c19753.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c1984.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c1984.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c2057.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c2057.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c21305.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c21305.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c21932.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c21932.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22029.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22029.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22050.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22050.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22369.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22369.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22370.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22370.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22379.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22379.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22395.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22395.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22450.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c22450.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c2267.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c2267.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c2645.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c2645.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c2663.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c2663.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c3452.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c3452.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c3555.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c3555.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c3758.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c3758.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c4866.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c4866.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c5640.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c5640.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6260.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6260.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6378.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6378.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6385.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6385.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6440.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6440.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6447.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6447.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6449.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6449.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6550.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6550.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6821.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c6821.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c7225.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c7225.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c7253.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c7253.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c7701.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c7701.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c7716.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c7716.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c7734.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c7734.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c8611.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/c8611.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_17/MasterSet_Kanji_75-w1000.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/glyphs/c18868.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/glyphs/c18868.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_2/MasterSet_Kanji_75-w240.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/glyphs/c18480.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/glyphs/c18480.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/glyphs/c6821.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/glyphs/c6821.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_3/MasterSet_Kanji_75-w439.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/glyphs/c18480.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/glyphs/c18480.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/glyphs/c6821.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/glyphs/c6821.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_4/MasterSet_Kanji_75-w440.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/glyphs/c15324.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/glyphs/c15324.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/glyphs/c17986.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/glyphs/c17986.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/glyphs/c22395.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/glyphs/c22395.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_5/MasterSet_Kanji_75-w499.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/glyphs/c15324.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/glyphs/c15324.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/glyphs/c17986.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/glyphs/c17986.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/glyphs/c22395.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/glyphs/c22395.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_6/MasterSet_Kanji_75-w500.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c13887.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c13887.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c14879.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c14879.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c15147.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c15147.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c15202.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c15202.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c17290.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c17290.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c17700.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c17700.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c17751.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c17751.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c17852.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c17852.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c18165.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c18165.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c1984.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c1984.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c2057.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c2057.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c21932.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c21932.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c22029.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c22029.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c22050.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c22050.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c22450.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c22450.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c2267.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c2267.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c2645.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c2645.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c2663.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c2663.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c3452.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c3452.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c4866.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c4866.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c7225.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c7225.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c7716.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c7716.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c7734.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/c7734.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_7/MasterSet_Kanji_75-w599.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c13887.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c13887.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c14879.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c14879.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c15147.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c15147.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c15202.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c15202.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c17290.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c17290.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c17700.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c17700.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c17751.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c17751.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c17852.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c17852.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c18165.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c18165.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c1984.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c1984.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c2057.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c2057.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c21932.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c21932.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c22029.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c22029.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c22050.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c22050.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c22450.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c22450.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c2267.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c2267.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c2645.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c2645.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c2663.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c2663.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c3452.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c3452.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c4866.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c4866.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c7225.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c7225.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c7716.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c7716.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c7734.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/c7734.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_8/MasterSet_Kanji_75-w600.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c1177.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c1177.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c14872.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c14872.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c16976.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c16976.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c19523.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c19523.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c19753.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c19753.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c21305.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c21305.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c5640.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c5640.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c6260.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c6260.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c7253.glif b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/c7253.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Condensed/Master_9/MasterSet_Kanji_75-w669.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c1177.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c1177.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c13393.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c13393.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c13498.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c13498.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c13887.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c13887.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c14066.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c14066.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c14872.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c14872.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c14879.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c14879.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c15147.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c15147.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c15202.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c15202.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c15324.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c15324.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c16877.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c16877.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c16976.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c16976.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c17290.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c17290.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c17700.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c17700.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c17751.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c17751.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c17852.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c17852.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c17986.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c17986.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c18165.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c18165.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c18480.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c18480.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c18868.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c18868.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c19523.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c19523.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c19753.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c19753.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c1984.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c1984.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c2057.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c2057.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c21305.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c21305.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c21932.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c21932.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22029.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22029.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22050.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22050.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22369.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22369.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22370.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22370.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22379.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22379.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22395.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22395.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22450.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c22450.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c2267.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c2267.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c2645.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c2645.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c2663.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c2663.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c3452.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c3452.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c3555.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c3555.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c3758.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c3758.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c4866.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c4866.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c5640.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c5640.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6260.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6260.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6378.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6378.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6385.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6385.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6440.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6440.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6447.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6447.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6449.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6449.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6550.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6550.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6821.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c6821.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c7225.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c7225.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c7253.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c7253.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c7701.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c7701.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c7716.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c7716.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c7734.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c7734.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c8611.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/c8611.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_0/MasterSet_Kanji-w0.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/glyphs/c18868.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/glyphs/c18868.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_1/MasterSet_Kanji-w239.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c1177.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c1177.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c14872.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c14872.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c16976.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c16976.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c19523.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c19523.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c19753.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c19753.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c21305.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c21305.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c5640.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c5640.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c6260.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c6260.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c7253.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/c7253.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_10/MasterSet_Kanji-w670.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/glyphs/c3555.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/glyphs/c3555.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_11/MasterSet_Kanji-w699.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/glyphs/c3555.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/glyphs/c3555.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_12/MasterSet_Kanji-w700.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/glyphs/c13393.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/glyphs/c13393.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_13/MasterSet_Kanji-w799.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/glyphs/c13393.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/glyphs/c13393.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_14/MasterSet_Kanji-w800.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c13498.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c13498.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c14066.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c14066.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c16877.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c16877.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c22369.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c22369.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c22370.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c22370.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c22379.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c22379.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c3758.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c3758.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6378.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6378.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6385.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6385.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6440.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6440.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6447.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6447.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6449.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6449.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6550.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c6550.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c7701.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c7701.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c8611.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/c8611.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_15/MasterSet_Kanji-w889.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c13498.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c13498.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c14066.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c14066.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c16877.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c16877.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c22369.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c22369.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c22370.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c22370.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c22379.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c22379.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c3758.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c3758.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6378.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6378.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6385.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6385.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6440.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6440.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6447.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6447.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6449.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6449.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6550.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c6550.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c7701.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c7701.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c8611.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/c8611.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_16/MasterSet_Kanji-w890.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c1177.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c1177.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c13393.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c13393.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c13498.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c13498.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c13887.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c13887.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c14066.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c14066.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c14872.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c14872.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c14879.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c14879.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c15147.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c15147.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c15202.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c15202.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c15324.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c15324.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c16877.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c16877.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c16976.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c16976.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c17290.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c17290.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c17700.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c17700.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c17751.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c17751.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c17852.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c17852.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c17986.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c17986.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c18165.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c18165.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c18480.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c18480.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c18868.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c18868.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c19523.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c19523.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c19753.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c19753.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c1984.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c1984.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c2057.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c2057.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c21305.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c21305.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c21932.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c21932.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22029.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22029.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22050.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22050.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22369.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22369.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22370.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22370.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22379.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22379.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22395.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22395.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22450.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c22450.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c2267.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c2267.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c2645.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c2645.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c2663.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c2663.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c3452.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c3452.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c3555.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c3555.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c3758.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c3758.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c4866.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c4866.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c5640.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c5640.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6260.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6260.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6378.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6378.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6385.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6385.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6440.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6440.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6447.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6447.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6449.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6449.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6550.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6550.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6821.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c6821.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c7225.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c7225.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c7253.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c7253.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c7701.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c7701.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c7716.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c7716.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c7734.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c7734.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c8611.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/c8611.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_17/MasterSet_Kanji-w1000.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/glyphs/c18868.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/glyphs/c18868.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_2/MasterSet_Kanji-w240.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/glyphs/c18480.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/glyphs/c18480.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/glyphs/c6821.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/glyphs/c6821.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_3/MasterSet_Kanji-w439.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/glyphs/c18480.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/glyphs/c18480.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/glyphs/c6821.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/glyphs/c6821.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_4/MasterSet_Kanji-w440.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/glyphs/c15324.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/glyphs/c15324.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/glyphs/c17986.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/glyphs/c17986.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/glyphs/c22395.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/glyphs/c22395.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_5/MasterSet_Kanji-w499.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/glyphs/c15324.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/glyphs/c15324.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/glyphs/c17986.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/glyphs/c17986.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/glyphs/c22395.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/glyphs/c22395.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_6/MasterSet_Kanji-w500.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c13887.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c13887.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c14879.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c14879.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c15147.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c15147.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c15202.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c15202.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c17290.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c17290.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c17700.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c17700.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c17751.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c17751.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c17852.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c17852.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c18165.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c18165.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c1984.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c1984.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c2057.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c2057.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c21932.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c21932.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c22029.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c22029.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c22050.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c22050.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c22450.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c22450.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c2267.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c2267.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c2645.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c2645.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c2663.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c2663.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c3452.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c3452.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c4866.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c4866.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c7225.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c7225.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c7716.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c7716.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c7734.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/c7734.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_7/MasterSet_Kanji-w599.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c13887.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c13887.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c14879.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c14879.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c15147.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c15147.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c15202.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c15202.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c17290.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c17290.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c17700.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c17700.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c17751.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c17751.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c17852.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c17852.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c18165.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c18165.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c1984.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c1984.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c2057.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c2057.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c21932.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c21932.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c22029.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c22029.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c22050.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c22050.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c22450.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c22450.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c2267.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c2267.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c2645.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c2645.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c2663.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c2663.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c3452.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c3452.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c4866.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c4866.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c7225.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c7225.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c7716.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c7716.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c7734.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/c7734.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_8/MasterSet_Kanji-w600.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/fontinfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/fontinfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/_notdef.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/_notdef.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c1177.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c1177.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c14872.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c14872.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c16976.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c16976.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c19523.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c19523.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c19753.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c19753.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c21305.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c21305.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c5640.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c5640.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c6260.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c6260.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c7253.glif b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/c7253.glif old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/contents.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/glyphs/contents.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/lib.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/lib.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/metainfo.plist b/tests/buildmasterotfs_data/input/CJKVar/Normal/Master_9/MasterSet_Kanji-w669.00.ufo/metainfo.plist old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_data/input/cff2_vf/buildVF.sh b/tests/buildmasterotfs_data/input/cff2_vf/buildVF.sh old mode 100755 new mode 100644 diff --git a/tests/buildmasterotfs_test.py b/tests/buildmasterotfs_test.py old mode 100755 new mode 100644 diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/data/com.adobe.type.processedHashMap b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/data/com.adobe.type.processedHashMap index 116559ca3..de17ba5ab 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/data/com.adobe.type.processedHashMap +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/data/com.adobe.type.processedHashMap @@ -1,49 +1,49 @@ { 'A': ['w663l50l2350l23540l13653l193219l427219l48352l38340l3830l6530l65340l57649l363675l303675l8953l540l208265l310565l411265', ['checkOutlines']], -'B': ['ebd8defeb9a3c8c4d2a36d0ef11ddf4d748a269da0a12467389442b74109ccecdea74be34404f353ed2cb621823db003db584c2b145559b734856ac863c00662', ['checkOutlines']], +'B': ['206d63b1e295c48d65475b56780c7a16042fd2f6032636604ab21de7a6ff60b36326a3e6aa2640ab3a98f64ac8430a820350ce9fe049a73f8debbb19e4a569d2', ['checkOutlines']], 'C': ['5a6b1e8f2cdd77107378ef6258c7ef19c1813c3da70c8aa59b9ff803d96a599d55d72093738bb028a326d817f04c314369540181c069bddd79689cf0480880ad', ['checkOutlines']], -'Cacute': ['0e87147cae7a74343e856bd9282ceb4da83f787cd7f3661f5468c9f43faa5e9571d09a1351bd9ceb821ac80af14a09fed17e3a5fe9114eaf778666def08625b0', ['checkOutlines']], -'Ccaron': ['dbb3ff29c0a411640e22742740b1eb3c4ed9cee5a327bf1ea53f2fe0ace1b25bc787356abfefba4d73dfb214b309b8aeef02b072641b91eaf42db2938854d2bf', ['checkOutlines']], -'Ccedilla': ['b3b57948db74a3f763848aa43ad89c785b85fb08cfc698cc00971c49424f38a09c3c3768b3c4ebbf22f5e820199c576aedd08741c2670de5cebfc2414ceb1280', ['checkOutlines']], -'Cdotaccent': ['680c9b34589d202b236ff35f99631508e4de918e3bba8e69cb709da47dd1f95b6c3c648f7fce54c7008e0ab2b798f8c4bb3c77610393161c255c3f4ce8051637', ['checkOutlines']], -'H': ['505790245ae9b15b0f97947670ef6a7e1286abb7663eed480090aee6c2b6153e0ba14d5651db677098c5881ce7bfe1bdbf6a8737f85b3ff1591368be4f41ea3f', ['checkOutlines']], -'Hbar': ['42509cbe358b9fafff14248313fb10d78452228589f7e8e79619698980fa16a6537733572820e627ae198d9b2630cf9959c8048cbf37c812311503898cb182d9', ['checkOutlines']], +'Cacute': ['f0063ec6ceb13d061f0513643279092dff8c8f46134b28d2bc1c16fceeacff1fdaea063031d190d648db2b135b8053b67019c64be3c782bf84db0ad3c1c6f31f', ['checkOutlines']], +'Ccaron': ['0c1fd0523d3fe63ba88433189a14094b8ae3e917d8e2d1fb0d4fafd22f3574b52c39a875d2cfa8b98788449acfcbaa5e21892ecbb77f564443d984b1e82e05f1', ['checkOutlines']], +'Ccedilla': ['095bd5069749bad980611268cf303c141f78a2057059c6ea36dfcf684964b1c54310f6c10eb767b947f0e0b1bb4c6e8891b88def5e2c74b502cc54c16543a698', ['checkOutlines']], +'Cdotaccent': ['04fff4b9ee2d81743a630d601e76d7b16662a8f4ae7bac99fa19f934c0531ad35aa0b851ee449e3f38f467626dcf1b7fa0a24d22ba6c6690cbd3bc6e2f0289bd', ['checkOutlines']], +'H': ['ac9b1ab64401e8a6d0192a1ca9abb97ba05693c07c0d0892b691fe8340bbe8582dd833c1a4f45594b1d80e7570bea6d20011d7b5337a152a7a4430210d611495', ['checkOutlines']], +'Hbar': ['0b12b3c82e366d35f069fdfb4741e3aa8f88315f35ada0dbf30a5c7c2b357ec3b098c88800d3e0a16249b11a9114f442285effe2e9342b70778faab236493782', ['checkOutlines']], 'I': ['01a8b0cf6b3812265091a1b9d8f28136c749bc7f1991589c3328c2cc86a5ccc58d2a4d2110c768dbad50e0291144f338d700bb2c3bba600a934af2a11c31414b', ['checkOutlines']], -'Icircumflex': ['37be5253cd417b5ba17c637ddbfeee49cd47ae48ac024ee1b5b461d5063a924995095cf13c0d9a60440c9bb1c603d94c5c86c8771137170ff126ddecd274f5e1', ['checkOutlines']], -'L': ['d9ad8d12811beaa24feabc61e8247780a908a03c6cb2a45ef6d8949883c5588723c76dd37f051269ac131cf202a74b9c39de64921bf9bbac1b65b952b8d52c94', ['checkOutlines']], -'Lcommaaccent': ['75ee83c72defef80c8e9c1f6d1eb662130f295b73e126a9e50b8bb4191b7c1fd97794c3a2975672c1b8799e56dc8258a552d2c7b3fc972e8cd421d1bcb377fc4', ['checkOutlines']], -'Ldot': ['a312337d11380ad6a146657119e3cb7273fcada1b28c6e7d4176297cce4fe72101b0bf1b38066c178d286e38fdc27b8574c191e9ac748fb6180d0af966683231', ['checkOutlines']], -'Lslash': ['eae9e4620ea4d5e07e6e1135ed79f4f383a93adffa9f77140370d940cb2c68d0bf654c993c835377267635be179ff075fa9f46e6e8d261edb011ab015a268404', ['checkOutlines']], -'Ncommaaccent': ['0b224491a80f95f4626663c829a7dc7c808cc743beb5a205be04d592c26f5b47777522e4e725e2f5e0607ec32998ce3f2c68d68f9aab289a3b2ab685014c59d1', ['checkOutlines']], -'Ngrave': ['2dd3ef495b0a49c140238113e542e6c0850b1fa8c79d127b3d33af5db17b386b8ae2e00dd149969e0e8afbb56aa64452be5d2f2361341cc94f8d305f3c4aaef2', ['checkOutlines']], +'Icircumflex': ['f99c17fc35f75ed3c1ecc26a61e6c564686c1d32e38289f449a58a6f3b5e3e084179f54824388d0e35cb31aed3377f00147a46fe444b7e8a762fc85d2aa8ce23', ['checkOutlines']], +'L': ['93fd9bc9541b093e5a9c665eaec168f054b05077287c2cf2478e9297529f25536750ee6fe242d816c08e43d11034d660763ebcb31c701c0d369e06b76dca3ed0', ['checkOutlines']], +'Lcommaaccent': ['a45e982f95b258870ff380f8b893688d9db7af753744354fe94ebf819526822ddb7a25de493debdb0297b1f36bdc648737c6700882288469f5d2bde17b706051', ['checkOutlines']], +'Ldot': ['483c8bf1358ba6b15182537748430ea6d74bedd319f8de8f20e63516209c813d006b73366fc9676568d8340968b04ab4f06fdf82d46f9eee14184224e3c4117e', ['checkOutlines']], +'Lslash': ['d9aa5df982463984207143803b8d7a72209df0d4fee14fbbdeeb58058a0c327a7bd2a2ab31b295153d78eac5b03d84962a0a31a1826db3097d266d268bb5ff08', ['checkOutlines']], +'Ncommaaccent': ['05f70fedddf09757365b4ac7d2ba0480af1610112ae6814218db99097b4a03b0ebabf93eeb5d84e072dc1ef7b7d92c2ded32f2bf1671edbe44b2ee3aaa5f29f6', ['checkOutlines']], +'Ngrave': ['27bc9a9c715d95efe4dd4cf7efb13ac6e371f96a77f89a5af4967c2b4f62ff59ccef7dd03a67d97e5c48635f194d3a41a27d13b0061ab448fbb0c4bcbf51fdcc', ['checkOutlines']], 'O': ['d8f5a47af3280fb2738a3387ea2b1eaaf0f79703fc87ae35299e205d5ffa5ddf278575e5c81938a330ea36332fb31426d8d4deda822fc6f644a218df7cc32765', ['checkOutlines']], -'Oslash': ['c7b3bd5421a8273349ac07d7f55d3765e4e1bba44d7291a9e457839ec15104631287fed43956b90b79960a7375aec640206e387d9e09a185e3653148d737b6a2', ['checkOutlines']], -'Oslashmacron': ['a5fe6afaa7b9dc93ed7e7b3ba0a78cd25c13594c35f702e35418338eac7f80b411894e5b49a24a455671cc96ae05001af50f8720d5e8865fa7c8714b0fef462b', ['checkOutlines']], -'Otilde': ['bc400f396676e2dc870591a6e09d9f0cac8c4685ef89beca4d4dc1459f06c36ba4130d1e274fb82b5582820e65fd2374c2e3964528f327f10bbfe08df1c589f7', ['checkOutlines']], -'S': ['d31627620d35de34b06fcbde63e746d7f4ec48a951645256c71689c8f173e21bfaaaea016ab1c85366de5daaa885270199e6de3a18d2895d2cab7cae1a0c52e2', ['checkOutlines']], -'Sacute': ['a4aada46babe18e78055e5db5ed0c7ae9c3d6d6ad3424a87c9e9b27cff71378f52883d634e66852a249def0af27c91fe7d706c489c7ffc6d82f0951f4d25a42d', ['checkOutlines']], -'Scaron': ['e8c2e8795667e859cba860e0a88e887b4b9169d389be0fd5c7cc7dc5d02a5e4003e1aaf75f68b20c413c42840dbd8ad8901958261ea5d509693db22477f3db75', ['checkOutlines']], -'Scedilla': ['7286c7d2568743825faacda113538113bb9358a08bb03347a4b18f2c934890af2d65489bba2e1dc2666337f3074f4f5e3ac59eca12b9a81af95f2ff364eef48b', ['checkOutlines']], +'Oslash': ['b87e0eab82a0a6ec4caa9b9b9a51ce301c3e99e9d1d96088d6bd309f6f69b06c517fb55306f77fe06d09354306e3ea98ea562fd7b0cf3f4576c2b0f937597217', ['checkOutlines']], +'Oslashmacron': ['de9c482fb815db73d55d42cca9020d4534de3bdf69d0f7d71912ac13ea8689a9793752f27b6904a95cd6b55a6f8183f8fcc200a1f645628a0276d76399f73fe2', ['checkOutlines']], +'Otilde': ['b8b18fb19d46a3150ef52507dfc1c527dbfbdb6f07ed27b4062c2161eb7a2eace10047e3104d8a4bc5e96e4c25d3487d575ba2ef257f8c4ea874765712e81963', ['checkOutlines']], +'S': ['4340293d16ea0d95ccb5dc5733993176ef8960b54294819fe6303a6a15307aa19c126a6fef9befaed9e8f741e9094f389ae2767aa45a7ae9b5b7fa6a2137782e', ['checkOutlines']], +'Sacute': ['86ec08525cb91ea61138dc82d9defae50fbd25a0fa6d0574f91c48c5a77f9af7f4dfcd26368f15e78a280c5760f74d65273ee2949a654bf1c6cd32a49dab1882', ['checkOutlines']], +'Scaron': ['fdef6241a6814033c3f3f8e67a2c43edc34cead8ca90479790adbc17aaa967a0f036ab7cba5eeb584585f9047adc30d8f4a95e6bb512af9f43a3dffd6f900876', ['checkOutlines']], +'Scedilla': ['4ba24e8d2a4ce00b782ceca9e77e175c1ecc7f7955f629a3b6563969280b17e95be657e8195aaf7532c218b0706005274dcf8bedc491c3881482edf60947b6c7', ['checkOutlines']], 'acutecmb': ['w1000c-58576l-33557959449630c89667116692121707c121720121745103757c847576775750747c317170670-29623', ['checkOutlines']], 'acutecmb.cap': ['w1000c-66746l-48722-774335766c76789113810126826c126844126864109877c898777287755867c27839-4809-35778', ['checkOutlines']], 'c': ['cf9e46d84b17be742c229e262b4237ba5b71aa00fac915a3e2109b5ccfd44ca3a3a1fad8f71957364c189142ae656f6fc9c2555c3b75b23a6c64389d0f1260aa', ['checkOutlines']], -'cacute': ['8e5c5e3d35e273856c9f2d654d3c3071dd8fbb0e2c1d5b934e2a6a3a942d6eaadc92ebc421509698d735980b35f976fed1f05fa35e6747c45bb9dfd4c48c8c06', ['checkOutlines']], +'cacute': ['81cc973a7c9e213143cc219cac13a20ffc9140072e7c8ad9630f73c56390bf56e18ab370b2a2136a327f3e50fa5b31bc6faf630679667d269f4839be37e475a0', ['checkOutlines']], 'caroncmb': ['w1000l-114737l-138718l-37571l37571l138718l114737l0633', ['checkOutlines']], -'caroncmb.cap': ['w1000l-114867l-137847l-37730l37730l137847l114867l-42751l42751', ['checkOutlines']], -'ccaron': ['04ed8264bec5731948e7885926f303ca1167d42d80d3febe2988e3eae74d1bb8fd10cb24500f89cbdd7d6056b3c5bbb201e462bfe913cbda3d2514dfe660b36b', ['checkOutlines']], -'ccedilla': ['b223ab27668243870e220ac1b6ea20e4a17ff0c7cf3589e1ffe12c3276ce34ac2bf8abbd79a7b8d8ea46eca9ebb15042becbeb3de77cad00ada0bb299e89129a', ['checkOutlines']], -'cdotaccent': ['9a9124157aeefee890176e0dadea654347bb418d4e323c2156485c83cacc10eefb7949c3fa37ea4e2c1890298784643fe5a826b3ebd821721660c439850b018d', ['checkOutlines']], +'caroncmb.cap': ['w1000l-114867l-137847l-37730l37730l137847l114867l0782', ['checkOutlines']], +'ccaron': ['00f0360888d88d1253ce365c5085b891122c10f34d759b9d46357ec2014342438124a52e4647217d4da6d0e30483bee14bc40fc84b55b5095a5fb7d723ad3ecb', ['checkOutlines']], +'ccedilla': ['bff847e78561faa04a104f7eb3e707536751a1c706c222e03ac642f89de4d1f1cd694f34446414593d516f36198fdb97bc87aba87ee440e8b3c30c439c914689', ['checkOutlines']], +'cdotaccent': ['4691ba9f582e773d591780ba9d4becd28952f33f1ff44b61348d0b6a04afe3f599129431026a37b3c2937152bebcc26037fa582379041a149c05055114c13f8b', ['checkOutlines']], 'cedillacmb': ['cd50ba7c89312fbc789190975e4db86cf40641bf2de2d92ec6881bcafe013bb6898039460541aca258c82f97aed50b39594effa84f3c511c700e2405fa9fa723', ['checkOutlines']], -'cedillacmb.cap': ['8dce8a4b8371979f9329931d522a85be2ceab36a9d13cf4da2c51615f555e1fba625556427f10a1477f1db9bdbd421b07031bac48757ae92dce58df197c050a7', ['checkOutlines']], -'commabelowcmb': ['2e20b3cfdd80e087d29a962efa81468de9dcf447ac3dd62a51f81dee7b863d3aad49726aa4d94083bbe908f58c5ecf83d7014ca0afd8103668217fd4adda83cc', ['checkOutlines']], +'cedillacmb.cap': ['cd50ba7c89312fbc789190975e4db86cf40641bf2de2d92ec6881bcafe013bb6898039460541aca258c82f97aed50b39594effa84f3c511c700e2405fa9fa723', ['checkOutlines']], +'commabelowcmb': ['w1000c61-11761-10459-92c52-7138-5823-52c9-52-16-52-37-70c-37-96-37-121-17-144c9-155-13-189-42-206c-82-222l-72-250-2-22761-187', ['checkOutlines']], 'dotaccentcmb': ['w1000c05903759066616c666536669037716c0716-37716-66690c-66653-66616-37590', ['checkOutlines']], 'dotaccentcmb.cap': ['w1000c07383773866764c668016683837864c0864-37864-66838c-66801-66764-37738', ['checkOutlines']], 'gravecmb.cap': ['w1000l66746367775808c-27839-55867-72877c-89877-109877-126864c-126844-126826-113809c-76789-367676744c48722', ['checkOutlines']], 'hashMapVersion': (1, 0), 'macroncmb.cap': ['w1000l-150760l150760l150821l-150821', ['checkOutlines']], -'s': ['5a81574cd3fc65cf7935f048d2928f8651e5afbff723479035a2ac48cad3303b6fda9d99f9ca0d78d857d128fc4263ece2628a8456e5c012994a169af0fc7428', ['checkOutlines']], -'sacute': ['aa24df0d1ffcccbdd568400d92885d1a59be00dabc98aa157cade7272ff2c838f6b05fac22177ba7a9c6eb75ea51eda5267644cd009380ed93e677748428d219', ['checkOutlines']], -'scaron': ['808708d5fa43341f3343451393bf0acecc73615408c950d6610b16be7846ccff451baa94150d40dc3f5130b3f2402138d813286838ee766723464c0bc2f8a47c', ['checkOutlines']], -'scedilla': ['d438de651fe85d96fbb66c4cfed1086199af218f9831743480f3d70a9236cd60887306f95a1513f1bc081d2830d89236d289aee52bc8219bd662d4b77123f513', ['checkOutlines']], +'s': ['37d328a4d6d9c7aff10b31fd702ebb1bc2fb7a5e7f6adf4fb937ebdebf00b10fbf174418add48352cb8966deab70a20b4f3541e5c9bc88c84ad4266ede0dfdc2', ['checkOutlines']], +'sacute': ['fe10c10b28ff2975195a6199d8de3d11a23b97fde4c618fb752cbf86b56d55f5daa49074eeb6e387730cb5d34fce988ad9d5ef2c6cb1f0608aea4d54cd55157f', ['checkOutlines']], +'scaron': ['08f1f67b53785a4e4935ff19c4e368577be10f81c2d0a8fc03683fd11e49b0fae43c287cc66d06fb90afb33b3cc7df595226c58c5a1018e2851234ceb740bc36', ['checkOutlines']], +'scedilla': ['9ff62256b36c33cce06aedca69caaaba93c374e39d15c76d88a8c5618929bf8bf27e1aa403f4cc275e7a1407816da00f2a696b818f345b5ff674ee8cfe012152', ['checkOutlines']], 'tildecmb.cap': ['def50771048ddbe0d571261b83c52e2f10d42205b81be10d6d63cbfca22cc372632ace824ab7b636a8959ebfb2bb7dcae6292cce4a7b7008350cdc70c88ea1ff', ['checkOutlines']], } diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/fontinfo.plist b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/fontinfo.plist index 0724e3fd1..f781ba0ce 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/fontinfo.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/fontinfo.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/B_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/B_.glif index 55af73fa2..e127c80c8 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/B_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/B_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_acute.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_acute.glif index 7e50cd454..8946610f6 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_acute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_acute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_caron_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_caron_.glif index 6555ae385..147c34345 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_caron_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_caron_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_cedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_cedilla.glif index 9216b2303..f6bfe5c45 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_cedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/C_cedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Cdotaccent_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Cdotaccent_.glif index c443b3ef8..6641f3d86 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Cdotaccent_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Cdotaccent_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/H_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/H_.glif index 091469795..e421d8359 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/H_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/H_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/H_bar.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/H_bar.glif index e7bf59845..f11797833 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/H_bar.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/H_bar.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/I_circumflex.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/I_circumflex.glif index 4b2356f59..91c6f67bd 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/I_circumflex.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/I_circumflex.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_.glif index 7897d1699..97790b989 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_commaaccent.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_commaaccent.glif index d6a867ea3..9c5db3b5d 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_commaaccent.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_commaaccent.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_dot.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_dot.glif index f08adfb4a..3b11633b5 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_dot.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_dot.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_slash.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_slash.glif index 672fdec5f..f848009c9 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_slash.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/L_slash.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/N_commaaccent.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/N_commaaccent.glif index adab4c07c..50989dc5b 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/N_commaaccent.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/N_commaaccent.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/N_grave.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/N_grave.glif index c359fa934..b0127b358 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/N_grave.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/N_grave.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/O_slash.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/O_slash.glif index 9388598f6..611c1714f 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/O_slash.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/O_slash.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/O_slashmacron.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/O_slashmacron.glif index e68fc8143..47f1328d9 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/O_slashmacron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/O_slashmacron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Otilde_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Otilde_.glif index d36ce6c47..5073994ab 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Otilde_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Otilde_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_.glif index f98658d9d..5b61deec1 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_acute.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_acute.glif index 47c5e20c9..e2faff65f 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_acute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_acute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_cedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_cedilla.glif index 6e6ddea56..b58c33c41 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_cedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/S_cedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Scaron_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Scaron_.glif index c9f97a82e..7bf58f377 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Scaron_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/Scaron_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cacute.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cacute.glif index 7bcea4dd2..95e1960a9 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cacute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cacute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/caroncmb.cap.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/caroncmb.cap.glif index e95bd469c..fd083a091 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/caroncmb.cap.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/caroncmb.cap.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/ccaron.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/ccaron.glif index 705c1805f..42dc4123b 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/ccaron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/ccaron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/ccedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/ccedilla.glif index 5179acd3f..a2da54db9 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/ccedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/ccedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cdotaccent.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cdotaccent.glif index 0f211c0b3..eda64453a 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cdotaccent.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cdotaccent.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cedillacmb.cap.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cedillacmb.cap.glif index 1918838e8..41d3fe3bc 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cedillacmb.cap.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/cedillacmb.cap.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/commabelowcmb.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/commabelowcmb.glif index 145cf48d1..1384b8b4a 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/commabelowcmb.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/commabelowcmb.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/contents.plist b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/contents.plist index 8617330cf..6932975b9 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/contents.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/contents.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/s.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/s.glif index 28beb0f0e..e198717c7 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/s.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/s.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/sacute.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/sacute.glif index f5bb2af3e..38cbd3ee8 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/sacute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/sacute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/scaron.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/scaron.glif index b021b84ed..62076cec4 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/scaron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/scaron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/scedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/scedilla.glif index 5d74777b0..044593ded 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/scedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/glyphs/scedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/lib.plist b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/lib.plist index 0eb078666..20109be1d 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/lib.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/lib.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/metainfo.plist b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/metainfo.plist index 58145b5a1..65beda3c6 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/metainfo.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/metainfo.plist @@ -1,9 +1,9 @@ - + creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion 2 diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif index db27e2739..3b4f370f9 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_caron.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_caron.glif index 6555ae385..147c34345 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_caron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_caron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_cedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_cedilla.glif index 9216b2303..f6bfe5c45 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_cedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_cedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif index 69748d217..6ae6dbcac 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_bar.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_bar.glif index e089a8ec7..5149910ef 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_bar.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_bar.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/I_circumflex.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/I_circumflex.glif index 4b2356f59..91c6f67bd 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/I_circumflex.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/I_circumflex.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif index d08eade7c..4c79f151f 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_commaaccent.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_commaaccent.glif index d6a867ea3..9c5db3b5d 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_commaaccent.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_commaaccent.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_dot.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_dot.glif index f08adfb4a..3b11633b5 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_dot.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_dot.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_slash.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_slash.glif index 672fdec5f..f848009c9 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_slash.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_slash.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_commaaccent.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_commaaccent.glif index adab4c07c..50989dc5b 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_commaaccent.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_commaaccent.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_grave.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_grave.glif index c359fa934..b0127b358 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_grave.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_grave.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slash.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slash.glif index 793b0ca96..d08324849 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slash.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slash.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slashmacron.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slashmacron.glif index 941103063..87954706f 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slashmacron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slashmacron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif index 604483278..75c1b737c 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_acute.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_acute.glif index 47c5e20c9..e2faff65f 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_acute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_acute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_caron.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_caron.glif index c9f97a82e..7bf58f377 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_caron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_caron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_cedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_cedilla.glif index 6e6ddea56..b58c33c41 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_cedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_cedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/caroncmb.cap.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/caroncmb.cap.glif index a6624c879..9d7283e39 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/caroncmb.cap.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/caroncmb.cap.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/ccedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/ccedilla.glif index 5179acd3f..a2da54db9 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/ccedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/ccedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/cedillacmb.cap.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/cedillacmb.cap.glif index 1918838e8..41d3fe3bc 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/cedillacmb.cap.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/cedillacmb.cap.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/commabelowcmb.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/commabelowcmb.glif index ecaa11b26..09e60ed52 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/commabelowcmb.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/commabelowcmb.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist index 80d5bda88..1cf8b46c8 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/s.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/s.glif index 034cd6db3..21186b639 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/s.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/s.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/sacute.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/sacute.glif index f5bb2af3e..38cbd3ee8 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/sacute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/sacute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scaron.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scaron.glif index b021b84ed..62076cec4 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scaron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scaron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scedilla.glif index 5d74777b0..044593ded 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/layercontents.plist b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/layercontents.plist index f477ba09b..b07680883 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/layercontents.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/layercontents.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/metainfo.plist b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/metainfo.plist index 58145b5a1..65beda3c6 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/metainfo.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-proc-layer.ufo/metainfo.plist @@ -1,9 +1,9 @@ - + creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion 2 diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/data/com.adobe.type.processedHashMap b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/data/com.adobe.type.processedHashMap index 116559ca3..de17ba5ab 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/data/com.adobe.type.processedHashMap +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/data/com.adobe.type.processedHashMap @@ -1,49 +1,49 @@ { 'A': ['w663l50l2350l23540l13653l193219l427219l48352l38340l3830l6530l65340l57649l363675l303675l8953l540l208265l310565l411265', ['checkOutlines']], -'B': ['ebd8defeb9a3c8c4d2a36d0ef11ddf4d748a269da0a12467389442b74109ccecdea74be34404f353ed2cb621823db003db584c2b145559b734856ac863c00662', ['checkOutlines']], +'B': ['206d63b1e295c48d65475b56780c7a16042fd2f6032636604ab21de7a6ff60b36326a3e6aa2640ab3a98f64ac8430a820350ce9fe049a73f8debbb19e4a569d2', ['checkOutlines']], 'C': ['5a6b1e8f2cdd77107378ef6258c7ef19c1813c3da70c8aa59b9ff803d96a599d55d72093738bb028a326d817f04c314369540181c069bddd79689cf0480880ad', ['checkOutlines']], -'Cacute': ['0e87147cae7a74343e856bd9282ceb4da83f787cd7f3661f5468c9f43faa5e9571d09a1351bd9ceb821ac80af14a09fed17e3a5fe9114eaf778666def08625b0', ['checkOutlines']], -'Ccaron': ['dbb3ff29c0a411640e22742740b1eb3c4ed9cee5a327bf1ea53f2fe0ace1b25bc787356abfefba4d73dfb214b309b8aeef02b072641b91eaf42db2938854d2bf', ['checkOutlines']], -'Ccedilla': ['b3b57948db74a3f763848aa43ad89c785b85fb08cfc698cc00971c49424f38a09c3c3768b3c4ebbf22f5e820199c576aedd08741c2670de5cebfc2414ceb1280', ['checkOutlines']], -'Cdotaccent': ['680c9b34589d202b236ff35f99631508e4de918e3bba8e69cb709da47dd1f95b6c3c648f7fce54c7008e0ab2b798f8c4bb3c77610393161c255c3f4ce8051637', ['checkOutlines']], -'H': ['505790245ae9b15b0f97947670ef6a7e1286abb7663eed480090aee6c2b6153e0ba14d5651db677098c5881ce7bfe1bdbf6a8737f85b3ff1591368be4f41ea3f', ['checkOutlines']], -'Hbar': ['42509cbe358b9fafff14248313fb10d78452228589f7e8e79619698980fa16a6537733572820e627ae198d9b2630cf9959c8048cbf37c812311503898cb182d9', ['checkOutlines']], +'Cacute': ['f0063ec6ceb13d061f0513643279092dff8c8f46134b28d2bc1c16fceeacff1fdaea063031d190d648db2b135b8053b67019c64be3c782bf84db0ad3c1c6f31f', ['checkOutlines']], +'Ccaron': ['0c1fd0523d3fe63ba88433189a14094b8ae3e917d8e2d1fb0d4fafd22f3574b52c39a875d2cfa8b98788449acfcbaa5e21892ecbb77f564443d984b1e82e05f1', ['checkOutlines']], +'Ccedilla': ['095bd5069749bad980611268cf303c141f78a2057059c6ea36dfcf684964b1c54310f6c10eb767b947f0e0b1bb4c6e8891b88def5e2c74b502cc54c16543a698', ['checkOutlines']], +'Cdotaccent': ['04fff4b9ee2d81743a630d601e76d7b16662a8f4ae7bac99fa19f934c0531ad35aa0b851ee449e3f38f467626dcf1b7fa0a24d22ba6c6690cbd3bc6e2f0289bd', ['checkOutlines']], +'H': ['ac9b1ab64401e8a6d0192a1ca9abb97ba05693c07c0d0892b691fe8340bbe8582dd833c1a4f45594b1d80e7570bea6d20011d7b5337a152a7a4430210d611495', ['checkOutlines']], +'Hbar': ['0b12b3c82e366d35f069fdfb4741e3aa8f88315f35ada0dbf30a5c7c2b357ec3b098c88800d3e0a16249b11a9114f442285effe2e9342b70778faab236493782', ['checkOutlines']], 'I': ['01a8b0cf6b3812265091a1b9d8f28136c749bc7f1991589c3328c2cc86a5ccc58d2a4d2110c768dbad50e0291144f338d700bb2c3bba600a934af2a11c31414b', ['checkOutlines']], -'Icircumflex': ['37be5253cd417b5ba17c637ddbfeee49cd47ae48ac024ee1b5b461d5063a924995095cf13c0d9a60440c9bb1c603d94c5c86c8771137170ff126ddecd274f5e1', ['checkOutlines']], -'L': ['d9ad8d12811beaa24feabc61e8247780a908a03c6cb2a45ef6d8949883c5588723c76dd37f051269ac131cf202a74b9c39de64921bf9bbac1b65b952b8d52c94', ['checkOutlines']], -'Lcommaaccent': ['75ee83c72defef80c8e9c1f6d1eb662130f295b73e126a9e50b8bb4191b7c1fd97794c3a2975672c1b8799e56dc8258a552d2c7b3fc972e8cd421d1bcb377fc4', ['checkOutlines']], -'Ldot': ['a312337d11380ad6a146657119e3cb7273fcada1b28c6e7d4176297cce4fe72101b0bf1b38066c178d286e38fdc27b8574c191e9ac748fb6180d0af966683231', ['checkOutlines']], -'Lslash': ['eae9e4620ea4d5e07e6e1135ed79f4f383a93adffa9f77140370d940cb2c68d0bf654c993c835377267635be179ff075fa9f46e6e8d261edb011ab015a268404', ['checkOutlines']], -'Ncommaaccent': ['0b224491a80f95f4626663c829a7dc7c808cc743beb5a205be04d592c26f5b47777522e4e725e2f5e0607ec32998ce3f2c68d68f9aab289a3b2ab685014c59d1', ['checkOutlines']], -'Ngrave': ['2dd3ef495b0a49c140238113e542e6c0850b1fa8c79d127b3d33af5db17b386b8ae2e00dd149969e0e8afbb56aa64452be5d2f2361341cc94f8d305f3c4aaef2', ['checkOutlines']], +'Icircumflex': ['f99c17fc35f75ed3c1ecc26a61e6c564686c1d32e38289f449a58a6f3b5e3e084179f54824388d0e35cb31aed3377f00147a46fe444b7e8a762fc85d2aa8ce23', ['checkOutlines']], +'L': ['93fd9bc9541b093e5a9c665eaec168f054b05077287c2cf2478e9297529f25536750ee6fe242d816c08e43d11034d660763ebcb31c701c0d369e06b76dca3ed0', ['checkOutlines']], +'Lcommaaccent': ['a45e982f95b258870ff380f8b893688d9db7af753744354fe94ebf819526822ddb7a25de493debdb0297b1f36bdc648737c6700882288469f5d2bde17b706051', ['checkOutlines']], +'Ldot': ['483c8bf1358ba6b15182537748430ea6d74bedd319f8de8f20e63516209c813d006b73366fc9676568d8340968b04ab4f06fdf82d46f9eee14184224e3c4117e', ['checkOutlines']], +'Lslash': ['d9aa5df982463984207143803b8d7a72209df0d4fee14fbbdeeb58058a0c327a7bd2a2ab31b295153d78eac5b03d84962a0a31a1826db3097d266d268bb5ff08', ['checkOutlines']], +'Ncommaaccent': ['05f70fedddf09757365b4ac7d2ba0480af1610112ae6814218db99097b4a03b0ebabf93eeb5d84e072dc1ef7b7d92c2ded32f2bf1671edbe44b2ee3aaa5f29f6', ['checkOutlines']], +'Ngrave': ['27bc9a9c715d95efe4dd4cf7efb13ac6e371f96a77f89a5af4967c2b4f62ff59ccef7dd03a67d97e5c48635f194d3a41a27d13b0061ab448fbb0c4bcbf51fdcc', ['checkOutlines']], 'O': ['d8f5a47af3280fb2738a3387ea2b1eaaf0f79703fc87ae35299e205d5ffa5ddf278575e5c81938a330ea36332fb31426d8d4deda822fc6f644a218df7cc32765', ['checkOutlines']], -'Oslash': ['c7b3bd5421a8273349ac07d7f55d3765e4e1bba44d7291a9e457839ec15104631287fed43956b90b79960a7375aec640206e387d9e09a185e3653148d737b6a2', ['checkOutlines']], -'Oslashmacron': ['a5fe6afaa7b9dc93ed7e7b3ba0a78cd25c13594c35f702e35418338eac7f80b411894e5b49a24a455671cc96ae05001af50f8720d5e8865fa7c8714b0fef462b', ['checkOutlines']], -'Otilde': ['bc400f396676e2dc870591a6e09d9f0cac8c4685ef89beca4d4dc1459f06c36ba4130d1e274fb82b5582820e65fd2374c2e3964528f327f10bbfe08df1c589f7', ['checkOutlines']], -'S': ['d31627620d35de34b06fcbde63e746d7f4ec48a951645256c71689c8f173e21bfaaaea016ab1c85366de5daaa885270199e6de3a18d2895d2cab7cae1a0c52e2', ['checkOutlines']], -'Sacute': ['a4aada46babe18e78055e5db5ed0c7ae9c3d6d6ad3424a87c9e9b27cff71378f52883d634e66852a249def0af27c91fe7d706c489c7ffc6d82f0951f4d25a42d', ['checkOutlines']], -'Scaron': ['e8c2e8795667e859cba860e0a88e887b4b9169d389be0fd5c7cc7dc5d02a5e4003e1aaf75f68b20c413c42840dbd8ad8901958261ea5d509693db22477f3db75', ['checkOutlines']], -'Scedilla': ['7286c7d2568743825faacda113538113bb9358a08bb03347a4b18f2c934890af2d65489bba2e1dc2666337f3074f4f5e3ac59eca12b9a81af95f2ff364eef48b', ['checkOutlines']], +'Oslash': ['b87e0eab82a0a6ec4caa9b9b9a51ce301c3e99e9d1d96088d6bd309f6f69b06c517fb55306f77fe06d09354306e3ea98ea562fd7b0cf3f4576c2b0f937597217', ['checkOutlines']], +'Oslashmacron': ['de9c482fb815db73d55d42cca9020d4534de3bdf69d0f7d71912ac13ea8689a9793752f27b6904a95cd6b55a6f8183f8fcc200a1f645628a0276d76399f73fe2', ['checkOutlines']], +'Otilde': ['b8b18fb19d46a3150ef52507dfc1c527dbfbdb6f07ed27b4062c2161eb7a2eace10047e3104d8a4bc5e96e4c25d3487d575ba2ef257f8c4ea874765712e81963', ['checkOutlines']], +'S': ['4340293d16ea0d95ccb5dc5733993176ef8960b54294819fe6303a6a15307aa19c126a6fef9befaed9e8f741e9094f389ae2767aa45a7ae9b5b7fa6a2137782e', ['checkOutlines']], +'Sacute': ['86ec08525cb91ea61138dc82d9defae50fbd25a0fa6d0574f91c48c5a77f9af7f4dfcd26368f15e78a280c5760f74d65273ee2949a654bf1c6cd32a49dab1882', ['checkOutlines']], +'Scaron': ['fdef6241a6814033c3f3f8e67a2c43edc34cead8ca90479790adbc17aaa967a0f036ab7cba5eeb584585f9047adc30d8f4a95e6bb512af9f43a3dffd6f900876', ['checkOutlines']], +'Scedilla': ['4ba24e8d2a4ce00b782ceca9e77e175c1ecc7f7955f629a3b6563969280b17e95be657e8195aaf7532c218b0706005274dcf8bedc491c3881482edf60947b6c7', ['checkOutlines']], 'acutecmb': ['w1000c-58576l-33557959449630c89667116692121707c121720121745103757c847576775750747c317170670-29623', ['checkOutlines']], 'acutecmb.cap': ['w1000c-66746l-48722-774335766c76789113810126826c126844126864109877c898777287755867c27839-4809-35778', ['checkOutlines']], 'c': ['cf9e46d84b17be742c229e262b4237ba5b71aa00fac915a3e2109b5ccfd44ca3a3a1fad8f71957364c189142ae656f6fc9c2555c3b75b23a6c64389d0f1260aa', ['checkOutlines']], -'cacute': ['8e5c5e3d35e273856c9f2d654d3c3071dd8fbb0e2c1d5b934e2a6a3a942d6eaadc92ebc421509698d735980b35f976fed1f05fa35e6747c45bb9dfd4c48c8c06', ['checkOutlines']], +'cacute': ['81cc973a7c9e213143cc219cac13a20ffc9140072e7c8ad9630f73c56390bf56e18ab370b2a2136a327f3e50fa5b31bc6faf630679667d269f4839be37e475a0', ['checkOutlines']], 'caroncmb': ['w1000l-114737l-138718l-37571l37571l138718l114737l0633', ['checkOutlines']], -'caroncmb.cap': ['w1000l-114867l-137847l-37730l37730l137847l114867l-42751l42751', ['checkOutlines']], -'ccaron': ['04ed8264bec5731948e7885926f303ca1167d42d80d3febe2988e3eae74d1bb8fd10cb24500f89cbdd7d6056b3c5bbb201e462bfe913cbda3d2514dfe660b36b', ['checkOutlines']], -'ccedilla': ['b223ab27668243870e220ac1b6ea20e4a17ff0c7cf3589e1ffe12c3276ce34ac2bf8abbd79a7b8d8ea46eca9ebb15042becbeb3de77cad00ada0bb299e89129a', ['checkOutlines']], -'cdotaccent': ['9a9124157aeefee890176e0dadea654347bb418d4e323c2156485c83cacc10eefb7949c3fa37ea4e2c1890298784643fe5a826b3ebd821721660c439850b018d', ['checkOutlines']], +'caroncmb.cap': ['w1000l-114867l-137847l-37730l37730l137847l114867l0782', ['checkOutlines']], +'ccaron': ['00f0360888d88d1253ce365c5085b891122c10f34d759b9d46357ec2014342438124a52e4647217d4da6d0e30483bee14bc40fc84b55b5095a5fb7d723ad3ecb', ['checkOutlines']], +'ccedilla': ['bff847e78561faa04a104f7eb3e707536751a1c706c222e03ac642f89de4d1f1cd694f34446414593d516f36198fdb97bc87aba87ee440e8b3c30c439c914689', ['checkOutlines']], +'cdotaccent': ['4691ba9f582e773d591780ba9d4becd28952f33f1ff44b61348d0b6a04afe3f599129431026a37b3c2937152bebcc26037fa582379041a149c05055114c13f8b', ['checkOutlines']], 'cedillacmb': ['cd50ba7c89312fbc789190975e4db86cf40641bf2de2d92ec6881bcafe013bb6898039460541aca258c82f97aed50b39594effa84f3c511c700e2405fa9fa723', ['checkOutlines']], -'cedillacmb.cap': ['8dce8a4b8371979f9329931d522a85be2ceab36a9d13cf4da2c51615f555e1fba625556427f10a1477f1db9bdbd421b07031bac48757ae92dce58df197c050a7', ['checkOutlines']], -'commabelowcmb': ['2e20b3cfdd80e087d29a962efa81468de9dcf447ac3dd62a51f81dee7b863d3aad49726aa4d94083bbe908f58c5ecf83d7014ca0afd8103668217fd4adda83cc', ['checkOutlines']], +'cedillacmb.cap': ['cd50ba7c89312fbc789190975e4db86cf40641bf2de2d92ec6881bcafe013bb6898039460541aca258c82f97aed50b39594effa84f3c511c700e2405fa9fa723', ['checkOutlines']], +'commabelowcmb': ['w1000c61-11761-10459-92c52-7138-5823-52c9-52-16-52-37-70c-37-96-37-121-17-144c9-155-13-189-42-206c-82-222l-72-250-2-22761-187', ['checkOutlines']], 'dotaccentcmb': ['w1000c05903759066616c666536669037716c0716-37716-66690c-66653-66616-37590', ['checkOutlines']], 'dotaccentcmb.cap': ['w1000c07383773866764c668016683837864c0864-37864-66838c-66801-66764-37738', ['checkOutlines']], 'gravecmb.cap': ['w1000l66746367775808c-27839-55867-72877c-89877-109877-126864c-126844-126826-113809c-76789-367676744c48722', ['checkOutlines']], 'hashMapVersion': (1, 0), 'macroncmb.cap': ['w1000l-150760l150760l150821l-150821', ['checkOutlines']], -'s': ['5a81574cd3fc65cf7935f048d2928f8651e5afbff723479035a2ac48cad3303b6fda9d99f9ca0d78d857d128fc4263ece2628a8456e5c012994a169af0fc7428', ['checkOutlines']], -'sacute': ['aa24df0d1ffcccbdd568400d92885d1a59be00dabc98aa157cade7272ff2c838f6b05fac22177ba7a9c6eb75ea51eda5267644cd009380ed93e677748428d219', ['checkOutlines']], -'scaron': ['808708d5fa43341f3343451393bf0acecc73615408c950d6610b16be7846ccff451baa94150d40dc3f5130b3f2402138d813286838ee766723464c0bc2f8a47c', ['checkOutlines']], -'scedilla': ['d438de651fe85d96fbb66c4cfed1086199af218f9831743480f3d70a9236cd60887306f95a1513f1bc081d2830d89236d289aee52bc8219bd662d4b77123f513', ['checkOutlines']], +'s': ['37d328a4d6d9c7aff10b31fd702ebb1bc2fb7a5e7f6adf4fb937ebdebf00b10fbf174418add48352cb8966deab70a20b4f3541e5c9bc88c84ad4266ede0dfdc2', ['checkOutlines']], +'sacute': ['fe10c10b28ff2975195a6199d8de3d11a23b97fde4c618fb752cbf86b56d55f5daa49074eeb6e387730cb5d34fce988ad9d5ef2c6cb1f0608aea4d54cd55157f', ['checkOutlines']], +'scaron': ['08f1f67b53785a4e4935ff19c4e368577be10f81c2d0a8fc03683fd11e49b0fae43c287cc66d06fb90afb33b3cc7df595226c58c5a1018e2851234ceb740bc36', ['checkOutlines']], +'scedilla': ['9ff62256b36c33cce06aedca69caaaba93c374e39d15c76d88a8c5618929bf8bf27e1aa403f4cc275e7a1407816da00f2a696b818f345b5ff674ee8cfe012152', ['checkOutlines']], 'tildecmb.cap': ['def50771048ddbe0d571261b83c52e2f10d42205b81be10d6d63cbfca22cc372632ace824ab7b636a8959ebfb2bb7dcae6292cce4a7b7008350cdc70c88ea1ff', ['checkOutlines']], } diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/fontinfo.plist b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/fontinfo.plist index cffb3db6b..4d0215835 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/fontinfo.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/fontinfo.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/B_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/B_.glif index b8ff0f0ae..5d0a968ff 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/B_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/B_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_acute.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_acute.glif index 526631872..b72bbff91 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_acute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_acute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_caron_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_caron_.glif index 3af82d92d..62ab68ca3 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_caron_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_caron_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_cedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_cedilla.glif index 03d14ebbb..6065ca76b 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_cedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/C_cedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Cdotaccent_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Cdotaccent_.glif index 7a33bf76a..b9bf380d2 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Cdotaccent_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Cdotaccent_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/H_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/H_.glif index 1c96589d8..7ab2a9975 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/H_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/H_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/H_bar.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/H_bar.glif index 101a5e455..22c84ceb6 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/H_bar.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/H_bar.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/I_circumflex.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/I_circumflex.glif index 4030805a2..cfa942b3b 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/I_circumflex.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/I_circumflex.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_.glif index 76cc28f76..6c9871317 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_commaaccent.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_commaaccent.glif index 2130f57a6..2081ac776 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_commaaccent.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_commaaccent.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_dot.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_dot.glif index 6a50c2f57..af29d89df 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_dot.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_dot.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_slash.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_slash.glif index 15378223e..e16866840 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_slash.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/L_slash.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/N_commaaccent.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/N_commaaccent.glif index b783aa2f6..a88f9e503 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/N_commaaccent.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/N_commaaccent.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/N_grave.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/N_grave.glif index 27a75b739..1bb5b246e 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/N_grave.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/N_grave.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/O_slash.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/O_slash.glif index 835cabda1..0d446f262 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/O_slash.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/O_slash.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/O_slashmacron.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/O_slashmacron.glif index bbe41ec25..45c8345f3 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/O_slashmacron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/O_slashmacron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Otilde_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Otilde_.glif index 404e03671..aae0de801 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Otilde_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Otilde_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_.glif index 0112f4995..e297c4a76 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_acute.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_acute.glif index 89985a858..99c6a35fb 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_acute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_acute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_cedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_cedilla.glif index e1b7c1e57..7fa54ac62 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_cedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/S_cedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Scaron_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Scaron_.glif index 176e4820a..19f9fa25f 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Scaron_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/Scaron_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cacute.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cacute.glif index 5c6fcf1a7..eceab8570 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cacute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cacute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/caroncmb.cap.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/caroncmb.cap.glif index 0cb5bb0c5..b9533cb73 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/caroncmb.cap.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/caroncmb.cap.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/ccaron.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/ccaron.glif index feeef96bc..95fdf25ed 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/ccaron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/ccaron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/ccedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/ccedilla.glif index 8a6d2e02b..a130d8880 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/ccedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/ccedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cdotaccent.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cdotaccent.glif index 10cdf5aa4..4fc236e99 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cdotaccent.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cdotaccent.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cedillacmb.cap.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cedillacmb.cap.glif index 73c1ef0fb..01e2c8309 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cedillacmb.cap.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/cedillacmb.cap.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/commabelowcmb.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/commabelowcmb.glif index 19735384c..538d7c072 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/commabelowcmb.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/commabelowcmb.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/contents.plist b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/contents.plist index 8617330cf..6932975b9 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/contents.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/contents.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/s.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/s.glif index 508356131..0ada155c0 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/s.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/s.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/sacute.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/sacute.glif index 5550cded2..6b3a4500e 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/sacute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/sacute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/scaron.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/scaron.glif index dff0592bf..9cb25d153 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/scaron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/scaron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/scedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/scedilla.glif index 6240e9497..a390f335d 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/scedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/scedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/layercontents.plist b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/layercontents.plist index 963df4006..b9c1a4f27 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/layercontents.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/layercontents.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/lib.plist b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/lib.plist index 0eb078666..20109be1d 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/lib.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/lib.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/metainfo.plist b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/metainfo.plist index 8e836fbfb..7b8b34ac6 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/metainfo.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/metainfo.plist @@ -1,9 +1,9 @@ - + creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion 3 diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif index 3ede2b949..0e85c5ba7 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_caron.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_caron.glif index 3af82d92d..62ab68ca3 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_caron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_caron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_cedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_cedilla.glif index 03d14ebbb..6065ca76b 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_cedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/C_cedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif index 2546470b7..6c87f74e1 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_bar.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_bar.glif index 893e9cf88..2c7721586 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_bar.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/H_bar.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/I_circumflex.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/I_circumflex.glif index 4030805a2..cfa942b3b 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/I_circumflex.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/I_circumflex.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif index 66ce8323a..b6707325e 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_commaaccent.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_commaaccent.glif index 2130f57a6..2081ac776 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_commaaccent.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_commaaccent.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_dot.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_dot.glif index 6a50c2f57..af29d89df 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_dot.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_dot.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_slash.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_slash.glif index 15378223e..e16866840 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_slash.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/L_slash.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_commaaccent.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_commaaccent.glif index b783aa2f6..a88f9e503 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_commaaccent.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_commaaccent.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_grave.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_grave.glif index 27a75b739..1bb5b246e 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_grave.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/N_grave.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slash.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slash.glif index 4c2480e37..62d65c785 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slash.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slash.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slashmacron.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slashmacron.glif index e4868fd44..eeedbc0c6 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slashmacron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/O_slashmacron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif index fe8c16644..54b3f7e4d 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_acute.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_acute.glif index 89985a858..99c6a35fb 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_acute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_acute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_caron.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_caron.glif index 176e4820a..19f9fa25f 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_caron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_caron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_cedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_cedilla.glif index e1b7c1e57..7fa54ac62 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_cedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/S_cedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/caroncmb.cap.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/caroncmb.cap.glif index 5ab769403..08d8c5a5a 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/caroncmb.cap.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/caroncmb.cap.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/ccedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/ccedilla.glif index 8a6d2e02b..a130d8880 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/ccedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/ccedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/cedillacmb.cap.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/cedillacmb.cap.glif index 73c1ef0fb..01e2c8309 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/cedillacmb.cap.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/cedillacmb.cap.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/commabelowcmb.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/commabelowcmb.glif index 3eb7601ae..79bcc5340 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/commabelowcmb.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/commabelowcmb.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist index 80d5bda88..1cf8b46c8 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/s.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/s.glif index 2b5541be3..ad1e9c671 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/s.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/s.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/sacute.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/sacute.glif index 5550cded2..6b3a4500e 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/sacute.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/sacute.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scaron.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scaron.glif index dff0592bf..9cb25d153 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scaron.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scaron.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scedilla.glif b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scedilla.glif index 6240e9497..a390f335d 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scedilla.glif +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/glyphs.com.adobe.type.processedglyphs/scedilla.glif @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/layercontents.plist b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/layercontents.plist index f477ba09b..b07680883 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/layercontents.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/layercontents.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/metainfo.plist b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/metainfo.plist index 8e836fbfb..7b8b34ac6 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/metainfo.plist +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-proc-layer.ufo/metainfo.plist @@ -1,9 +1,9 @@ - + creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion 3 diff --git a/tests/comparefamily_data/input/source-code-pro/LICENSE.txt b/tests/comparefamily_data/input/source-code-pro/LICENSE.txt old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Black.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Black.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-BlackIt.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-BlackIt.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Bold.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Bold.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-BoldIt.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-BoldIt.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-ExtraLight.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-ExtraLight.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-ExtraLightIt.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-ExtraLightIt.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-It.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-It.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Light.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Light.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-LightIt.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-LightIt.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Medium.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Medium.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-MediumIt.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-MediumIt.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Regular.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Regular.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Semibold.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-Semibold.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-SemiboldIt.otf b/tests/comparefamily_data/input/source-code-pro/otf/SourceCodePro-SemiboldIt.otf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Black.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Black.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-BlackIt.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-BlackIt.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Bold.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Bold.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-BoldIt.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-BoldIt.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-ExtraLight.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-ExtraLight.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-ExtraLightIt.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-ExtraLightIt.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-It.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-It.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Light.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Light.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-LightIt.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-LightIt.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Medium.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Medium.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-MediumIt.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-MediumIt.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Regular.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Regular.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Semibold.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-Semibold.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-SemiboldIt.ttf b/tests/comparefamily_data/input/source-code-pro/ttf/SourceCodePro-SemiboldIt.ttf old mode 100755 new mode 100644 diff --git a/tests/comparefamily_test.py b/tests/comparefamily_test.py old mode 100755 new mode 100644 diff --git a/tests/convertfonttocid_test.py b/tests/convertfonttocid_test.py old mode 100755 new mode 100644 diff --git a/tests/detype1_test.py b/tests/detype1_test.py old mode 100755 new mode 100644 diff --git a/tests/differ.py b/tests/differ.py old mode 100755 new mode 100644 index 1687b3742..5777da781 --- a/tests/differ.py +++ b/tests/differ.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python - # Copyright 2018 Adobe. All rights reserved. """ diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/black.ufo/fontinfo.plist index 99493a77f..96d9d349c 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/fontinfo.plist @@ -1,4 +1,4 @@ - + @@ -12,8 +12,16 @@ -222 familyName Source Serif Pro + guidelines + italicAngle 0 + openTypeHheaAscender + 1036 + openTypeHheaDescender + -335 + openTypeHheaLineGap + 0 openTypeNameDesigner Frank Grießhammer openTypeNameLicense @@ -48,6 +56,12 @@ 2 4 + openTypeOS2TypoAscender + 730 + openTypeOS2TypoDescender + -270 + openTypeOS2TypoLineGap + 0 openTypeOS2UnicodeRanges 0 @@ -62,6 +76,10 @@ openTypeOS2VendorID ADBO + openTypeOS2WinAscent + 1036 + openTypeOS2WinDescent + 335 postscriptBlueFuzz 0 postscriptBlueScale diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_.glif index 0b7079261..c43b3d4f0 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_.glif @@ -1,7 +1,10 @@ - - + + + + + @@ -35,14 +38,5 @@ - - - - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_acute.glif index 35fe60865..08f7df37c 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_acute.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_dieresis.glif index 7d599921f..a8e407215 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_dieresis.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_tilde.glif index d9fac687a..1ea35592e 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/A_tilde.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_.glif index 42c25c3f8..eaedcff23 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_.glif @@ -1,7 +1,9 @@ - - + + + + @@ -47,11 +49,5 @@ - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_acute.glif index 660f20910..f1af47cb7 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_acute.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_dieresis.glif index f3ac8a592..7bc646679 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_dieresis.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_tilde.glif index 8f0c49f00..9c82254e9 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/Y_tilde.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/a.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/a.glif index 45f8005ba..fe63f1919 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/a.glif @@ -1,7 +1,10 @@ - - + + + + + @@ -70,14 +73,5 @@ - - - - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/aacute.glif index ccfeb9d59..4dbe008a6 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/aacute.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/acutecmb.cap.glif index 844e342a2..3fafe6ec4 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/acutecmb.cap.glif @@ -1,5 +1,6 @@ - - + + + @@ -19,8 +20,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/acutecmb.glif index d2c91bc62..2e1c3896c 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/acutecmb.glif @@ -1,6 +1,7 @@ - - + + + @@ -20,8 +21,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/adieresis.glif index 47b4b413f..415e8a684 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/adieresis.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/atilde.glif index 9154437c1..719734341 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/atilde.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/contents.plist index 3c13e1fa0..f140c9be6 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/contents.plist +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/contents.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/dieresiscmb.cap.glif index 3362fa609..8456cca80 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/dieresiscmb.cap.glif @@ -1,5 +1,6 @@ - - + + + @@ -29,8 +30,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/dieresiscmb.glif index 636ff992b..4974c7634 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/dieresiscmb.glif @@ -1,6 +1,8 @@ - - + + + + @@ -30,11 +32,5 @@ - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/tildecmb.cap.glif index f4b9e77c7..c12852f81 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/tildecmb.cap.glif @@ -1,5 +1,6 @@ - - + + + @@ -29,8 +30,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/tildecmb.glif index c63af9c53..033e1b2e0 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/tildecmb.glif @@ -1,6 +1,7 @@ - - + + + @@ -30,8 +31,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/y.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/y.glif index 713f5dcd0..a2bc6e220 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/y.glif @@ -1,7 +1,9 @@ - - + + + + @@ -49,11 +51,5 @@ - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/yacute.glif index c368cae9b..22854b8b5 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/yacute.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/ydieresis.glif index b6dd1da62..fba43f839 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/ydieresis.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/ytilde.glif index 87b26eb24..73da15d26 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/glyphs/ytilde.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/black.ufo/groups.plist index 013b69729..ca1a568cf 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/groups.plist +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/groups.plist @@ -1,57 +1,57 @@ - + - @MMK_L_LAT_A + public.kern1.LAT_A A Aacute Adieresis Atilde - @MMK_L_LAT_Y + public.kern1.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_L_LAT_a + public.kern1.LAT_a a aacute adieresis atilde - @MMK_L_LAT_v + public.kern1.LAT_v y yacute ydieresis ytilde - @MMK_R_LAT_A + public.kern2.LAT_A A Aacute Adieresis Atilde - @MMK_R_LAT_Y + public.kern2.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_R_LAT_a + public.kern2.LAT_a a aacute adieresis atilde - @MMK_R_LAT_y + public.kern2.LAT_y y yacute diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/kerning.plist b/tests/makeinstancesufo_data/expected_output/black.ufo/kerning.plist index 6bda550ba..72ba94b12 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/kerning.plist +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/kerning.plist @@ -1,45 +1,47 @@ - + - @MMK_L_LAT_A + public.kern1.LAT_A - @MMK_R_LAT_Y + public.kern2.LAT_Y -90 - @MMK_R_LAT_a + public.kern2.LAT_a -10 - @MMK_R_LAT_y + public.kern2.LAT_y -60 - @MMK_L_LAT_Y + public.kern1.LAT_Y - @MMK_R_LAT_A + adieresis + -50 + atilde + -80 + public.kern2.LAT_A -100 - @MMK_R_LAT_Y + public.kern2.LAT_Y 10 - @MMK_R_LAT_a + public.kern2.LAT_a -80 - @MMK_R_LAT_y - -50 - adieresis + public.kern2.LAT_y -50 - @MMK_L_LAT_a + public.kern1.LAT_a - @MMK_R_LAT_Y + public.kern2.LAT_Y -70 - @MMK_R_LAT_y + public.kern2.LAT_y -20 - @MMK_L_LAT_v + public.kern1.LAT_v - @MMK_R_LAT_A + public.kern2.LAT_A -100 - @MMK_R_LAT_Y + public.kern2.LAT_Y -60 - @MMK_R_LAT_a + public.kern2.LAT_a -30 - @MMK_R_LAT_y + public.kern2.LAT_y -10 diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/layercontents.plist b/tests/makeinstancesufo_data/expected_output/black.ufo/layercontents.plist new file mode 100644 index 000000000..b9c1a4f27 --- /dev/null +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/lib.plist b/tests/makeinstancesufo_data/expected_output/black.ufo/lib.plist index 2ec6ba72b..21c25767b 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/lib.plist +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/lib.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/metainfo.plist b/tests/makeinstancesufo_data/expected_output/black.ufo/metainfo.plist index 58145b5a1..7b8b34ac6 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/metainfo.plist +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/metainfo.plist @@ -1,10 +1,10 @@ - + creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion - 2 + 3 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/bold.ufo/fontinfo.plist index 050d73ae5..1b93fb235 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/fontinfo.plist @@ -1,4 +1,4 @@ - + @@ -12,12 +12,14 @@ -227 familyName Source Serif Pro + guidelines + italicAngle 0 openTypeHheaAscender - 289 + 1036 openTypeHheaDescender - -93 + -335 openTypeHheaLineGap 0 openTypeNameDesigner @@ -55,9 +57,9 @@ 4 openTypeOS2TypoAscender - 203 + 730 openTypeOS2TypoDescender - -75 + -270 openTypeOS2TypoLineGap 0 openTypeOS2UnicodeRanges @@ -75,9 +77,9 @@ openTypeOS2VendorID ADBO openTypeOS2WinAscent - 289 + 1036 openTypeOS2WinDescent - 93 + 335 postscriptBlueFuzz 0 postscriptBlueScale diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 599451a01..81aaf37e6 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -1,38 +1,36 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + com.adobe.type.autohint.v2 - id - w675l90l2240l22454l14866l188191l390191l43062l35352l3530l6620l66252l60159l396658l293658l9066l954l207249l290505l371249 hintSetList @@ -69,7 +67,9 @@ + id + w675l90l2240l22454l14866l188191l390191l43062l35352l3530l6620l66252l60159l396658l293658l9066l954l207249l290505l371249 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index af7796986..0407922e8 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -1,56 +1,54 @@ - - - + + + - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 38a5f4156323df45a2d7149a03a9c8aa7eb2e4b4e3e3e23d7b88f44ba4784577882124b61e161a1e53e4dc2ab7e9a24c5635da5d6b5e451938a41b528a34cb99 hintSetList @@ -90,7 +88,9 @@ + id + 38a5f4156323df45a2d7149a03a9c8aa7eb2e4b4e3e3e23d7b88f44ba4784577882124b61e161a1e53e4dc2ab7e9a24c5635da5d6b5e451938a41b528a34cb99 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index 0e8b953c2..0a9bef59d 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -1,66 +1,64 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 04a6cdc419742c6bc5804b683f656290abd2bea6d93b9a7d06349f505d467f7074c06d709d0dc5b5960b22bb300d3dd8bdf837c8d10b57d624a45541488ba9b0 hintSetList @@ -129,7 +127,9 @@ + id + 04a6cdc419742c6bc5804b683f656290abd2bea6d93b9a7d06349f505d467f7074c06d709d0dc5b5960b22bb300d3dd8bdf837c8d10b57d624a45541488ba9b0 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 928d6c6d2..4f8e5018d 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -1,66 +1,64 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 190e1d1b75d9d363eff15ed5abab4a8ca24469157021ab9b9322ed5b3c94855d81612d12053958abb3082b711b8f97143fe5c62a6a9a9d4d9f085a02450075f2 hintSetList @@ -128,7 +126,9 @@ + id + 190e1d1b75d9d363eff15ed5abab4a8ca24469157021ab9b9322ed5b3c94855d81612d12053958abb3082b711b8f97143fe5c62a6a9a9d4d9f085a02450075f2 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index 2329afa0c..2713d103a 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -1,42 +1,40 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 89c0e0d9fed496590c6ba80f3bb99c1a6c4d84ada2e80dffb5bc99f36b95c9bef7f0abe52edc3435360836cac1fa51caf6b4fc3d2a741efb83c4c548b5313ce0 hintSetList @@ -93,7 +91,9 @@ + id + 89c0e0d9fed496590c6ba80f3bb99c1a6c4d84ada2e80dffb5bc99f36b95c9bef7f0abe52edc3435360836cac1fa51caf6b4fc3d2a741efb83c4c548b5313ce0 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index 882b1da1d..ca309a7ee 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -1,60 +1,58 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - ca04291ec746629939fdd70b8d4ec5ddebbef55b25c0fb8fcf21bd7fc17f1ef0e26e99f51674df98b35d27b225381b6821b52e3f2b4e39ec5cf9ba228ed0ce71 hintSetList @@ -116,7 +114,9 @@ + id + ca04291ec746629939fdd70b8d4ec5ddebbef55b25c0fb8fcf21bd7fc17f1ef0e26e99f51674df98b35d27b225381b6821b52e3f2b4e39ec5cf9ba228ed0ce71 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index 63061632d..0ffb24e53 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -1,70 +1,68 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - b4a8e580d1149f3b9d51b409209584990a9f5307c75cd21888299fa7f1cef9c555c494ba3f3da5d4e9950be06f7947f79e6c9e1b21b39dde65c457c02659626f hintSetList @@ -134,7 +132,9 @@ + id + b4a8e580d1149f3b9d51b409209584990a9f5307c75cd21888299fa7f1cef9c555c494ba3f3da5d4e9950be06f7947f79e6c9e1b21b39dde65c457c02659626f - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index 51878aeb0..c663f3465 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -1,70 +1,68 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - b317afbfc651cc7b1cf3e6927b6a31a53ecc3f56d5f7787d67a90d22f7fc45132827a9d9d357add79310279b2e9cb44b008df4bfb35ae3a479b79787406010eb hintSetList @@ -167,7 +165,9 @@ + id + b317afbfc651cc7b1cf3e6927b6a31a53ecc3f56d5f7787d67a90d22f7fc45132827a9d9d357add79310279b2e9cb44b008df4bfb35ae3a479b79787406010eb - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index ddfce18ea..3165a7838 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -1,78 +1,76 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 9c994a97a8d0464dea14c495e159f7b8faa576f0abcadc0ee6017656564d1c0eb4b7f143b07786442fd8a12beab040cbf229bf21fd9d41a41c11c6c1687f7a17 hintSetList @@ -129,7 +127,9 @@ + id + 9c994a97a8d0464dea14c495e159f7b8faa576f0abcadc0ee6017656564d1c0eb4b7f143b07786442fd8a12beab040cbf229bf21fd9d41a41c11c6c1687f7a17 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index b8ba2288b..f705fab48 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -1,96 +1,94 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 4ef68623b8dd90c834927c7aa8546ba677ae0e19ff569368412215b97bd8f5f39825f5c1375c02cce9ea7ecd47cb2a0bca10f95623b810a633965970c09597ab hintSetList @@ -147,7 +145,9 @@ + id + 4ef68623b8dd90c834927c7aa8546ba677ae0e19ff569368412215b97bd8f5f39825f5c1375c02cce9ea7ecd47cb2a0bca10f95623b810a633965970c09597ab - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index 0f833124e..a63a55abe 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -1,31 +1,30 @@ - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - w1000c-90734l-62695-1171841740c93764140785150810c150829150855127880c958807288053871c21840-15806-53770 hintSetList @@ -38,7 +37,9 @@ + id + w1000c-90734l-62695-1171841740c93764140785150810c150829150855127880c958807288053871c21840-15806-53770 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index 4d4cdb85f..dc2692626 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -1,32 +1,31 @@ - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - w1000c-73584l-35553-957317593c75637115666138691c138721138756111776c847765177632758c5713-38644-56614 hintSetList @@ -39,7 +38,9 @@ + id + w1000c-73584l-35553-957317593c75637115666138691c138721138756111776c847765177632758c5713-38644-56614 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index 9c52a7c30..cf4d211de 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -1,106 +1,104 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 787b08f5cc6c88b49c6b424efa0bc9778fb47688001f5dc1bee96355b646f24e8f18055f96c643a1a93d36b6df427792524b22a9b7563e23292f2f0215556ea4 hintSetList @@ -174,7 +172,9 @@ + id + 787b08f5cc6c88b49c6b424efa0bc9778fb47688001f5dc1bee96355b646f24e8f18055f96c643a1a93d36b6df427792524b22a9b7563e23292f2f0215556ea4 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index 89e80b323..d9d3a9edf 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -1,106 +1,104 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 92aaeccf9b797ea261ca4bb4ae0f3ae228fd2ffadb2b598a1abc230a3fef4e50f40f0bf84e820e2eebc0192db2596e7f73263b8e286c34914e963df550d2988c hintSetList @@ -228,7 +226,9 @@ + id + 92aaeccf9b797ea261ca4bb4ae0f3ae228fd2ffadb2b598a1abc230a3fef4e50f40f0bf84e820e2eebc0192db2596e7f73263b8e286c34914e963df550d2988c - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist index bf3d7b78c..f140c9be6 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -1,50 +1,50 @@ - + - - A - A_.glif - Aacute - A_acute.glif - Adieresis - A_dieresis.glif - Atilde - A_tilde.glif - Y - Y_.glif - Yacute - Y_acute.glif - Ydieresis - Y_dieresis.glif - Ytilde - Y_tilde.glif - a - a.glif - aacute - aacute.glif - acutecmb - acutecmb.glif - acutecmb.cap - acutecmb.cap.glif - adieresis - adieresis.glif - atilde - atilde.glif - dieresiscmb - dieresiscmb.glif - dieresiscmb.cap - dieresiscmb.cap.glif - tildecmb - tildecmb.glif - tildecmb.cap - tildecmb.cap.glif - y - y.glif - yacute - yacute.glif - ydieresis - ydieresis.glif - ytilde - ytilde.glif - + + A + A_.glif + Aacute + A_acute.glif + Adieresis + A_dieresis.glif + Atilde + A_tilde.glif + Y + Y_.glif + Yacute + Y_acute.glif + Ydieresis + Y_dieresis.glif + Ytilde + Y_tilde.glif + a + a.glif + aacute + aacute.glif + acutecmb + acutecmb.glif + acutecmb.cap + acutecmb.cap.glif + adieresis + adieresis.glif + atilde + atilde.glif + dieresiscmb + dieresiscmb.glif + dieresiscmb.cap + dieresiscmb.cap.glif + tildecmb + tildecmb.glif + tildecmb.cap + tildecmb.cap.glif + y + y.glif + yacute + yacute.glif + ydieresis + ydieresis.glif + ytilde + ytilde.glif + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index 3454d228b..f3e16f4d6 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -1,41 +1,40 @@ - + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - b139be7a200ef084f7498c6d3aca15d527333b17d6fbac15ee81742f6d5e708b57cca3fd6b3387baa49317205712f93773af38b0bce23a36e2771c02a790700d hintSetList @@ -49,7 +48,9 @@ + id + b139be7a200ef084f7498c6d3aca15d527333b17d6fbac15ee81742f6d5e708b57cca3fd6b3387baa49317205712f93773af38b0bce23a36e2771c02a790700d - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index 53a7ca3c0..ab9a8623a 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -1,42 +1,42 @@ - - + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - c2ed37bf180e269e8b49caa6857e4bcf2805f3ef8f28d9e1b075b25f1fe22a8d255c52b7b6f868a191449490260a7d8fddcef085413e7a980f79c3c530bfa8df hintSetList @@ -50,7 +50,9 @@ + id + c2ed37bf180e269e8b49caa6857e4bcf2805f3ef8f28d9e1b075b25f1fe22a8d255c52b7b6f868a191449490260a7d8fddcef085413e7a980f79c3c530bfa8df - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index 5d86e98bb..40eaaad5b 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -1,41 +1,40 @@ - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 7c2657bb8e013bbaf047b5bcfa03b5eb61fa289d99871c08918f926718e795dbb45145863110d338af830153544478397372090c49eaaa672909ebb4a772c55d hintSetList @@ -68,7 +67,9 @@ + id + 7c2657bb8e013bbaf047b5bcfa03b5eb61fa289d99871c08918f926718e795dbb45145863110d338af830153544478397372090c49eaaa672909ebb4a772c55d - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index ca3e4deda..d4efbe40d 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -1,42 +1,41 @@ - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 541d5dd2e882e9c303fe6ddd3c1b9c7ea22cfe6cde314c656ef0df78050e7dea11b6e3f22f03cdee83a82ce34e1bfc1ea4081982d8c31b8093826f1406ac0f02 hintSetList @@ -103,7 +102,9 @@ + id + 541d5dd2e882e9c303fe6ddd3c1b9c7ea22cfe6cde314c656ef0df78050e7dea11b6e3f22f03cdee83a82ce34e1bfc1ea4081982d8c31b8093826f1406ac0f02 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index e48379cf1..ae6bcc0aa 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -1,48 +1,46 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - d8f5c8fea7a8e3d80b3e3f30a1d477bc61565bb36229a82bb78754150db97eb5bfcbf8854f073f96dfb40ee9d5790aac5605de7e242c5c35432a3b52d425be2a hintSetList @@ -116,7 +114,9 @@ + id + d8f5c8fea7a8e3d80b3e3f30a1d477bc61565bb36229a82bb78754150db97eb5bfcbf8854f073f96dfb40ee9d5790aac5605de7e242c5c35432a3b52d425be2a - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index 87247c65d..d9475b3b1 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -1,66 +1,64 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 10b1df92f48596f31c556d08d34ad5b0b1fbd8d35240f721d043466a68d7b79ce3175f746c8a90577348cda64d45e868fa51ed9081954a94b3366f948ffba074 hintSetList @@ -134,7 +132,9 @@ + id + 10b1df92f48596f31c556d08d34ad5b0b1fbd8d35240f721d043466a68d7b79ce3175f746c8a90577348cda64d45e868fa51ed9081954a94b3366f948ffba074 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index 837b87412..8fae06c4f 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -1,76 +1,74 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 1061e089f0f22a40c2fb4b9a170f534de027cf6ae8b9c3c8649d9a9e195528762d2d14dfcd2b5f316ae84cc9e82d14eaec52001cfd7574e20d5bccc03a80c48d hintSetList @@ -158,7 +156,9 @@ + id + 1061e089f0f22a40c2fb4b9a170f534de027cf6ae8b9c3c8649d9a9e195528762d2d14dfcd2b5f316ae84cc9e82d14eaec52001cfd7574e20d5bccc03a80c48d - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index 0ddfe9e9f..df3e7fbd8 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -1,76 +1,74 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - d1ab3f4904527bb9973d69b1661e82c315518caa6f5ef534b90a7802f074dbc7dd754e44c5f7218c47965214a1e08ddc550bddf98dab2ea925ec3b4d68a5ac1d hintSetList @@ -217,7 +215,9 @@ + id + d1ab3f4904527bb9973d69b1661e82c315518caa6f5ef534b90a7802f074dbc7dd754e44c5f7218c47965214a1e08ddc550bddf98dab2ea925ec3b4d68a5ac1d - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_.glif index 01537362e..a4f36148a 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_.glif @@ -1,7 +1,10 @@ - - + + + + + @@ -35,14 +38,5 @@ - - - - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_acute.glif index 61887e64f..b6d134f3f 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_acute.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_dieresis.glif index db7376f72..b75cfe287 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_dieresis.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_tilde.glif index 2cdf8ebfd..3e7541a7d 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/A_tilde.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_.glif index 43d98d102..02a1ca3c2 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_.glif @@ -1,7 +1,9 @@ - - + + + + @@ -47,11 +49,5 @@ - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_acute.glif index 0a726e3bc..5334806e8 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_acute.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_dieresis.glif index 6a1ec77c8..e849adbca 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_dieresis.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_tilde.glif index a17d07d2f..ab52b820b 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/Y_tilde.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/a.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/a.glif index a8565191c..0e84718ed 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/a.glif @@ -1,7 +1,10 @@ - - + + + + + @@ -70,14 +73,5 @@ - - - - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/aacute.glif index f0795a436..f11a4d602 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/aacute.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/acutecmb.cap.glif index 2c31a87fb..229b35507 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/acutecmb.cap.glif @@ -1,5 +1,6 @@ - - + + + @@ -19,8 +20,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/acutecmb.glif index f1ded6811..b93f8065f 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/acutecmb.glif @@ -1,6 +1,7 @@ - - + + + @@ -20,8 +21,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/adieresis.glif index 8bbebbe20..474f094ac 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/adieresis.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/atilde.glif index 8ac21d4c2..bf0c1827b 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/atilde.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/contents.plist index 3c13e1fa0..f140c9be6 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/contents.plist +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/contents.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/dieresiscmb.cap.glif index 14e481fd5..969465d44 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/dieresiscmb.cap.glif @@ -1,5 +1,6 @@ - - + + + @@ -29,8 +30,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/dieresiscmb.glif index 1f3d03c1b..c3013507f 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/dieresiscmb.glif @@ -1,6 +1,8 @@ - - + + + + @@ -30,11 +32,5 @@ - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/tildecmb.cap.glif index 00a736c57..3e4b882e5 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/tildecmb.cap.glif @@ -1,5 +1,6 @@ - - + + + @@ -29,8 +30,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/tildecmb.glif index fdd5eb354..0cfca0884 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/tildecmb.glif @@ -1,6 +1,7 @@ - - + + + @@ -30,8 +31,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/y.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/y.glif index 62f2d6cec..3e0d76764 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/y.glif @@ -1,7 +1,9 @@ - - + + + + @@ -49,11 +51,5 @@ - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/yacute.glif index ee69931d6..1259f656b 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/yacute.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/ydieresis.glif index e7d602258..4f3f23a84 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/ydieresis.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/ytilde.glif index f15b192ba..2d36ce23c 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs/ytilde.glif @@ -1,5 +1,5 @@ - - + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/bold.ufo/groups.plist index 013b69729..ca1a568cf 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/groups.plist +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/groups.plist @@ -1,57 +1,57 @@ - + - @MMK_L_LAT_A + public.kern1.LAT_A A Aacute Adieresis Atilde - @MMK_L_LAT_Y + public.kern1.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_L_LAT_a + public.kern1.LAT_a a aacute adieresis atilde - @MMK_L_LAT_v + public.kern1.LAT_v y yacute ydieresis ytilde - @MMK_R_LAT_A + public.kern2.LAT_A A Aacute Adieresis Atilde - @MMK_R_LAT_Y + public.kern2.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_R_LAT_a + public.kern2.LAT_a a aacute adieresis atilde - @MMK_R_LAT_y + public.kern2.LAT_y y yacute diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/kerning.plist b/tests/makeinstancesufo_data/expected_output/bold.ufo/kerning.plist index 296d30489..d660738d8 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/kerning.plist +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/kerning.plist @@ -1,51 +1,51 @@ - + - @MMK_L_LAT_A + public.kern1.LAT_A - @MMK_R_LAT_A + public.kern2.LAT_A 3 - @MMK_R_LAT_Y + public.kern2.LAT_Y -90 - @MMK_R_LAT_a + public.kern2.LAT_a -9 - @MMK_R_LAT_y + public.kern2.LAT_y -57 - @MMK_L_LAT_Y + public.kern1.LAT_Y - @MMK_R_LAT_A - -97 - @MMK_R_LAT_Y - 7 - @MMK_R_LAT_a - -80 - @MMK_R_LAT_y - -56 adieresis -58 atilde -74 + public.kern2.LAT_A + -97 + public.kern2.LAT_Y + 7 + public.kern2.LAT_a + -80 + public.kern2.LAT_y + -56 - @MMK_L_LAT_a + public.kern1.LAT_a - @MMK_R_LAT_A + public.kern2.LAT_A 3 - @MMK_R_LAT_Y + public.kern2.LAT_Y -73 - @MMK_R_LAT_y + public.kern2.LAT_y -17 - @MMK_L_LAT_v + public.kern1.LAT_v - @MMK_R_LAT_A + public.kern2.LAT_A -92 - @MMK_R_LAT_Y + public.kern2.LAT_Y -57 - @MMK_R_LAT_a + public.kern2.LAT_a -26 - @MMK_R_LAT_y + public.kern2.LAT_y -4 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/layercontents.plist b/tests/makeinstancesufo_data/expected_output/bold.ufo/layercontents.plist index 7b58e8f22..b07680883 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/layercontents.plist +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/layercontents.plist @@ -1,14 +1,14 @@ - + - - - public.default - glyphs - - - com.adobe.type.processedglyphs - glyphs.com.adobe.type.processedglyphs - - + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/lib.plist b/tests/makeinstancesufo_data/expected_output/bold.ufo/lib.plist index 2ec6ba72b..21c25767b 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/lib.plist +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/lib.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/metainfo.plist b/tests/makeinstancesufo_data/expected_output/bold.ufo/metainfo.plist index 58145b5a1..7b8b34ac6 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/metainfo.plist +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/metainfo.plist @@ -1,10 +1,10 @@ - + creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion - 2 + 3 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/extralight.ufo/fontinfo.plist index 7a72ef86d..b356e7c1f 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/fontinfo.plist @@ -12,8 +12,17 @@ -245 familyName Source Serif Pro + guidelines + + italicAngle 0 + openTypeHheaAscender + 1036 + openTypeHheaDescender + -335 + openTypeHheaLineGap + 0 openTypeNameDesigner Frank Grießhammer openTypeNameLicense @@ -48,6 +57,12 @@ 2 4 + openTypeOS2TypoAscender + 730 + openTypeOS2TypoDescender + -270 + openTypeOS2TypoLineGap + 0 openTypeOS2UnicodeRanges 0 @@ -62,6 +77,10 @@ openTypeOS2VendorID ADBO + openTypeOS2WinAscent + 1036 + openTypeOS2WinDescent + 335 postscriptBlueFuzz 0 postscriptBlueScale diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 88cccf878..9b7553267 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -1,86 +1,86 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - w653l120l2100l21020l12225l192247l443247l51626l40320l4030l6510l65120l54725l327684l307684l9326l1220l198267l315636l436267 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 - vstem 12 639 - - - - pointTag - hintSet0006 - stems - - hstem 0 23 - hstem 247 20 - hstem 684 -20 - vstem 12 639 - - - - pointTag - hintSet0008 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 - vstem 12 639 - - - - pointTag - hintSet0014 - stems - - hstem 0 23 - hstem 247 20 - hstem 636 48 - vstem 12 639 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 22.5 + hstem 247 20 + hstem 684 -20 + vstem 12 639 + + + + pointTag + hintSet0006 + stems + + hstem 0 23 + hstem 247 20 + hstem 684 -20 + vstem 12 639 + + + + pointTag + hintSet0008 + stems + + hstem 0 22.5 + hstem 247 20 + hstem 684 -20 + vstem 12 639 + + + + pointTag + hintSet0014 + stems + + hstem 0 23 + hstem 247 20 + hstem 636 48 + vstem 12 639 + + + + id + w653l120l2100l21020l12225l192247l443247l51626l40320l4030l6510l65120l54725l327684l307684l9326l1220l198267l315636l436267 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index 0c3bd167b..62b849725 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -1,120 +1,120 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 69f4a502f88806fc30aaa7c9acc18c04e3c0764c2da1d142ddf1ba4d6da0b2ae542e8be77548850a408dc37df7cfd81744bc7fe3d80f289a01de239543fc6e6b - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 - hstem 741 -20 - vstem 12 639 - - - - pointTag - hintSet0001 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 636 48 - hstem 741 -20 - vstem 12 639 - - - - pointTag - hintSet0009 - stems - - hstem 0 23 - hstem 247 20 - hstem 684 -20 - hstem 741 -20 - vstem 12 639 - - - - pointTag - hintSet0011 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 - hstem 741 -20 - vstem 12 639 - - - - pointTag - hintSet0017 - stems - - hstem 0 23 - hstem 247 20 - hstem 684 -20 - hstem 741 -20 - vstem 12 639 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 22.5 + hstem 247 20 + hstem 684 -20 + hstem 741 -20 + vstem 12 639 + + + + pointTag + hintSet0001 + stems + + hstem 0 22.5 + hstem 247 20 + hstem 636 48 + hstem 741 -20 + vstem 12 639 + + + + pointTag + hintSet0009 + stems + + hstem 0 23 + hstem 247 20 + hstem 684 -20 + hstem 741 -20 + vstem 12 639 + + + + pointTag + hintSet0011 + stems + + hstem 0 22.5 + hstem 247 20 + hstem 684 -20 + hstem 741 -20 + vstem 12 639 + + + + pointTag + hintSet0017 + stems + + hstem 0 23 + hstem 247 20 + hstem 684 -20 + hstem 741 -20 + vstem 12 639 + + + + id + 69f4a502f88806fc30aaa7c9acc18c04e3c0764c2da1d142ddf1ba4d6da0b2ae542e8be77548850a408dc37df7cfd81744bc7fe3d80f289a01de239543fc6e6b + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index b7fafb934..9d6bfe3ec 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -1,122 +1,122 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 8afcc2c888a99790dc3f62872c4e90d38ac3e1203b91b34ff9866077ca79e6cbbf610f4984be04235dd04b82323ea85804c59dd79550c158dd73306c20e6d39a - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 - hstem 756 64 - vstem 177 64 - vstem 383 64 - - - - pointTag - hintSet0006 - stems - - hstem 0 23 - hstem 247 20 - hstem 684 -20 - hstem 756 64 - vstem 177 64 - vstem 383 64 - - - - pointTag - hintSet0008 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 - hstem 756 64 - vstem 177 64 - vstem 383 64 - - - - pointTag - hintSet0014 - stems - - hstem 0 23 - hstem 247 20 - hstem 636 48 - hstem 756 64 - vstem 177 64 - vstem 383 64 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 22.5 + hstem 247 20 + hstem 684 -20 + hstem 756 64 + vstem 177 64 + vstem 383 64 + + + + pointTag + hintSet0006 + stems + + hstem 0 23 + hstem 247 20 + hstem 684 -20 + hstem 756 64 + vstem 177 64 + vstem 383 64 + + + + pointTag + hintSet0008 + stems + + hstem 0 22.5 + hstem 247 20 + hstem 684 -20 + hstem 756 64 + vstem 177 64 + vstem 383 64 + + + + pointTag + hintSet0014 + stems + + hstem 0 23 + hstem 247 20 + hstem 636 48 + hstem 756 64 + vstem 177 64 + vstem 383 64 + + + + id + 8afcc2c888a99790dc3f62872c4e90d38ac3e1203b91b34ff9866077ca79e6cbbf610f4984be04235dd04b82323ea85804c59dd79550c158dd73306c20e6d39a + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 97123f081..15337c4f8 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -1,148 +1,148 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 919772c12e1a23d9bdb9b27caecfbb4de27a5b7a9326b9b583401373a071f2e638680fe693a5c896ed5994de5b4818d3e914c826b8ac4b805075d4c3607247f3 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 - hstem 753 -20 - hstem 822 23 - vstem 12 639 - - - - pointTag - hintSet0006 - stems - - hstem 0 23 - hstem 247 20 - hstem 684 -20 - hstem 753 -20 - hstem 822 23 - vstem 12 639 - - - - pointTag - hintSet0008 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 - hstem 753 -20 - hstem 822 23 - vstem 12 639 - - - - pointTag - hintSet0014 - stems - - hstem 0 23 - hstem 247 20 - hstem 636 48 - hstem 753 -20 - hstem 822 23 - vstem 12 639 - - - - pointTag - hintSet0023 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 - hstem 741 23 - hstem 822 23 - vstem 12 639 - - - - pointTag - hintSet0029 - stems - - hstem 0 23 - hstem 247 20 - hstem 636 48 - hstem 753 -20 - hstem 822 23 - vstem 12 639 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 22.5 + hstem 247 20 + hstem 684 -20 + hstem 753 -20 + hstem 822 23 + vstem 12 639 + + + + pointTag + hintSet0006 + stems + + hstem 0 23 + hstem 247 20 + hstem 684 -20 + hstem 753 -20 + hstem 822 23 + vstem 12 639 + + + + pointTag + hintSet0008 + stems + + hstem 0 22.5 + hstem 247 20 + hstem 684 -20 + hstem 753 -20 + hstem 822 23 + vstem 12 639 + + + + pointTag + hintSet0014 + stems + + hstem 0 23 + hstem 247 20 + hstem 636 48 + hstem 753 -20 + hstem 822 23 + vstem 12 639 + + + + pointTag + hintSet0023 + stems + + hstem 0 22.5 + hstem 247 20 + hstem 684 -20 + hstem 741 23 + hstem 822 23 + vstem 12 639 + + + + pointTag + hintSet0029 + stems + + hstem 0 23 + hstem 247 20 + hstem 636 48 + hstem 753 -20 + hstem 822 23 + vstem 12 639 + + + + id + 919772c12e1a23d9bdb9b27caecfbb4de27a5b7a9326b9b583401373a071f2e638680fe693a5c896ed5994de5b4818d3e914c826b8ac4b805075d4c3607247f3 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index 190584f73..aa9f43b9d 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -1,76 +1,76 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 7193043de577bb93e874e3090271a9445fcf21d8829d3295811a45c0cf2621772eccc82651db6f13848eac2c2216171ca84be4e3c5e6fa93478c56d4dc2fd43c - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 23 - hstem 653.5 23.5 - vstem 303 30 - - - - pointTag - hintSet0007 - stems - - hstem 0 23 - hstem 654 23 - vstem 303 30 - - - - pointTag - hintSet0019 - stems - - hstem 0 23 - hstem 653.5 23.5 - vstem 303 30 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 23 + hstem 653.5 23.5 + vstem 303 30 + + + + pointTag + hintSet0007 + stems + + hstem 0 23 + hstem 654 23 + vstem 303 30 + + + + pointTag + hintSet0019 + stems + + hstem 0 23 + hstem 653.5 23.5 + vstem 303 30 + + + + id + 7193043de577bb93e874e3090271a9445fcf21d8829d3295811a45c0cf2621772eccc82651db6f13848eac2c2216171ca84be4e3c5e6fa93478c56d4dc2fd43c + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index c5d150905..6ba9a7f1e 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -1,97 +1,97 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 4d5e776203ad5b98d180bfeb1d5c39681f4f54b050768dfd8c44a9e92197e4616c9e7657a64df0cd838201e8bce1760fc90beff5c13f66fbeb4b2a1d2ba9fdcb - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 741 -20 - vstem 303 30 - - - - pointTag - hintSet0007 - stems - - hstem 0 23 - hstem 654 23 - hstem 741 -20 - vstem 303 30 - - - - pointTag - hintSet0019 - stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 741 -20 - vstem 303 30 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 23 + hstem 653.5 23.5 + hstem 741 -20 + vstem 303 30 + + + + pointTag + hintSet0007 + stems + + hstem 0 23 + hstem 654 23 + hstem 741 -20 + vstem 303 30 + + + + pointTag + hintSet0019 + stems + + hstem 0 23 + hstem 653.5 23.5 + hstem 741 -20 + vstem 303 30 + + + + id + 4d5e776203ad5b98d180bfeb1d5c39681f4f54b050768dfd8c44a9e92197e4616c9e7657a64df0cd838201e8bce1760fc90beff5c13f66fbeb4b2a1d2ba9fdcb + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index 6bc71c5ca..a199011c6 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -1,107 +1,107 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 3ca8da23edf339bea4e1e5643bf398b56d3de7184feed4092882219037b449aca2fde8b524e1c9c9d9468b819cc3813997102c5997e8e54073aeb0a220a665da - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 23 - hstem 653.5 23.5 - vstem 303 30 - - - - pointTag - hintSet0007 - stems - - hstem 0 23 - hstem 654 23 - vstem 303 30 - - - - pointTag - hintSet0019 - stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 756 64 - vstem 195 64 - vstem 303 30 - vstem 401 64 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 23 + hstem 653.5 23.5 + vstem 303 30 + + + + pointTag + hintSet0007 + stems + + hstem 0 23 + hstem 654 23 + vstem 303 30 + + + + pointTag + hintSet0019 + stems + + hstem 0 23 + hstem 653.5 23.5 + hstem 756 64 + vstem 195 64 + vstem 303 30 + vstem 401 64 + + + + id + 3ca8da23edf339bea4e1e5643bf398b56d3de7184feed4092882219037b449aca2fde8b524e1c9c9d9468b819cc3813997102c5997e8e54073aeb0a220a665da + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index 9e4477782..da9f90309 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -1,134 +1,134 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 368eccd07fb0b1d6e6df2613b0520dccf95af14ce4e36d28cbe9c42da8fed82b872853b9d2bca404f0407817db487ff5abf099117ab91df93ad319e82e18a19d - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 753 -20 - hstem 822 23 - vstem 303 30 - - - - pointTag - hintSet0007 - stems - - hstem 0 23 - hstem 654 23 - hstem 753 -20 - hstem 822 23 - vstem 303 30 - - - - pointTag - hintSet0019 - stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 753 -20 - hstem 822 23 - vstem 303 30 - - - - pointTag - hintSet0025 - stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 741 23 - hstem 822 23 - vstem 303 30 - - - - pointTag - hintSet0031 - stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 753 -20 - hstem 822 23 - vstem 303 30 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 23 + hstem 653.5 23.5 + hstem 753 -20 + hstem 822 23 + vstem 303 30 + + + + pointTag + hintSet0007 + stems + + hstem 0 23 + hstem 654 23 + hstem 753 -20 + hstem 822 23 + vstem 303 30 + + + + pointTag + hintSet0019 + stems + + hstem 0 23 + hstem 653.5 23.5 + hstem 753 -20 + hstem 822 23 + vstem 303 30 + + + + pointTag + hintSet0025 + stems + + hstem 0 23 + hstem 653.5 23.5 + hstem 741 23 + hstem 822 23 + vstem 303 30 + + + + pointTag + hintSet0031 + stems + + hstem 0 23 + hstem 653.5 23.5 + hstem 753 -20 + hstem 822 23 + vstem 303 30 + + + + id + 368eccd07fb0b1d6e6df2613b0520dccf95af14ce4e36d28cbe9c42da8fed82b872853b9d2bca404f0407817db487ff5abf099117ab91df93ad319e82e18a19d + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index 9d57d2d49..e8240776e 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -1,126 +1,126 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 24f5c9f7d58cdd34f0162f35e3f8b5d3507b9c14032e0026b527c432b00d4d2a11e8064eecc83a37e4d12c5dd529ea4eb496a99a77fe975c77f7c9766de6c2e5 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -13 26 - hstem 463 20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0002 - stems - - hstem -13 24 - hstem 463 20 - vstem 57 30 - vstem 355 28 - - - - pointTag - hintSet0016 - stems - - hstem -13 26 - hstem 463 20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0019 - stems - - hstem -13 26 - hstem 463 20 - vstem 57 30 - vstem 355 28 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -13 26 + hstem 463 20 + vstem 57 30 + vstem 356 27 + + + + pointTag + hintSet0002 + stems + + hstem -13 24 + hstem 463 20 + vstem 57 30 + vstem 355 28 + + + + pointTag + hintSet0016 + stems + + hstem -13 26 + hstem 463 20 + vstem 57 30 + vstem 356 27 + + + + pointTag + hintSet0019 + stems + + hstem -13 26 + hstem 463 20 + vstem 57 30 + vstem 355 28 + + + + id + 24f5c9f7d58cdd34f0162f35e3f8b5d3507b9c14032e0026b527c432b00d4d2a11e8064eecc83a37e4d12c5dd529ea4eb496a99a77fe975c77f7c9766de6c2e5 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index 06654ad8d..ee4cc321a 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -1,172 +1,172 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - fc7d5bfa5ccef51b3f66dc7d43d246344f7202ec80313be80af7e841a6ce34d327136a9947dcf7f3d5961de23c62d4b9d7852140708f075ea597380b4596385a - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -13 26 - hstem 463 20 - hstem 738 -20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0002 - stems - - hstem -13 24 - hstem 463 20 - hstem 738 -20 - vstem 57 30 - vstem 355 28 - - - - pointTag - hintSet0016 - stems - - hstem -13 26 - hstem 463 20 - hstem 738 -20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0021 - stems - - hstem -13 26 - hstem 463 20 - hstem 738 -20 - vstem 57 30 - vstem 355 28 - - - - pointTag - hintSet0025 - stems - - hstem -13 26 - hstem 463 20 - hstem 738 -20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0026 - stems - - hstem -13 26 - hstem 463 20 - hstem 738 -20 - vstem 57 30 - vstem 355 28 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -13 26 + hstem 463 20 + hstem 738 -20 + vstem 57 30 + vstem 356 27 + + + + pointTag + hintSet0002 + stems + + hstem -13 24 + hstem 463 20 + hstem 738 -20 + vstem 57 30 + vstem 355 28 + + + + pointTag + hintSet0016 + stems + + hstem -13 26 + hstem 463 20 + hstem 738 -20 + vstem 57 30 + vstem 356 27 + + + + pointTag + hintSet0021 + stems + + hstem -13 26 + hstem 463 20 + hstem 738 -20 + vstem 57 30 + vstem 355 28 + + + + pointTag + hintSet0025 + stems + + hstem -13 26 + hstem 463 20 + hstem 738 -20 + vstem 57 30 + vstem 356 27 + + + + pointTag + hintSet0026 + stems + + hstem -13 26 + hstem 463 20 + hstem 738 -20 + vstem 57 30 + vstem 355 28 + + + + id + fc7d5bfa5ccef51b3f66dc7d43d246344f7202ec80313be80af7e841a6ce34d327136a9947dcf7f3d5961de23c62d4b9d7852140708f075ea597380b4596385a + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index 2c7d88d5d..113c6a78b 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -1,44 +1,45 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - w1000c-44741l-36730375442779c79802112822124830c124842124852116859c1068599685987852c5982928803-8772 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 741 -20 - vstem -44 168 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 741 -20 + vstem -44 168 + + + + id + w1000c-44741l-36730375442779c79802112822124830c124842124852116859c1068599685987852c5982928803-8772 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index aa7a4492b..03ef75a0b 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -1,45 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - w1000c-45572l-34563860649650c7868198702107711c10772110773299738c907388073874730c5770729671-8621 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 738 -20 - vstem -45 152 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 738 -20 + vstem -45 152 + + + + id + w1000c-45572l-34563860649650c7868198702107711c10772110773299738c907388073874730c5770729671-8621 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index a728fc6d8..6b740a160 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -1,180 +1,180 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 463de1cbf298c1c7c2f67d87a149ba056d1cf37ee22b552c80c7a745c57a00669ee8aeddeecd67126fe85df1f02706ccf1edb5a2a580150b05e190fbfbd0a366 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -13 26 - hstem 463 20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0002 - stems - - hstem -13 24 - hstem 463 20 - vstem 57 30 - vstem 355 28 - - - - pointTag - hintSet0016 - stems - - hstem -13 26 - hstem 463 20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0019 - stems - - hstem -13 26 - hstem 463 20 - hstem 644 59 - vstem 57 30 - vstem 119 58 - vstem 307 58 - - - - pointTag - hintSet0031 - stems - - hstem -13 26 - hstem 463 20 - vstem 57 30 - vstem 355 28 - - - - pointTag - hintSet0034 - stems - - hstem -13 26 - hstem 463 20 - hstem 644 59 - vstem 57 30 - vstem 119 58 - vstem 307 58 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -13 26 + hstem 463 20 + vstem 57 30 + vstem 356 27 + + + + pointTag + hintSet0002 + stems + + hstem -13 24 + hstem 463 20 + vstem 57 30 + vstem 355 28 + + + + pointTag + hintSet0016 + stems + + hstem -13 26 + hstem 463 20 + vstem 57 30 + vstem 356 27 + + + + pointTag + hintSet0019 + stems + + hstem -13 26 + hstem 463 20 + hstem 644 59 + vstem 57 30 + vstem 119 58 + vstem 307 58 + + + + pointTag + hintSet0031 + stems + + hstem -13 26 + hstem 463 20 + vstem 57 30 + vstem 355 28 + + + + pointTag + hintSet0034 + stems + + hstem -13 26 + hstem 463 20 + hstem 644 59 + vstem 57 30 + vstem 119 58 + vstem 307 58 + + + + id + 463de1cbf298c1c7c2f67d87a149ba056d1cf37ee22b552c80c7a745c57a00669ee8aeddeecd67126fe85df1f02706ccf1edb5a2a580150b05e190fbfbd0a366 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index 783b1048f..49d70f532 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -1,214 +1,214 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - bad6026f637063a663f006162251db60f262035821bd5d7c30b14a452b61caf4ab7e4ac8ebe2c28a7ff524044fb17a6055c3616e1fb66cd4941b367d03b32b86 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -13 26 - hstem 463 20 - hstem 588 23 - hstem 684 -20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0002 - stems - - hstem -13 24 - hstem 463 20 - hstem 588 23 - hstem 684 -20 - vstem 57 30 - vstem 355 28 - - - - pointTag - hintSet0016 - stems - - hstem -13 26 - hstem 463 20 - hstem 588 23 - hstem 684 -20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0019 - stems - - hstem -13 26 - hstem 463 20 - hstem 588 23 - hstem 669 23 - vstem 57 30 - vstem 355 28 - - - - pointTag - hintSet0024 - stems - - hstem -13 26 - hstem 463 20 - hstem 588 23 - hstem 679 -20 - vstem 57 30 - vstem 355 28 - - - - pointTag - hintSet0025 - stems - - hstem -13 26 - hstem 463 20 - hstem 588 23 - hstem 684 -20 - vstem 57 30 - vstem 355 28 - - - - pointTag - hintSet0028 - stems - - hstem -13 26 - hstem 463 20 - hstem 588 23 - hstem 669 23 - vstem 57 30 - vstem 355 28 - - - - pointTag - hintSet0030 - stems - - hstem -13 26 - hstem 463 20 - hstem 588 23 - hstem 684 -20 - vstem 57 30 - vstem 355 28 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -13 26 + hstem 463 20 + hstem 588 23 + hstem 684 -20 + vstem 57 30 + vstem 356 27 + + + + pointTag + hintSet0002 + stems + + hstem -13 24 + hstem 463 20 + hstem 588 23 + hstem 684 -20 + vstem 57 30 + vstem 355 28 + + + + pointTag + hintSet0016 + stems + + hstem -13 26 + hstem 463 20 + hstem 588 23 + hstem 684 -20 + vstem 57 30 + vstem 356 27 + + + + pointTag + hintSet0019 + stems + + hstem -13 26 + hstem 463 20 + hstem 588 23 + hstem 669 23 + vstem 57 30 + vstem 355 28 + + + + pointTag + hintSet0024 + stems + + hstem -13 26 + hstem 463 20 + hstem 588 23 + hstem 679 -20 + vstem 57 30 + vstem 355 28 + + + + pointTag + hintSet0025 + stems + + hstem -13 26 + hstem 463 20 + hstem 588 23 + hstem 684 -20 + vstem 57 30 + vstem 355 28 + + + + pointTag + hintSet0028 + stems + + hstem -13 26 + hstem 463 20 + hstem 588 23 + hstem 669 23 + vstem 57 30 + vstem 355 28 + + + + pointTag + hintSet0030 + stems + + hstem -13 26 + hstem 463 20 + hstem 588 23 + hstem 684 -20 + vstem 57 30 + vstem 355 28 + + + + id + bad6026f637063a663f006162251db60f262035821bd5d7c30b14a452b61caf4ab7e4ac8ebe2c28a7ff524044fb17a6055c3616e1fb66cd4941b367d03b32b86 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist index bf3d7b78c..d4b4a3da7 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -1,50 +1,50 @@ - - A - A_.glif - Aacute - A_acute.glif - Adieresis - A_dieresis.glif - Atilde - A_tilde.glif - Y - Y_.glif - Yacute - Y_acute.glif - Ydieresis - Y_dieresis.glif - Ytilde - Y_tilde.glif - a - a.glif - aacute - aacute.glif - acutecmb - acutecmb.glif - acutecmb.cap - acutecmb.cap.glif - adieresis - adieresis.glif - atilde - atilde.glif - dieresiscmb - dieresiscmb.glif - dieresiscmb.cap - dieresiscmb.cap.glif - tildecmb - tildecmb.glif - tildecmb.cap - tildecmb.cap.glif - y - y.glif - yacute - yacute.glif - ydieresis - ydieresis.glif - ytilde - ytilde.glif - + + A + A_.glif + Aacute + A_acute.glif + Adieresis + A_dieresis.glif + Atilde + A_tilde.glif + Y + Y_.glif + Yacute + Y_acute.glif + Ydieresis + Y_dieresis.glif + Ytilde + Y_tilde.glif + a + a.glif + aacute + aacute.glif + acutecmb + acutecmb.glif + acutecmb.cap + acutecmb.cap.glif + adieresis + adieresis.glif + atilde + atilde.glif + dieresiscmb + dieresiscmb.glif + dieresiscmb.cap + dieresiscmb.cap.glif + tildecmb + tildecmb.glif + tildecmb.cap + tildecmb.cap.glif + y + y.glif + yacute + yacute.glif + ydieresis + ydieresis.glif + ytilde + ytilde.glif + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index e57a97fa8..0fbf698bb 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -1,55 +1,56 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - ae7208825b91f92f71c1a6d1c2dd80ee0e4ac3a84e99a3873ac7647d8dd7c455a1d3fc8c0a803da5bc52c95fb00a58e1b00e13415ef4da4ff6dc9e4431279017 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 756 64 - vstem -135 64 - vstem 71 64 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 756 64 + vstem -135 64 + vstem 71 64 + + + + id + ae7208825b91f92f71c1a6d1c2dd80ee0e4ac3a84e99a3873ac7647d8dd7c455a1d3fc8c0a803da5bc52c95fb00a58e1b00e13415ef4da4ff6dc9e4431279017 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index 418c45584..ed26d1ace 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -1,56 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - b4871aa31a584b49d815c5954e1a28bcd10ea4908e807b6962acde3ad75125cc3ae5412bfc70f7bb4d781f37cfa13fe1a366e7ec5582cfddffb67bf1039fda1c - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 644 59 - vstem -123 58 - vstem 65 58 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 644 59 + vstem -123 58 + vstem 65 58 + + + + id + b4871aa31a584b49d815c5954e1a28bcd10ea4908e807b6962acde3ad75125cc3ae5412bfc70f7bb4d781f37cfa13fe1a366e7ec5582cfddffb67bf1039fda1c + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist new file mode 100644 index 000000000..aa5f6f5fe --- /dev/null +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist @@ -0,0 +1,12 @@ + + + + + lib + + org.unifiedfontobject.normalizer.imageReferences + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index 51bcd4ebf..288989b44 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -1,75 +1,76 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 9d2195aba16d1ebbffd81a2077eb61443f3400cc035084547d95cf6637270f0b6142315de976cf0147b7e95d418b8c022a2c73d3c7ccf2cb1dad366fe068b4f2 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 753 -20 - hstem 822 23 - vstem -164 328 - - - - pointTag - hintSet0004 - stems - - hstem 741 23 - hstem 822 23 - vstem -164 328 - - - - pointTag - hintSet0010 - stems - - hstem 753 -20 - hstem 822 23 - vstem -164 328 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 753 -20 + hstem 822 23 + vstem -164 328 + + + + pointTag + hintSet0004 + stems + + hstem 741 23 + hstem 822 23 + vstem -164 328 + + + + pointTag + hintSet0010 + stems + + hstem 753 -20 + hstem 822 23 + vstem -164 328 + + + + id + 9d2195aba16d1ebbffd81a2077eb61443f3400cc035084547d95cf6637270f0b6142315de976cf0147b7e95d418b8c022a2c73d3c7ccf2cb1dad366fe068b4f2 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index b363450ef..8a0974ec2 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -1,86 +1,87 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 1d0795336315f07baa02eda9bb2a5ef2bc63dbf5c3374f46dac8993be0f6c881fec47bf0c823746fba3ccd234f3a67e7796796196873510326292b724704a7bd - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 588 23 - hstem 669 23 - vstem -148 296 - - - - pointTag - hintSet0005 - stems - - hstem 588 23 - hstem 679 -20 - vstem -148 296 - - - - pointTag - hintSet0006 - stems - - hstem 588 23 - hstem 684 -20 - vstem -148 296 - - - - pointTag - hintSet0009 - stems - - hstem 588 23 - hstem 669 23 - vstem -148 296 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 588 23 + hstem 669 23 + vstem -148 296 + + + + pointTag + hintSet0005 + stems + + hstem 588 23 + hstem 679 -20 + vstem -148 296 + + + + pointTag + hintSet0006 + stems + + hstem 588 23 + hstem 684 -20 + vstem -148 296 + + + + pointTag + hintSet0009 + stems + + hstem 588 23 + hstem 669 23 + vstem -148 296 + + + + id + 1d0795336315f07baa02eda9bb2a5ef2bc63dbf5c3374f46dac8993be0f6c881fec47bf0c823746fba3ccd234f3a67e7796796196873510326292b724704a7bd + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index 39865af9a..bef86cb77 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -1,103 +1,103 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 6e5529221efe33d1e5eb47f9ed865c557ef2a20eb8c993b1cf0214243cb02a7ffd2ee22b4149dce842f644d828679e476b2e782f13d16254b4a72bc056798aed - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -255 22 - hstem 447.5 22.5 - vstem -19 512 - - - - pointTag - hintSet0002 - stems - - hstem -255 22 - hstem 447.5 22.5 - vstem 310 183 - - - - pointTag - hintSet0006 - stems - - hstem -255 22 - hstem 447 23 - vstem -14 194 - vstem 310 183 - - - - pointTag - hintSet0009 - stems - - hstem -255 22 - hstem 447.5 22.5 - vstem -14 194 - - - - pointTag - hintSet0021 - stems - - hstem -255 22 - hstem 447.5 22.5 - vstem -19 512 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -255 22 + hstem 447.5 22.5 + vstem -19 512 + + + + pointTag + hintSet0002 + stems + + hstem -255 22 + hstem 447.5 22.5 + vstem 310 183 + + + + pointTag + hintSet0006 + stems + + hstem -255 22 + hstem 447 23 + vstem -14 194 + vstem 310 183 + + + + pointTag + hintSet0009 + stems + + hstem -255 22 + hstem 447.5 22.5 + vstem -14 194 + + + + pointTag + hintSet0021 + stems + + hstem -255 22 + hstem 447.5 22.5 + vstem -19 512 + + + + id + 6e5529221efe33d1e5eb47f9ed865c557ef2a20eb8c993b1cf0214243cb02a7ffd2ee22b4149dce842f644d828679e476b2e782f13d16254b4a72bc056798aed + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index 803073464..b20338dee 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -1,126 +1,126 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 7266a30d7da1548037f215ec2b11697ea93ad687dd4e0860d9a9469ea77d72161937ecaa32d07f9e69761203fea0305bb4bad5683a7447382f96de3996ff6999 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 738 -20 - vstem -19 512 - - - - pointTag - hintSet0002 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 738 -20 - vstem 310 183 - - - - pointTag - hintSet0006 - stems - - hstem -255 22 - hstem 447 23 - hstem 738 -20 - vstem -14 194 - vstem 310 183 - - - - pointTag - hintSet0009 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 738 -20 - vstem -14 194 - - - - pointTag - hintSet0021 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 738 -20 - vstem -19 512 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 738 -20 + vstem -19 512 + + + + pointTag + hintSet0002 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 738 -20 + vstem 310 183 + + + + pointTag + hintSet0006 + stems + + hstem -255 22 + hstem 447 23 + hstem 738 -20 + vstem -14 194 + vstem 310 183 + + + + pointTag + hintSet0009 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 738 -20 + vstem -14 194 + + + + pointTag + hintSet0021 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 738 -20 + vstem -19 512 + + + + id + 7266a30d7da1548037f215ec2b11697ea93ad687dd4e0860d9a9469ea77d72161937ecaa32d07f9e69761203fea0305bb4bad5683a7447382f96de3996ff6999 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index be0ba2a2a..aedb6adb4 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -1,140 +1,140 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - b44c09b0e2787f7b0e76bd9ccb1b3b50ce05874b20f3de65149efae40965e8331deac4461c1a57cefcbfccc24a01690249118c4084c86f1759407fc5d515715e - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 644 59 - vstem 133 58 - vstem 321 58 - - - - pointTag - hintSet0002 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 644 59 - vstem 133 58 - vstem 310 183 - - - - pointTag - hintSet0006 - stems - - hstem -255 22 - hstem 447 23 - hstem 644 59 - vstem -14 194 - vstem 310 183 - - - - pointTag - hintSet0009 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 644 59 - vstem -14 194 - vstem 321 58 - - - - pointTag - hintSet0021 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 644 59 - vstem 133 58 - vstem 321 58 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 644 59 + vstem 133 58 + vstem 321 58 + + + + pointTag + hintSet0002 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 644 59 + vstem 133 58 + vstem 310 183 + + + + pointTag + hintSet0006 + stems + + hstem -255 22 + hstem 447 23 + hstem 644 59 + vstem -14 194 + vstem 310 183 + + + + pointTag + hintSet0009 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 644 59 + vstem -14 194 + vstem 321 58 + + + + pointTag + hintSet0021 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 644 59 + vstem 133 58 + vstem 321 58 + + + + id + b44c09b0e2787f7b0e76bd9ccb1b3b50ce05874b20f3de65149efae40965e8331deac4461c1a57cefcbfccc24a01690249118c4084c86f1759407fc5d515715e + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index d09210e43..1f3375e0c 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -1,189 +1,189 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 09e0e26fc9c3a77ecf692f19b7ed34a0859cf8e9566febec9f12d0bdefba0b2203e0f03d14b9ce4ca656400b4bb9005caf7e176e255c2d6427a0cfc9ff041dd3 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 588 23 - hstem 684 -20 - vstem -19 512 - - - - pointTag - hintSet0002 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 588 23 - hstem 684 -20 - vstem 310 183 - - - - pointTag - hintSet0006 - stems - - hstem -255 22 - hstem 447 23 - hstem 588 23 - hstem 684 -20 - vstem -14 194 - vstem 310 183 - - - - pointTag - hintSet0009 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 588 23 - hstem 684 -20 - vstem -14 194 - - - - pointTag - hintSet0021 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 588 23 - hstem 684 -20 - vstem -19 512 - - - - pointTag - hintSet0022 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 588 23 - hstem 669 23 - vstem -19 512 - - - - pointTag - hintSet0027 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 588 23 - hstem 679 -20 - vstem -19 512 - - - - pointTag - hintSet0028 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 588 23 - hstem 684 -20 - vstem -19 512 - - - - pointTag - hintSet0031 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 588 23 - hstem 669 23 - vstem -19 512 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 588 23 + hstem 684 -20 + vstem -19 512 + + + + pointTag + hintSet0002 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 588 23 + hstem 684 -20 + vstem 310 183 + + + + pointTag + hintSet0006 + stems + + hstem -255 22 + hstem 447 23 + hstem 588 23 + hstem 684 -20 + vstem -14 194 + vstem 310 183 + + + + pointTag + hintSet0009 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 588 23 + hstem 684 -20 + vstem -14 194 + + + + pointTag + hintSet0021 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 588 23 + hstem 684 -20 + vstem -19 512 + + + + pointTag + hintSet0022 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 588 23 + hstem 669 23 + vstem -19 512 + + + + pointTag + hintSet0027 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 588 23 + hstem 679 -20 + vstem -19 512 + + + + pointTag + hintSet0028 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 588 23 + hstem 684 -20 + vstem -19 512 + + + + pointTag + hintSet0031 + stems + + hstem -255 22 + hstem 447.5 22.5 + hstem 588 23 + hstem 669 23 + vstem -19 512 + + + + id + 09e0e26fc9c3a77ecf692f19b7ed34a0859cf8e9566febec9f12d0bdefba0b2203e0f03d14b9ce4ca656400b4bb9005caf7e176e255c2d6427a0cfc9ff041dd3 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_.glif index 06e1fc8cc..bbc8ebaf0 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_.glif @@ -1,5 +1,5 @@ - + @@ -35,14 +35,8 @@ - - - - - - - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_acute.glif index 24a457fa8..23d8a4082 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_acute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_dieresis.glif index 7cb40b2ad..53b787df4 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_dieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_tilde.glif index 3bc079d7c..adc432feb 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/A_tilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_.glif index 78ef64973..1697029ab 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_.glif @@ -1,5 +1,5 @@ - + @@ -47,11 +47,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_acute.glif index 915a51bcc..38fa1eb1c 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_acute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_dieresis.glif index e5328cf96..014f139d5 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_dieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_tilde.glif index d1ac6a962..578fed325 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/Y_tilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/a.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/a.glif index f96c21e47..74ce5b3ea 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/a.glif @@ -1,5 +1,5 @@ - + @@ -70,14 +70,8 @@ - - - - - - - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/aacute.glif index 5a7828616..7a5305a07 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/aacute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/acutecmb.cap.glif index c556c8dd4..54a721ecc 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/acutecmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -19,8 +19,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/acutecmb.glif index f863f6432..45f2c742d 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/acutecmb.glif @@ -1,5 +1,5 @@ - + @@ -20,8 +20,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/adieresis.glif index 09b24cac5..eab001520 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/adieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/atilde.glif index b23fd7c0b..fcb5ce965 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/atilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/dieresiscmb.cap.glif index 761af0a8c..3779d1144 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/dieresiscmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -29,8 +29,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/dieresiscmb.glif index c7e6fad3c..b7c8d3803 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/dieresiscmb.glif @@ -1,5 +1,5 @@ - + @@ -30,11 +30,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/layerinfo.plist b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/layerinfo.plist new file mode 100644 index 000000000..aa5f6f5fe --- /dev/null +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/layerinfo.plist @@ -0,0 +1,12 @@ + + + + + lib + + org.unifiedfontobject.normalizer.imageReferences + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/tildecmb.cap.glif index c8aa1651b..a5a4d6f6f 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/tildecmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -29,8 +29,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/tildecmb.glif index b7828199c..e54eb5dc5 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/tildecmb.glif @@ -1,5 +1,5 @@ - + @@ -30,8 +30,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/y.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/y.glif index 580d2c842..ae7b19849 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/y.glif @@ -1,5 +1,5 @@ - + @@ -49,11 +49,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/yacute.glif index d494d6764..b90b0f571 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/yacute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/ydieresis.glif index ec913143c..2c1182082 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/ydieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/ytilde.glif index 4af506375..8147713a1 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs/ytilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/extralight.ufo/groups.plist index 4e754e5fc..748bcbe07 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/groups.plist +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/groups.plist @@ -2,56 +2,56 @@ - @MMK_L_LAT_A + public.kern1.LAT_A A Aacute Adieresis Atilde - @MMK_L_LAT_Y + public.kern1.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_L_LAT_a + public.kern1.LAT_a a aacute adieresis atilde - @MMK_L_LAT_v + public.kern1.LAT_v y yacute ydieresis ytilde - @MMK_R_LAT_A + public.kern2.LAT_A A Aacute Adieresis Atilde - @MMK_R_LAT_Y + public.kern2.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_R_LAT_a + public.kern2.LAT_a a aacute adieresis atilde - @MMK_R_LAT_y + public.kern2.LAT_y y yacute diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/kerning.plist b/tests/makeinstancesufo_data/expected_output/extralight.ufo/kerning.plist index 9c8e14aa9..ac8e03049 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/kerning.plist +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/kerning.plist @@ -2,42 +2,44 @@ - @MMK_L_LAT_A + public.kern1.LAT_A - @MMK_R_LAT_A + public.kern2.LAT_A 10 - @MMK_R_LAT_Y + public.kern2.LAT_Y -90 - @MMK_R_LAT_y + public.kern2.LAT_y -30 - @MMK_L_LAT_Y + public.kern1.LAT_Y - @MMK_R_LAT_A + atilde + -70 + public.kern2.LAT_A -85 - @MMK_R_LAT_Y + public.kern2.LAT_Y -10 - @MMK_R_LAT_a + public.kern2.LAT_a -70 - @MMK_R_LAT_y + public.kern2.LAT_y -70 - @MMK_L_LAT_a + public.kern1.LAT_a - @MMK_R_LAT_Y + public.kern2.LAT_Y -80 - @MMK_R_LAT_y + public.kern2.LAT_y -10 - @MMK_L_LAT_v + public.kern1.LAT_v - @MMK_R_LAT_A + public.kern2.LAT_A -50 - @MMK_R_LAT_Y + public.kern2.LAT_Y -70 - @MMK_R_LAT_a + public.kern2.LAT_a -10 - @MMK_R_LAT_y + public.kern2.LAT_y 15 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/metainfo.plist b/tests/makeinstancesufo_data/expected_output/extralight.ufo/metainfo.plist index 9c654d4c2..555d9ce4c 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/metainfo.plist +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/metainfo.plist @@ -3,8 +3,8 @@ creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion - 2 + 3 diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/light.ufo/fontinfo.plist index aa01fcfac..3323822b9 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/fontinfo.plist @@ -12,12 +12,15 @@ -243 familyName Source Serif Pro + guidelines + + italicAngle 0 openTypeHheaAscender - 422 + 1036 openTypeHheaDescender - -137 + -335 openTypeHheaLineGap 0 openTypeNameDesigner @@ -55,9 +58,9 @@ 4 openTypeOS2TypoAscender - 298 + 730 openTypeOS2TypoDescender - -110 + -270 openTypeOS2TypoLineGap 0 openTypeOS2UnicodeRanges @@ -75,9 +78,9 @@ openTypeOS2VendorID ADBO openTypeOS2WinAscent - 422 + 1036 openTypeOS2WinDescent - 137 + 335 postscriptBlueFuzz 0 postscriptBlueScale diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 04d25eba6..4effbb92d 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -1,30 +1,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index 48a0ad7d7..741e07c79 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -1,48 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index 63658ac37..558c4d362 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -1,58 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 4c7c77531..6e8efe4d8 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -1,58 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index 784499da5..efcd5ebc9 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -1,34 +1,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index b0917301a..deadee442 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -1,52 +1,52 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index 8ed21e0b9..4c90dfe57 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -1,62 +1,62 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index c8b602fef..202df8786 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -1,62 +1,62 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index eda6cbfd4..cf6e6e2db 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -1,70 +1,70 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index 33e3385c8..090988c0d 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -1,88 +1,88 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index 36bef6d20..8f12c9692 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -1,98 +1,98 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index d2de15464..b7cfa3272 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -1,98 +1,98 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist index af5b893f7..4edd7c502 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -1,38 +1,38 @@ - - A - A_.glif - Aacute - A_acute.glif - Adieresis - A_dieresis.glif - Atilde - A_tilde.glif - Y - Y_.glif - Yacute - Y_acute.glif - Ydieresis - Y_dieresis.glif - Ytilde - Y_tilde.glif - a - a.glif - aacute - aacute.glif - adieresis - adieresis.glif - atilde - atilde.glif - y - y.glif - yacute - yacute.glif - ydieresis - ydieresis.glif - ytilde - ytilde.glif - + + A + A_.glif + Aacute + A_acute.glif + Adieresis + A_dieresis.glif + Atilde + A_tilde.glif + Y + Y_.glif + Yacute + Y_acute.glif + Ydieresis + Y_dieresis.glif + Ytilde + Y_tilde.glif + a + a.glif + aacute + aacute.glif + adieresis + adieresis.glif + atilde + atilde.glif + y + y.glif + yacute + yacute.glif + ydieresis + ydieresis.glif + ytilde + ytilde.glif + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist new file mode 100644 index 000000000..aa5f6f5fe --- /dev/null +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist @@ -0,0 +1,12 @@ + + + + + lib + + org.unifiedfontobject.normalizer.imageReferences + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index e9befb047..a4c9a323f 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -1,40 +1,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index 4081fbc00..e22b1753c 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -1,58 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index 41cef835c..564231c1f 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -1,68 +1,68 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index 24502b570..5a1aa5d81 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -1,68 +1,68 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_.glif index 6f21bdfd6..8de43ca42 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_.glif @@ -1,5 +1,5 @@ - + @@ -35,14 +35,8 @@ - - - - - - - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_acute.glif index c3308f832..46002cdaa 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_acute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_dieresis.glif index 4ab92fdad..841856608 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_dieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_tilde.glif index 098c1a550..028a31c59 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/A_tilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_.glif index 5b4b19a40..f999b4f46 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_.glif @@ -1,5 +1,5 @@ - + @@ -47,11 +47,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_acute.glif index 6a662731b..893328699 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_acute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_dieresis.glif index 814c869e6..2aeeab0a8 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_dieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_tilde.glif index 23e7a4f1c..4a909d735 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/Y_tilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/a.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/a.glif index 79e2b65a8..16731aa9c 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/a.glif @@ -1,5 +1,5 @@ - + @@ -70,14 +70,8 @@ - - - - - - - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/aacute.glif index 7c38ce3f9..aba525703 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/aacute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/acutecmb.cap.glif index fb945cae4..ba44be503 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/acutecmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -19,8 +19,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/acutecmb.glif index 4d284debb..22ec4c2f6 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/acutecmb.glif @@ -1,5 +1,5 @@ - + @@ -20,8 +20,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/adieresis.glif index e7339d0bb..750fdb6ce 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/adieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/atilde.glif index cb6bcdce5..67590b8ba 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/atilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/dieresiscmb.cap.glif index 5c8420ebc..24f3e8e48 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/dieresiscmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -29,8 +29,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/dieresiscmb.glif index e9d749616..055386f9d 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/dieresiscmb.glif @@ -1,5 +1,5 @@ - + @@ -30,11 +30,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/layerinfo.plist b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/layerinfo.plist new file mode 100644 index 000000000..aa5f6f5fe --- /dev/null +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/layerinfo.plist @@ -0,0 +1,12 @@ + + + + + lib + + org.unifiedfontobject.normalizer.imageReferences + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/tildecmb.cap.glif index 883244254..425ff55d5 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/tildecmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -29,8 +29,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/tildecmb.glif index 7f88b9e02..00056cfa7 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/tildecmb.glif @@ -1,5 +1,5 @@ - + @@ -30,8 +30,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/y.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/y.glif index 0c8494c1b..78a3bf4a1 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/y.glif @@ -1,5 +1,5 @@ - + @@ -49,11 +49,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/yacute.glif index c0e1f40b0..b48420323 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/yacute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/ydieresis.glif index 8b27c7dfc..a0bb0c0ff 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/ydieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/ytilde.glif index 46a9ee244..c7f8a1f30 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/glyphs/ytilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/light.ufo/groups.plist index 4e754e5fc..748bcbe07 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/groups.plist +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/groups.plist @@ -2,56 +2,56 @@ - @MMK_L_LAT_A + public.kern1.LAT_A A Aacute Adieresis Atilde - @MMK_L_LAT_Y + public.kern1.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_L_LAT_a + public.kern1.LAT_a a aacute adieresis atilde - @MMK_L_LAT_v + public.kern1.LAT_v y yacute ydieresis ytilde - @MMK_R_LAT_A + public.kern2.LAT_A A Aacute Adieresis Atilde - @MMK_R_LAT_Y + public.kern2.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_R_LAT_a + public.kern2.LAT_a a aacute adieresis atilde - @MMK_R_LAT_y + public.kern2.LAT_y y yacute diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/kerning.plist b/tests/makeinstancesufo_data/expected_output/light.ufo/kerning.plist index 1908fbd69..4d3ad86ff 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/kerning.plist +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/kerning.plist @@ -2,48 +2,48 @@ - @MMK_L_LAT_A + public.kern1.LAT_A - @MMK_R_LAT_A + public.kern2.LAT_A 10 - @MMK_R_LAT_Y + public.kern2.LAT_Y -90 - @MMK_R_LAT_a + public.kern2.LAT_a -2 - @MMK_R_LAT_y + public.kern2.LAT_y -38 - @MMK_L_LAT_Y + public.kern1.LAT_Y - @MMK_R_LAT_A + atilde + -66 + public.kern2.LAT_A -87 - @MMK_R_LAT_Y + public.kern2.LAT_Y -6 - @MMK_R_LAT_a + public.kern2.LAT_a -74 - @MMK_R_LAT_y + public.kern2.LAT_y -70 - atilde - -66 - @MMK_L_LAT_a + public.kern1.LAT_a - @MMK_R_LAT_A + public.kern2.LAT_A 4 - @MMK_R_LAT_Y + public.kern2.LAT_Y -80 - @MMK_R_LAT_y + public.kern2.LAT_y -10 - @MMK_L_LAT_v + public.kern1.LAT_v - @MMK_R_LAT_A + public.kern2.LAT_A -58 - @MMK_R_LAT_Y + public.kern2.LAT_Y -62 - @MMK_R_LAT_a + public.kern2.LAT_a -12 - @MMK_R_LAT_y + public.kern2.LAT_y 13 diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/metainfo.plist b/tests/makeinstancesufo_data/expected_output/light.ufo/metainfo.plist index 9c654d4c2..555d9ce4c 100644 --- a/tests/makeinstancesufo_data/expected_output/light.ufo/metainfo.plist +++ b/tests/makeinstancesufo_data/expected_output/light.ufo/metainfo.plist @@ -3,8 +3,8 @@ creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion - 2 + 3 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/data/com.adobe.type.processedHashMap b/tests/makeinstancesufo_data/expected_output/regular.ufo/data/com.adobe.type.processedHashMap index 6f2c6384a..0c2e47122 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/data/com.adobe.type.processedHashMap +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/data/com.adobe.type.processedHashMap @@ -1,25 +1,25 @@ { -'A': ['4944cad22da408217295cbd203c40ece91a2856e9969b46fb2c862fd9aade8bc18e55af29aea01e1354cdd757107784ddd361626b0cf4801c5beec0565a3076f', ['checkOutlines', 'autohint']], -'Aacute': ['548fc097df064be212dd499b20511a2657aaf7f48ac39a52b3e9de17f0e8edd0b9a5d1074e556da3ee3a518bf0e9805cc060d34fa89e2ce8a6d814448cf9efbb', ['checkOutlines', 'autohint']], -'Adieresis': ['9c8849906fd3dbd98998ae380bccda84e3e19183acfeffe51fc60c1d3dcd84dd120658ffbf615b12d8ec470c81843d9fafca7512dbf4a529f7b2380e59c771d3', ['checkOutlines', 'autohint']], -'Atilde': ['60c8abeed875f5f674771d4e73441c85699e207ee58ed74b5ffc212e1b996db706aeb4046846b93fa39aa20844ba68ef654a28005c9a947457f35759baee47e8', ['checkOutlines', 'autohint']], -'Y': ['b4cc65773449797505de78a6776bbb2aa83347d2df6b0cf382d9b415c489296cfa2009377338f073bb3aae89fb586183ca1dbc0a62851c3cad587e6f933e30d1', ['checkOutlines', 'autohint']], -'Yacute': ['4b25276d21339b200c20d5830ff7e3ef755e2295bf46a2a79ef276cf2ceb097cbc1cb412685cd16c9d604e453163d123861e2527bf85850fa0bc5fd9bd6a2257', ['checkOutlines', 'autohint']], -'Ydieresis': ['77487baa3159a82a4ba4f9c46a2bdcfe3c82e790078717d0338f83e2df6feda338807d23d1dac7ef8380461b11cf8e40f1cc4d8694f8af171b1b86ba57e7c662', ['checkOutlines', 'autohint']], -'Ytilde': ['f4f2fffc7659167846b5dacba5b0af7bf478db14a82cec056042219112699ee659cd7e5f5846cc4d667acb6b609894d7ea1b267197f8ac33ab4687985e98c713', ['checkOutlines', 'autohint']], -'a': ['e03e2caf996c517981eeffe3c0f56a87f7dc494446ab14cd08505eccebc44ade7b6b2a7e2bc5e479a1e8d163088c8a7256fd9b7a6023fdc30606f903d5a3d087', ['checkOutlines', 'autohint']], -'aacute': ['a65637a3a8a00811c3234f50053425ca5f640131546ab1844b5cde4c300ddd6eb657e59ed56907aec15fdae6af34e1eec0801848966b4b10b9e1ab900abf3811', ['checkOutlines', 'autohint']], +'A': ['e0d8d0c536245e700a47f53f9b18c578a7814487811a8e313c6484024a26cd1f40f874f9d5f5766d5b7f32a8258bb8ab4ef50958cff02a6cb50f1685413c340a', ['checkOutlines', 'autohint']], +'Aacute': ['f9a1a7124c4aca5eb08d44f0d9ae90329bc6531caca9d3ff1a013d5052dc271f10c1158f88adaf584500f5dea6d466f7421cd2e43998c5b71c69c9e5ed93cc61', ['checkOutlines', 'autohint']], +'Adieresis': ['6698a2ccc34c15c97425b95a387f2a9ffa045c0ffcd626eacc6bf8fff446999a8861974e1a76cfde87be4cf4559ba4503b3d3bcb7d6b02196263858b80796a92', ['checkOutlines', 'autohint']], +'Atilde': ['d13db2fdb15381b04e744409b61350af60826edc9be3392c4b834456e8cd7d64432afb610c51a6dbd262582ffc114499243b13f8b262f4ec720d278862edb68c', ['checkOutlines', 'autohint']], +'Y': ['85028f174f17d02dac84dae00b14a3af748e4ac77cae33f4160fd5e931a1d2226f1877c91ed580cdc0591471ac11a835c93708cff8d9711734fdef58baf1e32f', ['checkOutlines', 'autohint']], +'Yacute': ['dee3675a7baae3d2f9b6db1bfc96987b9346feb9ab1eaf026442df29d0387c727d73358fc0db90125884e96838e28c3ccc1e2f07ac44ad76387c3b284471cd77', ['checkOutlines', 'autohint']], +'Ydieresis': ['073a678e76a24f95daac61530ee3e80f0e6b40970dd05075887e2d25b2b36a4e567b3828f9f44f4c37b392f11631dc7ff28b33bda72936961613fb3fadca3c1b', ['checkOutlines', 'autohint']], +'Ytilde': ['675fc964cf57f51a4807f4f965eac836a77bfd58c44eee0594851a1230467eced925904ae2fdb41ecfd98bf772f34a70670610c33f5f9185db92375a285ed99d', ['checkOutlines', 'autohint']], +'a': ['7ae618f2f14aea21edd8d3eac95cd9d277daee872bde07cc73605c1a3bc3c82523dbde8b935ed4c9df4640e4b7e615e28420071589e3cd4c5db2123457834221', ['checkOutlines', 'autohint']], +'aacute': ['ad47f28f40dece29d98ed59a7633d4fe0a5d691a18cbc690a21ff244514664f12f714da2e7ac99f240c91f99c2b4679ca2c59e60e00fde94ace34dd77943726e', ['checkOutlines', 'autohint']], 'acutecmb': ['9679a08d8441bfcc2926fdce8721b3e27e2f81b780f2eedb0d05292ca49d54b25d984efdc3dd6ec2827bf4ce0325d56fdb831a27ea5f402f806ea79bf33f3eb1', ['checkOutlines', 'autohint']], 'acutecmb.cap': ['79603cc90396cd94fe219b25380a85ec854aa68134a1e7dbcb35af40dc6bfc89ba380eca68435300583f3812fdc8c17c3146977d00df055c1c50743ded3d4066', ['checkOutlines', 'autohint']], -'adieresis': ['74d274bb820f567ff0fa2d5dd938af4378685e8b7c94d88789f643690f7cfb1d53d21f00a5c461995a9ac7606de654ea9d016337b49dbe4cd3ae85dc44d28f1f', ['checkOutlines', 'autohint']], -'atilde': ['66c4c4aab07530ac111e0af12a680378c243ce6c1703d7d1f74cf2558e00fc6501c007938dc2ce8430979878fd4d3df055fd3b12cadf1ed43fc6b397c378694d', ['checkOutlines', 'autohint']], +'adieresis': ['1a8828d686eba78071d769c024bdf8441c26afe852fd4b8b7242119fb66e1211b456cfeea162c683157ed103fc3f7d1873eff07e2b1516cbc98f0efc29dc470d', ['checkOutlines', 'autohint']], +'atilde': ['3b9e9b73bb3e0e18cb4c25b8d844c3f4f06e641b4b8feade2f60baab40baf546a369abfbbb0d15ac07290cd138b8f2c81a838ad20397f919eafd0ba119b72ba0', ['checkOutlines', 'autohint']], 'dieresiscmb': ['955afd491b1e809c84408c28d5dfcb5b29359693a11770a8c905a616fa5191e0082dde5b1d68030ef353b2b024543fb07f41def1ddbfd1ecc486a07c62299a5f', ['checkOutlines', 'autohint']], 'dieresiscmb.cap': ['98b0380a05927434fe26dc16c12d708d1b6ad9c2fcc3a3085dbe06390c669199358e0265e7349d7c91b24b19c2035c71a984b19d84a732c9272e3f2e380decb4', ['checkOutlines', 'autohint']], 'hashMapVersion': (1, 0), 'tildecmb': ['89ee0162fc595d117ffdebd0968655bb44923f21cb223404ef1b72b125a235af483cd9d54e25bda3241a24c8bd9d854cf99ad775dfe7538e6dae09c052e60525', ['checkOutlines', 'autohint']], 'tildecmb.cap': ['01ef2cea5423b373310cf23776903be9ecb5ce9a08446fb1ed6fe7a223f1c96c11c310a6123e8f2b7d055e6f808a9be9c16574f55bf43852f5fcd37b723108da', ['checkOutlines', 'autohint']], -'y': ['6af2013a0b1ee528b62b3bb7cd0ad1973a12f20b4c16e9d892968eb4cf04e3f3d128f24f6bcf7a3285ff7403e3a59fd8e63ca57300166b99bc1a6d8f424fd568', ['checkOutlines', 'autohint']], -'yacute': ['0d2c3b8452ca4a88eeeb92190754e6df768f7fac802ab44c5b30c6e4e34d2e54acf71443bdc8cb0c893d7e832a29c4dbb4c0593ace5b86f6ee1162aaad91d98c', ['checkOutlines', 'autohint']], -'ydieresis': ['4d6a978b408631487fa7142605a41053d8bc25cc209f2c458f57602f4cf04a13c15e896a9cb2c1a3ecbd28790e32b6beb8557424d4dd1218f772564aecfbc437', ['checkOutlines', 'autohint']], -'ytilde': ['5cde17795da04b00598cff7ba07beead6e795fb7fd521f7b78ae0fe276b716bc08b39703aa68a8c2ae02457ec96cd38ffe30c128bd02c46cc04dbf53b79d1938', ['checkOutlines', 'autohint']], +'y': ['51cc65042f5e4bbe42cbb5918bc352d39a9b0c2720b11c50906174fb98140d7221a662120cba51ec51672aa1fce46ee394f4b28b4be919fef9b5b844c980413c', ['checkOutlines', 'autohint']], +'yacute': ['6a295613560e9b1bf53aa499cdf4a97ede6215d6ddd556c93dc15eb43ea9ecc7bfa04bd47a67b67b0c1deda36076f33e410f97100e92b66f0835434a12260c75', ['checkOutlines', 'autohint']], +'ydieresis': ['858ba9b87d103f662a2a5935e43533f199ed44904cfdfff70eed353ba76845637ab97de5c6d524054c5ae7f5deac59bef729ed3da051e860d32e07841e20286a', ['checkOutlines', 'autohint']], +'ytilde': ['f3b636aed2aed0786c0061de434e757f0681a6f22558ae4b4ff449f709cd2aae12082d4f8a2e9e884163ca54389739d47db8b8c2650c6045677676865de31aaf', ['checkOutlines', 'autohint']], } diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/regular.ufo/fontinfo.plist index 936cf91f7..f88ea74c2 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/fontinfo.plist @@ -3,21 +3,24 @@ ascender - 729 + 729.2183544304 capHeight - 669 + 669.2594936709 copyright Copyright 2014 - 2017 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. descender - -239 + -239.2594936709 familyName Source Serif Pro + guidelines + + italicAngle 0 openTypeHheaAscender - 993 + 1036 openTypeHheaDescender - -321 + -335 openTypeHheaLineGap 0 openTypeNameDesigner @@ -55,9 +58,9 @@ 4 openTypeOS2TypoAscender - 700 + 730 openTypeOS2TypoDescender - -259 + -270 openTypeOS2TypoLineGap 0 openTypeOS2UnicodeRanges @@ -75,29 +78,29 @@ openTypeOS2VendorID ADBO openTypeOS2WinAscent - 993 + 1036 openTypeOS2WinDescent - 321 + 335 postscriptBlueFuzz 0 postscriptBlueScale 0.0375 postscriptBlueValues - -15.21 + -15.2056962025 0 - 474.53 - 487.66 - 526.51 - 539.63 - 549.42 - 562.55 - 646.05 - 659.18 - 669.26 - 684.47 - 729.22 - 749.22 + 474.5348101266 + 487.6582278481 + 526.5063291139 + 539.6297468354 + 549.4240506329 + 562.5474683544 + 646.0537974684 + 659.1772151899 + 669.2594936709 + 684.4651898734 + 729.2183544304 + 749.2183544304 postscriptFamilyBlues @@ -125,18 +128,18 @@ SourceSerifPro-Regular postscriptOtherBlues - -249.26 - -239.26 + -249.2594936709 + -239.2594936709 postscriptStemSnapH - 55.78 - 40.82 + 55.7816455696 + 40.8227848101 postscriptStemSnapV - 84.53 - 94.53 + 84.5253164557 + 94.5253164557 postscriptUnderlinePosition -75 @@ -153,6 +156,6 @@ versionMinor 0 xHeight - 475 + 474.5348101266 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index cd6cc6fa0..70eea9f51 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -1,86 +1,86 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 7780e04248642674813a2d2c471fbb3f9b21a4c2aea4421fb53e99d0dca3f6865ff730ac7f612c1ce78a83f7acd311df8412fe2e2711a6527d8fcec57eee0ff9 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5 648 - - - - pointTag - hintSet0003 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5.21 229.17 - - - - pointTag - hintSet0013 - stems - - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5 648 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5.21 229.17 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + vstem 5 648 + + + + pointTag + hintSet0003 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + vstem 5.21 229.17 + + + + pointTag + hintSet0013 + stems + + hstem 0 45.24 + hstem 217.4 46.7 + hstem 674.05 -20 + vstem 5 648 + + + + pointTag + hintSet0017 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + vstem 5.21 229.17 + + + + id + 41ee32b9c6b51cda98d417985f7ca52ac0aae8ffb3c1a9584b4e15b76e5b2fe06d58ec1c019e3ca71a94eac417cea8bfa20e6118e2f6f9166cc2d1a511762881 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index 1eed7b534..2fd93d6d1 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -1,108 +1,108 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 598fa5698308cf0bf4633b8df8d19e6225dc530bbb5112f87ce4a1b3fdb0a79aaaf3c8941c9a82a5842575d22f3b14ee0e4233b88c408caf44691e561debde8f - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5 648 - - - - pointTag - hintSet0003 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5.21 229.17 - - - - pointTag - hintSet0013 - stems - - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5 648 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5.21 229.17 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 745.3 -20 + vstem 5 648 + + + + pointTag + hintSet0003 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 745.3 -20 + vstem 5.21 229.17 + + + + pointTag + hintSet0013 + stems + + hstem 0 45.24 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 745.3 -20 + vstem 5 648 + + + + pointTag + hintSet0017 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 745.3 -20 + vstem 5.21 229.17 + + + + id + ff5a3c9976be06b32b0f8c0e3c44a4b38feedc9e963693a4e355f191f16e7948c47613787113ba3981af0dbbdd50488735125fad5b9afc49f273d37eb1206703 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index bf3f50785..5d9035522 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -1,135 +1,135 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - b2dfdbe9d17bcb4ebd988b3074becb070eb139e333337b559f776b50e8f60d4b4ed5f65110b97940b11b36493426c087167decbd4f98af223be8b772446d6bb0 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 161.97 114.94 - vstem 385.54 114.93 - - - - pointTag - hintSet0003 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 5.21 229.17 - vstem 385.54 114.93 - - - - pointTag - hintSet0013 - stems - - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 161.97 114.94 - vstem 385.54 114.93 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 5.21 229.17 - vstem 385.54 114.93 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 161.97 114.94 - vstem 385.54 114.93 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 744.11 109.73 + vstem 161.97 114.94 + vstem 385.54 114.93 + + + + pointTag + hintSet0003 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 744.11 109.73 + vstem 5.21 229.17 + vstem 385.54 114.93 + + + + pointTag + hintSet0013 + stems + + hstem 0 45.24 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 744.11 109.73 + vstem 161.97 114.94 + vstem 385.54 114.93 + + + + pointTag + hintSet0017 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 744.11 109.73 + vstem 5.21 229.17 + vstem 385.54 114.93 + + + + pointTag + hintSet0019 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 744.11 109.73 + vstem 161.97 114.94 + vstem 385.54 114.93 + + + + id + d91fa779f87de4a744fd39078410e1e5d0a0523b47c1898999dbe63830c1cfd1e9dd13249683d99271b1d6e41792eb382a09aa44ed66d63ed287b1af1808426b + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 204da2cf5..eef0b5643 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -1,161 +1,161 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 3dc41d5c62d20d2d6a613ad55150cfa12f3c9915303039848c8b57226d6976378a1778614a1632fa414a3f89b7238a4c568dcc178b96f2785a1282ee164503f6 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5 648 - - - - pointTag - hintSet0003 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5.21 229.17 - - - - pointTag - hintSet0013 - stems - - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5 648 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5.21 229.17 - - - - pointTag - hintSet0023 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 722.81 58.34 - hstem 804.41 58.34 - vstem 5 648 - - - - pointTag - hintSet0028 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5 648 - - - - pointTag - hintSet0029 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5.21 229.17 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 5 648 + + + + pointTag + hintSet0003 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 5.21 229.17 + + + + pointTag + hintSet0013 + stems + + hstem 0 45.24 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 5 648 + + + + pointTag + hintSet0017 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 5.21 229.17 + + + + pointTag + hintSet0023 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 722.81 58.34 + hstem 804.41 58.34 + vstem 5 648 + + + + pointTag + hintSet0028 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 5 648 + + + + pointTag + hintSet0029 + stems + + hstem 0 46.55 + hstem 217.4 46.7 + hstem 674.05 -20 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 5.21 229.17 + + + + id + 1c7753620759d71e9468e6df5367c761ad8250517e29e8d30c6e2f93c6054f3025ebb7fa33bf75022d5de84cf7830e99b196201fdac28f1f7a874678aae1ecaa + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index 50c1e851a..4c192b90f 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -1,109 +1,109 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - c2acd946962abdd4405b511377a312a3136ace20e1f5b7d9a33b6a43a87ebc5f04ab54c42ce0c3253988540fc3eda2a415af2f3cd6f933792b3e2a395a2725ad - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0003 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 - - - - pointTag - hintSet0007 - stems - - hstem 0 46.25 - hstem 623.98 45.28 - vstem 270.57 94.45 - - - - pointTag - hintSet0012 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 46.24 + hstem 628.48 40.78 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + pointTag + hintSet0003 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + vstem 270.57 94.45 + + + + pointTag + hintSet0007 + stems + + hstem 0 46.25 + hstem 623.98 45.28 + vstem 270.57 94.45 + + + + pointTag + hintSet0012 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + vstem 270.57 94.45 + + + + pointTag + hintSet0017 + stems + + hstem 0 46.24 + hstem 628.48 40.78 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + pointTag + hintSet0019 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + id + 016b3ad6d0a94677de06af2d7b59e62b71deeed9f53cf14d8ed94bc0914f70ece62d52a72d8316cc3a4bfc1e5f1b7c1d6d85035d5c1776aa927dbc7b9ccd4ae0 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index bd6dcd2c3..0f447e4fe 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -1,133 +1,133 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - de8c1981a39009741f2454f6052e146ba21fc6c3ecef77a7fc1005597388fa0bf59a4ec84aae3e60c3a484fbf9add16d09433b3926e21e09e4337929236f586e - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - hstem 735.71 -20 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0003 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 735.71 -20 - vstem 270.57 94.45 - - - - pointTag - hintSet0007 - stems - - hstem 0 46.25 - hstem 623.98 45.28 - hstem 735.71 -20 - vstem 270.57 94.45 - - - - pointTag - hintSet0012 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 735.71 -20 - vstem 270.57 94.45 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - hstem 735.71 -20 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 735.71 -20 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 46.24 + hstem 628.48 40.78 + hstem 735.71 -20 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + pointTag + hintSet0003 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 735.71 -20 + vstem 270.57 94.45 + + + + pointTag + hintSet0007 + stems + + hstem 0 46.25 + hstem 623.98 45.28 + hstem 735.71 -20 + vstem 270.57 94.45 + + + + pointTag + hintSet0012 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 735.71 -20 + vstem 270.57 94.45 + + + + pointTag + hintSet0017 + stems + + hstem 0 46.24 + hstem 628.48 40.78 + hstem 735.71 -20 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + pointTag + hintSet0019 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 735.71 -20 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + id + 51a1c8e3c6c38527a76d75eab3c0d1cf8376b1b70a7bf7ba9ce6bda65ab60b6f6820ea21a10d93c5918e574cd59e9b9893fb0cc4573714a596a726974c3032b9 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index 604d2f3e7..26acf2897 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -1,150 +1,150 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - b73a908f2aeb9039a6854b4bcf2e41571fb6c4e0644bee80e1a4c0df58def4078426833e93c278f5585873270d2d92cea92497d243de2d3114043e5aa00e0150 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0003 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 - - - - pointTag - hintSet0007 - stems - - hstem 0 46.25 - hstem 623.98 45.28 - vstem 270.57 94.45 - - - - pointTag - hintSet0012 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 744.11 109.73 - vstem 177.47 114.93 - vstem 394.23 228.69 - - - - pointTag - hintSet0026 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 744.11 109.73 - vstem 270.57 94.45 - vstem 401.03 114.93 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 46.24 + hstem 628.48 40.78 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + pointTag + hintSet0003 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + vstem 270.57 94.45 + + + + pointTag + hintSet0007 + stems + + hstem 0 46.25 + hstem 623.98 45.28 + vstem 270.57 94.45 + + + + pointTag + hintSet0012 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + vstem 270.57 94.45 + + + + pointTag + hintSet0017 + stems + + hstem 0 46.24 + hstem 628.48 40.78 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + pointTag + hintSet0019 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 744.11 109.73 + vstem 177.47 114.93 + vstem 394.23 228.69 + + + + pointTag + hintSet0026 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 744.11 109.73 + vstem 270.57 94.45 + vstem 401.03 114.93 + + + + id + 5bb90d1f11c1781070fbaa2c65d48e09e094df9f7f303e53dea9a6fc801e7dd403f2d44e437189cf85abfa31154fd604472ee20883e3790e1ccf4c1b96eff5d4 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index 831b63e78..1965dc3b0 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -1,186 +1,186 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 145cbaa8e18a7eaa9e30eca3e670aedec7c8eb7970709ae699013cb0d4fffc88c7ad5de190225169c58fb225be3961c78cb1fbdec53c194dfd7928e1bfe28b95 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0003 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - - - - pointTag - hintSet0007 - stems - - hstem 0 46.25 - hstem 623.98 45.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - - - - pointTag - hintSet0012 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0025 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 722.81 58.34 - hstem 804.41 58.34 - vstem 270.57 94.45 - - - - pointTag - hintSet0030 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - - - - pointTag - hintSet0031 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 46.24 + hstem 628.48 40.78 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + pointTag + hintSet0003 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 270.57 94.45 + + + + pointTag + hintSet0007 + stems + + hstem 0 46.25 + hstem 623.98 45.28 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 270.57 94.45 + + + + pointTag + hintSet0012 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 270.57 94.45 + + + + pointTag + hintSet0017 + stems + + hstem 0 46.24 + hstem 628.48 40.78 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + pointTag + hintSet0019 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + pointTag + hintSet0025 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 722.81 58.34 + hstem 804.41 58.34 + vstem 270.57 94.45 + + + + pointTag + hintSet0030 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 270.57 94.45 + + + + pointTag + hintSet0031 + stems + + hstem 0 46.24 + hstem 622.98 46.28 + hstem 734.14 -20 + hstem 804.41 58.34 + vstem 270.57 94.45 + vstem 394.23 228.69 + + + + id + b53cd84015e2fb3045da68b0f33eb56a2022af50124ef0b1cd4a86abcf245db94a9e5cc9eafb220f81c3c818e5ba7d773258eba902edc58c06ec39c32cc8c64e + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index 69c4bd8b5..8374b3b0a 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -1,115 +1,115 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 91c2f00b245fffd5e37c771304e339f676078a7067774a4c42c4dd6d82c02bc00be42ec3943ba9cf0701cdf79dabea3b3951f6f1d0001dea6a7b5c19e19cea9c - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0009 - stems - - hstem -10.25 52.16 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0024 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + vstem 45.14 88.58 + vstem 323.6 84.28 + + + + pointTag + hintSet0009 + stems + + hstem -10.25 52.16 + hstem 442.29 45.37 + vstem 45.14 88.58 + vstem 323.6 84.28 + + + + pointTag + hintSet0024 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + vstem 45.14 88.58 + vstem 323.6 84.28 + + + + id + 5038b4e04c6b5ca94794974c32027e07d3d0508b3bbfe4758f58c7d750a247a4ff6d2b2ddec2737dfaebba20827a4eebbc8478880b09a024e6556e9f42aab730 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index a8e4934d3..170c403c0 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -1,133 +1,133 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 65be6738ecdb7a8253cdf45b2d7ad05593d546d76c317ca1a00c7055aec0b946e368aee94bdaac1f91e41ee83def221f74c2d79d6387c87110476427b06302eb - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0016 - stems - - hstem -10.25 52.16 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0031 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + vstem 45.14 88.58 + vstem 323.6 84.28 + + + + pointTag + hintSet0016 + stems + + hstem -10.25 52.16 + hstem 442.29 45.37 + vstem 45.14 88.58 + vstem 323.6 84.28 + + + + pointTag + hintSet0031 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + vstem 45.14 88.58 + vstem 323.6 84.28 + + + + id + 2336815d4d09676a75faeaaa1002712880f5d4122a0a25473e59b6ce7b2d01a0a20a4824dcc15dc9bfe654f9bb22833c924f4eb6c2fef65c38851e079dbf6cf0 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index 3188143aa..07460c637 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -1,44 +1,45 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 090b5c4db92217cb2087491c123f45921c35af0582980329e6176c7b4fece217b605446be3f7c67a5f75a49f0dc8d60180257a8778abbb10fcd73d30d6a8624f - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 745.3 -20 - vstem -67 194 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 745.3 -20 + vstem -67 194 + + + + id + 4f69fb0369e25c8d9bc2a5c15e254439b5119a04bc75560f1e65dae1032aa5cae22c202a0571c12bd2b64536b48abb9f630668af355f9c14aa5435efb7273b9a + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index ff95f904e..fc671cbba 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -1,45 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 2fa3640bd174e92be2e97df1e4ccf30d710d5eb72963511351a165aeddee4a08fb3fd73c113c9bf9e49963b89d7ca2decb1a8e0de892ed68adb6f1f59eff641c - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 557 201 - vstem -59 181 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 557 201 + vstem -59 181 + + + + id + 06d5cafcccde0872914c9bcb05176dfc452bdc8e062c26c7f9d09b37e6c006b4e08cc08020e367d7c1cbcd961cbeaa30f807a0e1cb6fd943fdec01ae9372f593 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index 80b84473a..d958ce754 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -1,194 +1,194 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 8b46e158a799fe762633ff3debd5ff80b3a135fdf0c942421316848cb46cca413d0483723e03d7e4c60774680db97e2e2794719574092d45e7f7b3a108e1f86c - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 85.89 119.1 - vstem 323.6 84.28 - - - - pointTag - hintSet0005 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 294.74 119.1 - - - - pointTag - hintSet0012 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0015 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 294.74 119.1 - - - - pointTag - hintSet0018 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 85.89 119.1 - vstem 323.6 84.28 - - - - pointTag - hintSet0019 - stems - - hstem -10.25 52.16 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 85.89 119.1 - vstem 323.6 84.28 - - - - pointTag - hintSet0034 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 294.74 119.1 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 595.77 113.89 + vstem 85.89 119.1 + vstem 323.6 84.28 + + + + pointTag + hintSet0005 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 595.77 113.89 + vstem 45.14 88.58 + vstem 294.74 119.1 + + + + pointTag + hintSet0012 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 595.77 113.89 + vstem 45.14 88.58 + vstem 323.6 84.28 + + + + pointTag + hintSet0015 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 595.77 113.89 + vstem 45.14 88.58 + vstem 294.74 119.1 + + + + pointTag + hintSet0018 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 595.77 113.89 + vstem 85.89 119.1 + vstem 323.6 84.28 + + + + pointTag + hintSet0019 + stems + + hstem -10.25 52.16 + hstem 442.29 45.37 + hstem 595.77 113.89 + vstem 85.89 119.1 + vstem 323.6 84.28 + + + + pointTag + hintSet0034 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 595.77 113.89 + vstem 45.14 88.58 + vstem 294.74 119.1 + + + + id + 6653e9c41cbb7a9b52fb421ac3d0e4e5c00677eafbfc30a32bb57b8c69b51ad099c021189962702b9cf4090c0494166588774dac29d2c49adb238b49ea8193c6 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index 598f79aa0..268f9a7d3 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -1,180 +1,180 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 5fd8777229a4c54f717549a275f8eae562e298f503cceba0f8a318df8d570b370544f8bb0a5c2e8802f5f0219264f64827c99f6704affa5ae457a67d9e83c48c - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 323.6 84.28 - - - - pointTag - hintSet0004 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 323.6 84.28 - - - - pointTag - hintSet0009 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 323.6 84.28 - - - - pointTag - hintSet0011 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0020 - stems - - hstem -10.25 52.16 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 323.6 84.28 - - - - pointTag - hintSet0035 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 574.79 58.35 + hstem 656.4 58.34 + vstem 323.6 84.28 + + + + pointTag + hintSet0004 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 574.79 58.35 + vstem 323.6 84.28 + + + + pointTag + hintSet0009 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 574.79 58.35 + hstem 656.4 58.34 + vstem 323.6 84.28 + + + + pointTag + hintSet0011 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 574.79 58.35 + vstem 45.14 88.58 + vstem 323.6 84.28 + + + + pointTag + hintSet0020 + stems + + hstem -10.25 52.16 + hstem 442.29 45.37 + hstem 574.79 58.35 + vstem 323.6 84.28 + + + + pointTag + hintSet0035 + stems + + hstem -13.12 65.89 + hstem 442.29 45.37 + hstem 574.79 58.35 + vstem 45.14 88.58 + vstem 323.6 84.28 + + + + id + a1a03cf6f24bef978f33bc771f2713cebdb1ca2bfeab58498ccf677321961305fd1106e9f6946edee7563cc1a61e9bd5124c6d4656a69e9e0e0e2c99bce834a1 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist index bf3d7b78c..d4b4a3da7 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -1,50 +1,50 @@ - - A - A_.glif - Aacute - A_acute.glif - Adieresis - A_dieresis.glif - Atilde - A_tilde.glif - Y - Y_.glif - Yacute - Y_acute.glif - Ydieresis - Y_dieresis.glif - Ytilde - Y_tilde.glif - a - a.glif - aacute - aacute.glif - acutecmb - acutecmb.glif - acutecmb.cap - acutecmb.cap.glif - adieresis - adieresis.glif - atilde - atilde.glif - dieresiscmb - dieresiscmb.glif - dieresiscmb.cap - dieresiscmb.cap.glif - tildecmb - tildecmb.glif - tildecmb.cap - tildecmb.cap.glif - y - y.glif - yacute - yacute.glif - ydieresis - ydieresis.glif - ytilde - ytilde.glif - + + A + A_.glif + Aacute + A_acute.glif + Adieresis + A_dieresis.glif + Atilde + A_tilde.glif + Y + Y_.glif + Yacute + Y_acute.glif + Ydieresis + Y_dieresis.glif + Ytilde + Y_tilde.glif + a + a.glif + aacute + aacute.glif + acutecmb + acutecmb.glif + acutecmb.cap + acutecmb.cap.glif + adieresis + adieresis.glif + atilde + atilde.glif + dieresiscmb + dieresiscmb.glif + dieresiscmb.cap + dieresiscmb.cap.glif + tildecmb + tildecmb.glif + tildecmb.cap + tildecmb.cap.glif + y + y.glif + yacute + yacute.glif + ydieresis + ydieresis.glif + ytilde + ytilde.glif + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index f63e1c8ab..ba8e90adf 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -1,55 +1,56 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - fad02e33b40a0ab4c263bf66d3e4176909496e6f7459b413e5e543f31dcbdcf3adf03862d50491bc8a1cdac76ce1e8a8227399ae204be8fc2ae115cecff6ba76 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 744.11 109.73 - vstem -169.73 114.94 - vstem 53.84 114.93 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 744.11 109.73 + vstem -169.73 114.94 + vstem 53.84 114.93 + + + + id + fad02e33b40a0ab4c263bf66d3e4176909496e6f7459b413e5e543f31dcbdcf3adf03862d50491bc8a1cdac76ce1e8a8227399ae204be8fc2ae115cecff6ba76 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index 2496b412d..943792fa9 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -1,56 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - f7a858fc5ce5ef870150b54780912c27fb8a0e4a72b5bb23182d317a49aadb82b7d299031bdce8ef6861eaf067db13397dc1431adcb646e51060d3763c9fb089 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 595.77 113.89 - vstem -163.98 119.1 - vstem 44.88 119.1 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 595.77 113.89 + vstem -163.97 119.09 + vstem 44.88 119.09 + + + + id + a0d5e568c0633907005e2a1bc725b1bbd2fdb564f3081d62158fe98003018084c03f934c8b98ab291c1868d318ce8c3e38d92674a1f1b9f72f6a2b48cee830fc + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist new file mode 100644 index 000000000..aa5f6f5fe --- /dev/null +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist @@ -0,0 +1,12 @@ + + + + + lib + + org.unifiedfontobject.normalizer.imageReferences + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index 2084151b4..5f8581a64 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -1,75 +1,76 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - dff84c370c64148bb4a9b5e88a5033de747871a96d7174c43e2fede35f66651eb9d6633ec7514aac07d49f614916c65506621040ee661c434794bfaa3dc77ab6 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 734.14 -20 - hstem 804.41 58.34 - vstem -180 360 - - - - pointTag - hintSet0004 - stems - - hstem 722.81 58.34 - hstem 804.41 58.34 - vstem -180 360 - - - - pointTag - hintSet0009 - stems - - hstem 734.14 -20 - hstem 804.41 58.34 - vstem -180 360 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 734.14 -20 + hstem 804.41 58.34 + vstem -180 360 + + + + pointTag + hintSet0004 + stems + + hstem 722.81 58.34 + hstem 804.41 58.34 + vstem -180 360 + + + + pointTag + hintSet0009 + stems + + hstem 734.14 -20 + hstem 804.41 58.34 + vstem -180 360 + + + + id + 843142d740834fefe8c481012a51db442948781eef04a309e93455e543abe485500dbab71454228224a3e577561e52e12c0d2e81098db47ec8f0fdd0b5c07704 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index feed4330b..a28c43317 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -1,75 +1,76 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 9ea50aa53466e11241884f18221ec117db5f775cecfeddb3a38691ad88818e90e289a4fab4016c70df0f5d471cdd8ac3cd7c756d94bc85bafbda4f4eb7a61924 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem -163 326 - - - - pointTag - hintSet0004 - stems - - hstem 574.79 58.35 - vstem -163 326 - - - - pointTag - hintSet0009 - stems - - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem -163 326 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 574.79 58.35 + hstem 656.4 58.34 + vstem -163 326 + + + + pointTag + hintSet0004 + stems + + hstem 574.79 58.35 + vstem -163 326 + + + + pointTag + hintSet0009 + stems + + hstem 574.79 58.35 + hstem 656.4 58.34 + vstem -163 326 + + + + id + 9ea50aa53466e11241884f18221ec117db5f775cecfeddb3a38691ad88818e90e289a4fab4016c70df0f5d471cdd8ac3cd7c756d94bc85bafbda4f4eb7a61924 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index dacd2bccf..d6b594e8a 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -1,122 +1,122 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 8b72155e00d7be99bbfc8a89e73654f7d9f64886da28f7dff78841e4fad9bc5e60e89bdfc0d80516977ef3665cfa331e00d25450697744a755016b468ad4a8ba - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 - - - - pointTag - hintSet0002 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 - - - - pointTag - hintSet0004 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 316.52 195.59 - - - - pointTag - hintSet0006 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 - - - - pointTag - hintSet0009 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - vstem 0 512 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 0 512 + + + + pointTag + hintSet0002 + stems + + hstem -249.26 109.81 + hstem 439.04 35.5 + vstem 316.52 195.59 + + + + pointTag + hintSet0004 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 316.52 195.59 + + + + pointTag + hintSet0006 + stems + + hstem -249.26 109.81 + hstem 439.04 35.5 + vstem 316.52 195.59 + + + + pointTag + hintSet0009 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 0 512 + + + + pointTag + hintSet0013 + stems + + hstem -249.26 109.81 + hstem 434.82 39.72 + vstem 0 512 + + + + pointTag + hintSet0021 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 0 512 + + + + id + ea7cd6cde48af9437534ff76af8acf85cc636835efb048db671cf6dbbf3b8a3d710496495711877704a7b14f7a551cccd1d88f87725f5a9b388d8d2063175dc6 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index 597c66e39..ff42d3bb6 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -1,140 +1,140 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 897ee0f4ac094776107aab40bf79dcba90fa378759721509c3d0662660fe18bd9da81c1d2c36f137157ac2bbdfede46c10b62f71d734ed521b7bcc8f6aefac52 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 - - - - pointTag - hintSet0002 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 - - - - pointTag - hintSet0004 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 316.52 195.59 - - - - pointTag - hintSet0006 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 - - - - pointTag - hintSet0009 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - vstem 0 512 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 0 512 + + + + pointTag + hintSet0002 + stems + + hstem -249.26 109.81 + hstem 439.04 35.5 + vstem 316.52 195.59 + + + + pointTag + hintSet0004 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 316.52 195.59 + + + + pointTag + hintSet0006 + stems + + hstem -249.26 109.81 + hstem 439.04 35.5 + vstem 316.52 195.59 + + + + pointTag + hintSet0009 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 0 512 + + + + pointTag + hintSet0013 + stems + + hstem -249.26 109.81 + hstem 434.82 39.72 + vstem 0 512 + + + + pointTag + hintSet0021 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 0 512 + + + + id + e382a176d33cfafe1f605b1bf200c9615004fd6be0e3b596aa320a09818bc6aab76d8a9671e493c351bbb648801dd2ddfd2cac89b616b6d39c0d124e08a9e209 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index 005be6064..4cfdc1dd2 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -1,169 +1,169 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - a3a5a7b549beb7ee405863365f3da14b412e3d5c6a69e1074733498e82826ca2f629ae9cd25cefb7df136e02bb43c0a9716aac7a4375f4a07dc28c40300dcb93 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - pointTag - hintSet0002 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 119.96 119.1 - vstem 316.52 195.59 - - - - pointTag - hintSet0004 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 316.52 195.59 - - - - pointTag - hintSet0006 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 119.96 119.1 - vstem 316.52 195.59 - - - - pointTag - hintSet0009 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - pointTag - hintSet0022 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 595.77 113.89 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 119.96 119.1 + vstem 328.81 119.1 + + + + pointTag + hintSet0002 + stems + + hstem -249.26 109.81 + hstem 439.04 35.5 + vstem 119.96 119.1 + vstem 316.52 195.59 + + + + pointTag + hintSet0004 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 119.96 119.1 + vstem 316.52 195.59 + + + + pointTag + hintSet0006 + stems + + hstem -249.26 109.81 + hstem 439.04 35.5 + vstem 119.96 119.1 + vstem 316.52 195.59 + + + + pointTag + hintSet0009 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 119.96 119.1 + vstem 328.81 119.1 + + + + pointTag + hintSet0013 + stems + + hstem -249.26 109.81 + hstem 434.82 39.72 + vstem 119.96 119.1 + vstem 328.81 119.1 + + + + pointTag + hintSet0021 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + vstem 119.96 119.1 + vstem 328.81 119.1 + + + + pointTag + hintSet0022 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + hstem 595.77 113.89 + vstem 119.96 119.1 + vstem 328.81 119.1 + + + + id + 76a32ba3e1461ffed77974e97afd32c4856f4ca47f7fd2c518d202682cec9c20e125a83bc0cea94b60019322d59945e436400b4c2c2cffc53f44f229485646cb + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index 8490ac62b..d6011fb82 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -1,192 +1,192 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 82983743a88b9de8b641aa8062088646336d7dc82cec5a4623d23ea935d5baf18636dcc70bab7a613d755e2011036522817385c101c787e3aba618a845e747e4 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0002 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - hstem 574.79 58.35 - vstem 316.52 195.59 - - - - pointTag - hintSet0004 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 316.52 195.59 - - - - pointTag - hintSet0006 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - hstem 574.79 58.35 - vstem 316.52 195.59 - - - - pointTag - hintSet0009 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0022 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 0 512 - - - - pointTag - hintSet0026 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0031 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 0 512 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + hstem 574.79 58.35 + vstem 0 512 + + + + pointTag + hintSet0002 + stems + + hstem -249.26 109.81 + hstem 439.04 35.5 + hstem 574.79 58.35 + vstem 316.52 195.59 + + + + pointTag + hintSet0004 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + hstem 574.79 58.35 + vstem 316.52 195.59 + + + + pointTag + hintSet0006 + stems + + hstem -249.26 109.81 + hstem 439.04 35.5 + hstem 574.79 58.35 + vstem 316.52 195.59 + + + + pointTag + hintSet0009 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + hstem 574.79 58.35 + vstem 0 512 + + + + pointTag + hintSet0013 + stems + + hstem -249.26 109.81 + hstem 434.82 39.72 + hstem 574.79 58.35 + vstem 0 512 + + + + pointTag + hintSet0021 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + hstem 574.79 58.35 + vstem 0 512 + + + + pointTag + hintSet0022 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + hstem 574.79 58.35 + hstem 656.4 58.34 + vstem 0 512 + + + + pointTag + hintSet0026 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + hstem 574.79 58.35 + vstem 0 512 + + + + pointTag + hintSet0031 + stems + + hstem -249.26 109.81 + hstem 432.84 41.7 + hstem 574.79 58.35 + hstem 656.4 58.34 + vstem 0 512 + + + + id + f599d7e9c71b399e0b3cc8898f8512f40f4009f09e6ca8e27158d5f17246633edb2bf4c249322715d0869809d2bae67bcfdbafb9a692bc5beb43644dcc7f3021 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_.glif index 3de4b9b6d..3ac32d0ad 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_.glif @@ -1,7 +1,7 @@ - + - + @@ -35,14 +35,8 @@ - - - - - - - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_acute.glif index 2e710e3f2..82612fe3e 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_acute.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_dieresis.glif index fbd53e49f..66f74950f 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_dieresis.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_tilde.glif index 6b557f14e..d25c747e2 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/A_tilde.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_.glif index 7199c293c..6ff1935dc 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_.glif @@ -1,7 +1,7 @@ - + - + @@ -47,11 +47,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_acute.glif index 1e3c294ef..b014aabaf 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_acute.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_dieresis.glif index 5bfbc8c4e..848840e2c 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_dieresis.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_tilde.glif index 40935058e..a762bb69f 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/Y_tilde.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/a.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/a.glif index 1ced0255e..c9be933da 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/a.glif @@ -1,7 +1,7 @@ - + - + @@ -70,14 +70,8 @@ - - - - - - - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/aacute.glif index c22534a1b..ba9e120ee 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/aacute.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/acutecmb.cap.glif index 6c2db42a0..2c5a82e5d 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/acutecmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -19,8 +19,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/acutecmb.glif index 85d29d2ee..4cd824f78 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/acutecmb.glif @@ -1,5 +1,5 @@ - + @@ -20,8 +20,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/adieresis.glif index f70f02f33..8abd98dea 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/adieresis.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/atilde.glif index 21ff656a4..c74475285 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/atilde.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/dieresiscmb.cap.glif index c63cdbbc3..9b1d238df 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/dieresiscmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -29,8 +29,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/dieresiscmb.glif index 756de2cc7..1037c00d1 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/dieresiscmb.glif @@ -1,5 +1,5 @@ - + @@ -30,11 +30,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/layerinfo.plist b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/layerinfo.plist new file mode 100644 index 000000000..aa5f6f5fe --- /dev/null +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/layerinfo.plist @@ -0,0 +1,12 @@ + + + + + lib + + org.unifiedfontobject.normalizer.imageReferences + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/tildecmb.cap.glif index c83b99245..e98bc3bd6 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/tildecmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -29,8 +29,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/tildecmb.glif index 376256d90..5f04a424b 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/tildecmb.glif @@ -1,5 +1,5 @@ - + @@ -30,8 +30,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/y.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/y.glif index f2327253e..1d210187c 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/y.glif @@ -1,7 +1,7 @@ - + - + @@ -49,11 +49,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/yacute.glif index 722133b7c..fe849f9d3 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/yacute.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/ydieresis.glif index 584f5e0bb..5ef351f30 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/ydieresis.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/ytilde.glif index 457084d05..146239e67 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs/ytilde.glif @@ -1,7 +1,7 @@ - + - + diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/regular.ufo/groups.plist index 4e754e5fc..748bcbe07 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/groups.plist +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/groups.plist @@ -2,56 +2,56 @@ - @MMK_L_LAT_A + public.kern1.LAT_A A Aacute Adieresis Atilde - @MMK_L_LAT_Y + public.kern1.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_L_LAT_a + public.kern1.LAT_a a aacute adieresis atilde - @MMK_L_LAT_v + public.kern1.LAT_v y yacute ydieresis ytilde - @MMK_R_LAT_A + public.kern2.LAT_A A Aacute Adieresis Atilde - @MMK_R_LAT_Y + public.kern2.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_R_LAT_a + public.kern2.LAT_a a aacute adieresis atilde - @MMK_R_LAT_y + public.kern2.LAT_y y yacute diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/kerning.plist b/tests/makeinstancesufo_data/expected_output/regular.ufo/kerning.plist index 33db1da84..c34335a3c 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/kerning.plist +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/kerning.plist @@ -2,51 +2,51 @@ - @MMK_L_LAT_A + public.kern1.LAT_A - @MMK_R_LAT_A - 10 - @MMK_R_LAT_Y + public.kern2.LAT_A + 9.5886075949 + public.kern2.LAT_Y -90 - @MMK_R_LAT_a - -5 - @MMK_R_LAT_y - -50 + public.kern2.LAT_a + -5.2056962025 + public.kern2.LAT_y + -50.4113924051 - @MMK_L_LAT_Y + public.kern1.LAT_Y - @MMK_R_LAT_A - -90 - @MMK_R_LAT_Y - 0 - @MMK_R_LAT_a - -80 - @MMK_R_LAT_y - -69 adieresis - -79 + -78.7658227848 atilde - -61 + -60.8227848101 + public.kern2.LAT_A + -90.4113924051 + public.kern2.LAT_Y + 0.4113924051 + public.kern2.LAT_a + -80 + public.kern2.LAT_y + -69.1772151899 - @MMK_L_LAT_a + public.kern1.LAT_a - @MMK_R_LAT_A - 10 - @MMK_R_LAT_Y - -80 - @MMK_R_LAT_y - -10 + public.kern2.LAT_A + 9.5886075949 + public.kern2.LAT_Y + -79.5886075949 + public.kern2.LAT_y + -10.4113924051 - @MMK_L_LAT_v + public.kern1.LAT_v - @MMK_R_LAT_A - -71 - @MMK_R_LAT_Y - -50 - @MMK_R_LAT_a - -16 - @MMK_R_LAT_y - 9 + public.kern2.LAT_A + -71.2341772152 + public.kern2.LAT_Y + -50.4113924051 + public.kern2.LAT_a + -15.6170886076 + public.kern2.LAT_y + 9.1772151899 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/metainfo.plist b/tests/makeinstancesufo_data/expected_output/regular.ufo/metainfo.plist index 9c654d4c2..555d9ce4c 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/metainfo.plist +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/metainfo.plist @@ -3,8 +3,8 @@ creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion - 2 + 3 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/data/com.adobe.type.processedHashMap b/tests/makeinstancesufo_data/expected_output/regular1.ufo/data/com.adobe.type.processedHashMap index e12b3a77f..2a9a0af39 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/data/com.adobe.type.processedHashMap +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/data/com.adobe.type.processedHashMap @@ -1,25 +1,25 @@ { -'A': ['f53c2f2574720533f6eb6d5831552bd4ec66df5cd255b65fc01f1e321cbeb4d08a4663ffe611292bedcbf1ce78bc54dcd1163c9a00d04d47525deb2bfbe6d319', ['checkOutlines', 'autohint']], -'Aacute': ['319cd56802c4a8dff86caf4c926138c68905435a1e773e47bb3a906a297ba2ee772dc63f31c13eb388c461d3761488f3e47db2cc9b0ae1540e881e7bf020272c', ['checkOutlines', 'autohint']], -'Adieresis': ['a08ea2816c264650426dd2b0712f752bd75c6bda9a2ed466ed47fecc018a63c4b81e738905f6c307bfca6545dc3e4650eaed1a7f66d06f354fc4fe93e32f91a7', ['checkOutlines', 'autohint']], -'Atilde': ['f850946a72e0f46ef6e4a45176af4ded3ada6cf1e0437303d4c9fc133d1c311d6103be54a7b70a14194bcbf34e958b45c98579358017cb9db4842e2bdd413dcd', ['checkOutlines', 'autohint']], -'Y': ['adb98a367ce350cc7c7de70bd4f04861437814f90a7e4896ff9e858f08302f878ab962cc36e91a27d75b94efcf50aa8821611a6c02c4920ff145d8c70c19feee', ['checkOutlines', 'autohint']], -'Yacute': ['aea0047b5394c432e6b7a625e088759701c2a444ee88701438f58d58fb72702509aa0855ab3ff047de30d3686df0f30694faff8529153f3a1c4ad1d89992b414', ['checkOutlines', 'autohint']], -'Ydieresis': ['9ed2b31dcc50595139c855bbc6b5f5b30e8971d9bd2bfb8751c05ac1f185bc4b780510efd6a4b784da8fd217f55fc4fbd71aef48fca1759f683f600a071732aa', ['checkOutlines', 'autohint']], -'Ytilde': ['a0420ae955af41bee1c44bfd4617e69833dc378b99f41083c3aa52dd02ff6f366e632681eb92121e8414842d4a731f9368d02f0cc520b73d0f74a8ac6a12ac32', ['checkOutlines', 'autohint']], -'a': ['5e88fe80070a4d14e7c9a41fd018dfcee4eca196474b6185fcb15fb66b0260f1fae6abbb9c6a7e2a284eda777295bd7fe2fdb5ed2ef93e377bd1d75f9eca6e3d', ['checkOutlines', 'autohint']], -'aacute': ['b51e83da21951305a60d7ef78d049e44fa1583bf4e4bc5dae2a3e2ccdc51ce6d9509b17d91ae562196a202432c732443769175731c2354a516809b98b64025f4', ['checkOutlines', 'autohint']], -'acutecmb': ['b3500d5ed2ec47f188143b03a131867f94ef74bdb445eaf62597704f3e49db8792d089c817b15633435f251fd1df85e6d2ed0c8aca6b7cfcb055f6496e30f33f', ['checkOutlines', 'autohint']], -'acutecmb.cap': ['fce8e200fb1763b8db8da290f522eeb85d9108da0c9cdaea599d1204f0ddaa3b5ad948090923f59e8979746a4204f125c43659353b4ace8d0d38620e5d452ffa', ['checkOutlines', 'autohint']], -'adieresis': ['44b1b6fb2a249ecf1e1cc76163d8c593f0519965143ef146ed856c4bd03898c9aab6edf189669463658d083dd2031d7c616d251e2a948147fabc3e15f25ec79f', ['checkOutlines', 'autohint']], -'atilde': ['8d10e50583d5f7c2e469acdc086b4cdde74d2aac0ecd074963ef4797b8cdff708cbad505bc180b4f284782d1b427bf3e588b25ffdff91825d34959e5323f79ab', ['checkOutlines', 'autohint']], +'A': ['58de93722450cf7cc1457ae7ae033470cccf169da9c3d1b98c0d9bf180ca2ab2590e908587cdec6b0b5b4bc98ab1fc5da34438789557882d13d643edf0ed8742', ['checkOutlines', 'autohint']], +'Aacute': ['0cd697d39835b814a3b70ae1f3cdfc00447c1bfafcd3d6849529270445ab4d2df64d33ede79aeda6fa0b956e3224d00ac6fa86c483bedb233d228d50a17c7f53', ['checkOutlines', 'autohint']], +'Adieresis': ['8354c8947564d41944da20cf65f2f4d81bdbf813d42907286afa3c9825e1dcdd333e5045197f100ba597c006f23d5fe7fa2085c6e82117221b4aa9a0a7bcabfc', ['checkOutlines', 'autohint']], +'Atilde': ['90470914b949f334a8bafec259311ff9d3c4ad2f549e8866aef058bb6a40ad87b21caabf46a54bf38680035720e0319cd74b59bfcf0359abe1a4c6c81cd2bd12', ['checkOutlines', 'autohint']], +'Y': ['5b62758bb6ec97cb77fb983df37001e6a540c59570739994b49f60df15f3d6317ec40f013c2369d7df8593d025f688636bc14d188c5f54b69a9c141c64decdd5', ['checkOutlines', 'autohint']], +'Yacute': ['509b7570be4e7e22119376e8a6e52d12f23fe9857ecab6751e37c9115731f8a5d528dff45e9448f7f30780be00c2ed28d873b69e2cdb733372a7d0de1e44fcaf', ['checkOutlines', 'autohint']], +'Ydieresis': ['a9a3efe34de37e320e60851f66b19b2d48a010133ab65d8dcf4899bd01ffbc9cf3a597dd83edd41585be6bdd86f219b0a10e357cd21326c3e00fe528f7f7d440', ['checkOutlines', 'autohint']], +'Ytilde': ['353717ea828b9e315ddc46df5d77e1a5381b0edd0049667b15da2c52a68b0193ce48e29f84894b240f0d054973669b5c96edfe36d4f711fca2dc7926df1eaec9', ['checkOutlines', 'autohint']], +'a': ['721a0a18e8160bb9e56ea47f077ca818dc4d1b968a84346d08f767c9d58a89dcb636bc3f8e7a75e9eb2a3373c75b2d2f9b21cc386e2293d6d26536362e4c7202', ['checkOutlines', 'autohint']], +'aacute': ['294978ca4c0009b43ce400cea2d78743a7c612b2e45b06aa12aaacdf1fe426578fd3dbd5b53a398443c9c99148795dc29d9fd52117bb026efce43077b2c769aa', ['checkOutlines', 'autohint']], +'acutecmb': ['8a67808725d5ac77e961e53c1d58dcac2e6f884e2eddf1f45a1d0093dd2c94718c8e695f95558bbf06a96ce5eb47b559b79b171b1cb80242353980792dab323c', ['checkOutlines', 'autohint']], +'acutecmb.cap': ['9c3b2cc3574f1991a9158a4991592ccb7cb981882d9e26d8ebdb996c029dd01f998ff6584139a462cfadccd39d1a6e52ec1f39e939b8248a022eec120d08010c', ['checkOutlines', 'autohint']], +'adieresis': ['b7ca36da869f79fbe334282ea1ed2ac0e65a479b242563e3d39091848de0dc5b746c464ea7f9b65c068e1d63d7ff6c93b1165486670ab6f5ba21f36b300d7b48', ['checkOutlines', 'autohint']], +'atilde': ['e55774867711e5b04bb9fb689d2849d1da0abdeeaeea575dd54c4b63cd22fbaddb18dcd07ccb42c62cb4e8f5aae5de3ef0d0dd2f640557e4206417a0761c709e', ['checkOutlines', 'autohint']], 'dieresiscmb': ['bd86ba41ccbb9334e221355c334796a297a079b60d27e2a55b4feb18ce7ebeab713d5d95f545da2999c4bb05bde67f59065a1b9ea50724cddf2ade30a5441988', ['checkOutlines', 'autohint']], -'dieresiscmb.cap': ['4d7a2f9b4cf36df790b0824d8256943c760473a58441969b990de39ab6334cf09fe29e28a7035e43e951f4b1fa434d0f1664906ba736d5ae43a899f9c7d2cd4a', ['checkOutlines', 'autohint']], +'dieresiscmb.cap': ['605599f7c388689bd53e72c9dbbce3f49e4173bda11a6930d86e2e749508e729814da8f1b79553c924a647a24060dfdbd7c69ae00e8d8552f52f070b2b0ca27a', ['checkOutlines', 'autohint']], 'hashMapVersion': (1, 0), -'tildecmb': ['c392b6248cad6376d435277f9775d39abf00c81e59d2c1f7e05ce4916f75637ee1c45102f2bb5455f524496590aa5fa19fc575c50ef2730c2b0502fdd2368384', ['checkOutlines', 'autohint']], -'tildecmb.cap': ['dbd3f8a45f5165e90d9b292dad8eb3cda488933102f2811b0b2bda8d8701baf4dc6d96201c7c225d8ded238d64076fd9c7662a812432ac4a82a2f04685728dcb', ['checkOutlines', 'autohint']], -'y': ['d8ecf580e44340782ca7e7e2df5e5b64399132bcf83fc533a38d1d063c58a36ff0c4ef8ae5475230e7e11718d89e6d77c057a681d6079524ef9eb5845bb7d685', ['checkOutlines', 'autohint']], -'yacute': ['4408d207ed66e0474d3bfee754eb0f61088a018d75799f6c2ec1f3e2f017115f570834d573c193054137eadf479ac0edc8d27ed8a519b88689120ffb71915575', ['checkOutlines', 'autohint']], -'ydieresis': ['a5bf17d5e57890254aff6dcb105d87093849c40b8c2fb1c9f39fb8fc0eef5981b0768e02faf4f8c9680a7ac64d5dd541adcb956248c3094cd8671f307037a672', ['checkOutlines', 'autohint']], -'ytilde': ['b42671de6c5cfa3ea48aa766e06beda0318a459e1792f51f0eeb284578fc7eab25b769d16f9ec37f6f4e6d7700b6908cc6a8ca789783c7c604fd764e51ffe09e', ['checkOutlines', 'autohint']], +'tildecmb': ['e035dbe66da59fe21634f7277549dfc27ba18305f96cfac7a9a4a06961b85cdf5bd19d1e6926bb59ff76d5b6ff3b30bb6e0b4d47e990cd069c02cf26a0c0ef6f', ['checkOutlines', 'autohint']], +'tildecmb.cap': ['9ca1b997ff89e302079418a27950cafc15240afedb366097dc2a1586e6b2b29b7d84c4999707ab0f4543c3bf8136dfd2272408504cb9724653b5f1ca2ee9814f', ['checkOutlines', 'autohint']], +'y': ['3955d121a5a3a54abb661c78a46afabbaf4f0af640545b5ff82d8cfa04751b495950b71272912c45dee1bf12663528b3944caec27c96adbdba6e195dccadcf51', ['checkOutlines', 'autohint']], +'yacute': ['b63d7e06e6952476defbf026b1af1c5342896e246f22f815bf6005e7ad5225492a72fd8268f5564b9a9fa6fe77e6f002b8ece02a45cc9c01e68a252960c4e6ca', ['checkOutlines', 'autohint']], +'ydieresis': ['98ae92c210dd6f63dbe69c099f0135cc9fa1af6208cf5f1e455a60ec86471af9864599f9d9ffdf65d7440ac86f9fa7b4f26b7d0b4b1ab70791dbe71df7c90f29', ['checkOutlines', 'autohint']], +'ytilde': ['9758fc4bee4ccb7a76d119f1d6efc10b17d20ffbca840fb7ae9e69ffacb69286ad258ba7eeec8b4acf153fd5a995841616240505bbd24a4be542d33d13dd3f73', ['checkOutlines', 'autohint']], } diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/regular1.ufo/fontinfo.plist index d27b1245f..6046fcc60 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/fontinfo.plist @@ -1,23 +1,25 @@ - + ascender - 729 + 729.2183544303797 capHeight - 669 + 669.2594936708861 copyright Copyright 2014 - 2017 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. descender - -239 + -239.2594936708861 familyName Source Serif Pro + guidelines + italicAngle 0 openTypeHheaAscender - 993 + 1036 openTypeHheaDescender - -321 + -335 openTypeHheaLineGap 0 openTypeNameDesigner @@ -55,9 +57,9 @@ 4 openTypeOS2TypoAscender - 700 + 730 openTypeOS2TypoDescender - -259 + -270 openTypeOS2TypoLineGap 0 openTypeOS2UnicodeRanges @@ -75,29 +77,29 @@ openTypeOS2VendorID ADBO openTypeOS2WinAscent - 993 + 1036 openTypeOS2WinDescent - 321 + 335 postscriptBlueFuzz 0 postscriptBlueScale 0.0375 postscriptBlueValues - -15.21 + -15.205696202531646 0 - 474.53 - 487.66 - 526.51 - 539.63 - 549.42 - 562.55 - 646.05 - 659.18 - 669.26 - 684.47 - 729.22 - 749.22 + 474.5348101265823 + 487.65822784810126 + 526.506329113924 + 539.629746835443 + 549.4240506329114 + 562.5474683544304 + 646.0537974683544 + 659.1772151898734 + 669.2594936708861 + 684.4651898734177 + 729.2183544303797 + 749.2183544303797 postscriptFamilyBlues @@ -125,18 +127,18 @@ SourceSerifPro-Regular postscriptOtherBlues - -249.26 - -239.26 + -249.2594936708861 + -239.2594936708861 postscriptStemSnapH - 55.78 - 40.82 + 55.78164556962025 + 40.822784810126585 postscriptStemSnapV - 84.53 - 94.53 + 84.5253164556962 + 94.5253164556962 postscriptUnderlinePosition -75 @@ -147,12 +149,12 @@ trademark Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. unitsPerEm - 1000 + 1000.0 versionMajor 1 versionMinor 0 xHeight - 475 + 474.5348101265823 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index cd6cc6fa0..2add5a1f2 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -1,38 +1,36 @@ - - - + + + - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 7780e04248642674813a2d2c471fbb3f9b21a4c2aea4421fb53e99d0dca3f6865ff730ac7f612c1ce78a83f7acd311df8412fe2e2711a6527d8fcec57eee0ff9 hintSetList @@ -80,7 +78,9 @@ + id + 41ee32b9c6b51cda98d417985f7ca52ac0aae8ffb3c1a9584b4e15b76e5b2fe06d58ec1c019e3ca71a94eac417cea8bfa20e6118e2f6f9166cc2d1a511762881 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index 1eed7b534..ba5b8040a 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -1,56 +1,54 @@ - - - + + + - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 598fa5698308cf0bf4633b8df8d19e6225dc530bbb5112f87ce4a1b3fdb0a79aaaf3c8941c9a82a5842575d22f3b14ee0e4233b88c408caf44691e561debde8f hintSetList @@ -102,7 +100,9 @@ + id + ff5a3c9976be06b32b0f8c0e3c44a4b38feedc9e963693a4e355f191f16e7948c47613787113ba3981af0dbbdd50488735125fad5b9afc49f273d37eb1206703 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index bf3f50785..eeba21900 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -1,66 +1,64 @@ - - - + + + - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - b2dfdbe9d17bcb4ebd988b3074becb070eb139e333337b559f776b50e8f60d4b4ed5f65110b97940b11b36493426c087167decbd4f98af223be8b772446d6bb0 hintSetList @@ -129,7 +127,9 @@ + id + d91fa779f87de4a744fd39078410e1e5d0a0523b47c1898999dbe63830c1cfd1e9dd13249683d99271b1d6e41792eb382a09aa44ed66d63ed287b1af1808426b - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 204da2cf5..155aa3178 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -1,66 +1,64 @@ - - - + + + - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 3dc41d5c62d20d2d6a613ad55150cfa12f3c9915303039848c8b57226d6976378a1778614a1632fa414a3f89b7238a4c568dcc178b96f2785a1282ee164503f6 hintSetList @@ -155,7 +153,9 @@ + id + 1c7753620759d71e9468e6df5367c761ad8250517e29e8d30c6e2f93c6054f3025ebb7fa33bf75022d5de84cf7830e99b196201fdac28f1f7a874678aae1ecaa - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index 50c1e851a..3b7d43f56 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -1,42 +1,40 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - c2acd946962abdd4405b511377a312a3136ace20e1f5b7d9a33b6a43a87ebc5f04ab54c42ce0c3253988540fc3eda2a415af2f3cd6f933792b3e2a395a2725ad hintSetList @@ -103,7 +101,9 @@ + id + 016b3ad6d0a94677de06af2d7b59e62b71deeed9f53cf14d8ed94bc0914f70ece62d52a72d8316cc3a4bfc1e5f1b7c1d6d85035d5c1776aa927dbc7b9ccd4ae0 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index bd6dcd2c3..535b3ecbb 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -1,60 +1,58 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - de8c1981a39009741f2454f6052e146ba21fc6c3ecef77a7fc1005597388fa0bf59a4ec84aae3e60c3a484fbf9add16d09433b3926e21e09e4337929236f586e hintSetList @@ -127,7 +125,9 @@ + id + 51a1c8e3c6c38527a76d75eab3c0d1cf8376b1b70a7bf7ba9ce6bda65ab60b6f6820ea21a10d93c5918e574cd59e9b9893fb0cc4573714a596a726974c3032b9 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index 604d2f3e7..83c168d77 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -1,70 +1,68 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - b73a908f2aeb9039a6854b4bcf2e41571fb6c4e0644bee80e1a4c0df58def4078426833e93c278f5585873270d2d92cea92497d243de2d3114043e5aa00e0150 hintSetList @@ -144,7 +142,9 @@ + id + 5bb90d1f11c1781070fbaa2c65d48e09e094df9f7f303e53dea9a6fc801e7dd403f2d44e437189cf85abfa31154fd604472ee20883e3790e1ccf4c1b96eff5d4 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index 831b63e78..1601d02e9 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -1,70 +1,68 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 145cbaa8e18a7eaa9e30eca3e670aedec7c8eb7970709ae699013cb0d4fffc88c7ad5de190225169c58fb225be3961c78cb1fbdec53c194dfd7928e1bfe28b95 hintSetList @@ -180,7 +178,9 @@ + id + b53cd84015e2fb3045da68b0f33eb56a2022af50124ef0b1cd4a86abcf245db94a9e5cc9eafb220f81c3c818e5ba7d773258eba902edc58c06ec39c32cc8c64e - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index 69c4bd8b5..55902a876 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -1,78 +1,76 @@ - - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 91c2f00b245fffd5e37c771304e339f676078a7067774a4c42c4dd6d82c02bc00be42ec3943ba9cf0701cdf79dabea3b3951f6f1d0001dea6a7b5c19e19cea9c hintSetList @@ -109,7 +107,9 @@ + id + 5038b4e04c6b5ca94794974c32027e07d3d0508b3bbfe4758f58c7d750a247a4ff6d2b2ddec2737dfaebba20827a4eebbc8478880b09a024e6556e9f42aab730 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index a8e4934d3..7f31fa364 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -1,96 +1,94 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 65be6738ecdb7a8253cdf45b2d7ad05593d546d76c317ca1a00c7055aec0b946e368aee94bdaac1f91e41ee83def221f74c2d79d6387c87110476427b06302eb hintSetList @@ -127,7 +125,9 @@ + id + 2336815d4d09676a75faeaaa1002712880f5d4122a0a25473e59b6ce7b2d01a0a20a4824dcc15dc9bfe654f9bb22833c924f4eb6c2fef65c38851e079dbf6cf0 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index 5a1e4dda6..4fa4359c1 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -1,31 +1,30 @@ - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 090b5c4db92217cb2087491c123f45921c35af0582980329e6176c7b4fece217b605446be3f7c67a5f75a49f0dc8d60180257a8778abbb10fcd73d30d6a8624f hintSetList @@ -38,7 +37,9 @@ + id + 4f69fb0369e25c8d9bc2a5c15e254439b5119a04bc75560f1e65dae1032aa5cae22c202a0571c12bd2b64536b48abb9f630668af355f9c14aa5435efb7273b9a - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index ee8568efa..fa0f39427 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -1,32 +1,31 @@ - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 2fa3640bd174e92be2e97df1e4ccf30d710d5eb72963511351a165aeddee4a08fb3fd73c113c9bf9e49963b89d7ca2decb1a8e0de892ed68adb6f1f59eff641c hintSetList @@ -39,7 +38,9 @@ + id + 06d5cafcccde0872914c9bcb05176dfc452bdc8e062c26c7f9d09b37e6c006b4e08cc08020e367d7c1cbcd961cbeaa30f807a0e1cb6fd943fdec01ae9372f593 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index 80b84473a..757f32244 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -1,106 +1,104 @@ - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 8b46e158a799fe762633ff3debd5ff80b3a135fdf0c942421316848cb46cca413d0483723e03d7e4c60774680db97e2e2794719574092d45e7f7b3a108e1f86c hintSetList @@ -188,7 +186,9 @@ + id + 6653e9c41cbb7a9b52fb421ac3d0e4e5c00677eafbfc30a32bb57b8c69b51ad099c021189962702b9cf4090c0494166588774dac29d2c49adb238b49ea8193c6 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index 598f79aa0..d6d332055 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -1,106 +1,104 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 5fd8777229a4c54f717549a275f8eae562e298f503cceba0f8a318df8d570b370544f8bb0a5c2e8802f5f0219264f64827c99f6704affa5ae457a67d9e83c48c hintSetList @@ -174,7 +172,9 @@ + id + a1a03cf6f24bef978f33bc771f2713cebdb1ca2bfeab58498ccf677321961305fd1106e9f6946edee7563cc1a61e9bd5124c6d4656a69e9e0e0e2c99bce834a1 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist index bf3d7b78c..f140c9be6 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -1,50 +1,50 @@ - + - - A - A_.glif - Aacute - A_acute.glif - Adieresis - A_dieresis.glif - Atilde - A_tilde.glif - Y - Y_.glif - Yacute - Y_acute.glif - Ydieresis - Y_dieresis.glif - Ytilde - Y_tilde.glif - a - a.glif - aacute - aacute.glif - acutecmb - acutecmb.glif - acutecmb.cap - acutecmb.cap.glif - adieresis - adieresis.glif - atilde - atilde.glif - dieresiscmb - dieresiscmb.glif - dieresiscmb.cap - dieresiscmb.cap.glif - tildecmb - tildecmb.glif - tildecmb.cap - tildecmb.cap.glif - y - y.glif - yacute - yacute.glif - ydieresis - ydieresis.glif - ytilde - ytilde.glif - + + A + A_.glif + Aacute + A_acute.glif + Adieresis + A_dieresis.glif + Atilde + A_tilde.glif + Y + Y_.glif + Yacute + Y_acute.glif + Ydieresis + Y_dieresis.glif + Ytilde + Y_tilde.glif + a + a.glif + aacute + aacute.glif + acutecmb + acutecmb.glif + acutecmb.cap + acutecmb.cap.glif + adieresis + adieresis.glif + atilde + atilde.glif + dieresiscmb + dieresiscmb.glif + dieresiscmb.cap + dieresiscmb.cap.glif + tildecmb + tildecmb.glif + tildecmb.cap + tildecmb.cap.glif + y + y.glif + yacute + yacute.glif + ydieresis + ydieresis.glif + ytilde + ytilde.glif + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index ed2ebb648..1aa67bbe7 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -1,41 +1,40 @@ - + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - fad02e33b40a0ab4c263bf66d3e4176909496e6f7459b413e5e543f31dcbdcf3adf03862d50491bc8a1cdac76ce1e8a8227399ae204be8fc2ae115cecff6ba76 hintSetList @@ -49,7 +48,9 @@ + id + fad02e33b40a0ab4c263bf66d3e4176909496e6f7459b413e5e543f31dcbdcf3adf03862d50491bc8a1cdac76ce1e8a8227399ae204be8fc2ae115cecff6ba76 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index 3baa4e01f..c30e1891a 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -1,42 +1,42 @@ - - + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - f7a858fc5ce5ef870150b54780912c27fb8a0e4a72b5bb23182d317a49aadb82b7d299031bdce8ef6861eaf067db13397dc1431adcb646e51060d3763c9fb089 hintSetList @@ -45,12 +45,14 @@ stems hstem 595.77 113.89 - vstem -163.98 119.1 - vstem 44.88 119.1 + vstem -163.97 119.09 + vstem 44.88 119.09 + id + a0d5e568c0633907005e2a1bc725b1bbd2fdb564f3081d62158fe98003018084c03f934c8b98ab291c1868d318ce8c3e38d92674a1f1b9f72f6a2b48cee830fc - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index 3d6db559c..7e2c080ff 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -1,41 +1,40 @@ - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - dff84c370c64148bb4a9b5e88a5033de747871a96d7174c43e2fede35f66651eb9d6633ec7514aac07d49f614916c65506621040ee661c434794bfaa3dc77ab6 hintSetList @@ -69,7 +68,9 @@ + id + 843142d740834fefe8c481012a51db442948781eef04a309e93455e543abe485500dbab71454228224a3e577561e52e12c0d2e81098db47ec8f0fdd0b5c07704 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index c87ccd3ad..8d0f73991 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -1,42 +1,41 @@ - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 9ea50aa53466e11241884f18221ec117db5f775cecfeddb3a38691ad88818e90e289a4fab4016c70df0f5d471cdd8ac3cd7c756d94bc85bafbda4f4eb7a61924 hintSetList @@ -69,7 +68,9 @@ + id + 9ea50aa53466e11241884f18221ec117db5f775cecfeddb3a38691ad88818e90e289a4fab4016c70df0f5d471cdd8ac3cd7c756d94bc85bafbda4f4eb7a61924 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index dacd2bccf..76f59d93c 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -1,48 +1,46 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 8b72155e00d7be99bbfc8a89e73654f7d9f64886da28f7dff78841e4fad9bc5e60e89bdfc0d80516977ef3665cfa331e00d25450697744a755016b468ad4a8ba hintSetList @@ -116,7 +114,9 @@ + id + ea7cd6cde48af9437534ff76af8acf85cc636835efb048db671cf6dbbf3b8a3d710496495711877704a7b14f7a551cccd1d88f87725f5a9b388d8d2063175dc6 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index 597c66e39..00b56ffff 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -1,66 +1,64 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 897ee0f4ac094776107aab40bf79dcba90fa378759721509c3d0662660fe18bd9da81c1d2c36f137157ac2bbdfede46c10b62f71d734ed521b7bcc8f6aefac52 hintSetList @@ -134,7 +132,9 @@ + id + e382a176d33cfafe1f605b1bf200c9615004fd6be0e3b596aa320a09818bc6aab76d8a9671e493c351bbb648801dd2ddfd2cac89b616b6d39c0d124e08a9e209 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index 005be6064..806ed177b 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -1,76 +1,74 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - a3a5a7b549beb7ee405863365f3da14b412e3d5c6a69e1074733498e82826ca2f629ae9cd25cefb7df136e02bb43c0a9716aac7a4375f4a07dc28c40300dcb93 hintSetList @@ -163,7 +161,9 @@ + id + 76a32ba3e1461ffed77974e97afd32c4856f4ca47f7fd2c518d202682cec9c20e125a83bc0cea94b60019322d59945e436400b4c2c2cffc53f44f229485646cb - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index 8490ac62b..e771540e3 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -1,76 +1,74 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 - id - 82983743a88b9de8b641aa8062088646336d7dc82cec5a4623d23ea935d5baf18636dcc70bab7a613d755e2011036522817385c101c787e3aba618a845e747e4 hintSetList @@ -186,7 +184,9 @@ + id + f599d7e9c71b399e0b3cc8898f8512f40f4009f09e6ca8e27158d5f17246633edb2bf4c249322715d0869809d2bae67bcfdbafb9a692bc5beb43644dcc7f3021 - \ No newline at end of file + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_.glif index 11b082ab4..b5ba32962 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_.glif @@ -1,20 +1,23 @@ - - - + + + + + + - - - + + + - + - + @@ -35,14 +38,5 @@ - - - - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_acute.glif index 37f140f66..d3f3b14a8 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_acute.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_dieresis.glif index 025ff9d03..3c4bf5f5f 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_dieresis.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_tilde.glif index 7596ac19a..d7c3dbbc3 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/A_tilde.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_.glif index e1e49f02f..be9e2165c 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_.glif @@ -1,7 +1,9 @@ - - - + + + + + @@ -16,15 +18,15 @@ - - + + - - + + @@ -47,11 +49,5 @@ - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_acute.glif index 2ed4f88ed..c9f8ded47 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_acute.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_dieresis.glif index e1778e9ee..9fbc3c929 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_dieresis.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_tilde.glif index c8b9da851..47f4c1c7a 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/Y_tilde.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/a.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/a.glif index f762b3395..e568ccc1e 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/a.glif @@ -1,7 +1,10 @@ - - - + + + + + + @@ -15,14 +18,14 @@ - + - + @@ -36,14 +39,14 @@ - + - + - + @@ -70,14 +73,5 @@ - - - - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/aacute.glif index 3d45199ea..745c3376d 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/aacute.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/acutecmb.cap.glif index 3fba070a0..e409ad68f 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/acutecmb.cap.glif @@ -1,10 +1,11 @@ - - + + + - - + + @@ -12,15 +13,12 @@ - + - - - diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/acutecmb.glif index d41df00e0..e4f784bf9 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/acutecmb.glif @@ -1,6 +1,7 @@ - - + + + @@ -8,7 +9,7 @@ - + @@ -17,11 +18,8 @@ - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/adieresis.glif index b1294b935..506e963ba 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/adieresis.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/atilde.glif index 299beaadc..3dae7453d 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/atilde.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/contents.plist index 3c13e1fa0..f140c9be6 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/contents.plist +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/contents.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/dieresiscmb.cap.glif index 30ed174a4..b233e38c9 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/dieresiscmb.cap.glif @@ -1,18 +1,19 @@ - - + + + - - - + + + - - - + + + @@ -29,8 +30,5 @@ - - - diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/dieresiscmb.glif index 788e5f859..171d09805 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/dieresiscmb.glif @@ -1,6 +1,8 @@ - - + + + + @@ -30,11 +32,5 @@ - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/tildecmb.cap.glif index 29671ff5c..3e41197e8 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/tildecmb.cap.glif @@ -1,5 +1,6 @@ - - + + + @@ -11,12 +12,12 @@ - + - + - + @@ -26,11 +27,8 @@ - + - - - diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/tildecmb.glif index fe4cac459..2e7b81c32 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/tildecmb.glif @@ -1,6 +1,7 @@ - - + + + @@ -28,10 +29,7 @@ - - - - + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/y.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/y.glif index e95d355c5..6b44789e5 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/y.glif @@ -1,7 +1,9 @@ - - - + + + + + @@ -13,47 +15,41 @@ - - - - + + + + - - + + - - + + - + - - + + - - - - - - + + + + + + - - - - - - diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/yacute.glif index 3c498f307..1560f4bd5 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/yacute.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/ydieresis.glif index bd1fc2a07..978a13956 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/ydieresis.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/ytilde.glif index ceeb63d39..81c5ea606 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs/ytilde.glif @@ -1,6 +1,6 @@ - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/regular1.ufo/groups.plist index 013b69729..ca1a568cf 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/groups.plist +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/groups.plist @@ -1,57 +1,57 @@ - + - @MMK_L_LAT_A + public.kern1.LAT_A A Aacute Adieresis Atilde - @MMK_L_LAT_Y + public.kern1.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_L_LAT_a + public.kern1.LAT_a a aacute adieresis atilde - @MMK_L_LAT_v + public.kern1.LAT_v y yacute ydieresis ytilde - @MMK_R_LAT_A + public.kern2.LAT_A A Aacute Adieresis Atilde - @MMK_R_LAT_Y + public.kern2.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_R_LAT_a + public.kern2.LAT_a a aacute adieresis atilde - @MMK_R_LAT_y + public.kern2.LAT_y y yacute diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/kerning.plist b/tests/makeinstancesufo_data/expected_output/regular1.ufo/kerning.plist index b254d1b87..7e2d8174f 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/kerning.plist +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/kerning.plist @@ -1,52 +1,52 @@ - + - @MMK_L_LAT_A + public.kern1.LAT_A - @MMK_R_LAT_A - 10 - @MMK_R_LAT_Y + public.kern2.LAT_A + 9.58860759493671 + public.kern2.LAT_Y -90 - @MMK_R_LAT_a - -5 - @MMK_R_LAT_y - -50 + public.kern2.LAT_a + -5.205696202531645 + public.kern2.LAT_y + -50.41139240506329 - @MMK_L_LAT_Y + public.kern1.LAT_Y - @MMK_R_LAT_A - -90 - @MMK_R_LAT_Y - 0 - @MMK_R_LAT_a - -80 - @MMK_R_LAT_y - -69 adieresis - -79 + -78.76582278481013 atilde - -61 + -60.822784810126585 + public.kern2.LAT_A + -90.4113924050633 + public.kern2.LAT_Y + 0.4113924050632911 + public.kern2.LAT_a + -80 + public.kern2.LAT_y + -69.17721518987342 - @MMK_L_LAT_a + public.kern1.LAT_a - @MMK_R_LAT_A - 10 - @MMK_R_LAT_Y - -80 - @MMK_R_LAT_y - -10 + public.kern2.LAT_A + 9.58860759493671 + public.kern2.LAT_Y + -79.5886075949367 + public.kern2.LAT_y + -10.41139240506329 - @MMK_L_LAT_v + public.kern1.LAT_v - @MMK_R_LAT_A - -71 - @MMK_R_LAT_Y - -50 - @MMK_R_LAT_a - -16 - @MMK_R_LAT_y - 9 + public.kern2.LAT_A + -71.23417721518987 + public.kern2.LAT_Y + -50.41139240506329 + public.kern2.LAT_a + -15.617088607594937 + public.kern2.LAT_y + 9.177215189873419 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/layercontents.plist b/tests/makeinstancesufo_data/expected_output/regular1.ufo/layercontents.plist index 7b58e8f22..b07680883 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/layercontents.plist +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/layercontents.plist @@ -1,14 +1,14 @@ - + - - - public.default - glyphs - - - com.adobe.type.processedglyphs - glyphs.com.adobe.type.processedglyphs - - + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/lib.plist b/tests/makeinstancesufo_data/expected_output/regular1.ufo/lib.plist index 2ec6ba72b..21c25767b 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/lib.plist +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/lib.plist @@ -1,4 +1,4 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/metainfo.plist b/tests/makeinstancesufo_data/expected_output/regular1.ufo/metainfo.plist index 58145b5a1..7b8b34ac6 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/metainfo.plist +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/metainfo.plist @@ -1,10 +1,10 @@ - + creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion - 2 + 3 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/semibold.ufo/fontinfo.plist index 3de4e2b70..ee0cf657e 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/fontinfo.plist @@ -12,12 +12,15 @@ -233 familyName Source Serif Pro + guidelines + + italicAngle 0 openTypeHheaAscender - 656 + 1036 openTypeHheaDescender - -212 + -335 openTypeHheaLineGap 0 openTypeNameDesigner @@ -55,9 +58,9 @@ 4 openTypeOS2TypoAscender - 462 + 730 openTypeOS2TypoDescender - -171 + -270 openTypeOS2TypoLineGap 0 openTypeOS2UnicodeRanges @@ -75,9 +78,9 @@ openTypeOS2VendorID ADBO openTypeOS2WinAscent - 656 + 1036 openTypeOS2WinDescent - 212 + 335 postscriptBlueFuzz 0 postscriptBlueScale diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 6acdc60a8..a00fb47b6 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -1,95 +1,98 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 752b730ee00bccab449b85bec60262ce5ed1c7333666759123d05ec49d9b9cb72379cccd26dc76883c734fefc87a5d094d4bc55c08a227db8752c8b33f024a66 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - vstem 7 650 - - - - pointTag - hintSet0001 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - vstem 7 222 - - - - pointTag - hintSet0002 - stems - - hstem 0 62 - hstem 205 52 - hstem 667 -20 - vstem 7 222 - - - - pointTag - hintSet0005 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - vstem 7 222 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + vstem 7 650 + + + + pointTag + hintSet0001 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + vstem 7 222 + + + + pointTag + hintSet0002 + stems + + hstem 0 62 + hstem 205 52 + hstem 667 -20 + vstem 7 222 + + + + pointTag + hintSet0005 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + vstem 7 222 + + + + id + 752b730ee00bccab449b85bec60262ce5ed1c7333666759123d05ec49d9b9cb72379cccd26dc76883c734fefc87a5d094d4bc55c08a227db8752c8b33f024a66 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index e8f0f44d6..f77bc165b 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -1,117 +1,117 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 13fa84f432b3245bb6196ff150652b3cd5c783afeae11b3b4e3b398d8a756080903271cf02cc950cf75cbd4a912e0c4e89b199728f07316deb56c91c397804f3 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 740 -20 - vstem 7 650 - - - - pointTag - hintSet0001 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 740 -20 - vstem 7 222 - - - - pointTag - hintSet0002 - stems - - hstem 0 62 - hstem 205 52 - hstem 667 -20 - hstem 740 -20 - vstem 7 222 - - - - pointTag - hintSet0005 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 740 -20 - vstem 7 222 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 740 -20 + vstem 7 650 + + + + pointTag + hintSet0001 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 740 -20 + vstem 7 222 + + + + pointTag + hintSet0002 + stems + + hstem 0 62 + hstem 205 52 + hstem 667 -20 + hstem 740 -20 + vstem 7 222 + + + + pointTag + hintSet0005 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 740 -20 + vstem 7 222 + + + + id + 13fa84f432b3245bb6196ff150652b3cd5c783afeae11b3b4e3b398d8a756080903271cf02cc950cf75cbd4a912e0c4e89b199728f07316deb56c91c397804f3 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index 4b51cdeb2..a5ec2d236 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -1,131 +1,131 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - e8c20a82fe058f6a4fe590ca83aa1a3d2ef4d65960aeaee1b551c80d2ae11199df0fa245d2d9bf7ae600650347a2f9ce62fd4436c6bd88b7f128e8f7af630aea - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 729 124 - vstem 154 130 - vstem 390 130 - - - - pointTag - hintSet0001 - stems - - hstem 0 61 - vstem 7 222 - - - - pointTag - hintSet0002 - stems - - hstem 0 62 - vstem 7 222 - - - - pointTag - hintSet0005 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - vstem 7 222 - - - - pointTag - hintSet0024 - stems - - hstem 729 124 - vstem 154 130 - vstem 390 130 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 729 124 + vstem 154 130 + vstem 390 130 + + + + pointTag + hintSet0001 + stems + + hstem 0 61 + vstem 7 222 + + + + pointTag + hintSet0002 + stems + + hstem 0 62 + vstem 7 222 + + + + pointTag + hintSet0005 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + vstem 7 222 + + + + pointTag + hintSet0024 + stems + + hstem 729 124 + vstem 154 130 + vstem 390 130 + + + + id + e8c20a82fe058f6a4fe590ca83aa1a3d2ef4d65960aeaee1b551c80d2ae11199df0fa245d2d9bf7ae600650347a2f9ce62fd4436c6bd88b7f128e8f7af630aea + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index f2adee70b..e4803cb28 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -1,169 +1,169 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 2fb1a712ab6c0e651bf5f76f1d0e2de229692997645b2b055d7589113ad52f1a72bccfbcf179fe713c6491632b09691e5088b2207ab3bebdc0cd52ca78239d1e - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 727 -20 - hstem 784 77 - vstem 7 650 - - - - pointTag - hintSet0001 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 727 -20 - hstem 784 77 - vstem 7 222 - - - - pointTag - hintSet0002 - stems - - hstem 0 62 - hstem 205 52 - hstem 667 -20 - hstem 727 -20 - hstem 784 77 - vstem 7 222 - - - - pointTag - hintSet0005 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 727 -20 - hstem 784 77 - vstem 7 222 - - - - pointTag - hintSet0028 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 713 77 - vstem 7 650 - - - - pointTag - hintSet0033 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 727 -20 - hstem 784 77 - vstem 7 650 - - - - pointTag - hintSet0034 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 727 -20 - hstem 784 77 - vstem 7 222 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 727 -20 + hstem 784 77 + vstem 7 650 + + + + pointTag + hintSet0001 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 727 -20 + hstem 784 77 + vstem 7 222 + + + + pointTag + hintSet0002 + stems + + hstem 0 62 + hstem 205 52 + hstem 667 -20 + hstem 727 -20 + hstem 784 77 + vstem 7 222 + + + + pointTag + hintSet0005 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 727 -20 + hstem 784 77 + vstem 7 222 + + + + pointTag + hintSet0028 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 713 77 + vstem 7 650 + + + + pointTag + hintSet0033 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 727 -20 + hstem 784 77 + vstem 7 650 + + + + pointTag + hintSet0034 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 727 -20 + hstem 784 77 + vstem 7 222 + + + + id + 2fb1a712ab6c0e651bf5f76f1d0e2de229692997645b2b055d7589113ad52f1a72bccfbcf179fe713c6491632b09691e5088b2207ab3bebdc0cd52ca78239d1e + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index bb8820944..11d7cdac2 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -1,211 +1,213 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 9f4435e144f32eb7cfa3bd81304551a3def3b2efc6009b5833c98ecefec726f6f94f7e007e6e62a724d85b5bea0cfae65d2df966dfc731c7b7c4f3696c89171a - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0008 - stems - - hstem 0 62 - hstem 292 13 - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0009 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0011 - stems - - hstem 0 62 - hstem 292 13 - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0012 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - vstem 404 218 - - - - pointTag - hintSet0013 - stems - - hstem 0 62 - hstem 292 13 - hstem 616 47 - vstem 251 130 - vstem 404 218 - - - - pointTag - hintSet0014 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - vstem 404 218 - - - - pointTag - hintSet0016 - stems - - hstem 0 62 - hstem 292 13 - hstem 616 47 - vstem 251 130 - vstem 404 218 - - - - pointTag - hintSet0017 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - vstem 404 218 - - - - pointTag - hintSet0018 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0023 - stems - - hstem 0 62 - hstem 220 85 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0026 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0030 - stems - - hstem 0 62 - hstem 220 85 - hstem 601 62 - vstem 251 130 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 62 + hstem 292 13 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0008 + stems + + hstem 0 62 + hstem 292 13 + hstem 616 47 + vstem 251 130 + + + + pointTag + hintSet0009 + stems + + hstem 0 62 + hstem 292 13 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0011 + stems + + hstem 0 62 + hstem 292 13 + hstem 616 47 + vstem 251 130 + + + + pointTag + hintSet0012 + stems + + hstem 0 62 + hstem 292 13 + hstem 601 62 + vstem 251 130 + vstem 404 218 + + + + pointTag + hintSet0013 + stems + + hstem 0 62 + hstem 292 13 + hstem 616 47 + vstem 251 130 + vstem 404 218 + + + + pointTag + hintSet0014 + stems + + hstem 0 62 + hstem 292 13 + hstem 601 62 + vstem 251 130 + vstem 404 218 + + + + pointTag + hintSet0016 + stems + + hstem 0 62 + hstem 292 13 + hstem 616 47 + vstem 251 130 + vstem 404 218 + + + + pointTag + hintSet0017 + stems + + hstem 0 62 + hstem 292 13 + hstem 601 62 + vstem 251 130 + vstem 404 218 + + + + pointTag + hintSet0018 + stems + + hstem 0 62 + hstem 292 13 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0023 + stems + + hstem 0 62 + hstem 220 85 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0026 + stems + + hstem 0 62 + hstem 292 13 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0030 + stems + + hstem 0 62 + hstem 220 85 + hstem 601 62 + vstem 251 130 + + + + id + 9f4435e144f32eb7cfa3bd81304551a3def3b2efc6009b5833c98ecefec726f6f94f7e007e6e62a724d85b5bea0cfae65d2df966dfc731c7b7c4f3696c89171a + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index 7e267a5e4..53ed24f34 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -1,205 +1,205 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - a5a6e11355fe78559edc53baefedf633f7cd74eff792b7757c1719d2bba698116b89aa955a5493a6b3298038d5be86cbb79743564409c5fa071cccdea790ebf7 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - hstem 734 -20 - vstem 251 130 - - - - pointTag - hintSet0008 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0009 - stems - - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0011 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0012 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0013 - stems - - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0014 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0016 - stems - - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0017 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0018 - stems - - hstem 0 62 - hstem 292 13 - vstem 251 130 - - - - pointTag - hintSet0023 - stems - - hstem 220 85 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0026 - stems - - hstem 292 13 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0030 - stems - - hstem 220 85 - hstem 734 -20 - vstem 251 130 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 62 + hstem 292 13 + hstem 601 62 + hstem 734 -20 + vstem 251 130 + + + + pointTag + hintSet0008 + stems + + hstem 616 47 + vstem 251 130 + + + + pointTag + hintSet0009 + stems + + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0011 + stems + + hstem 616 47 + vstem 251 130 + + + + pointTag + hintSet0012 + stems + + hstem 601 62 + vstem 404 218 + + + + pointTag + hintSet0013 + stems + + hstem 616 47 + vstem 404 218 + + + + pointTag + hintSet0014 + stems + + hstem 601 62 + vstem 404 218 + + + + pointTag + hintSet0016 + stems + + hstem 616 47 + vstem 404 218 + + + + pointTag + hintSet0017 + stems + + hstem 601 62 + vstem 404 218 + + + + pointTag + hintSet0018 + stems + + hstem 0 62 + hstem 292 13 + vstem 251 130 + + + + pointTag + hintSet0023 + stems + + hstem 220 85 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0026 + stems + + hstem 292 13 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0030 + stems + + hstem 220 85 + hstem 734 -20 + vstem 251 130 + + + + id + a5a6e11355fe78559edc53baefedf633f7cd74eff792b7757c1719d2bba698116b89aa955a5493a6b3298038d5be86cbb79743564409c5fa071cccdea790ebf7 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index bb416d564..43282cfd1 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -1,223 +1,223 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 55fdf5af393278f1956336fc44477dc2b9f34eb94bd7b2496c339bcc2d05a6226844016e8d47ecacc905054a88eff55e51f6cce1b388f3239255845ec883d2ea - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0008 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0009 - stems - - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0011 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0012 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0013 - stems - - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0014 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0016 - stems - - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0017 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0018 - stems - - hstem 0 62 - hstem 292 13 - vstem 251 130 - - - - pointTag - hintSet0023 - stems - - hstem 220 85 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0026 - stems - - hstem 292 13 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0030 - stems - - hstem 220 85 - vstem 251 130 - - - - pointTag - hintSet0031 - stems - - hstem 729 124 - vstem 174 130 - vstem 410 130 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 62 + hstem 292 13 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0008 + stems + + hstem 616 47 + vstem 251 130 + + + + pointTag + hintSet0009 + stems + + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0011 + stems + + hstem 616 47 + vstem 251 130 + + + + pointTag + hintSet0012 + stems + + hstem 601 62 + vstem 404 218 + + + + pointTag + hintSet0013 + stems + + hstem 616 47 + vstem 404 218 + + + + pointTag + hintSet0014 + stems + + hstem 601 62 + vstem 404 218 + + + + pointTag + hintSet0016 + stems + + hstem 616 47 + vstem 404 218 + + + + pointTag + hintSet0017 + stems + + hstem 601 62 + vstem 404 218 + + + + pointTag + hintSet0018 + stems + + hstem 0 62 + hstem 292 13 + vstem 251 130 + + + + pointTag + hintSet0023 + stems + + hstem 220 85 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0026 + stems + + hstem 292 13 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0030 + stems + + hstem 220 85 + vstem 251 130 + + + + pointTag + hintSet0031 + stems + + hstem 729 124 + vstem 174 130 + vstem 410 130 + + + + id + 55fdf5af393278f1956336fc44477dc2b9f34eb94bd7b2496c339bcc2d05a6226844016e8d47ecacc905054a88eff55e51f6cce1b388f3239255845ec883d2ea + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index 535a8cc19..eec603cff 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -1,246 +1,246 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 014b6de6ad518de9eaca394847c659fbc4d0caac08c2944221c230130159fca03455bc2091d5d8a51e8fb0e768018cb3f05ce29430bf680be2bf074451a371af - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - hstem 727 -20 - hstem 784 77 - vstem 251 130 - - - - pointTag - hintSet0008 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0009 - stems - - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0011 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0012 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0013 - stems - - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0014 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0016 - stems - - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0017 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0018 - stems - - hstem 0 62 - hstem 292 13 - vstem 251 130 - - - - pointTag - hintSet0023 - stems - - hstem 220 85 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0026 - stems - - hstem 292 13 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0030 - stems - - hstem 220 85 - hstem 727 -20 - hstem 784 77 - vstem 251 130 - - - - pointTag - hintSet0035 - stems - - hstem 713 77 - vstem 251 130 - - - - pointTag - hintSet0040 - stems - - hstem 784 77 - vstem 251 130 - - - - pointTag - hintSet0041 - stems - - hstem 220 85 - hstem 727 -20 - hstem 784 77 - vstem 251 130 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 62 + hstem 292 13 + hstem 601 62 + hstem 727 -20 + hstem 784 77 + vstem 251 130 + + + + pointTag + hintSet0008 + stems + + hstem 616 47 + vstem 251 130 + + + + pointTag + hintSet0009 + stems + + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0011 + stems + + hstem 616 47 + vstem 251 130 + + + + pointTag + hintSet0012 + stems + + hstem 601 62 + vstem 404 218 + + + + pointTag + hintSet0013 + stems + + hstem 616 47 + vstem 404 218 + + + + pointTag + hintSet0014 + stems + + hstem 601 62 + vstem 404 218 + + + + pointTag + hintSet0016 + stems + + hstem 616 47 + vstem 404 218 + + + + pointTag + hintSet0017 + stems + + hstem 601 62 + vstem 404 218 + + + + pointTag + hintSet0018 + stems + + hstem 0 62 + hstem 292 13 + vstem 251 130 + + + + pointTag + hintSet0023 + stems + + hstem 220 85 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0026 + stems + + hstem 292 13 + hstem 601 62 + vstem 251 130 + + + + pointTag + hintSet0030 + stems + + hstem 220 85 + hstem 727 -20 + hstem 784 77 + vstem 251 130 + + + + pointTag + hintSet0035 + stems + + hstem 713 77 + vstem 251 130 + + + + pointTag + hintSet0040 + stems + + hstem 784 77 + vstem 251 130 + + + + pointTag + hintSet0041 + stems + + hstem 220 85 + hstem 727 -20 + hstem 784 77 + vstem 251 130 + + + + id + 014b6de6ad518de9eaca394847c659fbc4d0caac08c2944221c230130159fca03455bc2091d5d8a51e8fb0e768018cb3f05ce29430bf680be2bf074451a371af + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index c6523758e..a7aebdaa4 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -1,130 +1,133 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 87ed06e8975db92c6b6a7e3ff523e0cb10104a121f0584b1e5413c0a96ce271b01fccbdec1b585f0d8baac9f9acd4121ebafd7c6fd09bbb8176560eebb3fc2bd - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -14 73 - hstem 445 48 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0009 - stems - - hstem -14 73 - hstem 445 48 - vstem 38 117 - vstem 313 62 - - - - pointTag - hintSet0012 - stems - - hstem -14 73 - hstem 445 48 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0013 - stems - - hstem -12 61 - hstem 445 48 - vstem 38 117 - vstem 313 118 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -14 73 + hstem 445 48 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0009 + stems + + hstem -14 73 + hstem 445 48 + vstem 38 117 + vstem 313 62 + + + + pointTag + hintSet0012 + stems + + hstem -14 73 + hstem 445 48 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0013 + stems + + hstem -12 61 + hstem 445 48 + vstem 38 117 + vstem 313 118 + + + + id + 87ed06e8975db92c6b6a7e3ff523e0cb10104a121f0584b1e5413c0a96ce271b01fccbdec1b585f0d8baac9f9acd4121ebafd7c6fd09bbb8176560eebb3fc2bd + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index 205e0874f..91e70ebf2 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -1,148 +1,148 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 344699632940de1452fb528c2427339d2a1e5c3e49027c57173028f303bfd3ab838bd41cd488bd4866e0cca0b7dc5d5d959c3e9dce9a02bd71edf0aa5411e5d0 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -14 73 - hstem 445 48 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0009 - stems - - hstem -14 73 - hstem 445 48 - vstem 38 117 - vstem 313 62 - - - - pointTag - hintSet0012 - stems - - hstem -14 73 - hstem 445 48 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0013 - stems - - hstem -12 61 - hstem 445 48 - vstem 38 117 - vstem 313 118 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -14 73 + hstem 445 48 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0009 + stems + + hstem -14 73 + hstem 445 48 + vstem 38 117 + vstem 313 62 + + + + pointTag + hintSet0012 + stems + + hstem -14 73 + hstem 445 48 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0013 + stems + + hstem -12 61 + hstem 445 48 + vstem 38 117 + vstem 313 118 + + + + id + 344699632940de1452fb528c2427339d2a1e5c3e49027c57173028f303bfd3ab838bd41cd488bd4866e0cca0b7dc5d5d959c3e9dce9a02bd71edf0aa5411e5d0 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index ff3399190..f8dcc7395 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -1,44 +1,45 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - w1000c-78740l-55708-973038753c85776127797138818c138836138859118878c928787287854869c24839-10808-44774 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 740 -20 - vstem -78 216 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 740 -20 + vstem -78 216 + + + + id + w1000c-78740l-55708-973038753c85776127797138818c138836138859118878c928787287854869c24839-10808-44774 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index 22e22cee5..e1b43cd96 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -1,45 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - w1000c-66580l-34555058332611c82652115679130699c130720130751107767c847675976741753c18715-19657-43619 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 555 212 - vstem -66 196 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 555 212 + vstem -66 196 + + + + id + w1000c-66580l-34555058332611c82652115679130699c130720130751107767c847675976741753c18715-19657-43619 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index 69df6fb3b..a38274676 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -1,174 +1,174 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - c0cd16506600a1e586b05a3d247374039626b238b2aaa1fc167b4a9bfbdb87865d78a646495a86e6423fd039f91135fc2ba5b88b03f5c3f2898b284631ec1c49 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -14 73 - hstem 445 48 - hstem 586 129 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0009 - stems - - hstem -14 73 - hstem 445 48 - hstem 586 129 - vstem 38 117 - vstem 313 62 - - - - pointTag - hintSet0012 - stems - - hstem -14 73 - hstem 445 48 - hstem 586 129 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0013 - stems - - hstem -12 61 - hstem 445 48 - hstem 586 129 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0029 - stems - - hstem -14 73 - hstem 445 48 - hstem 586 129 - vstem 77 136 - vstem 301 136 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -14 73 + hstem 445 48 + hstem 586 129 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0009 + stems + + hstem -14 73 + hstem 445 48 + hstem 586 129 + vstem 38 117 + vstem 313 62 + + + + pointTag + hintSet0012 + stems + + hstem -14 73 + hstem 445 48 + hstem 586 129 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0013 + stems + + hstem -12 61 + hstem 445 48 + hstem 586 129 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0029 + stems + + hstem -14 73 + hstem 445 48 + hstem 586 129 + vstem 77 136 + vstem 301 136 + + + + id + c0cd16506600a1e586b05a3d247374039626b238b2aaa1fc167b4a9bfbdb87865d78a646495a86e6423fd039f91135fc2ba5b88b03f5c3f2898b284631ec1c49 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index 23e36ca16..ed6d8885b 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -1,198 +1,198 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 771723cd247475c85116175b922e209f51039db98dfad6bbb154f5d60d5e0f84a7c22a785135f667dca16f9840b18fb0f3861161d9394e669862251914b34a36 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -14 73 - hstem 445 48 - hstem 573 77 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0009 - stems - - hstem -14 73 - hstem 445 48 - hstem 573 77 - vstem 38 117 - vstem 313 62 - - - - pointTag - hintSet0012 - stems - - hstem -14 73 - hstem 445 48 - hstem 573 77 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0013 - stems - - hstem -12 61 - hstem 445 48 - hstem 644 77 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0033 - stems - - hstem -14 73 - hstem 445 48 - hstem 573 77 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0038 - stems - - hstem -14 73 - hstem 445 48 - hstem 644 77 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0039 - stems - - hstem -12 61 - hstem 445 48 - hstem 644 77 - vstem 38 117 - vstem 313 118 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -14 73 + hstem 445 48 + hstem 573 77 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0009 + stems + + hstem -14 73 + hstem 445 48 + hstem 573 77 + vstem 38 117 + vstem 313 62 + + + + pointTag + hintSet0012 + stems + + hstem -14 73 + hstem 445 48 + hstem 573 77 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0013 + stems + + hstem -12 61 + hstem 445 48 + hstem 644 77 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0033 + stems + + hstem -14 73 + hstem 445 48 + hstem 573 77 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0038 + stems + + hstem -14 73 + hstem 445 48 + hstem 644 77 + vstem 38 117 + vstem 313 118 + + + + pointTag + hintSet0039 + stems + + hstem -12 61 + hstem 445 48 + hstem 644 77 + vstem 38 117 + vstem 313 118 + + + + id + 771723cd247475c85116175b922e209f51039db98dfad6bbb154f5d60d5e0f84a7c22a785135f667dca16f9840b18fb0f3861161d9394e669862251914b34a36 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist index bf3d7b78c..d4b4a3da7 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -1,50 +1,50 @@ - - A - A_.glif - Aacute - A_acute.glif - Adieresis - A_dieresis.glif - Atilde - A_tilde.glif - Y - Y_.glif - Yacute - Y_acute.glif - Ydieresis - Y_dieresis.glif - Ytilde - Y_tilde.glif - a - a.glif - aacute - aacute.glif - acutecmb - acutecmb.glif - acutecmb.cap - acutecmb.cap.glif - adieresis - adieresis.glif - atilde - atilde.glif - dieresiscmb - dieresiscmb.glif - dieresiscmb.cap - dieresiscmb.cap.glif - tildecmb - tildecmb.glif - tildecmb.cap - tildecmb.cap.glif - y - y.glif - yacute - yacute.glif - ydieresis - ydieresis.glif - ytilde - ytilde.glif - + + A + A_.glif + Aacute + A_acute.glif + Adieresis + A_dieresis.glif + Atilde + A_tilde.glif + Y + Y_.glif + Yacute + Y_acute.glif + Ydieresis + Y_dieresis.glif + Ytilde + Y_tilde.glif + a + a.glif + aacute + aacute.glif + acutecmb + acutecmb.glif + acutecmb.cap + acutecmb.cap.glif + adieresis + adieresis.glif + atilde + atilde.glif + dieresiscmb + dieresiscmb.glif + dieresiscmb.cap + dieresiscmb.cap.glif + tildecmb + tildecmb.glif + tildecmb.cap + tildecmb.cap.glif + y + y.glif + yacute + yacute.glif + ydieresis + ydieresis.glif + ytilde + ytilde.glif + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index e5977ab3e..115678efd 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -1,55 +1,56 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - b9ad12ab3802f90839f4577e7206e712c7ffd51c23b53f263f5b15e0e5e9a13623279373cad8bd0e5087c731eb6d7c752b638448d5b100c3024e38648cde30b1 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 729 124 - vstem -183 130 - vstem 53 130 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 729 124 + vstem -183 130 + vstem 53 130 + + + + id + b9ad12ab3802f90839f4577e7206e712c7ffd51c23b53f263f5b15e0e5e9a13623279373cad8bd0e5087c731eb6d7c752b638448d5b100c3024e38648cde30b1 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index 9ea8e9517..c1fa10397 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -1,56 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - e4d53fec4ede556d892d13c57360e86158af861c7fc37ba16aff3c8b0ee923a0eba3b1a6af630c67fb97aceacf394e50534345ba525a5345b80d77a36774e941 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 586 129 - vstem -180 136 - vstem 44 136 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 586 129 + vstem -180 136 + vstem 44 136 + + + + id + e4d53fec4ede556d892d13c57360e86158af861c7fc37ba16aff3c8b0ee923a0eba3b1a6af630c67fb97aceacf394e50534345ba525a5345b80d77a36774e941 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist new file mode 100644 index 000000000..aa5f6f5fe --- /dev/null +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/layerinfo.plist @@ -0,0 +1,12 @@ + + + + + lib + + org.unifiedfontobject.normalizer.imageReferences + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index d06faa08a..7531b4107 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -1,74 +1,75 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - eacaa78f63d99a10c17af2d6ec70c9a910ecede0e63d9c40f12d105c37b20ab056b7c3ed29966a7c708e3605979c2853b74ce7283906a3a10a27b94e255a6040 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 727 -20 - hstem 784 77 - vstem -181 362 - - - - pointTag - hintSet0004 - stems - - hstem 713 77 - vstem -181 362 - - - - pointTag - hintSet0009 - stems - - hstem 727 -20 - hstem 784 77 - vstem -181 362 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 727 -20 + hstem 784 77 + vstem -181 362 + + + + pointTag + hintSet0004 + stems + + hstem 713 77 + vstem -181 362 + + + + pointTag + hintSet0009 + stems + + hstem 727 -20 + hstem 784 77 + vstem -181 362 + + + + id + eacaa78f63d99a10c17af2d6ec70c9a910ecede0e63d9c40f12d105c37b20ab056b7c3ed29966a7c708e3605979c2853b74ce7283906a3a10a27b94e255a6040 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index d9535bb83..663979ce6 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -1,73 +1,74 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - a1f4701fd663124226b64ce9a3d7af902fd4bcc559f0388b26f376d38c2d5f8ba2f1912e2c27b7ba0e726a40a241a9ceb2e80441c93b7b7f095aae4cd44ecfb8 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 644 77 - vstem -170 340 - - - - pointTag - hintSet0004 - stems - - hstem 573 77 - vstem -170 340 - - - - pointTag - hintSet0009 - stems - - hstem 644 77 - vstem -170 340 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 644 77 + vstem -170 340 + + + + pointTag + hintSet0004 + stems + + hstem 573 77 + vstem -170 340 + + + + pointTag + hintSet0009 + stems + + hstem 644 77 + vstem -170 340 + + + + id + a1f4701fd663124226b64ce9a3d7af902fd4bcc559f0388b26f376d38c2d5f8ba2f1912e2c27b7ba0e726a40a241a9ceb2e80441c93b7b7f095aae4cd44ecfb8 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index fb01e421e..81d6608e0 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -1,175 +1,177 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 05a190d278479f20f196dc04433ac2d457da750672202bdc5b6eac0abb4a6ff3a376d5a68a40890330d910b49a41bf36dfa9e9c0ca71dc46f414f94713ca9165 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -243 44 - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0001 - stems - - hstem -243 44 - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0002 - stems - - hstem -243 44 - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0004 - stems - - hstem -243 44 - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0005 - stems - - hstem -243 44 - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0007 - stems - - hstem -243 44 - hstem 439 40 - vstem 0 521 - - - - pointTag - hintSet0008 - stems - - hstem -243 44 - hstem 424 55 - vstem 0 521 - - - - pointTag - hintSet0010 - stems - - hstem -243 44 - hstem 439 40 - vstem 0 521 - - - - pointTag - hintSet0011 - stems - - hstem -243 44 - hstem 424 55 - vstem 0 521 - - - - pointTag - hintSet0025 - stems - - hstem -243 124 - hstem 424 55 - vstem 0 521 - - - - pointTag - hintSet0028 - stems - - hstem -243 44 - hstem 424 55 - vstem 0 521 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -243 44 + hstem 424 55 + vstem 329 192 + + + + pointTag + hintSet0001 + stems + + hstem -243 44 + hstem 439 40 + vstem 329 192 + + + + pointTag + hintSet0002 + stems + + hstem -243 44 + hstem 424 55 + vstem 329 192 + + + + pointTag + hintSet0004 + stems + + hstem -243 44 + hstem 439 40 + vstem 329 192 + + + + pointTag + hintSet0005 + stems + + hstem -243 44 + hstem 424 55 + vstem 329 192 + + + + pointTag + hintSet0007 + stems + + hstem -243 44 + hstem 439 40 + vstem 0 521 + + + + pointTag + hintSet0008 + stems + + hstem -243 44 + hstem 424 55 + vstem 0 521 + + + + pointTag + hintSet0010 + stems + + hstem -243 44 + hstem 439 40 + vstem 0 521 + + + + pointTag + hintSet0011 + stems + + hstem -243 44 + hstem 424 55 + vstem 0 521 + + + + pointTag + hintSet0025 + stems + + hstem -243 124 + hstem 424 55 + vstem 0 521 + + + + pointTag + hintSet0028 + stems + + hstem -243 44 + hstem 424 55 + vstem 0 521 + + + + id + 05a190d278479f20f196dc04433ac2d457da750672202bdc5b6eac0abb4a6ff3a376d5a68a40890330d910b49a41bf36dfa9e9c0ca71dc46f414f94713ca9165 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index e5397acbd..184ef8d69 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -1,193 +1,193 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 9762988a3d54eedf4e76f12651b881e7e8a09ac592c8202020457d1777834d608bdee82e2d215d8f659c172c698962b86786999f9744dc7eb6f5a0a36a045925 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -243 44 - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0001 - stems - - hstem -243 44 - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0002 - stems - - hstem -243 44 - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0004 - stems - - hstem -243 44 - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0005 - stems - - hstem -243 44 - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0007 - stems - - hstem -243 44 - hstem 439 40 - vstem 0 521 - - - - pointTag - hintSet0008 - stems - - hstem -243 44 - hstem 424 55 - vstem 0 521 - - - - pointTag - hintSet0010 - stems - - hstem -243 44 - hstem 439 40 - vstem 0 521 - - - - pointTag - hintSet0011 - stems - - hstem -243 44 - hstem 424 55 - vstem 0 521 - - - - pointTag - hintSet0025 - stems - - hstem -243 124 - hstem 424 55 - vstem 0 521 - - - - pointTag - hintSet0028 - stems - - hstem -243 44 - hstem 424 55 - vstem 0 521 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -243 44 + hstem 424 55 + vstem 329 192 + + + + pointTag + hintSet0001 + stems + + hstem -243 44 + hstem 439 40 + vstem 329 192 + + + + pointTag + hintSet0002 + stems + + hstem -243 44 + hstem 424 55 + vstem 329 192 + + + + pointTag + hintSet0004 + stems + + hstem -243 44 + hstem 439 40 + vstem 329 192 + + + + pointTag + hintSet0005 + stems + + hstem -243 44 + hstem 424 55 + vstem 329 192 + + + + pointTag + hintSet0007 + stems + + hstem -243 44 + hstem 439 40 + vstem 0 521 + + + + pointTag + hintSet0008 + stems + + hstem -243 44 + hstem 424 55 + vstem 0 521 + + + + pointTag + hintSet0010 + stems + + hstem -243 44 + hstem 439 40 + vstem 0 521 + + + + pointTag + hintSet0011 + stems + + hstem -243 44 + hstem 424 55 + vstem 0 521 + + + + pointTag + hintSet0025 + stems + + hstem -243 124 + hstem 424 55 + vstem 0 521 + + + + pointTag + hintSet0028 + stems + + hstem -243 44 + hstem 424 55 + vstem 0 521 + + + + id + 9762988a3d54eedf4e76f12651b881e7e8a09ac592c8202020457d1777834d608bdee82e2d215d8f659c172c698962b86786999f9744dc7eb6f5a0a36a045925 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index ff72d4de0..8925920a5 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -1,204 +1,204 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 2f0de2df671a18a39e4917e4a33ff5b4c1afbccfda30bb0872094295627b70b1825993c4c0b879efb956c30f4d8a1b97610093d2e9ed2c62fda5ced40476f3a5 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0001 - stems - - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0002 - stems - - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0004 - stems - - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0005 - stems - - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0007 - stems - - hstem 439 40 - vstem 119 136 - - - - pointTag - hintSet0008 - stems - - hstem 424 55 - vstem 119 136 - - - - pointTag - hintSet0010 - stems - - hstem 439 40 - vstem 119 136 - - - - pointTag - hintSet0011 - stems - - hstem -243 44 - hstem 424 55 - vstem 119 136 - - - - pointTag - hintSet0025 - stems - - hstem -243 124 - vstem 119 136 - - - - pointTag - hintSet0028 - stems - - hstem -243 44 - hstem 424 55 - vstem 343 136 - - - - pointTag - hintSet0029 - stems - - hstem 586 129 - vstem 119 136 - vstem 343 136 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 424 55 + vstem 329 192 + + + + pointTag + hintSet0001 + stems + + hstem 439 40 + vstem 329 192 + + + + pointTag + hintSet0002 + stems + + hstem 424 55 + vstem 329 192 + + + + pointTag + hintSet0004 + stems + + hstem 439 40 + vstem 329 192 + + + + pointTag + hintSet0005 + stems + + hstem 424 55 + vstem 329 192 + + + + pointTag + hintSet0007 + stems + + hstem 439 40 + vstem 119 136 + + + + pointTag + hintSet0008 + stems + + hstem 424 55 + vstem 119 136 + + + + pointTag + hintSet0010 + stems + + hstem 439 40 + vstem 119 136 + + + + pointTag + hintSet0011 + stems + + hstem -243 44 + hstem 424 55 + vstem 119 136 + + + + pointTag + hintSet0025 + stems + + hstem -243 124 + vstem 119 136 + + + + pointTag + hintSet0028 + stems + + hstem -243 44 + hstem 424 55 + vstem 343 136 + + + + pointTag + hintSet0029 + stems + + hstem 586 129 + vstem 119 136 + vstem 343 136 + + + + id + 2f0de2df671a18a39e4917e4a33ff5b4c1afbccfda30bb0872094295627b70b1825993c4c0b879efb956c30f4d8a1b97610093d2e9ed2c62fda5ced40476f3a5 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index 7629c9a55..93a3b555b 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -1,247 +1,247 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.adobe.type.autohint.v2 - - id - 0e4e1836f5296649dfd38a3dfd93c0f710c9e87a716aa9714c6187c89a1de6e9240c076b7e21c00ae12e26a4b12c8b5d61b03d264ae4bc5c30e0698a23536047 - hintSetList - - - pointTag - hintSet0000 - stems - - hstem -243 44 - hstem 424 55 - hstem 573 77 - vstem 329 192 - - - - pointTag - hintSet0001 - stems - - hstem -243 44 - hstem 439 40 - hstem 573 77 - vstem 329 192 - - - - pointTag - hintSet0002 - stems - - hstem -243 44 - hstem 424 55 - hstem 573 77 - vstem 329 192 - - - - pointTag - hintSet0004 - stems - - hstem -243 44 - hstem 439 40 - hstem 573 77 - vstem 329 192 - - - - pointTag - hintSet0005 - stems - - hstem -243 44 - hstem 424 55 - hstem 573 77 - vstem 329 192 - - - - pointTag - hintSet0007 - stems - - hstem -243 44 - hstem 439 40 - hstem 573 77 - vstem 0 521 - - - - pointTag - hintSet0008 - stems - - hstem -243 44 - hstem 424 55 - hstem 573 77 - vstem 0 521 - - - - pointTag - hintSet0010 - stems - - hstem -243 44 - hstem 439 40 - hstem 573 77 - vstem 0 521 - - - - pointTag - hintSet0011 - stems - - hstem -243 44 - hstem 424 55 - hstem 573 77 - vstem 0 521 - - - - pointTag - hintSet0025 - stems - - hstem -243 124 - hstem 424 55 - hstem 573 77 - vstem 0 521 - - - - pointTag - hintSet0028 - stems - - hstem -243 44 - hstem 424 55 - hstem 573 77 - vstem 0 521 - - - - pointTag - hintSet0029 - stems - - hstem -243 44 - hstem 424 55 - hstem 644 77 - vstem 0 521 - - - - pointTag - hintSet0033 - stems - - hstem -243 44 - hstem 424 55 - hstem 573 77 - vstem 0 521 - - - - pointTag - hintSet0038 - stems - - hstem -243 44 - hstem 424 55 - hstem 644 77 - vstem 0 521 - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -243 44 + hstem 424 55 + hstem 573 77 + vstem 329 192 + + + + pointTag + hintSet0001 + stems + + hstem -243 44 + hstem 439 40 + hstem 573 77 + vstem 329 192 + + + + pointTag + hintSet0002 + stems + + hstem -243 44 + hstem 424 55 + hstem 573 77 + vstem 329 192 + + + + pointTag + hintSet0004 + stems + + hstem -243 44 + hstem 439 40 + hstem 573 77 + vstem 329 192 + + + + pointTag + hintSet0005 + stems + + hstem -243 44 + hstem 424 55 + hstem 573 77 + vstem 329 192 + + + + pointTag + hintSet0007 + stems + + hstem -243 44 + hstem 439 40 + hstem 573 77 + vstem 0 521 + + + + pointTag + hintSet0008 + stems + + hstem -243 44 + hstem 424 55 + hstem 573 77 + vstem 0 521 + + + + pointTag + hintSet0010 + stems + + hstem -243 44 + hstem 439 40 + hstem 573 77 + vstem 0 521 + + + + pointTag + hintSet0011 + stems + + hstem -243 44 + hstem 424 55 + hstem 573 77 + vstem 0 521 + + + + pointTag + hintSet0025 + stems + + hstem -243 124 + hstem 424 55 + hstem 573 77 + vstem 0 521 + + + + pointTag + hintSet0028 + stems + + hstem -243 44 + hstem 424 55 + hstem 573 77 + vstem 0 521 + + + + pointTag + hintSet0029 + stems + + hstem -243 44 + hstem 424 55 + hstem 644 77 + vstem 0 521 + + + + pointTag + hintSet0033 + stems + + hstem -243 44 + hstem 424 55 + hstem 573 77 + vstem 0 521 + + + + pointTag + hintSet0038 + stems + + hstem -243 44 + hstem 424 55 + hstem 644 77 + vstem 0 521 + + + + id + 0e4e1836f5296649dfd38a3dfd93c0f710c9e87a716aa9714c6187c89a1de6e9240c076b7e21c00ae12e26a4b12c8b5d61b03d264ae4bc5c30e0698a23536047 + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_.glif index b6f604081..2fda52a98 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_.glif @@ -1,5 +1,5 @@ - + @@ -35,14 +35,8 @@ - - - - - - - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_acute.glif index 95cad1b7e..bae89a545 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_acute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_dieresis.glif index 8cd118b9d..1da5d89d1 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_dieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_tilde.glif index 77692b08d..7cbe3b4a9 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/A_tilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_.glif index 32c408bcd..d717f9bb4 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_.glif @@ -1,5 +1,5 @@ - + @@ -47,11 +47,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_acute.glif index 8f296b754..a8befa3fa 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_acute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_dieresis.glif index 84ec1d39c..c7fc42969 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_dieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_tilde.glif index ccba69db5..efff096c4 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/Y_tilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/a.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/a.glif index 57e8d5a75..92a7ca07a 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/a.glif @@ -1,5 +1,5 @@ - + @@ -70,14 +70,8 @@ - - - - - - - - - + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/aacute.glif index fd05fc18a..22d8069a9 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/aacute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/acutecmb.cap.glif index 5f83adaa3..2ed4d7201 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/acutecmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -19,8 +19,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/acutecmb.glif index 0be219c09..09b530b7a 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/acutecmb.glif @@ -1,5 +1,5 @@ - + @@ -20,8 +20,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/adieresis.glif index 8fc72f353..d5f312515 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/adieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/atilde.glif index 5edc381ea..ec07c129b 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/atilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/dieresiscmb.cap.glif index 1c06e74e3..beb00a4ed 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/dieresiscmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -29,8 +29,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/dieresiscmb.glif index 9b10f1b2c..672ac5030 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/dieresiscmb.glif @@ -1,5 +1,5 @@ - + @@ -30,11 +30,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/layerinfo.plist b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/layerinfo.plist new file mode 100644 index 000000000..aa5f6f5fe --- /dev/null +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/layerinfo.plist @@ -0,0 +1,12 @@ + + + + + lib + + org.unifiedfontobject.normalizer.imageReferences + + + + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/tildecmb.cap.glif index 130e9840e..4695f5e24 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/tildecmb.cap.glif @@ -1,5 +1,5 @@ - + @@ -29,8 +29,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/tildecmb.glif index f077a93ea..521d82262 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/tildecmb.glif @@ -1,5 +1,5 @@ - + @@ -30,8 +30,6 @@ - - - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/y.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/y.glif index 7d7ef5175..17e104ca0 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/y.glif @@ -1,5 +1,5 @@ - + @@ -49,11 +49,7 @@ - - - - - - + + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/yacute.glif index 9374cd13f..7cb221f73 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/yacute.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/ydieresis.glif index b61e2b289..eede5b6ce 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/ydieresis.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/ytilde.glif index 3aded687f..58bb7e056 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs/ytilde.glif @@ -1,5 +1,5 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/semibold.ufo/groups.plist index 4e754e5fc..748bcbe07 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/groups.plist +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/groups.plist @@ -2,56 +2,56 @@ - @MMK_L_LAT_A + public.kern1.LAT_A A Aacute Adieresis Atilde - @MMK_L_LAT_Y + public.kern1.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_L_LAT_a + public.kern1.LAT_a a aacute adieresis atilde - @MMK_L_LAT_v + public.kern1.LAT_v y yacute ydieresis ytilde - @MMK_R_LAT_A + public.kern2.LAT_A A Aacute Adieresis Atilde - @MMK_R_LAT_Y + public.kern2.LAT_Y Y Yacute Ydieresis Ytilde - @MMK_R_LAT_a + public.kern2.LAT_a a aacute adieresis atilde - @MMK_R_LAT_y + public.kern2.LAT_y y yacute diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/kerning.plist b/tests/makeinstancesufo_data/expected_output/semibold.ufo/kerning.plist index 2604bfd1f..f5ba2ecc0 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/kerning.plist +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/kerning.plist @@ -2,50 +2,50 @@ - @MMK_L_LAT_A + public.kern1.LAT_A - @MMK_R_LAT_A + public.kern2.LAT_A 6 - @MMK_R_LAT_Y + public.kern2.LAT_Y -90 - @MMK_R_LAT_a + public.kern2.LAT_a -7 - @MMK_R_LAT_y + public.kern2.LAT_y -54 - @MMK_L_LAT_Y + public.kern1.LAT_Y - @MMK_R_LAT_A - -94 - @MMK_R_LAT_Y - 4 - @MMK_R_LAT_a - -80 - @MMK_R_LAT_y - -63 adieresis -69 atilde -67 + public.kern2.LAT_A + -94 + public.kern2.LAT_Y + 4 + public.kern2.LAT_a + -80 + public.kern2.LAT_y + -63 - @MMK_L_LAT_a + public.kern1.LAT_a - @MMK_R_LAT_A + public.kern2.LAT_A 6 - @MMK_R_LAT_Y + public.kern2.LAT_Y -76 - @MMK_R_LAT_y + public.kern2.LAT_y -14 - @MMK_L_LAT_v + public.kern1.LAT_v - @MMK_R_LAT_A + public.kern2.LAT_A -81 - @MMK_R_LAT_Y + public.kern2.LAT_Y -54 - @MMK_R_LAT_a + public.kern2.LAT_a -21 - @MMK_R_LAT_y + public.kern2.LAT_y 3 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/metainfo.plist b/tests/makeinstancesufo_data/expected_output/semibold.ufo/metainfo.plist index 9c654d4c2..555d9ce4c 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/metainfo.plist +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/metainfo.plist @@ -3,8 +3,8 @@ creator - org.robofab.ufoLib + com.github.fonttools.ufoLib formatVersion - 2 + 3 diff --git a/tests/makeinstancesufo_data/input/font.designspace b/tests/makeinstancesufo_data/input/font.designspace index 19ce3283a..0da8744f6 100644 --- a/tests/makeinstancesufo_data/input/font.designspace +++ b/tests/makeinstancesufo_data/input/font.designspace @@ -1,10 +1,8 @@ - diff --git a/tests/makeinstancesufo_test.py b/tests/makeinstancesufo_test.py old mode 100755 new mode 100644 diff --git a/tests/makeotf_data/expected_output/bug617.ttx b/tests/makeotf_data/expected_output/bug617.ttx old mode 100755 new mode 100644 diff --git a/tests/makeotf_data/expected_output/ttf-dev.ttx b/tests/makeotf_data/expected_output/ttf-dev.ttx index 06b023a0b..a113081ce 100644 --- a/tests/makeotf_data/expected_output/ttf-dev.ttx +++ b/tests/makeotf_data/expected_output/ttf-dev.ttx @@ -103,10 +103,10 @@ - + - + @@ -131,15 +131,12 @@ - - - @@ -239,16 +236,16 @@ - Source Sans + SourceSans Regular - 1.000;ADBE;SourceSans-Test + 1.000;UKWN;SourceSans-Test - Source Sans + SourceSans Version 1.000;hotconv 1.0.109;makeotfexe 2.5.65593 DEVELOPMENT @@ -256,17 +253,20 @@ SourceSans-Test + + Test + - Source Sans + SourceSans Regular - 1.000;ADBE;SourceSans-Test + 1.000;UKWN;SourceSans-Test - Source Sans + SourceSans Version 1.000;hotconv 1.0.109;makeotfexe 2.5.65593 DEVELOPMENT diff --git a/tests/makeotf_data/expected_output/ttf-rel.ttx b/tests/makeotf_data/expected_output/ttf-rel.ttx index 2744571d3..920261284 100644 --- a/tests/makeotf_data/expected_output/ttf-rel.ttx +++ b/tests/makeotf_data/expected_output/ttf-rel.ttx @@ -103,9 +103,9 @@ - + - + @@ -130,15 +130,12 @@ - - - @@ -239,16 +236,16 @@ - Source Sans + SourceSans Regular - 1.000;ADBE;SourceSans-Test + 1.000;UKWN;SourceSans-Test - Source Sans + SourceSans Version 1.000;hotconv 1.0.109;makeotfexe 2.5.65593 @@ -256,17 +253,20 @@ SourceSans-Test + + Test + - Source Sans + SourceSans Regular - 1.000;ADBE;SourceSans-Test + 1.000;UKWN;SourceSans-Test - Source Sans + SourceSans Version 1.000;hotconv 1.0.109;makeotfexe 2.5.65593 diff --git a/tests/makeotf_data/input/bug239/font.ufo/data/com.adobe.type.processedHashMap b/tests/makeotf_data/input/bug239/font.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..c53b9d402 --- /dev/null +++ b/tests/makeotf_data/input/bug239/font.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,5 @@ +{ +'.notdef': ['9281c03c7b41f9094714b6f29ba10db86d866ee8b8476c2ae4009b9dca083a3726c9ca2c4023ad9fe46f049863ebb4617eea14165786db85f576ce477dd0bfba', ['checkOutlines']], +'a': ['640b3775355242f82313cdb3e0946f4c6c469f68bdb73c18fb2b46ed81427ec041e410920546857d71aae61304a2e3ffc94cb54ae829ed79a47f51e4bf58c526', ['checkOutlines']], +'hashMapVersion': (1, 0), +} diff --git a/tests/makeotf_data/input/bug239/font.ufo/fontinfo.plist b/tests/makeotf_data/input/bug239/font.ufo/fontinfo.plist new file mode 100644 index 000000000..3f1581d97 --- /dev/null +++ b/tests/makeotf_data/input/bug239/font.ufo/fontinfo.plist @@ -0,0 +1,166 @@ + + + + + ascender + 712 + capHeight + 656 + copyright + Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. + descender + -205 + familyName + Source Sans + italicAngle + 0 + openTypeHheaAscender + 984 + openTypeHheaDescender + -273 + openTypeHheaLineGap + 0 + openTypeNameDesigner + Paul D. Hunt + openTypeNameLicense + This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software. + openTypeNameLicenseURL + http://scripts.sil.org/OFL + openTypeNameManufacturer + Adobe Systems Incorporated + openTypeNameManufacturerURL + http://www.adobe.com/type + openTypeOS2CodePageRanges + + 0 + 1 + 2 + 3 + 4 + 7 + 8 + 29 + + openTypeOS2Panose + + 2 + 11 + 5 + 3 + 3 + 4 + 3 + 2 + 2 + 4 + + openTypeOS2Type + + + openTypeOS2TypoAscender + 750 + openTypeOS2TypoDescender + -250 + openTypeOS2TypoLineGap + 0 + openTypeOS2UnicodeRanges + + 0 + 1 + 2 + 4 + 5 + 6 + 7 + 9 + 29 + 30 + 32 + 57 + + openTypeOS2VendorID + ADBO + openTypeOS2WinAscent + 984 + openTypeOS2WinDescent + 273 + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 518 + 530 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 518 + 530 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceSans-Test + postscriptForceBold + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + 78 + + postscriptStemSnapV + + 84 + 95 + + postscriptUnderlinePosition + -75 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 2 + versionMinor + 20 + xHeight + 486 + + diff --git a/tests/makeotf_data/input/bug239/font.ufo/glyphs/_notdef.glif b/tests/makeotf_data/input/bug239/font.ufo/glyphs/_notdef.glif new file mode 100644 index 000000000..209f5611b --- /dev/null +++ b/tests/makeotf_data/input/bug239/font.ufo/glyphs/_notdef.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeotf_data/input/bug239/font.ufo/glyphs/a.glif b/tests/makeotf_data/input/bug239/font.ufo/glyphs/a.glif new file mode 100644 index 000000000..ad3b2592c --- /dev/null +++ b/tests/makeotf_data/input/bug239/font.ufo/glyphs/a.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/layerinfo.plist b/tests/makeotf_data/input/bug239/font.ufo/glyphs/contents.plist similarity index 60% rename from tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/layerinfo.plist rename to tests/makeotf_data/input/bug239/font.ufo/glyphs/contents.plist index 564c7a6bb..f7fa5dd46 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/glyphs/layerinfo.plist +++ b/tests/makeotf_data/input/bug239/font.ufo/glyphs/contents.plist @@ -1,5 +1,10 @@ - + + .notdef + _notdef.glif + a + a.glif + diff --git a/tests/makeotf_data/input/bug239/font.ufo/lib.plist b/tests/makeotf_data/input/bug239/font.ufo/lib.plist new file mode 100644 index 000000000..830d35e15 --- /dev/null +++ b/tests/makeotf_data/input/bug239/font.ufo/lib.plist @@ -0,0 +1,11 @@ + + + + + public.glyphOrder + + .notdef + a + + + diff --git a/tests/makeotf_data/input/bug239/font.ufo/metainfo.plist b/tests/makeotf_data/input/bug239/font.ufo/metainfo.plist new file mode 100644 index 000000000..9c654d4c2 --- /dev/null +++ b/tests/makeotf_data/input/bug239/font.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + org.robofab.ufoLib + formatVersion + 2 + + diff --git a/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/data/com.adobe.type.processedHashMap b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..c53b9d402 --- /dev/null +++ b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,5 @@ +{ +'.notdef': ['9281c03c7b41f9094714b6f29ba10db86d866ee8b8476c2ae4009b9dca083a3726c9ca2c4023ad9fe46f049863ebb4617eea14165786db85f576ce477dd0bfba', ['checkOutlines']], +'a': ['640b3775355242f82313cdb3e0946f4c6c469f68bdb73c18fb2b46ed81427ec041e410920546857d71aae61304a2e3ffc94cb54ae829ed79a47f51e4bf58c526', ['checkOutlines']], +'hashMapVersion': (1, 0), +} diff --git a/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/fontinfo.plist b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/fontinfo.plist new file mode 100644 index 000000000..3f1581d97 --- /dev/null +++ b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/fontinfo.plist @@ -0,0 +1,166 @@ + + + + + ascender + 712 + capHeight + 656 + copyright + Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. + descender + -205 + familyName + Source Sans + italicAngle + 0 + openTypeHheaAscender + 984 + openTypeHheaDescender + -273 + openTypeHheaLineGap + 0 + openTypeNameDesigner + Paul D. Hunt + openTypeNameLicense + This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software. + openTypeNameLicenseURL + http://scripts.sil.org/OFL + openTypeNameManufacturer + Adobe Systems Incorporated + openTypeNameManufacturerURL + http://www.adobe.com/type + openTypeOS2CodePageRanges + + 0 + 1 + 2 + 3 + 4 + 7 + 8 + 29 + + openTypeOS2Panose + + 2 + 11 + 5 + 3 + 3 + 4 + 3 + 2 + 2 + 4 + + openTypeOS2Type + + + openTypeOS2TypoAscender + 750 + openTypeOS2TypoDescender + -250 + openTypeOS2TypoLineGap + 0 + openTypeOS2UnicodeRanges + + 0 + 1 + 2 + 4 + 5 + 6 + 7 + 9 + 29 + 30 + 32 + 57 + + openTypeOS2VendorID + ADBO + openTypeOS2WinAscent + 984 + openTypeOS2WinDescent + 273 + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 518 + 530 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 518 + 530 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceSans-Test + postscriptForceBold + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + 78 + + postscriptStemSnapV + + 84 + 95 + + postscriptUnderlinePosition + -75 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 2 + versionMinor + 20 + xHeight + 486 + + diff --git a/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/glyphs/_notdef.glif b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/glyphs/_notdef.glif new file mode 100644 index 000000000..209f5611b --- /dev/null +++ b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/glyphs/_notdef.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/glyphs/a.glif b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/glyphs/a.glif new file mode 100644 index 000000000..58707bbd2 --- /dev/null +++ b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/glyphs/a.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/glyphs/contents.plist b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/glyphs/contents.plist new file mode 100644 index 000000000..f7fa5dd46 --- /dev/null +++ b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/glyphs/contents.plist @@ -0,0 +1,10 @@ + + + + + .notdef + _notdef.glif + a + a.glif + + diff --git a/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/lib.plist b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/lib.plist new file mode 100644 index 000000000..830d35e15 --- /dev/null +++ b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/lib.plist @@ -0,0 +1,11 @@ + + + + + public.glyphOrder + + .notdef + a + + + diff --git a/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/metainfo.plist b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/metainfo.plist new file mode 100644 index 000000000..9c654d4c2 --- /dev/null +++ b/tests/makeotf_data/input/bug239/font_outdated_hash.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + org.robofab.ufoLib + formatVersion + 2 + + diff --git a/tests/makeotf_data/input/bug617/font.pfa b/tests/makeotf_data/input/bug617/font.pfa old mode 100755 new mode 100644 diff --git a/tests/makeotf_data/input/bug617/goadb.txt b/tests/makeotf_data/input/bug617/goadb.txt old mode 100755 new mode 100644 diff --git a/tests/makeotf_data/input/bug680/FontMenuNameDB b/tests/makeotf_data/input/bug680/FontMenuNameDB new file mode 100644 index 000000000..ed933b168 --- /dev/null +++ b/tests/makeotf_data/input/bug680/FontMenuNameDB @@ -0,0 +1 @@ + [SourceCodePro-Regular] f=Source Code Pro s=Regular l=Source Code Pro m=1,Source Code Pro \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/GPOS.fea b/tests/makeotf_data/input/bug680/GPOS.fea new file mode 100644 index 000000000..2467e6d75 --- /dev/null +++ b/tests/makeotf_data/input/bug680/GPOS.fea @@ -0,0 +1,32 @@ +@mGC_above_300_507 = [gravecmb variacmb acutecmb tonoscmb circumflexcmb tildecmb macroncmb overlinecmb brevecmb brevecmb.cyr dotaccentcmb dieresiscmb hoicmb candrabinducmb ringcmb hungarumlautcmb caroncmb dblgravecmb breveinvertedcmb commaturnedabovecmb aspercmb commaabovecmb leniscmb commabelowcmb.a xabovecmb perispomenicmb dieresisacutecmb dieresistonoscmb dieresisgravecmb dialytikagravecmb dieresistildecmb dieresismacroncmb dieresiscaroncmb circumflexacutecmb circumflexgravecmb circumflexhoicmb circumflextildecmb breveacutecmb brevegravecmb brevehoicmb brevetildecmb circumflexbrevecmb macronacutecmb carondotaccentcmb asperacutecmb aspergravecmb aspertildecmb lenisacutecmb lenisgravecmb lenistildecmb]; +@mGC_above_300_676 = [gravecmb.cap acutecmb.cap circumflexcmb.cap tildecmb.cap macroncmb.cap overlinecmb.cap brevecmb.cap brevecmb.cyrcap dotaccentcmb.cap dieresiscmb.cap hoicmb.cap candrabinducmb.cap ringcmb.cap hungarumlautcmb.cap caroncmb.cap dblgravecmb.cap breveinvertedcmb.cap perispomenicmb.cap dieresisacutecmb.cap dieresisgravecmb.cap dieresismacroncmb.cap dieresiscaroncmb.cap circumflexacutecmb.cap circumflexgravecmb.cap circumflexhoicmb.cap circumflextildecmb.cap breveacutecmb.cap brevegravecmb.cap brevehoicmb.cap brevetildecmb.cap circumflexbrevecmb.cap macronacutecmb.cap carondotaccentcmb.cap]; +@mGC_base_300_0 = [cedillacmb cedillacmb.cap]; +@mGC_below_300_n20 = [lefttackbelowcmb righttackbelowcmb ringhalfleftbelowcmb uptackbelowcmb downtackbelowcmb plusbelowcmb minusbelowcmb dotbelowcmb dieresisbelowcmb ringbelowcmb commabelowcmb verticallinebelowcmb bridgebelowcmb caronbelowcmb brevebelowcmb breveinvertedbelowcmb tildebelowcmb macronbelowcmb ringhalfrightbelowcmb bridgeinvertedbelowcmb squarebelowcmb seagullbelowcmb iotasubscriptcmb]; +@mGC_ogonek_300_0 = [ogonekcmb ogonekcmb.cap]; + +markClass @mGC_above_300_507 @MC_above; +markClass @mGC_above_300_676 @MC_above; +markClass @mGC_base_300_0 @MC_base; +markClass @mGC_below_300_n20 @MC_below; +markClass @mGC_ogonek_300_0 @MC_ogonek; +markClass horncmb @MC_horn; +markClass leftangleabovecmb @MC_aboveright; +markClass tildeoverlaycmb @MC_center; + + +feature mark { + @MARK_GLYPHS = [gravecmb gravecmb.cap variacmb acutecmb acutecmb.cap tonoscmb circumflexcmb circumflexcmb.cap tildecmb tildecmb.cap macroncmb macroncmb.cap overlinecmb overlinecmb.cap brevecmb brevecmb.cyr brevecmb.cap brevecmb.cyrcap dotaccentcmb dotaccentcmb.cap dieresiscmb dieresiscmb.cap hoicmb hoicmb.cap candrabinducmb candrabinducmb.cap ringcmb ringcmb.cap hungarumlautcmb hungarumlautcmb.cap caroncmb caroncmb.cap dblgravecmb dblgravecmb.cap breveinvertedcmb breveinvertedcmb.cap commaturnedabovecmb aspercmb commaabovecmb leniscmb lefttackbelowcmb righttackbelowcmb leftangleabovecmb horncmb ringhalfleftbelowcmb uptackbelowcmb downtackbelowcmb plusbelowcmb minusbelowcmb dotbelowcmb dieresisbelowcmb ringbelowcmb commabelowcmb commabelowcmb.a cedillacmb cedillacmb.cap ogonekcmb ogonekcmb.cap verticallinebelowcmb bridgebelowcmb caronbelowcmb brevebelowcmb breveinvertedbelowcmb tildebelowcmb macronbelowcmb tildeoverlaycmb ringhalfrightbelowcmb bridgeinvertedbelowcmb squarebelowcmb seagullbelowcmb xabovecmb perispomenicmb perispomenicmb.cap iotasubscriptcmb dieresistonoscmb dialytikagravecmb asperacutecmb aspergravecmb aspertildecmb lenisacutecmb lenisgravecmb lenistildecmb]; + @ZW_GLYPHS = [ZWNBS]; + + lookup ADJUST_WIDTHS { + pos [@MARK_GLYPHS @ZW_GLYPHS] <0 0 -600 0>; + pos [macrondoublebelowcmb breveinverteddoublecmb] <-300 0 -600 0>; + } ADJUST_WIDTHS; + + include (mark.fea); +} mark; + + +feature mkmk { + include (mkmk.fea); +} mkmk; diff --git a/tests/makeotf_data/input/bug680/GSUB.fea b/tests/makeotf_data/input/bug680/GSUB.fea new file mode 100644 index 000000000..05678a811 --- /dev/null +++ b/tests/makeotf_data/input/bug680/GSUB.fea @@ -0,0 +1,682 @@ +@LETTERS_MAJUSCULE_LATIN_BASIC = [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]; +@LETTERS_MAJUSCULE_LATIN_ACCENTED = [AEacute AEmacron Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehoi Abrevetilde Acaron Acircumflex Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhoi Acircumflextilde Adieresis Adotbelow Agrave Ahoi Amacron Aogonek Aring Aringacute Atilde Blinebelow Cacute Ccaron Ccedilla Ccircumflex Cdotaccent Dcaron Ddotbelow Dlinebelow Eacute Ebreve Ecaron Ecircumflex Ecircumflexacute Ecircumflexdotbelow Ecircumflexgrave Ecircumflexhoi Ecircumflextilde Edieresis Edotaccent Edotbelow Egrave Ehoi Emacron Emacronacute Eogonek Etilde Gacute Gbreve Gcaron Gcircumflex Gcommaaccent Gdotaccent Gmacron Gtilde Hbar Hbrevebelow Hcircumflex Hdotbelow Iacute Ibreve Icaron Icircumflex Idieresis Idotbelow Igrave Ihoi Imacron Iogonek Itilde Jcircumflex Kcommaaccent Kdotbelow Klinebelow Lacute Lcaron Lcommaaccent Ldotbelow Ldotbelowmacron Llinebelow Macute Mdotaccent Mdotbelow Nacute Ncaron Ncommaaccent Ndotaccent Ndotbelow Ngrave Nlinebelow Ntilde Oacute Obreve Ocaron Ocircumflex Ocircumflexacute Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhoi Ocircumflextilde Odieresis Odotbelow Ograve Ohoi Ohorn Ohornacute Ohorndotbelow Ohorngrave Ohornhoi Ohorntilde Ohungarumlaut Omacron Omacronacute Oogonek Otilde Oslashacute Racute Rcaron Rcommaaccent Rdotaccent Rdotbelow Rdotbelowmacron Rlinebelow Sacute Scaron Scedilla Scircumflex Scommaaccent Sdotaccent Sdotbelow Tcaron Tcedilla Tcommaaccent Tdotbelow Tlinebelow Uacute Ubreve Ucaron Ucircumflex Udieresis Udieresisacute Udieresiscaron Udieresisgrave Udieresismacron Udotbelow Ugrave Uhoi Uhorn Uhornacute Uhorndotbelow Uhorngrave Uhornhoi Uhorntilde Uhungarumlaut Umacron Uogonek Uring Utilde Wacute Wcircumflex Wdieresis Wgrave Yacute Ycircumflex Ydieresis Ydotaccent Ydotbelow Ygrave Yhoi Ytilde Zacute Zcaron Zdotaccent Zdotbelow Zlinebelow Ldot]; +@LETTERS_MAJUSCULE_LATIN_ADDL = [AE Bstroke Dcroat Ghook Lslash Oslash OE Tbar Eth Thorn Schwa Eng IJ]; +@LETTERS_MAJUSCULE_LATIN_ALL = [@LETTERS_MAJUSCULE_LATIN_BASIC @LETTERS_MAJUSCULE_LATIN_ACCENTED @LETTERS_MAJUSCULE_LATIN_ADDL Idotaccent]; + +@LETTERS_MINISCULE_LATIN_BASIC = [a b c d e f g h i j k l m n o p q r s t u v w x y z]; +@LETTERS_MINISCULE_LATIN_ACCENTED = [aeacute aemacron aacute abreve abreveacute abrevedotbelow abrevegrave abrevehoi abrevetilde acaron acircumflex acircumflexacute acircumflexdotbelow acircumflexgrave acircumflexhoi acircumflextilde adieresis adotbelow agrave ahoi amacron aogonek aring aringacute atilde blinebelow cacute ccaron ccedilla ccircumflex cdotaccent dcaron ddotbelow dlinebelow eacute ebreve ecaron ecircumflex ecircumflexacute ecircumflexdotbelow ecircumflexgrave ecircumflexhoi ecircumflextilde edieresis edotaccent edotbelow egrave ehoi emacron emacronacute eogonek etilde gacute gbreve gcaron gcircumflex gcommaaccent gdotaccent gmacron gtilde hbar hbrevebelow hcircumflex hdotbelow iacute ibreve icaron icircumflex idieresis idotbelow igrave ihoi imacron iogonek itilde jcircumflex kcommaaccent kdotbelow klinebelow lacute lcaron lcommaaccent ldotbelow ldotbelowmacron llinebelow macute mdotaccent mdotbelow nacute ncaron ncommaaccent ndotaccent ndotbelow ngrave nlinebelow ntilde oacute obreve ocaron ocircumflex ocircumflexacute ocircumflexdotbelow ocircumflexgrave ocircumflexhoi ocircumflextilde odieresis odotbelow ograve ohoi ohorn ohornacute ohorndotbelow ohorngrave ohornhoi ohorntilde ohungarumlaut omacron omacronacute oogonek otilde oslashacute racute rcaron rcommaaccent rdotaccent rdotbelow rdotbelowmacron rlinebelow sacute scaron scedilla scircumflex scommaaccent sdotaccent sdotbelow tcaron tcedilla tcommaaccent tdotbelow tlinebelow uacute ubreve ucaron ucircumflex udieresis udieresisacute udieresiscaron udieresisgrave udieresismacron udotbelow ugrave uhoi uhorn uhornacute uhorndotbelow uhorngrave uhornhoi uhorntilde uhungarumlaut umacron uogonek uring utilde wacute wcircumflex wdieresis wgrave yacute ycircumflex ydieresis ydotaccent ydotbelow ygrave yhoi ytilde zacute zcaron zdotaccent zdotbelow zlinebelow ldot]; +@LETTERS_MINISCULE_LATIN_ADDL = [ae bstroke dcroat ghook lslash oslash oe tbar eth thorn schwa eng ij longs]; +@LETTERS_MINISCULE_LATIN_SUPERIOR = [a.sups b.sups c.sups d.sups e.sups f.sups g.sups h.sups i.sups j.sups k.sups l.sups m.sups n.sups o.sups p.sups q.sups r.sups s.sups t.sups u.sups v.sups w.sups x.sups y.sups z.sups]; +@LETTERS_MINISCULE_LATIN_ASCENDERS = [b d f h i j k l t bstroke dcroat lslash tbar eth thorn ij longs bhook dtail dhook ghook hhook henghook istroke jcrossedtail lmiddletilde lbelt lretroflex lezh philatin rlonglegturned esh dotlessjstrokehook tretroflex yturned dezh ts tesh glottalstop glottalstopreversed glottalstopstroke glottalstopstrokereversed clickalveolar clickbilabial]; +@LETTERS_MINISCULE_LATIN_DESCENDERS = [g j p q y thorn eng ij dtail dotlessjstroke ghook gscript gammalatin hturned henghook jcrossedtail kturned lretroflex lezh mlonglegturned mhook nhookleft nretroflex philatin rhookturned rtail shook esh dotlessjstrokehook tretroflex zretroflex ezh dezh tesh clickalveolar]; + +@LETTERS_MAJUSCULE_GREEK_BASIC = [Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda Mu Nu Xi Omicron Pi Rho Sigma Tau Upsilon Phi Chi Psi Omega]; +@LETTERS_MAJUSCULE_GREEK_TONOS = [Alphatonos Epsilontonos Etatonos Iotatonos Omicrontonos Upsilontonos Omegatonos]; +@LETTERS_MAJUSCULE_GREEK_DIERESIS = [Iotadieresis Upsilondieresis]; +@LETTERS_MAJUSCULE_GREEK_ALL = [@LETTERS_MAJUSCULE_GREEK_BASIC @LETTERS_MAJUSCULE_GREEK_TONOS @LETTERS_MAJUSCULE_GREEK_DIERESIS]; + +@LETTERS_MINISCULE_GREEK_BASIC = [alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu nu xi omicron pi rho sigma tau upsilon phi chi psi omega]; +@LETTERS_MINISCULE_GREEK_TONOS = [alphatonos epsilontonos etatonos iotatonos omicrontonos upsilontonos omegatonos]; +@LETTERS_MINISCULE_GREEK_DIERESIS = [iotadieresis upsilondieresis]; +@LETTERS_MINISCULE_GREEK_DIERESISTONOS = [iotadieresistonos upsilondieresistonos]; +@LETTERS_MINISCULE_GREEK_ALL = [@LETTERS_MINISCULE_GREEK_BASIC @LETTERS_MINISCULE_GREEK_TONOS @LETTERS_MINISCULE_GREEK_DIERESIS @LETTERS_MINISCULE_GREEK_DIERESISTONOS]; + +@LETTERS_MAJUSCULE_CYRILLIC_BASIC = [Acyr Be Ve Ghe De Ie Zhe Ze Icyr Ka El Em En Ocyr Pe Er Es Te Ucyr Ef Ha Tse Che Sha Shcha Hard Yeru Soft Ecyr Yu Ya Ieukran Dze Iukran Je Lje Nje Tshe Dzhe Yat Fita Izhitsa Gheup Ghestroke Zhedescender Zedescender Kadescender Kabashkir Endescender Esdescender Ustraight Ustraightstroke Hadescender Chedescender Shha Palochka Aie Schwacyr Obarcyr]; +@LETTERS_MAJUSCULE_CYRILLIC_ACCENTED = [Ishort Iegrave Io Dje Gje Yi Kje Igravecyr Ushort Zhebreve Abrevecyr Iebreve Imacroncyr Odieresiscyr Umacroncyr Uacutedblcyr]; +@LETTERS_MAJUSCULE_CYRILLIC_ALL = [@LETTERS_MAJUSCULE_CYRILLIC_BASIC @LETTERS_MAJUSCULE_CYRILLIC_ACCENTED]; + +@LETTERS_MINISCULE_CYRILLIC_BASIC = [acyr be ve ghe de ie zhe ze icyr ka el em en ocyr pe er es te ucyr ef ha tse che sha shcha hard yeru soft ecyr yu ya ieukran dze iukran je lje nje tshe dzhe yat fita izhitsa gheup ghestroke zhedescender zedescender kadescender kabashkir endescender esdescender ustraight ustraightstroke hadescender chedescender shha palochka aie schwacyr obarcyr]; +@LETTERS_MINISCULE_CYRILLIC_ACCENTED = [ishort iegrave io dje gje yi kje igravecyr ushort zhebreve abrevecyr iebreve imacroncyr odieresiscyr umacroncyr uacutedblcyr]; +@LETTERS_MINISCULE_CYRILLIC_ALL = [@LETTERS_MINISCULE_CYRILLIC_BASIC @LETTERS_MINISCULE_CYRILLIC_ACCENTED]; + +@LETTERS_MAJUSCULE_ALL = [@LETTERS_MAJUSCULE_LATIN_ALL @LETTERS_MAJUSCULE_GREEK_ALL @LETTERS_MAJUSCULE_CYRILLIC_ALL]; + +@MARKS_ABOVE_CMB = [gravecmb acutecmb circumflexcmb tildecmb macroncmb overlinecmb brevecmb brevecmb.cyr dotaccentcmb dieresiscmb hoicmb ringcmb hungarumlautcmb caroncmb dblgravecmb breveinvertedcmb perispomenicmb +dieresisacutecmb dieresisgravecmb dieresismacroncmb dieresiscaroncmb circumflexacutecmb circumflexgravecmb circumflexhoicmb circumflextildecmb breveacutecmb brevegravecmb brevehoicmb brevetildecmb circumflexbrevecmb macronacutecmb]; +@MARKS_BELOW_CMB = [cedillacmb ogonekcmb]; +@MARKS_CMB_ALL = [@MARKS_ABOVE_CMB @MARKS_BELOW_CMB]; + +@MARKS_ABOVE_CMB_CASE = [gravecmb.cap acutecmb.cap circumflexcmb.cap tildecmb.cap macroncmb.cap overlinecmb.cap brevecmb.cap brevecmb.cyrcap dotaccentcmb.cap dieresiscmb.cap hoicmb.cap ringcmb.cap hungarumlautcmb.cap caroncmb.cap dblgravecmb.cap breveinvertedcmb.cap perispomenicmb +dieresisacutecmb.cap dieresisgravecmb.cap dieresismacroncmb.cap dieresiscaroncmb.cap circumflexacutecmb.cap circumflexgravecmb.cap circumflexhoicmb.cap circumflextildecmb.cap breveacutecmb.cap brevegravecmb.cap brevehoicmb.cap brevetildecmb.cap circumflexbrevecmb.cap macronacutecmb.cap]; +@MARKS_BELOW_CMB_CASE = [cedillacmb.cap ogonekcmb.cap]; +@MARKS_CMB_ALL_CASE = [@MARKS_ABOVE_CMB_CASE @MARKS_BELOW_CMB_CASE]; + +@FIGURES_LINING = [zero one two three four five six seven eight nine]; +@FIGURES_OLDSTYLE = [zero.onum one.onum two.onum three.onum four.onum five.onum six.onum seven.onum eight.onum nine.onum]; +@FIGURES_CASE = [zero.cap one.cap two.cap three.cap four.cap five.cap six.cap seven.cap eight.cap nine.cap]; +@FIGURES_NUMERATOR = [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr]; +@FIGURES_DENOMINATOR = [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom]; +@FIGURES_SUPERIOR = [zero.sups one.sups two.sups three.sups four.sups five.sups six.sups seven.sups eight.sups nine.sups]; +@FIGURES_INFERIOR = [zero.subs one.subs two.subs three.subs four.subs five.subs six.subs seven.subs eight.subs nine.subs]; + +@PUNCTUATION_FOR_SMALL_FIGURE_STYLES = [parenleft parenright period comma]; +@PUNCTUATION_NUMERATOR = [parenleft.numr parenright.numr period.numr comma.numr]; +@PUNCTUATION_DENOMINATOR = [parenleft.dnom parenright.dnom period.dnom comma.dnom]; +@PUNCTUATION_SUPERIOR = [parenleft.sups parenright.sups period.sups comma.sups]; +@PUNCTUATION_INFERIOR = [parenleft.subs parenright.subs period.subs comma.subs]; + +@A_LC = [a agrave aacute acircumflex atilde adieresis amacron abreve aring aringacute acaron adotbelow ahoi acircumflexacute acircumflexgrave acircumflexhoi acircumflextilde acircumflexdotbelow abreveacute abrevegrave abrevehoi abrevetilde abrevedotbelow aogonek a.sups ordfeminine acyr abrevecyr]; +@A_LC_ALT = [a.a agrave.a aacute.a acircumflex.a atilde.a adieresis.a amacron.a abreve.a aring.a aringacute.a acaron.a adotbelow.a ahoi.a acircumflexacute.a acircumflexgrave.a acircumflexhoi.a acircumflextilde.a acircumflexdotbelow.a abreveacute.a abrevegrave.a abrevehoi.a abrevetilde.a abrevedotbelow.a aogonek.a a.supa ordfeminine.a acyr.a abrevecyr.a]; + +@G_LC = [g gacute gcircumflex gbreve gdotaccent gcommaaccent gcaron gmacron gtilde g.sups]; +@G_LC_ALT = [g.a gacute.a gcircumflex.a gbreve.a gdotaccent.a gcommaaccent.a gcaron.a gmacron.a gtilde.a g.supa]; + +@I_LC = [i dotlessi igrave iacute icircumflex itilde idieresis imacron icaron iogonek ihoi idotbelow ibreve istroke iogonek.d istroke.d iukran yi i.sups]; +@I_LC_ALT = [i.a dotlessi.a igrave.a iacute.a icircumflex.a itilde.a idieresis.a imacron.a icaron.a iogonek.a ihoi.a idotbelow.a ibreve.a istroke.a iogonek.da istroke.da iukran.a yi.a i.supa]; + +@L_LC = [l lacute lcaron lcommaaccent ldotbelow ldotbelowmacron llinebelow lslash ldot lcat lmiddletilde lbelt palochka]; +@L_LC_ALT = [l.a lacute.a lcaron.a lcommaaccent.a ldotbelow.a ldotbelowmacron.a llinebelow.a lslash.a ldot.a lcat.a lmiddletilde.a lbelt.a palochka.a]; + +#-------------------------------------- +languagesystem DFLT dflt; # Default + +languagesystem latn dflt; # Latin default + languagesystem latn NSM; # Northern Sami + languagesystem latn SKS; # Skolt Sami + languagesystem latn ATH; # Athapaskan + +languagesystem grek dflt; # Greek default + +languagesystem cyrl dflt; # Cyrillic default + languagesystem cyrl SRB; # Serbian + +#-------------------------------------- +#feature aalt { # Access All Alternates +# feature locl; +# feature numr; +# feature dnom; +# feature ordn; +# feature sups; +# feature subs; +# feature sinf; +# feature onum; +# feature zero; +# feature case; +# feature ss01; +# feature ss02; +# feature ss03; +# feature ss04; +# feature ss05; +# feature ss06; +# feature ss07; +# feature salt; +#} aalt; + +#-------------------------------------- +feature locl { # Localized Forms + + script latn; + language NSM exclude_dflt; + lookup ENG_UC_SAMI { # preferred Eng shape for Sami languages + sub Eng by Eng.a; + } ENG_UC_SAMI; + + language SKS exclude_dflt; + lookup ENG_UC_SAMI; + + script grek; + language dflt; + sub [acutecmb gravecmb commaturnedabovecmb commaabovecmb] by [tonoscmb variacmb aspercmb leniscmb]; # combining marks + + script cyrl; + language dflt; + lookup BREVE_CYR { #preferred breve shape for Cyrillic script + sub [brevecmb brevecmb.cap] by [brevecmb.cyr brevecmb.cyrcap]; # combining marks + } BREVE_CYR; + + language SRB include_dflt; + lookup BE_LC_SRB { + sub be by be.srb; + } BE_LC_SRB; + +} locl; + +#-------------------------------------- +lookup DECOMPOSITION { + sub Ecircumflex by E circumflexcmb; + sub ecircumflex by e circumflexcmb; + sub Emacron by E macroncmb; + sub emacron by e macroncmb; + sub Ocircumflex by O circumflexcmb; + sub ocircumflex by o circumflexcmb; + sub Omacron by O macroncmb; + sub omacron by o macroncmb; + sub Yi by I dieresiscmb; + sub yi by dotlessi dieresiscmb; +} DECOMPOSITION; + +lookup ASC_RAISE_CMB { + pos breveinverteddoublecmb <0 80 0 -80>; +} ASC_RAISE_CMB; + +lookup DSC_LOWER_CMB { + pos macrondoublebelowcmb <0 -140 0 140>; +} DSC_LOWER_CMB; + +feature ccmp { # Glyph Composition / Decomposition + + lookup GLYPH_DECOMPOSITION_CONTEXTUAL_2 { + #decomposes accented forms when followed by comining accent + sub [Ecircumflex ecircumflex Ocircumflex ocircumflex]' lookup DECOMPOSITION brevecmb; # Jarai language + sub [Emacron emacron Omacron omacron]' lookup DECOMPOSITION acutecmb; # Greek transliteration + sub [Yi yi]' lookup DECOMPOSITION acutecmb; # Cyrillic stressed notation + } GLYPH_DECOMPOSITION_CONTEXTUAL_2; + + lookup GLYPH_COMPOSITION_CONTEXTUAL { + #substitutes dotless forms of i & j when followed by combining accents above: (Navajo language support) + sub i' ogonekcmb' @MARKS_ABOVE_CMB by iogonek.d; + sub i.a' ogonekcmb' @MARKS_ABOVE_CMB by iogonek.da; + sub [i j iogonek iogonek.a istroke jcrossedtail]' @MARKS_ABOVE_CMB by [dotlessi dotlessj iogonek.d iogonek.da istroke.d jcrossedtail.d]; + } GLYPH_COMPOSITION_CONTEXTUAL; + + lookup ASC_RAISE_CMB_CONTEXTUAL { + # raises breveinverteddoublecmb when preceded or followed by ascending glyphs + pos @LETTERS_MINISCULE_LATIN_ASCENDERS breveinverteddoublecmb' lookup ASC_RAISE_CMB; + pos breveinverteddoublecmb' lookup ASC_RAISE_CMB @LETTERS_MINISCULE_LATIN_ASCENDERS; + } ASC_RAISE_CMB_CONTEXTUAL; + + lookup DSC_LOWER_CMB_CONTEXTUAL { + # raises breveinverteddoublecmb when preceded or followed by ascending glyphs + pos @LETTERS_MINISCULE_LATIN_DESCENDERS macrondoublebelowcmb' lookup DSC_LOWER_CMB; + pos macrondoublebelowcmb' lookup DSC_LOWER_CMB @LETTERS_MINISCULE_LATIN_DESCENDERS; + } DSC_LOWER_CMB_CONTEXTUAL; + + lookup MARKS_COMPOSITION { + sub dieresiscmb acutecmb by dieresisacutecmb; + sub dieresiscmb tonoscmb by dieresistonoscmb; + sub dieresiscmb gravecmb by dieresisgravecmb; + sub dieresiscmb variacmb by dialytikagravecmb; + sub dieresiscmb [tildecmb perispomenicmb] by dieresistildecmb; + sub dieresiscmb macroncmb by dieresismacroncmb; + sub dieresiscmb caroncmb by dieresiscaroncmb; + sub circumflexcmb acutecmb by circumflexacutecmb; + sub circumflexcmb gravecmb by circumflexgravecmb; + sub circumflexcmb hoicmb by circumflexhoicmb; + sub circumflexcmb tildecmb by circumflextildecmb; + sub circumflexcmb brevecmb by circumflexbrevecmb; + sub brevecmb acutecmb by breveacutecmb; + sub brevecmb gravecmb by brevegravecmb; + sub brevecmb hoicmb by brevehoicmb; + sub brevecmb [tildecmb perispomenicmb] by brevetildecmb; + sub aspercmb [tonoscmb acutecmb] by asperacutecmb; + sub aspercmb [variacmb gravecmb] by aspergravecmb; + sub aspercmb [tildecmb perispomenicmb] by aspertildecmb; + sub leniscmb [tonoscmb acutecmb] by lenisacutecmb; + sub leniscmb [variacmb gravecmb] by lenisgravecmb; + sub leniscmb [tildecmb perispomenicmb] by lenistildecmb; + } MARKS_COMPOSITION; + + lookup GLYPH_COMPOSITION_LATIN_NONCONTEXTUAL { + sub l periodcentered l by lcat; + sub L periodcentered L by Lcat; + sub d caroncmb by dcaron; + sub l caroncmb by lcaron; + sub t caroncmb by tcaron; + sub g tildecmb by gtilde; + sub G tildecmb by Gtilde; + sub a ogonekcmb by aogonek; + sub A ogonekcmb by Aogonek; + sub e ogonekcmb by eogonek; + sub E ogonekcmb by Eogonek; + sub i ogonekcmb by iogonek; + sub I ogonekcmb by Iogonek; + sub o ogonekcmb by oogonek; + sub O ogonekcmb by Oogonek; + sub u ogonekcmb by uogonek; + sub U ogonekcmb by Uogonek; + sub g cedillacmb by gcommaaccent; # The decomposition defined by Unicode is: 0067+0327 + sub g.a cedillacmb by gcommaaccent.a; + sub ij acutecmb by ijacute; + sub IJ acutecmb by IJacute; + } GLYPH_COMPOSITION_LATIN_NONCONTEXTUAL; + + lookup MAJUCSULE_ACCENTS_CMB_CONTEXT { # substitutes combining marks for miniscules with forms for majuscules + sub @LETTERS_MAJUSCULE_ALL @MARKS_CMB_ALL' by @MARKS_CMB_ALL_CASE; + sub @MARKS_CMB_ALL_CASE @MARKS_CMB_ALL' by @MARKS_CMB_ALL_CASE; + } MAJUCSULE_ACCENTS_CMB_CONTEXT; + +} ccmp; + +#-------------------------------------- +feature numr { # Numerators + lookup NUMR { + sub @FIGURES_LINING by @FIGURES_NUMERATOR; + sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_NUMERATOR; + } NUMR; +} numr; + +#-------------------------------------- +feature dnom { # Denominators + sub @FIGURES_LINING by @FIGURES_DENOMINATOR; + sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_DENOMINATOR; +} dnom; + +#-------------------------------------- +feature frac { # Fractions + @SPACE_DEFAULT = [space nbspace]; + @SPACE_FRAC = [space.frac nbspace.frac]; + @SLASH = [slash.frac fraction divisionslash]; + + lookup NUMR; + sub slash by slash.frac; + sub @FIGURES_NUMERATOR @SPACE_DEFAULT' by @SPACE_FRAC; + + lookup ADJUST_WIDTHS_FRAC { + pos @SLASH <-300 0 -600 0>; + } ADJUST_WIDTHS_FRAC; + + sub [fraction divisionslash slash.frac @FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR] [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR]; + sub @FIGURES_DENOMINATOR @SPACE_FRAC [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR]; +} frac; + +#-------------------------------------- +feature ordn { + lookup SUPERIOR_LETTERS_MINISCULE { + sub @LETTERS_MINISCULE_LATIN_BASIC by @LETTERS_MINISCULE_LATIN_SUPERIOR; + sub [egrave eacute eogonek schwa hhook] by [egrave.sups eacute.sups eogonek.sups schwa.sups hhook.sups]; + } SUPERIOR_LETTERS_MINISCULE; +} ordn; + +#-------------------------------------- +feature sups { # Superscript + lookup SUPERIOR_LETTERS_MINISCULE; + + lookup SUPERIOR_NUMERALS_SORTS { + sub @FIGURES_LINING by @FIGURES_SUPERIOR; + sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_SUPERIOR; + } SUPERIOR_NUMERALS_SORTS; + + lookup SUPERIOR_SORTS { + sub [colon hyphen endash emdash] by [colon.sups hyphen.sups endash.sups emdash.sups]; + } SUPERIOR_SORTS; + +} sups; + +#-------------------------------------- +feature subs { # Subscript + lookup INFERIOR { + sub @FIGURES_LINING by @FIGURES_INFERIOR; + sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_INFERIOR; + } INFERIOR; +} subs; + +#-------------------------------------- +feature sinf { # Scientific Inferiors + lookup INFERIOR; +} sinf; + +#-------------------------------------- +feature onum { # Oldstyle (Text) Figures + sub @FIGURES_LINING by @FIGURES_OLDSTYLE; +} onum; + +#-------------------------------------- +feature case { # Case-Sensitive Forms + sub @MARKS_CMB_ALL by @MARKS_CMB_ALL_CASE; + sub @FIGURES_LINING by @FIGURES_CASE; + sub @FIGURES_OLDSTYLE by @FIGURES_CASE; + sub one.a by one.ac; + sub ijacute by IJacute; + sub at by at.case; + sub anoteleia by anoteleia.cap; +} case; + +#-------------------------------------- +lookup A_LC_ALT { + sub @A_LC by @A_LC_ALT; +} A_LC_ALT; + +lookup G_LC_ALT { + sub @G_LC by @G_LC_ALT; +} G_LC_ALT; + +lookup I_LC_ALT { # includes i & l alternates + sub @I_LC by @I_LC_ALT; + sub @L_LC by @L_LC_ALT; +} I_LC_ALT; + +lookup BETA_LC_ALT { + sub beta by beta.a; +} BETA_LC_ALT; + +lookup THETA_LC_ALT { + sub theta by theta.a; +} THETA_LC_ALT; + +lookup PHI_LC_ALT { + sub phi by phi.a; +} PHI_LC_ALT; + +lookup ZERO_SLASH { + sub [zero zero.onum zero.cap] by [zero.0 zero.0o zero.0c]; +} ZERO_SLASH; + +lookup HYPHEN_ALT { + sub [hyphen sfthyphen hyphentwo] by [hyphen.a sfthyphen.a hyphentwo.a]; +} HYPHEN_ALT; + +lookup ASTERISK_ALT { + sub asterisk by asterisk.a; +} ASTERISK_ALT; + +lookup DOLLAR_ALT { + sub dollar by dollar.a; +} DOLLAR_ALT; + +lookup ONE_ALT { + sub one by one.a; +} ONE_ALT; + +#-------------------------------------- +feature cv01 { # Character Variant 1 (alternate lowercase a) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "simple a"; # English US + name 3 1 0x0408 "\03B1\03C0\03BB\03CC a"; # Greek + name 3 1 0x0419 "\043F\0440\043E\0441\0442\043E\0439 \0430"; # Russian + }; + }; + + lookup A_LC_ALT; + +} cv01; + +#-------------------------------------- +feature cv02 { # Character Variant 2 (alternate lowercase g) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "simple g"; # English US + name 3 1 0x0408 "\03B1\03C0\03BB\03CC g"; # Greek + name 3 1 0x0419 "\043F\0440\043E\0441\0442\043E\0439 g"; # Russian + }; + }; + + lookup G_LC_ALT; + +} cv02; + +#-------------------------------------- +feature cv04 { # Character Variant 4 (alternate lowercase i) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "serifed i & l"; # English US + name 3 1 0x0408 "i & l \03BC\03B5 \03B1\03BA\03C1\03B5\03BC\03CC\03BD\03B5\03C2"; # Greek + name 3 1 0x0419 "\0456 \0438 \04CF \0441 \0437\0430\0441\0435\0447\043A\0430\043C\0438"; # Russian + }; + }; + + lookup I_LC_ALT; + +} cv04; + +#-------------------------------------- +feature cv06 { # Character Variant 6 (Sami uppercase Eng) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "Sami \014A"; # English US + name 3 1 0x0408 "\03A3\03AC\03BC\03B7 \014A"; # Greek + name 3 1 0x0419 "\0441\0430\0430\043C\0441\043A\0438\0439 \014A"; # Russian + }; + }; + + lookup ENG_UC_SAMI; + +} cv06; + +#-------------------------------------- +feature cv07 { # Character Variant 7 (cursive beta) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "cursive \03B2"; # English US + name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03B2"; # Greek + name 3 1 0x0419 "\0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03B2"; # Russian + }; + }; + + lookup BETA_LC_ALT; + +} cv07; + +#-------------------------------------- +feature cv08 { # Character Variant 8 (cursive theta) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "cursive \03B8"; # English US + name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03B8"; # Greek + name 3 1 0x0419 "\0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03B8"; # Russian + }; + }; + + lookup THETA_LC_ALT; + +} cv08; + +#-------------------------------------- +feature cv09 { # Character Variant 9 (cursive phi) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "cursive \03C6"; # English US + name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03C6"; # Greek + name 3 1 0x0419 "\0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03C6"; # Russian + }; + }; + + lookup PHI_LC_ALT; + +} cv09; + +#-------------------------------------- +feature cv10 { # Character Variant 10 (Serbian be) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "Serbian \03C6"; # English US + name 3 1 0x0408 "\03A3\03AD\03C1\03B2\03B9\03BA\03BF \0431"; # Greek + name 3 1 0x0419 "\0441\0435\0440\0431\0441\043A\0438\0439 \0431"; # Russian + }; + }; + + lookup BE_LC_SRB; + +} cv10; + +#-------------------------------------- +feature cv11 { # Character Variant 11 (Cyrillic breve) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "Cyrillic breve [\02D8]"; # English US + name 3 1 0x0408 "\03BA\03C5\03C1\03B9\03BB\03BB\03B9\03BA\03CC \03B2\03C1\03B1\03C7\03CD [\02D8]"; # Greek + name 3 1 0x0419 "\043A\0438\0440\0438\043B\043B\0438\0447\0435\0441\043A\0430\044F \043A\0440\0430\0442\043A\0430 [\02D8]"; # Russian + }; + }; + + lookup BREVE_CYR; + +} cv11; + +#-------------------------------------- +feature cv12 { # Character Variant 12 (slashed zero) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "slashed zero [0]"; # English US + name 3 1 0x0408 "\03BC\03B7\03B4\03AD\03BD \03BC\03B5 \03BA\03AC\03B8\03B5\03C4\03BF [0]"; # Greek + name 3 1 0x0419 "\0437\0430\0447\0435\0440\043A\043D\0443\0442\044B\0439 \043D\043E\043B\044C [0]"; # Russian + }; + }; + + lookup ZERO_SLASH; + +} cv12; + +#-------------------------------------- +feature cv14 { # Character Variant 14 (typographic hyphen) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "typographic hyphen [-]"; # English US + name 3 1 0x0408 "\03C4\03C5\03C0\03BF\03B3\03C1\03B1\03C6\03B9\03BA\03AE \03C0\03B1\03CD\03BB\03B1 [-]"; # Greek + name 3 1 0x0419 "\0442\0438\043F\043E\0433\0440\0430\0444\0441\043A\0438\0439 \0434\0435\0444\0438\0441 [-]"; # Russian + }; + }; + + lookup HYPHEN_ALT; + +} cv14; + +#-------------------------------------- +feature cv15 { # Character Variant 15 (typographic asterisk) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "typographic asterisk [*]"; # English US + name 3 1 0x0408 "\03C4\03C5\03C0\03BF\03B3\03C1\03B1\03C6\03B9\03BA\03BF\03C2 \03B1\03C3\03C4\03B5\03C1\03AF\03C3\03BA\03BF\03C2 [*]"; # Greek + name 3 1 0x0419 "\0442\0438\043F\043E\0433\0440\0430\0444\0441\043A\0430\044F \0437\0432\0435\0437\0434\043E\0447\043A\0430 [*]"; # Russian + }; + }; + + lookup ASTERISK_ALT; + +} cv15; + +#-------------------------------------- +feature cv16 { # Character Variant 16 (barred dollar sign) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "slashed dollar sign [$]"; # English US + name 3 1 0x0408 "\03C3\03CD\03BC\03B2\03BF\03BB\03BF \03C4\03BF\03C5 \03B4\03BF\03BB\03B1\03C1\03AF\03BF\03C5 \03BC\03B5 \03BA\03AC\03B8\03B5\03C4\03BF [$]"; # Greek + name 3 1 0x0419 "\0437\0430\0447\0435\0440\043A\043D\0443\0442\044B\0439 \0437\043D\0430\043A \0434\043E\043B\043B\0430\0440\0430 [$]"; # Russian + }; + }; + + lookup DOLLAR_ALT; + +} cv16; + +#-------------------------------------- +feature cv17 { # Character Variant 17 (alternate numeral one) + cvParameters { + FeatUILabelNameID { + name 3 1 0x0409 "alternate numeral one [1]"; # English US +# name 3 1 0x0408 "XXX"; # Greek +# name 3 1 0x0419 "XXX"; # Russian + }; + }; + + lookup ONE_ALT; + +} cv17; + +#-------------------------------------- +feature ss01 { # Stylistic Set 1 (typographic alternates) + featureNames { + name 3 1 0x0409 "typographic alternates [-,*]"; # English US + name 3 1 0x0408 "\03C4\03C5\03C0\03BF\03B3\03C1\03B1\03C6\03B9\03BA\03AC \03B5\03BD\03B1\03BB\03BB\03B1\03BA\03C4\03B9\03BA\03AC [-,*]"; # Greek + name 3 1 0x0419 "\0442\0438\043F\043E\0433\0440\0430\0444\0441\043A\0438\0435 \0437\0430\043C\0435\0441\0442\0438\0442\0435\043B\0438 [-,*]"; # Russian + }; + + lookup HYPHEN_ALT; + lookup ASTERISK_ALT; + +} ss01; + +#-------------------------------------- +feature ss02 { # Stylistic Set 2 (alternate a, cursive beta) + featureNames { + name 3 1 0x0409 "simple a, cursive \03B2"; # English US + name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03B2, \03B1\03C0\03BB\03CC a"; # Greek + name 3 1 0x0419 "\043F\0440\043E\0441\0442\043E\0439 \0430, \0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03B2"; # Russian + }; + + lookup A_LC_ALT; + lookup BETA_LC_ALT; + +} ss02; + +#-------------------------------------- +feature ss03 { # Stylistic Set 3 (alternate g, cursive theta, Serbian be) + featureNames { + name 3 1 0x0409 "simple g, cursive \03B8, Serbian \0431"; # English US + name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03B8, \03B1\03C0\03BB\03CC g, \03A3\03AD\03C1\03B2\03B9\03BA\03BF \0431"; # Greek + name 3 1 0x0419 "\0441\0435\0440\0431\0441\043A\0438\0439 \0431, \043F\0440\043E\0441\0442\043E\0439 g, \0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03B8"; # Russian + }; + + lookup G_LC_ALT; + lookup THETA_LC_ALT; + lookup BE_LC_SRB; + +} ss03; + +#-------------------------------------- +feature ss04 { # Stylistic Set 4 (alternate i) + featureNames { + name 3 1 0x0409 "serifed i & l"; # English US + name 3 1 0x0408 "i & l \03BC\03B5 \03B1\03BA\03C1\03B5\03BC\03CC\03BD\03B5\03C2"; # Greek + name 3 1 0x0419 "\0456 \0438 \04CF \0441 \0437\0430\0441\0435\0447\043A\0430\043C\0438"; # Russian + }; + + lookup I_LC_ALT; + +} ss04; + +#-------------------------------------- +feature ss05 { # Stylistic Set 5 (alternate Sami uppercase Eng, cursive phi) + featureNames { + name 3 1 0x0409 "Sami \014A, cursive \03C6"; # English US + name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03C6, \03A3\03AC\03BC\03B7 \014A"; # Greek + name 3 1 0x0419 "\0441\0430\0430\043C\0441\043A\0438\0439 \014A, \0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03C6"; # Russian + }; + + lookup ENG_UC_SAMI; + lookup PHI_LC_ALT; + +} ss05; + +#-------------------------------------- +feature ss06 { # Stylistic Set 6 (alternate dollar sign) + featureNames { + name 3 1 0x0409 "slashed dollar sign [$]"; # English US + name 3 1 0x0408 "\03C3\03CD\03BC\03B2\03BF\03BB\03BF \03C4\03BF\03C5 \03B4\03BF\03BB\03B1\03C1\03AF\03BF\03C5 \03BC\03B5 \03BA\03AC\03B8\03B5\03C4\03BF [$]"; # Greek + name 3 1 0x0419 "\0437\0430\0447\0435\0440\043A\043D\0443\0442\044B\0439 \0437\043D\0430\043A \0434\043E\043B\043B\0430\0440\0430 [$]"; # Russian + }; + + lookup DOLLAR_ALT; + +} ss06; + +#-------------------------------------- +feature ss07 { # Stylistic Set 7 (alternate numeral one) + featureNames { + name 3 1 0x0409 "alternate numeral one [1]"; # English US +# name 3 1 0x0408 "XXX"; # Greek +# name 3 1 0x0419 "XXX"; # Russian + }; + +lookup ONE_ALT_FULL { + sub [one one.onum one.cap] by [one.a one.ao one.ac]; +} ONE_ALT_FULL; + +} ss07; + +#-------------------------------------- +feature zero { + lookup ZERO_SLASH; +} zero; + +#-------------------------------------- +feature salt { # Stylistic Alternates + lookup A_LC_ALT; + lookup G_LC_ALT; + lookup I_LC_ALT; + lookup ENG_UC_SAMI; + lookup BETA_LC_ALT; + lookup THETA_LC_ALT; + lookup PHI_LC_ALT; #!!! + lookup ZERO_SLASH; + lookup HYPHEN_ALT; + lookup ASTERISK_ALT; + lookup DOLLAR_ALT; + lookup ONE_ALT_FULL; +} salt; + +#------------------------------------------- +feature size { + parameters 10.0 0; # design size, subfamily +} size; + diff --git a/tests/makeotf_data/input/bug680/GlyphOrderAndAliasDB b/tests/makeotf_data/input/bug680/GlyphOrderAndAliasDB new file mode 100644 index 000000000..452d38570 --- /dev/null +++ b/tests/makeotf_data/input/bug680/GlyphOrderAndAliasDB @@ -0,0 +1,1585 @@ +.notdef .notdef +space space +A A +B B +C C +D D +E E +F F +G G +H H +I I +J J +K K +L L +M M +N N +O O +P P +Q Q +R R +S S +T T +U U +V V +W W +X X +Y Y +Z Z +a a +b b +c c +d d +e e +f f +g g +h h +i i +j j +k k +l l +m m +n n +o o +p p +q q +r r +s s +t t +u u +v v +w w +x x +y y +z z +Agrave Agrave +Aacute Aacute +Acircumflex Acircumflex +Atilde Atilde +Adieresis Adieresis +Amacron Amacron +Abreve Abreve +Aring Aring +Aringacute Aringacute +uni01CD Acaron +Aogonek Aogonek +uni1EA0 Adotbelow +uni1EA2 Ahoi +uni1EA4 Acircumflexacute +uni1EA6 Acircumflexgrave +uni1EA8 Acircumflexhoi +uni1EAA Acircumflextilde +uni1EAC Acircumflexdotbelow +uni1EAE Abreveacute +uni1EB0 Abrevegrave +uni1EB2 Abrevehoi +uni1EB4 Abrevetilde +uni1EB6 Abrevedotbelow +AE AE +AEacute AEacute +uni01E2 AEmacron +uni0243 Bstroke +uni1E06 Blinebelow +Ccedilla Ccedilla +Cacute Cacute +Ccircumflex Ccircumflex +Ccaron Ccaron +Cdotaccent Cdotaccent +Dcaron Dcaron +uni1E0C Ddotbelow +uni1E0E Dlinebelow +uni1E10 Dcedilla +Dcroat Dcroat +uni018A Dhook +Egrave Egrave +Eacute Eacute +Ecircumflex Ecircumflex +Ecaron Ecaron +Edieresis Edieresis +Emacron Emacron +Ebreve Ebreve +Edotaccent Edotaccent +Eogonek Eogonek +uni1EB8 Edotbelow +uni1EBA Ehoi +uni1EBC Etilde +uni1EBE Ecircumflexacute +uni1EC0 Ecircumflexgrave +uni1EC2 Ecircumflexhoi +uni1EC4 Ecircumflextilde +uni1EC6 Ecircumflexdotbelow +uni1E16 Emacronacute +uni01F4 Gacute +Gcircumflex Gcircumflex +Gbreve Gbreve +Gdotaccent Gdotaccent +uni0122 Gcommaaccent +Gcaron Gcaron +uni1E20 Gmacron +uni00470303 Gtilde +uni0193 Ghook +Hcircumflex Hcircumflex +uni1E26 Hdieresis +uni1E24 Hdotbelow +uni1E28 Hcedilla +uni1E2A Hbrevebelow +Hbar Hbar +Igrave Igrave +Iacute Iacute +Icircumflex Icircumflex +Itilde Itilde +Idieresis Idieresis +Imacron Imacron +Idotaccent Idotaccent +uni01CF Icaron +Iogonek Iogonek +uni1EC8 Ihoi +uni1ECA Idotbelow +Ibreve Ibreve +Jcircumflex Jcircumflex +uni0136 Kcommaaccent +uni1E32 Kdotbelow +uni1E34 Klinebelow +Lacute Lacute +Lcaron Lcaron +uni013B Lcommaaccent +uni1E36 Ldotbelow +uni1E38 Ldotbelowmacron +uni1E3A Llinebelow +Lslash Lslash +Ldot Ldot +uni1E3E Macute +uni1E40 Mdotaccent +uni1E42 Mdotbelow +Nacute Nacute +uni01F8 Ngrave +Ncaron Ncaron +Ntilde Ntilde +uni0145 Ncommaaccent +uni1E44 Ndotaccent +uni1E46 Ndotbelow +uni1E48 Nlinebelow +Ograve Ograve +Oacute Oacute +Ocircumflex Ocircumflex +Otilde Otilde +Odieresis Odieresis +Omacron Omacron +Ohungarumlaut Ohungarumlaut +Obreve Obreve +uni01D1 Ocaron +uni01EA Oogonek +uni1ECC Odotbelow +uni1ECE Ohoi +uni1ED0 Ocircumflexacute +uni1ED2 Ocircumflexgrave +uni1ED4 Ocircumflexhoi +uni1ED6 Ocircumflextilde +uni1ED8 Ocircumflexdotbelow +Ohorn Ohorn +uni1EDA Ohornacute +uni1EDC Ohorngrave +uni1EDE Ohornhoi +uni1EE0 Ohorntilde +uni1EE2 Ohorndotbelow +uni1E52 Omacronacute +Oslash Oslash +Oslashacute Oslashacute +OE OE +Racute Racute +Rcaron Rcaron +uni1E58 Rdotaccent +uni0156 Rcommaaccent +uni1E5A Rdotbelow +uni1E5C Rdotbelowmacron +uni1E5E Rlinebelow +Sacute Sacute +Scircumflex Scircumflex +Scaron Scaron +uni1E66 Scarondot +uni015E Scedilla +uni0218 Scommaaccent +uni1E60 Sdotaccent +uni1E62 Sdotbelow +uni1E9E Germandbls +Tcaron Tcaron +uni0162 Tcedilla +uni021A Tcommaaccent +uni1E6C Tdotbelow +uni1E6E Tlinebelow +Tbar Tbar +Ugrave Ugrave +Uacute Uacute +Ucircumflex Ucircumflex +Utilde Utilde +Udieresis Udieresis +Umacron Umacron +Ubreve Ubreve +Uring Uring +Uhungarumlaut Uhungarumlaut +uni01D3 Ucaron +Uogonek Uogonek +uni01D5 Udieresismacron +uni01D7 Udieresisacute +uni01D9 Udieresiscaron +uni01DB Udieresisgrave +uni1EE4 Udotbelow +uni1EE6 Uhoi +Uhorn Uhorn +uni1EE8 Uhornacute +uni1EEA Uhorngrave +uni1EEC Uhornhoi +uni1EEE Uhorntilde +uni1EF0 Uhorndotbelow +uni1E7E Vdotbelow +Wgrave Wgrave +Wacute Wacute +Wcircumflex Wcircumflex +Wdieresis Wdieresis +Ygrave Ygrave +Yacute Yacute +Ycircumflex Ycircumflex +Ydieresis Ydieresis +uni1E8E Ydotaccent +uni1EF4 Ydotbelow +uni1EF6 Yhoi +uni1EF8 Ytilde +Zacute Zacute +Zcaron Zcaron +Zdotaccent Zdotaccent +uni1E90 Zcircumflex +uni1E92 Zdotbelow +uni1E94 Zlinebelow +Eth Eth +Thorn Thorn +uni018F Schwa +Eng Eng +IJ IJ +uni004C00B7004C Lcat +uni01320301 IJacute +agrave agrave +aacute aacute +acircumflex acircumflex +atilde atilde +adieresis adieresis +amacron amacron +abreve abreve +aring aring +aringacute aringacute +uni01CE acaron +aogonek aogonek +uni1EA1 adotbelow +uni1EA3 ahoi +uni1EA5 acircumflexacute +uni1EA7 acircumflexgrave +uni1EA9 acircumflexhoi +uni1EAB acircumflextilde +uni1EAD acircumflexdotbelow +uni1EAF abreveacute +uni1EB1 abrevegrave +uni1EB3 abrevehoi +uni1EB5 abrevetilde +uni1EB7 abrevedotbelow +ae ae +aeacute aeacute +uni01E3 aemacron +uni0180 bstroke +uni1E07 blinebelow +ccedilla ccedilla +cacute cacute +ccircumflex ccircumflex +ccaron ccaron +cdotaccent cdotaccent +dcaron dcaron +uni1E0D ddotbelow +uni1E0F dlinebelow +uni1E11 dcedilla +dcroat dcroat +egrave egrave +eacute eacute +ecircumflex ecircumflex +ecaron ecaron +edieresis edieresis +emacron emacron +ebreve ebreve +eogonek eogonek +edotaccent edotaccent +uni1EB9 edotbelow +uni1EBB ehoi +uni1EBD etilde +uni1EBF ecircumflexacute +uni1EC1 ecircumflexgrave +uni1EC3 ecircumflexhoi +uni1EC5 ecircumflextilde +uni1EC7 ecircumflexdotbelow +uni1E17 emacronacute +uni01F5 gacute +gcircumflex gcircumflex +gbreve gbreve +gdotaccent gdotaccent +uni0123 gcommaaccent +gcaron gcaron +uni1E21 gmacron +uni00670303 gtilde +hcircumflex hcircumflex +uni1E27 hdieresis +uni1E25 hdotbelow +uni1E96 hlinebelow +uni1E29 hcedilla +uni1E2B hbrevebelow +hbar hbar +igrave igrave +iacute iacute +icircumflex icircumflex +itilde itilde +idieresis idieresis +imacron imacron +uni01D0 icaron +iogonek iogonek +uni1EC9 ihoi +uni1ECB idotbelow +ibreve ibreve +dotlessi dotlessi +jcircumflex jcircumflex +uni0137 kcommaaccent +uni1E33 kdotbelow +uni1E35 klinebelow +kgreenlandic kgreenlandic +lacute lacute +lcaron lcaron +uni013C lcommaaccent +uni1E37 ldotbelow +uni1E39 ldotbelowmacron +uni1E3B llinebelow +lslash lslash +ldot ldot +uni1E3F macute +uni1E41 mdotaccent +uni1E43 mdotbelow +nacute nacute +uni01F9 ngrave +ncaron ncaron +ntilde ntilde +uni0146 ncommaaccent +uni1E45 ndotaccent +uni1E47 ndotbelow +uni1E49 nlinebelow +napostrophe napostrophe +ograve ograve +oacute oacute +ocircumflex ocircumflex +otilde otilde +odieresis odieresis +omacron omacron +ohungarumlaut ohungarumlaut +uni01D2 ocaron +uni01EB oogonek +uni1ECD odotbelow +uni1ECF ohoi +uni1ED1 ocircumflexacute +uni1ED3 ocircumflexgrave +uni1ED5 ocircumflexhoi +uni1ED7 ocircumflextilde +uni1ED9 ocircumflexdotbelow +obreve obreve +uni1E53 omacronacute +ohorn ohorn +uni1EDB ohornacute +uni1EDD ohorngrave +uni1EDF ohornhoi +uni1EE1 ohorntilde +uni1EE3 ohorndotbelow +oslash oslash +oslashacute oslashacute +oe oe +racute racute +uni0157 rcommaaccent +rcaron rcaron +uni1E59 rdotaccent +uni1E5B rdotbelow +uni1E5D rdotbelowmacron +uni1E5F rlinebelow +sacute sacute +scircumflex scircumflex +scaron scaron +uni1E67 scarondot +uni015F scedilla +uni0219 scommaaccent +uni1E61 sdotaccent +uni1E63 sdotbelow +germandbls germandbls +longs longs +tcaron tcaron +uni0163 tcedilla +uni021B tcommaaccent +uni1E6D tdotbelow +uni1E6F tlinebelow +uni1E97 tdieresis +tbar tbar +ugrave ugrave +uacute uacute +ucircumflex ucircumflex +utilde utilde +udieresis udieresis +umacron umacron +ubreve ubreve +uring uring +uhungarumlaut uhungarumlaut +uni01D4 ucaron +uogonek uogonek +uni01D6 udieresismacron +uni01D8 udieresisacute +uni01DA udieresiscaron +uni01DC udieresisgrave +uni1EE5 udotbelow +uni1EE7 uhoi +uhorn uhorn +uni1EE9 uhornacute +uni1EEB uhorngrave +uni1EED uhornhoi +uni1EEF uhorntilde +uni1EF1 uhorndotbelow +uni1E7F vdotbelow +wgrave wgrave +wacute wacute +wcircumflex wcircumflex +wdieresis wdieresis +ygrave ygrave +yacute yacute +ycircumflex ycircumflex +ydieresis ydieresis +uni1E8F ydotaccent +uni1EF5 ydotbelow +uni1EF7 yhoi +uni1EF9 ytilde +zacute zacute +zcaron zcaron +zdotaccent zdotaccent +uni1E91 zcircumflex +uni1E93 zdotbelow +uni1E95 zlinebelow +eth eth +thorn thorn +eng eng +uni0237 dotlessj +ij ij +uni006C00B7006C lcat +uni01330301 ijacute +uni0250 aturned +uni0252 alphalatinturned +uni0253 bhook +uni0254 oopen +uni0255 ccurl +uni0256 dtail +uni0257 dhook +uni0258 ereversed +uni0251 alphalatin +uni0299 bsmall +uni0259 schwa +uni025A schwahookrhotic +uni025B eopen +uni025C eopenreversed +uni025E eopenreversedclosed +uni025F dotlessjstroke +uni0260 ghook +uni0261 gscript +uni0262 gsmall +uni0263 gammalatin +uni0264 ramshorn +uni0265 hturned +uni0266 hhook +uni0267 henghook +uni029C hsmall +uni0268 istroke +uni026A ismall +uni029D jcrossedtail +uni029E kturned +uni026B lmiddletilde +uni026C lbelt +uni026D lretroflex +uni026E lezh +uni029F lsmall +uni026F mturned +uni0270 mlonglegturned +uni0271 mhook +uni0272 nhookleft +uni0273 nretroflex +uni0274 nsmall +uni0275 obar +uni0276 oesmall +uni0278 philatin +uni0279 rturned +uni027A rlonglegturned +uni027B rhookturned +uni027D rtail +uni027E rfishhook +uni0280 rsmall +uni0281 rsmallinverted +uni0282 shook +uni0283 esh +uni0284 dotlessjstrokehook +uni0287 tturned +uni0288 tretroflex +uni0289 ubar +uni028A upsilonlatin +uni028B vhook +uni028C vturned +uni028D wturned +uni028E yturned +uni028F ysmall +uni0290 zretroflex +uni0291 zcurl +uni0292 ezh +uni02A4 dezh +uni02A6 ts +uni02A7 tesh +uni0294 glottalstop +uni0295 glottalstopreversed +uni02A1 glottalstopstroke +uni02A2 glottalstopstrokereversed +uni01C2 clickalveolar +uni0298 clickbilabial +uni014A.a Eng.a +a.a a.a +agrave.a agrave.a +aacute.a aacute.a +acircumflex.a acircumflex.a +atilde.a atilde.a +adieresis.a adieresis.a +amacron.a amacron.a +abreve.a abreve.a +aring.a aring.a +aringacute.a aringacute.a +uni01CE.a acaron.a +uni1EA1.a adotbelow.a +uni1EA3.a ahoi.a +uni1EA5.a acircumflexacute.a +uni1EA7.a acircumflexgrave.a +uni1EA9.a acircumflexhoi.a +uni1EAB.a acircumflextilde.a +uni1EAD.a acircumflexdotbelow.a +uni1EAF.a abreveacute.a +uni1EB1.a abrevegrave.a +uni1EB3.a abrevehoi.a +uni1EB5.a abrevetilde.a +uni1EB7.a abrevedotbelow.a +aogonek.a aogonek.a +g.a g.a +uni01F5.a gacute.a +gcircumflex.a gcircumflex.a +gbreve.a gbreve.a +gdotaccent.a gdotaccent.a +uni0123.a gcommaaccent.a +gcaron.a gcaron.a +uni1E21.a gmacron.a +uni00670303.a gtilde.a +i.a i.a +dotlessi.a dotlessi.a +igrave.a igrave.a +iacute.a iacute.a +icircumflex.a icircumflex.a +itilde.a itilde.a +idieresis.a idieresis.a +imacron.a imacron.a +uni01D0.a icaron.a +iogonek.a iogonek.a +uni1EC9.a ihoi.a +uni1ECB.a idotbelow.a +uni012D.a ibreve.a +uni0268.a istroke.a +iogonek.d iogonek.d +iogonek.da iogonek.da +uni0268.d istroke.d +uni0268.da istroke.da +uni029D.d jcrossedtail.d +l.a l.a +lacute.a lacute.a +lcaron.a lcaron.a +uni013C.a lcommaaccent.a +uni1E37.a ldotbelow.a +uni1E39.a ldotbelowmacron.a +uni1E3B.a llinebelow.a +lslash.a lslash.a +ldot.a ldot.a +uni006C00B7006C.a lcat.a +uni026B.a lmiddletilde.a +uni026C.a lbelt.a +Alpha Alpha +Beta Beta +Gamma Gamma +uni0394 Delta +Epsilon Epsilon +Zeta Zeta +Eta Eta +Theta Theta +Iota Iota +Kappa Kappa +Lambda Lambda +Mu Mu +Nu Nu +Xi Xi +Omicron Omicron +Pi Pi +Rho Rho +Sigma Sigma +Tau Tau +Upsilon Upsilon +Phi Phi +Chi Chi +Psi Psi +uni03A9 Omega +Alphatonos Alphatonos +Epsilontonos Epsilontonos +Etatonos Etatonos +Iotatonos Iotatonos +Iotadieresis Iotadieresis +Omicrontonos Omicrontonos +Upsilontonos Upsilontonos +Upsilondieresis Upsilondieresis +Omegatonos Omegatonos +alpha alpha +beta beta +gamma gamma +delta delta +epsilon epsilon +zeta zeta +eta eta +theta theta +iota iota +kappa kappa +lambda lambda +uni03BC mu +nu nu +xi xi +omicron omicron +pi pi +rho rho +sigma sigma +tau tau +upsilon upsilon +phi phi +chi chi +psi psi +omega omega +uni03C2 sigma.end +uni03D0 beta.a +uni03D1 theta.a +uni03D5 phi.math +phi.a phi.a +alphatonos alphatonos +epsilontonos epsilontonos +etatonos etatonos +iotatonos iotatonos +iotadieresis iotadieresis +omicrontonos omicrontonos +upsilontonos upsilontonos +upsilondieresis upsilondieresis +omegatonos omegatonos +iotadieresistonos iotadieresistonos +upsilondieresistonos upsilondieresistonos +uni03D7 kai +uni03D9 koppa +uni03DB stigma +uni03DD digamma +uni03E1 sampi +uni037E questiongreek +anoteleia anoteleia +anoteleia.cap anoteleia.cap +uni0374 numeralsign +uni0375 lownumeralsign +tonos tonos +tonos.cap tonos.cap +dieresistonos dieresistonos +uni037A iotasubscript +uni1FBE iotaadscript +uni1FBD lenis +uni1FBF psili +uni1FFE asper +uni1FEF varia +uni1FFD oxia +uni1FCD lenisgrave +uni1FDD aspergrave +uni1FCE lenisacute +uni1FDE asperacute +uni1FCF lenistilde +uni1FDF aspertilde +uni1FC0 perispomeni +uni1FED dialytikagrave +uni1FEE dialytikaacute +uni1FC1 dialytikatilde +uni1FBD.cap lenis.cap +uni1FFE.cap asper.cap +uni1FEF.cap varia.cap +uni1FFD.cap oxia.cap +uni1FCD.cap lenisgrave.cap +uni1FDD.cap aspergrave.cap +uni1FCE.cap lenisacute.cap +uni1FDE.cap asperacute.cap +uni1FCF.cap lenistilde.cap +uni1FDF.cap aspertilde.cap +uni0410 Acyr +uni0411 Be +uni0412 Ve +uni0413 Ghe +uni0414 De +uni0415 Ie +uni0416 Zhe +uni0417 Ze +uni0418 Icyr +uni0419 Ishort +uni041A Ka +uni041B El +uni041C Em +uni041D En +uni041E Ocyr +uni041F Pe +uni0420 Er +uni0421 Es +uni0422 Te +uni0423 Ucyr +uni0424 Ef +uni0425 Ha +uni0426 Tse +uni0427 Che +uni0428 Sha +uni0429 Shcha +uni042A Hard +uni042B Yeru +uni042C Soft +uni042D Ecyr +uni042E Yu +uni042F Ya +uni0400 Iegrave +uni0401 Io +uni0402 Dje +uni0403 Gje +uni0404 Ieukran +uni0405 Dze +uni0406 Iukran +uni0407 Yi +uni0408 Je +uni0409 Lje +uni040A Nje +uni040B Tshe +uni040C Kje +uni040D Igravecyr +uni040E Ushort +uni040F Dzhe +uni0462 Yat +uni0472 Fita +uni0474 Izhitsa +uni0490 Gheup +uni0492 Ghestroke +uni0496 Zhedescender +uni0498 Zedescender +uni049A Kadescender +uni04A0 Kabashkir +uni04A2 Endescender +uni04AA Esdescender +uni04AE Ustraight +uni04B0 Ustraightstroke +uni04B2 Hadescender +uni04B6 Chedescender +uni04BA Shha +uni04C0 Palochka +uni04C1 Zhebreve +uni04D0 Abrevecyr +uni04D4 Aie +uni04D6 Iebreve +uni04D8 Schwacyr +uni04E2 Imacroncyr +uni04E6 Odieresiscyr +uni04E8 Obarcyr +uni04EE Umacroncyr +uni04F2 Uacutedblcyr +uni0430 acyr +uni0431 be +uni0432 ve +uni0433 ghe +uni0434 de +uni0435 ie +uni0436 zhe +uni0437 ze +uni0438 icyr +uni0439 ishort +uni043A ka +uni043B el +uni043C em +uni043D en +uni043E ocyr +uni043F pe +uni0440 er +uni0441 es +uni0442 te +uni0443 ucyr +uni0444 ef +uni0445 ha +uni0446 tse +uni0447 che +uni0448 sha +uni0449 shcha +uni044A hard +uni044B yeru +uni044C soft +uni044D ecyr +uni044E yu +uni044F ya +uni0450 iegrave +uni0451 io +uni0452 dje +uni0453 gje +uni0454 ieukran +uni0455 dze +uni0456 iukran +uni0457 yi +uni0458 je +uni0459 lje +uni045A nje +uni045B tshe +uni045C kje +uni045D igravecyr +uni045E ushort +uni045F dzhe +uni0463 yat +uni0473 fita +uni0475 izhitsa +uni0491 gheup +uni0493 ghestroke +uni0497 zhedescender +uni0499 zedescender +uni049B kadescender +uni04A1 kabashkir +uni04A3 endescender +uni04AB esdescender +uni04AF ustraight +uni04B1 ustraightstroke +uni04B3 hadescender +uni04B7 chedescender +uni04BB shha +uni04C2 zhebreve +uni04CF palochka +uni04D1 abrevecyr +uni04D5 aie +uni04D7 iebreve +uni04D9 schwacyr +uni04E3 imacroncyr +uni04E7 odieresiscyr +uni04E9 obarcyr +uni04EF umacroncyr +uni04F3 uacutedblcyr +uni0430.a acyr.a +uni04D1.a abrevecyr.a +uni0431.srb be.srb +uni0456.a iukran.a +uni0457.a yi.a +uni04CF.a palochka.a +uni2116 numero +ampersand ampersand +zero zero +one one +two two +three three +four four +five five +six six +seven seven +eight eight +nine nine +zero.a zero.0 +one.a one.a +zero.onum zero.onum +one.onum one.onum +two.onum two.onum +three.onum three.onum +four.onum four.onum +five.onum five.onum +six.onum six.onum +seven.onum seven.onum +eight.onum eight.onum +nine.onum nine.onum +zero.b zero.0o +one.b one.ao +zero.cap zero.cap +one.cap one.cap +two.cap two.cap +three.cap three.cap +four.cap four.cap +five.cap five.cap +six.cap six.cap +seven.cap seven.cap +eight.cap eight.cap +nine.cap nine.cap +zero.c zero.0c +one.c one.ac +period period +comma comma +colon colon +semicolon semicolon +ellipsis ellipsis +exclam exclam +exclamdown exclamdown +question question +questiondown questiondown +quotesingle quotesingle +quotedbl quotedbl +quoteleft quoteleft +quoteright quoteright +quotedblleft quotedblleft +quotedblright quotedblright +quotesinglbase quotesinglbase +quotedblbase quotedblbase +quotereversed quotereversed +guilsinglleft guilsinglleft +guilsinglright guilsinglright +guillemotleft guillemotleft +guillemotright guillemotright +hyphen hyphen +uni00AD sfthyphen +uni2010 hyphentwo +endash endash +emdash emdash +figuredash figuredash +uni2015 horizontalbar +periodcentered periodcentered +bullet bullet +uni25E6 bulletwhite +uni25AA bulletsquare +uni25AB bulletsquarewhite +uni25B4 trianglesmallupblack +uni25B5 trianglesmallupwhite +uni25B8 trianglesmallrightblack +uni25B9 trianglesmallrightwhite +uni25BE trianglesmalldownblack +uni25BF trianglesmalldownwhite +uni25C2 trianglesmallleftblack +uni25C3 trianglesmallleftwhite +invbullet invbullet +filledrect filledrect +underscore underscore +underscoredbl underscoredbl +uni203E overline +uni203F undertie +parenleft parenleft +parenright parenright +bracketleft bracketleft +bracketright bracketright +braceleft braceleft +braceright braceright +slash slash +bar bar +backslash backslash +brokenbar brokenbar +asterisk asterisk +dagger dagger +daggerdbl daggerdbl +section section +paragraph paragraph +uni2016 bardbl +exclamdbl exclamdbl +uni2047 questiondbl +uni2049 exclamquestion +uni2048 questionexclam +uni203D interrobang +uni2E18 interrobangdown +uni231C ceilingleft +uni231D ceilingright +uni231E floorleft +uni231F floorright +uni27E6 bracketleftwhite +uni27E7 bracketrightwhite +uni2E22 brackhalftopleft +uni2E23 brackhalftopright +uni2E24 brackhalfbotleft +uni2E25 brackhalfbotright +copyright copyright +uni2117 soundcopyright +registered registered +trademark trademark +uni2120 servicemark +at at +at.case at.case +numbersign numbersign +asterisk.a asterisk.a +hyphen.a hyphen.a +uni00AD.a sfthyphen.a +uni2010.a hyphentwo.a +dollar.a dollar.a +zero.sups zero.sups uni2070 +one.sups one.sups uni00B9 +two.sups two.sups uni00B2 +three.sups three.sups uni00B3 +four.sups four.sups uni2074 +five.sups five.sups uni2075 +six.sups six.sups uni2076 +seven.sups seven.sups uni2077 +eight.sups eight.sups uni2078 +nine.sups nine.sups uni2079 +parenleft.sups parenleft.sups uni207D +parenright.sups parenright.sups uni207E +period.sups period.sups +comma.sups comma.sups +zero.subs zero.subs uni2080 +one.subs one.subs uni2081 +two.subs two.subs uni2082 +three.subs three.subs uni2083 +four.subs four.subs uni2084 +five.subs five.subs uni2085 +six.subs six.subs uni2086 +seven.subs seven.subs uni2087 +eight.subs eight.subs uni2088 +nine.subs nine.subs uni2089 +parenleft.subs parenleft.subs uni208D +parenright.subs parenright.subs uni208E +period.subs period.subs +comma.subs comma.subs +zero.dnom zero.dnom +one.dnom one.dnom +two.dnom two.dnom +three.dnom three.dnom +four.dnom four.dnom +five.dnom five.dnom +six.dnom six.dnom +seven.dnom seven.dnom +eight.dnom eight.dnom +nine.dnom nine.dnom +parenleft.dnom parenleft.dnom +parenright.dnom parenright.dnom +period.dnom period.dnom +comma.dnom comma.dnom +zero.numr zero.numr +one.numr one.numr +two.numr two.numr +three.numr three.numr +four.numr four.numr +five.numr five.numr +six.numr six.numr +seven.numr seven.numr +eight.numr eight.numr +nine.numr nine.numr +parenleft.numr parenleft.numr +parenright.numr parenright.numr +period.numr period.numr +comma.numr comma.numr +ordfeminine ordfeminine +ordfeminine.a ordfeminine.a +ordmasculine ordmasculine +a.sups a.sups uni1D43 +b.sups b.sups uni1D47 +c.sups c.sups uni1D9C +d.sups d.sups uni1D48 +e.sups e.sups uni1D49 +f.sups f.sups uni1DA0 +g.sups g.sups uni1D4D +h.sups h.sups uni02B0 +i.sups i.sups uni2071 +j.sups j.sups uni02B2 +k.sups k.sups uni1D4F +l.sups l.sups uni02E1 +m.sups m.sups uni1D50 +n.sups n.sups uni207F +o.sups o.sups uni1D52 +p.sups p.sups uni1D56 +q.sups q.sups +r.sups r.sups uni02B3 +s.sups s.sups uni02E2 +t.sups t.sups uni1D57 +u.sups u.sups uni1D58 +v.sups v.sups uni1D5B +w.sups w.sups uni02B7 +x.sups x.sups uni02E3 +y.sups y.sups uni02B8 +z.sups z.sups uni1DBB +egrave.sups egrave.sups +eacute.sups eacute.sups +eogonek.sups eogonek.sups +uni0259.sups schwa.sups uni2094 +uni0266.sups hhook.sups +uni02E0 gammalatinsupmod +uni02E4 glottalstopreversedsupmod +a.supa a.supa +g.supa g.supa +i.supa i.supa +colon.sups colon.sups +hyphen.sups hyphen.sups +endash.sups endash.sups +emdash.sups emdash.sups +currency currency +dollar dollar +sterling sterling +yen yen +Euro Euro +cent cent +uni0192 florin +colonmonetary colonmonetary +lira lira +uni20A6 naira +peseta peseta +uni20A9 won +dong dong +uni20B1 peso +uni20B2 guarani +uni20B4 hryvnia +uni20B5 cedi +uni20B9 rupeeindian +uni20BA liraturkish +uni20AE tugrik +uni20B8 tenge +uni20BD ruble +franc franc +fraction fraction +uni2215 divisionslash +slash.frac slash.frac +percent percent +perthousand perthousand +onequarter onequarter +onehalf onehalf +threequarters threequarters +onethird onethird +twothirds twothirds +uni2155 onefifth +uni2156 twofifths +uni2157 threefifths +uni2158 fourfifths +uni2159 onesixth +uni215A fivesixths +uni2150 oneseventh +oneeighth oneeighth +threeeighths threeeighths +fiveeighths fiveeighths +seveneighths seveneighths +uni2151 oneninth +uni2152 onetenth +uni2189 zerothirds +plus plus +minus minus +multiply multiply +divide divide +uni2219 bulletoperator +equal equal +equivalence equivalence +less less +greater greater +lessequal lessequal +greaterequal greaterequal +plusminus plusminus +asciicircum asciicircum +notequal notequal +asciitilde asciitilde +approxequal approxequal +logicalnot logicalnot +revlogicalnot revlogicalnot +intersection intersection +orthogonal orthogonal +infinity infinity +degree degree +uni2032 prime +uni2033 dblprime +uni2035 primereversed +uni00B5 mu.math +partialdiff partialdiff +integral integral +integraltp integraltp +integralbt integralbt +radical radical +uni2206 Delta.math +uni2126 Omega.math +uni2200 universal +uni2203 existential +uni2237 proportion +summation summation +product product +uni2105 careof +uni2113 litre +estimated estimated +uni2190 arrowleft +arrowup arrowup +uni2192 arrowright +arrowdown arrowdown +uni2196 arrowupleft +uni2197 arrowupright +uni2198 arrowdownright +uni2199 arrowdownleft +uni21D0 arrowdblleft +uni21D1 arrowdblup +uni21D2 arrowdblright +uni21D3 arrowdbldown +arrowboth arrowboth +arrowupdn arrowupdn +arrowupdnbse arrowupdnbse +uni25CF circleblack +uni25CB circlewhite +uni25A0 squareblack +uni25A1 squarewhite +uni2752 squareshadow +uni25C6 diamondblack +triagup triangleupblack +uni25B3 triangleupwhite +uni25B6 trianglerightblack +uni25B7 trianglerightwhite +triagdn triangledownblack +uni25BD triangledownwhite +uni25C0 triangleleftblack +uni25C1 triangleleftwhite +triagrt pointerblackright +triaglf pointerblackleft +invcircle invcircle +uni25C9 fisheye +uni2610 checkbox +uni2611 checkedbox +uni2713 check +musicalnote eighthnote +musicalnotedbl musicalnotedbl +heart heart +club club +diamond diamond +spade spade +smileface smileface +invsmileface invsmileface +uni2764 heartblackheavy +uni2615 coffee +u1F4A9 poop +u1F916 robot +u1F512 lock +female female +male male +sun sun +lozenge lozenge +house house +uni02B9 primemod +uni02BB commaturnedmod +uni02BC apostrophemod +uni02BE ringhalfrightmod +uni02BF ringhalfleftmod +uni02C1 glottalstopreversedmod +uni02D0 colontriangularmod +uni02D1 colontriangularhalfmod +uni02DE hookrhoticmod +grave grave +acute acute +circumflex circumflex +caron caron +uni02C8 verticallinemod +uni02C9 macronmod +uni02CA acutemod +uni02CB gravemod +uni02CC verticallinelowmod +tilde tilde +dieresis dieresis +macron macron +breve breve +ring ring +hungarumlaut hungarumlaut +dotaccent dotaccent +cedilla cedilla +ogonek ogonek +uni25CC circledotted +uni0300 gravecmb +uni0300.cap gravecmb.cap +uni0340 variacmb +uni0301 acutecmb +uni0301.cap acutecmb.cap +uni0301.g tonoscmb uni0341 +uni0302 circumflexcmb +uni0302.cap circumflexcmb.cap +uni0303 tildecmb +uni0303.cap tildecmb.cap +uni0304 macroncmb +uni0304.cap macroncmb.cap +uni0305 overlinecmb +uni0305.cap overlinecmb.cap +uni0306 brevecmb +uni0306.c brevecmb.cyr +uni0306.cap brevecmb.cap +uni0306.ccap brevecmb.cyrcap +uni0307 dotaccentcmb +uni0307.cap dotaccentcmb.cap +uni0308 dieresiscmb +uni0308.cap dieresiscmb.cap +uni0309 hoicmb +uni0309.cap hoicmb.cap +uni0310 candrabinducmb +uni0310.cap candrabinducmb.cap +uni030A ringcmb +uni030A.cap ringcmb.cap +uni030B hungarumlautcmb +uni030B.cap hungarumlautcmb.cap +uni030C caroncmb +uni030C.cap caroncmb.cap +uni030C.a caron.a +uni030F dblgravecmb +uni030F.cap dblgravecmb.cap +uni0311 breveinvertedcmb +uni0311.cap breveinvertedcmb.cap +uni0312 commaturnedabovecmb +uni0312.g aspercmb +uni0313 commaabovecmb +uni0343 leniscmb +uni0318 lefttackbelowcmb +uni0319 righttackbelowcmb +uni031A leftangleabovecmb +uni031B horncmb +uni031C ringhalfleftbelowcmb +uni031D uptackbelowcmb +uni031E downtackbelowcmb +uni031F plusbelowcmb +uni0320 minusbelowcmb +uni0323 dotbelowcmb +uni0324 dieresisbelowcmb +uni0325 ringbelowcmb +uni0326 commabelowcmb +uni0326.a commabelowcmb.a +uni0327 cedillacmb +uni0327.cap cedillacmb.cap +uni0328 ogonekcmb +uni0328.cap ogonekcmb.cap +uni0329 verticallinebelowcmb +uni032A bridgebelowcmb +uni032C caronbelowcmb +uni032E brevebelowcmb +uni032F breveinvertedbelowcmb +uni0330 tildebelowcmb +uni0331 macronbelowcmb +uni0334 tildeoverlaycmb +uni0339 ringhalfrightbelowcmb +uni033A bridgeinvertedbelowcmb +uni033B squarebelowcmb +uni033C seagullbelowcmb +uni033D xabovecmb +uni0342 perispomenicmb +uni0342.cap perispomenicmb.cap +uni0345 iotasubscriptcmb +uni035F macrondoublebelowcmb +uni0361 breveinverteddoublecmb +uni03080301 dieresisacutecmb +uni03080301.cap dieresisacutecmb.cap +uni03080301.g dieresistonoscmb uni0344 +uni03080300 dieresisgravecmb +uni03080300.cap dieresisgravecmb.cap +uni03080300.g dialytikagravecmb +uni03080303 dieresistildecmb +uni03080304 dieresismacroncmb +uni03080304.cap dieresismacroncmb.cap +uni0308030C dieresiscaroncmb +uni0308030C.cap dieresiscaroncmb.cap +uni03020301 circumflexacutecmb +uni03020301.cap circumflexacutecmb.cap +uni03020300 circumflexgravecmb +uni03020300.cap circumflexgravecmb.cap +uni03020309 circumflexhoicmb +uni03020309.cap circumflexhoicmb.cap +uni03020303 circumflextildecmb +uni03020303.cap circumflextildecmb.cap +uni03060301 breveacutecmb +uni03060301.cap breveacutecmb.cap +uni03060300 brevegravecmb +uni03060300.cap brevegravecmb.cap +uni03060309 brevehoicmb +uni03060309.cap brevehoicmb.cap +uni03060303 brevetildecmb +uni03060303.cap brevetildecmb.cap +uni03020306 circumflexbrevecmb +uni03020306.cap circumflexbrevecmb.cap +uni03040301 macronacutecmb +uni03040301.cap macronacutecmb.cap +uni030C0307 carondotaccentcmb +uni030C0307.cap carondotaccentcmb.cap +uni03120301 asperacutecmb +uni03120300 aspergravecmb +uni03120303 aspertildecmb +uni03130301 lenisacutecmb +uni03130300 lenisgravecmb +uni03130303 lenistildecmb +uni00A0 nbspace +uni2007 figurespace +space.frac space.frac +nbspace.frac nbspace.frac +uni2500 lighthorzbxd +uni2501 heavyhorzbxd +uni2502 lightvertbxd +uni2503 heavyvertbxd +uni2504 lighttrpldashhorzbxd +uni2505 heavytrpldashhorzbxd +uni2506 lighttrpldashvertbxd +uni2507 heavytrpldashvertbxd +uni2508 lightquaddashhorzbxd +uni2509 heavyquaddashhorzbxd +uni250A lightquaddashvertbxd +uni250B heavyquaddashvertbxd +uni250C lightdnrightbxd +uni250D dnlightrightheavybxd +uni250E dnheavyrightlightbxd +uni250F heavydnrightbxd +uni2510 lightdnleftbxd +uni2511 dnlightleftheavybxd +uni2512 dnheavyleftlightbxd +uni2513 heavydnleftbxd +uni2514 lightuprightbxd +uni2515 uplightrightheavybxd +uni2516 upheavyrightlightbxd +uni2517 heavyuprightbxd +uni2518 lightupleftbxd +uni2519 uplightleftheavybxd +uni251A upheavyleftlightbxd +uni251B heavyupleftbxd +uni251C lightvertrightbxd +uni251D vertlightrightheavybxd +uni251E upheavyrightdnlightbxd +uni251F dnheavyrightuplightbxd +uni2520 vertheavyrightlightbxd +uni2521 dnlightrightupheavybxd +uni2522 uplightrightdnheavybxd +uni2523 heavyvertrightbxd +uni2524 lightvertleftbxd +uni2525 vertlightleftheavybxd +uni2526 upheavyleftdnlightbxd +uni2527 dnheavyleftuplightbxd +uni2528 vertheavyleftlightbxd +uni2529 dnlightleftupheavybxd +uni252A uplightleftdnheavybxd +uni252B heavyvertleftbxd +uni252C lightdnhorzbxd +uni252D leftheavyrightdnlightbxd +uni252E rightheavyleftdnlightbxd +uni252F dnlighthorzheavybxd +uni2530 dnheavyhorzlightbxd +uni2531 rightlightleftdnheavybxd +uni2532 leftlightrightdnheavybxd +uni2533 heavydnhorzbxd +uni2534 lightuphorzbxd +uni2535 leftheavyrightuplightbxd +uni2536 rightheavyleftuplightbxd +uni2537 uplighthorzheavybxd +uni2538 upheavyhorzlightbxd +uni2539 rightlightleftupheavybxd +uni253A leftlightrightupheavybxd +uni253B heavyuphorzbxd +uni253C lightverthorzbxd +uni253D leftheavyrightvertlightbxd +uni253E rightheavyleftvertlightbxd +uni253F vertlighthorzheavybxd +uni2540 upheavydnhorzlightbxd +uni2541 dnheavyuphorzlightbxd +uni2542 vertheavyhorzlightbxd +uni2543 leftupheavyrightdnlightbxd +uni2544 rightupheavyleftdnlightbxd +uni2545 leftdnheavyrightuplightbxd +uni2546 rightdnheavyleftuplightbxd +uni2547 dnlightuphorzheavybxd +uni2548 uplightdnhorzheavybxd +uni2549 rightlightleftvertheavybxd +uni254A leftlightrightvertheavybxd +uni254B heavyverthorzbxd +uni254C lightdbldashhorzbxd +uni254D heavydbldashhorzbxd +uni254E lightdbldashvertbxd +uni254F heavydbldashvertbxd +uni2550 dblhorzbxd +uni2551 dblvertbxd +uni2552 dnsngrightdblbxd +uni2553 dndblrightsngbxd +uni2554 dbldnrightbxd +uni2555 dnsngleftdblbxd +uni2556 dndblleftsngbxd +uni2557 dbldnleftbxd +uni2558 upsngrightdblbxd +uni2559 updblrightsngbxd +uni255A dbluprightbxd +uni255B upsngleftdblbxd +uni255C updblleftsngbxd +uni255D dblupleftbxd +uni255E vertsngrightdblbxd +uni255F vertdblrightsngbxd +uni2560 dblvertrightbxd +uni2561 vertsngleftdblbxd +uni2562 vertdblleftsngbxd +uni2563 dblvertleftbxd +uni2564 dnsnghorzdblbxd +uni2565 dndblhorzsngbxd +uni2566 dbldnhorzbxd +uni2567 upsnghorzdblbxd +uni2568 updblhorzsngbxd +uni2569 dbluphorzbxd +uni256A vertsnghorzdblbxd +uni256B vertdblhorzsngbxd +uni256C dblverthorzbxd +uni256D lightarcdnrightbxd +uni256E lightarcdnleftbxd +uni256F lightarcupleftbxd +uni2570 lightarcuprightbxd +uni2571 lightdiaguprightdnleftbxd +uni2572 lightdiagupleftdnrightbxd +uni2573 lightdiagcrossbxd +uni2574 lightleftbxd +uni2575 lightupbxd +uni2576 lightrightbxd +uni2577 lightdnbxd +uni2578 heavyleftbxd +uni2579 heavyupbxd +uni257A heavyrightbxd +uni257B heavydnbxd +uni257C lightleftheavyrightbxd +uni257D lightupheavydnbxd +uni257E heavyleftlightrightbxd +uni257F heavyuplightdnbxd +uni2580 uphalfblock +uni2581 dneighthblock +uni2582 dnquarterblock +uni2583 dnthreeeighthsblock +uni2584 dnhalfblock +uni2585 dnfiveeighthsblock +uni2586 dnthreequartersblock +uni2587 dnseveneighthsblock +uni2588 fullblock +uni2589 leftseveneighthsblock +uni258A leftthreequartersblock +uni258B leftfiveeighthsblock +uni258C lefthalfblock +uni258D leftthreeeighthsblock +uni258E leftquarterblock +uni258F lefteighthblock +uni2590 righthalfblock +uni2591 lightshade +uni2592 mediumshade +uni2593 darkshade +uni2594 upeighthblock +uni2595 righteighthblock +uni2596 dnleftquadrant +uni2597 dnrightquadrant +uni2598 upleftquadrant +uni2599 upleftdnleftdnrightquadrant +uni259A upleftdnrightquadrant +uni259B upleftuprightdnleftquadrant +uni259C upleftuprightdnrightquadrant +uni259D uprightquadrant +uni259E uprightdnleftquadrant +uni259F uprightdnleftdnrightquadrant +uni202F NNBS +uniFEFF ZWNBS +uniFE0E text +uniFE0F emoji +u1F3B5 notemusical +u1F3B6 notesmusical +u1F3B5_uniFE0F notemusical.e +u1F3B6_uniFE0F notesmusical.e +uni2611_uniFE0F checkedbox.e +uni2713_uniFE0F check.e +uni2665_uniFE0F heart.e +uni2663_uniFE0F club.e +uni2666_uniFE0F diamond.e +uni2660_uniFE0F spade.e +uni263A_uniFE0F smileface.e +uni263B_uniFE0F invsmileface.e +uni2764_uniFE0F heartblackheavy.e +uni2615_uniFE0F coffee.e +u1F4A9_uniFE0F poop.e +u1F916_uniFE0F robot.e +u1F512_uniFE0F lock.e +f_i fi uniFB01 +f_l fl uniFB02 +uniE0A0 uniE0A0 +uniE0A1 uniE0A1 +uniE0A2 uniE0A2 +uniE0B0 uniE0B0 +uniE0B1 uniE0B1 +uniE0B2 uniE0B2 +uniE0B3 uniE0B3 diff --git a/tests/makeotf_data/input/bug680/features.fea b/tests/makeotf_data/input/bug680/features.fea new file mode 100644 index 000000000..5385481e5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/features.fea @@ -0,0 +1,71 @@ +table head { + FontRevision 2.030; +} head; + + +table hhea { + # NOTE: The OS/2.winAscent and OS/2.winDescent values are set by MakeOTF and vary depending on the font's bounding box + Ascender 984; # Must match OS/2.winAscent for cross-platform consistency + Descender -273; # Must match OS/2.winDescent for cross-platform consistency + LineGap 0; # Must be zero for cross-platform consistency +} hhea; + + +table BASE { + HorizAxis.BaseTagList ideo romn; + HorizAxis.BaseScriptList + latn romn -170 0, + grek romn -170 0, + cyrl romn -170 0, + DFLT romn -170 0; +} BASE; + + +table OS/2 { + Panose 2 11 5 9 3 4 3 2 2 4; + XHeight 486; + WeightClass 400; # Normal (Regular) + + UnicodeRange 0 # Basic Latin + 1 # Latin-1 Supplement + 2 # Latin Extended-A + 4 # IPA Extensions + 5 # Spacing Modifier Letters + 6 # Combining Diacritical Marks + 7 # Greek + 9 # Cyrillic + 29 # Latin Extended Additional + 32 # Superscripts and Subscripts + 33 # Currency Symbols + 43 # Box Drawing + 44 # Block Elements + 45 # Geometric Shapes (override to force makeotf to turn this bit on) + 57;# beyond the BMP (Basic Multilingual Plane) + + # NOTE: For cross-platform consistency, OS/2.TypoAscender and |OS/2.TypoDescender| must add up to the font's UPM value + TypoAscender 750; # Must be the same on all fonts for cross-platform consistency + TypoDescender -250; # Must be the same on all fonts for cross-platform consistency + TypoLineGap 0; # Must be zero for cross-platform consistency + winAscent 984; # Must be the same on all fonts for cross-weight consistency + winDescent 273; # Must be the same on all fonts for cross-weight consistency + + CapHeight 660; + WidthClass 5; # Medium (normal) + Vendor "ADBO"; + FSType 0; +} OS/2; + + +table name { + nameid 0 "\00a9 2010 - 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name \2018Source\2019."; + nameid 7 "Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries."; + nameid 8 "Adobe Systems Incorporated"; + nameid 9 "Paul D. Hunt, Teo Tuominen"; + nameid 11 "http://www.adobe.com/type"; + nameid 13 "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an \2018AS IS\2019 BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software."; + nameid 14 "http://scripts.sil.org/OFL"; +} name; + + +include (GSUB.fea); +include (GPOS.fea); diff --git a/tests/makeotf_data/input/bug680/font.ttf b/tests/makeotf_data/input/bug680/font.ttf new file mode 100644 index 000000000..5667dd212 Binary files /dev/null and b/tests/makeotf_data/input/bug680/font.ttf differ diff --git a/tests/makeotf_data/input/bug680/font.ufo/fontinfo.plist b/tests/makeotf_data/input/bug680/font.ufo/fontinfo.plist new file mode 100644 index 000000000..fa33aa43e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_.glif new file mode 100644 index 000000000..220883150 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_E_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_E_.glif new file mode 100644 index 000000000..5d42492aa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_E_.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_E_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_E_acute.glif new file mode 100644 index 000000000..26386883b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_E_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_E_macron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_E_macron.glif new file mode 100644 index 000000000..edeaa43dd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_E_macron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_acute.glif new file mode 100644 index 000000000..ad68fda8f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_acute.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_breve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_breve.glif new file mode 100644 index 000000000..db3f079a1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_breve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_breveacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_breveacute.glif new file mode 100644 index 000000000..21b0a82f2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_breveacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevecyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevecyr.glif new file mode 100644 index 000000000..70b85be3a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevecyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevedotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevedotbelow.glif new file mode 100644 index 000000000..0f67741ff --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevedotbelow.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevegrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevegrave.glif new file mode 100644 index 000000000..a2662ae1e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevegrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevehoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevehoi.glif new file mode 100644 index 000000000..01d47abcb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevehoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevetilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevetilde.glif new file mode 100644 index 000000000..ef2d87a14 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_brevetilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_caron.glif new file mode 100644 index 000000000..3885843c1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflex.glif new file mode 100644 index 000000000..4d4b7f63d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexacute.glif new file mode 100644 index 000000000..4ca3edf8b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexdotbelow.glif new file mode 100644 index 000000000..f2f7374c2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexdotbelow.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexgrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexgrave.glif new file mode 100644 index 000000000..20e6a4a39 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexgrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexhoi.glif new file mode 100644 index 000000000..445fe1b9e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflexhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflextilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflextilde.glif new file mode 100644 index 000000000..eb42061de --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_circumflextilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_cyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_cyr.glif new file mode 100644 index 000000000..323df0216 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_cyr.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_dieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_dieresis.glif new file mode 100644 index 000000000..f7f9f48e6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_dieresis.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_dotbelow.glif new file mode 100644 index 000000000..0a40c2175 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_grave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_grave.glif new file mode 100644 index 000000000..6df228650 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_grave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_hoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_hoi.glif new file mode 100644 index 000000000..b9fd137c2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_hoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ie.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ie.glif new file mode 100644 index 000000000..ca3bb1e17 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ie.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_lpha.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_lpha.glif new file mode 100644 index 000000000..8783b83b5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_lpha.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_lphatonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_lphatonos.glif new file mode 100644 index 000000000..38650ac58 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_lphatonos.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_macron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_macron.glif new file mode 100644 index 000000000..6b1a52247 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_macron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ogonek.glif new file mode 100644 index 000000000..649fc19ff --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ogonek.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ring.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ring.glif new file mode 100644 index 000000000..f11effbd9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ring.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ringacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ringacute.glif new file mode 100644 index 000000000..9ebb75421 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_ringacute.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_tilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_tilde.glif new file mode 100644 index 000000000..9b1dc8bfc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/A_tilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_.glif new file mode 100644 index 000000000..7b0784c6d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_e.glif new file mode 100644 index 000000000..6dcabdc05 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_e.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_eta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_eta.glif new file mode 100644 index 000000000..a42b5f5cc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_eta.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_linebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_linebelow.glif new file mode 100644 index 000000000..732ec45b9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_linebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_stroke.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_stroke.glif new file mode 100644 index 000000000..11cd95bdc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/B_stroke.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_.glif new file mode 100644 index 000000000..f98e934d9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_acute.glif new file mode 100644 index 000000000..b15818069 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_caron.glif new file mode 100644 index 000000000..864490a89 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_cedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_cedilla.glif new file mode 100644 index 000000000..4fa294366 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_cedilla.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_circumflex.glif new file mode 100644 index 000000000..0bcbe549c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_dotaccent.glif new file mode 100644 index 000000000..59d507cc9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_dotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_he.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_he.glif new file mode 100644 index 000000000..224ab93c3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_he.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_hedescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_hedescender.glif new file mode 100644 index 000000000..529279b5b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_hedescender.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_hi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_hi.glif new file mode 100644 index 000000000..720e5a602 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/C_hi.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_.glif new file mode 100644 index 000000000..5bdeb84ef --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_caron.glif new file mode 100644 index 000000000..8532e5c81 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_cedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_cedilla.glif new file mode 100644 index 000000000..fc08d761d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_cedilla.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_croat.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_croat.glif new file mode 100644 index 000000000..4e2ef4909 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_croat.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_dotbelow.glif new file mode 100644 index 000000000..d56db2a2a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_e.glif new file mode 100644 index 000000000..917c5f5dc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_e.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_elta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_elta.glif new file mode 100644 index 000000000..45511e60e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_elta.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_elta.math.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_elta.math.glif new file mode 100644 index 000000000..a8e8ab3ef --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_elta.math.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_hook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_hook.glif new file mode 100644 index 000000000..5b65d242f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_hook.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_je.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_je.glif new file mode 100644 index 000000000..9666ac683 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_je.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_linebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_linebelow.glif new file mode 100644 index 000000000..31278af78 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_linebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_ze.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_ze.glif new file mode 100644 index 000000000..a0555e3a2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_ze.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_zhe.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_zhe.glif new file mode 100644 index 000000000..90f07fae9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/D_zhe.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_.glif new file mode 100644 index 000000000..c00c593bf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_acute.glif new file mode 100644 index 000000000..17814daec --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_acute.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_breve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_breve.glif new file mode 100644 index 000000000..747adbcad --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_breve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_caron.glif new file mode 100644 index 000000000..b44094744 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflex.glif new file mode 100644 index 000000000..772457c56 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexacute.glif new file mode 100644 index 000000000..6e0f00c89 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexdotbelow.glif new file mode 100644 index 000000000..f762350c7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexdotbelow.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexgrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexgrave.glif new file mode 100644 index 000000000..e0a604e18 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexgrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexhoi.glif new file mode 100644 index 000000000..42572dbb8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflexhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflextilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflextilde.glif new file mode 100644 index 000000000..2b49e38bd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_circumflextilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_cyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_cyr.glif new file mode 100644 index 000000000..761eddafe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_cyr.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_dieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_dieresis.glif new file mode 100644 index 000000000..1f61e99bf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_dieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_dotaccent.glif new file mode 100644 index 000000000..f486d780a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_dotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_dotbelow.glif new file mode 100644 index 000000000..6eb904131 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_f.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_f.glif new file mode 100644 index 000000000..0abd8b1f0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_f.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_grave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_grave.glif new file mode 100644 index 000000000..0f440de8b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_grave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_hoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_hoi.glif new file mode 100644 index 000000000..8b6fda77f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_hoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_l.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_l.glif new file mode 100644 index 000000000..783186265 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_l.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_m.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_m.glif new file mode 100644 index 000000000..a839bfe86 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_m.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_macron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_macron.glif new file mode 100644 index 000000000..69098633e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_macron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_macronacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_macronacute.glif new file mode 100644 index 000000000..3d8c92da0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_macronacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_n.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_n.glif new file mode 100644 index 000000000..bf9d62827 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_n.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ndescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ndescender.glif new file mode 100644 index 000000000..ed9d4f1ec --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ndescender.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ng.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ng.a.glif new file mode 100644 index 000000000..5394623a7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ng.a.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ng.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ng.glif new file mode 100644 index 000000000..b0bd4878a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ng.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ogonek.glif new file mode 100644 index 000000000..d7ce71461 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ogonek.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_psilon.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_psilon.glif new file mode 100644 index 000000000..26840ecc5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_psilon.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_psilontonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_psilontonos.glif new file mode 100644 index 000000000..1c895e8f0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_psilontonos.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_r.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_r.glif new file mode 100644 index 000000000..8e0085b0e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_r.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_s.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_s.glif new file mode 100644 index 000000000..b3d66df0f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_s.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_sdescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_sdescender.glif new file mode 100644 index 000000000..a67813a3d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_sdescender.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ta.glif new file mode 100644 index 000000000..1d8df8914 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_ta.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_tatonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_tatonos.glif new file mode 100644 index 000000000..cde48b19e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_tatonos.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_th.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_th.glif new file mode 100644 index 000000000..3ebd960da --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_th.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_tilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_tilde.glif new file mode 100644 index 000000000..1b4ed6f50 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_tilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_uro.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_uro.glif new file mode 100644 index 000000000..337149630 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/E_uro.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/F_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/F_.glif new file mode 100644 index 000000000..3a0e06f2b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/F_.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/F_ita.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/F_ita.glif new file mode 100644 index 000000000..f8b31a3df --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/F_ita.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_.glif new file mode 100644 index 000000000..2d579065b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_acute.glif new file mode 100644 index 000000000..1a22abf17 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_amma.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_amma.glif new file mode 100644 index 000000000..8b46af18c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_amma.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_breve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_breve.glif new file mode 100644 index 000000000..26ae90cc7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_breve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_caron.glif new file mode 100644 index 000000000..721b32390 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_circumflex.glif new file mode 100644 index 000000000..ed83d4bb6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_commaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_commaaccent.glif new file mode 100644 index 000000000..5dd5a987c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_commaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_dotaccent.glif new file mode 100644 index 000000000..405eee937 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_dotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_ermandbls.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_ermandbls.glif new file mode 100644 index 000000000..97c522121 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_ermandbls.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_he.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_he.glif new file mode 100644 index 000000000..eef25a515 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_he.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_hestroke.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_hestroke.glif new file mode 100644 index 000000000..91c0f2821 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_hestroke.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_heup.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_heup.glif new file mode 100644 index 000000000..b554a1bb4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_heup.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_hook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_hook.glif new file mode 100644 index 000000000..77b0a9427 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_hook.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_je.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_je.glif new file mode 100644 index 000000000..439ca12ae --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_je.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_macron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_macron.glif new file mode 100644 index 000000000..fb2f5720b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_macron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_tilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_tilde.glif new file mode 100644 index 000000000..065cde4bc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/G_tilde.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_.glif new file mode 100644 index 000000000..96c758640 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_a.glif new file mode 100644 index 000000000..89a41e5b6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_adescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_adescender.glif new file mode 100644 index 000000000..51beed235 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_adescender.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_ard.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_ard.glif new file mode 100644 index 000000000..2ed95ea1a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_ard.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_bar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_bar.glif new file mode 100644 index 000000000..77afe2b18 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_bar.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_brevebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_brevebelow.glif new file mode 100644 index 000000000..d85d6d1b1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_brevebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_cedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_cedilla.glif new file mode 100644 index 000000000..55d8559fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_cedilla.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_circumflex.glif new file mode 100644 index 000000000..0e55795a4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_dieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_dieresis.glif new file mode 100644 index 000000000..d69aefbda --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_dieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_dotbelow.glif new file mode 100644 index 000000000..a52b8efcf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/H_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_.glif new file mode 100644 index 000000000..5d36a3f49 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_J_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_J_.glif new file mode 100644 index 000000000..8a0efa672 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_J_.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_J_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_J_acute.glif new file mode 100644 index 000000000..af6070f47 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_J_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_acute.glif new file mode 100644 index 000000000..85200993a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_breve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_breve.glif new file mode 100644 index 000000000..962511517 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_breve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_caron.glif new file mode 100644 index 000000000..bae3b3e1a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_circumflex.glif new file mode 100644 index 000000000..ad554cb4b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_cyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_cyr.glif new file mode 100644 index 000000000..154b23dbb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_cyr.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_dieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_dieresis.glif new file mode 100644 index 000000000..62628085e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_dieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_dotaccent.glif new file mode 100644 index 000000000..e7aaa2272 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_dotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_dotbelow.glif new file mode 100644 index 000000000..7a21774cd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_e.glif new file mode 100644 index 000000000..ce91fb257 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_e.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ebreve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ebreve.glif new file mode 100644 index 000000000..a4e4f6799 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ebreve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_egrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_egrave.glif new file mode 100644 index 000000000..554e1acca --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_egrave.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_eukran.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_eukran.glif new file mode 100644 index 000000000..15ee62442 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_eukran.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_grave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_grave.glif new file mode 100644 index 000000000..fd551b3df --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_grave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_gravecyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_gravecyr.glif new file mode 100644 index 000000000..a328b6c02 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_gravecyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_hoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_hoi.glif new file mode 100644 index 000000000..2c073781b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_hoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_macron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_macron.glif new file mode 100644 index 000000000..e08197046 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_macron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_macroncyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_macroncyr.glif new file mode 100644 index 000000000..a43b92379 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_macroncyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_o.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_o.glif new file mode 100644 index 000000000..b26ac70da --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_o.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ogonek.glif new file mode 100644 index 000000000..14c33a47a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ogonek.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ota.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ota.glif new file mode 100644 index 000000000..9fd076996 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ota.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_otadieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_otadieresis.glif new file mode 100644 index 000000000..32e0085c5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_otadieresis.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_otatonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_otatonos.glif new file mode 100644 index 000000000..0d3fe3e0c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_otatonos.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_short.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_short.glif new file mode 100644 index 000000000..529aa80a5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_short.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_tilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_tilde.glif new file mode 100644 index 000000000..834737d97 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_tilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ukran.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ukran.glif new file mode 100644 index 000000000..e9158e222 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_ukran.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_zhitsa.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_zhitsa.glif new file mode 100644 index 000000000..8d1e37c1e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/I_zhitsa.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/J_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/J_.glif new file mode 100644 index 000000000..e6d0886f6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/J_.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/J_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/J_circumflex.glif new file mode 100644 index 000000000..fc48ee8a1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/J_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/J_e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/J_e.glif new file mode 100644 index 000000000..019b26efc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/J_e.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_.glif new file mode 100644 index 000000000..ce3840b70 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_a.glif new file mode 100644 index 000000000..ad0b1f065 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_a.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_abashkir.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_abashkir.glif new file mode 100644 index 000000000..40a02ef0a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_abashkir.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_adescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_adescender.glif new file mode 100644 index 000000000..c2c8c153a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_adescender.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_appa.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_appa.glif new file mode 100644 index 000000000..2515c9d4f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_appa.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_commaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_commaaccent.glif new file mode 100644 index 000000000..906378824 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_commaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_dotbelow.glif new file mode 100644 index 000000000..77aee818e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_je.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_je.glif new file mode 100644 index 000000000..2cacef0ef --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_je.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_linebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_linebelow.glif new file mode 100644 index 000000000..7d6dabd53 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/K_linebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_.glif new file mode 100644 index 000000000..e70cbb98e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_acute.glif new file mode 100644 index 000000000..11e078dde --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_ambda.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_ambda.glif new file mode 100644 index 000000000..002777454 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_ambda.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_caron.glif new file mode 100644 index 000000000..c4e18aaef --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_cat.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_cat.glif new file mode 100644 index 000000000..4f03bdc48 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_cat.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_commaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_commaaccent.glif new file mode 100644 index 000000000..d6a3e3979 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_commaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_dot.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_dot.glif new file mode 100644 index 000000000..1ab48bd88 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_dot.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_dotbelow.glif new file mode 100644 index 000000000..391837e19 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_dotbelowmacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_dotbelowmacron.glif new file mode 100644 index 000000000..2c1ebf319 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_dotbelowmacron.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_je.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_je.glif new file mode 100644 index 000000000..bbf36d56a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_je.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_linebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_linebelow.glif new file mode 100644 index 000000000..b6b125e92 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_linebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_slash.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_slash.glif new file mode 100644 index 000000000..57684aa35 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/L_slash.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_.glif new file mode 100644 index 000000000..b025b595c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_acute.glif new file mode 100644 index 000000000..74d66229a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_dotaccent.glif new file mode 100644 index 000000000..eec8dd925 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_dotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_dotbelow.glif new file mode 100644 index 000000000..e181636bf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_u.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_u.glif new file mode 100644 index 000000000..87f8b873f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/M_u.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_.glif new file mode 100644 index 000000000..f4f4c2bb1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_N_B_S_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_N_B_S_.glif new file mode 100644 index 000000000..81adeee38 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_N_B_S_.glif @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_acute.glif new file mode 100644 index 000000000..21a6aee73 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_caron.glif new file mode 100644 index 000000000..ee736a328 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_commaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_commaaccent.glif new file mode 100644 index 000000000..a96b6d594 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_commaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_dotaccent.glif new file mode 100644 index 000000000..06d38b81c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_dotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_dotbelow.glif new file mode 100644 index 000000000..509723c5d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_grave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_grave.glif new file mode 100644 index 000000000..dd6cc1cda --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_grave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_je.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_je.glif new file mode 100644 index 000000000..480281a1a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_je.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_linebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_linebelow.glif new file mode 100644 index 000000000..2d386aed0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_linebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_tilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_tilde.glif new file mode 100644 index 000000000..e4fe46aea --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_tilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_u.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_u.glif new file mode 100644 index 000000000..7ee136179 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/N_u.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_.glif new file mode 100644 index 000000000..04dfdd281 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_E_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_E_.glif new file mode 100644 index 000000000..dda038840 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_E_.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_acute.glif new file mode 100644 index 000000000..04fc91b51 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_barcyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_barcyr.glif new file mode 100644 index 000000000..06d1e7dbf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_barcyr.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_breve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_breve.glif new file mode 100644 index 000000000..67ac0f006 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_breve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_caron.glif new file mode 100644 index 000000000..8156bd924 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflex.glif new file mode 100644 index 000000000..7e36754a8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexacute.glif new file mode 100644 index 000000000..a207b4c06 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexdotbelow.glif new file mode 100644 index 000000000..85e088059 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexdotbelow.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexgrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexgrave.glif new file mode 100644 index 000000000..0ca644108 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexgrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexhoi.glif new file mode 100644 index 000000000..fb6e868d9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflexhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflextilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflextilde.glif new file mode 100644 index 000000000..006d05d7b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_circumflextilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_cyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_cyr.glif new file mode 100644 index 000000000..a6eca77c2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_cyr.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_dieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_dieresis.glif new file mode 100644 index 000000000..5b570d2dd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_dieresis.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_dieresiscyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_dieresiscyr.glif new file mode 100644 index 000000000..2ba52fea1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_dieresiscyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_dotbelow.glif new file mode 100644 index 000000000..ce457bba1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_grave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_grave.glif new file mode 100644 index 000000000..5fc9a6be5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_grave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hoi.glif new file mode 100644 index 000000000..e2dbcbbb4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horn.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horn.glif new file mode 100644 index 000000000..9cbdbee47 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horn.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hornacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hornacute.glif new file mode 100644 index 000000000..68ca43026 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hornacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horndotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horndotbelow.glif new file mode 100644 index 000000000..8616b65ba --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horndotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horngrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horngrave.glif new file mode 100644 index 000000000..4ba5f66ee --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horngrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hornhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hornhoi.glif new file mode 100644 index 000000000..6a6a8a2ef --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hornhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horntilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horntilde.glif new file mode 100644 index 000000000..03ca378c1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_horntilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hungarumlaut.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hungarumlaut.glif new file mode 100644 index 000000000..8eed7072e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_hungarumlaut.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_macron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_macron.glif new file mode 100644 index 000000000..ae7a4ac01 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_macron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_macronacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_macronacute.glif new file mode 100644 index 000000000..302fb4867 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_macronacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_mega.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_mega.glif new file mode 100644 index 000000000..606654d57 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_mega.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_mega.math.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_mega.math.glif new file mode 100644 index 000000000..b813be91f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_mega.math.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_megatonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_megatonos.glif new file mode 100644 index 000000000..08dd0d7dc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_megatonos.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_micron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_micron.glif new file mode 100644 index 000000000..75852b2bc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_micron.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_microntonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_microntonos.glif new file mode 100644 index 000000000..1b6b38cf9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_microntonos.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_ogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_ogonek.glif new file mode 100644 index 000000000..797fa5dde --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_ogonek.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_slash.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_slash.glif new file mode 100644 index 000000000..0a49d16fe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_slash.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_slashacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_slashacute.glif new file mode 100644 index 000000000..7eb9708a8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_slashacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_tilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_tilde.glif new file mode 100644 index 000000000..c7ad8d975 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/O_tilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_.glif new file mode 100644 index 000000000..1b13eda38 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_alochka.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_alochka.glif new file mode 100644 index 000000000..0f424b979 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_alochka.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_e.glif new file mode 100644 index 000000000..c6d6685c9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_e.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_hi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_hi.glif new file mode 100644 index 000000000..abc315035 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_hi.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_i.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_i.glif new file mode 100644 index 000000000..9afeb5bed --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_i.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_si.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_si.glif new file mode 100644 index 000000000..d0fd9b0e6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/P_si.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Q_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Q_.glif new file mode 100644 index 000000000..f9cae83ed --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Q_.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_.glif new file mode 100644 index 000000000..1a889a9f0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_acute.glif new file mode 100644 index 000000000..169da598b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_caron.glif new file mode 100644 index 000000000..eee8da917 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_commaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_commaaccent.glif new file mode 100644 index 000000000..418caf6d5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_commaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_dotaccent.glif new file mode 100644 index 000000000..02bf14bb3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_dotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_dotbelow.glif new file mode 100644 index 000000000..2159cb039 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_dotbelowmacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_dotbelowmacron.glif new file mode 100644 index 000000000..4de008656 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_dotbelowmacron.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_ho.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_ho.glif new file mode 100644 index 000000000..4121d80d7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_ho.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_linebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_linebelow.glif new file mode 100644 index 000000000..b47d92d6f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/R_linebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_.glif new file mode 100644 index 000000000..16b6a3195 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_acute.glif new file mode 100644 index 000000000..9b0a174f0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_caron.glif new file mode 100644 index 000000000..58390311e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_carondot.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_carondot.glif new file mode 100644 index 000000000..ae67a012b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_carondot.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_cedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_cedilla.glif new file mode 100644 index 000000000..fbcd57b59 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_cedilla.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_chwa.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_chwa.glif new file mode 100644 index 000000000..26b43ab6d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_chwa.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_chwacyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_chwacyr.glif new file mode 100644 index 000000000..c959d6d89 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_chwacyr.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_circumflex.glif new file mode 100644 index 000000000..0439fa269 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_commaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_commaaccent.glif new file mode 100644 index 000000000..51a55aebb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_commaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_dotaccent.glif new file mode 100644 index 000000000..75d13d1d3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_dotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_dotbelow.glif new file mode 100644 index 000000000..f7faab050 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_ha.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_ha.glif new file mode 100644 index 000000000..7d3ea500e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_ha.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_hcha.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_hcha.glif new file mode 100644 index 000000000..c95c552fd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_hcha.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_hha.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_hha.glif new file mode 100644 index 000000000..4144d9641 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_hha.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_igma.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_igma.glif new file mode 100644 index 000000000..9b69f50fc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_igma.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_oft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_oft.glif new file mode 100644 index 000000000..6665eff76 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/S_oft.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_.glif new file mode 100644 index 000000000..d86313bcd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_au.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_au.glif new file mode 100644 index 000000000..331d7f2fe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_au.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_bar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_bar.glif new file mode 100644 index 000000000..e7b10dec8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_bar.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_caron.glif new file mode 100644 index 000000000..884cf04d7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_cedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_cedilla.glif new file mode 100644 index 000000000..242ee252c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_cedilla.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_commaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_commaaccent.glif new file mode 100644 index 000000000..79e7bfe45 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_commaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_dotbelow.glif new file mode 100644 index 000000000..02bd166de --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_e.glif new file mode 100644 index 000000000..fa940a2cb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_e.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_heta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_heta.glif new file mode 100644 index 000000000..e63513734 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_heta.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_horn.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_horn.glif new file mode 100644 index 000000000..fdc65dcf1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_horn.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_linebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_linebelow.glif new file mode 100644 index 000000000..0e8f89ca0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_linebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_se.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_se.glif new file mode 100644 index 000000000..91543e103 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_se.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_she.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_she.glif new file mode 100644 index 000000000..a2b70c4c4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/T_she.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_.glif new file mode 100644 index 000000000..d12b66500 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_acute.glif new file mode 100644 index 000000000..bc4b3af8a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_acutedblcyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_acutedblcyr.glif new file mode 100644 index 000000000..38e6452c0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_acutedblcyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_breve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_breve.glif new file mode 100644 index 000000000..6a6909ace --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_breve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_caron.glif new file mode 100644 index 000000000..a6bd74404 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_circumflex.glif new file mode 100644 index 000000000..2a270d46e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_cyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_cyr.glif new file mode 100644 index 000000000..060310e83 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_cyr.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresis.glif new file mode 100644 index 000000000..31b3ab684 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresisacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresisacute.glif new file mode 100644 index 000000000..0ee7a352e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresisacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresiscaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresiscaron.glif new file mode 100644 index 000000000..47a78ef68 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresiscaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresisgrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresisgrave.glif new file mode 100644 index 000000000..266f963c3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresisgrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresismacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresismacron.glif new file mode 100644 index 000000000..e87287141 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dieresismacron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dotbelow.glif new file mode 100644 index 000000000..107a9a28b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_grave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_grave.glif new file mode 100644 index 000000000..eaba3d612 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_grave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hoi.glif new file mode 100644 index 000000000..5c47d2ce6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horn.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horn.glif new file mode 100644 index 000000000..60240ea56 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horn.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hornacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hornacute.glif new file mode 100644 index 000000000..79237e158 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hornacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horndotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horndotbelow.glif new file mode 100644 index 000000000..cb53db0df --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horndotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horngrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horngrave.glif new file mode 100644 index 000000000..4be0bcaf0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horngrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hornhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hornhoi.glif new file mode 100644 index 000000000..b4c9f875e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hornhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horntilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horntilde.glif new file mode 100644 index 000000000..ef0678313 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_horntilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hungarumlaut.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hungarumlaut.glif new file mode 100644 index 000000000..96d001d82 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_hungarumlaut.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_macron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_macron.glif new file mode 100644 index 000000000..ea5ae4d2d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_macron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_macroncyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_macroncyr.glif new file mode 100644 index 000000000..0d3fa0992 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_macroncyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_ogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_ogonek.glif new file mode 100644 index 000000000..e0468bf75 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_ogonek.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_psilon.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_psilon.glif new file mode 100644 index 000000000..50bb62031 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_psilon.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_psilondieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_psilondieresis.glif new file mode 100644 index 000000000..792609a53 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_psilondieresis.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_psilontonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_psilontonos.glif new file mode 100644 index 000000000..e127457f1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_psilontonos.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_ring.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_ring.glif new file mode 100644 index 000000000..6560c5032 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_ring.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_short.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_short.glif new file mode 100644 index 000000000..3ba3e6a14 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_short.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_straight.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_straight.glif new file mode 100644 index 000000000..30a64ef45 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_straight.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_straightstroke.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_straightstroke.glif new file mode 100644 index 000000000..68f502693 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_straightstroke.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_tilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_tilde.glif new file mode 100644 index 000000000..38f18be2a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/U_tilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/V_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/V_.glif new file mode 100644 index 000000000..9d994f39e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/V_.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/V_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/V_dotbelow.glif new file mode 100644 index 000000000..e7f233977 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/V_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/V_e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/V_e.glif new file mode 100644 index 000000000..464fe3db2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/V_e.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_.glif new file mode 100644 index 000000000..e5a07171b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_acute.glif new file mode 100644 index 000000000..70be94845 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_circumflex.glif new file mode 100644 index 000000000..efc50a1e1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_dieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_dieresis.glif new file mode 100644 index 000000000..cc27c746a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_dieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_grave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_grave.glif new file mode 100644 index 000000000..918530e41 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/W_grave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/X_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/X_.glif new file mode 100644 index 000000000..123725925 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/X_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/X_i.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/X_i.glif new file mode 100644 index 000000000..589b63c0a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/X_i.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_.glif new file mode 100644 index 000000000..c123f7791 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_a.glif new file mode 100644 index 000000000..c87d1b904 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_a.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_acute.glif new file mode 100644 index 000000000..b2c65eadf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_at.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_at.glif new file mode 100644 index 000000000..0047d9370 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_at.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_circumflex.glif new file mode 100644 index 000000000..05fea4d36 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_dieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_dieresis.glif new file mode 100644 index 000000000..a3476d4f5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_dieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_dotaccent.glif new file mode 100644 index 000000000..afca6d7ad --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_dotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_dotbelow.glif new file mode 100644 index 000000000..75cd616be --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_eru.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_eru.glif new file mode 100644 index 000000000..c95a5ad81 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_eru.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_grave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_grave.glif new file mode 100644 index 000000000..3198471c5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_grave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_hoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_hoi.glif new file mode 100644 index 000000000..b1f2484ac --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_hoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_i.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_i.glif new file mode 100644 index 000000000..42fcd6e46 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_i.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_tilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_tilde.glif new file mode 100644 index 000000000..d6dcc17b0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_tilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_u.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_u.glif new file mode 100644 index 000000000..d1d31c5b4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Y_u.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_.glif new file mode 100644 index 000000000..eab00bd8d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_W_N_B_S_.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_W_N_B_S_.glif new file mode 100644 index 000000000..c0920d3eb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_W_N_B_S_.glif @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_acute.glif new file mode 100644 index 000000000..585b42828 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_acute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_caron.glif new file mode 100644 index 000000000..e8945fe9f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_caron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_circumflex.glif new file mode 100644 index 000000000..d40943b3e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_circumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_dotaccent.glif new file mode 100644 index 000000000..3488050b3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_dotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_dotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_dotbelow.glif new file mode 100644 index 000000000..8cfaeda2b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_dotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_e.glif new file mode 100644 index 000000000..41135b108 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_e.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_edescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_edescender.glif new file mode 100644 index 000000000..58c9d8982 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_edescender.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_eta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_eta.glif new file mode 100644 index 000000000..901200056 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_eta.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_he.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_he.glif new file mode 100644 index 000000000..63a662187 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_he.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_hebreve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_hebreve.glif new file mode 100644 index 000000000..e6ddf03fe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_hebreve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_hedescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_hedescender.glif new file mode 100644 index 000000000..b161122f2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_hedescender.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_linebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_linebelow.glif new file mode 100644 index 000000000..b32f4913b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/Z_linebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/_notdef.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/_notdef.glif new file mode 100644 index 000000000..61ef5dec2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/_notdef.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.a.glif new file mode 100644 index 000000000..264c72b85 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.a.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.glif new file mode 100644 index 000000000..d66241992 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.supa.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.supa.glif new file mode 100644 index 000000000..60391c3b3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.supa.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.sups.glif new file mode 100644 index 000000000..c1674ccb4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/a.sups.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aacute.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aacute.a.glif new file mode 100644 index 000000000..a6ece4e9d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aacute.a.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aacute.glif new file mode 100644 index 000000000..b5e31b678 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aacute.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreve.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreve.a.glif new file mode 100644 index 000000000..299274f5f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreve.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreve.glif new file mode 100644 index 000000000..b12174cf7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreveacute.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreveacute.a.glif new file mode 100644 index 000000000..2f265bee4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreveacute.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreveacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreveacute.glif new file mode 100644 index 000000000..fab75b7c3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abreveacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevecyr.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevecyr.a.glif new file mode 100644 index 000000000..dc736874b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevecyr.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevecyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevecyr.glif new file mode 100644 index 000000000..c6a3fd5bc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevecyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevedotbelow.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevedotbelow.a.glif new file mode 100644 index 000000000..564fdb4ea --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevedotbelow.a.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevedotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevedotbelow.glif new file mode 100644 index 000000000..b67933ddf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevedotbelow.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevegrave.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevegrave.a.glif new file mode 100644 index 000000000..d3b0ab69a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevegrave.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevegrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevegrave.glif new file mode 100644 index 000000000..646e7be85 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevegrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevehoi.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevehoi.a.glif new file mode 100644 index 000000000..fe3cb31c2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevehoi.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevehoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevehoi.glif new file mode 100644 index 000000000..edcfc919c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevehoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevetilde.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevetilde.a.glif new file mode 100644 index 000000000..01d63a447 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevetilde.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevetilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevetilde.glif new file mode 100644 index 000000000..2ca6ca238 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/abrevetilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acaron.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acaron.a.glif new file mode 100644 index 000000000..5347d66d6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acaron.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acaron.glif new file mode 100644 index 000000000..1e4570fbd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflex.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflex.a.glif new file mode 100644 index 000000000..2119328ab --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflex.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflex.glif new file mode 100644 index 000000000..f32cdd916 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexacute.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexacute.a.glif new file mode 100644 index 000000000..e0507a51f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexacute.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexacute.glif new file mode 100644 index 000000000..4e1cbdad0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexdotbelow.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexdotbelow.a.glif new file mode 100644 index 000000000..14e0e51ae --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexdotbelow.a.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexdotbelow.glif new file mode 100644 index 000000000..627c2c78c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexdotbelow.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexgrave.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexgrave.a.glif new file mode 100644 index 000000000..456f22d03 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexgrave.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexgrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexgrave.glif new file mode 100644 index 000000000..f14ba4878 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexgrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexhoi.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexhoi.a.glif new file mode 100644 index 000000000..3d43cfeda --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexhoi.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexhoi.glif new file mode 100644 index 000000000..28fcc19b8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflexhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflextilde.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflextilde.a.glif new file mode 100644 index 000000000..95ee14d18 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflextilde.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflextilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflextilde.glif new file mode 100644 index 000000000..6f8a46460 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acircumflextilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acute.glif new file mode 100644 index 000000000..d09a9dbaf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acute.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acutecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acutecmb.cap.glif new file mode 100644 index 000000000..44ea874be --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acutecmb.cap.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acutecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acutecmb.glif new file mode 100644 index 000000000..effe0082c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acutecmb.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acutemod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acutemod.glif new file mode 100644 index 000000000..2cb2411d3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acutemod.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acyr.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acyr.a.glif new file mode 100644 index 000000000..c3b18cbcc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acyr.a.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/acyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acyr.glif new file mode 100644 index 000000000..61bbe7d42 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/acyr.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/adieresis.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/adieresis.a.glif new file mode 100644 index 000000000..e86b19e05 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/adieresis.a.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/adieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/adieresis.glif new file mode 100644 index 000000000..0e960c8ce --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/adieresis.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/adotbelow.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/adotbelow.a.glif new file mode 100644 index 000000000..e29ebf911 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/adotbelow.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/adotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/adotbelow.glif new file mode 100644 index 000000000..974c1dbe0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/adotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ae.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ae.glif new file mode 100644 index 000000000..9f61d3c2c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ae.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aeacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aeacute.glif new file mode 100644 index 000000000..483cdf1b2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aeacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aemacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aemacron.glif new file mode 100644 index 000000000..998b3f85b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aemacron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/agrave.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/agrave.a.glif new file mode 100644 index 000000000..e861338e6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/agrave.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/agrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/agrave.glif new file mode 100644 index 000000000..1a5626d6e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/agrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ahoi.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ahoi.a.glif new file mode 100644 index 000000000..b43854175 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ahoi.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ahoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ahoi.glif new file mode 100644 index 000000000..e0f92d62c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ahoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aie.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aie.glif new file mode 100644 index 000000000..f4b983ac0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aie.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/alpha.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/alpha.glif new file mode 100644 index 000000000..aa8209125 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/alpha.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/alphalatin.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/alphalatin.glif new file mode 100644 index 000000000..e9d45eef9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/alphalatin.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/alphalatinturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/alphalatinturned.glif new file mode 100644 index 000000000..39554c3d7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/alphalatinturned.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/alphatonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/alphatonos.glif new file mode 100644 index 000000000..31e71214b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/alphatonos.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/amacron.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/amacron.a.glif new file mode 100644 index 000000000..c175b45ac --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/amacron.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/amacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/amacron.glif new file mode 100644 index 000000000..e5015ca9f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/amacron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ampersand.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ampersand.glif new file mode 100644 index 000000000..57cdf17b1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ampersand.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/anoteleia.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/anoteleia.cap.glif new file mode 100644 index 000000000..cf3474d27 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/anoteleia.cap.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/anoteleia.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/anoteleia.glif new file mode 100644 index 000000000..65fe3f199 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/anoteleia.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aogonek.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aogonek.a.glif new file mode 100644 index 000000000..7501d4c83 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aogonek.a.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aogonek.glif new file mode 100644 index 000000000..c6ebe5e25 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aogonek.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/apostrophemod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/apostrophemod.glif new file mode 100644 index 000000000..157405b69 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/apostrophemod.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/approxequal.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/approxequal.glif new file mode 100644 index 000000000..0bc4400cb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/approxequal.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aring.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aring.a.glif new file mode 100644 index 000000000..8445112e9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aring.a.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aring.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aring.glif new file mode 100644 index 000000000..e981277fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aring.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aringacute.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aringacute.a.glif new file mode 100644 index 000000000..93d2778f5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aringacute.a.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aringacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aringacute.glif new file mode 100644 index 000000000..448a27bc1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aringacute.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowboth.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowboth.glif new file mode 100644 index 000000000..70a7a61af --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowboth.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdbldown.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdbldown.glif new file mode 100644 index 000000000..8bf5c9d29 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdbldown.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdblleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdblleft.glif new file mode 100644 index 000000000..48548dd38 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdblleft.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdblright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdblright.glif new file mode 100644 index 000000000..799d3d953 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdblright.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdblup.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdblup.glif new file mode 100644 index 000000000..b06706e3b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdblup.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdown.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdown.glif new file mode 100644 index 000000000..5416e55dc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdown.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdownleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdownleft.glif new file mode 100644 index 000000000..7d97824dd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdownleft.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdownright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdownright.glif new file mode 100644 index 000000000..2d7803365 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowdownright.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowleft.glif new file mode 100644 index 000000000..f15560348 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowleft.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowright.glif new file mode 100644 index 000000000..121f1c239 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowright.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowup.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowup.glif new file mode 100644 index 000000000..5fcc53692 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowup.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupdn.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupdn.glif new file mode 100644 index 000000000..0c3673df5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupdn.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupdnbse.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupdnbse.glif new file mode 100644 index 000000000..eabcd73a1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupdnbse.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupleft.glif new file mode 100644 index 000000000..b0b203870 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupleft.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupright.glif new file mode 100644 index 000000000..68e902653 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/arrowupright.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/asciicircum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asciicircum.glif new file mode 100644 index 000000000..5bae14f66 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asciicircum.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/asciitilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asciitilde.glif new file mode 100644 index 000000000..506b2a3d9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asciitilde.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/asper.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asper.cap.glif new file mode 100644 index 000000000..b749c3f44 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asper.cap.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/asper.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asper.glif new file mode 100644 index 000000000..8ebafea61 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asper.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/asperacute.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asperacute.cap.glif new file mode 100644 index 000000000..3173d6142 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asperacute.cap.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/asperacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asperacute.glif new file mode 100644 index 000000000..8f10a4230 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asperacute.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/asperacutecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asperacutecmb.glif new file mode 100644 index 000000000..8a5efc9e5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asperacutecmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspercmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspercmb.glif new file mode 100644 index 000000000..dc783801e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspercmb.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspergrave.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspergrave.cap.glif new file mode 100644 index 000000000..8540d35ee --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspergrave.cap.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspergrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspergrave.glif new file mode 100644 index 000000000..144ca422d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspergrave.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspergravecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspergravecmb.glif new file mode 100644 index 000000000..726b0a274 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspergravecmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspertilde.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspertilde.cap.glif new file mode 100644 index 000000000..7685e3748 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspertilde.cap.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspertilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspertilde.glif new file mode 100644 index 000000000..e6a1435b4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspertilde.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspertildecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspertildecmb.glif new file mode 100644 index 000000000..bf15a4fb8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aspertildecmb.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/asterisk.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asterisk.a.glif new file mode 100644 index 000000000..864bd9c50 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asterisk.a.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/asterisk.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asterisk.glif new file mode 100644 index 000000000..cc07baa9a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/asterisk.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/at.case.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/at.case.glif new file mode 100644 index 000000000..f824b624e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/at.case.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/at.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/at.glif new file mode 100644 index 000000000..247932da5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/at.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/atilde.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/atilde.a.glif new file mode 100644 index 000000000..1eb172dde --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/atilde.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/atilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/atilde.glif new file mode 100644 index 000000000..5cbf37ee8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/atilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/aturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aturned.glif new file mode 100644 index 000000000..089db3efe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/aturned.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/b.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/b.glif new file mode 100644 index 000000000..3fc8d1b2f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/b.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/b.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/b.sups.glif new file mode 100644 index 000000000..cadab488d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/b.sups.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/backslash.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/backslash.glif new file mode 100644 index 000000000..348655c2f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/backslash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bar.glif new file mode 100644 index 000000000..526dff2c5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bar.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bardbl.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bardbl.glif new file mode 100644 index 000000000..fe4d57447 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bardbl.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/be.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/be.glif new file mode 100644 index 000000000..1755837fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/be.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/be.srb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/be.srb.glif new file mode 100644 index 000000000..34b5d357c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/be.srb.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/beta.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/beta.a.glif new file mode 100644 index 000000000..9002c7a44 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/beta.a.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/beta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/beta.glif new file mode 100644 index 000000000..0a1c3f3d7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/beta.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bhook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bhook.glif new file mode 100644 index 000000000..a143368bd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bhook.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/blinebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/blinebelow.glif new file mode 100644 index 000000000..b548afb9b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/blinebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/braceleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/braceleft.glif new file mode 100644 index 000000000..a51911f07 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/braceleft.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/braceright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/braceright.glif new file mode 100644 index 000000000..081a661c0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/braceright.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketleft.glif new file mode 100644 index 000000000..73ce5cabc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketleft.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketleftwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketleftwhite.glif new file mode 100644 index 000000000..4d00689f2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketleftwhite.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketright.glif new file mode 100644 index 000000000..3c98a532e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketright.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketrightwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketrightwhite.glif new file mode 100644 index 000000000..8796002fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bracketrightwhite.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalfbotleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalfbotleft.glif new file mode 100644 index 000000000..589a5de6a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalfbotleft.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalfbotright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalfbotright.glif new file mode 100644 index 000000000..0f47c61dd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalfbotright.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalftopleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalftopleft.glif new file mode 100644 index 000000000..ea58765fe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalftopleft.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalftopright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalftopright.glif new file mode 100644 index 000000000..6d8757018 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brackhalftopright.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/breve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breve.glif new file mode 100644 index 000000000..5f4482f3e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breve.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveacutecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveacutecmb.cap.glif new file mode 100644 index 000000000..c9b829598 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveacutecmb.cap.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveacutecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveacutecmb.glif new file mode 100644 index 000000000..663b4d750 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveacutecmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevebelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevebelowcmb.glif new file mode 100644 index 000000000..9b5135d4b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevebelowcmb.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.cap.glif new file mode 100644 index 000000000..a00ee76fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.cap.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.cyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.cyr.glif new file mode 100644 index 000000000..ba47a564f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.cyr.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.cyrcap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.cyrcap.glif new file mode 100644 index 000000000..4e7328b48 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.cyrcap.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.glif new file mode 100644 index 000000000..b75d421f2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevecmb.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevegravecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevegravecmb.cap.glif new file mode 100644 index 000000000..c8680da04 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevegravecmb.cap.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevegravecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevegravecmb.glif new file mode 100644 index 000000000..8d3f91bd9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevegravecmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevehoicmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevehoicmb.cap.glif new file mode 100644 index 000000000..e3c017a7b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevehoicmb.cap.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevehoicmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevehoicmb.glif new file mode 100644 index 000000000..f46c6fa8a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevehoicmb.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinvertedbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinvertedbelowcmb.glif new file mode 100644 index 000000000..7768b53be --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinvertedbelowcmb.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinvertedcmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinvertedcmb.cap.glif new file mode 100644 index 000000000..6e3c06fe7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinvertedcmb.cap.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinvertedcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinvertedcmb.glif new file mode 100644 index 000000000..b60cb2b43 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinvertedcmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinverteddoublecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinverteddoublecmb.glif new file mode 100644 index 000000000..0482e3619 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/breveinverteddoublecmb.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevetildecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevetildecmb.cap.glif new file mode 100644 index 000000000..940b64e28 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevetildecmb.cap.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevetildecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevetildecmb.glif new file mode 100644 index 000000000..04fc410bb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brevetildecmb.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bridgebelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bridgebelowcmb.glif new file mode 100644 index 000000000..68fb739fd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bridgebelowcmb.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bridgeinvertedbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bridgeinvertedbelowcmb.glif new file mode 100644 index 000000000..b8df71b27 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bridgeinvertedbelowcmb.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/brokenbar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brokenbar.glif new file mode 100644 index 000000000..5d56fa3ed --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/brokenbar.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bsmall.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bsmall.glif new file mode 100644 index 000000000..0a29114ee --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bsmall.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bstroke.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bstroke.glif new file mode 100644 index 000000000..d9871dd4b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bstroke.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bullet.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bullet.glif new file mode 100644 index 000000000..9e7aa4c61 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bullet.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletoperator.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletoperator.glif new file mode 100644 index 000000000..3e8747dd1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletoperator.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletsquare.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletsquare.glif new file mode 100644 index 000000000..39eeaa9f0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletsquare.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletsquarewhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletsquarewhite.glif new file mode 100644 index 000000000..58fd0c70a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletsquarewhite.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletwhite.glif new file mode 100644 index 000000000..164505c12 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/bulletwhite.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/c.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/c.glif new file mode 100644 index 000000000..bf6e20b0a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/c.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/c.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/c.sups.glif new file mode 100644 index 000000000..a728ff0a8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/c.sups.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/cacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cacute.glif new file mode 100644 index 000000000..ff93aefe6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/candrabinducmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/candrabinducmb.cap.glif new file mode 100644 index 000000000..3a6f16771 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/candrabinducmb.cap.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/candrabinducmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/candrabinducmb.glif new file mode 100644 index 000000000..98acf9c0d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/candrabinducmb.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/careof.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/careof.glif new file mode 100644 index 000000000..b462402dd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/careof.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/caron.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/caron.a.glif new file mode 100644 index 000000000..d99412609 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/caron.a.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/caron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/caron.glif new file mode 100644 index 000000000..25effcb72 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/caron.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/caronbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/caronbelowcmb.glif new file mode 100644 index 000000000..656b6a511 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/caronbelowcmb.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/caroncmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/caroncmb.cap.glif new file mode 100644 index 000000000..c5bc9fcf6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/caroncmb.cap.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/caroncmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/caroncmb.glif new file mode 100644 index 000000000..d7c0587d3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/caroncmb.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/carondotaccentcmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/carondotaccentcmb.cap.glif new file mode 100644 index 000000000..a6e001e5d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/carondotaccentcmb.cap.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/carondotaccentcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/carondotaccentcmb.glif new file mode 100644 index 000000000..d7d640780 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/carondotaccentcmb.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccaron.glif new file mode 100644 index 000000000..8b28ccbb7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccedilla.glif new file mode 100644 index 000000000..460e693ee --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccedilla.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccircumflex.glif new file mode 100644 index 000000000..769f38bdb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccurl.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccurl.glif new file mode 100644 index 000000000..204a449b0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ccurl.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/cdotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cdotaccent.glif new file mode 100644 index 000000000..d8155366f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cdotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedi.glif new file mode 100644 index 000000000..f5352e130 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedi.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedilla.glif new file mode 100644 index 000000000..630f9e3b4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedilla.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedillacmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedillacmb.cap.glif new file mode 100644 index 000000000..46406d784 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedillacmb.cap.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedillacmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedillacmb.glif new file mode 100644 index 000000000..a156c16db --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cedillacmb.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ceilingleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ceilingleft.glif new file mode 100644 index 000000000..b0aa8e01d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ceilingleft.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ceilingright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ceilingright.glif new file mode 100644 index 000000000..3a0692f07 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ceilingright.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/cent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cent.glif new file mode 100644 index 000000000..632c4ae40 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/cent.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/che.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/che.glif new file mode 100644 index 000000000..df186302c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/che.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/check.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/check.e.glif new file mode 100644 index 000000000..1869b6397 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/check.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/check.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/check.glif new file mode 100644 index 000000000..2c4f8febf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/check.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/checkbox.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/checkbox.glif new file mode 100644 index 000000000..47a60fbfb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/checkbox.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/checkedbox.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/checkedbox.e.glif new file mode 100644 index 000000000..b2bba6167 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/checkedbox.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/checkedbox.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/checkedbox.glif new file mode 100644 index 000000000..53d5a4cd1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/checkedbox.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/chedescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/chedescender.glif new file mode 100644 index 000000000..2506d857b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/chedescender.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/chi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/chi.glif new file mode 100644 index 000000000..2f0958c3d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/chi.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circleblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circleblack.glif new file mode 100644 index 000000000..1f3bd65cb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circleblack.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circledotted.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circledotted.glif new file mode 100644 index 000000000..f8c8bb4b2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circledotted.glif @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circlewhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circlewhite.glif new file mode 100644 index 000000000..440e771aa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circlewhite.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflex.glif new file mode 100644 index 000000000..469d63fad --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflex.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexacutecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexacutecmb.cap.glif new file mode 100644 index 000000000..62a2653f6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexacutecmb.cap.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexacutecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexacutecmb.glif new file mode 100644 index 000000000..a9f353d71 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexacutecmb.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexbrevecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexbrevecmb.cap.glif new file mode 100644 index 000000000..31269d3c3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexbrevecmb.cap.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexbrevecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexbrevecmb.glif new file mode 100644 index 000000000..bc8010fef --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexbrevecmb.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexcmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexcmb.cap.glif new file mode 100644 index 000000000..65dda7467 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexcmb.cap.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexcmb.glif new file mode 100644 index 000000000..2a6e54914 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexcmb.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexgravecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexgravecmb.cap.glif new file mode 100644 index 000000000..b979fc50e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexgravecmb.cap.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexgravecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexgravecmb.glif new file mode 100644 index 000000000..6c2d40dcb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexgravecmb.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexhoicmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexhoicmb.cap.glif new file mode 100644 index 000000000..20f84157a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexhoicmb.cap.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexhoicmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexhoicmb.glif new file mode 100644 index 000000000..67a7b6339 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflexhoicmb.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflextildecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflextildecmb.cap.glif new file mode 100644 index 000000000..962c4a285 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflextildecmb.cap.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflextildecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflextildecmb.glif new file mode 100644 index 000000000..e8fc63b8f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/circumflextildecmb.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/clickalveolar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/clickalveolar.glif new file mode 100644 index 000000000..98e9de10c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/clickalveolar.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/clickbilabial.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/clickbilabial.glif new file mode 100644 index 000000000..154fcf7c4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/clickbilabial.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/club.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/club.e.glif new file mode 100644 index 000000000..d0423ed6e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/club.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/club.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/club.glif new file mode 100644 index 000000000..7af872883 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/club.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/coffee.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/coffee.e.glif new file mode 100644 index 000000000..dc257e8f8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/coffee.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/coffee.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/coffee.glif new file mode 100644 index 000000000..8a66268de --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/coffee.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/colon.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/colon.glif new file mode 100644 index 000000000..2385f4a74 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/colon.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/colon.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/colon.sups.glif new file mode 100644 index 000000000..5eec299b7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/colon.sups.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/colonmonetary.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/colonmonetary.glif new file mode 100644 index 000000000..0f2238528 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/colonmonetary.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/colontriangularhalfmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/colontriangularhalfmod.glif new file mode 100644 index 000000000..8fe6ddef8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/colontriangularhalfmod.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/colontriangularmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/colontriangularmod.glif new file mode 100644 index 000000000..5df0ec90b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/colontriangularmod.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.dnom.glif new file mode 100644 index 000000000..7a834f4b6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.dnom.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.glif new file mode 100644 index 000000000..299ebc104 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.numr.glif new file mode 100644 index 000000000..9b55a905d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.subs.glif new file mode 100644 index 000000000..e3606fffa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.subs.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.sups.glif new file mode 100644 index 000000000..5dd2175c6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/comma.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/commaabovecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/commaabovecmb.glif new file mode 100644 index 000000000..2d39c6ece --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/commaabovecmb.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/commabelowcmb.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/commabelowcmb.a.glif new file mode 100644 index 000000000..33b970ad6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/commabelowcmb.a.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/commabelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/commabelowcmb.glif new file mode 100644 index 000000000..24300d08b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/commabelowcmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/commaturnedabovecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/commaturnedabovecmb.glif new file mode 100644 index 000000000..ccdb9770a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/commaturnedabovecmb.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/commaturnedmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/commaturnedmod.glif new file mode 100644 index 000000000..8b60db5a5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/commaturnedmod.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/contents.plist b/tests/makeotf_data/input/bug680/font.ufo/glyphs/contents.plist new file mode 100644 index 000000000..0f39418c4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/contents.plist @@ -0,0 +1,3176 @@ + + + + + .notdef + _notdef.glif + A + A_.glif + AE + A_E_.glif + AEacute + A_E_acute.glif + AEmacron + A_E_macron.glif + Aacute + A_acute.glif + Abreve + A_breve.glif + Abreveacute + A_breveacute.glif + Abrevecyr + A_brevecyr.glif + Abrevedotbelow + A_brevedotbelow.glif + Abrevegrave + A_brevegrave.glif + Abrevehoi + A_brevehoi.glif + Abrevetilde + A_brevetilde.glif + Acaron + A_caron.glif + Acircumflex + A_circumflex.glif + Acircumflexacute + A_circumflexacute.glif + Acircumflexdotbelow + A_circumflexdotbelow.glif + Acircumflexgrave + A_circumflexgrave.glif + Acircumflexhoi + A_circumflexhoi.glif + Acircumflextilde + A_circumflextilde.glif + Acyr + A_cyr.glif + Adieresis + A_dieresis.glif + Adotbelow + A_dotbelow.glif + Agrave + A_grave.glif + Ahoi + A_hoi.glif + Aie + A_ie.glif + Alpha + A_lpha.glif + Alphatonos + A_lphatonos.glif + Amacron + A_macron.glif + Aogonek + A_ogonek.glif + Aring + A_ring.glif + Aringacute + A_ringacute.glif + Atilde + A_tilde.glif + B + B_.glif + Be + B_e.glif + Beta + B_eta.glif + Blinebelow + B_linebelow.glif + Bstroke + B_stroke.glif + C + C_.glif + Cacute + C_acute.glif + Ccaron + C_caron.glif + Ccedilla + C_cedilla.glif + Ccircumflex + C_circumflex.glif + Cdotaccent + C_dotaccent.glif + Che + C_he.glif + Chedescender + C_hedescender.glif + Chi + C_hi.glif + D + D_.glif + Dcaron + D_caron.glif + Dcedilla + D_cedilla.glif + Dcroat + D_croat.glif + Ddotbelow + D_dotbelow.glif + De + D_e.glif + Delta + D_elta.glif + Delta.math + D_elta.math.glif + Dhook + D_hook.glif + Dje + D_je.glif + Dlinebelow + D_linebelow.glif + Dze + D_ze.glif + Dzhe + D_zhe.glif + E + E_.glif + Eacute + E_acute.glif + Ebreve + E_breve.glif + Ecaron + E_caron.glif + Ecircumflex + E_circumflex.glif + Ecircumflexacute + E_circumflexacute.glif + Ecircumflexdotbelow + E_circumflexdotbelow.glif + Ecircumflexgrave + E_circumflexgrave.glif + Ecircumflexhoi + E_circumflexhoi.glif + Ecircumflextilde + E_circumflextilde.glif + Ecyr + E_cyr.glif + Edieresis + E_dieresis.glif + Edotaccent + E_dotaccent.glif + Edotbelow + E_dotbelow.glif + Ef + E_f.glif + Egrave + E_grave.glif + Ehoi + E_hoi.glif + El + E_l.glif + Em + E_m.glif + Emacron + E_macron.glif + Emacronacute + E_macronacute.glif + En + E_n.glif + Endescender + E_ndescender.glif + Eng + E_ng.glif + Eng.a + E_ng.a.glif + Eogonek + E_ogonek.glif + Epsilon + E_psilon.glif + Epsilontonos + E_psilontonos.glif + Er + E_r.glif + Es + E_s.glif + Esdescender + E_sdescender.glif + Eta + E_ta.glif + Etatonos + E_tatonos.glif + Eth + E_th.glif + Etilde + E_tilde.glif + Euro + E_uro.glif + F + F_.glif + Fita + F_ita.glif + G + G_.glif + Gacute + G_acute.glif + Gamma + G_amma.glif + Gbreve + G_breve.glif + Gcaron + G_caron.glif + Gcircumflex + G_circumflex.glif + Gcommaaccent + G_commaaccent.glif + Gdotaccent + G_dotaccent.glif + Germandbls + G_ermandbls.glif + Ghe + G_he.glif + Ghestroke + G_hestroke.glif + Gheup + G_heup.glif + Ghook + G_hook.glif + Gje + G_je.glif + Gmacron + G_macron.glif + Gtilde + G_tilde.glif + H + H_.glif + Ha + H_a.glif + Hadescender + H_adescender.glif + Hard + H_ard.glif + Hbar + H_bar.glif + Hbrevebelow + H_brevebelow.glif + Hcedilla + H_cedilla.glif + Hcircumflex + H_circumflex.glif + Hdieresis + H_dieresis.glif + Hdotbelow + H_dotbelow.glif + I + I_.glif + IJ + I_J_.glif + IJacute + I_J_acute.glif + Iacute + I_acute.glif + Ibreve + I_breve.glif + Icaron + I_caron.glif + Icircumflex + I_circumflex.glif + Icyr + I_cyr.glif + Idieresis + I_dieresis.glif + Idotaccent + I_dotaccent.glif + Idotbelow + I_dotbelow.glif + Ie + I_e.glif + Iebreve + I_ebreve.glif + Iegrave + I_egrave.glif + Ieukran + I_eukran.glif + Igrave + I_grave.glif + Igravecyr + I_gravecyr.glif + Ihoi + I_hoi.glif + Imacron + I_macron.glif + Imacroncyr + I_macroncyr.glif + Io + I_o.glif + Iogonek + I_ogonek.glif + Iota + I_ota.glif + Iotadieresis + I_otadieresis.glif + Iotatonos + I_otatonos.glif + Ishort + I_short.glif + Itilde + I_tilde.glif + Iukran + I_ukran.glif + Izhitsa + I_zhitsa.glif + J + J_.glif + Jcircumflex + J_circumflex.glif + Je + J_e.glif + K + K_.glif + Ka + K_a.glif + Kabashkir + K_abashkir.glif + Kadescender + K_adescender.glif + Kappa + K_appa.glif + Kcommaaccent + K_commaaccent.glif + Kdotbelow + K_dotbelow.glif + Kje + K_je.glif + Klinebelow + K_linebelow.glif + L + L_.glif + Lacute + L_acute.glif + Lambda + L_ambda.glif + Lcaron + L_caron.glif + Lcat + L_cat.glif + Lcommaaccent + L_commaaccent.glif + Ldot + L_dot.glif + Ldotbelow + L_dotbelow.glif + Ldotbelowmacron + L_dotbelowmacron.glif + Lje + L_je.glif + Llinebelow + L_linebelow.glif + Lslash + L_slash.glif + M + M_.glif + Macute + M_acute.glif + Mdotaccent + M_dotaccent.glif + Mdotbelow + M_dotbelow.glif + Mu + M_u.glif + N + N_.glif + NNBS + N_N_B_S_.glif + Nacute + N_acute.glif + Ncaron + N_caron.glif + Ncommaaccent + N_commaaccent.glif + Ndotaccent + N_dotaccent.glif + Ndotbelow + N_dotbelow.glif + Ngrave + N_grave.glif + Nje + N_je.glif + Nlinebelow + N_linebelow.glif + Ntilde + N_tilde.glif + Nu + N_u.glif + O + O_.glif + OE + O_E_.glif + Oacute + O_acute.glif + Obarcyr + O_barcyr.glif + Obreve + O_breve.glif + Ocaron + O_caron.glif + Ocircumflex + O_circumflex.glif + Ocircumflexacute + O_circumflexacute.glif + Ocircumflexdotbelow + O_circumflexdotbelow.glif + Ocircumflexgrave + O_circumflexgrave.glif + Ocircumflexhoi + O_circumflexhoi.glif + Ocircumflextilde + O_circumflextilde.glif + Ocyr + O_cyr.glif + Odieresis + O_dieresis.glif + Odieresiscyr + O_dieresiscyr.glif + Odotbelow + O_dotbelow.glif + Ograve + O_grave.glif + Ohoi + O_hoi.glif + Ohorn + O_horn.glif + Ohornacute + O_hornacute.glif + Ohorndotbelow + O_horndotbelow.glif + Ohorngrave + O_horngrave.glif + Ohornhoi + O_hornhoi.glif + Ohorntilde + O_horntilde.glif + Ohungarumlaut + O_hungarumlaut.glif + Omacron + O_macron.glif + Omacronacute + O_macronacute.glif + Omega + O_mega.glif + Omega.math + O_mega.math.glif + Omegatonos + O_megatonos.glif + Omicron + O_micron.glif + Omicrontonos + O_microntonos.glif + Oogonek + O_ogonek.glif + Oslash + O_slash.glif + Oslashacute + O_slashacute.glif + Otilde + O_tilde.glif + P + P_.glif + Palochka + P_alochka.glif + Pe + P_e.glif + Phi + P_hi.glif + Pi + P_i.glif + Psi + P_si.glif + Q + Q_.glif + R + R_.glif + Racute + R_acute.glif + Rcaron + R_caron.glif + Rcommaaccent + R_commaaccent.glif + Rdotaccent + R_dotaccent.glif + Rdotbelow + R_dotbelow.glif + Rdotbelowmacron + R_dotbelowmacron.glif + Rho + R_ho.glif + Rlinebelow + R_linebelow.glif + S + S_.glif + Sacute + S_acute.glif + Scaron + S_caron.glif + Scarondot + S_carondot.glif + Scedilla + S_cedilla.glif + Schwa + S_chwa.glif + Schwacyr + S_chwacyr.glif + Scircumflex + S_circumflex.glif + Scommaaccent + S_commaaccent.glif + Sdotaccent + S_dotaccent.glif + Sdotbelow + S_dotbelow.glif + Sha + S_ha.glif + Shcha + S_hcha.glif + Shha + S_hha.glif + Sigma + S_igma.glif + Soft + S_oft.glif + T + T_.glif + Tau + T_au.glif + Tbar + T_bar.glif + Tcaron + T_caron.glif + Tcedilla + T_cedilla.glif + Tcommaaccent + T_commaaccent.glif + Tdotbelow + T_dotbelow.glif + Te + T_e.glif + Theta + T_heta.glif + Thorn + T_horn.glif + Tlinebelow + T_linebelow.glif + Tse + T_se.glif + Tshe + T_she.glif + U + U_.glif + Uacute + U_acute.glif + Uacutedblcyr + U_acutedblcyr.glif + Ubreve + U_breve.glif + Ucaron + U_caron.glif + Ucircumflex + U_circumflex.glif + Ucyr + U_cyr.glif + Udieresis + U_dieresis.glif + Udieresisacute + U_dieresisacute.glif + Udieresiscaron + U_dieresiscaron.glif + Udieresisgrave + U_dieresisgrave.glif + Udieresismacron + U_dieresismacron.glif + Udotbelow + U_dotbelow.glif + Ugrave + U_grave.glif + Uhoi + U_hoi.glif + Uhorn + U_horn.glif + Uhornacute + U_hornacute.glif + Uhorndotbelow + U_horndotbelow.glif + Uhorngrave + U_horngrave.glif + Uhornhoi + U_hornhoi.glif + Uhorntilde + U_horntilde.glif + Uhungarumlaut + U_hungarumlaut.glif + Umacron + U_macron.glif + Umacroncyr + U_macroncyr.glif + Uogonek + U_ogonek.glif + Upsilon + U_psilon.glif + Upsilondieresis + U_psilondieresis.glif + Upsilontonos + U_psilontonos.glif + Uring + U_ring.glif + Ushort + U_short.glif + Ustraight + U_straight.glif + Ustraightstroke + U_straightstroke.glif + Utilde + U_tilde.glif + V + V_.glif + Vdotbelow + V_dotbelow.glif + Ve + V_e.glif + W + W_.glif + Wacute + W_acute.glif + Wcircumflex + W_circumflex.glif + Wdieresis + W_dieresis.glif + Wgrave + W_grave.glif + X + X_.glif + Xi + X_i.glif + Y + Y_.glif + Ya + Y_a.glif + Yacute + Y_acute.glif + Yat + Y_at.glif + Ycircumflex + Y_circumflex.glif + Ydieresis + Y_dieresis.glif + Ydotaccent + Y_dotaccent.glif + Ydotbelow + Y_dotbelow.glif + Yeru + Y_eru.glif + Ygrave + Y_grave.glif + Yhoi + Y_hoi.glif + Yi + Y_i.glif + Ytilde + Y_tilde.glif + Yu + Y_u.glif + Z + Z_.glif + ZWNBS + Z_W_N_B_S_.glif + Zacute + Z_acute.glif + Zcaron + Z_caron.glif + Zcircumflex + Z_circumflex.glif + Zdotaccent + Z_dotaccent.glif + Zdotbelow + Z_dotbelow.glif + Ze + Z_e.glif + Zedescender + Z_edescender.glif + Zeta + Z_eta.glif + Zhe + Z_he.glif + Zhebreve + Z_hebreve.glif + Zhedescender + Z_hedescender.glif + Zlinebelow + Z_linebelow.glif + a + a.glif + a.a + a.a.glif + a.supa + a.supa.glif + a.sups + a.sups.glif + aacute + aacute.glif + aacute.a + aacute.a.glif + abreve + abreve.glif + abreve.a + abreve.a.glif + abreveacute + abreveacute.glif + abreveacute.a + abreveacute.a.glif + abrevecyr + abrevecyr.glif + abrevecyr.a + abrevecyr.a.glif + abrevedotbelow + abrevedotbelow.glif + abrevedotbelow.a + abrevedotbelow.a.glif + abrevegrave + abrevegrave.glif + abrevegrave.a + abrevegrave.a.glif + abrevehoi + abrevehoi.glif + abrevehoi.a + abrevehoi.a.glif + abrevetilde + abrevetilde.glif + abrevetilde.a + abrevetilde.a.glif + acaron + acaron.glif + acaron.a + acaron.a.glif + acircumflex + acircumflex.glif + acircumflex.a + acircumflex.a.glif + acircumflexacute + acircumflexacute.glif + acircumflexacute.a + acircumflexacute.a.glif + acircumflexdotbelow + acircumflexdotbelow.glif + acircumflexdotbelow.a + acircumflexdotbelow.a.glif + acircumflexgrave + acircumflexgrave.glif + acircumflexgrave.a + acircumflexgrave.a.glif + acircumflexhoi + acircumflexhoi.glif + acircumflexhoi.a + acircumflexhoi.a.glif + acircumflextilde + acircumflextilde.glif + acircumflextilde.a + acircumflextilde.a.glif + acute + acute.glif + acutecmb + acutecmb.glif + acutecmb.cap + acutecmb.cap.glif + acutemod + acutemod.glif + acyr + acyr.glif + acyr.a + acyr.a.glif + adieresis + adieresis.glif + adieresis.a + adieresis.a.glif + adotbelow + adotbelow.glif + adotbelow.a + adotbelow.a.glif + ae + ae.glif + aeacute + aeacute.glif + aemacron + aemacron.glif + agrave + agrave.glif + agrave.a + agrave.a.glif + ahoi + ahoi.glif + ahoi.a + ahoi.a.glif + aie + aie.glif + alpha + alpha.glif + alphalatin + alphalatin.glif + alphalatinturned + alphalatinturned.glif + alphatonos + alphatonos.glif + amacron + amacron.glif + amacron.a + amacron.a.glif + ampersand + ampersand.glif + anoteleia + anoteleia.glif + anoteleia.cap + anoteleia.cap.glif + aogonek + aogonek.glif + aogonek.a + aogonek.a.glif + apostrophemod + apostrophemod.glif + approxequal + approxequal.glif + aring + aring.glif + aring.a + aring.a.glif + aringacute + aringacute.glif + aringacute.a + aringacute.a.glif + arrowboth + arrowboth.glif + arrowdbldown + arrowdbldown.glif + arrowdblleft + arrowdblleft.glif + arrowdblright + arrowdblright.glif + arrowdblup + arrowdblup.glif + arrowdown + arrowdown.glif + arrowdownleft + arrowdownleft.glif + arrowdownright + arrowdownright.glif + arrowleft + arrowleft.glif + arrowright + arrowright.glif + arrowup + arrowup.glif + arrowupdn + arrowupdn.glif + arrowupdnbse + arrowupdnbse.glif + arrowupleft + arrowupleft.glif + arrowupright + arrowupright.glif + asciicircum + asciicircum.glif + asciitilde + asciitilde.glif + asper + asper.glif + asper.cap + asper.cap.glif + asperacute + asperacute.glif + asperacute.cap + asperacute.cap.glif + asperacutecmb + asperacutecmb.glif + aspercmb + aspercmb.glif + aspergrave + aspergrave.glif + aspergrave.cap + aspergrave.cap.glif + aspergravecmb + aspergravecmb.glif + aspertilde + aspertilde.glif + aspertilde.cap + aspertilde.cap.glif + aspertildecmb + aspertildecmb.glif + asterisk + asterisk.glif + asterisk.a + asterisk.a.glif + at + at.glif + at.case + at.case.glif + atilde + atilde.glif + atilde.a + atilde.a.glif + aturned + aturned.glif + b + b.glif + b.sups + b.sups.glif + backslash + backslash.glif + bar + bar.glif + bardbl + bardbl.glif + be + be.glif + be.srb + be.srb.glif + beta + beta.glif + beta.a + beta.a.glif + bhook + bhook.glif + blinebelow + blinebelow.glif + braceleft + braceleft.glif + braceright + braceright.glif + bracketleft + bracketleft.glif + bracketleftwhite + bracketleftwhite.glif + bracketright + bracketright.glif + bracketrightwhite + bracketrightwhite.glif + brackhalfbotleft + brackhalfbotleft.glif + brackhalfbotright + brackhalfbotright.glif + brackhalftopleft + brackhalftopleft.glif + brackhalftopright + brackhalftopright.glif + breve + breve.glif + breveacutecmb + breveacutecmb.glif + breveacutecmb.cap + breveacutecmb.cap.glif + brevebelowcmb + brevebelowcmb.glif + brevecmb + brevecmb.glif + brevecmb.cap + brevecmb.cap.glif + brevecmb.cyr + brevecmb.cyr.glif + brevecmb.cyrcap + brevecmb.cyrcap.glif + brevegravecmb + brevegravecmb.glif + brevegravecmb.cap + brevegravecmb.cap.glif + brevehoicmb + brevehoicmb.glif + brevehoicmb.cap + brevehoicmb.cap.glif + breveinvertedbelowcmb + breveinvertedbelowcmb.glif + breveinvertedcmb + breveinvertedcmb.glif + breveinvertedcmb.cap + breveinvertedcmb.cap.glif + breveinverteddoublecmb + breveinverteddoublecmb.glif + brevetildecmb + brevetildecmb.glif + brevetildecmb.cap + brevetildecmb.cap.glif + bridgebelowcmb + bridgebelowcmb.glif + bridgeinvertedbelowcmb + bridgeinvertedbelowcmb.glif + brokenbar + brokenbar.glif + bsmall + bsmall.glif + bstroke + bstroke.glif + bullet + bullet.glif + bulletoperator + bulletoperator.glif + bulletsquare + bulletsquare.glif + bulletsquarewhite + bulletsquarewhite.glif + bulletwhite + bulletwhite.glif + c + c.glif + c.sups + c.sups.glif + cacute + cacute.glif + candrabinducmb + candrabinducmb.glif + candrabinducmb.cap + candrabinducmb.cap.glif + careof + careof.glif + caron + caron.glif + caron.a + caron.a.glif + caronbelowcmb + caronbelowcmb.glif + caroncmb + caroncmb.glif + caroncmb.cap + caroncmb.cap.glif + carondotaccentcmb + carondotaccentcmb.glif + carondotaccentcmb.cap + carondotaccentcmb.cap.glif + ccaron + ccaron.glif + ccedilla + ccedilla.glif + ccircumflex + ccircumflex.glif + ccurl + ccurl.glif + cdotaccent + cdotaccent.glif + cedi + cedi.glif + cedilla + cedilla.glif + cedillacmb + cedillacmb.glif + cedillacmb.cap + cedillacmb.cap.glif + ceilingleft + ceilingleft.glif + ceilingright + ceilingright.glif + cent + cent.glif + che + che.glif + check + check.glif + check.e + check.e.glif + checkbox + checkbox.glif + checkedbox + checkedbox.glif + checkedbox.e + checkedbox.e.glif + chedescender + chedescender.glif + chi + chi.glif + circleblack + circleblack.glif + circledotted + circledotted.glif + circlewhite + circlewhite.glif + circumflex + circumflex.glif + circumflexacutecmb + circumflexacutecmb.glif + circumflexacutecmb.cap + circumflexacutecmb.cap.glif + circumflexbrevecmb + circumflexbrevecmb.glif + circumflexbrevecmb.cap + circumflexbrevecmb.cap.glif + circumflexcmb + circumflexcmb.glif + circumflexcmb.cap + circumflexcmb.cap.glif + circumflexgravecmb + circumflexgravecmb.glif + circumflexgravecmb.cap + circumflexgravecmb.cap.glif + circumflexhoicmb + circumflexhoicmb.glif + circumflexhoicmb.cap + circumflexhoicmb.cap.glif + circumflextildecmb + circumflextildecmb.glif + circumflextildecmb.cap + circumflextildecmb.cap.glif + clickalveolar + clickalveolar.glif + clickbilabial + clickbilabial.glif + club + club.glif + club.e + club.e.glif + coffee + coffee.glif + coffee.e + coffee.e.glif + colon + colon.glif + colon.sups + colon.sups.glif + colonmonetary + colonmonetary.glif + colontriangularhalfmod + colontriangularhalfmod.glif + colontriangularmod + colontriangularmod.glif + comma + comma.glif + comma.dnom + comma.dnom.glif + comma.numr + comma.numr.glif + comma.subs + comma.subs.glif + comma.sups + comma.sups.glif + commaabovecmb + commaabovecmb.glif + commabelowcmb + commabelowcmb.glif + commabelowcmb.a + commabelowcmb.a.glif + commaturnedabovecmb + commaturnedabovecmb.glif + commaturnedmod + commaturnedmod.glif + copyright + copyright.glif + currency + currency.glif + d + d.glif + d.sups + d.sups.glif + dagger + dagger.glif + daggerdbl + daggerdbl.glif + darkshade + darkshade.glif + dbldnhorzbxd + dbldnhorzbxd.glif + dbldnleftbxd + dbldnleftbxd.glif + dbldnrightbxd + dbldnrightbxd.glif + dblgravecmb + dblgravecmb.glif + dblgravecmb.cap + dblgravecmb.cap.glif + dblhorzbxd + dblhorzbxd.glif + dblprime + dblprime.glif + dbluphorzbxd + dbluphorzbxd.glif + dblupleftbxd + dblupleftbxd.glif + dbluprightbxd + dbluprightbxd.glif + dblvertbxd + dblvertbxd.glif + dblverthorzbxd + dblverthorzbxd.glif + dblvertleftbxd + dblvertleftbxd.glif + dblvertrightbxd + dblvertrightbxd.glif + dcaron + dcaron.glif + dcedilla + dcedilla.glif + dcroat + dcroat.glif + ddotbelow + ddotbelow.glif + de + de.glif + degree + degree.glif + delta + delta.glif + dezh + dezh.glif + dhook + dhook.glif + dialytikaacute + dialytikaacute.glif + dialytikagrave + dialytikagrave.glif + dialytikagravecmb + dialytikagravecmb.glif + dialytikatilde + dialytikatilde.glif + diamond + diamond.glif + diamond.e + diamond.e.glif + diamondblack + diamondblack.glif + dieresis + dieresis.glif + dieresisacutecmb + dieresisacutecmb.glif + dieresisacutecmb.cap + dieresisacutecmb.cap.glif + dieresisbelowcmb + dieresisbelowcmb.glif + dieresiscaroncmb + dieresiscaroncmb.glif + dieresiscaroncmb.cap + dieresiscaroncmb.cap.glif + dieresiscmb + dieresiscmb.glif + dieresiscmb.cap + dieresiscmb.cap.glif + dieresisgravecmb + dieresisgravecmb.glif + dieresisgravecmb.cap + dieresisgravecmb.cap.glif + dieresismacroncmb + dieresismacroncmb.glif + dieresismacroncmb.cap + dieresismacroncmb.cap.glif + dieresistildecmb + dieresistildecmb.glif + dieresistonos + dieresistonos.glif + dieresistonoscmb + dieresistonoscmb.glif + digamma + digamma.glif + divide + divide.glif + divisionslash + divisionslash.glif + dje + dje.glif + dlinebelow + dlinebelow.glif + dndblhorzsngbxd + dndblhorzsngbxd.glif + dndblleftsngbxd + dndblleftsngbxd.glif + dndblrightsngbxd + dndblrightsngbxd.glif + dneighthblock + dneighthblock.glif + dnfiveeighthsblock + dnfiveeighthsblock.glif + dnhalfblock + dnhalfblock.glif + dnheavyhorzlightbxd + dnheavyhorzlightbxd.glif + dnheavyleftlightbxd + dnheavyleftlightbxd.glif + dnheavyleftuplightbxd + dnheavyleftuplightbxd.glif + dnheavyrightlightbxd + dnheavyrightlightbxd.glif + dnheavyrightuplightbxd + dnheavyrightuplightbxd.glif + dnheavyuphorzlightbxd + dnheavyuphorzlightbxd.glif + dnleftquadrant + dnleftquadrant.glif + dnlighthorzheavybxd + dnlighthorzheavybxd.glif + dnlightleftheavybxd + dnlightleftheavybxd.glif + dnlightleftupheavybxd + dnlightleftupheavybxd.glif + dnlightrightheavybxd + dnlightrightheavybxd.glif + dnlightrightupheavybxd + dnlightrightupheavybxd.glif + dnlightuphorzheavybxd + dnlightuphorzheavybxd.glif + dnquarterblock + dnquarterblock.glif + dnrightquadrant + dnrightquadrant.glif + dnseveneighthsblock + dnseveneighthsblock.glif + dnsnghorzdblbxd + dnsnghorzdblbxd.glif + dnsngleftdblbxd + dnsngleftdblbxd.glif + dnsngrightdblbxd + dnsngrightdblbxd.glif + dnthreeeighthsblock + dnthreeeighthsblock.glif + dnthreequartersblock + dnthreequartersblock.glif + dollar + dollar.glif + dollar.a + dollar.a.glif + dong + dong.glif + dotaccent + dotaccent.glif + dotaccentcmb + dotaccentcmb.glif + dotaccentcmb.cap + dotaccentcmb.cap.glif + dotbelowcmb + dotbelowcmb.glif + dotlessi + dotlessi.glif + dotlessi.a + dotlessi.a.glif + dotlessj + dotlessj.glif + dotlessjstroke + dotlessjstroke.glif + dotlessjstrokehook + dotlessjstrokehook.glif + downtackbelowcmb + downtackbelowcmb.glif + dtail + dtail.glif + dze + dze.glif + dzhe + dzhe.glif + e + e.glif + e.sups + e.sups.glif + eacute + eacute.glif + eacute.sups + eacute.sups.glif + ebreve + ebreve.glif + ecaron + ecaron.glif + ecircumflex + ecircumflex.glif + ecircumflexacute + ecircumflexacute.glif + ecircumflexdotbelow + ecircumflexdotbelow.glif + ecircumflexgrave + ecircumflexgrave.glif + ecircumflexhoi + ecircumflexhoi.glif + ecircumflextilde + ecircumflextilde.glif + ecyr + ecyr.glif + edieresis + edieresis.glif + edotaccent + edotaccent.glif + edotbelow + edotbelow.glif + ef + ef.glif + egrave + egrave.glif + egrave.sups + egrave.sups.glif + ehoi + ehoi.glif + eight + eight.glif + eight.cap + eight.cap.glif + eight.dnom + eight.dnom.glif + eight.numr + eight.numr.glif + eight.onum + eight.onum.glif + eight.subs + eight.subs.glif + eight.sups + eight.sups.glif + eighthnote + eighthnote.glif + el + el.glif + ellipsis + ellipsis.glif + em + em.glif + emacron + emacron.glif + emacronacute + emacronacute.glif + emdash + emdash.glif + emdash.sups + emdash.sups.glif + emoji + emoji.glif + en + en.glif + endash + endash.glif + endash.sups + endash.sups.glif + endescender + endescender.glif + eng + eng.glif + eogonek + eogonek.glif + eogonek.sups + eogonek.sups.glif + eopen + eopen.glif + eopenreversed + eopenreversed.glif + eopenreversedclosed + eopenreversedclosed.glif + epsilon + epsilon.glif + epsilontonos + epsilontonos.glif + equal + equal.glif + equivalence + equivalence.glif + er + er.glif + ereversed + ereversed.glif + es + es.glif + esdescender + esdescender.glif + esh + esh.glif + estimated + estimated.glif + eta + eta.glif + etatonos + etatonos.glif + eth + eth.glif + etilde + etilde.glif + exclam + exclam.glif + exclamdbl + exclamdbl.glif + exclamdown + exclamdown.glif + exclamquestion + exclamquestion.glif + existential + existential.glif + ezh + ezh.glif + f + f.glif + f.sups + f.sups.glif + female + female.glif + fi + fi.glif + figuredash + figuredash.glif + figurespace + figurespace.glif + filledrect + filledrect.glif + fisheye + fisheye.glif + fita + fita.glif + five + five.glif + five.cap + five.cap.glif + five.dnom + five.dnom.glif + five.numr + five.numr.glif + five.onum + five.onum.glif + five.subs + five.subs.glif + five.sups + five.sups.glif + fiveeighths + fiveeighths.glif + fivesixths + fivesixths.glif + fl + fl.glif + floorleft + floorleft.glif + floorright + floorright.glif + florin + florin.glif + four + four.glif + four.cap + four.cap.glif + four.dnom + four.dnom.glif + four.numr + four.numr.glif + four.onum + four.onum.glif + four.subs + four.subs.glif + four.sups + four.sups.glif + fourfifths + fourfifths.glif + fraction + fraction.glif + franc + franc.glif + fullblock + fullblock.glif + g + g.glif + g.a + g.a.glif + g.supa + g.supa.glif + g.sups + g.sups.glif + gacute + gacute.glif + gacute.a + gacute.a.glif + gamma + gamma.glif + gammalatin + gammalatin.glif + gammalatinsupmod + gammalatinsupmod.glif + gbreve + gbreve.glif + gbreve.a + gbreve.a.glif + gcaron + gcaron.glif + gcaron.a + gcaron.a.glif + gcircumflex + gcircumflex.glif + gcircumflex.a + gcircumflex.a.glif + gcommaaccent + gcommaaccent.glif + gcommaaccent.a + gcommaaccent.a.glif + gdotaccent + gdotaccent.glif + gdotaccent.a + gdotaccent.a.glif + germandbls + germandbls.glif + ghe + ghe.glif + ghestroke + ghestroke.glif + gheup + gheup.glif + ghook + ghook.glif + gje + gje.glif + glottalstop + glottalstop.glif + glottalstopreversed + glottalstopreversed.glif + glottalstopreversedmod + glottalstopreversedmod.glif + glottalstopreversedsupmod + glottalstopreversedsupmod.glif + glottalstopstroke + glottalstopstroke.glif + glottalstopstrokereversed + glottalstopstrokereversed.glif + gmacron + gmacron.glif + gmacron.a + gmacron.a.glif + grave + grave.glif + gravecmb + gravecmb.glif + gravecmb.cap + gravecmb.cap.glif + gravemod + gravemod.glif + greater + greater.glif + greaterequal + greaterequal.glif + gscript + gscript.glif + gsmall + gsmall.glif + gtilde + gtilde.glif + gtilde.a + gtilde.a.glif + guarani + guarani.glif + guillemotleft + guillemotleft.glif + guillemotright + guillemotright.glif + guilsinglleft + guilsinglleft.glif + guilsinglright + guilsinglright.glif + h + h.glif + h.sups + h.sups.glif + ha + ha.glif + hadescender + hadescender.glif + hard + hard.glif + hbar + hbar.glif + hbrevebelow + hbrevebelow.glif + hcedilla + hcedilla.glif + hcircumflex + hcircumflex.glif + hdieresis + hdieresis.glif + hdotbelow + hdotbelow.glif + heart + heart.glif + heart.e + heart.e.glif + heartblackheavy + heartblackheavy.glif + heartblackheavy.e + heartblackheavy.e.glif + heavydbldashhorzbxd + heavydbldashhorzbxd.glif + heavydbldashvertbxd + heavydbldashvertbxd.glif + heavydnbxd + heavydnbxd.glif + heavydnhorzbxd + heavydnhorzbxd.glif + heavydnleftbxd + heavydnleftbxd.glif + heavydnrightbxd + heavydnrightbxd.glif + heavyhorzbxd + heavyhorzbxd.glif + heavyleftbxd + heavyleftbxd.glif + heavyleftlightrightbxd + heavyleftlightrightbxd.glif + heavyquaddashhorzbxd + heavyquaddashhorzbxd.glif + heavyquaddashvertbxd + heavyquaddashvertbxd.glif + heavyrightbxd + heavyrightbxd.glif + heavytrpldashhorzbxd + heavytrpldashhorzbxd.glif + heavytrpldashvertbxd + heavytrpldashvertbxd.glif + heavyupbxd + heavyupbxd.glif + heavyuphorzbxd + heavyuphorzbxd.glif + heavyupleftbxd + heavyupleftbxd.glif + heavyuplightdnbxd + heavyuplightdnbxd.glif + heavyuprightbxd + heavyuprightbxd.glif + heavyvertbxd + heavyvertbxd.glif + heavyverthorzbxd + heavyverthorzbxd.glif + heavyvertleftbxd + heavyvertleftbxd.glif + heavyvertrightbxd + heavyvertrightbxd.glif + henghook + henghook.glif + hhook + hhook.glif + hhook.sups + hhook.sups.glif + hlinebelow + hlinebelow.glif + hoicmb + hoicmb.glif + hoicmb.cap + hoicmb.cap.glif + hookrhoticmod + hookrhoticmod.glif + horizontalbar + horizontalbar.glif + horncmb + horncmb.glif + house + house.glif + hryvnia + hryvnia.glif + hsmall + hsmall.glif + hturned + hturned.glif + hungarumlaut + hungarumlaut.glif + hungarumlautcmb + hungarumlautcmb.glif + hungarumlautcmb.cap + hungarumlautcmb.cap.glif + hyphen + hyphen.glif + hyphen.a + hyphen.a.glif + hyphen.sups + hyphen.sups.glif + hyphentwo + hyphentwo.glif + hyphentwo.a + hyphentwo.a.glif + i + i.glif + i.a + i.a.glif + i.supa + i.supa.glif + i.sups + i.sups.glif + iacute + iacute.glif + iacute.a + iacute.a.glif + ibreve + ibreve.glif + ibreve.a + ibreve.a.glif + icaron + icaron.glif + icaron.a + icaron.a.glif + icircumflex + icircumflex.glif + icircumflex.a + icircumflex.a.glif + icyr + icyr.glif + idieresis + idieresis.glif + idieresis.a + idieresis.a.glif + idotbelow + idotbelow.glif + idotbelow.a + idotbelow.a.glif + ie + ie.glif + iebreve + iebreve.glif + iegrave + iegrave.glif + ieukran + ieukran.glif + igrave + igrave.glif + igrave.a + igrave.a.glif + igravecyr + igravecyr.glif + ihoi + ihoi.glif + ihoi.a + ihoi.a.glif + ij + ij.glif + ijacute + ijacute.glif + imacron + imacron.glif + imacron.a + imacron.a.glif + imacroncyr + imacroncyr.glif + infinity + infinity.glif + integral + integral.glif + integralbt + integralbt.glif + integraltp + integraltp.glif + interrobang + interrobang.glif + interrobangdown + interrobangdown.glif + intersection + intersection.glif + invbullet + invbullet.glif + invcircle + invcircle.glif + invsmileface + invsmileface.glif + invsmileface.e + invsmileface.e.glif + io + io.glif + iogonek + iogonek.glif + iogonek.a + iogonek.a.glif + iogonek.d + iogonek.d.glif + iogonek.da + iogonek.da.glif + iota + iota.glif + iotaadscript + iotaadscript.glif + iotadieresis + iotadieresis.glif + iotadieresistonos + iotadieresistonos.glif + iotasubscript + iotasubscript.glif + iotasubscriptcmb + iotasubscriptcmb.glif + iotatonos + iotatonos.glif + ishort + ishort.glif + ismall + ismall.glif + istroke + istroke.glif + istroke.a + istroke.a.glif + istroke.d + istroke.d.glif + istroke.da + istroke.da.glif + itilde + itilde.glif + itilde.a + itilde.a.glif + iukran + iukran.glif + iukran.a + iukran.a.glif + izhitsa + izhitsa.glif + j + j.glif + j.sups + j.sups.glif + jcircumflex + jcircumflex.glif + jcrossedtail + jcrossedtail.glif + jcrossedtail.d + jcrossedtail.d.glif + je + je.glif + k + k.glif + k.sups + k.sups.glif + ka + ka.glif + kabashkir + kabashkir.glif + kadescender + kadescender.glif + kai + kai.glif + kappa + kappa.glif + kcommaaccent + kcommaaccent.glif + kdotbelow + kdotbelow.glif + kgreenlandic + kgreenlandic.glif + kje + kje.glif + klinebelow + klinebelow.glif + koppa + koppa.glif + kturned + kturned.glif + l + l.glif + l.a + l.a.glif + l.sups + l.sups.glif + lacute + lacute.glif + lacute.a + lacute.a.glif + lambda + lambda.glif + lbelt + lbelt.glif + lbelt.a + lbelt.a.glif + lcaron + lcaron.glif + lcaron.a + lcaron.a.glif + lcat + lcat.glif + lcat.a + lcat.a.glif + lcommaaccent + lcommaaccent.glif + lcommaaccent.a + lcommaaccent.a.glif + ldot + ldot.glif + ldot.a + ldot.a.glif + ldotbelow + ldotbelow.glif + ldotbelow.a + ldotbelow.a.glif + ldotbelowmacron + ldotbelowmacron.glif + ldotbelowmacron.a + ldotbelowmacron.a.glif + leftangleabovecmb + leftangleabovecmb.glif + leftdnheavyrightuplightbxd + leftdnheavyrightuplightbxd.glif + lefteighthblock + lefteighthblock.glif + leftfiveeighthsblock + leftfiveeighthsblock.glif + lefthalfblock + lefthalfblock.glif + leftheavyrightdnlightbxd + leftheavyrightdnlightbxd.glif + leftheavyrightuplightbxd + leftheavyrightuplightbxd.glif + leftheavyrightvertlightbxd + leftheavyrightvertlightbxd.glif + leftlightrightdnheavybxd + leftlightrightdnheavybxd.glif + leftlightrightupheavybxd + leftlightrightupheavybxd.glif + leftlightrightvertheavybxd + leftlightrightvertheavybxd.glif + leftquarterblock + leftquarterblock.glif + leftseveneighthsblock + leftseveneighthsblock.glif + lefttackbelowcmb + lefttackbelowcmb.glif + leftthreeeighthsblock + leftthreeeighthsblock.glif + leftthreequartersblock + leftthreequartersblock.glif + leftupheavyrightdnlightbxd + leftupheavyrightdnlightbxd.glif + lenis + lenis.glif + lenis.cap + lenis.cap.glif + lenisacute + lenisacute.glif + lenisacute.cap + lenisacute.cap.glif + lenisacutecmb + lenisacutecmb.glif + leniscmb + leniscmb.glif + lenisgrave + lenisgrave.glif + lenisgrave.cap + lenisgrave.cap.glif + lenisgravecmb + lenisgravecmb.glif + lenistilde + lenistilde.glif + lenistilde.cap + lenistilde.cap.glif + lenistildecmb + lenistildecmb.glif + less + less.glif + lessequal + lessequal.glif + lezh + lezh.glif + lightarcdnleftbxd + lightarcdnleftbxd.glif + lightarcdnrightbxd + lightarcdnrightbxd.glif + lightarcupleftbxd + lightarcupleftbxd.glif + lightarcuprightbxd + lightarcuprightbxd.glif + lightdbldashhorzbxd + lightdbldashhorzbxd.glif + lightdbldashvertbxd + lightdbldashvertbxd.glif + lightdiagcrossbxd + lightdiagcrossbxd.glif + lightdiagupleftdnrightbxd + lightdiagupleftdnrightbxd.glif + lightdiaguprightdnleftbxd + lightdiaguprightdnleftbxd.glif + lightdnbxd + lightdnbxd.glif + lightdnhorzbxd + lightdnhorzbxd.glif + lightdnleftbxd + lightdnleftbxd.glif + lightdnrightbxd + lightdnrightbxd.glif + lighthorzbxd + lighthorzbxd.glif + lightleftbxd + lightleftbxd.glif + lightleftheavyrightbxd + lightleftheavyrightbxd.glif + lightquaddashhorzbxd + lightquaddashhorzbxd.glif + lightquaddashvertbxd + lightquaddashvertbxd.glif + lightrightbxd + lightrightbxd.glif + lightshade + lightshade.glif + lighttrpldashhorzbxd + lighttrpldashhorzbxd.glif + lighttrpldashvertbxd + lighttrpldashvertbxd.glif + lightupbxd + lightupbxd.glif + lightupheavydnbxd + lightupheavydnbxd.glif + lightuphorzbxd + lightuphorzbxd.glif + lightupleftbxd + lightupleftbxd.glif + lightuprightbxd + lightuprightbxd.glif + lightvertbxd + lightvertbxd.glif + lightverthorzbxd + lightverthorzbxd.glif + lightvertleftbxd + lightvertleftbxd.glif + lightvertrightbxd + lightvertrightbxd.glif + lira + lira.glif + liraturkish + liraturkish.glif + litre + litre.glif + lje + lje.glif + llinebelow + llinebelow.glif + llinebelow.a + llinebelow.a.glif + lmiddletilde + lmiddletilde.glif + lmiddletilde.a + lmiddletilde.a.glif + lock + lock.glif + lock.e + lock.e.glif + logicalnot + logicalnot.glif + longs + longs.glif + lownumeralsign + lownumeralsign.glif + lozenge + lozenge.glif + lretroflex + lretroflex.glif + lslash + lslash.glif + lslash.a + lslash.a.glif + lsmall + lsmall.glif + m + m.glif + m.sups + m.sups.glif + macron + macron.glif + macronacutecmb + macronacutecmb.glif + macronacutecmb.cap + macronacutecmb.cap.glif + macronbelowcmb + macronbelowcmb.glif + macroncmb + macroncmb.glif + macroncmb.cap + macroncmb.cap.glif + macrondoublebelowcmb + macrondoublebelowcmb.glif + macronmod + macronmod.glif + macute + macute.glif + male + male.glif + mdotaccent + mdotaccent.glif + mdotbelow + mdotbelow.glif + mediumshade + mediumshade.glif + mhook + mhook.glif + minus + minus.glif + minusbelowcmb + minusbelowcmb.glif + mlonglegturned + mlonglegturned.glif + mturned + mturned.glif + mu + mu.glif + mu.math + mu.math.glif + multiply + multiply.glif + musicalnotedbl + musicalnotedbl.glif + n + n.glif + n.sups + n.sups.glif + nacute + nacute.glif + naira + naira.glif + napostrophe + napostrophe.glif + nbspace + nbspace.glif + nbspace.frac + nbspace.frac.glif + ncaron + ncaron.glif + ncommaaccent + ncommaaccent.glif + ndotaccent + ndotaccent.glif + ndotbelow + ndotbelow.glif + ngrave + ngrave.glif + nhookleft + nhookleft.glif + nine + nine.glif + nine.cap + nine.cap.glif + nine.dnom + nine.dnom.glif + nine.numr + nine.numr.glif + nine.onum + nine.onum.glif + nine.subs + nine.subs.glif + nine.sups + nine.sups.glif + nje + nje.glif + nlinebelow + nlinebelow.glif + notemusical + notemusical.glif + notemusical.e + notemusical.e.glif + notequal + notequal.glif + notesmusical + notesmusical.glif + notesmusical.e + notesmusical.e.glif + nretroflex + nretroflex.glif + nsmall + nsmall.glif + ntilde + ntilde.glif + nu + nu.glif + numbersign + numbersign.glif + numeralsign + numeralsign.glif + numero + numero.glif + o + o.glif + o.sups + o.sups.glif + oacute + oacute.glif + obar + obar.glif + obarcyr + obarcyr.glif + obreve + obreve.glif + ocaron + ocaron.glif + ocircumflex + ocircumflex.glif + ocircumflexacute + ocircumflexacute.glif + ocircumflexdotbelow + ocircumflexdotbelow.glif + ocircumflexgrave + ocircumflexgrave.glif + ocircumflexhoi + ocircumflexhoi.glif + ocircumflextilde + ocircumflextilde.glif + ocyr + ocyr.glif + odieresis + odieresis.glif + odieresiscyr + odieresiscyr.glif + odotbelow + odotbelow.glif + oe + oe.glif + oesmall + oesmall.glif + ogonek + ogonek.glif + ogonekcmb + ogonekcmb.glif + ogonekcmb.cap + ogonekcmb.cap.glif + ograve + ograve.glif + ohoi + ohoi.glif + ohorn + ohorn.glif + ohornacute + ohornacute.glif + ohorndotbelow + ohorndotbelow.glif + ohorngrave + ohorngrave.glif + ohornhoi + ohornhoi.glif + ohorntilde + ohorntilde.glif + ohungarumlaut + ohungarumlaut.glif + omacron + omacron.glif + omacronacute + omacronacute.glif + omega + omega.glif + omegatonos + omegatonos.glif + omicron + omicron.glif + omicrontonos + omicrontonos.glif + one + one.glif + one.a + one.a.glif + one.ac + one.ac.glif + one.ao + one.ao.glif + one.cap + one.cap.glif + one.dnom + one.dnom.glif + one.numr + one.numr.glif + one.onum + one.onum.glif + one.subs + one.subs.glif + one.sups + one.sups.glif + oneeighth + oneeighth.glif + onefifth + onefifth.glif + onehalf + onehalf.glif + oneninth + oneninth.glif + onequarter + onequarter.glif + oneseventh + oneseventh.glif + onesixth + onesixth.glif + onetenth + onetenth.glif + onethird + onethird.glif + oogonek + oogonek.glif + oopen + oopen.glif + ordfeminine + ordfeminine.glif + ordfeminine.a + ordfeminine.a.glif + ordmasculine + ordmasculine.glif + orthogonal + orthogonal.glif + oslash + oslash.glif + oslashacute + oslashacute.glif + otilde + otilde.glif + overline + overline.glif + overlinecmb + overlinecmb.glif + overlinecmb.cap + overlinecmb.cap.glif + oxia + oxia.glif + oxia.cap + oxia.cap.glif + p + p.glif + p.sups + p.sups.glif + palochka + palochka.glif + palochka.a + palochka.a.glif + paragraph + paragraph.glif + parenleft + parenleft.glif + parenleft.dnom + parenleft.dnom.glif + parenleft.numr + parenleft.numr.glif + parenleft.subs + parenleft.subs.glif + parenleft.sups + parenleft.sups.glif + parenright + parenright.glif + parenright.dnom + parenright.dnom.glif + parenright.numr + parenright.numr.glif + parenright.subs + parenright.subs.glif + parenright.sups + parenright.sups.glif + partialdiff + partialdiff.glif + pe + pe.glif + percent + percent.glif + period + period.glif + period.dnom + period.dnom.glif + period.numr + period.numr.glif + period.subs + period.subs.glif + period.sups + period.sups.glif + periodcentered + periodcentered.glif + perispomeni + perispomeni.glif + perispomenicmb + perispomenicmb.glif + perispomenicmb.cap + perispomenicmb.cap.glif + perthousand + perthousand.glif + peseta + peseta.glif + peso + peso.glif + phi + phi.glif + phi.a + phi.a.glif + phi.math + phi.math.glif + philatin + philatin.glif + pi + pi.glif + plus + plus.glif + plusbelowcmb + plusbelowcmb.glif + plusminus + plusminus.glif + pointerblackleft + pointerblackleft.glif + pointerblackright + pointerblackright.glif + poop + poop.glif + poop.e + poop.e.glif + prime + prime.glif + primemod + primemod.glif + primereversed + primereversed.glif + product + product.glif + proportion + proportion.glif + psi + psi.glif + psili + psili.glif + q + q.glif + q.sups + q.sups.glif + question + question.glif + questiondbl + questiondbl.glif + questiondown + questiondown.glif + questionexclam + questionexclam.glif + questiongreek + questiongreek.glif + quotedbl + quotedbl.glif + quotedblbase + quotedblbase.glif + quotedblleft + quotedblleft.glif + quotedblright + quotedblright.glif + quoteleft + quoteleft.glif + quotereversed + quotereversed.glif + quoteright + quoteright.glif + quotesinglbase + quotesinglbase.glif + quotesingle + quotesingle.glif + r + r.glif + r.sups + r.sups.glif + racute + racute.glif + radical + radical.glif + ramshorn + ramshorn.glif + rcaron + rcaron.glif + rcommaaccent + rcommaaccent.glif + rdotaccent + rdotaccent.glif + rdotbelow + rdotbelow.glif + rdotbelowmacron + rdotbelowmacron.glif + registered + registered.glif + revlogicalnot + revlogicalnot.glif + rfishhook + rfishhook.glif + rho + rho.glif + rhookturned + rhookturned.glif + rightdnheavyleftuplightbxd + rightdnheavyleftuplightbxd.glif + righteighthblock + righteighthblock.glif + righthalfblock + righthalfblock.glif + rightheavyleftdnlightbxd + rightheavyleftdnlightbxd.glif + rightheavyleftuplightbxd + rightheavyleftuplightbxd.glif + rightheavyleftvertlightbxd + rightheavyleftvertlightbxd.glif + rightlightleftdnheavybxd + rightlightleftdnheavybxd.glif + rightlightleftupheavybxd + rightlightleftupheavybxd.glif + rightlightleftvertheavybxd + rightlightleftvertheavybxd.glif + righttackbelowcmb + righttackbelowcmb.glif + rightupheavyleftdnlightbxd + rightupheavyleftdnlightbxd.glif + ring + ring.glif + ringbelowcmb + ringbelowcmb.glif + ringcmb + ringcmb.glif + ringcmb.cap + ringcmb.cap.glif + ringhalfleftbelowcmb + ringhalfleftbelowcmb.glif + ringhalfleftmod + ringhalfleftmod.glif + ringhalfrightbelowcmb + ringhalfrightbelowcmb.glif + ringhalfrightmod + ringhalfrightmod.glif + rlinebelow + rlinebelow.glif + rlonglegturned + rlonglegturned.glif + robot + robot.glif + robot.e + robot.e.glif + rsmall + rsmall.glif + rsmallinverted + rsmallinverted.glif + rtail + rtail.glif + rturned + rturned.glif + ruble + ruble.glif + rupeeindian + rupeeindian.glif + s + s.glif + s.sups + s.sups.glif + sacute + sacute.glif + sampi + sampi.glif + scaron + scaron.glif + scarondot + scarondot.glif + scedilla + scedilla.glif + schwa + schwa.glif + schwa.sups + schwa.sups.glif + schwacyr + schwacyr.glif + schwahookrhotic + schwahookrhotic.glif + scircumflex + scircumflex.glif + scommaaccent + scommaaccent.glif + sdotaccent + sdotaccent.glif + sdotbelow + sdotbelow.glif + seagullbelowcmb + seagullbelowcmb.glif + section + section.glif + semicolon + semicolon.glif + servicemark + servicemark.glif + seven + seven.glif + seven.cap + seven.cap.glif + seven.dnom + seven.dnom.glif + seven.numr + seven.numr.glif + seven.onum + seven.onum.glif + seven.subs + seven.subs.glif + seven.sups + seven.sups.glif + seveneighths + seveneighths.glif + sfthyphen + sfthyphen.glif + sfthyphen.a + sfthyphen.a.glif + sha + sha.glif + shcha + shcha.glif + shha + shha.glif + shook + shook.glif + sigma + sigma.glif + sigma.end + sigma.end.glif + six + six.glif + six.cap + six.cap.glif + six.dnom + six.dnom.glif + six.numr + six.numr.glif + six.onum + six.onum.glif + six.subs + six.subs.glif + six.sups + six.sups.glif + slash + slash.glif + slash.frac + slash.frac.glif + smileface + smileface.glif + smileface.e + smileface.e.glif + soft + soft.glif + soundcopyright + soundcopyright.glif + space + space.glif + space.frac + space.frac.glif + spade + spade.glif + spade.e + spade.e.glif + squarebelowcmb + squarebelowcmb.glif + squareblack + squareblack.glif + squareshadow + squareshadow.glif + squarewhite + squarewhite.glif + sterling + sterling.glif + stigma + stigma.glif + summation + summation.glif + sun + sun.glif + t + t.glif + t.sups + t.sups.glif + tau + tau.glif + tbar + tbar.glif + tcaron + tcaron.glif + tcedilla + tcedilla.glif + tcommaaccent + tcommaaccent.glif + tdieresis + tdieresis.glif + tdotbelow + tdotbelow.glif + te + te.glif + tenge + tenge.glif + tesh + tesh.glif + text + text.glif + theta + theta.glif + theta.a + theta.a.glif + thorn + thorn.glif + three + three.glif + three.cap + three.cap.glif + three.dnom + three.dnom.glif + three.numr + three.numr.glif + three.onum + three.onum.glif + three.subs + three.subs.glif + three.sups + three.sups.glif + threeeighths + threeeighths.glif + threefifths + threefifths.glif + threequarters + threequarters.glif + tilde + tilde.glif + tildebelowcmb + tildebelowcmb.glif + tildecmb + tildecmb.glif + tildecmb.cap + tildecmb.cap.glif + tildeoverlaycmb + tildeoverlaycmb.glif + tlinebelow + tlinebelow.glif + tonos + tonos.glif + tonos.cap + tonos.cap.glif + tonoscmb + tonoscmb.glif + trademark + trademark.glif + tretroflex + tretroflex.glif + triangledownblack + triangledownblack.glif + triangledownwhite + triangledownwhite.glif + triangleleftblack + triangleleftblack.glif + triangleleftwhite + triangleleftwhite.glif + trianglerightblack + trianglerightblack.glif + trianglerightwhite + trianglerightwhite.glif + trianglesmalldownblack + trianglesmalldownblack.glif + trianglesmalldownwhite + trianglesmalldownwhite.glif + trianglesmallleftblack + trianglesmallleftblack.glif + trianglesmallleftwhite + trianglesmallleftwhite.glif + trianglesmallrightblack + trianglesmallrightblack.glif + trianglesmallrightwhite + trianglesmallrightwhite.glif + trianglesmallupblack + trianglesmallupblack.glif + trianglesmallupwhite + trianglesmallupwhite.glif + triangleupblack + triangleupblack.glif + triangleupwhite + triangleupwhite.glif + ts + ts.glif + tse + tse.glif + tshe + tshe.glif + tturned + tturned.glif + tugrik + tugrik.glif + two + two.glif + two.cap + two.cap.glif + two.dnom + two.dnom.glif + two.numr + two.numr.glif + two.onum + two.onum.glif + two.subs + two.subs.glif + two.sups + two.sups.glif + twofifths + twofifths.glif + twothirds + twothirds.glif + u + u.glif + u.sups + u.sups.glif + uacute + uacute.glif + uacutedblcyr + uacutedblcyr.glif + ubar + ubar.glif + ubreve + ubreve.glif + ucaron + ucaron.glif + ucircumflex + ucircumflex.glif + ucyr + ucyr.glif + udieresis + udieresis.glif + udieresisacute + udieresisacute.glif + udieresiscaron + udieresiscaron.glif + udieresisgrave + udieresisgrave.glif + udieresismacron + udieresismacron.glif + udotbelow + udotbelow.glif + ugrave + ugrave.glif + uhoi + uhoi.glif + uhorn + uhorn.glif + uhornacute + uhornacute.glif + uhorndotbelow + uhorndotbelow.glif + uhorngrave + uhorngrave.glif + uhornhoi + uhornhoi.glif + uhorntilde + uhorntilde.glif + uhungarumlaut + uhungarumlaut.glif + umacron + umacron.glif + umacroncyr + umacroncyr.glif + underscore + underscore.glif + underscoredbl + underscoredbl.glif + undertie + undertie.glif + uniE0A0 + uniE_0A_0.glif + uniE0A1 + uniE_0A_1.glif + uniE0A2 + uniE_0A_2.glif + uniE0B0 + uniE_0B_0.glif + uniE0B1 + uniE_0B_1.glif + uniE0B2 + uniE_0B_2.glif + uniE0B3 + uniE_0B_3.glif + universal + universal.glif + uogonek + uogonek.glif + updblhorzsngbxd + updblhorzsngbxd.glif + updblleftsngbxd + updblleftsngbxd.glif + updblrightsngbxd + updblrightsngbxd.glif + upeighthblock + upeighthblock.glif + uphalfblock + uphalfblock.glif + upheavydnhorzlightbxd + upheavydnhorzlightbxd.glif + upheavyhorzlightbxd + upheavyhorzlightbxd.glif + upheavyleftdnlightbxd + upheavyleftdnlightbxd.glif + upheavyleftlightbxd + upheavyleftlightbxd.glif + upheavyrightdnlightbxd + upheavyrightdnlightbxd.glif + upheavyrightlightbxd + upheavyrightlightbxd.glif + upleftdnleftdnrightquadrant + upleftdnleftdnrightquadrant.glif + upleftdnrightquadrant + upleftdnrightquadrant.glif + upleftquadrant + upleftquadrant.glif + upleftuprightdnleftquadrant + upleftuprightdnleftquadrant.glif + upleftuprightdnrightquadrant + upleftuprightdnrightquadrant.glif + uplightdnhorzheavybxd + uplightdnhorzheavybxd.glif + uplighthorzheavybxd + uplighthorzheavybxd.glif + uplightleftdnheavybxd + uplightleftdnheavybxd.glif + uplightleftheavybxd + uplightleftheavybxd.glif + uplightrightdnheavybxd + uplightrightdnheavybxd.glif + uplightrightheavybxd + uplightrightheavybxd.glif + uprightdnleftdnrightquadrant + uprightdnleftdnrightquadrant.glif + uprightdnleftquadrant + uprightdnleftquadrant.glif + uprightquadrant + uprightquadrant.glif + upsilon + upsilon.glif + upsilondieresis + upsilondieresis.glif + upsilondieresistonos + upsilondieresistonos.glif + upsilonlatin + upsilonlatin.glif + upsilontonos + upsilontonos.glif + upsnghorzdblbxd + upsnghorzdblbxd.glif + upsngleftdblbxd + upsngleftdblbxd.glif + upsngrightdblbxd + upsngrightdblbxd.glif + uptackbelowcmb + uptackbelowcmb.glif + uring + uring.glif + ushort + ushort.glif + ustraight + ustraight.glif + ustraightstroke + ustraightstroke.glif + utilde + utilde.glif + v + v.glif + v.sups + v.sups.glif + varia + varia.glif + varia.cap + varia.cap.glif + variacmb + variacmb.glif + vdotbelow + vdotbelow.glif + ve + ve.glif + vertdblhorzsngbxd + vertdblhorzsngbxd.glif + vertdblleftsngbxd + vertdblleftsngbxd.glif + vertdblrightsngbxd + vertdblrightsngbxd.glif + vertheavyhorzlightbxd + vertheavyhorzlightbxd.glif + vertheavyleftlightbxd + vertheavyleftlightbxd.glif + vertheavyrightlightbxd + vertheavyrightlightbxd.glif + verticallinebelowcmb + verticallinebelowcmb.glif + verticallinelowmod + verticallinelowmod.glif + verticallinemod + verticallinemod.glif + vertlighthorzheavybxd + vertlighthorzheavybxd.glif + vertlightleftheavybxd + vertlightleftheavybxd.glif + vertlightrightheavybxd + vertlightrightheavybxd.glif + vertsnghorzdblbxd + vertsnghorzdblbxd.glif + vertsngleftdblbxd + vertsngleftdblbxd.glif + vertsngrightdblbxd + vertsngrightdblbxd.glif + vhook + vhook.glif + vturned + vturned.glif + w + w.glif + w.sups + w.sups.glif + wacute + wacute.glif + wcircumflex + wcircumflex.glif + wdieresis + wdieresis.glif + wgrave + wgrave.glif + won + won.glif + wturned + wturned.glif + x + x.glif + x.sups + x.sups.glif + xabovecmb + xabovecmb.glif + xi + xi.glif + y + y.glif + y.sups + y.sups.glif + ya + ya.glif + yacute + yacute.glif + yat + yat.glif + ycircumflex + ycircumflex.glif + ydieresis + ydieresis.glif + ydotaccent + ydotaccent.glif + ydotbelow + ydotbelow.glif + yen + yen.glif + yeru + yeru.glif + ygrave + ygrave.glif + yhoi + yhoi.glif + yi + yi.glif + yi.a + yi.a.glif + ysmall + ysmall.glif + ytilde + ytilde.glif + yturned + yturned.glif + yu + yu.glif + z + z.glif + z.sups + z.sups.glif + zacute + zacute.glif + zcaron + zcaron.glif + zcircumflex + zcircumflex.glif + zcurl + zcurl.glif + zdotaccent + zdotaccent.glif + zdotbelow + zdotbelow.glif + ze + ze.glif + zedescender + zedescender.glif + zero + zero.glif + zero.0 + zero.0.glif + zero.0c + zero.0c.glif + zero.0o + zero.0o.glif + zero.cap + zero.cap.glif + zero.dnom + zero.dnom.glif + zero.numr + zero.numr.glif + zero.onum + zero.onum.glif + zero.subs + zero.subs.glif + zero.sups + zero.sups.glif + zerothirds + zerothirds.glif + zeta + zeta.glif + zhe + zhe.glif + zhebreve + zhebreve.glif + zhedescender + zhedescender.glif + zlinebelow + zlinebelow.glif + zretroflex + zretroflex.glif + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/copyright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/copyright.glif new file mode 100644 index 000000000..f60017fe7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/copyright.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/currency.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/currency.glif new file mode 100644 index 000000000..af7f56d15 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/currency.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/d.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/d.glif new file mode 100644 index 000000000..384ed9c80 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/d.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/d.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/d.sups.glif new file mode 100644 index 000000000..6669a9733 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/d.sups.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dagger.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dagger.glif new file mode 100644 index 000000000..d9555f41d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dagger.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/daggerdbl.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/daggerdbl.glif new file mode 100644 index 000000000..d5105870f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/daggerdbl.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/darkshade.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/darkshade.glif new file mode 100644 index 000000000..4dbeea901 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/darkshade.glif @@ -0,0 +1,595 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbldnhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbldnhorzbxd.glif new file mode 100644 index 000000000..9ecf9d066 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbldnhorzbxd.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbldnleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbldnleftbxd.glif new file mode 100644 index 000000000..da659d7be --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbldnleftbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbldnrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbldnrightbxd.glif new file mode 100644 index 000000000..fecf31763 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbldnrightbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblgravecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblgravecmb.cap.glif new file mode 100644 index 000000000..1e7774a6c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblgravecmb.cap.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblgravecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblgravecmb.glif new file mode 100644 index 000000000..ab42f2251 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblgravecmb.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblhorzbxd.glif new file mode 100644 index 000000000..cfadbfe26 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblhorzbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblprime.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblprime.glif new file mode 100644 index 000000000..ede58a24b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblprime.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbluphorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbluphorzbxd.glif new file mode 100644 index 000000000..afbefdc4b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbluphorzbxd.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblupleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblupleftbxd.glif new file mode 100644 index 000000000..52c9bada1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblupleftbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbluprightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbluprightbxd.glif new file mode 100644 index 000000000..a6ee1bb0c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dbluprightbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblvertbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblvertbxd.glif new file mode 100644 index 000000000..6158aa763 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblvertbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblverthorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblverthorzbxd.glif new file mode 100644 index 000000000..55b7458c4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblverthorzbxd.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblvertleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblvertleftbxd.glif new file mode 100644 index 000000000..eedfaf1c6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblvertleftbxd.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblvertrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblvertrightbxd.glif new file mode 100644 index 000000000..33e135a45 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dblvertrightbxd.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dcaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dcaron.glif new file mode 100644 index 000000000..2c6907f5b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dcaron.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dcedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dcedilla.glif new file mode 100644 index 000000000..abbdaf769 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dcedilla.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dcroat.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dcroat.glif new file mode 100644 index 000000000..53c87f243 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dcroat.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ddotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ddotbelow.glif new file mode 100644 index 000000000..9df9dd545 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ddotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/de.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/de.glif new file mode 100644 index 000000000..01ecb4b46 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/de.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/degree.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/degree.glif new file mode 100644 index 000000000..861369c4e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/degree.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/delta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/delta.glif new file mode 100644 index 000000000..ec8262b20 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/delta.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dezh.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dezh.glif new file mode 100644 index 000000000..a4e251348 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dezh.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dhook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dhook.glif new file mode 100644 index 000000000..6589648fe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dhook.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikaacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikaacute.glif new file mode 100644 index 000000000..8cc3be4eb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikaacute.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikagrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikagrave.glif new file mode 100644 index 000000000..ef32ec3d1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikagrave.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikagravecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikagravecmb.glif new file mode 100644 index 000000000..dcd95898b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikagravecmb.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikatilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikatilde.glif new file mode 100644 index 000000000..3d1e10021 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dialytikatilde.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/diamond.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/diamond.e.glif new file mode 100644 index 000000000..8fad17314 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/diamond.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/diamond.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/diamond.glif new file mode 100644 index 000000000..7666a3a7f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/diamond.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/diamondblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/diamondblack.glif new file mode 100644 index 000000000..0aaebfa02 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/diamondblack.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresis.glif new file mode 100644 index 000000000..1b00bd65f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresis.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisacutecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisacutecmb.cap.glif new file mode 100644 index 000000000..3103fe9e9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisacutecmb.cap.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisacutecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisacutecmb.glif new file mode 100644 index 000000000..506f56aaf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisacutecmb.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisbelowcmb.glif new file mode 100644 index 000000000..feec34d3a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisbelowcmb.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscaroncmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscaroncmb.cap.glif new file mode 100644 index 000000000..90094a2b4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscaroncmb.cap.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscaroncmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscaroncmb.glif new file mode 100644 index 000000000..3d1aedfed --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscaroncmb.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscmb.cap.glif new file mode 100644 index 000000000..648968d77 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscmb.cap.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscmb.glif new file mode 100644 index 000000000..a44b03da9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresiscmb.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisgravecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisgravecmb.cap.glif new file mode 100644 index 000000000..6c63b3828 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisgravecmb.cap.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisgravecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisgravecmb.glif new file mode 100644 index 000000000..5a4fa2f85 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresisgravecmb.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresismacroncmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresismacroncmb.cap.glif new file mode 100644 index 000000000..8d49f7be4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresismacroncmb.cap.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresismacroncmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresismacroncmb.glif new file mode 100644 index 000000000..4bd0769f2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresismacroncmb.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresistildecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresistildecmb.glif new file mode 100644 index 000000000..00bd95d1c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresistildecmb.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresistonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresistonos.glif new file mode 100644 index 000000000..5fe0c4bcd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresistonos.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresistonoscmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresistonoscmb.glif new file mode 100644 index 000000000..407f7eaae --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dieresistonoscmb.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/digamma.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/digamma.glif new file mode 100644 index 000000000..f0561b778 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/digamma.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/divide.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/divide.glif new file mode 100644 index 000000000..76162b23e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/divide.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/divisionslash.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/divisionslash.glif new file mode 100644 index 000000000..1d3abd8f5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/divisionslash.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dje.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dje.glif new file mode 100644 index 000000000..46ca159d8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dje.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dlinebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dlinebelow.glif new file mode 100644 index 000000000..90a3231a9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dlinebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dndblhorzsngbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dndblhorzsngbxd.glif new file mode 100644 index 000000000..417491916 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dndblhorzsngbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dndblleftsngbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dndblleftsngbxd.glif new file mode 100644 index 000000000..6d71ff7d9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dndblleftsngbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dndblrightsngbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dndblrightsngbxd.glif new file mode 100644 index 000000000..0f5083d0b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dndblrightsngbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dneighthblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dneighthblock.glif new file mode 100644 index 000000000..a4c448b72 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dneighthblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnfiveeighthsblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnfiveeighthsblock.glif new file mode 100644 index 000000000..512f3defd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnfiveeighthsblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnhalfblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnhalfblock.glif new file mode 100644 index 000000000..1f6299cae --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnhalfblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyhorzlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyhorzlightbxd.glif new file mode 100644 index 000000000..4732adbbd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyhorzlightbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyleftlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyleftlightbxd.glif new file mode 100644 index 000000000..068e9df7d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyleftlightbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyleftuplightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyleftuplightbxd.glif new file mode 100644 index 000000000..a66498100 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyleftuplightbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyrightlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyrightlightbxd.glif new file mode 100644 index 000000000..a964a2fd3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyrightlightbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyrightuplightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyrightuplightbxd.glif new file mode 100644 index 000000000..1234e8034 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyrightuplightbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyuphorzlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyuphorzlightbxd.glif new file mode 100644 index 000000000..54c8261fc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnheavyuphorzlightbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnleftquadrant.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnleftquadrant.glif new file mode 100644 index 000000000..474cac21c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnleftquadrant.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlighthorzheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlighthorzheavybxd.glif new file mode 100644 index 000000000..f39a3e73f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlighthorzheavybxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightleftheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightleftheavybxd.glif new file mode 100644 index 000000000..85873caa1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightleftheavybxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightleftupheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightleftupheavybxd.glif new file mode 100644 index 000000000..857001383 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightleftupheavybxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightrightheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightrightheavybxd.glif new file mode 100644 index 000000000..bc9e95016 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightrightheavybxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightrightupheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightrightupheavybxd.glif new file mode 100644 index 000000000..92d5fe332 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightrightupheavybxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightuphorzheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightuphorzheavybxd.glif new file mode 100644 index 000000000..e95f3aa80 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnlightuphorzheavybxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnquarterblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnquarterblock.glif new file mode 100644 index 000000000..a2bbf8a77 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnquarterblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnrightquadrant.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnrightquadrant.glif new file mode 100644 index 000000000..d55ae1520 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnrightquadrant.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnseveneighthsblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnseveneighthsblock.glif new file mode 100644 index 000000000..72f7daf8b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnseveneighthsblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnsnghorzdblbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnsnghorzdblbxd.glif new file mode 100644 index 000000000..fb4f27240 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnsnghorzdblbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnsngleftdblbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnsngleftdblbxd.glif new file mode 100644 index 000000000..3abb12c25 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnsngleftdblbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnsngrightdblbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnsngrightdblbxd.glif new file mode 100644 index 000000000..36e960c8a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnsngrightdblbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnthreeeighthsblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnthreeeighthsblock.glif new file mode 100644 index 000000000..a37427cc2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnthreeeighthsblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnthreequartersblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnthreequartersblock.glif new file mode 100644 index 000000000..dbfedeb5b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dnthreequartersblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dollar.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dollar.a.glif new file mode 100644 index 000000000..04e202439 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dollar.a.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dollar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dollar.glif new file mode 100644 index 000000000..a259d555b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dollar.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dong.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dong.glif new file mode 100644 index 000000000..ccc0a78df --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dong.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotaccent.glif new file mode 100644 index 000000000..afc94cb32 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotaccent.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotaccentcmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotaccentcmb.cap.glif new file mode 100644 index 000000000..0c6d25155 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotaccentcmb.cap.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotaccentcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotaccentcmb.glif new file mode 100644 index 000000000..df13eec54 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotaccentcmb.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotbelowcmb.glif new file mode 100644 index 000000000..09140ce76 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotbelowcmb.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessi.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessi.a.glif new file mode 100644 index 000000000..57920bc62 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessi.a.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessi.glif new file mode 100644 index 000000000..ecec9931e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessi.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessj.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessj.glif new file mode 100644 index 000000000..91d7dd4da --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessj.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessjstroke.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessjstroke.glif new file mode 100644 index 000000000..5e5c46a17 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessjstroke.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessjstrokehook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessjstrokehook.glif new file mode 100644 index 000000000..66d641cc6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dotlessjstrokehook.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/downtackbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/downtackbelowcmb.glif new file mode 100644 index 000000000..77fd73ddb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/downtackbelowcmb.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dtail.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dtail.glif new file mode 100644 index 000000000..efb3a6bd5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dtail.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dze.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dze.glif new file mode 100644 index 000000000..2f3fe1cd0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dze.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/dzhe.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dzhe.glif new file mode 100644 index 000000000..89160a094 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/dzhe.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/e.glif new file mode 100644 index 000000000..7bf1921f4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/e.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/e.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/e.sups.glif new file mode 100644 index 000000000..3122b1849 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/e.sups.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eacute.glif new file mode 100644 index 000000000..ce9b09323 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eacute.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eacute.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eacute.sups.glif new file mode 100644 index 000000000..dd2f17511 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eacute.sups.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ebreve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ebreve.glif new file mode 100644 index 000000000..8cd0403eb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ebreve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecaron.glif new file mode 100644 index 000000000..b4f4de2b7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflex.glif new file mode 100644 index 000000000..65e2df011 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexacute.glif new file mode 100644 index 000000000..1673d3be2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexdotbelow.glif new file mode 100644 index 000000000..e78500750 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexdotbelow.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexgrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexgrave.glif new file mode 100644 index 000000000..cae45e950 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexgrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexhoi.glif new file mode 100644 index 000000000..04797de41 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflexhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflextilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflextilde.glif new file mode 100644 index 000000000..3d69dd802 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecircumflextilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecyr.glif new file mode 100644 index 000000000..6b1a81da0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ecyr.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/edieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/edieresis.glif new file mode 100644 index 000000000..5f4b56502 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/edieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/edotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/edotaccent.glif new file mode 100644 index 000000000..0f37144cd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/edotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/edotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/edotbelow.glif new file mode 100644 index 000000000..2c11dc208 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/edotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ef.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ef.glif new file mode 100644 index 000000000..a2d18b41f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ef.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/egrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/egrave.glif new file mode 100644 index 000000000..ee6fc7f99 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/egrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/egrave.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/egrave.sups.glif new file mode 100644 index 000000000..e45be92eb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/egrave.sups.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ehoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ehoi.glif new file mode 100644 index 000000000..1b6f66138 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ehoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.cap.glif new file mode 100644 index 000000000..d657016b3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.cap.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.dnom.glif new file mode 100644 index 000000000..e611a7b06 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.dnom.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.glif new file mode 100644 index 000000000..fb10691f4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.numr.glif new file mode 100644 index 000000000..edb4e089b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.onum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.onum.glif new file mode 100644 index 000000000..f9cb46735 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.onum.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.subs.glif new file mode 100644 index 000000000..6a417f679 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.subs.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.sups.glif new file mode 100644 index 000000000..80ccfd6dd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eight.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eighthnote.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eighthnote.glif new file mode 100644 index 000000000..5108dffe9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eighthnote.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/el.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/el.glif new file mode 100644 index 000000000..b5ceb3eae --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/el.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ellipsis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ellipsis.glif new file mode 100644 index 000000000..6dc36ab8a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ellipsis.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/em.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/em.glif new file mode 100644 index 000000000..e73a679f4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/em.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/emacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/emacron.glif new file mode 100644 index 000000000..d2c69cc17 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/emacron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/emacronacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/emacronacute.glif new file mode 100644 index 000000000..baa25bf51 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/emacronacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/emdash.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/emdash.glif new file mode 100644 index 000000000..3e18b9d5f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/emdash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/emdash.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/emdash.sups.glif new file mode 100644 index 000000000..306b28098 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/emdash.sups.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/emoji.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/emoji.glif new file mode 100644 index 000000000..047c2ad31 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/emoji.glif @@ -0,0 +1,665 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/en.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/en.glif new file mode 100644 index 000000000..2383bf9cd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/en.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/endash.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/endash.glif new file mode 100644 index 000000000..f3deb4f34 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/endash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/endash.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/endash.sups.glif new file mode 100644 index 000000000..b6a082d46 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/endash.sups.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/endescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/endescender.glif new file mode 100644 index 000000000..2bf13c3d6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/endescender.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eng.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eng.glif new file mode 100644 index 000000000..ab0eb8cf6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eng.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eogonek.glif new file mode 100644 index 000000000..d69caeb46 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eogonek.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eogonek.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eogonek.sups.glif new file mode 100644 index 000000000..9f136b582 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eogonek.sups.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eopen.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eopen.glif new file mode 100644 index 000000000..da8534ccc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eopen.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eopenreversed.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eopenreversed.glif new file mode 100644 index 000000000..5b7204530 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eopenreversed.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eopenreversedclosed.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eopenreversedclosed.glif new file mode 100644 index 000000000..182959098 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eopenreversedclosed.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/epsilon.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/epsilon.glif new file mode 100644 index 000000000..841a16701 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/epsilon.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/epsilontonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/epsilontonos.glif new file mode 100644 index 000000000..57b307487 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/epsilontonos.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/equal.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/equal.glif new file mode 100644 index 000000000..f5f512cbb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/equal.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/equivalence.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/equivalence.glif new file mode 100644 index 000000000..015ea759b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/equivalence.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/er.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/er.glif new file mode 100644 index 000000000..019474f52 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/er.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ereversed.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ereversed.glif new file mode 100644 index 000000000..87578b2e9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ereversed.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/es.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/es.glif new file mode 100644 index 000000000..c4a9aadb8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/es.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/esdescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/esdescender.glif new file mode 100644 index 000000000..cd9b81a40 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/esdescender.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/esh.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/esh.glif new file mode 100644 index 000000000..6ef4303a8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/esh.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/estimated.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/estimated.glif new file mode 100644 index 000000000..73957ae9a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/estimated.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eta.glif new file mode 100644 index 000000000..c9d7e3acc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eta.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/etatonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/etatonos.glif new file mode 100644 index 000000000..2917396e4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/etatonos.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/eth.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eth.glif new file mode 100644 index 000000000..ed02c6f2f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/eth.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/etilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/etilde.glif new file mode 100644 index 000000000..9391c6f12 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/etilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclam.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclam.glif new file mode 100644 index 000000000..380da9abb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclam.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclamdbl.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclamdbl.glif new file mode 100644 index 000000000..79af7521a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclamdbl.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclamdown.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclamdown.glif new file mode 100644 index 000000000..dc0d816c8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclamdown.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclamquestion.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclamquestion.glif new file mode 100644 index 000000000..24e39c403 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/exclamquestion.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/existential.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/existential.glif new file mode 100644 index 000000000..f1b5076f6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/existential.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ezh.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ezh.glif new file mode 100644 index 000000000..ec95a1c44 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ezh.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/f.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/f.glif new file mode 100644 index 000000000..5be1ac4df --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/f.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/f.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/f.sups.glif new file mode 100644 index 000000000..6d1ef2a26 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/f.sups.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/female.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/female.glif new file mode 100644 index 000000000..308e8d7ea --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/female.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/fi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fi.glif new file mode 100644 index 000000000..60e9f1cdd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fi.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/figuredash.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/figuredash.glif new file mode 100644 index 000000000..9340972a1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/figuredash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/figurespace.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/figurespace.glif new file mode 100644 index 000000000..ddc20b280 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/figurespace.glif @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/filledrect.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/filledrect.glif new file mode 100644 index 000000000..9c8c06efe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/filledrect.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/fisheye.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fisheye.glif new file mode 100644 index 000000000..a5033eb78 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fisheye.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/fita.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fita.glif new file mode 100644 index 000000000..95511a463 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fita.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.cap.glif new file mode 100644 index 000000000..749afd0c5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.cap.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.dnom.glif new file mode 100644 index 000000000..32a374df5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.dnom.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.glif new file mode 100644 index 000000000..cc53ed240 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.numr.glif new file mode 100644 index 000000000..82b953e1a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.onum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.onum.glif new file mode 100644 index 000000000..6830d59d4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.onum.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.subs.glif new file mode 100644 index 000000000..851c4a85d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.subs.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.sups.glif new file mode 100644 index 000000000..1137d7808 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/five.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/fiveeighths.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fiveeighths.glif new file mode 100644 index 000000000..3a9207600 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fiveeighths.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/fivesixths.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fivesixths.glif new file mode 100644 index 000000000..473fc4d15 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fivesixths.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/fl.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fl.glif new file mode 100644 index 000000000..cf2665639 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fl.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/floorleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/floorleft.glif new file mode 100644 index 000000000..017fb256b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/floorleft.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/floorright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/floorright.glif new file mode 100644 index 000000000..100d45732 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/floorright.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/florin.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/florin.glif new file mode 100644 index 000000000..00175ca84 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/florin.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.cap.glif new file mode 100644 index 000000000..b2fa7f847 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.cap.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.dnom.glif new file mode 100644 index 000000000..2e616f04d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.dnom.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.glif new file mode 100644 index 000000000..4ff67a246 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.numr.glif new file mode 100644 index 000000000..11c8c856e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.onum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.onum.glif new file mode 100644 index 000000000..48f65f464 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.onum.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.subs.glif new file mode 100644 index 000000000..406d37e35 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.subs.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.sups.glif new file mode 100644 index 000000000..d6acf5a36 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/four.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/fourfifths.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fourfifths.glif new file mode 100644 index 000000000..eb4d5c05b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fourfifths.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/fraction.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fraction.glif new file mode 100644 index 000000000..6129ff396 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fraction.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/franc.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/franc.glif new file mode 100644 index 000000000..e76cd6a49 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/franc.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/fullblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fullblock.glif new file mode 100644 index 000000000..74e9a62a4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/fullblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.a.glif new file mode 100644 index 000000000..0d3d60824 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.a.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.glif new file mode 100644 index 000000000..f22fbb787 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.supa.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.supa.glif new file mode 100644 index 000000000..270f3ff3d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.supa.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.sups.glif new file mode 100644 index 000000000..9175d0057 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/g.sups.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gacute.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gacute.a.glif new file mode 100644 index 000000000..04447ec36 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gacute.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gacute.glif new file mode 100644 index 000000000..c0f4f9c3b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gamma.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gamma.glif new file mode 100644 index 000000000..829e22d16 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gamma.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gammalatin.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gammalatin.glif new file mode 100644 index 000000000..423f15456 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gammalatin.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gammalatinsupmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gammalatinsupmod.glif new file mode 100644 index 000000000..3205d5445 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gammalatinsupmod.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gbreve.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gbreve.a.glif new file mode 100644 index 000000000..0787240a6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gbreve.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gbreve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gbreve.glif new file mode 100644 index 000000000..31ceaa667 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gbreve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcaron.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcaron.a.glif new file mode 100644 index 000000000..b8f76a2c0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcaron.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcaron.glif new file mode 100644 index 000000000..12f2ed09c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcircumflex.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcircumflex.a.glif new file mode 100644 index 000000000..f291514b4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcircumflex.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcircumflex.glif new file mode 100644 index 000000000..4cb72eba1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcommaaccent.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcommaaccent.a.glif new file mode 100644 index 000000000..3c518d76e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcommaaccent.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcommaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcommaaccent.glif new file mode 100644 index 000000000..48dab7eb6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gcommaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gdotaccent.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gdotaccent.a.glif new file mode 100644 index 000000000..34fcfb628 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gdotaccent.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gdotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gdotaccent.glif new file mode 100644 index 000000000..b9eb34f06 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gdotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/germandbls.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/germandbls.glif new file mode 100644 index 000000000..3cf76796a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/germandbls.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ghe.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ghe.glif new file mode 100644 index 000000000..c3aa23a4a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ghe.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ghestroke.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ghestroke.glif new file mode 100644 index 000000000..ff638a467 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ghestroke.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gheup.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gheup.glif new file mode 100644 index 000000000..3f6680d25 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gheup.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ghook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ghook.glif new file mode 100644 index 000000000..80512cef0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ghook.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gje.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gje.glif new file mode 100644 index 000000000..3f4d78b17 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gje.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstop.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstop.glif new file mode 100644 index 000000000..91340f7b6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstop.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopreversed.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopreversed.glif new file mode 100644 index 000000000..463e0af7e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopreversed.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopreversedmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopreversedmod.glif new file mode 100644 index 000000000..5943b3e44 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopreversedmod.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopreversedsupmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopreversedsupmod.glif new file mode 100644 index 000000000..b0235f096 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopreversedsupmod.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopstroke.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopstroke.glif new file mode 100644 index 000000000..e20965dca --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopstroke.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopstrokereversed.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopstrokereversed.glif new file mode 100644 index 000000000..6a161f037 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/glottalstopstrokereversed.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gmacron.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gmacron.a.glif new file mode 100644 index 000000000..7bd243d03 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gmacron.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gmacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gmacron.glif new file mode 100644 index 000000000..2785f0fac --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gmacron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/grave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/grave.glif new file mode 100644 index 000000000..e0fbf3121 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/grave.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gravecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gravecmb.cap.glif new file mode 100644 index 000000000..711b9ef4e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gravecmb.cap.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gravecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gravecmb.glif new file mode 100644 index 000000000..63341ad4d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gravecmb.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gravemod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gravemod.glif new file mode 100644 index 000000000..7efc858f1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gravemod.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/greater.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/greater.glif new file mode 100644 index 000000000..9b8229ce2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/greater.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/greaterequal.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/greaterequal.glif new file mode 100644 index 000000000..bf1e3daaa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/greaterequal.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gscript.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gscript.glif new file mode 100644 index 000000000..0c637a1db --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gscript.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gsmall.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gsmall.glif new file mode 100644 index 000000000..7c0f4a4d4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gsmall.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gtilde.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gtilde.a.glif new file mode 100644 index 000000000..aa954b320 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gtilde.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/gtilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gtilde.glif new file mode 100644 index 000000000..0a3f8e661 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/gtilde.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/guarani.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/guarani.glif new file mode 100644 index 000000000..69d4546a5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/guarani.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/guillemotleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/guillemotleft.glif new file mode 100644 index 000000000..b992ad4c2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/guillemotleft.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/guillemotright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/guillemotright.glif new file mode 100644 index 000000000..991f7f8a6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/guillemotright.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/guilsinglleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/guilsinglleft.glif new file mode 100644 index 000000000..ae6816be5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/guilsinglleft.glif @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/guilsinglright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/guilsinglright.glif new file mode 100644 index 000000000..5cad52c24 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/guilsinglright.glif @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/h.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/h.glif new file mode 100644 index 000000000..21265b556 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/h.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/h.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/h.sups.glif new file mode 100644 index 000000000..3eef6f4b3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/h.sups.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ha.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ha.glif new file mode 100644 index 000000000..2f946c446 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ha.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hadescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hadescender.glif new file mode 100644 index 000000000..6fd05007d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hadescender.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hard.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hard.glif new file mode 100644 index 000000000..3bc296ce2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hard.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hbar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hbar.glif new file mode 100644 index 000000000..29bc80cac --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hbar.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hbrevebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hbrevebelow.glif new file mode 100644 index 000000000..04737011a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hbrevebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hcedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hcedilla.glif new file mode 100644 index 000000000..2e7568fbe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hcedilla.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hcircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hcircumflex.glif new file mode 100644 index 000000000..2e2379812 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hcircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hdieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hdieresis.glif new file mode 100644 index 000000000..c87abb1cb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hdieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hdotbelow.glif new file mode 100644 index 000000000..b2a5b0990 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hdotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heart.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heart.e.glif new file mode 100644 index 000000000..c1980ac2d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heart.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heart.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heart.glif new file mode 100644 index 000000000..29fea7b6d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heart.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heartblackheavy.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heartblackheavy.e.glif new file mode 100644 index 000000000..6c915cecb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heartblackheavy.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heartblackheavy.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heartblackheavy.glif new file mode 100644 index 000000000..77aeb0f4e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heartblackheavy.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydbldashhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydbldashhorzbxd.glif new file mode 100644 index 000000000..e84cfcba0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydbldashhorzbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydbldashvertbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydbldashvertbxd.glif new file mode 100644 index 000000000..d1adce4f8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydbldashvertbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnbxd.glif new file mode 100644 index 000000000..b47a8c748 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnhorzbxd.glif new file mode 100644 index 000000000..10634f6f7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnhorzbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnleftbxd.glif new file mode 100644 index 000000000..85149559b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnleftbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnrightbxd.glif new file mode 100644 index 000000000..a192b6a88 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavydnrightbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyhorzbxd.glif new file mode 100644 index 000000000..cd427bed7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyhorzbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyleftbxd.glif new file mode 100644 index 000000000..ba6bb994c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyleftbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyleftlightrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyleftlightrightbxd.glif new file mode 100644 index 000000000..8a678765c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyleftlightrightbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyquaddashhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyquaddashhorzbxd.glif new file mode 100644 index 000000000..687caadb7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyquaddashhorzbxd.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyquaddashvertbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyquaddashvertbxd.glif new file mode 100644 index 000000000..31ca46562 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyquaddashvertbxd.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyrightbxd.glif new file mode 100644 index 000000000..f287bac75 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyrightbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavytrpldashhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavytrpldashhorzbxd.glif new file mode 100644 index 000000000..d0b458045 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavytrpldashhorzbxd.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavytrpldashvertbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavytrpldashvertbxd.glif new file mode 100644 index 000000000..07faecb8a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavytrpldashvertbxd.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyupbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyupbxd.glif new file mode 100644 index 000000000..8b3717d72 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyupbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyuphorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyuphorzbxd.glif new file mode 100644 index 000000000..1a304483e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyuphorzbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyupleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyupleftbxd.glif new file mode 100644 index 000000000..5a15e2329 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyupleftbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyuplightdnbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyuplightdnbxd.glif new file mode 100644 index 000000000..59b09bd8b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyuplightdnbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyuprightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyuprightbxd.glif new file mode 100644 index 000000000..025172ef3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyuprightbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyvertbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyvertbxd.glif new file mode 100644 index 000000000..806292f22 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyvertbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyverthorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyverthorzbxd.glif new file mode 100644 index 000000000..76392ba57 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyverthorzbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyvertleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyvertleftbxd.glif new file mode 100644 index 000000000..ae123db88 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyvertleftbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyvertrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyvertrightbxd.glif new file mode 100644 index 000000000..e063fa24a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/heavyvertrightbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/henghook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/henghook.glif new file mode 100644 index 000000000..85478da4c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/henghook.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hhook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hhook.glif new file mode 100644 index 000000000..58b595bb1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hhook.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hhook.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hhook.sups.glif new file mode 100644 index 000000000..26cba522f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hhook.sups.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hlinebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hlinebelow.glif new file mode 100644 index 000000000..2db1d31a9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hlinebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hoicmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hoicmb.cap.glif new file mode 100644 index 000000000..094f19b7f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hoicmb.cap.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hoicmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hoicmb.glif new file mode 100644 index 000000000..ef8d9f100 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hoicmb.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hookrhoticmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hookrhoticmod.glif new file mode 100644 index 000000000..cab3eaaf6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hookrhoticmod.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/horizontalbar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/horizontalbar.glif new file mode 100644 index 000000000..1bda9d17d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/horizontalbar.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/horncmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/horncmb.glif new file mode 100644 index 000000000..b9134d41b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/horncmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/house.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/house.glif new file mode 100644 index 000000000..0ccd43db3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/house.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hryvnia.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hryvnia.glif new file mode 100644 index 000000000..618dff6f8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hryvnia.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hsmall.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hsmall.glif new file mode 100644 index 000000000..29e1564f1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hsmall.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hturned.glif new file mode 100644 index 000000000..485b11af0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hturned.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hungarumlaut.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hungarumlaut.glif new file mode 100644 index 000000000..7765c1d7f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hungarumlaut.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hungarumlautcmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hungarumlautcmb.cap.glif new file mode 100644 index 000000000..5d64cf3a4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hungarumlautcmb.cap.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hungarumlautcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hungarumlautcmb.glif new file mode 100644 index 000000000..4f9954d36 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hungarumlautcmb.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphen.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphen.a.glif new file mode 100644 index 000000000..6df4cac26 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphen.a.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphen.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphen.glif new file mode 100644 index 000000000..36f2d43f6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphen.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphen.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphen.sups.glif new file mode 100644 index 000000000..86ee46da0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphen.sups.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphentwo.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphentwo.a.glif new file mode 100644 index 000000000..76219c6fa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphentwo.a.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphentwo.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphentwo.glif new file mode 100644 index 000000000..34cc3d76a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/hyphentwo.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.a.glif new file mode 100644 index 000000000..0cf413d04 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.a.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.glif new file mode 100644 index 000000000..3956750a6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.supa.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.supa.glif new file mode 100644 index 000000000..51e46c09f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.supa.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.sups.glif new file mode 100644 index 000000000..cc6b5c69c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/i.sups.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iacute.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iacute.a.glif new file mode 100644 index 000000000..788d64790 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iacute.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iacute.glif new file mode 100644 index 000000000..2fdc6d3da --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ibreve.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ibreve.a.glif new file mode 100644 index 000000000..c6f66eb08 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ibreve.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ibreve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ibreve.glif new file mode 100644 index 000000000..25c0c75c9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ibreve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/icaron.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/icaron.a.glif new file mode 100644 index 000000000..a03ac06c6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/icaron.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/icaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/icaron.glif new file mode 100644 index 000000000..bc52faa93 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/icaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/icircumflex.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/icircumflex.a.glif new file mode 100644 index 000000000..5135b2c65 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/icircumflex.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/icircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/icircumflex.glif new file mode 100644 index 000000000..003483b2f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/icircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/icyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/icyr.glif new file mode 100644 index 000000000..c37eadcd6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/icyr.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/idieresis.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/idieresis.a.glif new file mode 100644 index 000000000..a590da8c9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/idieresis.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/idieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/idieresis.glif new file mode 100644 index 000000000..f232ea0c5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/idieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/idotbelow.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/idotbelow.a.glif new file mode 100644 index 000000000..7d417451c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/idotbelow.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/idotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/idotbelow.glif new file mode 100644 index 000000000..2825aef0d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/idotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ie.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ie.glif new file mode 100644 index 000000000..acf32ad0a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ie.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iebreve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iebreve.glif new file mode 100644 index 000000000..c977ebb8d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iebreve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iegrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iegrave.glif new file mode 100644 index 000000000..d4a63beba --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iegrave.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ieukran.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ieukran.glif new file mode 100644 index 000000000..4f3cf2989 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ieukran.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/igrave.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/igrave.a.glif new file mode 100644 index 000000000..8240e99cf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/igrave.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/igrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/igrave.glif new file mode 100644 index 000000000..ef3bea15c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/igrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/igravecyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/igravecyr.glif new file mode 100644 index 000000000..00b037d5f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/igravecyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ihoi.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ihoi.a.glif new file mode 100644 index 000000000..9bb381548 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ihoi.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ihoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ihoi.glif new file mode 100644 index 000000000..c2aba5470 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ihoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ij.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ij.glif new file mode 100644 index 000000000..ae91aecea --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ij.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ijacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ijacute.glif new file mode 100644 index 000000000..94c67dff3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ijacute.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/imacron.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/imacron.a.glif new file mode 100644 index 000000000..0ba2fbfa4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/imacron.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/imacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/imacron.glif new file mode 100644 index 000000000..36f340dad --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/imacron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/imacroncyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/imacroncyr.glif new file mode 100644 index 000000000..0bd7c7d18 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/imacroncyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/infinity.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/infinity.glif new file mode 100644 index 000000000..e615b7219 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/infinity.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/integral.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/integral.glif new file mode 100644 index 000000000..34079baf2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/integral.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/integralbt.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/integralbt.glif new file mode 100644 index 000000000..4240c873e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/integralbt.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/integraltp.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/integraltp.glif new file mode 100644 index 000000000..e111b6d41 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/integraltp.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/interrobang.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/interrobang.glif new file mode 100644 index 000000000..00d93d653 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/interrobang.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/interrobangdown.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/interrobangdown.glif new file mode 100644 index 000000000..5ab2dc2cb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/interrobangdown.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/intersection.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/intersection.glif new file mode 100644 index 000000000..777a1fb48 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/intersection.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/invbullet.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/invbullet.glif new file mode 100644 index 000000000..939012540 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/invbullet.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/invcircle.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/invcircle.glif new file mode 100644 index 000000000..6bca14bfe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/invcircle.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/invsmileface.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/invsmileface.e.glif new file mode 100644 index 000000000..6d2f7d6f6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/invsmileface.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/invsmileface.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/invsmileface.glif new file mode 100644 index 000000000..8037218f7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/invsmileface.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/io.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/io.glif new file mode 100644 index 000000000..ce7a1a3c6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/io.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.a.glif new file mode 100644 index 000000000..6a7d7948e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.a.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.d.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.d.glif new file mode 100644 index 000000000..d324586f1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.d.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.da.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.da.glif new file mode 100644 index 000000000..2ae0f1ada --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.da.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.glif new file mode 100644 index 000000000..84b9ddb84 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iogonek.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iota.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iota.glif new file mode 100644 index 000000000..75c352939 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iota.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotaadscript.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotaadscript.glif new file mode 100644 index 000000000..87119324f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotaadscript.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotadieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotadieresis.glif new file mode 100644 index 000000000..0358cce7d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotadieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotadieresistonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotadieresistonos.glif new file mode 100644 index 000000000..5f1a7e8a7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotadieresistonos.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotasubscript.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotasubscript.glif new file mode 100644 index 000000000..a7c58d24b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotasubscript.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotasubscriptcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotasubscriptcmb.glif new file mode 100644 index 000000000..23dfb428c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotasubscriptcmb.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotatonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotatonos.glif new file mode 100644 index 000000000..e34209c3f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iotatonos.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ishort.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ishort.glif new file mode 100644 index 000000000..71bd49591 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ishort.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ismall.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ismall.glif new file mode 100644 index 000000000..4bdf47bfc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ismall.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.a.glif new file mode 100644 index 000000000..d53e463b2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.a.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.d.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.d.glif new file mode 100644 index 000000000..271e9bdc2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.d.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.da.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.da.glif new file mode 100644 index 000000000..05998f522 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.da.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.glif new file mode 100644 index 000000000..46275640a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/istroke.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/itilde.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/itilde.a.glif new file mode 100644 index 000000000..8dd7c311f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/itilde.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/itilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/itilde.glif new file mode 100644 index 000000000..0a4336782 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/itilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iukran.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iukran.a.glif new file mode 100644 index 000000000..dc80ab601 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iukran.a.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/iukran.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iukran.glif new file mode 100644 index 000000000..e1fe87e6e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/iukran.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/izhitsa.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/izhitsa.glif new file mode 100644 index 000000000..ddfef6ade --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/izhitsa.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/j.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/j.glif new file mode 100644 index 000000000..e9f1e9ff4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/j.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/j.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/j.sups.glif new file mode 100644 index 000000000..583bac516 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/j.sups.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/jcircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/jcircumflex.glif new file mode 100644 index 000000000..f2930b8cb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/jcircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/jcrossedtail.d.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/jcrossedtail.d.glif new file mode 100644 index 000000000..4d49967f8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/jcrossedtail.d.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/jcrossedtail.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/jcrossedtail.glif new file mode 100644 index 000000000..07daf51d7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/jcrossedtail.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/je.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/je.glif new file mode 100644 index 000000000..f20b18d6f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/je.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/k.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/k.glif new file mode 100644 index 000000000..dcc7320fc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/k.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/k.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/k.sups.glif new file mode 100644 index 000000000..4968f24ef --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/k.sups.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ka.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ka.glif new file mode 100644 index 000000000..3e5068815 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ka.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/kabashkir.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kabashkir.glif new file mode 100644 index 000000000..e302e911a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kabashkir.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/kadescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kadescender.glif new file mode 100644 index 000000000..2639346ad --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kadescender.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/kai.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kai.glif new file mode 100644 index 000000000..a5719aba9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kai.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/kappa.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kappa.glif new file mode 100644 index 000000000..ee885b608 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kappa.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/kcommaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kcommaaccent.glif new file mode 100644 index 000000000..39b12567c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kcommaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/kdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kdotbelow.glif new file mode 100644 index 000000000..0645f5cdf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kdotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/kgreenlandic.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kgreenlandic.glif new file mode 100644 index 000000000..03ce8b1a1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kgreenlandic.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/kje.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kje.glif new file mode 100644 index 000000000..5356cc9c5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kje.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/klinebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/klinebelow.glif new file mode 100644 index 000000000..b22a2e255 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/klinebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/koppa.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/koppa.glif new file mode 100644 index 000000000..acdbef9d2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/koppa.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/kturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kturned.glif new file mode 100644 index 000000000..4d8cbf3d5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/kturned.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/l.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/l.a.glif new file mode 100644 index 000000000..f4a7897d4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/l.a.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/l.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/l.glif new file mode 100644 index 000000000..7d491bbd9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/l.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/l.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/l.sups.glif new file mode 100644 index 000000000..afad2a0c4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/l.sups.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lacute.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lacute.a.glif new file mode 100644 index 000000000..219ff2e54 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lacute.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lacute.glif new file mode 100644 index 000000000..9e5cd1ec4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lambda.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lambda.glif new file mode 100644 index 000000000..194d6d2a6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lambda.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lbelt.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lbelt.a.glif new file mode 100644 index 000000000..d07067213 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lbelt.a.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lbelt.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lbelt.glif new file mode 100644 index 000000000..6c00046ad --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lbelt.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcaron.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcaron.a.glif new file mode 100644 index 000000000..2443b9e69 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcaron.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcaron.glif new file mode 100644 index 000000000..1ea7a2a0c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcat.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcat.a.glif new file mode 100644 index 000000000..3612d60b1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcat.a.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcat.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcat.glif new file mode 100644 index 000000000..ee7becb0b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcat.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcommaaccent.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcommaaccent.a.glif new file mode 100644 index 000000000..747904d36 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcommaaccent.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcommaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcommaaccent.glif new file mode 100644 index 000000000..593f0956d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lcommaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldot.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldot.a.glif new file mode 100644 index 000000000..fc4bbf8fc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldot.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldot.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldot.glif new file mode 100644 index 000000000..3c78a9919 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldot.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelow.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelow.a.glif new file mode 100644 index 000000000..333f13825 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelow.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelow.glif new file mode 100644 index 000000000..2c0270932 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelowmacron.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelowmacron.a.glif new file mode 100644 index 000000000..0c418fa81 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelowmacron.a.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelowmacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelowmacron.glif new file mode 100644 index 000000000..5a4f8404d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ldotbelowmacron.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftangleabovecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftangleabovecmb.glif new file mode 100644 index 000000000..f283eed7a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftangleabovecmb.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftdnheavyrightuplightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftdnheavyrightuplightbxd.glif new file mode 100644 index 000000000..14da9848c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftdnheavyrightuplightbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lefteighthblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lefteighthblock.glif new file mode 100644 index 000000000..c9be92677 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lefteighthblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftfiveeighthsblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftfiveeighthsblock.glif new file mode 100644 index 000000000..4ff1b09ed --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftfiveeighthsblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lefthalfblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lefthalfblock.glif new file mode 100644 index 000000000..1d2a71fbf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lefthalfblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftheavyrightdnlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftheavyrightdnlightbxd.glif new file mode 100644 index 000000000..2c4737f25 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftheavyrightdnlightbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftheavyrightuplightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftheavyrightuplightbxd.glif new file mode 100644 index 000000000..408f67c6b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftheavyrightuplightbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftheavyrightvertlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftheavyrightvertlightbxd.glif new file mode 100644 index 000000000..d48fe6620 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftheavyrightvertlightbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftlightrightdnheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftlightrightdnheavybxd.glif new file mode 100644 index 000000000..f798a3f4c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftlightrightdnheavybxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftlightrightupheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftlightrightupheavybxd.glif new file mode 100644 index 000000000..f601bf229 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftlightrightupheavybxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftlightrightvertheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftlightrightvertheavybxd.glif new file mode 100644 index 000000000..577eded74 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftlightrightvertheavybxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftquarterblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftquarterblock.glif new file mode 100644 index 000000000..f285408bb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftquarterblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftseveneighthsblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftseveneighthsblock.glif new file mode 100644 index 000000000..dd2e91016 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftseveneighthsblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lefttackbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lefttackbelowcmb.glif new file mode 100644 index 000000000..11991473f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lefttackbelowcmb.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftthreeeighthsblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftthreeeighthsblock.glif new file mode 100644 index 000000000..d17dcb6a0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftthreeeighthsblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftthreequartersblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftthreequartersblock.glif new file mode 100644 index 000000000..5c63fad01 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftthreequartersblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftupheavyrightdnlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftupheavyrightdnlightbxd.glif new file mode 100644 index 000000000..7ae50445d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leftupheavyrightdnlightbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenis.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenis.cap.glif new file mode 100644 index 000000000..2c06479fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenis.cap.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenis.glif new file mode 100644 index 000000000..390947ce9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenis.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisacute.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisacute.cap.glif new file mode 100644 index 000000000..ab3660f58 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisacute.cap.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisacute.glif new file mode 100644 index 000000000..d4736c30e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisacute.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisacutecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisacutecmb.glif new file mode 100644 index 000000000..efe923fcb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisacutecmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/leniscmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leniscmb.glif new file mode 100644 index 000000000..2a8ba2c7e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/leniscmb.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisgrave.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisgrave.cap.glif new file mode 100644 index 000000000..74b6186ee --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisgrave.cap.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisgrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisgrave.glif new file mode 100644 index 000000000..b30434932 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisgrave.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisgravecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisgravecmb.glif new file mode 100644 index 000000000..8b7547b72 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenisgravecmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenistilde.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenistilde.cap.glif new file mode 100644 index 000000000..c61473c7f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenistilde.cap.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenistilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenistilde.glif new file mode 100644 index 000000000..741b25246 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenistilde.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenistildecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenistildecmb.glif new file mode 100644 index 000000000..81cf7df27 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lenistildecmb.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/less.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/less.glif new file mode 100644 index 000000000..ba66a204a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/less.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lessequal.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lessequal.glif new file mode 100644 index 000000000..8c7c744b6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lessequal.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lezh.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lezh.glif new file mode 100644 index 000000000..31b6f2cba --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lezh.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcdnleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcdnleftbxd.glif new file mode 100644 index 000000000..883ce8603 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcdnleftbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcdnrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcdnrightbxd.glif new file mode 100644 index 000000000..dacd0b578 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcdnrightbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcupleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcupleftbxd.glif new file mode 100644 index 000000000..d2b4ed962 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcupleftbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcuprightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcuprightbxd.glif new file mode 100644 index 000000000..745879ea8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightarcuprightbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdbldashhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdbldashhorzbxd.glif new file mode 100644 index 000000000..e1eccf0a4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdbldashhorzbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdbldashvertbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdbldashvertbxd.glif new file mode 100644 index 000000000..5cfd55432 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdbldashvertbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdiagcrossbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdiagcrossbxd.glif new file mode 100644 index 000000000..2ec8996df --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdiagcrossbxd.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdiagupleftdnrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdiagupleftdnrightbxd.glif new file mode 100644 index 000000000..72101c584 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdiagupleftdnrightbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdiaguprightdnleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdiaguprightdnleftbxd.glif new file mode 100644 index 000000000..20686e36f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdiaguprightdnleftbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnbxd.glif new file mode 100644 index 000000000..9dfcacfe2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnhorzbxd.glif new file mode 100644 index 000000000..0bab68893 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnhorzbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnleftbxd.glif new file mode 100644 index 000000000..2cf3cd54b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnleftbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnrightbxd.glif new file mode 100644 index 000000000..dbe8d71ba --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightdnrightbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lighthorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lighthorzbxd.glif new file mode 100644 index 000000000..14ad4f430 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lighthorzbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightleftbxd.glif new file mode 100644 index 000000000..690f329bd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightleftbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightleftheavyrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightleftheavyrightbxd.glif new file mode 100644 index 000000000..d3a75231c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightleftheavyrightbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightquaddashhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightquaddashhorzbxd.glif new file mode 100644 index 000000000..de528067f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightquaddashhorzbxd.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightquaddashvertbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightquaddashvertbxd.glif new file mode 100644 index 000000000..3a98ed7e7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightquaddashvertbxd.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightrightbxd.glif new file mode 100644 index 000000000..75c7a42b9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightrightbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightshade.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightshade.glif new file mode 100644 index 000000000..037e51e53 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightshade.glif @@ -0,0 +1,595 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lighttrpldashhorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lighttrpldashhorzbxd.glif new file mode 100644 index 000000000..c0db98b01 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lighttrpldashhorzbxd.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lighttrpldashvertbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lighttrpldashvertbxd.glif new file mode 100644 index 000000000..ed373547d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lighttrpldashvertbxd.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightupbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightupbxd.glif new file mode 100644 index 000000000..3222662a1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightupbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightupheavydnbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightupheavydnbxd.glif new file mode 100644 index 000000000..e59661629 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightupheavydnbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightuphorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightuphorzbxd.glif new file mode 100644 index 000000000..eba0f99d3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightuphorzbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightupleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightupleftbxd.glif new file mode 100644 index 000000000..3ad16adc5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightupleftbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightuprightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightuprightbxd.glif new file mode 100644 index 000000000..2b9ff2305 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightuprightbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightvertbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightvertbxd.glif new file mode 100644 index 000000000..3be1f1cb9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightvertbxd.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightverthorzbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightverthorzbxd.glif new file mode 100644 index 000000000..2388e114e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightverthorzbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightvertleftbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightvertleftbxd.glif new file mode 100644 index 000000000..85e4e2bf3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightvertleftbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightvertrightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightvertrightbxd.glif new file mode 100644 index 000000000..336768401 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lightvertrightbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lira.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lira.glif new file mode 100644 index 000000000..7d85256de --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lira.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/liraturkish.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/liraturkish.glif new file mode 100644 index 000000000..dc2c328ac --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/liraturkish.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/litre.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/litre.glif new file mode 100644 index 000000000..a22cf5185 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/litre.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lje.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lje.glif new file mode 100644 index 000000000..de7e20b81 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lje.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/llinebelow.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/llinebelow.a.glif new file mode 100644 index 000000000..e14113904 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/llinebelow.a.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/llinebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/llinebelow.glif new file mode 100644 index 000000000..5b5ec986d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/llinebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lmiddletilde.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lmiddletilde.a.glif new file mode 100644 index 000000000..c3ec886aa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lmiddletilde.a.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lmiddletilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lmiddletilde.glif new file mode 100644 index 000000000..9e61bbe91 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lmiddletilde.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lock.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lock.e.glif new file mode 100644 index 000000000..daf8f9955 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lock.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lock.glif new file mode 100644 index 000000000..e0d658477 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lock.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/logicalnot.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/logicalnot.glif new file mode 100644 index 000000000..32e976d89 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/logicalnot.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/longs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/longs.glif new file mode 100644 index 000000000..9606f242d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/longs.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lownumeralsign.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lownumeralsign.glif new file mode 100644 index 000000000..870b21c87 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lownumeralsign.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lozenge.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lozenge.glif new file mode 100644 index 000000000..5c0d05029 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lozenge.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lretroflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lretroflex.glif new file mode 100644 index 000000000..685c6a73d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lretroflex.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lslash.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lslash.a.glif new file mode 100644 index 000000000..92e1eca21 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lslash.a.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lslash.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lslash.glif new file mode 100644 index 000000000..0eae22d90 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lslash.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/lsmall.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lsmall.glif new file mode 100644 index 000000000..e3afa4a29 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/lsmall.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/m.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/m.glif new file mode 100644 index 000000000..f4354c6eb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/m.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/m.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/m.sups.glif new file mode 100644 index 000000000..39d7f86ea --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/m.sups.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/macron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macron.glif new file mode 100644 index 000000000..ed468d3c5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macron.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronacutecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronacutecmb.cap.glif new file mode 100644 index 000000000..edf175b53 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronacutecmb.cap.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronacutecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronacutecmb.glif new file mode 100644 index 000000000..db964138b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronacutecmb.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronbelowcmb.glif new file mode 100644 index 000000000..f010e4221 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronbelowcmb.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/macroncmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macroncmb.cap.glif new file mode 100644 index 000000000..178b0d7d1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macroncmb.cap.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/macroncmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macroncmb.glif new file mode 100644 index 000000000..07b12e4fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macroncmb.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/macrondoublebelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macrondoublebelowcmb.glif new file mode 100644 index 000000000..5f6a6c3ce --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macrondoublebelowcmb.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronmod.glif new file mode 100644 index 000000000..660fe2caf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macronmod.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/macute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macute.glif new file mode 100644 index 000000000..fd81ed286 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/macute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/male.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/male.glif new file mode 100644 index 000000000..5ffc76070 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/male.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/mdotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mdotaccent.glif new file mode 100644 index 000000000..c383fcd57 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mdotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/mdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mdotbelow.glif new file mode 100644 index 000000000..8e91a8481 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mdotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/mediumshade.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mediumshade.glif new file mode 100644 index 000000000..dd60831a3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mediumshade.glif @@ -0,0 +1,595 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/mhook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mhook.glif new file mode 100644 index 000000000..cb9e8d7fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mhook.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/minus.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/minus.glif new file mode 100644 index 000000000..d803ea7b4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/minus.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/minusbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/minusbelowcmb.glif new file mode 100644 index 000000000..eb7760c3d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/minusbelowcmb.glif @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/mlonglegturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mlonglegturned.glif new file mode 100644 index 000000000..b14cb3213 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mlonglegturned.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/mturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mturned.glif new file mode 100644 index 000000000..af0f235ee --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mturned.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/mu.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mu.glif new file mode 100644 index 000000000..3b0d8f0c1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mu.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/mu.math.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mu.math.glif new file mode 100644 index 000000000..734e8cf82 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/mu.math.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/multiply.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/multiply.glif new file mode 100644 index 000000000..f6886e971 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/multiply.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/musicalnotedbl.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/musicalnotedbl.glif new file mode 100644 index 000000000..f301cb748 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/musicalnotedbl.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/n.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/n.glif new file mode 100644 index 000000000..332a5f04e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/n.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/n.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/n.sups.glif new file mode 100644 index 000000000..d64fe7c91 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/n.sups.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nacute.glif new file mode 100644 index 000000000..fca944dca --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/naira.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/naira.glif new file mode 100644 index 000000000..9e3d43699 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/naira.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/napostrophe.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/napostrophe.glif new file mode 100644 index 000000000..2b9b17022 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/napostrophe.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nbspace.frac.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nbspace.frac.glif new file mode 100644 index 000000000..8a6a1a686 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nbspace.frac.glif @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nbspace.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nbspace.glif new file mode 100644 index 000000000..540fd40c2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nbspace.glif @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ncaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ncaron.glif new file mode 100644 index 000000000..55db207eb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ncaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ncommaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ncommaaccent.glif new file mode 100644 index 000000000..0c8495c94 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ncommaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ndotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ndotaccent.glif new file mode 100644 index 000000000..81b8679dd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ndotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ndotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ndotbelow.glif new file mode 100644 index 000000000..740246ed9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ndotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ngrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ngrave.glif new file mode 100644 index 000000000..5264001d2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ngrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nhookleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nhookleft.glif new file mode 100644 index 000000000..b23db968f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nhookleft.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.cap.glif new file mode 100644 index 000000000..d3c309b43 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.cap.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.dnom.glif new file mode 100644 index 000000000..ea8cd2201 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.dnom.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.glif new file mode 100644 index 000000000..30dbd3c49 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.numr.glif new file mode 100644 index 000000000..c26eb0b82 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.onum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.onum.glif new file mode 100644 index 000000000..9ff35ebe7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.onum.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.subs.glif new file mode 100644 index 000000000..6e40ff609 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.subs.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.sups.glif new file mode 100644 index 000000000..5556066a7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nine.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nje.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nje.glif new file mode 100644 index 000000000..14fdf9128 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nje.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nlinebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nlinebelow.glif new file mode 100644 index 000000000..04663736c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nlinebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/notemusical.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/notemusical.e.glif new file mode 100644 index 000000000..e2d2250fd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/notemusical.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/notemusical.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/notemusical.glif new file mode 100644 index 000000000..f5e272550 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/notemusical.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/notequal.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/notequal.glif new file mode 100644 index 000000000..acef0fb88 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/notequal.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/notesmusical.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/notesmusical.e.glif new file mode 100644 index 000000000..67e1dcd60 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/notesmusical.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/notesmusical.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/notesmusical.glif new file mode 100644 index 000000000..9303081db --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/notesmusical.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nretroflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nretroflex.glif new file mode 100644 index 000000000..0330e731e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nretroflex.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nsmall.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nsmall.glif new file mode 100644 index 000000000..44c28f1de --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nsmall.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ntilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ntilde.glif new file mode 100644 index 000000000..6e721c237 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ntilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/nu.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nu.glif new file mode 100644 index 000000000..eb60e9e41 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/nu.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/numbersign.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/numbersign.glif new file mode 100644 index 000000000..85845f7af --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/numbersign.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/numeralsign.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/numeralsign.glif new file mode 100644 index 000000000..d30c718e1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/numeralsign.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/numero.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/numero.glif new file mode 100644 index 000000000..19ea0c6f8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/numero.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/o.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/o.glif new file mode 100644 index 000000000..9b7f71d60 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/o.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/o.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/o.sups.glif new file mode 100644 index 000000000..49793ea33 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/o.sups.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oacute.glif new file mode 100644 index 000000000..2141894c1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/obar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/obar.glif new file mode 100644 index 000000000..33d64a8e0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/obar.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/obarcyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/obarcyr.glif new file mode 100644 index 000000000..1ace37512 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/obarcyr.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/obreve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/obreve.glif new file mode 100644 index 000000000..9ecdd3164 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/obreve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocaron.glif new file mode 100644 index 000000000..bc4bd66a4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflex.glif new file mode 100644 index 000000000..a75f312ee --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexacute.glif new file mode 100644 index 000000000..3743c4f8a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexdotbelow.glif new file mode 100644 index 000000000..385c9b46b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexdotbelow.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexgrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexgrave.glif new file mode 100644 index 000000000..4151e378e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexgrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexhoi.glif new file mode 100644 index 000000000..a914ff94c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflexhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflextilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflextilde.glif new file mode 100644 index 000000000..e1bf6c9d3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocircumflextilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocyr.glif new file mode 100644 index 000000000..e9a261b67 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ocyr.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/odieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/odieresis.glif new file mode 100644 index 000000000..0d635d2bb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/odieresis.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/odieresiscyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/odieresiscyr.glif new file mode 100644 index 000000000..a174a887e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/odieresiscyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/odotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/odotbelow.glif new file mode 100644 index 000000000..739796efd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/odotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oe.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oe.glif new file mode 100644 index 000000000..8bf18ffdc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oe.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oesmall.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oesmall.glif new file mode 100644 index 000000000..51bee3133 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oesmall.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ogonek.glif new file mode 100644 index 000000000..3730f2240 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ogonek.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ogonekcmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ogonekcmb.cap.glif new file mode 100644 index 000000000..fded9f1ad --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ogonekcmb.cap.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ogonekcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ogonekcmb.glif new file mode 100644 index 000000000..dc8f42ab0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ogonekcmb.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ograve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ograve.glif new file mode 100644 index 000000000..73e13ebbe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ograve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohoi.glif new file mode 100644 index 000000000..ac4c37812 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorn.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorn.glif new file mode 100644 index 000000000..93e18feac --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorn.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohornacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohornacute.glif new file mode 100644 index 000000000..f1feb5302 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohornacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorndotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorndotbelow.glif new file mode 100644 index 000000000..f258906da --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorndotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorngrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorngrave.glif new file mode 100644 index 000000000..ea110f626 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorngrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohornhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohornhoi.glif new file mode 100644 index 000000000..9488d92a7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohornhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorntilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorntilde.glif new file mode 100644 index 000000000..e623e370a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohorntilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohungarumlaut.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohungarumlaut.glif new file mode 100644 index 000000000..5448c97a1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ohungarumlaut.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/omacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omacron.glif new file mode 100644 index 000000000..c49465721 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omacron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/omacronacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omacronacute.glif new file mode 100644 index 000000000..774339154 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omacronacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/omega.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omega.glif new file mode 100644 index 000000000..578608a21 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omega.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/omegatonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omegatonos.glif new file mode 100644 index 000000000..ebc77da41 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omegatonos.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/omicron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omicron.glif new file mode 100644 index 000000000..db558d853 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omicron.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/omicrontonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omicrontonos.glif new file mode 100644 index 000000000..4041ee44a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/omicrontonos.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.a.glif new file mode 100644 index 000000000..b6c414b7d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.a.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.ac.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.ac.glif new file mode 100644 index 000000000..606a01430 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.ac.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.ao.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.ao.glif new file mode 100644 index 000000000..d4e415146 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.ao.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.cap.glif new file mode 100644 index 000000000..65902210d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.cap.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.dnom.glif new file mode 100644 index 000000000..c0444c6bd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.dnom.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.glif new file mode 100644 index 000000000..9c4224cdb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.numr.glif new file mode 100644 index 000000000..d5dcc85c7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.onum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.onum.glif new file mode 100644 index 000000000..f06968113 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.onum.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.subs.glif new file mode 100644 index 000000000..01ebce458 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.subs.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.sups.glif new file mode 100644 index 000000000..207a18bb5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/one.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oneeighth.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oneeighth.glif new file mode 100644 index 000000000..5bf6219da --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oneeighth.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/onefifth.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onefifth.glif new file mode 100644 index 000000000..38709f203 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onefifth.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/onehalf.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onehalf.glif new file mode 100644 index 000000000..9a62d6f6f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onehalf.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oneninth.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oneninth.glif new file mode 100644 index 000000000..e8c284632 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oneninth.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/onequarter.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onequarter.glif new file mode 100644 index 000000000..b47fefee9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onequarter.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oneseventh.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oneseventh.glif new file mode 100644 index 000000000..a39f75ea9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oneseventh.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/onesixth.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onesixth.glif new file mode 100644 index 000000000..294ec3849 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onesixth.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/onetenth.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onetenth.glif new file mode 100644 index 000000000..2cd1df968 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onetenth.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/onethird.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onethird.glif new file mode 100644 index 000000000..9191888a8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/onethird.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oogonek.glif new file mode 100644 index 000000000..d2f5ed185 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oogonek.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oopen.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oopen.glif new file mode 100644 index 000000000..8ceb0802e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oopen.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ordfeminine.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ordfeminine.a.glif new file mode 100644 index 000000000..a4f037626 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ordfeminine.a.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ordfeminine.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ordfeminine.glif new file mode 100644 index 000000000..7b0309cef --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ordfeminine.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ordmasculine.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ordmasculine.glif new file mode 100644 index 000000000..f535417c5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ordmasculine.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/orthogonal.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/orthogonal.glif new file mode 100644 index 000000000..656ad38fa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/orthogonal.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oslash.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oslash.glif new file mode 100644 index 000000000..b7e7b186a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oslash.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oslashacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oslashacute.glif new file mode 100644 index 000000000..da19e9144 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oslashacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/otilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/otilde.glif new file mode 100644 index 000000000..958529083 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/otilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/overline.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/overline.glif new file mode 100644 index 000000000..14acf02b2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/overline.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/overlinecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/overlinecmb.cap.glif new file mode 100644 index 000000000..689c6a2b1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/overlinecmb.cap.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/overlinecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/overlinecmb.glif new file mode 100644 index 000000000..8ded65c39 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/overlinecmb.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oxia.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oxia.cap.glif new file mode 100644 index 000000000..be9c76492 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oxia.cap.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/oxia.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oxia.glif new file mode 100644 index 000000000..f98ff6d18 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/oxia.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/p.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/p.glif new file mode 100644 index 000000000..087a3cb5f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/p.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/p.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/p.sups.glif new file mode 100644 index 000000000..f988cd70e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/p.sups.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/palochka.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/palochka.a.glif new file mode 100644 index 000000000..902120f99 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/palochka.a.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/palochka.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/palochka.glif new file mode 100644 index 000000000..cc884afa0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/palochka.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/paragraph.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/paragraph.glif new file mode 100644 index 000000000..d0b30d41e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/paragraph.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.dnom.glif new file mode 100644 index 000000000..9b1a7abb3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.dnom.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.glif new file mode 100644 index 000000000..1690dd26f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.numr.glif new file mode 100644 index 000000000..1d6922f18 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.subs.glif new file mode 100644 index 000000000..0d356921c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.subs.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.sups.glif new file mode 100644 index 000000000..06a5a84ed --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenleft.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.dnom.glif new file mode 100644 index 000000000..3b54af310 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.dnom.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.glif new file mode 100644 index 000000000..eeede0ce4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.numr.glif new file mode 100644 index 000000000..0955add84 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.subs.glif new file mode 100644 index 000000000..cb0ec2dca --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.subs.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.sups.glif new file mode 100644 index 000000000..650ba4a62 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/parenright.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/partialdiff.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/partialdiff.glif new file mode 100644 index 000000000..a4dd82432 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/partialdiff.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/pe.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/pe.glif new file mode 100644 index 000000000..76bfec935 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/pe.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/percent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/percent.glif new file mode 100644 index 000000000..f33f0a44d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/percent.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.dnom.glif new file mode 100644 index 000000000..b07215bce --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.dnom.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.glif new file mode 100644 index 000000000..79423b89a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.numr.glif new file mode 100644 index 000000000..cc9e8efbb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.subs.glif new file mode 100644 index 000000000..00bf0b209 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.subs.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.sups.glif new file mode 100644 index 000000000..910b13a91 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/period.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/periodcentered.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/periodcentered.glif new file mode 100644 index 000000000..751eccd0d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/periodcentered.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/perispomeni.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/perispomeni.glif new file mode 100644 index 000000000..b65d275de --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/perispomeni.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/perispomenicmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/perispomenicmb.cap.glif new file mode 100644 index 000000000..ee8b2d10f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/perispomenicmb.cap.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/perispomenicmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/perispomenicmb.glif new file mode 100644 index 000000000..3eea6180f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/perispomenicmb.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/perthousand.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/perthousand.glif new file mode 100644 index 000000000..b791761f4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/perthousand.glif @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/peseta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/peseta.glif new file mode 100644 index 000000000..7a9d368f8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/peseta.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/peso.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/peso.glif new file mode 100644 index 000000000..26f8acacf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/peso.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/phi.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/phi.a.glif new file mode 100644 index 000000000..e11d451f8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/phi.a.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/phi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/phi.glif new file mode 100644 index 000000000..430103691 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/phi.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/phi.math.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/phi.math.glif new file mode 100644 index 000000000..60da1d476 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/phi.math.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/philatin.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/philatin.glif new file mode 100644 index 000000000..739af2b56 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/philatin.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/pi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/pi.glif new file mode 100644 index 000000000..973dc72a4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/pi.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/plus.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/plus.glif new file mode 100644 index 000000000..cd991ed22 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/plus.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/plusbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/plusbelowcmb.glif new file mode 100644 index 000000000..650c9ebc8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/plusbelowcmb.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/plusminus.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/plusminus.glif new file mode 100644 index 000000000..b2651bf76 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/plusminus.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/pointerblackleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/pointerblackleft.glif new file mode 100644 index 000000000..3873bc60c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/pointerblackleft.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/pointerblackright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/pointerblackright.glif new file mode 100644 index 000000000..f34682fb6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/pointerblackright.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/poop.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/poop.e.glif new file mode 100644 index 000000000..a1536d18e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/poop.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/poop.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/poop.glif new file mode 100644 index 000000000..ad2477130 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/poop.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/prime.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/prime.glif new file mode 100644 index 000000000..8bd994a3f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/prime.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/primemod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/primemod.glif new file mode 100644 index 000000000..42967fc1a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/primemod.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/primereversed.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/primereversed.glif new file mode 100644 index 000000000..8af40c6d1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/primereversed.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/product.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/product.glif new file mode 100644 index 000000000..d44fa32e7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/product.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/proportion.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/proportion.glif new file mode 100644 index 000000000..2b39a9cc2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/proportion.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/psi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/psi.glif new file mode 100644 index 000000000..c83ec1e2a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/psi.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/psili.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/psili.glif new file mode 100644 index 000000000..4d7cc2535 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/psili.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/q.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/q.glif new file mode 100644 index 000000000..e6e90cd1b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/q.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/q.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/q.sups.glif new file mode 100644 index 000000000..dbfd83188 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/q.sups.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/question.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/question.glif new file mode 100644 index 000000000..a5ced52a7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/question.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/questiondbl.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/questiondbl.glif new file mode 100644 index 000000000..f842fd12d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/questiondbl.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/questiondown.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/questiondown.glif new file mode 100644 index 000000000..d8858ed4c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/questiondown.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/questionexclam.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/questionexclam.glif new file mode 100644 index 000000000..3a9217cf0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/questionexclam.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/questiongreek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/questiongreek.glif new file mode 100644 index 000000000..05bd27575 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/questiongreek.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedbl.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedbl.glif new file mode 100644 index 000000000..7f7a37c1a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedbl.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedblbase.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedblbase.glif new file mode 100644 index 000000000..544691a82 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedblbase.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedblleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedblleft.glif new file mode 100644 index 000000000..56e688c11 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedblleft.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedblright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedblright.glif new file mode 100644 index 000000000..b293f0c04 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotedblright.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/quoteleft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quoteleft.glif new file mode 100644 index 000000000..9c3b3b3c6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quoteleft.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotereversed.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotereversed.glif new file mode 100644 index 000000000..bea66e9aa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotereversed.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/quoteright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quoteright.glif new file mode 100644 index 000000000..dc5dba2a7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quoteright.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotesinglbase.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotesinglbase.glif new file mode 100644 index 000000000..aedf86e78 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotesinglbase.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotesingle.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotesingle.glif new file mode 100644 index 000000000..bfb5de60b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/quotesingle.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/r.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/r.glif new file mode 100644 index 000000000..2c1108497 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/r.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/r.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/r.sups.glif new file mode 100644 index 000000000..49407c9e3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/r.sups.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/racute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/racute.glif new file mode 100644 index 000000000..4fc547310 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/racute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/radical.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/radical.glif new file mode 100644 index 000000000..decc7f40c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/radical.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ramshorn.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ramshorn.glif new file mode 100644 index 000000000..e732895d0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ramshorn.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rcaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rcaron.glif new file mode 100644 index 000000000..184187965 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rcaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rcommaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rcommaaccent.glif new file mode 100644 index 000000000..3b689c81a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rcommaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rdotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rdotaccent.glif new file mode 100644 index 000000000..ff762dd29 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rdotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rdotbelow.glif new file mode 100644 index 000000000..52ed34e6d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rdotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rdotbelowmacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rdotbelowmacron.glif new file mode 100644 index 000000000..f65838404 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rdotbelowmacron.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/registered.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/registered.glif new file mode 100644 index 000000000..a1fc8b3b0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/registered.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/revlogicalnot.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/revlogicalnot.glif new file mode 100644 index 000000000..e358a5a82 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/revlogicalnot.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rfishhook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rfishhook.glif new file mode 100644 index 000000000..6eedf89ae --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rfishhook.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rho.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rho.glif new file mode 100644 index 000000000..ec38ceaad --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rho.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rhookturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rhookturned.glif new file mode 100644 index 000000000..af7b4bab8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rhookturned.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightdnheavyleftuplightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightdnheavyleftuplightbxd.glif new file mode 100644 index 000000000..b646d1a8b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightdnheavyleftuplightbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/righteighthblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/righteighthblock.glif new file mode 100644 index 000000000..b368c5d0f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/righteighthblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/righthalfblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/righthalfblock.glif new file mode 100644 index 000000000..2e3ac480a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/righthalfblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightheavyleftdnlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightheavyleftdnlightbxd.glif new file mode 100644 index 000000000..01d76a628 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightheavyleftdnlightbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightheavyleftuplightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightheavyleftuplightbxd.glif new file mode 100644 index 000000000..47c9f28a3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightheavyleftuplightbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightheavyleftvertlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightheavyleftvertlightbxd.glif new file mode 100644 index 000000000..bc53276ba --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightheavyleftvertlightbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightlightleftdnheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightlightleftdnheavybxd.glif new file mode 100644 index 000000000..5fa1b49c4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightlightleftdnheavybxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightlightleftupheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightlightleftupheavybxd.glif new file mode 100644 index 000000000..828e2bbd4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightlightleftupheavybxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightlightleftvertheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightlightleftvertheavybxd.glif new file mode 100644 index 000000000..450551e59 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightlightleftvertheavybxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/righttackbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/righttackbelowcmb.glif new file mode 100644 index 000000000..21835c0b5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/righttackbelowcmb.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightupheavyleftdnlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightupheavyleftdnlightbxd.glif new file mode 100644 index 000000000..d47aa92cd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rightupheavyleftdnlightbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ring.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ring.glif new file mode 100644 index 000000000..351505f79 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ring.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringbelowcmb.glif new file mode 100644 index 000000000..8e63593e1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringbelowcmb.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringcmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringcmb.cap.glif new file mode 100644 index 000000000..f5874157e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringcmb.cap.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringcmb.glif new file mode 100644 index 000000000..a319723c8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringcmb.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfleftbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfleftbelowcmb.glif new file mode 100644 index 000000000..8adb9b1b7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfleftbelowcmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfleftmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfleftmod.glif new file mode 100644 index 000000000..163369598 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfleftmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfrightbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfrightbelowcmb.glif new file mode 100644 index 000000000..841a637c9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfrightbelowcmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfrightmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfrightmod.glif new file mode 100644 index 000000000..2fc36b740 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ringhalfrightmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rlinebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rlinebelow.glif new file mode 100644 index 000000000..6fd8e070e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rlinebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rlonglegturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rlonglegturned.glif new file mode 100644 index 000000000..df5359fa1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rlonglegturned.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/robot.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/robot.e.glif new file mode 100644 index 000000000..a439bff94 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/robot.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/robot.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/robot.glif new file mode 100644 index 000000000..7868db3e0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/robot.glif @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rsmall.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rsmall.glif new file mode 100644 index 000000000..790bafce4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rsmall.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rsmallinverted.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rsmallinverted.glif new file mode 100644 index 000000000..44a2c71d7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rsmallinverted.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rtail.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rtail.glif new file mode 100644 index 000000000..0510983da --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rtail.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rturned.glif new file mode 100644 index 000000000..3484c94df --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rturned.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ruble.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ruble.glif new file mode 100644 index 000000000..4ef4f425e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ruble.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/rupeeindian.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rupeeindian.glif new file mode 100644 index 000000000..5994299ab --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/rupeeindian.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/s.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/s.glif new file mode 100644 index 000000000..f3b9d64e0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/s.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/s.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/s.sups.glif new file mode 100644 index 000000000..75c9837cc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/s.sups.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sacute.glif new file mode 100644 index 000000000..b0161cc08 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sampi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sampi.glif new file mode 100644 index 000000000..d529749c9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sampi.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/scaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/scaron.glif new file mode 100644 index 000000000..24af301cd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/scaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/scarondot.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/scarondot.glif new file mode 100644 index 000000000..f7776a7e3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/scarondot.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/scedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/scedilla.glif new file mode 100644 index 000000000..03fb1ef1d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/scedilla.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwa.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwa.glif new file mode 100644 index 000000000..1e0696c70 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwa.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwa.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwa.sups.glif new file mode 100644 index 000000000..6beb8fe5e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwa.sups.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwacyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwacyr.glif new file mode 100644 index 000000000..beb20eb9e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwacyr.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwahookrhotic.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwahookrhotic.glif new file mode 100644 index 000000000..3e828d5d2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/schwahookrhotic.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/scircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/scircumflex.glif new file mode 100644 index 000000000..cac4272fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/scircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/scommaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/scommaaccent.glif new file mode 100644 index 000000000..5029ee990 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/scommaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sdotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sdotaccent.glif new file mode 100644 index 000000000..f848efdda --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sdotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sdotbelow.glif new file mode 100644 index 000000000..568adc92d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sdotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/seagullbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seagullbelowcmb.glif new file mode 100644 index 000000000..a14c57f0a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seagullbelowcmb.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/section.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/section.glif new file mode 100644 index 000000000..26869741e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/section.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/semicolon.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/semicolon.glif new file mode 100644 index 000000000..73f789620 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/semicolon.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/servicemark.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/servicemark.glif new file mode 100644 index 000000000..afdff2e82 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/servicemark.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.cap.glif new file mode 100644 index 000000000..08b0eb619 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.cap.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.dnom.glif new file mode 100644 index 000000000..4dffc0911 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.dnom.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.glif new file mode 100644 index 000000000..af57e1b3c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.numr.glif new file mode 100644 index 000000000..64a3f0cbf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.onum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.onum.glif new file mode 100644 index 000000000..dccbe34ff --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.onum.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.subs.glif new file mode 100644 index 000000000..625dc0a11 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.subs.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.sups.glif new file mode 100644 index 000000000..53875ebae --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seven.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/seveneighths.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seveneighths.glif new file mode 100644 index 000000000..22167a8fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/seveneighths.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sfthyphen.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sfthyphen.a.glif new file mode 100644 index 000000000..4d74deb9a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sfthyphen.a.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sfthyphen.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sfthyphen.glif new file mode 100644 index 000000000..53f1a6f6c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sfthyphen.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sha.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sha.glif new file mode 100644 index 000000000..d87df7272 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sha.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/shcha.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/shcha.glif new file mode 100644 index 000000000..d82f02c5c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/shcha.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/shha.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/shha.glif new file mode 100644 index 000000000..32abb0baa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/shha.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/shook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/shook.glif new file mode 100644 index 000000000..819f7f543 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/shook.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sigma.end.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sigma.end.glif new file mode 100644 index 000000000..8cc597d1f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sigma.end.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sigma.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sigma.glif new file mode 100644 index 000000000..d7e6b5c8b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sigma.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.cap.glif new file mode 100644 index 000000000..5a92e1e84 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.cap.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.dnom.glif new file mode 100644 index 000000000..15e5b9738 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.dnom.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.glif new file mode 100644 index 000000000..5347fafa8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.numr.glif new file mode 100644 index 000000000..5909fcdfc --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.onum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.onum.glif new file mode 100644 index 000000000..f825f6ed0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.onum.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.subs.glif new file mode 100644 index 000000000..771dc2c19 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.subs.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.sups.glif new file mode 100644 index 000000000..1d6d56300 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/six.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/slash.frac.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/slash.frac.glif new file mode 100644 index 000000000..06d7104e3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/slash.frac.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/slash.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/slash.glif new file mode 100644 index 000000000..6acdd182f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/slash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/smileface.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/smileface.e.glif new file mode 100644 index 000000000..79f93ade0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/smileface.e.glif @@ -0,0 +1,664 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/smileface.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/smileface.glif new file mode 100644 index 000000000..cd6c706fa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/smileface.glif @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/soft.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/soft.glif new file mode 100644 index 000000000..e282fcaf8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/soft.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/soundcopyright.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/soundcopyright.glif new file mode 100644 index 000000000..86d422eba --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/soundcopyright.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/space.frac.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/space.frac.glif new file mode 100644 index 000000000..1273e4da4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/space.frac.glif @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/space.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/space.glif new file mode 100644 index 000000000..7583e8465 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/space.glif @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/spade.e.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/spade.e.glif new file mode 100644 index 000000000..af6a7b393 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/spade.e.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/spade.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/spade.glif new file mode 100644 index 000000000..96cb3632d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/spade.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/squarebelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/squarebelowcmb.glif new file mode 100644 index 000000000..f1ccf19af --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/squarebelowcmb.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/squareblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/squareblack.glif new file mode 100644 index 000000000..e2210e32e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/squareblack.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/squareshadow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/squareshadow.glif new file mode 100644 index 000000000..758ba0153 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/squareshadow.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/squarewhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/squarewhite.glif new file mode 100644 index 000000000..2724f66d4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/squarewhite.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sterling.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sterling.glif new file mode 100644 index 000000000..abcf09de7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sterling.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/stigma.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/stigma.glif new file mode 100644 index 000000000..3238c8fab --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/stigma.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/summation.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/summation.glif new file mode 100644 index 000000000..b17edfdc5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/summation.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/sun.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sun.glif new file mode 100644 index 000000000..9031186e3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/sun.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/t.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/t.glif new file mode 100644 index 000000000..d9dc9093a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/t.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/t.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/t.sups.glif new file mode 100644 index 000000000..1bb8c8c5c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/t.sups.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tau.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tau.glif new file mode 100644 index 000000000..bcc3313ae --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tau.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tbar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tbar.glif new file mode 100644 index 000000000..d188b9b3a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tbar.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tcaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tcaron.glif new file mode 100644 index 000000000..4232cb47b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tcaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tcedilla.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tcedilla.glif new file mode 100644 index 000000000..d562f38e1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tcedilla.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tcommaaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tcommaaccent.glif new file mode 100644 index 000000000..0c8223277 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tcommaaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tdieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tdieresis.glif new file mode 100644 index 000000000..9f365f35e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tdieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tdotbelow.glif new file mode 100644 index 000000000..0e9be9ce2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tdotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/te.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/te.glif new file mode 100644 index 000000000..2e29476a6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/te.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tenge.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tenge.glif new file mode 100644 index 000000000..e032c36aa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tenge.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tesh.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tesh.glif new file mode 100644 index 000000000..c3cd71668 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tesh.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/text.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/text.glif new file mode 100644 index 000000000..1f21004df --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/text.glif @@ -0,0 +1,595 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/theta.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/theta.a.glif new file mode 100644 index 000000000..38c455ba2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/theta.a.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/theta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/theta.glif new file mode 100644 index 000000000..a5f378636 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/theta.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/thorn.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/thorn.glif new file mode 100644 index 000000000..8ec0a396d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/thorn.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.cap.glif new file mode 100644 index 000000000..96eb8be3b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.cap.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.dnom.glif new file mode 100644 index 000000000..01480007b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.dnom.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.glif new file mode 100644 index 000000000..85d8ea476 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.numr.glif new file mode 100644 index 000000000..ef61a2769 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.onum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.onum.glif new file mode 100644 index 000000000..10f56b986 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.onum.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.subs.glif new file mode 100644 index 000000000..f28a213fa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.subs.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.sups.glif new file mode 100644 index 000000000..5bc2122c2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/three.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/threeeighths.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/threeeighths.glif new file mode 100644 index 000000000..4e81d146c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/threeeighths.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/threefifths.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/threefifths.glif new file mode 100644 index 000000000..2ba3a1a7a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/threefifths.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/threequarters.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/threequarters.glif new file mode 100644 index 000000000..c9eaf624c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/threequarters.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tilde.glif new file mode 100644 index 000000000..84face090 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tilde.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildebelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildebelowcmb.glif new file mode 100644 index 000000000..76f5b273e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildebelowcmb.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildecmb.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildecmb.cap.glif new file mode 100644 index 000000000..33e4e922f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildecmb.cap.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildecmb.glif new file mode 100644 index 000000000..f00f74ed5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildecmb.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildeoverlaycmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildeoverlaycmb.glif new file mode 100644 index 000000000..6b92d2bed --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tildeoverlaycmb.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tlinebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tlinebelow.glif new file mode 100644 index 000000000..f94841f14 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tlinebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tonos.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tonos.cap.glif new file mode 100644 index 000000000..13d87094d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tonos.cap.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tonos.glif new file mode 100644 index 000000000..5fae9d4d0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tonos.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tonoscmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tonoscmb.glif new file mode 100644 index 000000000..8ba84949e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tonoscmb.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trademark.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trademark.glif new file mode 100644 index 000000000..6e1d5d38c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trademark.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tretroflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tretroflex.glif new file mode 100644 index 000000000..bec0239d1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tretroflex.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangledownblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangledownblack.glif new file mode 100644 index 000000000..13d7da4d2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangledownblack.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangledownwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangledownwhite.glif new file mode 100644 index 000000000..6dcc2fb6f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangledownwhite.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleleftblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleleftblack.glif new file mode 100644 index 000000000..97b0efa3b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleleftblack.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleleftwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleleftwhite.glif new file mode 100644 index 000000000..f9a0e86cf --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleleftwhite.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglerightblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglerightblack.glif new file mode 100644 index 000000000..89cb0e18b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglerightblack.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglerightwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglerightwhite.glif new file mode 100644 index 000000000..87f3664e5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglerightwhite.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmalldownblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmalldownblack.glif new file mode 100644 index 000000000..927ac531a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmalldownblack.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmalldownwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmalldownwhite.glif new file mode 100644 index 000000000..f1f9021f7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmalldownwhite.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallleftblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallleftblack.glif new file mode 100644 index 000000000..cb8f90f6e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallleftblack.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallleftwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallleftwhite.glif new file mode 100644 index 000000000..83c24a52a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallleftwhite.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallrightblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallrightblack.glif new file mode 100644 index 000000000..93e6fe36d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallrightblack.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallrightwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallrightwhite.glif new file mode 100644 index 000000000..17bf1dddb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallrightwhite.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallupblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallupblack.glif new file mode 100644 index 000000000..1be4c1af2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallupblack.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallupwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallupwhite.glif new file mode 100644 index 000000000..e250f4911 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/trianglesmallupwhite.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleupblack.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleupblack.glif new file mode 100644 index 000000000..9e7b9134c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleupblack.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleupwhite.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleupwhite.glif new file mode 100644 index 000000000..55fbf88d5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/triangleupwhite.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ts.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ts.glif new file mode 100644 index 000000000..abbd29ce5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ts.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tse.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tse.glif new file mode 100644 index 000000000..53f29ea09 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tse.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tshe.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tshe.glif new file mode 100644 index 000000000..c45261d84 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tshe.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tturned.glif new file mode 100644 index 000000000..a1add8c11 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tturned.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/tugrik.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tugrik.glif new file mode 100644 index 000000000..fc7026e67 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/tugrik.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.cap.glif new file mode 100644 index 000000000..04bddb3aa --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.cap.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.dnom.glif new file mode 100644 index 000000000..df616d507 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.dnom.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.glif new file mode 100644 index 000000000..82c686e02 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.numr.glif new file mode 100644 index 000000000..5b386083a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.onum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.onum.glif new file mode 100644 index 000000000..91160168a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.onum.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.subs.glif new file mode 100644 index 000000000..033de9fd9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.subs.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.sups.glif new file mode 100644 index 000000000..6719d1fd3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/two.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/twofifths.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/twofifths.glif new file mode 100644 index 000000000..287e0e828 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/twofifths.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/twothirds.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/twothirds.glif new file mode 100644 index 000000000..3c20bd8c8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/twothirds.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/u.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/u.glif new file mode 100644 index 000000000..cd7793474 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/u.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/u.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/u.sups.glif new file mode 100644 index 000000000..2297bd48f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/u.sups.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uacute.glif new file mode 100644 index 000000000..f5c1dda4b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uacutedblcyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uacutedblcyr.glif new file mode 100644 index 000000000..7e497f017 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uacutedblcyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ubar.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ubar.glif new file mode 100644 index 000000000..c48cff2c5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ubar.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ubreve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ubreve.glif new file mode 100644 index 000000000..a6716c834 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ubreve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ucaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ucaron.glif new file mode 100644 index 000000000..d0aa25f33 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ucaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ucircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ucircumflex.glif new file mode 100644 index 000000000..b8974d903 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ucircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ucyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ucyr.glif new file mode 100644 index 000000000..37923124f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ucyr.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresis.glif new file mode 100644 index 000000000..d06470c4f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresisacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresisacute.glif new file mode 100644 index 000000000..9c15afd52 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresisacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresiscaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresiscaron.glif new file mode 100644 index 000000000..6ff934013 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresiscaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresisgrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresisgrave.glif new file mode 100644 index 000000000..1b654380e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresisgrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresismacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresismacron.glif new file mode 100644 index 000000000..35ea21694 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udieresismacron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/udotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udotbelow.glif new file mode 100644 index 000000000..b86b2d98f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/udotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ugrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ugrave.glif new file mode 100644 index 000000000..af497cba3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ugrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhoi.glif new file mode 100644 index 000000000..57bb4e3d9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorn.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorn.glif new file mode 100644 index 000000000..18e3cd17f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorn.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhornacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhornacute.glif new file mode 100644 index 000000000..a24afffd0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhornacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorndotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorndotbelow.glif new file mode 100644 index 000000000..0d17ced59 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorndotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorngrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorngrave.glif new file mode 100644 index 000000000..0c50d98f4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorngrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhornhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhornhoi.glif new file mode 100644 index 000000000..dea80d348 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhornhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorntilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorntilde.glif new file mode 100644 index 000000000..b63af63a9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhorntilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhungarumlaut.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhungarumlaut.glif new file mode 100644 index 000000000..1af4d72a6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uhungarumlaut.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/umacron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/umacron.glif new file mode 100644 index 000000000..9bd2212c2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/umacron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/umacroncyr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/umacroncyr.glif new file mode 100644 index 000000000..be078a9f9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/umacroncyr.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/underscore.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/underscore.glif new file mode 100644 index 000000000..d39ddc8f1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/underscore.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/underscoredbl.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/underscoredbl.glif new file mode 100644 index 000000000..3f007e2ad --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/underscoredbl.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/undertie.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/undertie.glif new file mode 100644 index 000000000..ccc83d7b7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/undertie.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0A_0.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0A_0.glif new file mode 100644 index 000000000..3f7d473ba --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0A_0.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0A_1.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0A_1.glif new file mode 100644 index 000000000..485253388 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0A_1.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0A_2.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0A_2.glif new file mode 100644 index 000000000..0bf5d21f0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0A_2.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_0.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_0.glif new file mode 100644 index 000000000..65cb97b80 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_0.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_1.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_1.glif new file mode 100644 index 000000000..d04aa3c38 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_1.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_2.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_2.glif new file mode 100644 index 000000000..ce568d2e6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_2.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_3.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_3.glif new file mode 100644 index 000000000..836f85030 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uniE_0B_3.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/universal.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/universal.glif new file mode 100644 index 000000000..78c12dafe --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/universal.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uogonek.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uogonek.glif new file mode 100644 index 000000000..32d20ad44 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uogonek.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/updblhorzsngbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/updblhorzsngbxd.glif new file mode 100644 index 000000000..d838d5e08 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/updblhorzsngbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/updblleftsngbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/updblleftsngbxd.glif new file mode 100644 index 000000000..73d48e3a4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/updblleftsngbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/updblrightsngbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/updblrightsngbxd.glif new file mode 100644 index 000000000..91e781cae --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/updblrightsngbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upeighthblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upeighthblock.glif new file mode 100644 index 000000000..26245b3f6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upeighthblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uphalfblock.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uphalfblock.glif new file mode 100644 index 000000000..2b2d8d47c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uphalfblock.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavydnhorzlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavydnhorzlightbxd.glif new file mode 100644 index 000000000..ee6a6368f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavydnhorzlightbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyhorzlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyhorzlightbxd.glif new file mode 100644 index 000000000..faa4f529f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyhorzlightbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyleftdnlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyleftdnlightbxd.glif new file mode 100644 index 000000000..4b4a112c5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyleftdnlightbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyleftlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyleftlightbxd.glif new file mode 100644 index 000000000..f4f93af3b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyleftlightbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyrightdnlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyrightdnlightbxd.glif new file mode 100644 index 000000000..fec0a69ab --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyrightdnlightbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyrightlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyrightlightbxd.glif new file mode 100644 index 000000000..f50de0510 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upheavyrightlightbxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftdnleftdnrightquadrant.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftdnleftdnrightquadrant.glif new file mode 100644 index 000000000..624e79720 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftdnleftdnrightquadrant.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftdnrightquadrant.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftdnrightquadrant.glif new file mode 100644 index 000000000..dd031511a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftdnrightquadrant.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftquadrant.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftquadrant.glif new file mode 100644 index 000000000..dc11ce26e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftquadrant.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftuprightdnleftquadrant.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftuprightdnleftquadrant.glif new file mode 100644 index 000000000..e13ff65a5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftuprightdnleftquadrant.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftuprightdnrightquadrant.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftuprightdnrightquadrant.glif new file mode 100644 index 000000000..2fe46aeff --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upleftuprightdnrightquadrant.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightdnhorzheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightdnhorzheavybxd.glif new file mode 100644 index 000000000..720d6be77 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightdnhorzheavybxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplighthorzheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplighthorzheavybxd.glif new file mode 100644 index 000000000..f60208201 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplighthorzheavybxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightleftdnheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightleftdnheavybxd.glif new file mode 100644 index 000000000..4a5160357 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightleftdnheavybxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightleftheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightleftheavybxd.glif new file mode 100644 index 000000000..8e00d5d71 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightleftheavybxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightrightdnheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightrightdnheavybxd.glif new file mode 100644 index 000000000..f07df4b8e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightrightdnheavybxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightrightheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightrightheavybxd.glif new file mode 100644 index 000000000..1b72b3a9b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uplightrightheavybxd.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uprightdnleftdnrightquadrant.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uprightdnleftdnrightquadrant.glif new file mode 100644 index 000000000..116c7f878 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uprightdnleftdnrightquadrant.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uprightdnleftquadrant.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uprightdnleftquadrant.glif new file mode 100644 index 000000000..cc00956a8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uprightdnleftquadrant.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uprightquadrant.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uprightquadrant.glif new file mode 100644 index 000000000..8f3cc86ff --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uprightquadrant.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilon.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilon.glif new file mode 100644 index 000000000..e62b3bde7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilon.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilondieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilondieresis.glif new file mode 100644 index 000000000..587204523 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilondieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilondieresistonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilondieresistonos.glif new file mode 100644 index 000000000..7ffb11c79 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilondieresistonos.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilonlatin.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilonlatin.glif new file mode 100644 index 000000000..d427e417c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilonlatin.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilontonos.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilontonos.glif new file mode 100644 index 000000000..279c4f96f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsilontonos.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsnghorzdblbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsnghorzdblbxd.glif new file mode 100644 index 000000000..d24833d75 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsnghorzdblbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsngleftdblbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsngleftdblbxd.glif new file mode 100644 index 000000000..8013a26d4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsngleftdblbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsngrightdblbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsngrightdblbxd.glif new file mode 100644 index 000000000..bf04292cb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/upsngrightdblbxd.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uptackbelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uptackbelowcmb.glif new file mode 100644 index 000000000..20f87bc40 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uptackbelowcmb.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/uring.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uring.glif new file mode 100644 index 000000000..1299b10e2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/uring.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ushort.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ushort.glif new file mode 100644 index 000000000..c54a6cff0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ushort.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ustraight.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ustraight.glif new file mode 100644 index 000000000..c0f683f59 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ustraight.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ustraightstroke.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ustraightstroke.glif new file mode 100644 index 000000000..9cb3e5065 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ustraightstroke.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/utilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/utilde.glif new file mode 100644 index 000000000..8dd143b1f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/utilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/v.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/v.glif new file mode 100644 index 000000000..cec781042 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/v.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/v.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/v.sups.glif new file mode 100644 index 000000000..7e82f62bb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/v.sups.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/varia.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/varia.cap.glif new file mode 100644 index 000000000..aba130576 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/varia.cap.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/varia.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/varia.glif new file mode 100644 index 000000000..586d7ad20 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/varia.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/variacmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/variacmb.glif new file mode 100644 index 000000000..e04232587 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/variacmb.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vdotbelow.glif new file mode 100644 index 000000000..1463b4778 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vdotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ve.glif new file mode 100644 index 000000000..a13287c26 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ve.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertdblhorzsngbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertdblhorzsngbxd.glif new file mode 100644 index 000000000..5ceb354f7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertdblhorzsngbxd.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertdblleftsngbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertdblleftsngbxd.glif new file mode 100644 index 000000000..9c4f71a4a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertdblleftsngbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertdblrightsngbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertdblrightsngbxd.glif new file mode 100644 index 000000000..3f100b1a2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertdblrightsngbxd.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertheavyhorzlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertheavyhorzlightbxd.glif new file mode 100644 index 000000000..d1793dce7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertheavyhorzlightbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertheavyleftlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertheavyleftlightbxd.glif new file mode 100644 index 000000000..9bc98cbce --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertheavyleftlightbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertheavyrightlightbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertheavyrightlightbxd.glif new file mode 100644 index 000000000..2d0d62445 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertheavyrightlightbxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/verticallinebelowcmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/verticallinebelowcmb.glif new file mode 100644 index 000000000..4440ab6f8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/verticallinebelowcmb.glif @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/verticallinelowmod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/verticallinelowmod.glif new file mode 100644 index 000000000..7b2beff34 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/verticallinelowmod.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/verticallinemod.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/verticallinemod.glif new file mode 100644 index 000000000..4c3c43666 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/verticallinemod.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertlighthorzheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertlighthorzheavybxd.glif new file mode 100644 index 000000000..f73a4b842 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertlighthorzheavybxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertlightleftheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertlightleftheavybxd.glif new file mode 100644 index 000000000..3f323207f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertlightleftheavybxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertlightrightheavybxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertlightrightheavybxd.glif new file mode 100644 index 000000000..a5b56b8af --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertlightrightheavybxd.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertsnghorzdblbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertsnghorzdblbxd.glif new file mode 100644 index 000000000..52d0e553a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertsnghorzdblbxd.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertsngleftdblbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertsngleftdblbxd.glif new file mode 100644 index 000000000..6eadf6e09 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertsngleftdblbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertsngrightdblbxd.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertsngrightdblbxd.glif new file mode 100644 index 000000000..eab3e80e2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vertsngrightdblbxd.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vhook.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vhook.glif new file mode 100644 index 000000000..e33df1928 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vhook.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/vturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vturned.glif new file mode 100644 index 000000000..11ea61cd0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/vturned.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/w.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/w.glif new file mode 100644 index 000000000..84c2252ca --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/w.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/w.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/w.sups.glif new file mode 100644 index 000000000..65973c14b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/w.sups.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/wacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/wacute.glif new file mode 100644 index 000000000..ab2fc35f0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/wacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/wcircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/wcircumflex.glif new file mode 100644 index 000000000..9d3a2f5e7 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/wcircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/wdieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/wdieresis.glif new file mode 100644 index 000000000..e43eee812 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/wdieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/wgrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/wgrave.glif new file mode 100644 index 000000000..f88cb0ca5 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/wgrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/won.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/won.glif new file mode 100644 index 000000000..d5179f3a2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/won.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/wturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/wturned.glif new file mode 100644 index 000000000..50b304f63 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/wturned.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/x.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/x.glif new file mode 100644 index 000000000..a5a519a92 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/x.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/x.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/x.sups.glif new file mode 100644 index 000000000..da73636dd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/x.sups.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/xabovecmb.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/xabovecmb.glif new file mode 100644 index 000000000..4ffa6c5d8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/xabovecmb.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/xi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/xi.glif new file mode 100644 index 000000000..b84b6f8c1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/xi.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/y.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/y.glif new file mode 100644 index 000000000..70c7ba834 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/y.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/y.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/y.sups.glif new file mode 100644 index 000000000..2894923c2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/y.sups.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ya.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ya.glif new file mode 100644 index 000000000..580b4ef00 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ya.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/yacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yacute.glif new file mode 100644 index 000000000..f3fc0ba73 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/yat.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yat.glif new file mode 100644 index 000000000..a66947d18 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yat.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ycircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ycircumflex.glif new file mode 100644 index 000000000..f023f692f --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ycircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ydieresis.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ydieresis.glif new file mode 100644 index 000000000..c765f0614 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ydieresis.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ydotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ydotaccent.glif new file mode 100644 index 000000000..a7f7c1e79 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ydotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ydotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ydotbelow.glif new file mode 100644 index 000000000..fab696654 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ydotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/yen.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yen.glif new file mode 100644 index 000000000..871d73b0b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yen.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/yeru.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yeru.glif new file mode 100644 index 000000000..6d787c3c3 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yeru.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ygrave.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ygrave.glif new file mode 100644 index 000000000..6cea8134d --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ygrave.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/yhoi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yhoi.glif new file mode 100644 index 000000000..f9f0ccff1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yhoi.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/yi.a.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yi.a.glif new file mode 100644 index 000000000..438e8d1db --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yi.a.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/yi.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yi.glif new file mode 100644 index 000000000..b5f50c9b0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yi.glif @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ysmall.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ysmall.glif new file mode 100644 index 000000000..9ff7a0ec0 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ysmall.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ytilde.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ytilde.glif new file mode 100644 index 000000000..5ade6a3d1 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ytilde.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/yturned.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yturned.glif new file mode 100644 index 000000000..ae18548fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yturned.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/yu.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yu.glif new file mode 100644 index 000000000..804ca4ce9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/yu.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/z.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/z.glif new file mode 100644 index 000000000..3a717114a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/z.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/z.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/z.sups.glif new file mode 100644 index 000000000..e484e33f2 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/z.sups.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zacute.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zacute.glif new file mode 100644 index 000000000..87c328958 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zacute.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zcaron.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zcaron.glif new file mode 100644 index 000000000..8e0ffd0a9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zcaron.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zcircumflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zcircumflex.glif new file mode 100644 index 000000000..c49477cdd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zcircumflex.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zcurl.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zcurl.glif new file mode 100644 index 000000000..d1f13fb70 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zcurl.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zdotaccent.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zdotaccent.glif new file mode 100644 index 000000000..4d2cf16bd --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zdotaccent.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zdotbelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zdotbelow.glif new file mode 100644 index 000000000..bf65c4721 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zdotbelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/ze.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ze.glif new file mode 100644 index 000000000..9e4fc279a --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/ze.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zedescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zedescender.glif new file mode 100644 index 000000000..41356d171 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zedescender.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.0.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.0.glif new file mode 100644 index 000000000..7b548ce75 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.0.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.0c.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.0c.glif new file mode 100644 index 000000000..e401e83fb --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.0c.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.0o.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.0o.glif new file mode 100644 index 000000000..4cdd6d961 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.0o.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.cap.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.cap.glif new file mode 100644 index 000000000..b4c33398b --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.cap.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.dnom.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.dnom.glif new file mode 100644 index 000000000..2565fcf86 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.dnom.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.glif new file mode 100644 index 000000000..7b84deac9 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.numr.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.numr.glif new file mode 100644 index 000000000..6556dab07 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.numr.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.onum.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.onum.glif new file mode 100644 index 000000000..72b3bdbf8 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.onum.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.subs.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.subs.glif new file mode 100644 index 000000000..36895f08e --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.subs.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.sups.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.sups.glif new file mode 100644 index 000000000..4f8e972ca --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zero.sups.glif @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zerothirds.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zerothirds.glif new file mode 100644 index 000000000..2e2e3a229 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zerothirds.glif @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zeta.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zeta.glif new file mode 100644 index 000000000..3cc46fa53 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zeta.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zhe.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zhe.glif new file mode 100644 index 000000000..edcf52cf6 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zhe.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zhebreve.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zhebreve.glif new file mode 100644 index 000000000..a00a3961c --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zhebreve.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zhedescender.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zhedescender.glif new file mode 100644 index 000000000..19bba8d77 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zhedescender.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zlinebelow.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zlinebelow.glif new file mode 100644 index 000000000..0e7a904ee --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zlinebelow.glif @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/glyphs/zretroflex.glif b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zretroflex.glif new file mode 100644 index 000000000..dfbf82623 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/glyphs/zretroflex.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/groups.plist b/tests/makeotf_data/input/bug680/font.ufo/groups.plist new file mode 100644 index 000000000..41cec12af --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/groups.plist @@ -0,0 +1,122 @@ + + + + + COMBINING_MARKS + + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/lib.plist b/tests/makeotf_data/input/bug680/font.ufo/lib.plist new file mode 100644 index 000000000..9269ae529 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/lib.plist @@ -0,0 +1,3185 @@ + + + + + org.unifiedfontobject.normalizer.modTimes + version: 0a1 +1465420614.0 fontinfo.plist +1465420607.0 glyphs/A_.glif +1465420607.0 glyphs/A_E_.glif +1465420607.0 glyphs/A_E_acute.glif +1465420607.0 glyphs/A_E_macron.glif +1465420607.0 glyphs/A_acute.glif +1465420607.0 glyphs/A_breve.glif +1465420607.0 glyphs/A_breveacute.glif +1465420607.0 glyphs/A_brevecyr.glif +1465420607.0 glyphs/A_brevedotbelow.glif +1465420607.0 glyphs/A_brevegrave.glif +1465420607.0 glyphs/A_brevehoi.glif +1465420607.0 glyphs/A_brevetilde.glif +1465420608.0 glyphs/A_caron.glif +1465420608.0 glyphs/A_circumflex.glif +1465420608.0 glyphs/A_circumflexacute.glif +1465420608.0 glyphs/A_circumflexdotbelow.glif +1465420608.0 glyphs/A_circumflexgrave.glif +1465420608.0 glyphs/A_circumflexhoi.glif +1465420608.0 glyphs/A_circumflextilde.glif +1465420608.0 glyphs/A_cyr.glif +1465420608.0 glyphs/A_dieresis.glif +1465420608.0 glyphs/A_dotbelow.glif +1465420608.0 glyphs/A_grave.glif +1465420608.0 glyphs/A_hoi.glif +1465420608.0 glyphs/A_ie.glif +1465420608.0 glyphs/A_lpha.glif +1465420608.0 glyphs/A_lphatonos.glif +1465420608.0 glyphs/A_macron.glif +1465420608.0 glyphs/A_ogonek.glif +1465420608.0 glyphs/A_ring.glif +1465420608.0 glyphs/A_ringacute.glif +1465420608.0 glyphs/A_tilde.glif +1465420608.0 glyphs/B_.glif +1465420608.0 glyphs/B_e.glif +1465420608.0 glyphs/B_eta.glif +1465420608.0 glyphs/B_linebelow.glif +1465420608.0 glyphs/B_stroke.glif +1465420608.0 glyphs/C_.glif +1465420608.0 glyphs/C_acute.glif +1465420608.0 glyphs/C_caron.glif +1465420608.0 glyphs/C_cedilla.glif +1465420608.0 glyphs/C_circumflex.glif +1465420608.0 glyphs/C_dotaccent.glif +1465420608.0 glyphs/C_he.glif +1465420608.0 glyphs/C_hedescender.glif +1465420608.0 glyphs/C_hi.glif +1465420608.0 glyphs/D_.glif +1465420608.0 glyphs/D_caron.glif +1465420608.0 glyphs/D_cedilla.glif +1465420608.0 glyphs/D_croat.glif +1465420608.0 glyphs/D_dotbelow.glif +1465420608.0 glyphs/D_e.glif +1465420608.0 glyphs/D_elta.glif +1465420608.0 glyphs/D_elta.math.glif +1465420608.0 glyphs/D_hook.glif +1465420608.0 glyphs/D_je.glif +1465420608.0 glyphs/D_linebelow.glif +1465420608.0 glyphs/D_ze.glif +1465420608.0 glyphs/D_zhe.glif +1465420608.0 glyphs/E_.glif +1465420608.0 glyphs/E_acute.glif +1465420608.0 glyphs/E_breve.glif +1465420608.0 glyphs/E_caron.glif +1465420608.0 glyphs/E_circumflex.glif +1465420608.0 glyphs/E_circumflexacute.glif +1465420608.0 glyphs/E_circumflexdotbelow.glif +1465420608.0 glyphs/E_circumflexgrave.glif +1465420608.0 glyphs/E_circumflexhoi.glif +1465420608.0 glyphs/E_circumflextilde.glif +1465420608.0 glyphs/E_cyr.glif +1465420608.0 glyphs/E_dieresis.glif +1465420608.0 glyphs/E_dotaccent.glif +1465420608.0 glyphs/E_dotbelow.glif +1465420608.0 glyphs/E_f.glif +1465420608.0 glyphs/E_grave.glif +1465420608.0 glyphs/E_hoi.glif +1465420608.0 glyphs/E_l.glif +1465420608.0 glyphs/E_m.glif +1465420608.0 glyphs/E_macron.glif +1465420608.0 glyphs/E_macronacute.glif +1465420608.0 glyphs/E_n.glif +1465420608.0 glyphs/E_ndescender.glif +1465420608.0 glyphs/E_ng.a.glif +1465420608.0 glyphs/E_ng.glif +1465420608.0 glyphs/E_ogonek.glif +1465420608.0 glyphs/E_psilon.glif +1465420608.0 glyphs/E_psilontonos.glif +1465420608.0 glyphs/E_r.glif +1465420608.0 glyphs/E_s.glif +1465420608.0 glyphs/E_sdescender.glif +1465420608.0 glyphs/E_ta.glif +1465420608.0 glyphs/E_tatonos.glif +1465420608.0 glyphs/E_th.glif +1465420608.0 glyphs/E_tilde.glif +1465420608.0 glyphs/E_uro.glif +1465420608.0 glyphs/F_.glif +1465420608.0 glyphs/F_ita.glif +1465420608.0 glyphs/G_.glif +1465420608.0 glyphs/G_acute.glif +1465420608.0 glyphs/G_amma.glif +1465420608.0 glyphs/G_breve.glif +1465420608.0 glyphs/G_caron.glif +1465420608.0 glyphs/G_circumflex.glif +1465420608.0 glyphs/G_commaaccent.glif +1465420608.0 glyphs/G_dotaccent.glif +1465420608.0 glyphs/G_ermandbls.glif +1465420608.0 glyphs/G_he.glif +1465420608.0 glyphs/G_hestroke.glif +1465420608.0 glyphs/G_heup.glif +1465420608.0 glyphs/G_hook.glif +1465420608.0 glyphs/G_je.glif +1465420608.0 glyphs/G_macron.glif +1465420608.0 glyphs/G_tilde.glif +1465420608.0 glyphs/H_.glif +1465420608.0 glyphs/H_a.glif +1465420608.0 glyphs/H_adescender.glif +1465420608.0 glyphs/H_ard.glif +1465420608.0 glyphs/H_bar.glif +1465420608.0 glyphs/H_brevebelow.glif +1465420608.0 glyphs/H_cedilla.glif +1465420608.0 glyphs/H_circumflex.glif +1465420608.0 glyphs/H_dieresis.glif +1465420608.0 glyphs/H_dotbelow.glif +1465420608.0 glyphs/I_.glif +1465420608.0 glyphs/I_J_.glif +1465420608.0 glyphs/I_J_acute.glif +1465420608.0 glyphs/I_acute.glif +1465420608.0 glyphs/I_breve.glif +1465420608.0 glyphs/I_caron.glif +1465420608.0 glyphs/I_circumflex.glif +1465420608.0 glyphs/I_cyr.glif +1465420608.0 glyphs/I_dieresis.glif +1465420608.0 glyphs/I_dotaccent.glif +1465420608.0 glyphs/I_dotbelow.glif +1465420608.0 glyphs/I_e.glif +1465420608.0 glyphs/I_ebreve.glif +1465420608.0 glyphs/I_egrave.glif +1465420608.0 glyphs/I_eukran.glif +1465420608.0 glyphs/I_grave.glif +1465420608.0 glyphs/I_gravecyr.glif +1465420608.0 glyphs/I_hoi.glif +1465420608.0 glyphs/I_macron.glif +1465420608.0 glyphs/I_macroncyr.glif +1465420608.0 glyphs/I_o.glif +1465420608.0 glyphs/I_ogonek.glif +1465420608.0 glyphs/I_ota.glif +1465420608.0 glyphs/I_otadieresis.glif +1465420608.0 glyphs/I_otatonos.glif +1465420608.0 glyphs/I_short.glif +1465420608.0 glyphs/I_tilde.glif +1465420608.0 glyphs/I_ukran.glif +1465420608.0 glyphs/I_zhitsa.glif +1465420608.0 glyphs/J_.glif +1465420608.0 glyphs/J_circumflex.glif +1465420608.0 glyphs/J_e.glif +1465420608.0 glyphs/K_.glif +1465420608.0 glyphs/K_a.glif +1465420608.0 glyphs/K_abashkir.glif +1465420608.0 glyphs/K_adescender.glif +1465420608.0 glyphs/K_appa.glif +1465420608.0 glyphs/K_commaaccent.glif +1465420608.0 glyphs/K_dotbelow.glif +1465420608.0 glyphs/K_je.glif +1465420608.0 glyphs/K_linebelow.glif +1465420608.0 glyphs/L_.glif +1465420608.0 glyphs/L_acute.glif +1465420608.0 glyphs/L_ambda.glif +1465420608.0 glyphs/L_caron.glif +1465420608.0 glyphs/L_cat.glif +1465420608.0 glyphs/L_commaaccent.glif +1465420608.0 glyphs/L_dot.glif +1465420608.0 glyphs/L_dotbelow.glif +1465420608.0 glyphs/L_dotbelowmacron.glif +1465420608.0 glyphs/L_je.glif +1465420608.0 glyphs/L_linebelow.glif +1465420608.0 glyphs/L_slash.glif +1465420608.0 glyphs/M_.glif +1465420608.0 glyphs/M_acute.glif +1465420608.0 glyphs/M_dotaccent.glif +1465420608.0 glyphs/M_dotbelow.glif +1465420608.0 glyphs/M_u.glif +1465420608.0 glyphs/N_.glif +1465420608.0 glyphs/N_N_B_S_.glif +1465420608.0 glyphs/N_acute.glif +1465420608.0 glyphs/N_caron.glif +1465420608.0 glyphs/N_commaaccent.glif +1465420608.0 glyphs/N_dotaccent.glif +1465420608.0 glyphs/N_dotbelow.glif +1465420608.0 glyphs/N_grave.glif +1465420608.0 glyphs/N_je.glif +1465420608.0 glyphs/N_linebelow.glif +1465420608.0 glyphs/N_tilde.glif +1465420608.0 glyphs/N_u.glif +1465420608.0 glyphs/O_.glif +1465420608.0 glyphs/O_E_.glif +1465420608.0 glyphs/O_acute.glif +1465420608.0 glyphs/O_barcyr.glif +1465420608.0 glyphs/O_breve.glif +1465420608.0 glyphs/O_caron.glif +1465420608.0 glyphs/O_circumflex.glif +1465420608.0 glyphs/O_circumflexacute.glif +1465420608.0 glyphs/O_circumflexdotbelow.glif +1465420608.0 glyphs/O_circumflexgrave.glif +1465420608.0 glyphs/O_circumflexhoi.glif +1465420608.0 glyphs/O_circumflextilde.glif +1465420608.0 glyphs/O_cyr.glif +1465420608.0 glyphs/O_dieresis.glif +1465420608.0 glyphs/O_dieresiscyr.glif +1465420608.0 glyphs/O_dotbelow.glif +1465420608.0 glyphs/O_grave.glif +1465420608.0 glyphs/O_hoi.glif +1465420608.0 glyphs/O_horn.glif +1465420608.0 glyphs/O_hornacute.glif +1465420608.0 glyphs/O_horndotbelow.glif +1465420608.0 glyphs/O_horngrave.glif +1465420608.0 glyphs/O_hornhoi.glif +1465420608.0 glyphs/O_horntilde.glif +1465420608.0 glyphs/O_hungarumlaut.glif +1465420608.0 glyphs/O_macron.glif +1465420608.0 glyphs/O_macronacute.glif +1465420608.0 glyphs/O_mega.glif +1465420608.0 glyphs/O_mega.math.glif +1465420608.0 glyphs/O_megatonos.glif +1465420608.0 glyphs/O_micron.glif +1465420608.0 glyphs/O_microntonos.glif +1465420608.0 glyphs/O_ogonek.glif +1465420608.0 glyphs/O_slash.glif +1465420608.0 glyphs/O_slashacute.glif +1465420608.0 glyphs/O_tilde.glif +1465420608.0 glyphs/P_.glif +1465420608.0 glyphs/P_alochka.glif +1465420608.0 glyphs/P_e.glif +1465420608.0 glyphs/P_hi.glif +1465420608.0 glyphs/P_i.glif +1465420608.0 glyphs/P_si.glif +1465420608.0 glyphs/Q_.glif +1465420608.0 glyphs/R_.glif +1465420608.0 glyphs/R_acute.glif +1465420608.0 glyphs/R_caron.glif +1465420608.0 glyphs/R_commaaccent.glif +1465420608.0 glyphs/R_dotaccent.glif +1465420608.0 glyphs/R_dotbelow.glif +1465420608.0 glyphs/R_dotbelowmacron.glif +1465420608.0 glyphs/R_ho.glif +1465420608.0 glyphs/R_linebelow.glif +1465420608.0 glyphs/S_.glif +1465420608.0 glyphs/S_acute.glif +1465420608.0 glyphs/S_caron.glif +1465420608.0 glyphs/S_carondot.glif +1465420608.0 glyphs/S_cedilla.glif +1465420608.0 glyphs/S_chwa.glif +1465420608.0 glyphs/S_chwacyr.glif +1465420608.0 glyphs/S_circumflex.glif +1465420608.0 glyphs/S_commaaccent.glif +1465420608.0 glyphs/S_dotaccent.glif +1465420608.0 glyphs/S_dotbelow.glif +1465420608.0 glyphs/S_ha.glif +1465420608.0 glyphs/S_hcha.glif +1465420608.0 glyphs/S_hha.glif +1465420608.0 glyphs/S_igma.glif +1465420608.0 glyphs/S_oft.glif +1465420608.0 glyphs/T_.glif +1465420608.0 glyphs/T_au.glif +1465420608.0 glyphs/T_bar.glif +1465420608.0 glyphs/T_caron.glif +1465420608.0 glyphs/T_cedilla.glif +1465420608.0 glyphs/T_commaaccent.glif +1465420608.0 glyphs/T_dotbelow.glif +1465420608.0 glyphs/T_e.glif +1465420608.0 glyphs/T_heta.glif +1465420608.0 glyphs/T_horn.glif +1465420608.0 glyphs/T_linebelow.glif +1465420608.0 glyphs/T_se.glif +1465420608.0 glyphs/T_she.glif +1465420608.0 glyphs/U_.glif +1465420608.0 glyphs/U_acute.glif +1465420608.0 glyphs/U_acutedblcyr.glif +1465420609.0 glyphs/U_breve.glif +1465420609.0 glyphs/U_caron.glif +1465420609.0 glyphs/U_circumflex.glif +1465420609.0 glyphs/U_cyr.glif +1465420609.0 glyphs/U_dieresis.glif +1465420609.0 glyphs/U_dieresisacute.glif +1465420609.0 glyphs/U_dieresiscaron.glif +1465420609.0 glyphs/U_dieresisgrave.glif +1465420609.0 glyphs/U_dieresismacron.glif +1465420609.0 glyphs/U_dotbelow.glif +1465420609.0 glyphs/U_grave.glif +1465420609.0 glyphs/U_hoi.glif +1465420609.0 glyphs/U_horn.glif +1465420609.0 glyphs/U_hornacute.glif +1465420609.0 glyphs/U_horndotbelow.glif +1465420609.0 glyphs/U_horngrave.glif +1465420609.0 glyphs/U_hornhoi.glif +1465420609.0 glyphs/U_horntilde.glif +1465420609.0 glyphs/U_hungarumlaut.glif +1465420609.0 glyphs/U_macron.glif +1465420609.0 glyphs/U_macroncyr.glif +1465420609.0 glyphs/U_ogonek.glif +1465420609.0 glyphs/U_psilon.glif +1465420609.0 glyphs/U_psilondieresis.glif +1465420609.0 glyphs/U_psilontonos.glif +1465420609.0 glyphs/U_ring.glif +1465420609.0 glyphs/U_short.glif +1465420609.0 glyphs/U_straight.glif +1465420609.0 glyphs/U_straightstroke.glif +1465420609.0 glyphs/U_tilde.glif +1465420609.0 glyphs/V_.glif +1465420609.0 glyphs/V_dotbelow.glif +1465420609.0 glyphs/V_e.glif +1465420609.0 glyphs/W_.glif +1465420609.0 glyphs/W_acute.glif +1465420609.0 glyphs/W_circumflex.glif +1465420609.0 glyphs/W_dieresis.glif +1465420609.0 glyphs/W_grave.glif +1465420609.0 glyphs/X_.glif +1465420609.0 glyphs/X_i.glif +1465420609.0 glyphs/Y_.glif +1465420609.0 glyphs/Y_a.glif +1465420609.0 glyphs/Y_acute.glif +1465420609.0 glyphs/Y_at.glif +1465420609.0 glyphs/Y_circumflex.glif +1465420609.0 glyphs/Y_dieresis.glif +1465420609.0 glyphs/Y_dotaccent.glif +1465420609.0 glyphs/Y_dotbelow.glif +1465420609.0 glyphs/Y_eru.glif +1465420609.0 glyphs/Y_grave.glif +1465420609.0 glyphs/Y_hoi.glif +1465420609.0 glyphs/Y_i.glif +1465420609.0 glyphs/Y_tilde.glif +1465420609.0 glyphs/Y_u.glif +1465420609.0 glyphs/Z_.glif +1465420609.0 glyphs/Z_W_N_B_S_.glif +1465420609.0 glyphs/Z_acute.glif +1465420609.0 glyphs/Z_caron.glif +1465420609.0 glyphs/Z_circumflex.glif +1465420609.0 glyphs/Z_dotaccent.glif +1465420609.0 glyphs/Z_dotbelow.glif +1465420609.0 glyphs/Z_e.glif +1465420609.0 glyphs/Z_edescender.glif +1465420609.0 glyphs/Z_eta.glif +1465420609.0 glyphs/Z_he.glif +1465420609.0 glyphs/Z_hebreve.glif +1465420609.0 glyphs/Z_hedescender.glif +1465420609.0 glyphs/Z_linebelow.glif +1465420609.0 glyphs/_notdef.glif +1465420609.0 glyphs/a.a.glif +1465420609.0 glyphs/a.glif +1465420609.0 glyphs/a.supa.glif +1465420609.0 glyphs/a.sups.glif +1465420609.0 glyphs/aacute.a.glif +1465420609.0 glyphs/aacute.glif +1465420609.0 glyphs/abreve.a.glif +1465420609.0 glyphs/abreve.glif +1465420609.0 glyphs/abreveacute.a.glif +1465420609.0 glyphs/abreveacute.glif +1465420609.0 glyphs/abrevecyr.a.glif +1465420609.0 glyphs/abrevecyr.glif +1465420609.0 glyphs/abrevedotbelow.a.glif +1465420609.0 glyphs/abrevedotbelow.glif +1465420609.0 glyphs/abrevegrave.a.glif +1465420609.0 glyphs/abrevegrave.glif +1465420609.0 glyphs/abrevehoi.a.glif +1465420609.0 glyphs/abrevehoi.glif +1465420609.0 glyphs/abrevetilde.a.glif +1465420609.0 glyphs/abrevetilde.glif +1465420609.0 glyphs/acaron.a.glif +1465420609.0 glyphs/acaron.glif +1465420609.0 glyphs/acircumflex.a.glif +1465420609.0 glyphs/acircumflex.glif +1465420609.0 glyphs/acircumflexacute.a.glif +1465420609.0 glyphs/acircumflexacute.glif +1465420609.0 glyphs/acircumflexdotbelow.a.glif +1465420609.0 glyphs/acircumflexdotbelow.glif +1465420609.0 glyphs/acircumflexgrave.a.glif +1465420609.0 glyphs/acircumflexgrave.glif +1465420609.0 glyphs/acircumflexhoi.a.glif +1465420609.0 glyphs/acircumflexhoi.glif +1465420609.0 glyphs/acircumflextilde.a.glif +1465420609.0 glyphs/acircumflextilde.glif +1465420609.0 glyphs/acute.glif +1465420609.0 glyphs/acutecmb.cap.glif +1465420609.0 glyphs/acutecmb.glif +1465420609.0 glyphs/acutemod.glif +1465420609.0 glyphs/acyr.a.glif +1465420609.0 glyphs/acyr.glif +1465420609.0 glyphs/adieresis.a.glif +1465420609.0 glyphs/adieresis.glif +1465420609.0 glyphs/adotbelow.a.glif +1465420609.0 glyphs/adotbelow.glif +1465420609.0 glyphs/ae.glif +1465420609.0 glyphs/aeacute.glif +1465420609.0 glyphs/aemacron.glif +1465420609.0 glyphs/agrave.a.glif +1465420609.0 glyphs/agrave.glif +1465420609.0 glyphs/ahoi.a.glif +1465420609.0 glyphs/ahoi.glif +1465420609.0 glyphs/aie.glif +1465420609.0 glyphs/alpha.glif +1465420609.0 glyphs/alphalatin.glif +1465420609.0 glyphs/alphalatinturned.glif +1465420609.0 glyphs/alphatonos.glif +1465420609.0 glyphs/amacron.a.glif +1465420609.0 glyphs/amacron.glif +1465420609.0 glyphs/ampersand.glif +1465420609.0 glyphs/anoteleia.cap.glif +1465420609.0 glyphs/anoteleia.glif +1465420609.0 glyphs/aogonek.a.glif +1465420609.0 glyphs/aogonek.glif +1465420609.0 glyphs/apostrophemod.glif +1465420609.0 glyphs/approxequal.glif +1465420609.0 glyphs/aring.a.glif +1465420609.0 glyphs/aring.glif +1465420609.0 glyphs/aringacute.a.glif +1465420609.0 glyphs/aringacute.glif +1465420609.0 glyphs/arrowboth.glif +1465420609.0 glyphs/arrowdbldown.glif +1465420609.0 glyphs/arrowdblleft.glif +1465420609.0 glyphs/arrowdblright.glif +1465420609.0 glyphs/arrowdblup.glif +1465420609.0 glyphs/arrowdown.glif +1465420609.0 glyphs/arrowdownleft.glif +1465420609.0 glyphs/arrowdownright.glif +1465420609.0 glyphs/arrowleft.glif +1465420609.0 glyphs/arrowright.glif +1465420609.0 glyphs/arrowup.glif +1465420609.0 glyphs/arrowupdn.glif +1465420609.0 glyphs/arrowupdnbse.glif +1465420609.0 glyphs/arrowupleft.glif +1465420609.0 glyphs/arrowupright.glif +1465420609.0 glyphs/asciicircum.glif +1465420609.0 glyphs/asciitilde.glif +1465420609.0 glyphs/asper.cap.glif +1465420609.0 glyphs/asper.glif +1465420609.0 glyphs/asperacute.cap.glif +1465420609.0 glyphs/asperacute.glif +1465420609.0 glyphs/asperacutecmb.glif +1465420609.0 glyphs/aspercmb.glif +1465420609.0 glyphs/aspergrave.cap.glif +1465420609.0 glyphs/aspergrave.glif +1465420609.0 glyphs/aspergravecmb.glif +1465420609.0 glyphs/aspertilde.cap.glif +1465420609.0 glyphs/aspertilde.glif +1465420609.0 glyphs/aspertildecmb.glif +1465420609.0 glyphs/asterisk.a.glif +1465420609.0 glyphs/asterisk.glif +1465420609.0 glyphs/at.case.glif +1465420609.0 glyphs/at.glif +1465420609.0 glyphs/atilde.a.glif +1465420609.0 glyphs/atilde.glif +1465420609.0 glyphs/aturned.glif +1465420609.0 glyphs/b.glif +1465420609.0 glyphs/b.sups.glif +1465420609.0 glyphs/backslash.glif +1465420609.0 glyphs/bar.glif +1465420609.0 glyphs/bardbl.glif +1465420609.0 glyphs/be.glif +1465420609.0 glyphs/be.srb.glif +1465420609.0 glyphs/beta.a.glif +1465420609.0 glyphs/beta.glif +1465420609.0 glyphs/bhook.glif +1465420609.0 glyphs/blinebelow.glif +1465420609.0 glyphs/braceleft.glif +1465420609.0 glyphs/braceright.glif +1465420609.0 glyphs/bracketleft.glif +1465420609.0 glyphs/bracketleftwhite.glif +1465420609.0 glyphs/bracketright.glif +1465420609.0 glyphs/bracketrightwhite.glif +1465420609.0 glyphs/brackhalfbotleft.glif +1465420609.0 glyphs/brackhalfbotright.glif +1465420609.0 glyphs/brackhalftopleft.glif +1465420609.0 glyphs/brackhalftopright.glif +1465420609.0 glyphs/breve.glif +1465420609.0 glyphs/breveacutecmb.cap.glif +1465420609.0 glyphs/breveacutecmb.glif +1465420609.0 glyphs/brevebelowcmb.glif +1465420609.0 glyphs/brevecmb.cap.glif +1465420609.0 glyphs/brevecmb.cyr.glif +1465420609.0 glyphs/brevecmb.cyrcap.glif +1465420609.0 glyphs/brevecmb.glif +1465420609.0 glyphs/brevegravecmb.cap.glif +1465420609.0 glyphs/brevegravecmb.glif +1465420609.0 glyphs/brevehoicmb.cap.glif +1465420609.0 glyphs/brevehoicmb.glif +1465420609.0 glyphs/breveinvertedbelowcmb.glif +1465420609.0 glyphs/breveinvertedcmb.cap.glif +1465420609.0 glyphs/breveinvertedcmb.glif +1465420609.0 glyphs/breveinverteddoublecmb.glif +1465420609.0 glyphs/brevetildecmb.cap.glif +1465420609.0 glyphs/brevetildecmb.glif +1465420609.0 glyphs/bridgebelowcmb.glif +1465420609.0 glyphs/bridgeinvertedbelowcmb.glif +1465420609.0 glyphs/brokenbar.glif +1465420609.0 glyphs/bsmall.glif +1465420609.0 glyphs/bstroke.glif +1465420609.0 glyphs/bullet.glif +1465420609.0 glyphs/bulletoperator.glif +1465420609.0 glyphs/bulletsquare.glif +1465420609.0 glyphs/bulletsquarewhite.glif +1465420609.0 glyphs/bulletwhite.glif +1465420609.0 glyphs/c.glif +1465420609.0 glyphs/c.sups.glif +1465420609.0 glyphs/cacute.glif +1465420609.0 glyphs/candrabinducmb.cap.glif +1465420609.0 glyphs/candrabinducmb.glif +1465420609.0 glyphs/careof.glif +1465420609.0 glyphs/caron.a.glif +1465420609.0 glyphs/caron.glif +1465420609.0 glyphs/caronbelowcmb.glif +1465420609.0 glyphs/caroncmb.cap.glif +1465420609.0 glyphs/caroncmb.glif +1465420609.0 glyphs/carondotaccentcmb.cap.glif +1465420609.0 glyphs/carondotaccentcmb.glif +1465420609.0 glyphs/ccaron.glif +1465420609.0 glyphs/ccedilla.glif +1465420609.0 glyphs/ccircumflex.glif +1465420609.0 glyphs/ccurl.glif +1465420609.0 glyphs/cdotaccent.glif +1465420609.0 glyphs/cedi.glif +1465420609.0 glyphs/cedilla.glif +1465420609.0 glyphs/cedillacmb.cap.glif +1465420609.0 glyphs/cedillacmb.glif +1465420609.0 glyphs/ceilingleft.glif +1465420609.0 glyphs/ceilingright.glif +1465420609.0 glyphs/cent.glif +1465420609.0 glyphs/che.glif +1465420609.0 glyphs/check.e.glif +1465420609.0 glyphs/check.glif +1465420609.0 glyphs/checkbox.glif +1465420609.0 glyphs/checkedbox.e.glif +1465420609.0 glyphs/checkedbox.glif +1465420610.0 glyphs/chedescender.glif +1465420610.0 glyphs/chi.glif +1465420610.0 glyphs/circleblack.glif +1465420610.0 glyphs/circledotted.glif +1465420610.0 glyphs/circlewhite.glif +1465420610.0 glyphs/circumflex.glif +1465420610.0 glyphs/circumflexacutecmb.cap.glif +1465420610.0 glyphs/circumflexacutecmb.glif +1465420610.0 glyphs/circumflexbrevecmb.cap.glif +1465420610.0 glyphs/circumflexbrevecmb.glif +1465420610.0 glyphs/circumflexcmb.cap.glif +1465420610.0 glyphs/circumflexcmb.glif +1465420610.0 glyphs/circumflexgravecmb.cap.glif +1465420610.0 glyphs/circumflexgravecmb.glif +1465420610.0 glyphs/circumflexhoicmb.cap.glif +1465420610.0 glyphs/circumflexhoicmb.glif +1465420610.0 glyphs/circumflextildecmb.cap.glif +1465420610.0 glyphs/circumflextildecmb.glif +1465420610.0 glyphs/clickalveolar.glif +1465420610.0 glyphs/clickbilabial.glif +1465420610.0 glyphs/club.e.glif +1465420610.0 glyphs/club.glif +1465420610.0 glyphs/coffee.e.glif +1465420610.0 glyphs/coffee.glif +1465420610.0 glyphs/colon.glif +1465420610.0 glyphs/colon.sups.glif +1465420610.0 glyphs/colonmonetary.glif +1465420610.0 glyphs/colontriangularhalfmod.glif +1465420610.0 glyphs/colontriangularmod.glif +1465420610.0 glyphs/comma.dnom.glif +1465420610.0 glyphs/comma.glif +1465420610.0 glyphs/comma.numr.glif +1465420610.0 glyphs/comma.subs.glif +1465420610.0 glyphs/comma.sups.glif +1465420610.0 glyphs/commaabovecmb.glif +1465420610.0 glyphs/commabelowcmb.a.glif +1465420610.0 glyphs/commabelowcmb.glif +1465420610.0 glyphs/commaturnedabovecmb.glif +1465420610.0 glyphs/commaturnedmod.glif +1465420610.0 glyphs/copyright.glif +1465420610.0 glyphs/currency.glif +1465420610.0 glyphs/d.glif +1465420610.0 glyphs/d.sups.glif +1465420610.0 glyphs/dagger.glif +1465420610.0 glyphs/daggerdbl.glif +1465420610.0 glyphs/darkshade.glif +1465420610.0 glyphs/dbldnhorzbxd.glif +1465420610.0 glyphs/dbldnleftbxd.glif +1465420610.0 glyphs/dbldnrightbxd.glif +1465420610.0 glyphs/dblgravecmb.cap.glif +1465420610.0 glyphs/dblgravecmb.glif +1465420610.0 glyphs/dblhorzbxd.glif +1465420610.0 glyphs/dblprime.glif +1465420610.0 glyphs/dbluphorzbxd.glif +1465420610.0 glyphs/dblupleftbxd.glif +1465420610.0 glyphs/dbluprightbxd.glif +1465420610.0 glyphs/dblvertbxd.glif +1465420610.0 glyphs/dblverthorzbxd.glif +1465420610.0 glyphs/dblvertleftbxd.glif +1465420610.0 glyphs/dblvertrightbxd.glif +1465420610.0 glyphs/dcaron.glif +1465420610.0 glyphs/dcedilla.glif +1465420610.0 glyphs/dcroat.glif +1465420610.0 glyphs/ddotbelow.glif +1465420610.0 glyphs/de.glif +1465420610.0 glyphs/degree.glif +1465420610.0 glyphs/delta.glif +1465420610.0 glyphs/dezh.glif +1465420610.0 glyphs/dhook.glif +1465420610.0 glyphs/dialytikaacute.glif +1465420610.0 glyphs/dialytikagrave.glif +1465420610.0 glyphs/dialytikagravecmb.glif +1465420610.0 glyphs/dialytikatilde.glif +1465420610.0 glyphs/diamond.e.glif +1465420610.0 glyphs/diamond.glif +1465420610.0 glyphs/diamondblack.glif +1465420610.0 glyphs/dieresis.glif +1465420610.0 glyphs/dieresisacutecmb.cap.glif +1465420610.0 glyphs/dieresisacutecmb.glif +1465420610.0 glyphs/dieresisbelowcmb.glif +1465420610.0 glyphs/dieresiscaroncmb.cap.glif +1465420610.0 glyphs/dieresiscaroncmb.glif +1465420610.0 glyphs/dieresiscmb.cap.glif +1465420610.0 glyphs/dieresiscmb.glif +1465420610.0 glyphs/dieresisgravecmb.cap.glif +1465420610.0 glyphs/dieresisgravecmb.glif +1465420610.0 glyphs/dieresismacroncmb.cap.glif +1465420610.0 glyphs/dieresismacroncmb.glif +1465420610.0 glyphs/dieresistildecmb.glif +1465420610.0 glyphs/dieresistonos.glif +1465420610.0 glyphs/dieresistonoscmb.glif +1465420610.0 glyphs/digamma.glif +1465420610.0 glyphs/divide.glif +1465420610.0 glyphs/divisionslash.glif +1465420610.0 glyphs/dje.glif +1465420610.0 glyphs/dlinebelow.glif +1465420610.0 glyphs/dndblhorzsngbxd.glif +1465420610.0 glyphs/dndblleftsngbxd.glif +1465420610.0 glyphs/dndblrightsngbxd.glif +1465420610.0 glyphs/dneighthblock.glif +1465420610.0 glyphs/dnfiveeighthsblock.glif +1465420610.0 glyphs/dnhalfblock.glif +1465420610.0 glyphs/dnheavyhorzlightbxd.glif +1465420610.0 glyphs/dnheavyleftlightbxd.glif +1465420610.0 glyphs/dnheavyleftuplightbxd.glif +1465420610.0 glyphs/dnheavyrightlightbxd.glif +1465420610.0 glyphs/dnheavyrightuplightbxd.glif +1465420610.0 glyphs/dnheavyuphorzlightbxd.glif +1465420610.0 glyphs/dnleftquadrant.glif +1465420610.0 glyphs/dnlighthorzheavybxd.glif +1465420610.0 glyphs/dnlightleftheavybxd.glif +1465420610.0 glyphs/dnlightleftupheavybxd.glif +1465420610.0 glyphs/dnlightrightheavybxd.glif +1465420610.0 glyphs/dnlightrightupheavybxd.glif +1465420610.0 glyphs/dnlightuphorzheavybxd.glif +1465420610.0 glyphs/dnquarterblock.glif +1465420610.0 glyphs/dnrightquadrant.glif +1465420610.0 glyphs/dnseveneighthsblock.glif +1465420610.0 glyphs/dnsnghorzdblbxd.glif +1465420610.0 glyphs/dnsngleftdblbxd.glif +1465420610.0 glyphs/dnsngrightdblbxd.glif +1465420610.0 glyphs/dnthreeeighthsblock.glif +1465420610.0 glyphs/dnthreequartersblock.glif +1465420610.0 glyphs/dollar.a.glif +1465420610.0 glyphs/dollar.glif +1465420610.0 glyphs/dong.glif +1465420610.0 glyphs/dotaccent.glif +1465420610.0 glyphs/dotaccentcmb.cap.glif +1465420610.0 glyphs/dotaccentcmb.glif +1465420610.0 glyphs/dotbelowcmb.glif +1465420610.0 glyphs/dotlessi.a.glif +1465420610.0 glyphs/dotlessi.glif +1465420610.0 glyphs/dotlessj.glif +1465420610.0 glyphs/dotlessjstroke.glif +1465420610.0 glyphs/dotlessjstrokehook.glif +1465420610.0 glyphs/downtackbelowcmb.glif +1465420610.0 glyphs/dtail.glif +1465420610.0 glyphs/dze.glif +1465420610.0 glyphs/dzhe.glif +1465420610.0 glyphs/e.glif +1465420610.0 glyphs/e.sups.glif +1465420610.0 glyphs/eacute.glif +1465420610.0 glyphs/eacute.sups.glif +1465420610.0 glyphs/ebreve.glif +1465420610.0 glyphs/ecaron.glif +1465420610.0 glyphs/ecircumflex.glif +1465420610.0 glyphs/ecircumflexacute.glif +1465420610.0 glyphs/ecircumflexdotbelow.glif +1465420610.0 glyphs/ecircumflexgrave.glif +1465420610.0 glyphs/ecircumflexhoi.glif +1465420610.0 glyphs/ecircumflextilde.glif +1465420610.0 glyphs/ecyr.glif +1465420610.0 glyphs/edieresis.glif +1465420610.0 glyphs/edotaccent.glif +1465420610.0 glyphs/edotbelow.glif +1465420610.0 glyphs/ef.glif +1465420610.0 glyphs/egrave.glif +1465420610.0 glyphs/egrave.sups.glif +1465420610.0 glyphs/ehoi.glif +1465420610.0 glyphs/eight.cap.glif +1465420610.0 glyphs/eight.dnom.glif +1465420610.0 glyphs/eight.glif +1465420610.0 glyphs/eight.numr.glif +1465420610.0 glyphs/eight.onum.glif +1465420610.0 glyphs/eight.subs.glif +1465420610.0 glyphs/eight.sups.glif +1465420610.0 glyphs/eighthnote.glif +1465420610.0 glyphs/el.glif +1465420610.0 glyphs/ellipsis.glif +1465420610.0 glyphs/em.glif +1465420610.0 glyphs/emacron.glif +1465420610.0 glyphs/emacronacute.glif +1465420610.0 glyphs/emdash.glif +1465420610.0 glyphs/emdash.sups.glif +1465420610.0 glyphs/emoji.glif +1465420610.0 glyphs/en.glif +1465420610.0 glyphs/endash.glif +1465420610.0 glyphs/endash.sups.glif +1465420610.0 glyphs/endescender.glif +1465420610.0 glyphs/eng.glif +1465420610.0 glyphs/eogonek.glif +1465420610.0 glyphs/eogonek.sups.glif +1465420610.0 glyphs/eopen.glif +1465420610.0 glyphs/eopenreversed.glif +1465420610.0 glyphs/eopenreversedclosed.glif +1465420610.0 glyphs/epsilon.glif +1465420610.0 glyphs/epsilontonos.glif +1465420610.0 glyphs/equal.glif +1465420610.0 glyphs/equivalence.glif +1465420610.0 glyphs/er.glif +1465420610.0 glyphs/ereversed.glif +1465420610.0 glyphs/es.glif +1465420610.0 glyphs/esdescender.glif +1465420610.0 glyphs/esh.glif +1465420610.0 glyphs/estimated.glif +1465420610.0 glyphs/eta.glif +1465420610.0 glyphs/etatonos.glif +1465420610.0 glyphs/eth.glif +1465420610.0 glyphs/etilde.glif +1465420610.0 glyphs/exclam.glif +1465420610.0 glyphs/exclamdbl.glif +1465420610.0 glyphs/exclamdown.glif +1465420610.0 glyphs/exclamquestion.glif +1465420610.0 glyphs/existential.glif +1465420610.0 glyphs/ezh.glif +1465420610.0 glyphs/f.glif +1465420610.0 glyphs/f.sups.glif +1465420610.0 glyphs/female.glif +1465420610.0 glyphs/fi.glif +1465420610.0 glyphs/figuredash.glif +1465420610.0 glyphs/figurespace.glif +1465420610.0 glyphs/filledrect.glif +1465420610.0 glyphs/fisheye.glif +1465420610.0 glyphs/fita.glif +1465420610.0 glyphs/five.cap.glif +1465420610.0 glyphs/five.dnom.glif +1465420610.0 glyphs/five.glif +1465420610.0 glyphs/five.numr.glif +1465420610.0 glyphs/five.onum.glif +1465420610.0 glyphs/five.subs.glif +1465420610.0 glyphs/five.sups.glif +1465420610.0 glyphs/fiveeighths.glif +1465420610.0 glyphs/fivesixths.glif +1465420610.0 glyphs/fl.glif +1465420610.0 glyphs/floorleft.glif +1465420610.0 glyphs/floorright.glif +1465420610.0 glyphs/florin.glif +1465420610.0 glyphs/four.cap.glif +1465420610.0 glyphs/four.dnom.glif +1465420610.0 glyphs/four.glif +1465420610.0 glyphs/four.numr.glif +1465420610.0 glyphs/four.onum.glif +1465420610.0 glyphs/four.subs.glif +1465420610.0 glyphs/four.sups.glif +1465420610.0 glyphs/fourfifths.glif +1465420610.0 glyphs/fraction.glif +1465420610.0 glyphs/franc.glif +1465420610.0 glyphs/fullblock.glif +1465420610.0 glyphs/g.a.glif +1465420610.0 glyphs/g.glif +1465420610.0 glyphs/g.supa.glif +1465420610.0 glyphs/g.sups.glif +1465420611.0 glyphs/gacute.a.glif +1465420611.0 glyphs/gacute.glif +1465420611.0 glyphs/gamma.glif +1465420611.0 glyphs/gammalatin.glif +1465420611.0 glyphs/gammalatinsupmod.glif +1465420611.0 glyphs/gbreve.a.glif +1465420611.0 glyphs/gbreve.glif +1465420611.0 glyphs/gcaron.a.glif +1465420611.0 glyphs/gcaron.glif +1465420611.0 glyphs/gcircumflex.a.glif +1465420611.0 glyphs/gcircumflex.glif +1465420611.0 glyphs/gcommaaccent.a.glif +1465420611.0 glyphs/gcommaaccent.glif +1465420611.0 glyphs/gdotaccent.a.glif +1465420611.0 glyphs/gdotaccent.glif +1465420611.0 glyphs/germandbls.glif +1465420611.0 glyphs/ghe.glif +1465420611.0 glyphs/ghestroke.glif +1465420611.0 glyphs/gheup.glif +1465420611.0 glyphs/ghook.glif +1465420611.0 glyphs/gje.glif +1465420611.0 glyphs/glottalstop.glif +1465420611.0 glyphs/glottalstopreversed.glif +1465420611.0 glyphs/glottalstopreversedmod.glif +1465420611.0 glyphs/glottalstopreversedsupmod.glif +1465420611.0 glyphs/glottalstopstroke.glif +1465420611.0 glyphs/glottalstopstrokereversed.glif +1465420611.0 glyphs/gmacron.a.glif +1465420611.0 glyphs/gmacron.glif +1465420611.0 glyphs/grave.glif +1465420611.0 glyphs/gravecmb.cap.glif +1465420611.0 glyphs/gravecmb.glif +1465420611.0 glyphs/gravemod.glif +1465420611.0 glyphs/greater.glif +1465420611.0 glyphs/greaterequal.glif +1465420611.0 glyphs/gscript.glif +1465420611.0 glyphs/gsmall.glif +1465420611.0 glyphs/gtilde.a.glif +1465420611.0 glyphs/gtilde.glif +1465420611.0 glyphs/guarani.glif +1465420611.0 glyphs/guillemotleft.glif +1465420611.0 glyphs/guillemotright.glif +1465420611.0 glyphs/guilsinglleft.glif +1465420611.0 glyphs/guilsinglright.glif +1465420611.0 glyphs/h.glif +1465420611.0 glyphs/h.sups.glif +1465420611.0 glyphs/ha.glif +1465420611.0 glyphs/hadescender.glif +1465420611.0 glyphs/hard.glif +1465420611.0 glyphs/hbar.glif +1465420611.0 glyphs/hbrevebelow.glif +1465420611.0 glyphs/hcedilla.glif +1465420611.0 glyphs/hcircumflex.glif +1465420611.0 glyphs/hdieresis.glif +1465420611.0 glyphs/hdotbelow.glif +1465420611.0 glyphs/heart.e.glif +1465420611.0 glyphs/heart.glif +1465420611.0 glyphs/heartblackheavy.e.glif +1465420611.0 glyphs/heartblackheavy.glif +1465420611.0 glyphs/heavydbldashhorzbxd.glif +1465420611.0 glyphs/heavydbldashvertbxd.glif +1465420611.0 glyphs/heavydnbxd.glif +1465420611.0 glyphs/heavydnhorzbxd.glif +1465420611.0 glyphs/heavydnleftbxd.glif +1465420611.0 glyphs/heavydnrightbxd.glif +1465420611.0 glyphs/heavyhorzbxd.glif +1465420611.0 glyphs/heavyleftbxd.glif +1465420611.0 glyphs/heavyleftlightrightbxd.glif +1465420611.0 glyphs/heavyquaddashhorzbxd.glif +1465420611.0 glyphs/heavyquaddashvertbxd.glif +1465420611.0 glyphs/heavyrightbxd.glif +1465420611.0 glyphs/heavytrpldashhorzbxd.glif +1465420611.0 glyphs/heavytrpldashvertbxd.glif +1465420611.0 glyphs/heavyupbxd.glif +1465420611.0 glyphs/heavyuphorzbxd.glif +1465420611.0 glyphs/heavyupleftbxd.glif +1465420611.0 glyphs/heavyuplightdnbxd.glif +1465420611.0 glyphs/heavyuprightbxd.glif +1465420611.0 glyphs/heavyvertbxd.glif +1465420611.0 glyphs/heavyverthorzbxd.glif +1465420611.0 glyphs/heavyvertleftbxd.glif +1465420611.0 glyphs/heavyvertrightbxd.glif +1465420611.0 glyphs/henghook.glif +1465420611.0 glyphs/hhook.glif +1465420611.0 glyphs/hhook.sups.glif +1465420611.0 glyphs/hlinebelow.glif +1465420611.0 glyphs/hoicmb.cap.glif +1465420611.0 glyphs/hoicmb.glif +1465420611.0 glyphs/hookrhoticmod.glif +1465420611.0 glyphs/horizontalbar.glif +1465420611.0 glyphs/horncmb.glif +1465420611.0 glyphs/house.glif +1465420611.0 glyphs/hryvnia.glif +1465420611.0 glyphs/hsmall.glif +1465420611.0 glyphs/hturned.glif +1465420611.0 glyphs/hungarumlaut.glif +1465420611.0 glyphs/hungarumlautcmb.cap.glif +1465420611.0 glyphs/hungarumlautcmb.glif +1465420611.0 glyphs/hyphen.a.glif +1465420611.0 glyphs/hyphen.glif +1465420611.0 glyphs/hyphen.sups.glif +1465420611.0 glyphs/hyphentwo.a.glif +1465420611.0 glyphs/hyphentwo.glif +1465420611.0 glyphs/i.a.glif +1465420611.0 glyphs/i.glif +1465420611.0 glyphs/i.supa.glif +1465420611.0 glyphs/i.sups.glif +1465420611.0 glyphs/iacute.a.glif +1465420611.0 glyphs/iacute.glif +1465420611.0 glyphs/ibreve.a.glif +1465420611.0 glyphs/ibreve.glif +1465420611.0 glyphs/icaron.a.glif +1465420611.0 glyphs/icaron.glif +1465420611.0 glyphs/icircumflex.a.glif +1465420611.0 glyphs/icircumflex.glif +1465420611.0 glyphs/icyr.glif +1465420611.0 glyphs/idieresis.a.glif +1465420611.0 glyphs/idieresis.glif +1465420611.0 glyphs/idotbelow.a.glif +1465420611.0 glyphs/idotbelow.glif +1465420611.0 glyphs/ie.glif +1465420611.0 glyphs/iebreve.glif +1465420611.0 glyphs/iegrave.glif +1465420611.0 glyphs/ieukran.glif +1465420611.0 glyphs/igrave.a.glif +1465420611.0 glyphs/igrave.glif +1465420611.0 glyphs/igravecyr.glif +1465420611.0 glyphs/ihoi.a.glif +1465420611.0 glyphs/ihoi.glif +1465420611.0 glyphs/ij.glif +1465420611.0 glyphs/ijacute.glif +1465420611.0 glyphs/imacron.a.glif +1465420611.0 glyphs/imacron.glif +1465420611.0 glyphs/imacroncyr.glif +1465420611.0 glyphs/infinity.glif +1465420611.0 glyphs/integral.glif +1465420611.0 glyphs/integralbt.glif +1465420611.0 glyphs/integraltp.glif +1465420611.0 glyphs/interrobang.glif +1465420611.0 glyphs/interrobangdown.glif +1465420611.0 glyphs/intersection.glif +1465420611.0 glyphs/invbullet.glif +1465420611.0 glyphs/invcircle.glif +1465420611.0 glyphs/invsmileface.e.glif +1465420611.0 glyphs/invsmileface.glif +1465420611.0 glyphs/io.glif +1465420611.0 glyphs/iogonek.a.glif +1465420611.0 glyphs/iogonek.d.glif +1465420611.0 glyphs/iogonek.da.glif +1465420611.0 glyphs/iogonek.glif +1465420611.0 glyphs/iota.glif +1465420611.0 glyphs/iotaadscript.glif +1465420611.0 glyphs/iotadieresis.glif +1465420611.0 glyphs/iotadieresistonos.glif +1465420611.0 glyphs/iotasubscript.glif +1465420611.0 glyphs/iotasubscriptcmb.glif +1465420611.0 glyphs/iotatonos.glif +1465420611.0 glyphs/ishort.glif +1465420611.0 glyphs/ismall.glif +1465420611.0 glyphs/istroke.a.glif +1465420611.0 glyphs/istroke.d.glif +1465420611.0 glyphs/istroke.da.glif +1465420611.0 glyphs/istroke.glif +1465420611.0 glyphs/itilde.a.glif +1465420611.0 glyphs/itilde.glif +1465420611.0 glyphs/iukran.a.glif +1465420611.0 glyphs/iukran.glif +1465420611.0 glyphs/izhitsa.glif +1465420611.0 glyphs/j.glif +1465420611.0 glyphs/j.sups.glif +1465420611.0 glyphs/jcircumflex.glif +1465420611.0 glyphs/jcrossedtail.d.glif +1465420611.0 glyphs/jcrossedtail.glif +1465420611.0 glyphs/je.glif +1465420611.0 glyphs/k.glif +1465420611.0 glyphs/k.sups.glif +1465420611.0 glyphs/ka.glif +1465420611.0 glyphs/kabashkir.glif +1465420611.0 glyphs/kadescender.glif +1465420611.0 glyphs/kai.glif +1465420611.0 glyphs/kappa.glif +1465420611.0 glyphs/kcommaaccent.glif +1465420611.0 glyphs/kdotbelow.glif +1465420611.0 glyphs/kgreenlandic.glif +1465420611.0 glyphs/kje.glif +1465420611.0 glyphs/klinebelow.glif +1465420611.0 glyphs/koppa.glif +1465420611.0 glyphs/kturned.glif +1465420611.0 glyphs/l.a.glif +1465420611.0 glyphs/l.glif +1465420611.0 glyphs/l.sups.glif +1465420611.0 glyphs/lacute.a.glif +1465420611.0 glyphs/lacute.glif +1465420611.0 glyphs/lambda.glif +1465420611.0 glyphs/lbelt.a.glif +1465420611.0 glyphs/lbelt.glif +1465420611.0 glyphs/lcaron.a.glif +1465420611.0 glyphs/lcaron.glif +1465420611.0 glyphs/lcat.a.glif +1465420611.0 glyphs/lcat.glif +1465420611.0 glyphs/lcommaaccent.a.glif +1465420611.0 glyphs/lcommaaccent.glif +1465420611.0 glyphs/ldot.a.glif +1465420611.0 glyphs/ldot.glif +1465420611.0 glyphs/ldotbelow.a.glif +1465420611.0 glyphs/ldotbelow.glif +1465420611.0 glyphs/ldotbelowmacron.a.glif +1465420611.0 glyphs/ldotbelowmacron.glif +1465420611.0 glyphs/leftangleabovecmb.glif +1465420611.0 glyphs/leftdnheavyrightuplightbxd.glif +1465420611.0 glyphs/lefteighthblock.glif +1465420611.0 glyphs/leftfiveeighthsblock.glif +1465420611.0 glyphs/lefthalfblock.glif +1465420611.0 glyphs/leftheavyrightdnlightbxd.glif +1465420611.0 glyphs/leftheavyrightuplightbxd.glif +1465420611.0 glyphs/leftheavyrightvertlightbxd.glif +1465420611.0 glyphs/leftlightrightdnheavybxd.glif +1465420611.0 glyphs/leftlightrightupheavybxd.glif +1465420611.0 glyphs/leftlightrightvertheavybxd.glif +1465420611.0 glyphs/leftquarterblock.glif +1465420611.0 glyphs/leftseveneighthsblock.glif +1465420611.0 glyphs/lefttackbelowcmb.glif +1465420611.0 glyphs/leftthreeeighthsblock.glif +1465420611.0 glyphs/leftthreequartersblock.glif +1465420611.0 glyphs/leftupheavyrightdnlightbxd.glif +1465420611.0 glyphs/lenis.cap.glif +1465420611.0 glyphs/lenis.glif +1465420611.0 glyphs/lenisacute.cap.glif +1465420611.0 glyphs/lenisacute.glif +1465420611.0 glyphs/lenisacutecmb.glif +1465420611.0 glyphs/leniscmb.glif +1465420611.0 glyphs/lenisgrave.cap.glif +1465420611.0 glyphs/lenisgrave.glif +1465420611.0 glyphs/lenisgravecmb.glif +1465420611.0 glyphs/lenistilde.cap.glif +1465420611.0 glyphs/lenistilde.glif +1465420611.0 glyphs/lenistildecmb.glif +1465420611.0 glyphs/less.glif +1465420611.0 glyphs/lessequal.glif +1465420611.0 glyphs/lezh.glif +1465420611.0 glyphs/lightarcdnleftbxd.glif +1465420611.0 glyphs/lightarcdnrightbxd.glif +1465420611.0 glyphs/lightarcupleftbxd.glif +1465420611.0 glyphs/lightarcuprightbxd.glif +1465420611.0 glyphs/lightdbldashhorzbxd.glif +1465420611.0 glyphs/lightdbldashvertbxd.glif +1465420611.0 glyphs/lightdiagcrossbxd.glif +1465420611.0 glyphs/lightdiagupleftdnrightbxd.glif +1465420611.0 glyphs/lightdiaguprightdnleftbxd.glif +1465420611.0 glyphs/lightdnbxd.glif +1465420611.0 glyphs/lightdnhorzbxd.glif +1465420611.0 glyphs/lightdnleftbxd.glif +1465420611.0 glyphs/lightdnrightbxd.glif +1465420611.0 glyphs/lighthorzbxd.glif +1465420611.0 glyphs/lightleftbxd.glif +1465420611.0 glyphs/lightleftheavyrightbxd.glif +1465420611.0 glyphs/lightquaddashhorzbxd.glif +1465420611.0 glyphs/lightquaddashvertbxd.glif +1465420612.0 glyphs/lightrightbxd.glif +1465420612.0 glyphs/lightshade.glif +1465420612.0 glyphs/lighttrpldashhorzbxd.glif +1465420612.0 glyphs/lighttrpldashvertbxd.glif +1465420612.0 glyphs/lightupbxd.glif +1465420612.0 glyphs/lightupheavydnbxd.glif +1465420612.0 glyphs/lightuphorzbxd.glif +1465420612.0 glyphs/lightupleftbxd.glif +1465420612.0 glyphs/lightuprightbxd.glif +1465420612.0 glyphs/lightvertbxd.glif +1465420612.0 glyphs/lightverthorzbxd.glif +1465420612.0 glyphs/lightvertleftbxd.glif +1465420612.0 glyphs/lightvertrightbxd.glif +1465420612.0 glyphs/lira.glif +1465420612.0 glyphs/liraturkish.glif +1465420612.0 glyphs/litre.glif +1465420612.0 glyphs/lje.glif +1465420612.0 glyphs/llinebelow.a.glif +1465420612.0 glyphs/llinebelow.glif +1465420612.0 glyphs/lmiddletilde.a.glif +1465420612.0 glyphs/lmiddletilde.glif +1465420612.0 glyphs/lock.e.glif +1465420612.0 glyphs/lock.glif +1465420612.0 glyphs/logicalnot.glif +1465420612.0 glyphs/longs.glif +1465420612.0 glyphs/lownumeralsign.glif +1465420612.0 glyphs/lozenge.glif +1465420612.0 glyphs/lretroflex.glif +1465420612.0 glyphs/lslash.a.glif +1465420612.0 glyphs/lslash.glif +1465420612.0 glyphs/lsmall.glif +1465420612.0 glyphs/m.glif +1465420612.0 glyphs/m.sups.glif +1465420612.0 glyphs/macron.glif +1465420612.0 glyphs/macronacutecmb.cap.glif +1465420612.0 glyphs/macronacutecmb.glif +1465420612.0 glyphs/macronbelowcmb.glif +1465420612.0 glyphs/macroncmb.cap.glif +1465420612.0 glyphs/macroncmb.glif +1465420612.0 glyphs/macrondoublebelowcmb.glif +1465420612.0 glyphs/macronmod.glif +1465420612.0 glyphs/macute.glif +1465420612.0 glyphs/male.glif +1465420612.0 glyphs/mdotaccent.glif +1465420612.0 glyphs/mdotbelow.glif +1465420612.0 glyphs/mediumshade.glif +1465420612.0 glyphs/mhook.glif +1465420612.0 glyphs/minus.glif +1465420612.0 glyphs/minusbelowcmb.glif +1465420612.0 glyphs/mlonglegturned.glif +1465420612.0 glyphs/mturned.glif +1465420612.0 glyphs/mu.glif +1465420612.0 glyphs/mu.math.glif +1465420612.0 glyphs/multiply.glif +1465420612.0 glyphs/musicalnotedbl.glif +1465420612.0 glyphs/n.glif +1465420612.0 glyphs/n.sups.glif +1465420612.0 glyphs/nacute.glif +1465420612.0 glyphs/naira.glif +1465420612.0 glyphs/napostrophe.glif +1465420612.0 glyphs/nbspace.frac.glif +1465420612.0 glyphs/nbspace.glif +1465420612.0 glyphs/ncaron.glif +1465420612.0 glyphs/ncommaaccent.glif +1465420612.0 glyphs/ndotaccent.glif +1465420612.0 glyphs/ndotbelow.glif +1465420612.0 glyphs/ngrave.glif +1465420612.0 glyphs/nhookleft.glif +1465420612.0 glyphs/nine.cap.glif +1465420612.0 glyphs/nine.dnom.glif +1465420612.0 glyphs/nine.glif +1465420612.0 glyphs/nine.numr.glif +1465420612.0 glyphs/nine.onum.glif +1465420612.0 glyphs/nine.subs.glif +1465420612.0 glyphs/nine.sups.glif +1465420612.0 glyphs/nje.glif +1465420612.0 glyphs/nlinebelow.glif +1465420612.0 glyphs/notemusical.e.glif +1465420612.0 glyphs/notemusical.glif +1465420612.0 glyphs/notequal.glif +1465420612.0 glyphs/notesmusical.e.glif +1465420612.0 glyphs/notesmusical.glif +1465420612.0 glyphs/nretroflex.glif +1465420612.0 glyphs/nsmall.glif +1465420612.0 glyphs/ntilde.glif +1465420612.0 glyphs/nu.glif +1465420612.0 glyphs/numbersign.glif +1465420612.0 glyphs/numeralsign.glif +1465420612.0 glyphs/numero.glif +1465420612.0 glyphs/o.glif +1465420612.0 glyphs/o.sups.glif +1465420612.0 glyphs/oacute.glif +1465420612.0 glyphs/obar.glif +1465420612.0 glyphs/obarcyr.glif +1465420612.0 glyphs/obreve.glif +1465420612.0 glyphs/ocaron.glif +1465420612.0 glyphs/ocircumflex.glif +1465420612.0 glyphs/ocircumflexacute.glif +1465420612.0 glyphs/ocircumflexdotbelow.glif +1465420612.0 glyphs/ocircumflexgrave.glif +1465420612.0 glyphs/ocircumflexhoi.glif +1465420612.0 glyphs/ocircumflextilde.glif +1465420612.0 glyphs/ocyr.glif +1465420612.0 glyphs/odieresis.glif +1465420612.0 glyphs/odieresiscyr.glif +1465420612.0 glyphs/odotbelow.glif +1465420612.0 glyphs/oe.glif +1465420612.0 glyphs/oesmall.glif +1465420612.0 glyphs/ogonek.glif +1465420612.0 glyphs/ogonekcmb.cap.glif +1465420612.0 glyphs/ogonekcmb.glif +1465420612.0 glyphs/ograve.glif +1465420612.0 glyphs/ohoi.glif +1465420612.0 glyphs/ohorn.glif +1465420612.0 glyphs/ohornacute.glif +1465420612.0 glyphs/ohorndotbelow.glif +1465420612.0 glyphs/ohorngrave.glif +1465420612.0 glyphs/ohornhoi.glif +1465420612.0 glyphs/ohorntilde.glif +1465420612.0 glyphs/ohungarumlaut.glif +1465420612.0 glyphs/omacron.glif +1465420612.0 glyphs/omacronacute.glif +1465420612.0 glyphs/omega.glif +1465420612.0 glyphs/omegatonos.glif +1465420612.0 glyphs/omicron.glif +1465420612.0 glyphs/omicrontonos.glif +1465420612.0 glyphs/one.a.glif +1465420612.0 glyphs/one.ac.glif +1465420612.0 glyphs/one.ao.glif +1465420612.0 glyphs/one.cap.glif +1465420612.0 glyphs/one.dnom.glif +1465420612.0 glyphs/one.glif +1465420612.0 glyphs/one.numr.glif +1465420612.0 glyphs/one.onum.glif +1465420612.0 glyphs/one.subs.glif +1465420612.0 glyphs/one.sups.glif +1465420612.0 glyphs/oneeighth.glif +1465420612.0 glyphs/onefifth.glif +1465420612.0 glyphs/onehalf.glif +1465420612.0 glyphs/oneninth.glif +1465420612.0 glyphs/onequarter.glif +1465420612.0 glyphs/oneseventh.glif +1465420612.0 glyphs/onesixth.glif +1465420612.0 glyphs/onetenth.glif +1465420612.0 glyphs/onethird.glif +1465420612.0 glyphs/oogonek.glif +1465420612.0 glyphs/oopen.glif +1465420612.0 glyphs/ordfeminine.a.glif +1465420612.0 glyphs/ordfeminine.glif +1465420612.0 glyphs/ordmasculine.glif +1465420612.0 glyphs/orthogonal.glif +1465420612.0 glyphs/oslash.glif +1465420612.0 glyphs/oslashacute.glif +1465420612.0 glyphs/otilde.glif +1465420612.0 glyphs/overline.glif +1465420612.0 glyphs/overlinecmb.cap.glif +1465420612.0 glyphs/overlinecmb.glif +1465420612.0 glyphs/oxia.cap.glif +1465420612.0 glyphs/oxia.glif +1465420612.0 glyphs/p.glif +1465420612.0 glyphs/p.sups.glif +1465420612.0 glyphs/palochka.a.glif +1465420612.0 glyphs/palochka.glif +1465420612.0 glyphs/paragraph.glif +1465420612.0 glyphs/parenleft.dnom.glif +1465420612.0 glyphs/parenleft.glif +1465420612.0 glyphs/parenleft.numr.glif +1465420612.0 glyphs/parenleft.subs.glif +1465420612.0 glyphs/parenleft.sups.glif +1465420612.0 glyphs/parenright.dnom.glif +1465420612.0 glyphs/parenright.glif +1465420612.0 glyphs/parenright.numr.glif +1465420612.0 glyphs/parenright.subs.glif +1465420612.0 glyphs/parenright.sups.glif +1465420612.0 glyphs/partialdiff.glif +1465420612.0 glyphs/pe.glif +1465420612.0 glyphs/percent.glif +1465420612.0 glyphs/period.dnom.glif +1465420612.0 glyphs/period.glif +1465420612.0 glyphs/period.numr.glif +1465420612.0 glyphs/period.subs.glif +1465420612.0 glyphs/period.sups.glif +1465420612.0 glyphs/periodcentered.glif +1465420612.0 glyphs/perispomeni.glif +1465420612.0 glyphs/perispomenicmb.cap.glif +1465420612.0 glyphs/perispomenicmb.glif +1465420612.0 glyphs/perthousand.glif +1465420612.0 glyphs/peseta.glif +1465420612.0 glyphs/peso.glif +1465420612.0 glyphs/phi.a.glif +1465420612.0 glyphs/phi.glif +1465420612.0 glyphs/phi.math.glif +1465420612.0 glyphs/philatin.glif +1465420612.0 glyphs/pi.glif +1465420612.0 glyphs/plus.glif +1465420612.0 glyphs/plusbelowcmb.glif +1465420612.0 glyphs/plusminus.glif +1465420612.0 glyphs/pointerblackleft.glif +1465420612.0 glyphs/pointerblackright.glif +1465420612.0 glyphs/poop.e.glif +1465420612.0 glyphs/poop.glif +1465420612.0 glyphs/prime.glif +1465420612.0 glyphs/primemod.glif +1465420612.0 glyphs/primereversed.glif +1465420612.0 glyphs/product.glif +1465420612.0 glyphs/proportion.glif +1465420612.0 glyphs/psi.glif +1465420612.0 glyphs/psili.glif +1465420612.0 glyphs/q.glif +1465420612.0 glyphs/q.sups.glif +1465420612.0 glyphs/question.glif +1465420612.0 glyphs/questiondbl.glif +1465420612.0 glyphs/questiondown.glif +1465420612.0 glyphs/questionexclam.glif +1465420612.0 glyphs/questiongreek.glif +1465420612.0 glyphs/quotedbl.glif +1465420612.0 glyphs/quotedblbase.glif +1465420612.0 glyphs/quotedblleft.glif +1465420612.0 glyphs/quotedblright.glif +1465420612.0 glyphs/quoteleft.glif +1465420612.0 glyphs/quotereversed.glif +1465420612.0 glyphs/quoteright.glif +1465420612.0 glyphs/quotesinglbase.glif +1465420612.0 glyphs/quotesingle.glif +1465420612.0 glyphs/r.glif +1465420612.0 glyphs/r.sups.glif +1465420612.0 glyphs/racute.glif +1465420612.0 glyphs/radical.glif +1465420612.0 glyphs/ramshorn.glif +1465420612.0 glyphs/rcaron.glif +1465420612.0 glyphs/rcommaaccent.glif +1465420612.0 glyphs/rdotaccent.glif +1465420612.0 glyphs/rdotbelow.glif +1465420612.0 glyphs/rdotbelowmacron.glif +1465420612.0 glyphs/registered.glif +1465420612.0 glyphs/revlogicalnot.glif +1465420612.0 glyphs/rfishhook.glif +1465420612.0 glyphs/rho.glif +1465420612.0 glyphs/rhookturned.glif +1465420612.0 glyphs/rightdnheavyleftuplightbxd.glif +1465420612.0 glyphs/righteighthblock.glif +1465420612.0 glyphs/righthalfblock.glif +1465420612.0 glyphs/rightheavyleftdnlightbxd.glif +1465420612.0 glyphs/rightheavyleftuplightbxd.glif +1465420612.0 glyphs/rightheavyleftvertlightbxd.glif +1465420612.0 glyphs/rightlightleftdnheavybxd.glif +1465420612.0 glyphs/rightlightleftupheavybxd.glif +1465420613.0 glyphs/rightlightleftvertheavybxd.glif +1465420613.0 glyphs/righttackbelowcmb.glif +1465420613.0 glyphs/rightupheavyleftdnlightbxd.glif +1465420613.0 glyphs/ring.glif +1465420613.0 glyphs/ringbelowcmb.glif +1465420613.0 glyphs/ringcmb.cap.glif +1465420613.0 glyphs/ringcmb.glif +1465420613.0 glyphs/ringhalfleftbelowcmb.glif +1465420613.0 glyphs/ringhalfleftmod.glif +1465420613.0 glyphs/ringhalfrightbelowcmb.glif +1465420613.0 glyphs/ringhalfrightmod.glif +1465420613.0 glyphs/rlinebelow.glif +1465420613.0 glyphs/rlonglegturned.glif +1465420613.0 glyphs/robot.e.glif +1465420613.0 glyphs/robot.glif +1465420613.0 glyphs/rsmall.glif +1465420613.0 glyphs/rsmallinverted.glif +1465420613.0 glyphs/rtail.glif +1465420613.0 glyphs/rturned.glif +1465420613.0 glyphs/ruble.glif +1465420613.0 glyphs/rupeeindian.glif +1465420613.0 glyphs/s.glif +1465420613.0 glyphs/s.sups.glif +1465420613.0 glyphs/sacute.glif +1465420613.0 glyphs/sampi.glif +1465420613.0 glyphs/scaron.glif +1465420613.0 glyphs/scarondot.glif +1465420613.0 glyphs/scedilla.glif +1465420613.0 glyphs/schwa.glif +1465420613.0 glyphs/schwa.sups.glif +1465420613.0 glyphs/schwacyr.glif +1465420613.0 glyphs/schwahookrhotic.glif +1465420613.0 glyphs/scircumflex.glif +1465420613.0 glyphs/scommaaccent.glif +1465420613.0 glyphs/sdotaccent.glif +1465420613.0 glyphs/sdotbelow.glif +1465420613.0 glyphs/seagullbelowcmb.glif +1465420613.0 glyphs/section.glif +1465420613.0 glyphs/semicolon.glif +1465420613.0 glyphs/servicemark.glif +1465420613.0 glyphs/seven.cap.glif +1465420613.0 glyphs/seven.dnom.glif +1465420613.0 glyphs/seven.glif +1465420613.0 glyphs/seven.numr.glif +1465420613.0 glyphs/seven.onum.glif +1465420613.0 glyphs/seven.subs.glif +1465420613.0 glyphs/seven.sups.glif +1465420613.0 glyphs/seveneighths.glif +1465420613.0 glyphs/sfthyphen.a.glif +1465420613.0 glyphs/sfthyphen.glif +1465420613.0 glyphs/sha.glif +1465420613.0 glyphs/shcha.glif +1465420613.0 glyphs/shha.glif +1465420613.0 glyphs/shook.glif +1465420613.0 glyphs/sigma.end.glif +1465420613.0 glyphs/sigma.glif +1465420613.0 glyphs/six.cap.glif +1465420613.0 glyphs/six.dnom.glif +1465420613.0 glyphs/six.glif +1465420613.0 glyphs/six.numr.glif +1465420613.0 glyphs/six.onum.glif +1465420613.0 glyphs/six.subs.glif +1465420613.0 glyphs/six.sups.glif +1465420613.0 glyphs/slash.frac.glif +1465420613.0 glyphs/slash.glif +1465420613.0 glyphs/smileface.e.glif +1465420613.0 glyphs/smileface.glif +1465420613.0 glyphs/soft.glif +1465420613.0 glyphs/soundcopyright.glif +1465420613.0 glyphs/space.frac.glif +1465420613.0 glyphs/space.glif +1465420613.0 glyphs/spade.e.glif +1465420613.0 glyphs/spade.glif +1465420613.0 glyphs/squarebelowcmb.glif +1465420613.0 glyphs/squareblack.glif +1465420613.0 glyphs/squareshadow.glif +1465420613.0 glyphs/squarewhite.glif +1465420613.0 glyphs/sterling.glif +1465420613.0 glyphs/stigma.glif +1465420613.0 glyphs/summation.glif +1465420613.0 glyphs/sun.glif +1465420613.0 glyphs/t.glif +1465420613.0 glyphs/t.sups.glif +1465420613.0 glyphs/tau.glif +1465420613.0 glyphs/tbar.glif +1465420613.0 glyphs/tcaron.glif +1465420613.0 glyphs/tcedilla.glif +1465420613.0 glyphs/tcommaaccent.glif +1465420613.0 glyphs/tdieresis.glif +1465420613.0 glyphs/tdotbelow.glif +1465420613.0 glyphs/te.glif +1465420613.0 glyphs/tenge.glif +1465420613.0 glyphs/tesh.glif +1465420613.0 glyphs/text.glif +1465420613.0 glyphs/theta.a.glif +1465420613.0 glyphs/theta.glif +1465420613.0 glyphs/thorn.glif +1465420613.0 glyphs/three.cap.glif +1465420613.0 glyphs/three.dnom.glif +1465420613.0 glyphs/three.glif +1465420613.0 glyphs/three.numr.glif +1465420613.0 glyphs/three.onum.glif +1465420613.0 glyphs/three.subs.glif +1465420613.0 glyphs/three.sups.glif +1465420613.0 glyphs/threeeighths.glif +1465420613.0 glyphs/threefifths.glif +1465420613.0 glyphs/threequarters.glif +1465420613.0 glyphs/tilde.glif +1465420613.0 glyphs/tildebelowcmb.glif +1465420613.0 glyphs/tildecmb.cap.glif +1465420613.0 glyphs/tildecmb.glif +1465420613.0 glyphs/tildeoverlaycmb.glif +1465420613.0 glyphs/tlinebelow.glif +1465420613.0 glyphs/tonos.cap.glif +1465420613.0 glyphs/tonos.glif +1465420613.0 glyphs/tonoscmb.glif +1465420613.0 glyphs/trademark.glif +1465420613.0 glyphs/tretroflex.glif +1465420613.0 glyphs/triangledownblack.glif +1465420613.0 glyphs/triangledownwhite.glif +1465420613.0 glyphs/triangleleftblack.glif +1465420613.0 glyphs/triangleleftwhite.glif +1465420613.0 glyphs/trianglerightblack.glif +1465420613.0 glyphs/trianglerightwhite.glif +1465420613.0 glyphs/trianglesmalldownblack.glif +1465420613.0 glyphs/trianglesmalldownwhite.glif +1465420613.0 glyphs/trianglesmallleftblack.glif +1465420613.0 glyphs/trianglesmallleftwhite.glif +1465420613.0 glyphs/trianglesmallrightblack.glif +1465420613.0 glyphs/trianglesmallrightwhite.glif +1465420613.0 glyphs/trianglesmallupblack.glif +1465420613.0 glyphs/trianglesmallupwhite.glif +1465420613.0 glyphs/triangleupblack.glif +1465420613.0 glyphs/triangleupwhite.glif +1465420613.0 glyphs/ts.glif +1465420613.0 glyphs/tse.glif +1465420613.0 glyphs/tshe.glif +1465420613.0 glyphs/tturned.glif +1465420613.0 glyphs/tugrik.glif +1465420613.0 glyphs/two.cap.glif +1465420613.0 glyphs/two.dnom.glif +1465420613.0 glyphs/two.glif +1465420613.0 glyphs/two.numr.glif +1465420613.0 glyphs/two.onum.glif +1465420613.0 glyphs/two.subs.glif +1465420613.0 glyphs/two.sups.glif +1465420613.0 glyphs/twofifths.glif +1465420613.0 glyphs/twothirds.glif +1465420613.0 glyphs/u.glif +1465420613.0 glyphs/u.sups.glif +1465420613.0 glyphs/uacute.glif +1465420613.0 glyphs/uacutedblcyr.glif +1465420613.0 glyphs/ubar.glif +1465420613.0 glyphs/ubreve.glif +1465420613.0 glyphs/ucaron.glif +1465420613.0 glyphs/ucircumflex.glif +1465420613.0 glyphs/ucyr.glif +1465420613.0 glyphs/udieresis.glif +1465420613.0 glyphs/udieresisacute.glif +1465420613.0 glyphs/udieresiscaron.glif +1465420613.0 glyphs/udieresisgrave.glif +1465420613.0 glyphs/udieresismacron.glif +1465420613.0 glyphs/udotbelow.glif +1465420613.0 glyphs/ugrave.glif +1465420613.0 glyphs/uhoi.glif +1465420613.0 glyphs/uhorn.glif +1465420613.0 glyphs/uhornacute.glif +1465420613.0 glyphs/uhorndotbelow.glif +1465420613.0 glyphs/uhorngrave.glif +1465420613.0 glyphs/uhornhoi.glif +1465420613.0 glyphs/uhorntilde.glif +1465420613.0 glyphs/uhungarumlaut.glif +1465420613.0 glyphs/umacron.glif +1465420613.0 glyphs/umacroncyr.glif +1465420613.0 glyphs/underscore.glif +1465420613.0 glyphs/underscoredbl.glif +1465420613.0 glyphs/undertie.glif +1465420613.0 glyphs/uniE_0A_0.glif +1465420613.0 glyphs/uniE_0A_1.glif +1465420613.0 glyphs/uniE_0A_2.glif +1465420613.0 glyphs/uniE_0B_0.glif +1465420613.0 glyphs/uniE_0B_1.glif +1465420613.0 glyphs/uniE_0B_2.glif +1465420613.0 glyphs/uniE_0B_3.glif +1465420613.0 glyphs/universal.glif +1465420613.0 glyphs/uogonek.glif +1465420613.0 glyphs/updblhorzsngbxd.glif +1465420613.0 glyphs/updblleftsngbxd.glif +1465420613.0 glyphs/updblrightsngbxd.glif +1465420613.0 glyphs/upeighthblock.glif +1465420613.0 glyphs/uphalfblock.glif +1465420613.0 glyphs/upheavydnhorzlightbxd.glif +1465420613.0 glyphs/upheavyhorzlightbxd.glif +1465420613.0 glyphs/upheavyleftdnlightbxd.glif +1465420613.0 glyphs/upheavyleftlightbxd.glif +1465420613.0 glyphs/upheavyrightdnlightbxd.glif +1465420613.0 glyphs/upheavyrightlightbxd.glif +1465420613.0 glyphs/upleftdnleftdnrightquadrant.glif +1465420613.0 glyphs/upleftdnrightquadrant.glif +1465420613.0 glyphs/upleftquadrant.glif +1465420613.0 glyphs/upleftuprightdnleftquadrant.glif +1465420613.0 glyphs/upleftuprightdnrightquadrant.glif +1465420613.0 glyphs/uplightdnhorzheavybxd.glif +1465420613.0 glyphs/uplighthorzheavybxd.glif +1465420613.0 glyphs/uplightleftdnheavybxd.glif +1465420613.0 glyphs/uplightleftheavybxd.glif +1465420613.0 glyphs/uplightrightdnheavybxd.glif +1465420613.0 glyphs/uplightrightheavybxd.glif +1465420613.0 glyphs/uprightdnleftdnrightquadrant.glif +1465420613.0 glyphs/uprightdnleftquadrant.glif +1465420613.0 glyphs/uprightquadrant.glif +1465420613.0 glyphs/upsilon.glif +1465420613.0 glyphs/upsilondieresis.glif +1465420613.0 glyphs/upsilondieresistonos.glif +1465420613.0 glyphs/upsilonlatin.glif +1465420613.0 glyphs/upsilontonos.glif +1465420613.0 glyphs/upsnghorzdblbxd.glif +1465420613.0 glyphs/upsngleftdblbxd.glif +1465420613.0 glyphs/upsngrightdblbxd.glif +1465420613.0 glyphs/uptackbelowcmb.glif +1465420613.0 glyphs/uring.glif +1465420613.0 glyphs/ushort.glif +1465420613.0 glyphs/ustraight.glif +1465420613.0 glyphs/ustraightstroke.glif +1465420613.0 glyphs/utilde.glif +1465420613.0 glyphs/v.glif +1465420613.0 glyphs/v.sups.glif +1465420613.0 glyphs/varia.cap.glif +1465420613.0 glyphs/varia.glif +1465420613.0 glyphs/variacmb.glif +1465420613.0 glyphs/vdotbelow.glif +1465420613.0 glyphs/ve.glif +1465420613.0 glyphs/vertdblhorzsngbxd.glif +1465420613.0 glyphs/vertdblleftsngbxd.glif +1465420613.0 glyphs/vertdblrightsngbxd.glif +1465420613.0 glyphs/vertheavyhorzlightbxd.glif +1465420614.0 glyphs/vertheavyleftlightbxd.glif +1465420614.0 glyphs/vertheavyrightlightbxd.glif +1465420614.0 glyphs/verticallinebelowcmb.glif +1465420614.0 glyphs/verticallinelowmod.glif +1465420614.0 glyphs/verticallinemod.glif +1465420614.0 glyphs/vertlighthorzheavybxd.glif +1465420614.0 glyphs/vertlightleftheavybxd.glif +1465420614.0 glyphs/vertlightrightheavybxd.glif +1465420614.0 glyphs/vertsnghorzdblbxd.glif +1465420614.0 glyphs/vertsngleftdblbxd.glif +1465420614.0 glyphs/vertsngrightdblbxd.glif +1465420614.0 glyphs/vhook.glif +1465420614.0 glyphs/vturned.glif +1465420614.0 glyphs/w.glif +1465420614.0 glyphs/w.sups.glif +1465420614.0 glyphs/wacute.glif +1465420614.0 glyphs/wcircumflex.glif +1465420614.0 glyphs/wdieresis.glif +1465420614.0 glyphs/wgrave.glif +1465420614.0 glyphs/won.glif +1465420614.0 glyphs/wturned.glif +1465420614.0 glyphs/x.glif +1465420614.0 glyphs/x.sups.glif +1465420614.0 glyphs/xabovecmb.glif +1465420614.0 glyphs/xi.glif +1465420614.0 glyphs/y.glif +1465420614.0 glyphs/y.sups.glif +1465420614.0 glyphs/ya.glif +1465420614.0 glyphs/yacute.glif +1465420614.0 glyphs/yat.glif +1465420614.0 glyphs/ycircumflex.glif +1465420614.0 glyphs/ydieresis.glif +1465420614.0 glyphs/ydotaccent.glif +1465420614.0 glyphs/ydotbelow.glif +1465420614.0 glyphs/yen.glif +1465420614.0 glyphs/yeru.glif +1465420614.0 glyphs/ygrave.glif +1465420614.0 glyphs/yhoi.glif +1465420614.0 glyphs/yi.a.glif +1465420614.0 glyphs/yi.glif +1465420614.0 glyphs/ysmall.glif +1465420614.0 glyphs/ytilde.glif +1465420614.0 glyphs/yturned.glif +1465420614.0 glyphs/yu.glif +1465420614.0 glyphs/z.glif +1465420614.0 glyphs/z.sups.glif +1465420614.0 glyphs/zacute.glif +1465420614.0 glyphs/zcaron.glif +1465420614.0 glyphs/zcircumflex.glif +1465420614.0 glyphs/zcurl.glif +1465420614.0 glyphs/zdotaccent.glif +1465420614.0 glyphs/zdotbelow.glif +1465420614.0 glyphs/ze.glif +1465420614.0 glyphs/zedescender.glif +1465420614.0 glyphs/zero.0.glif +1465420614.0 glyphs/zero.0c.glif +1465420614.0 glyphs/zero.0o.glif +1465420614.0 glyphs/zero.cap.glif +1465420614.0 glyphs/zero.dnom.glif +1465420614.0 glyphs/zero.glif +1465420614.0 glyphs/zero.numr.glif +1465420614.0 glyphs/zero.onum.glif +1465420614.0 glyphs/zero.subs.glif +1465420614.0 glyphs/zero.sups.glif +1465420614.0 glyphs/zerothirds.glif +1465420614.0 glyphs/zeta.glif +1465420614.0 glyphs/zhe.glif +1465420614.0 glyphs/zhebreve.glif +1465420614.0 glyphs/zhedescender.glif +1465420614.0 glyphs/zlinebelow.glif +1465420614.0 glyphs/zretroflex.glif +1465420614.0 groups.plist +1465420661.0 layercontents.plist +1465420661.0 metainfo.plist + public.glyphOrder + + .notdef + space + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Amacron + Abreve + Aring + Aringacute + Acaron + Aogonek + Adotbelow + Ahoi + Acircumflexacute + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Acircumflexdotbelow + Abreveacute + Abrevegrave + Abrevehoi + Abrevetilde + Abrevedotbelow + AE + AEacute + AEmacron + Bstroke + Blinebelow + Ccedilla + Cacute + Ccircumflex + Ccaron + Cdotaccent + Dcaron + Ddotbelow + Dlinebelow + Dcedilla + Dcroat + Dhook + Egrave + Eacute + Ecircumflex + Ecaron + Edieresis + Emacron + Ebreve + Edotaccent + Eogonek + Edotbelow + Ehoi + Etilde + Ecircumflexacute + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Ecircumflexdotbelow + Emacronacute + Gacute + Gcircumflex + Gbreve + Gdotaccent + Gcommaaccent + Gcaron + Gmacron + Gtilde + Ghook + Hcircumflex + Hdieresis + Hdotbelow + Hcedilla + Hbrevebelow + Hbar + Igrave + Iacute + Icircumflex + Itilde + Idieresis + Imacron + Idotaccent + Icaron + Iogonek + Ihoi + Idotbelow + Ibreve + Jcircumflex + Kcommaaccent + Kdotbelow + Klinebelow + Lacute + Lcaron + Lcommaaccent + Ldotbelow + Ldotbelowmacron + Llinebelow + Lslash + Ldot + Macute + Mdotaccent + Mdotbelow + Nacute + Ngrave + Ncaron + Ntilde + Ncommaaccent + Ndotaccent + Ndotbelow + Nlinebelow + Ograve + Oacute + Ocircumflex + Otilde + Odieresis + Omacron + Ohungarumlaut + Obreve + Ocaron + Oogonek + Odotbelow + Ohoi + Ocircumflexacute + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Ocircumflexdotbelow + Ohorn + Ohornacute + Ohorngrave + Ohornhoi + Ohorntilde + Ohorndotbelow + Omacronacute + Oslash + Oslashacute + OE + Racute + Rcaron + Rdotaccent + Rcommaaccent + Rdotbelow + Rdotbelowmacron + Rlinebelow + Sacute + Scircumflex + Scaron + Scarondot + Scedilla + Scommaaccent + Sdotaccent + Sdotbelow + Germandbls + Tcaron + Tcedilla + Tcommaaccent + Tdotbelow + Tlinebelow + Tbar + Ugrave + Uacute + Ucircumflex + Utilde + Udieresis + Umacron + Ubreve + Uring + Uhungarumlaut + Ucaron + Uogonek + Udieresismacron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorngrave + Uhornhoi + Uhorntilde + Uhorndotbelow + Vdotbelow + Wgrave + Wacute + Wcircumflex + Wdieresis + Ygrave + Yacute + Ycircumflex + Ydieresis + Ydotaccent + Ydotbelow + Yhoi + Ytilde + Zacute + Zcaron + Zdotaccent + Zcircumflex + Zdotbelow + Zlinebelow + Eth + Thorn + Schwa + Eng + IJ + Lcat + IJacute + agrave + aacute + acircumflex + atilde + adieresis + amacron + abreve + aring + aringacute + acaron + aogonek + adotbelow + ahoi + acircumflexacute + acircumflexgrave + acircumflexhoi + acircumflextilde + acircumflexdotbelow + abreveacute + abrevegrave + abrevehoi + abrevetilde + abrevedotbelow + ae + aeacute + aemacron + bstroke + blinebelow + ccedilla + cacute + ccircumflex + ccaron + cdotaccent + dcaron + ddotbelow + dlinebelow + dcedilla + dcroat + egrave + eacute + ecircumflex + ecaron + edieresis + emacron + ebreve + eogonek + edotaccent + edotbelow + ehoi + etilde + ecircumflexacute + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + ecircumflexdotbelow + emacronacute + gacute + gcircumflex + gbreve + gdotaccent + gcommaaccent + gcaron + gmacron + gtilde + hcircumflex + hdieresis + hdotbelow + hlinebelow + hcedilla + hbrevebelow + hbar + igrave + iacute + icircumflex + itilde + idieresis + imacron + icaron + iogonek + ihoi + idotbelow + ibreve + dotlessi + jcircumflex + kcommaaccent + kdotbelow + klinebelow + kgreenlandic + lacute + lcaron + lcommaaccent + ldotbelow + ldotbelowmacron + llinebelow + lslash + ldot + macute + mdotaccent + mdotbelow + nacute + ngrave + ncaron + ntilde + ncommaaccent + ndotaccent + ndotbelow + nlinebelow + napostrophe + ograve + oacute + ocircumflex + otilde + odieresis + omacron + ohungarumlaut + ocaron + oogonek + odotbelow + ohoi + ocircumflexacute + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + ocircumflexdotbelow + obreve + omacronacute + ohorn + ohornacute + ohorngrave + ohornhoi + ohorntilde + ohorndotbelow + oslash + oslashacute + oe + racute + rcommaaccent + rcaron + rdotaccent + rdotbelow + rdotbelowmacron + rlinebelow + sacute + scircumflex + scaron + scarondot + scedilla + scommaaccent + sdotaccent + sdotbelow + germandbls + longs + tcaron + tcedilla + tcommaaccent + tdotbelow + tlinebelow + tdieresis + tbar + ugrave + uacute + ucircumflex + utilde + udieresis + umacron + ubreve + uring + uhungarumlaut + ucaron + uogonek + udieresismacron + udieresisacute + udieresiscaron + udieresisgrave + udotbelow + uhoi + uhorn + uhornacute + uhorngrave + uhornhoi + uhorntilde + uhorndotbelow + vdotbelow + wgrave + wacute + wcircumflex + wdieresis + ygrave + yacute + ycircumflex + ydieresis + ydotaccent + ydotbelow + yhoi + ytilde + zacute + zcaron + zdotaccent + zcircumflex + zdotbelow + zlinebelow + eth + thorn + eng + dotlessj + ij + lcat + ijacute + aturned + alphalatinturned + bhook + oopen + ccurl + dtail + dhook + ereversed + alphalatin + bsmall + schwa + schwahookrhotic + eopen + eopenreversed + eopenreversedclosed + dotlessjstroke + ghook + gscript + gsmall + gammalatin + ramshorn + hturned + hhook + henghook + hsmall + istroke + ismall + jcrossedtail + kturned + lmiddletilde + lbelt + lretroflex + lezh + lsmall + mturned + mlonglegturned + mhook + nhookleft + nretroflex + nsmall + obar + oesmall + philatin + rturned + rlonglegturned + rhookturned + rtail + rfishhook + rsmall + rsmallinverted + shook + esh + dotlessjstrokehook + tturned + tretroflex + ubar + upsilonlatin + vhook + vturned + wturned + yturned + ysmall + zretroflex + zcurl + ezh + dezh + ts + tesh + glottalstop + glottalstopreversed + glottalstopstroke + glottalstopstrokereversed + clickalveolar + clickbilabial + Eng.a + a.a + agrave.a + aacute.a + acircumflex.a + atilde.a + adieresis.a + amacron.a + abreve.a + aring.a + aringacute.a + acaron.a + adotbelow.a + ahoi.a + acircumflexacute.a + acircumflexgrave.a + acircumflexhoi.a + acircumflextilde.a + acircumflexdotbelow.a + abreveacute.a + abrevegrave.a + abrevehoi.a + abrevetilde.a + abrevedotbelow.a + aogonek.a + g.a + gacute.a + gcircumflex.a + gbreve.a + gdotaccent.a + gcommaaccent.a + gcaron.a + gmacron.a + gtilde.a + i.a + dotlessi.a + igrave.a + iacute.a + icircumflex.a + itilde.a + idieresis.a + imacron.a + icaron.a + iogonek.a + ihoi.a + idotbelow.a + ibreve.a + istroke.a + iogonek.d + iogonek.da + istroke.d + istroke.da + jcrossedtail.d + l.a + lacute.a + lcaron.a + lcommaaccent.a + ldotbelow.a + ldotbelowmacron.a + llinebelow.a + lslash.a + ldot.a + lcat.a + lmiddletilde.a + lbelt.a + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Iotadieresis + Omicrontonos + Upsilontonos + Upsilondieresis + Omegatonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + pi + rho + sigma + tau + upsilon + phi + chi + psi + omega + sigma.end + beta.a + theta.a + phi.math + phi.a + alphatonos + epsilontonos + etatonos + iotatonos + iotadieresis + omicrontonos + upsilontonos + upsilondieresis + omegatonos + iotadieresistonos + upsilondieresistonos + kai + koppa + stigma + digamma + sampi + questiongreek + anoteleia + anoteleia.cap + numeralsign + lownumeralsign + tonos + tonos.cap + dieresistonos + iotasubscript + iotaadscript + lenis + psili + asper + varia + oxia + lenisgrave + aspergrave + lenisacute + asperacute + lenistilde + aspertilde + perispomeni + dialytikagrave + dialytikaacute + dialytikatilde + lenis.cap + asper.cap + varia.cap + oxia.cap + lenisgrave.cap + aspergrave.cap + lenisacute.cap + asperacute.cap + lenistilde.cap + aspertilde.cap + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + acyr.a + abrevecyr.a + be.srb + iukran.a + yi.a + palochka.a + numero + ampersand + zero + one + two + three + four + five + six + seven + eight + nine + zero.0 + one.a + zero.onum + one.onum + two.onum + three.onum + four.onum + five.onum + six.onum + seven.onum + eight.onum + nine.onum + zero.0o + one.ao + zero.cap + one.cap + two.cap + three.cap + four.cap + five.cap + six.cap + seven.cap + eight.cap + nine.cap + zero.0c + one.ac + period + comma + colon + semicolon + ellipsis + exclam + exclamdown + question + questiondown + quotesingle + quotedbl + quoteleft + quoteright + quotedblleft + quotedblright + quotesinglbase + quotedblbase + quotereversed + guilsinglleft + guilsinglright + guillemotleft + guillemotright + hyphen + sfthyphen + hyphentwo + endash + emdash + figuredash + horizontalbar + periodcentered + bullet + bulletwhite + bulletsquare + bulletsquarewhite + trianglesmallupblack + trianglesmallupwhite + trianglesmallrightblack + trianglesmallrightwhite + trianglesmalldownblack + trianglesmalldownwhite + trianglesmallleftblack + trianglesmallleftwhite + invbullet + filledrect + underscore + underscoredbl + overline + undertie + parenleft + parenright + bracketleft + bracketright + braceleft + braceright + slash + bar + backslash + brokenbar + asterisk + dagger + daggerdbl + section + paragraph + bardbl + exclamdbl + questiondbl + exclamquestion + questionexclam + interrobang + interrobangdown + ceilingleft + ceilingright + floorleft + floorright + bracketleftwhite + bracketrightwhite + brackhalftopleft + brackhalftopright + brackhalfbotleft + brackhalfbotright + copyright + soundcopyright + registered + trademark + servicemark + at + at.case + numbersign + asterisk.a + hyphen.a + sfthyphen.a + hyphentwo.a + dollar.a + zero.sups + one.sups + two.sups + three.sups + four.sups + five.sups + six.sups + seven.sups + eight.sups + nine.sups + parenleft.sups + parenright.sups + period.sups + comma.sups + zero.subs + one.subs + two.subs + three.subs + four.subs + five.subs + six.subs + seven.subs + eight.subs + nine.subs + parenleft.subs + parenright.subs + period.subs + comma.subs + zero.dnom + one.dnom + two.dnom + three.dnom + four.dnom + five.dnom + six.dnom + seven.dnom + eight.dnom + nine.dnom + parenleft.dnom + parenright.dnom + period.dnom + comma.dnom + zero.numr + one.numr + two.numr + three.numr + four.numr + five.numr + six.numr + seven.numr + eight.numr + nine.numr + parenleft.numr + parenright.numr + period.numr + comma.numr + ordfeminine + ordfeminine.a + ordmasculine + a.sups + b.sups + c.sups + d.sups + e.sups + f.sups + g.sups + h.sups + i.sups + j.sups + k.sups + l.sups + m.sups + n.sups + o.sups + p.sups + q.sups + r.sups + s.sups + t.sups + u.sups + v.sups + w.sups + x.sups + y.sups + z.sups + egrave.sups + eacute.sups + eogonek.sups + schwa.sups + hhook.sups + gammalatinsupmod + glottalstopreversedsupmod + a.supa + g.supa + i.supa + colon.sups + hyphen.sups + endash.sups + emdash.sups + currency + dollar + sterling + yen + Euro + cent + florin + colonmonetary + lira + naira + peseta + won + dong + peso + guarani + hryvnia + cedi + rupeeindian + liraturkish + tugrik + tenge + ruble + franc + fraction + divisionslash + slash.frac + percent + perthousand + onequarter + onehalf + threequarters + onethird + twothirds + onefifth + twofifths + threefifths + fourfifths + onesixth + fivesixths + oneseventh + oneeighth + threeeighths + fiveeighths + seveneighths + oneninth + onetenth + zerothirds + plus + minus + multiply + divide + bulletoperator + equal + equivalence + less + greater + lessequal + greaterequal + plusminus + asciicircum + notequal + asciitilde + approxequal + logicalnot + revlogicalnot + intersection + orthogonal + infinity + degree + prime + dblprime + primereversed + mu.math + partialdiff + integral + integraltp + integralbt + radical + Delta.math + Omega.math + universal + existential + proportion + summation + product + careof + litre + estimated + arrowleft + arrowup + arrowright + arrowdown + arrowupleft + arrowupright + arrowdownright + arrowdownleft + arrowdblleft + arrowdblup + arrowdblright + arrowdbldown + arrowboth + arrowupdn + arrowupdnbse + circleblack + circlewhite + squareblack + squarewhite + squareshadow + diamondblack + triangleupblack + triangleupwhite + trianglerightblack + trianglerightwhite + triangledownblack + triangledownwhite + triangleleftblack + triangleleftwhite + pointerblackright + pointerblackleft + invcircle + fisheye + checkbox + checkedbox + check + eighthnote + musicalnotedbl + heart + club + diamond + spade + smileface + invsmileface + heartblackheavy + coffee + poop + robot + lock + female + male + sun + lozenge + house + primemod + commaturnedmod + apostrophemod + ringhalfrightmod + ringhalfleftmod + glottalstopreversedmod + colontriangularmod + colontriangularhalfmod + hookrhoticmod + grave + acute + circumflex + caron + verticallinemod + macronmod + acutemod + gravemod + verticallinelowmod + tilde + dieresis + macron + breve + ring + hungarumlaut + dotaccent + cedilla + ogonek + circledotted + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + caron.a + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + macrondoublebelowcmb + breveinverteddoublecmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + nbspace + figurespace + space.frac + nbspace.frac + lighthorzbxd + heavyhorzbxd + lightvertbxd + heavyvertbxd + lighttrpldashhorzbxd + heavytrpldashhorzbxd + lighttrpldashvertbxd + heavytrpldashvertbxd + lightquaddashhorzbxd + heavyquaddashhorzbxd + lightquaddashvertbxd + heavyquaddashvertbxd + lightdnrightbxd + dnlightrightheavybxd + dnheavyrightlightbxd + heavydnrightbxd + lightdnleftbxd + dnlightleftheavybxd + dnheavyleftlightbxd + heavydnleftbxd + lightuprightbxd + uplightrightheavybxd + upheavyrightlightbxd + heavyuprightbxd + lightupleftbxd + uplightleftheavybxd + upheavyleftlightbxd + heavyupleftbxd + lightvertrightbxd + vertlightrightheavybxd + upheavyrightdnlightbxd + dnheavyrightuplightbxd + vertheavyrightlightbxd + dnlightrightupheavybxd + uplightrightdnheavybxd + heavyvertrightbxd + lightvertleftbxd + vertlightleftheavybxd + upheavyleftdnlightbxd + dnheavyleftuplightbxd + vertheavyleftlightbxd + dnlightleftupheavybxd + uplightleftdnheavybxd + heavyvertleftbxd + lightdnhorzbxd + leftheavyrightdnlightbxd + rightheavyleftdnlightbxd + dnlighthorzheavybxd + dnheavyhorzlightbxd + rightlightleftdnheavybxd + leftlightrightdnheavybxd + heavydnhorzbxd + lightuphorzbxd + leftheavyrightuplightbxd + rightheavyleftuplightbxd + uplighthorzheavybxd + upheavyhorzlightbxd + rightlightleftupheavybxd + leftlightrightupheavybxd + heavyuphorzbxd + lightverthorzbxd + leftheavyrightvertlightbxd + rightheavyleftvertlightbxd + vertlighthorzheavybxd + upheavydnhorzlightbxd + dnheavyuphorzlightbxd + vertheavyhorzlightbxd + leftupheavyrightdnlightbxd + rightupheavyleftdnlightbxd + leftdnheavyrightuplightbxd + rightdnheavyleftuplightbxd + dnlightuphorzheavybxd + uplightdnhorzheavybxd + rightlightleftvertheavybxd + leftlightrightvertheavybxd + heavyverthorzbxd + lightdbldashhorzbxd + heavydbldashhorzbxd + lightdbldashvertbxd + heavydbldashvertbxd + dblhorzbxd + dblvertbxd + dnsngrightdblbxd + dndblrightsngbxd + dbldnrightbxd + dnsngleftdblbxd + dndblleftsngbxd + dbldnleftbxd + upsngrightdblbxd + updblrightsngbxd + dbluprightbxd + upsngleftdblbxd + updblleftsngbxd + dblupleftbxd + vertsngrightdblbxd + vertdblrightsngbxd + dblvertrightbxd + vertsngleftdblbxd + vertdblleftsngbxd + dblvertleftbxd + dnsnghorzdblbxd + dndblhorzsngbxd + dbldnhorzbxd + upsnghorzdblbxd + updblhorzsngbxd + dbluphorzbxd + vertsnghorzdblbxd + vertdblhorzsngbxd + dblverthorzbxd + lightarcdnrightbxd + lightarcdnleftbxd + lightarcupleftbxd + lightarcuprightbxd + lightdiaguprightdnleftbxd + lightdiagupleftdnrightbxd + lightdiagcrossbxd + lightleftbxd + lightupbxd + lightrightbxd + lightdnbxd + heavyleftbxd + heavyupbxd + heavyrightbxd + heavydnbxd + lightleftheavyrightbxd + lightupheavydnbxd + heavyleftlightrightbxd + heavyuplightdnbxd + uphalfblock + dneighthblock + dnquarterblock + dnthreeeighthsblock + dnhalfblock + dnfiveeighthsblock + dnthreequartersblock + dnseveneighthsblock + fullblock + leftseveneighthsblock + leftthreequartersblock + leftfiveeighthsblock + lefthalfblock + leftthreeeighthsblock + leftquarterblock + lefteighthblock + righthalfblock + lightshade + mediumshade + darkshade + upeighthblock + righteighthblock + dnleftquadrant + dnrightquadrant + upleftquadrant + upleftdnleftdnrightquadrant + upleftdnrightquadrant + upleftuprightdnleftquadrant + upleftuprightdnrightquadrant + uprightquadrant + uprightdnleftquadrant + uprightdnleftdnrightquadrant + NNBS + ZWNBS + text + emoji + notemusical + notesmusical + notemusical.e + notesmusical.e + checkedbox.e + check.e + heart.e + club.e + diamond.e + spade.e + smileface.e + invsmileface.e + heartblackheavy.e + coffee.e + poop.e + robot.e + lock.e + fi + fl + uniE0A0 + uniE0A1 + uniE0A2 + uniE0B0 + uniE0B1 + uniE0B2 + uniE0B3 + + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/font.ufo/metainfo.plist b/tests/makeotf_data/input/bug680/font.ufo/metainfo.plist new file mode 100644 index 000000000..c54c6cb53 --- /dev/null +++ b/tests/makeotf_data/input/bug680/font.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + org.robofab.ufoLib + formatVersion + 2 + + \ No newline at end of file diff --git a/tests/makeotf_data/input/bug680/fontinfo b/tests/makeotf_data/input/bug680/fontinfo new file mode 100644 index 000000000..6d791effd --- /dev/null +++ b/tests/makeotf_data/input/bug680/fontinfo @@ -0,0 +1,107 @@ +IsItalicStyle false +IsBoldStyle false +PreferOS/2TypoMetrics false # Must be 'false' for vertical layout cross-platform consistency +IsOS/2WidthWeigthSlopeOnly false # Must be 'false' for OS/2 table version 3 +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE + +#------------------------------------------------------ + +begin FDDict LOWERCASE + BaselineYCoord 0 + BaselineOvershoot -12 + LcHeight 486 + LcOvershoot 12 + AscenderHeight 712 + AscenderOvershoot 12 + DescenderHeight -205 + DescenderOvershoot -12 + DominantV [86] + DominantH [68] + FlexOK false +end FDDict LOWERCASE + + +begin FDDict UPPERCASE + BaselineYCoord 0 + BaselineOvershoot -12 + CapHeight 656 + CapOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false +end FDDict UPPERCASE + + +begin FDDict FIGURES + BaselineYCoord 0 + BaselineOvershoot -12 + FigHeight 638 + FigOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false +end FDDict FIGURES + +begin FDDict TEXT_FIGURES + BaselineYCoord 0 + BaselineOvershoot -12 + FigHeight 574 + FigOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false +end FDDict TEXT_FIGURES + +#------------------------------------------------------ + +begin GlyphSet UPPERCASE + #Latin + ^([A-Z]|AE|OE|Germandbls|Eth|Thorn|Schwa|Eng|IJ)(acute|grave|circumflex|tilde|dieresis|macron|breve|ring|ringacute|caron|ogonek|dotbelow|hoi|stroke|linebelow|cedilla|dotaccent|croat|commaaccent|hook|brevebelow|bar|dotbelowmacron|slash|hungarumlaut|horn|cat|dot)?(acute|grave|hoi|tilde|dotbelow|macron|caron|.a)?$ + #Greek + ^(Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|Psi|Omega)(iotasub)?(tonos|grave|acute|dieresis|lenis|asper|breve|macron|.greek)?(grave|acute|tilde)?(.a|.alt)?$ + #Cyrillic + ^(A|E|I|O|U|Schwa)(grave|breve|dieresis|macron|gravedbl|straight|bar)?(acutedbl)?(cyr|short|ukran|straight)(stroke)?$ + ^(Be|Ve|Ghe|De|Ie|Zhe|Ze|Ka|El|Em|En|Pe|Er|Es|Te|Ef|Ha|Tse|Che|Sha|Shcha|Hard|Yeru|Soft|Yu|Ya|Io|Dje|Gje|Dze|Yi|Je|Lje|Nje|Tshe|Kje|Dzhe|Yat|Fita|Izhitsa|Shha|Palochka|Aie)(grave|breve|ukran|up|descender|stroke|bashkir)?$ + #Punctuation + ^(exclam|question|exclamdbl|questiondbl|exclamquestion|questionexclam|interrobang)$ + ^(trademark|registered|servicemark)$ + ^(ampersand|section|paragraph)$ + #Cap figures + ^(zero|one|two|three|four|five|six|seven|eight|nine)(.cap|\.0c)$ + #Math + ^(Delta|Omega).math$ + ^(universal|existential|lozenge|house|estimated)$ +end GlyphSet UPPERCASE + + +begin GlyphSet LOWERCASE + #Latin + (dotless|germandbl|long)?([a-z]|eth|eng|schwa|rams|heng|lezh|esh|ezh|dezh|tesh)(acute|grave|circumflex|tilde|dieresis|macron|breve|ring|caron|ogonek|dotbelow|stroke|line|cedilla|dotaccent|croat|commaaccent|bar|greenlandic|slash|apostrophe|hungarumlaut|horn|cat|dot|turned|latin|hook|open|curl|tail|reversed|small|script|crossed|middle|belt|retroflex|longleg|fish|lottalstop|lick)?(acute|grave|hoi|tilde|dotbelow|below|macron|caron|turned|rhotic|reversed|tail|left|hook|inverted|stroke|alveolar|bilabial)?(closed|reversed|.a|.d|.da)? + ^[afoi][eijl](acute|macron|small)?$ + ^(f)_(f|t)$ + #Greek + ^(alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)(dieresis|latin|.end|.a|.math)?(tonos|turned)?$ + ^(kai|stigma|koppa|sampi|digamma)$ + #Cyrillic + ^(a|e|i|o|u|ie|schwa)(grave|breve|dieresis|macron|gravedbl|straight|bar|acutedbl)?(cyr|short|ukran|stroke)?(.a)?$ + ^(be|ve|ghe|de|ie|zhe|ze|ka|el|em|en|pe|er|es|te|ef|ha|tse|che|sha|shcha|hard|yeru|soft|yu|ya|io|dje|gje|dze|yi|je|lje|nje|tshe|kje|dzhe|yat|fita|izhitsa|shha|palochka|aie)(grave|breve|ukran|up|descender|straight)?(stroke|bashkir|ital|.srb|.a)?$ + #Punctuation + ^(exclam|question|interrobang)down$ + ^(dagger|daggerdbl)$ + #Math & Symbol + ^(litre|heart|club|diamond|spade)$ +end GlyphSet LOWERCASE + + +begin GlyphSet FIGURES + ^(zero|one|two|three|four|five|six|seven|eight|nine)(\.0)?$ + ^(dollar|cent|sterling|yen|Euro|florin|colonmonetary|lira|naira|peseta|dong|peso|guarani|cedi|rupeeindian|won|hryvnia|tugrik|tenge|ruble|franc)(turkish)?$ + ^(percent|perthousand|numbersign|numero)$ + ^(zero|one|two|three|four|five|seven)(half|third|quarter|fifth|sixth|seventh|eighth|ninth|tenth)(s)?$ +end GlyphSet FIGURES + +begin GlyphSet TEXT_FIGURES + ^(zero|one|two|three|four|five|six|seven|eight|nine)(.onum|\.0o)$ +end GlyphSet TEXT_FIGURES diff --git a/tests/makeotf_data/input/bug680/mark.fea b/tests/makeotf_data/input/bug680/mark.fea new file mode 100644 index 000000000..d27a2d339 --- /dev/null +++ b/tests/makeotf_data/input/bug680/mark.fea @@ -0,0 +1,348 @@ +# Created: Wed Jul 26 15:03:09 2017 +# PS Name: SourceCodePro-Regular +# MM Inst: None +# exported from Defcon + +# NOTE: The markClass declarations can be found in the file 'markclasses.fea'. + +lookup MARK_BASE_above { + @bGC_AE_above = [AE Aie]; + @bGC_A_above = [A D H I M O T U V W X Y Aogonek Iogonek Oogonek Ohorn Oslash Tbar Uogonek Uhorn Alpha Eta Iota Omicron Upsilon Omega Acyr Zhe Ocyr Yeru Fita Ustraight Ustraightstroke Obarcyr]; + @bGC_Dcroat_above = [Dcroat Eth]; + @bGC_E_above = [E Eogonek Epsilon Ie]; + @bGC_L_above = [L Lslash]; + @bGC_N_above = [N Eng.a]; + @bGC_P_above = [P Rho]; + @bGC_R_above = [R Icyr Ucyr Izhitsa]; + @bGC_Z_above = [Z Schwa Ka]; + @bGC_Ze_above = [Ze Ya]; + @bGC_a_above = [a aogonek bsmall eopenreversedclosed zretroflex acyr ve ka]; + @bGC_aturned_above = [aturned nretroflex alpha]; + @bGC_b_above = [b thorn]; + @bGC_c_above = [c es]; + @bGC_d_above = [d dcroat]; + @bGC_dotlessi.a_above = [dotlessi.a istroke.da]; + @bGC_dotlessi_above = [dotlessi dotlessj dotlessjstroke iogonek.d istroke.d jcrossedtail.d]; + @bGC_e_above = [e ae rsmall ie]; + @bGC_eopenreversed_above = [eopenreversed ze]; + @bGC_epsilon_above = [epsilon rho]; + @bGC_esh_above = [esh dotlessjstrokehook]; + @bGC_g_above = [g ereversed]; + @bGC_glottalstopreversed_above = [glottalstopreversed glottalstopstrokereversed]; + @bGC_hhook_above = [hhook henghook]; + @bGC_i.a_above = [i.a iogonek.a istroke.a]; + @bGC_i_above = [i j iogonek istroke]; + @bGC_l.a_above = [l.a lslash.a lmiddletilde.a lbelt.a]; + @bGC_l_above = [l lslash lmiddletilde lbelt lretroflex]; + @bGC_n_above = [n oe eng]; + @bGC_o_above = [o v w x oogonek ohorn oslash gammalatin ramshorn hsmall ismall mlonglegturned obar upsilonlatin vturned wturned ysmall omicron omega zhe em en ocyr pe te sha shcha yeru fita circledotted]; + @bGC_oopen_above = [oopen rsmallinverted]; + @bGC_p_above = [p er]; + @bGC_philatin_above = [philatin glottalstop glottalstopstroke]; + @bGC_q_above = [q y alphalatin ghook mhook ezh a.a ucyr che acyr.a]; + @bGC_r_above = [r rtail rfishhook]; + @bGC_rhookturned_above = [rhookturned eta]; + @bGC_s_above = [s shook vhook tse]; + @bGC_schwa_above = [schwa gscript g.a izhitsa]; + @bGC_t_above = [t tbar]; + @bGC_u_above = [u uogonek uhorn ubar]; + @bGC_zcurl_above = [zcurl icyr]; + pos base @bGC_AE_above mark @MC_above; + pos base @bGC_A_above mark @MC_above; + pos base @bGC_Dcroat_above mark @MC_above; + pos base @bGC_E_above mark @MC_above; + pos base @bGC_L_above mark @MC_above; + pos base @bGC_N_above mark @MC_above; + pos base @bGC_P_above mark @MC_above; + pos base @bGC_R_above mark @MC_above; + pos base @bGC_Z_above mark @MC_above; + pos base @bGC_Ze_above mark @MC_above; + pos base @bGC_a_above mark @MC_above; + pos base @bGC_aturned_above mark @MC_above; + pos base @bGC_b_above mark @MC_above; + pos base @bGC_c_above mark @MC_above; + pos base @bGC_d_above mark @MC_above; + pos base @bGC_dotlessi.a_above mark @MC_above; + pos base @bGC_dotlessi_above mark @MC_above; + pos base @bGC_e_above mark @MC_above; + pos base @bGC_eopenreversed_above mark @MC_above; + pos base @bGC_epsilon_above mark @MC_above; + pos base @bGC_esh_above mark @MC_above; + pos base @bGC_g_above mark @MC_above; + pos base @bGC_glottalstopreversed_above mark @MC_above; + pos base @bGC_hhook_above mark @MC_above; + pos base @bGC_i.a_above mark @MC_above; + pos base @bGC_i_above mark @MC_above; + pos base @bGC_l.a_above mark @MC_above; + pos base @bGC_l_above mark @MC_above; + pos base @bGC_n_above mark @MC_above; + pos base @bGC_o_above mark @MC_above; + pos base @bGC_oopen_above mark @MC_above; + pos base @bGC_p_above mark @MC_above; + pos base @bGC_philatin_above mark @MC_above; + pos base @bGC_q_above mark @MC_above; + pos base @bGC_r_above mark @MC_above; + pos base @bGC_rhookturned_above mark @MC_above; + pos base @bGC_s_above mark @MC_above; + pos base @bGC_schwa_above mark @MC_above; + pos base @bGC_t_above mark @MC_above; + pos base @bGC_u_above mark @MC_above; + pos base @bGC_zcurl_above mark @MC_above; + pos base B mark @MC_above; + pos base C mark @MC_above; + pos base Dhook mark @MC_above; + pos base Ecyr mark @MC_above; + pos base Eng mark @MC_above; + pos base F mark @MC_above; + pos base G mark @MC_above; + pos base J mark @MC_above; + pos base K mark @MC_above; + pos base OE mark @MC_above; + pos base Q mark @MC_above; + pos base S mark @MC_above; + pos base Yu mark @MC_above; + pos base alphalatinturned mark @MC_above; + pos base aogonek.a mark @MC_above; + pos base bhook mark @MC_above; + pos base ccurl mark @MC_above; + pos base de mark @MC_above; + pos base dezh mark @MC_above; + pos base dhook mark @MC_above; + pos base dtail mark @MC_above; + pos base ecyr mark @MC_above; + pos base el mark @MC_above; + pos base eogonek mark @MC_above; + pos base eopen mark @MC_above; + pos base eth mark @MC_above; + pos base f mark @MC_above; + pos base ghe mark @MC_above; + pos base gsmall mark @MC_above; + pos base h mark @MC_above; + pos base hard mark @MC_above; + pos base hturned mark @MC_above; + pos base iogonek.da mark @MC_above; + pos base iota mark @MC_above; + pos base k mark @MC_above; + pos base kturned mark @MC_above; + pos base lezh mark @MC_above; + pos base lsmall mark @MC_above; + pos base m mark @MC_above; + pos base mturned mark @MC_above; + pos base nhookleft mark @MC_above; + pos base nsmall mark @MC_above; + pos base oesmall mark @MC_above; + pos base rlonglegturned mark @MC_above; + pos base rturned mark @MC_above; + pos base schwahookrhotic mark @MC_above; + pos base soft mark @MC_above; + pos base tesh mark @MC_above; + pos base tretroflex mark @MC_above; + pos base ts mark @MC_above; + pos base tturned mark @MC_above; + pos base upsilon mark @MC_above; + pos base ya mark @MC_above; + pos base yturned mark @MC_above; + pos base yu mark @MC_above; + pos base z mark @MC_above; +} MARK_BASE_above; + + +lookup MARK_BASE_aboveright { + pos base circledotted mark @MC_aboveright; +} MARK_BASE_aboveright; + + +lookup MARK_BASE_base { + @bGC_I_base = [I O T U o Oslash oslash circledotted]; + @bGC_N_base = [N a]; + @bGC_Z_base = [Z z]; + @bGC_alphalatin_base = [alphalatin a.a]; + @bGC_e_base = [e eopen]; + @bGC_i.a_base = [i.a dotlessi.a istroke.a l.a lslash.a lmiddletilde.a]; + @bGC_i_base = [i dotlessi istroke]; + @bGC_n_base = [n x]; + @bGC_u_base = [u AE]; + pos base @bGC_I_base mark @MC_base; + pos base @bGC_N_base mark @MC_base; + pos base @bGC_Z_base mark @MC_base; + pos base @bGC_alphalatin_base mark @MC_base; + pos base @bGC_e_base mark @MC_base; + pos base @bGC_i.a_base mark @MC_base; + pos base @bGC_i_base mark @MC_base; + pos base @bGC_n_base mark @MC_base; + pos base @bGC_u_base mark @MC_base; + pos base A mark @MC_base; + pos base C mark @MC_base; + pos base D mark @MC_base; + pos base E mark @MC_base; + pos base F mark @MC_base; + pos base H mark @MC_base; + pos base L mark @MC_base; + pos base M mark @MC_base; + pos base OE mark @MC_base; + pos base R mark @MC_base; + pos base S mark @MC_base; + pos base Schwa mark @MC_base; + pos base X mark @MC_base; + pos base ae mark @MC_base; + pos base c mark @MC_base; + pos base d mark @MC_base; + pos base f mark @MC_base; + pos base h mark @MC_base; + pos base l mark @MC_base; + pos base lbelt.a mark @MC_base; + pos base m mark @MC_base; + pos base oe mark @MC_base; + pos base oopen mark @MC_base; + pos base r mark @MC_base; + pos base s mark @MC_base; + pos base schwa mark @MC_base; + pos base t mark @MC_base; + pos base ubar mark @MC_base; +} MARK_BASE_base; + + +lookup MARK_BASE_below { + @bGC_A_below = [A H I J M N O T U X Y a o u v w x Ohorn Tbar Uhorn ohorn oslash uhorn dhook ramshorn hsmall ismall obar ubar upsilonlatin vturned wturned ysmall Alpha Eta Omega omega circledotted]; + @bGC_D_below = [D ereversed mturned]; + @bGC_Dcroat_below = [Dcroat Eth]; + @bGC_Eng_below = [Eng eth aturned yturned]; + @bGC_L_below = [L Lslash]; + @bGC_R_below = [R bsmall glottalstopreversed glottalstopstrokereversed]; + @bGC_S_below = [S n]; + @bGC_V_below = [V nsmall]; + @bGC_W_below = [W vhook]; + @bGC_Z_below = [Z e alphalatinturned bhook eopen hhook rsmall]; + @bGC_d_below = [d Schwa dcroat alphalatin rsmallinverted a.a]; + @bGC_eng_below = [eng henghook]; + @bGC_esh_below = [esh dotlessjstrokehook]; + @bGC_ghook_below = [ghook gscript g.a]; + @bGC_glottalstop_below = [glottalstop glottalstopstroke]; + @bGC_h_below = [h z]; + @bGC_i.a_below = [i.a dotlessi.a istroke.a istroke.da l.a lslash.a lmiddletilde.a lbelt.a]; + @bGC_i_below = [i dotlessi istroke istroke.d]; + @bGC_j_below = [j dotlessj dotlessjstroke]; + @bGC_jcrossedtail_below = [jcrossedtail jcrossedtail.d]; + @bGC_l_below = [l lslash lmiddletilde lbelt]; + @bGC_mhook_below = [mhook rhookturned]; + @bGC_p_below = [p thorn]; + @bGC_r_below = [r rfishhook]; + @bGC_rturned_below = [rturned rlonglegturned]; + @bGC_s_below = [s ae oe]; + @bGC_t_below = [t tbar]; + pos base @bGC_A_below mark @MC_below; + pos base @bGC_D_below mark @MC_below; + pos base @bGC_Dcroat_below mark @MC_below; + pos base @bGC_Eng_below mark @MC_below; + pos base @bGC_L_below mark @MC_below; + pos base @bGC_R_below mark @MC_below; + pos base @bGC_S_below mark @MC_below; + pos base @bGC_V_below mark @MC_below; + pos base @bGC_W_below mark @MC_below; + pos base @bGC_Z_below mark @MC_below; + pos base @bGC_d_below mark @MC_below; + pos base @bGC_eng_below mark @MC_below; + pos base @bGC_esh_below mark @MC_below; + pos base @bGC_ghook_below mark @MC_below; + pos base @bGC_glottalstop_below mark @MC_below; + pos base @bGC_h_below mark @MC_below; + pos base @bGC_i.a_below mark @MC_below; + pos base @bGC_i_below mark @MC_below; + pos base @bGC_j_below mark @MC_below; + pos base @bGC_jcrossedtail_below mark @MC_below; + pos base @bGC_l_below mark @MC_below; + pos base @bGC_mhook_below mark @MC_below; + pos base @bGC_p_below mark @MC_below; + pos base @bGC_r_below mark @MC_below; + pos base @bGC_rturned_below mark @MC_below; + pos base @bGC_s_below mark @MC_below; + pos base @bGC_t_below mark @MC_below; + pos base AE mark @MC_below; + pos base B mark @MC_below; + pos base C mark @MC_below; + pos base Dhook mark @MC_below; + pos base E mark @MC_below; + pos base F mark @MC_below; + pos base G mark @MC_below; + pos base K mark @MC_below; + pos base P mark @MC_below; + pos base alpha mark @MC_below; + pos base b mark @MC_below; + pos base c mark @MC_below; + pos base ccurl mark @MC_below; + pos base dezh mark @MC_below; + pos base dtail mark @MC_below; + pos base eopenreversed mark @MC_below; + pos base eopenreversedclosed mark @MC_below; + pos base eta mark @MC_below; + pos base ezh mark @MC_below; + pos base f mark @MC_below; + pos base g mark @MC_below; + pos base gammalatin mark @MC_below; + pos base gsmall mark @MC_below; + pos base hturned mark @MC_below; + pos base k mark @MC_below; + pos base kturned mark @MC_below; + pos base lezh mark @MC_below; + pos base lretroflex mark @MC_below; + pos base lsmall mark @MC_below; + pos base m mark @MC_below; + pos base mlonglegturned mark @MC_below; + pos base nhookleft mark @MC_below; + pos base nretroflex mark @MC_below; + pos base oesmall mark @MC_below; + pos base oopen mark @MC_below; + pos base philatin mark @MC_below; + pos base q mark @MC_below; + pos base rtail mark @MC_below; + pos base schwa mark @MC_below; + pos base schwahookrhotic mark @MC_below; + pos base shook mark @MC_below; + pos base tesh mark @MC_below; + pos base tretroflex mark @MC_below; + pos base ts mark @MC_below; + pos base tturned mark @MC_below; + pos base y mark @MC_below; +} MARK_BASE_below; + + +lookup MARK_BASE_center { + pos base L mark @MC_center; + pos base circledotted mark @MC_center; + pos base l mark @MC_center; + pos base l.a mark @MC_center; +} MARK_BASE_center; + + +lookup MARK_BASE_horn { + pos base O mark @MC_horn; + pos base U mark @MC_horn; + pos base circledotted mark @MC_horn; + pos base o mark @MC_horn; +} MARK_BASE_horn; + + +lookup MARK_BASE_ogonek { + @bGC_A_ogonek = [A Aacute Adieresis Aring]; + @bGC_E_ogonek = [E a.a aacute.a adieresis.a aring.a]; + @bGC_I_ogonek = [I O U Y o Odieresis odieresis circledotted]; + @bGC_a_ogonek = [a aacute adieresis aring]; + @bGC_e_ogonek = [e eacute]; + @bGC_i.a_ogonek = [i.a dotlessi.a]; + @bGC_i_ogonek = [i dotlessi]; + pos base @bGC_A_ogonek mark @MC_ogonek; + pos base @bGC_E_ogonek mark @MC_ogonek; + pos base @bGC_I_ogonek mark @MC_ogonek; + pos base @bGC_a_ogonek mark @MC_ogonek; + pos base @bGC_e_ogonek mark @MC_ogonek; + pos base @bGC_i.a_ogonek mark @MC_ogonek; + pos base @bGC_i_ogonek mark @MC_ogonek; + pos base Eacute mark @MC_ogonek; + pos base Schwa mark @MC_ogonek; + pos base schwa mark @MC_ogonek; + pos base u mark @MC_ogonek; + pos base y mark @MC_ogonek; +} MARK_BASE_ogonek; + + + diff --git a/tests/makeotf_data/input/bug680/mkmk.fea b/tests/makeotf_data/input/bug680/mkmk.fea new file mode 100644 index 000000000..6d74b57a4 --- /dev/null +++ b/tests/makeotf_data/input/bug680/mkmk.fea @@ -0,0 +1,25 @@ +# Created: Tue Jul 7 16:01:46 2015 +# PS Name: SourceCodePro-Regular +# MM Inst: None +# exported from Defcon + +# NOTE: The markClass declarations can be found in the file 'markclasses.fea'. + +lookup MKMK_MARK_above { + lookupflag MarkAttachmentType @MC_above; + + pos mark acutecmb mark @MC_above; + pos mark brevecmb mark @MC_above; + pos mark brevecmb.cyr mark @MC_above; + pos mark circumflexcmb mark @MC_above; + pos mark dieresiscmb mark @MC_above; + pos mark dotaccentcmb mark @MC_above; + pos mark gravecmb mark @MC_above; + pos mark hoicmb mark @MC_above; + pos mark macroncmb mark @MC_above; + pos mark overlinecmb mark @MC_above; + pos mark ringcmb mark @MC_above; + pos mark tildecmb mark @MC_above; +} MKMK_MARK_above; + + diff --git a/tests/makeotf_test.py b/tests/makeotf_test.py old mode 100755 new mode 100644 index e08f9cf3f..9feeeff32 --- a/tests/makeotf_test.py +++ b/tests/makeotf_test.py @@ -33,11 +33,16 @@ TEMP_DIR = os.path.join(DATA_DIR, 'temp_output') -xfail_py36_win = pytest.mark.xfail( - sys.version_info >= (3, 0) and sys.platform == 'win32', +xfail_win = pytest.mark.xfail( + sys.platform == 'win32', reason="Console's encoding is not UTF-8 ?") +xfail_py3_win = pytest.mark.xfail( + sys.version_info >= (3, 0) and sys.platform == 'win32', + reason="?") + + def setup_module(): """ Create the temporary output directory @@ -111,7 +116,7 @@ def test_getSourceGOADBData(): ['g2', 'g2', '']] -@xfail_py36_win +@xfail_win @pytest.mark.parametrize('input_filename', [ T1PFA_NAME, UFO2_NAME, UFO3_NAME, CID_NAME]) def test_path_with_non_ascii_chars_bug222(input_filename): @@ -130,6 +135,24 @@ def test_path_with_non_ascii_chars_bug222(input_filename): assert os.path.isfile(expected_path) +def test_font_with_hash_bug239(): + input_path = get_input_path('bug239/font.ufo') + output_path = get_temp_file_path() + runner(CMD + ['-o', 'f', '_{}'.format(input_path), + 'o', '_{}'.format(output_path)]) + assert font_has_table(output_path, 'CFF ') + + +def test_font_with_outdated_hash_bug239(): + input_path = get_input_path('bug239/font_outdated_hash.ufo') + output_path = get_temp_file_path() + with pytest.raises(subprocess.CalledProcessError) as err: + runner(CMD + ['-o', 'f', '_{}'.format(input_path), + 'o', '_{}'.format(output_path)]) + assert err.value.returncode == 1 + + +@xfail_py3_win @pytest.mark.parametrize('input_filename', [UFO2_NAME, UFO3_NAME]) def test_ufo_with_trailing_slash_bug280(input_filename): # makeotf will now save the OTF alongside the UFO instead of inside of it @@ -524,3 +547,19 @@ def test_feature_includes_ufo_bug164(): 'o', '_{}'.format(otf_path)]) assert font_has_table(otf_path, 'head') + + +def test_ttf_input_font_bug680(): + input_filename = 'bug680/font.ttf' + feat_filename = 'bug680/features.fea' + ttf_path = get_temp_file_path() + + runner(CMD + ['-o', 'r', + 'f', '_{}'.format(get_input_path(input_filename)), + 'ff', '_{}'.format(get_input_path(feat_filename)), + 'o', '_{}'.format(ttf_path)]) + + for table_tag in ('head', 'hhea', 'maxp', 'OS/2', 'hmtx', 'cmap', 'fpgm', + 'prep', 'cvt ', 'loca', 'glyf', 'name', 'post', 'gasp', + 'BASE', 'GDEF', 'GPOS', 'GSUB'): + assert font_has_table(ttf_path, table_tag) diff --git a/tests/makeotfexe_data/input/bug492/features.fea b/tests/makeotfexe_data/input/bug492/features.fea new file mode 100644 index 000000000..4c3919c3c --- /dev/null +++ b/tests/makeotfexe_data/input/bug492/features.fea @@ -0,0 +1,2 @@ + +@CLASS = [glyph_not_found a]; diff --git a/tests/makeotfexe_data/input/bug492/font.pfa b/tests/makeotfexe_data/input/bug492/font.pfa new file mode 100644 index 000000000..4ac04bd76 --- /dev/null +++ b/tests/makeotfexe_data/input/bug492/font.pfa @@ -0,0 +1,65 @@ +%!FontType1-1.1: SourceSans-Test 2.20 +%ADOt1write: (1.0.34) +%%BeginResource: font SourceSans-Test +12 dict dup begin +/FontType 1 def +/FontName /SourceSans-Test def +/FontInfo 8 dict dup begin +/version (2.20) def +/Notice (Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.) def +/Copyright (Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'.) def +/FamilyName (Source Sans) def +/UnderlinePosition -75 def +end def +/PaintType 0 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/Encoding StandardEncoding def +/FontBBox {52 -12 565 660} def +end +currentfile eexec BAB431EA06BB0A1031E1AA11919E714AC69FC4EA3B6672 +ABF3FDE103443FF5321890FEA3C9361761AC3B607C4C960F4D385045AB5EBCA8 +90FBA7C10718659A90ABF027E30B88E7D14F8D16AC4F74C85733B7705F6CF5C8 +EBAB2E0E40F736110B62422F3D642359FA764B81D9A72049DBFF40187C41455E +5378378702658031C363F2CD4F37345F8FA78044A0491D8AE5B00254A201ADC9 +30CA211B7CAA4782B90547B9664E61F24869CF78DB4E8687FFFE91F16C9E5FF1 +186F31A78B27F54E1C146EDF26271FB25D6AD6FEF7C6577CD58340BEADDE6FFC +AA900264B944E40145476E80CCD21E6143836F5909D71062CC93959AE79B8E83 +83907879DE05209C61D11D1236219DB0524104110DAFF742B28B499F14E126FD +A0B725194ECC86E08F6388D0444BA0297C3D0DEB2E3B1C8EEAF8712C66B0B663 +F560C0CC421487AA0FF3D43F6D48F457D378DC3FDC3FBFE182735FEE782B8801 +D71B6BBB5D42EDB9CF55722C3867223F258B86586AE360694E1980B8BF6B3EC4 +08D39C47787B894DA23EA2DAC3297E0D49C2CAF9BC9F44E24F07AE4F5B3826E9 +F6406BEAEE900804BF3FE8C42804115163753BBA67420C52696A6BD7AFEF9266 +733FB27A68B5D05F4C091ECD0262FD43CB49605B04E19CCB129439ABE1EFA11B +705FCA0AC57C815EA8E7E65644FDC17369A707D15D5A4D2E1596BFE6917189A8 +A2711DC2D996CA9970006BB5EF58211349AAD9B49C2D377C07024428552D8168 +2D2031300451A384F73FCFDCDF5C29A00C657B7CFC409A30E2BF2AC1944EB028 +23EC388C2A1D6B20D52EC2E817E0A063AE48AA7CFBFFD30E7BACEDCA93995CB1 +66379EA794F61F3DFFB4D9FC7C25DD5ACC48DD8EE6BBB6DE526717BDED470F33 +321CED8A2958D6F8490D834DA175A70D0F759ABD27B37C6FFE6BC0590D470A32 +91F4374CD9C6471A21BCFBC97625E3C4116D9B0C6ADF60E1F47F0B76080F725D +53B5ADFC880200B5CFA40536E83FC0FF61BB5D5B86B115A68D95CEEAD85B8C9D +A1E6931780781FA3FB0FDB5A575C95FED4BB91F2154DCF699885C4585B2A4AD9 +25FAD160F60F34F298B5F65386E4CBA229C37569A7BD7C58F64E20D225C8A925 +ECA90B51A3EB7E335F5FE4D6E9A6D6F8F5CC5106984801198FA2D1E43219FA92 +C8AD14E7B1610DAA215E8D63216A90D9992C5106349C40967149FDAD08EE9638 +485B07609C18C971ADCC2E04FC4A51D6B6FC0E77918C9EC1F5D0651432D84B35 +9FD0F6C03F4826D53A2DDEC99DB19EA1ACD2E040E85D07C68E7A4FE59DAE50AF +DF8F1B67C27F14450C52EB5BE7B7232C1E35D8CDC5612A7C4DCE98767FF7059E +6680989C0671CBACC8E7EF04DD0C9CB3B3E2B29564EE440C4119AB58E893D38D +7136FAC9AA14E9A26AF56A31DAA71EBF7508559349A63354E5105465E83DDDE6 +E78A4D81F3995CD991B70281C228E34F6084A4D4E76BAF6CFB86EF73706910DB +AC7EB1793FB658C9AF0288258A8D370AE2A694AB571B793BE22436C0B1A35111 +C3039ED8C9EA63598025A5EDA8DDFC3A972B982F1D1B2E7F24AF925331B9F762 +0A07166437AD880584C5D4F39C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%EOF diff --git a/tests/makeotfexe_test.py b/tests/makeotfexe_test.py old mode 100755 new mode 100644 index 2ec910cbd..5986a6860 --- a/tests/makeotfexe_test.py +++ b/tests/makeotfexe_test.py @@ -100,6 +100,24 @@ def test_DFLT_script_with_any_lang_bug438(): '-r', r'^\s+Version.*;hotconv.*;makeotfexe']) +def test_glyph_not_in_font_bug492(): + input_filename = 'bug492/font.pfa' + feat_filename = 'bug492/features.fea' + otf_path = get_temp_file_path() + + stderr_path = runner( + CMD + ['-s', '-e', '-o', + 'f', '_{}'.format(get_input_path(input_filename)), + 'ff', '_{}'.format(get_input_path(feat_filename)), + 'o', '_{}'.format(otf_path)]) + + with open(stderr_path, 'rb') as f: + output = f.read() + assert (b'[ERROR] Glyph "glyph_not_found" not in font. ' + b'[') in output + assert (b'syntax error at "a" [') not in output + + def test_version_warning_bug610(): input_filename = 'bug610/font.pfa' feat_filename = 'bug610/v0005.fea' diff --git a/tests/mergefonts_test.py b/tests/mergefonts_test.py old mode 100755 new mode 100644 diff --git a/tests/otc2otf_data/expected_output/SourceSansPro-Bold.ttx b/tests/otc2otf_data/expected_output/SourceSansPro-Bold.ttx new file mode 100644 index 000000000..0c2467f9d --- /dev/null +++ b/tests/otc2otf_data/expected_output/SourceSansPro-Bold.ttx @@ -0,0 +1,158532 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + © 2010 - 2018 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’. + + + Source Sans Pro + + + Bold + + + 2.040;ADBO;SourceSansPro-Bold;ADOBE + + + Source Sans Pro Bold + + + Version 2.040;hotconv 1.0.109;makeotfexe 2.5.65596 + + + SourceSansPro-Bold + + + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + + + Adobe Systems Incorporated + + + Paul D. Hunt + + + http://www.adobe.com/type + + + This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an ‘AS IS’ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software. + + + http://scripts.sil.org/OFL + + + Preferred Athabaskan ogoneks + + + Slashed zero + + + Straight l + + + Alternate a + + + Alternate g + + + Serifed I + + + Titling figures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -101 callsubr + -220 -270 -102 callgsubr + return + + + 49 34 30 47 46 -34 31 -49 -49 -34 -31 -46 -47 34 -30 49 hvcurveto + endchar + + + rmoveto + -107 callsubr + return + + + 230 -104 callgsubr + return + + + 208 255 -103 callgsubr + return + + + -59 callsubr + 92 callsubr + hvcurveto + 38 120 rmoveto + -57 -33 44 98 94 42 44 47 103 callgsubr + hvcurveto + -203 vlineto + 45 callsubr + return + + + 18 65 17 76 16 69 rrcurveto + 4 hlineto + 17 -68 18 -77 18 -65 15 -60 rcurveline + -139 hlineto + return + + + rmoveto + -98 callsubr + 244 callsubr + + + 10 -51 rlineto + 120 284 hlineto + -91 callsubr + return + + + 41 29 30 40 40 -29 30 -41 -68 callsubr + return + + + 151 vstem + -70 callsubr + return + + + 206 callgsubr + hintmask 0101011101000000 + -40 callgsubr + hintmask 0101011101100000 + -41 callsubr + hintmask 0110011101100000 + -83 callgsubr + hintmask 0101101101100000 + -77 callgsubr + hintmask 0101011101000000 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 0101101101100000 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 0101011101000000 + -59 -3 -43 -48 -44 hhcurveto + 91 -324 rmoveto + 32 callgsubr + hintmask 1001011101000000 + -77 callsubr + hintmask 0101011101000000 + -56 callsubr + return + + + 136 80 74 96 93 -63 34 -77 27 hvcurveto + -55 20 rlineto + -39 14 -25 13 24 vvcurveto + 29 21 14 36 45 42 -20 -27 39 vhcurveto + 72 94 rlineto + 34 -46 -62 34 -86 hhcurveto + -124 -84 -66 -100 -82 66 -43 72 -26 hvcurveto + 56 -21 rlineto + 37 -14 27 -15 -28 vvcurveto + -26 -19 -19 -42 -54 -53 23 37 -49 vhcurveto + -70 -99 rlineto + -44 54 81 -30 84 hhcurveto + return + + + -17 109 rlineto + -4 -10 -13 -2 -8 hhcurveto + -28 -17 10 32 66 5 109 5 92 hvcurveto + -148 -261 hlineto + return + + + rmoveto + 149 hlineto + 28 108 rlineto + 157 hlineto + 28 -108 rlineto + 154 hlineto + -171 112 callgsubr + return + + + -142 -31 rlineto + 24 -90 9 -70 -64 vvcurveto + -101 -29 -45 -53 -41 -31 27 53 vhcurveto + 66 6 79 42 vvcurveto + 46 -2 42 -7 34 vhcurveto + -142 -2 callgsubr + -48 -4 -49 -47 vvcurveto + return + + + 152 -70 72 -127 -78 -71 -27 -38 -63 vhcurveto + 53 -97 rlineto + 28 48 41 17 42 hhcurveto + 54 21 -28 -44 3 hvcurveto + return + + + 186 callsubr + hintmask 01011101 + 235 -12 rmoveto + 58 46 26 56 34 hvcurveto + 3 hlineto + -65 callgsubr + hintmask 01011101 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 01101101 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 01011101 + -59 -3 -43 -48 -44 hhcurveto + return + + + 124 -271 150 222 123 -222 131 261 124 -408 return + + + -39 -29 -22 -16 -37 hhcurveto + -43 -19 23 71 hvcurveto + 289 -147 -308 vlineto + -124 46 -76 108 vhcurveto + return + + + 305 -12 rmoveto + 151 78 75 182 hvcurveto + 522 callsubr + -59 -29 33 94 vhcurveto + 292 -146 -283 vlineto + -182 82 -75 150 vhcurveto + return + + + 125 4 72 31 68 vvcurveto + 49 -34 26 -107 9 vhcurveto + -28 -54 rlineto + 45 -4 19 -12 -19 vvcurveto + -23 -25 -12 -78 -4 vhcurveto + return + + + 49 36 32 45 45 -36 32 -49 -49 -36 -32 -45 -45 36 -32 49 hvcurveto + endchar + + + -86 callsubr + endchar + + + -33 callgsubr + 365 callgsubr + + + -17 109 rlineto + -4 -11 -13 -2 -8 hhcurveto + -27 -14 10 32 83 7 148 3 116 hvcurveto + -148 -341 hlineto + return + + + 276 302 callgsubr + 95 165 165 -114 95 -127 -126 -114 -95 -165 -165 114 215 callgsubr + -28 55 86 86 28 55 61 62 28 -55 -86 -86 -28 -55 -62 hvcurveto + return + + + 166 callsubr + 38 34 30 104 14 hvcurveto + -87 vlineto + -26 -26 -22 -16 -33 hhcurveto + return + + + 326 -12 rmoveto + 78 73 27 38 41 hvcurveto + 251 -214 -102 85 -83 vlineto + -9 -13 -18 -5 -21 hhcurveto + -97 -45 59 96 103 57 57 78 44 26 -13 -25 28 hvcurveto + 79 87 rlineto + 37 -40 -59 34 -79 hhcurveto + -154 -129 -101 -179 -183 125 -89 155 hvcurveto + return + + + 75 6 65 30 68 vvcurveto + 70 -47 48 -131 3 vhcurveto + -9 -90 rlineto + 58 -4 22 -14 -24 vvcurveto + -21 -20 -9 -25 -5 vhcurveto + return + + + -14 79 rlineto + -2 -9 -3 0 -5 hhcurveto + -21 -16 7 26 hvcurveto + return + + + 108 callgsubr + 266 callgsubr + 63 206 callgsubr + hintmask 0101011100000000 + -40 callgsubr + hintmask 0101011110000000 + -41 callsubr + hintmask 0110011110000000 + -83 callgsubr + hintmask 0101101110000000 + -77 callgsubr + hintmask 0101011100000000 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 0101101110000000 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 0101011100000000 + -59 -3 -43 -48 -44 hhcurveto + 91 -324 rmoveto + 32 callgsubr + hintmask 1001011100000000 + -77 callsubr + hintmask 0101011100000000 + -56 callsubr + return + + + -91 callgsubr + endchar + + + -31 -35 64 -63 hhcurveto + -77 -44 -49 -103 -3 hvcurveto + 92 -5 rlineto + 39 4 11 16 20 hhcurveto + return + + + 138 hintmask 10110101 + -15 callgsubr + hintmask 11011001 + -43 callsubr + hintmask 10111001 + -10 86 rlineto + hintmask 10110101 + -53 callgsubr + hintmask 11010101 + -53 callsubr + hintmask 10110101 + 6 callgsubr + return + + + hintmask 11111000 + 9 callsubr + hintmask 11110100 + -71 callsubr + hintmask 11111000 + -59 -16 -37 -35 -67 vvcurveto + -102 104 -51 128 vhcurveto + return + + + -2 -23 -25 -2 -21 hhcurveto + -46 -24 15 29 30 30 20 47 38 38 -11 -22 33 hvcurveto + 54 94 rlineto + 32 -49 -63 19 -59 hhcurveto + -112 -101 -43 -99 -40 25 -47 50 -16 hvcurveto + -4 vlineto + return + + + 342 -12 -106 callgsubr + return + + + 189 -84 callgsubr + return + + + 187 callgsubr + -40 29 -30 41 hvcurveto + return + + + hstem + -6 585 vstem + -104 callsubr + return + + + 36 26 27 34 35 -26 234 callgsubr + -35 -34 26 -27 36 hvcurveto + return + + + -61 callsubr + endchar + + + -29 -24 42 -55 hhcurveto + -55 -35 -35 -76 -12 callgsubr + return + + + rmoveto + 56 -52 125 92 33 callsubr + 125 -92 56 52 -108 131 327 callgsubr + return + + + -222 101 182 107 -182 92 212 114 -359 hlineto + return + + + -49 callgsubr + 47 callsubr + return + + + -12 rmoveto + 135 90 76 100 84 -49 49 -61 33 531 callgsubr + 44 29 39 49 61 vvcurveto + 105 -77 69 -116 -118 -85 -67 -108 -67 36 -46 49 -37 487 callsubr + -60 -32 -48 -47 -77 vvcurveto + -103 94 -71 127 vhcurveto + hintmask 11011000 + 40 382 rmoveto + -65 25 -44 25 52 vvcurveto + 49 32 24 39 48 29 -33 -49 -33 -14 -31 -25 -29 vhcurveto + hintmask 11100100 + -37 -280 rmoveto + -53 -45 33 56 39 21 36 28 26 hvcurveto + 80 -34 54 -21 -56 vvcurveto + -53 -36 -26 -49 vhcurveto + endchar + + + -12 -49 rlineto + -4 hlineto + 42 -39 -40 19 -50 hhcurveto + -108 -101 -98 -162 return + + + hstem + 356 125 vstem + -105 callgsubr + return + + + rlineto + -152 hlineto + -42 -107 -14 -41 -15 -35 -15 -42 rlinecurve + -4 hlineto + -14 42 -15 35 -13 41 -42 107 rcurveline + -156 hlineto + return + + + 86 callsubr + -106 -34 hlineto + -77 29 -50 82 vhcurveto + return + + + -21 155 0 callsubr + return + + + -27 -23 33 -47 hhcurveto + -48 -27 -19 -68 -9 hvcurveto + 64 -9 rlineto + 21 3 8 6 14 hhcurveto + return + + + 311 vlineto + 48 32 26 24 35 hhcurveto + 44 15 -22 -72 hvcurveto + return + + + rmoveto + 37 22 16 25 29 27 -21 -56 7 vhcurveto + -19 -16 -21 -10 -22 hhcurveto + -32 -19 19 34 hvcurveto + 27 -279 rmoveto + 115 67 85 124 124 -60 81 -106 -78 -61 -59 -79 -75 47 -48 75 32 29 12 22 23 hvcurveto + -65 -7 -26 -40 -57 hhcurveto + -27 -20 12 14 -19 hvcurveto + -42 -67 rlineto + -20 23 35 -21 57 hhcurveto + endchar + + + 54 -12 91 -7 54 vhcurveto + 4 hlineto + 49 -124 75 -181 rlineto + 48 hlineto + 75 181 50 124 512 callgsubr + -54 -12 -91 -54 vvcurveto + -148 132 528 -149 vlineto + -80 -215 -33 -89 rlineto + -4 hlineto + -32 89 -83 215 327 callgsubr + return + + + 124 150 24 callgsubr + return + + + hstem + 14 689 -42 callgsubr + return + + + rmoveto + -67 callgsubr + + + rmoveto + 9 47 rlineto + -18 3 -12 5 10 vvcurveto + 12 15 7 50 4 vhcurveto + -13 59 rlineto + -110 -4 -38 -23 -40 vvcurveto + -49 53 -24 64 -7 vhcurveto + return + + + 33 callgsubr + hstem + -6 516 vstem + -103 callsubr + return + + + 151 -57 157 89 157 -157 267 -166 151 return + + + rmoveto + 181 157 -99 97 -154 -182 rlineto + endchar + + + 124 -40 76 -105 -69 -46 -42 -56 -43 vhcurveto + -4 hlineto + return + + + rmoveto + 96 47 47 73 94 vvcurveto + 83 -33 48 -61 -45 -32 -32 -50 -45 34 -28 43 3 3 0 1 3 vhcurveto + -59 -30 -38 -60 -30 vhcurveto + return + + + -60 18 40 -22 70 hhcurveto + 40 29 8 9 18 hvcurveto + return + + + -80 86 rlineto + -24 -24 -32 -18 -44 hhcurveto + -74 -49 54 102 97 57 57 70 37 25 -12 -25 28 hvcurveto + 80 88 rlineto + 38 -40 -61 32 -70 hhcurveto + -146 -129 -101 -179 return + + + -84 14 rlineto + -43 -6 -26 -36 -53 hhcurveto + -53 -26 36 43 -6 hvcurveto + -84 -14 rlineto + return + + + -5 67 callgsubr + 108 -108 120 return + + + 21 -55 callsubr + return + + + 293 rmoveto + 48 35 -25 -67 -72 -36 -31 -44 -44 -42 32 100 -13 hvcurveto + 45 26 37 18 33 hhcurveto + 6 -305 rmoveto + 115 96 81 132 134 -80 62 -109 -39 -55 -25 -42 -33 hvcurveto + 148 5 56 50 70 hhcurveto + 37 40 -21 -24 22 hvcurveto + 77 88 rlineto + 41 -40 -61 35 -84 hhcurveto + -134 -123 -107 -237 -223 117 -92 123 hvcurveto + endchar + + + -31 callgsubr + 59 callsubr + hlineto + return + + + rmoveto + 10 47 rlineto + -19 3 -12 5 10 vvcurveto + 12 15 8 51 3 vhcurveto + -14 59 rlineto + -110 -4 -38 -22 -41 vvcurveto + -49 53 -24 64 -7 vhcurveto + return + + + 242 -12 rmoveto + 30 callsubr + return + + + rmoveto + 102 65 366 callgsubr + -65 47 52 -93 92 rlineto + -116 hlineto + -93 -92 rlineto + return + + + -63 callsubr + endchar + + + 480 callgsubr + hstemhm + 77 471 callgsubr + 140 hintmask 01011100 + 524 callgsubr + hintmask 01101100 + 13 callgsubr + hintmask 10011100 + 18 callgsubr + hlineto + return + + + rmoveto + 72 72 -154 182 -99 -97 rlineto + endchar + + + -53 502 callsubr + 189 147 vstem + -69 callsubr + return + + + 71 callsubr + 485 callgsubr + -80 123 hintmask 11110000 + 69 callsubr + hintmask 11101000 + 14 callsubr + hintmask 11110000 + -174 108 -104 155 vhcurveto + return + + + 154 callsubr + hintmask 11110000 + -54 callgsubr + hintmask 11101000 + 92 callgsubr + + + 323 callsubr + hstem + 160 147 vstem + 4 callsubr + return + + + 281 -12 rmoveto + 54 61 16 43 49 hvcurveto + -26 callgsubr + -165 107 -95 138 hvcurveto + return + + + 214 0 callgsubr + return + + + rmoveto + 66 74 -171 140 -78 -95 rlineto + endchar + + + 194 -12 rmoveto + 66 55 21 56 70 hvcurveto + -46 42 55 -31 74 hhcurveto + 58 66 21 35 51 hvcurveto + -50 95 rlineto + -21 -36 -32 -15 -37 hhcurveto + -60 -48 33 69 -11 hvcurveto + 286 hlineto + 3 12 3 23 27 vvcurveto + 135 -66 106 -131 -59 -46 -27 -48 -42 vhcurveto + 47 -29 -48 28 -61 hhcurveto + -72 -68 -27 -38 -63 hvcurveto + return + + + 102 callgsubr + 278 callsubr + hintmask 1111010001000000 + 73 callsubr + hintmask 1111000110000000 + -43 callgsubr + hintmask 1110101010000000 + 43 callgsubr + hintmask 1111000110000000 + 101 callsubr + hintmask 1111010010000000 + -46 -26 -25 -33 -41 vvcurveto + hintmask 1111010001000000 + 324 callsubr + hintmask 1110101010000000 + 28 callgsubr + hintmask 1111010001000000 + 1 callsubr + return + + + 73 callsubr + hintmask 1111010010100000 + -43 callgsubr + hintmask 1110110100100000 + 43 callgsubr + hintmask 1111010010100000 + 101 callsubr + hintmask 1111011000100000 + -46 -26 -25 -33 -41 vvcurveto + return + + + 481 callsubr + -9 callsubr + return + + + -22 120 callsubr + hstem + 61 149 161 151 vstem + -87 callgsubr + return + + + 158 -12 rmoveto + 101 60 61 99 40 hvcurveto + 201 504 383 callgsubr + -69 -190 -51 -156 rlineto + -4 hlineto + -55 156 -76 190 rlineto + -156 hlineto + 221 -482 -9 -19 rlineto + -21 -12 -22 -9 -29 hhcurveto + -26 -11 4 4 -12 hvcurveto + -26 -128 rlineto + -8 19 26 -5 38 hhcurveto + return + + + 202 callgsubr + 108 113 hstemhm + -51 113 3 138 11 113 35 callsubr + -201 387 callgsubr + return + + + -30 -28 callgsubr + return + + + -32 0 107 118 92 104 107 46 callgsubr + 130 134 -116 141 hintmask 11110100 + 204 callsubr + hintmask 11111000 + 64 16 27 52 45 vvcurveto + 105 -95 27 -117 vhcurveto + -199 hlineto + 147 -211 rmoveto + 104 54 vlineto + 51 25 -13 -35 -33 -21 -23 -55 hvcurveto + -54 -210 rmoveto + 118 vlineto + hintmask 11110100 + 59 hlineto + 61 28 -19 -38 -39 -29 -22 -60 hvcurveto + endchar + + + 166 callgsubr + 225 -272 return + + + 161 callsubr + 59 39 -90 100 181 callsubr + -100 rlineto + return + + + rmoveto + -66 callsubr + 218 hmoveto + 130 callsubr + + + hstem + 14 786 -69 callgsubr + return + + + 74 callgsubr + -75 14 rlineto + -48 -8 -28 -40 -58 hhcurveto + -58 -28 40 48 -8 hvcurveto + -75 -14 rlineto + return + + + -135 -12 379 callsubr + 10 callgsubr + return + + + rmoveto + -41 callgsubr + return + + + 267 0 124 25 114 11 24 callgsubr + -111 111 hstemhm + 386 147 hintmask 10110100 + 303 356 rmoveto + hintmask 11101100 + 26 57 26 64 27 64 rrcurveto + 4 -278 -125 hlineto + hintmask 10110100 + -275 -263 rmoveto + 155 hlineto + hintmask 11110100 + 68 149 rlineto + 177 hlineto + hintmask 10110100 + -149 407 124 -260 150 211 123 -211 131 250 124 -487 vlineto + return + + + 59 -44 41 -124 3 vhcurveto + -17 -74 rlineto + 57 -4 22 -17 -24 vvcurveto + -30 -21 -12 -23 -8 vhcurveto + return + + + 48 callgsubr + -12 -20 return + + + 279 callgsubr + hstemhm + 47 140 136 134 167 125 hintmask 01101111 + -21 callsubr + hintmask 01110111 + 168 callgsubr + hintmask 01101111 + -83 57 -66 90 vhcurveto + hintmask 10101111 + 110 callsubr + return + + + 87 45 46 58 58 -45 46 -87 -87 -45 -46 -58 -58 45 -46 87 hvcurveto + 55 vmoveto + -24 -19 20 29 29 19 20 24 24 19 -20 -29 -29 -19 -20 -24 hvcurveto + endchar + + + 115 270 112 return + + + 12 -365 rmoveto + -66 -44 20 37 18 9 15 18 16 hvcurveto + -4 16 20 -2 34 hhcurveto + 51 hlineto + 49 27 -8 -31 -34 -48 -27 -66 hvcurveto + return + + + rmoveto + 31 25 22 35 34 -25 22 -31 -32 -25 -22 -34 -35 25 -22 32 hvcurveto + endchar + + + 112 105 238 callgsubr + return + + + 532 callsubr + 181 hlineto + 167 347 -57 callsubr + 168 -347 rlineto + return + + + rmoveto + 85 hlineto + 352 676 rlineto + -85 hlineto + return + + + -23 -12 110 107 97 97 109 hstem + 379 140 vstem + 278 302 callgsubr + 89 171 171 -114 89 -127 -128 -114 -89 -171 -171 114 -89 128 hvcurveto + 411 vmoveto + 53 34 -34 -63 12 hvcurveto + -199 hlineto + 63 12 35 34 53 hhcurveto + -301 vmoveto + -56 -36 37 70 -10 hvcurveto + 203 hlineto + -70 -10 -36 -37 -55 hhcurveto + endchar + + + 147 callgsubr + 68 140 hstemhm + -29 140 -34 34 -34 147 -31 140 hintmask 11100100 + 77 hmoveto + 147 260 callsubr + hlineto + hintmask 11101000 + -36 48 rmoveto + 41 29 30 40 40 -29 30 -41 hvcurveto + hintmask 11110000 + 187 callgsubr + hvcurveto + hintmask 11101000 + -40 29 -30 41 vhcurveto + hintmask 11100010 + 244 callsubr + + + vstem + -103 callsubr + 89 return + + + 268 -12 rmoveto + 63 56 11 46 64 hvcurveto + -57 93 rlineto + -29 -39 -41 -9 -32 hhcurveto + -67 -35 21 35 35 23 14 52 27 30 -2 -2 28 hvcurveto + 105 vlineto + return + + + vstem + -104 callsubr + 87 return + + + 143 -12 rmoveto + 93 53 54 88 37 hvcurveto + 169 398 rlineto + -146 hlineto + -45 -117 -45 -137 rlineto + -4 hlineto + -50 137 -49 117 rlineto + -155 hlineto + 189 -384 -8 -11 rlineto + -13 -9 -18 -6 -19 hhcurveto + -18 -14 2 4 -11 hvcurveto + return + + + 66 -11 84 -7 61 vhcurveto + 4 hlineto + 57 -125 130 -231 rlineto + 144 528 -135 -145 hlineto + return + + + 132 callsubr + 147 return + + + 68 18 49 41 74 77 callsubr + 15 -33 -39 7 -42 hhcurveto + -155 -108 -99 -175 hvcurveto + return + + + 44 33 32 50 45 -35 28 -42 -3 -4 0 -1 -3 hvcurveto + 59 30 38 60 30 vhcurveto + -32 64 rlineto + -96 -47 -46 -73 -94 vvcurveto + -82 32 -49 62 vhcurveto + return + + + 121 callgsubr + 26 301 callsubr + 108 callsubr + return + + + -66 11 -88 7 -57 vhcurveto + -4 hlineto + -58 126 -125 230 rlineto + -148 return + + + -51 -12 63 callgsubr + return + + + 54 callgsubr + 147 -17 rmoveto + 74 213 -103 21 -36 -220 rlineto + 184 3 rmoveto + 31 25 22 35 34 -25 22 -31 -32 -25 -22 -34 -35 25 -22 32 hvcurveto + endchar + + + 163 0 114 -7 105 3 345 callgsubr + hstemhm + 331 389 callgsubr + 267 281 rmoveto + 20 41 19 49 21 50 rrcurveto + 4 hlineto + hintmask 01011000 + -209 -96 vlineto + hintmask 10111000 + -249 -212 rmoveto + 152 hlineto + hintmask 01011000 + 49 107 rlineto + 144 hlineto + hintmask 10111000 + -107 357 114 -210 101 170 107 -170 92 200 114 -437 vlineto + return + + + -36 callgsubr + 220 -55 -27 callgsubr + return + + + -18 441 callsubr + -8 -4 0 -6 hhcurveto + -12 -14 10 31 hvcurveto + return + + + -7 rlineto + 27 6 9 11 16 hhcurveto + return + + + -68 -292 hlineto + -94 -27 -33 -59 -59 -29 33 94 vhcurveto + 292 -146 -283 vlineto + -182 82 -75 150 151 78 75 182 vhcurveto + return + + + hstem + 46 151 253 130 vstem + -86 callgsubr + return + + + 155 hlineto + -123 204 rlineto + 56 29 37 51 72 vvcurveto + 133 -103 39 -121 vhcurveto + -209 hlineto + return + + + -62 vlineto + 63 30 -17 -34 -30 -25 -17 -31 -33 -26 15 33 -24 hvcurveto + -65 -51 rlineto + return + + + 206 -12 rmoveto + 42 24 7 9 21 hvcurveto + return + + + 190 -12 rmoveto + 56 46 26 37 42 hvcurveto + 4 hlineto + return + + + 48 49 26 35 314 callgsubr + return + + + -5 381 callgsubr + 410 callsubr + -8 99 80 147 hintmask 10110011 + 288 38 callgsubr + 26 11 29 19 22 hvcurveto + 19 21 21 19 23 16 rrcurveto + 4 hlineto + 10 -48 366 callsubr + -104 -105 -98 -162 -159 77 -97 119 -4 hvcurveto + hintmask 11001011 + -26 -24 -27 -36 -47 vvcurveto + hintmask 10110011 + 308 callgsubr + hintmask 11001101 + -8 318 rmoveto + -57 -33 44 98 94 42 44 47 103 callgsubr + hvcurveto + -203 vlineto + 45 callsubr + return + + + -216 88 -88 161 return + + + rlineto + 4 hlineto + return + + + -12 86 callgsubr + return + + + hintmask 01110100 + 28 callsubr + hintmask 10110100 + -82 callsubr + hintmask 01110100 + 169 callsubr + hintmask 01111010 + return + + + -105 callgsubr + hintmask 11111000 + return + + + 31 18 27 31 37 vvcurveto + 67 -60 40 -77 -75 -61 -40 -67 -40 24 -27 34 -24 vhcurveto + -4 vlineto + return + + + 51 38 40 52 53 -38 40 -51 -51 return + + + hintmask 11101000 + -69 callsubr + return + + + 77 -35 callsubr + return + + + 486 callsubr + hstem + 46 149 vstem + -25 callgsubr + return + + + rmoveto + 42 81 40 77 33 callsubr + -6 -117 rlineto + -41 vlineto + -157 vmoveto + 96 87 58 418 callsubr + hlineto + -141 -249 rlineto + -54 179 vlineto + return + + + -27 callgsubr + endchar + + + -101 35 -66 109 vhcurveto + endchar + + + -33 -24 -25 -12 -32 hhcurveto + return + + + 90.5 -90.5 244.5 -90 106 return + + + -88 3 52 -69 114 hhcurveto + return + + + 138 hintmask 0110110100010000 + -15 callgsubr + hintmask 0111011000010000 + -43 callsubr + hintmask 0110111000010000 + -10 86 rlineto + hintmask 0110110100010000 + -53 callgsubr + hintmask 0111010100010000 + -53 callsubr + hintmask 0110110100010000 + 6 callgsubr + hintmask 0110110001010000 + 470 callsubr + hintmask 0110110010010000 + 32 callgsubr + hintmask 1010110010010000 + -77 callsubr + hintmask 0110110010010000 + 86 callsubr + hintmask 0110110001010000 + -106 -34 hlineto + -77 29 -50 82 vhcurveto + return + + + 18 callsubr + 123 79 355 callgsubr + hintmask 10111100 + 29 callsubr + hintmask 01111100 + -100 callgsubr + hintmask 10111100 + -88 callgsubr + hintmask 01111100 + 360 callsubr + return + + + rmoveto + 129 hlineto + 25 callgsubr + 150 37 124 vvcurveto + 118 -82 53 -107 -78 -66 -37 -54 -47 vhcurveto + 81 -74 rlineto + 27 27 27 19 37 hhcurveto + 40 27 -22 -41 -75 -146 -57 20 -137 hvcurveto + return + + + 487 callgsubr + hintmask 0101101100100000 + 70 callsubr + hintmask 1001101100100000 + -83 callgsubr + hintmask 0110101100100000 + -77 callgsubr + hintmask 0101101100100000 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 0110101100100000 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 0101101100100000 + -59 -3 -43 -48 -44 hhcurveto + return + + + 56 18 47 48 81 vvcurveto + 37 -14 37 -16 20 vhcurveto + -108 -47 rlineto + 7 -14 8 -21 -22 vvcurveto + -77 -43 -13 -38 -2 vhcurveto + return + + + 61 -177 rmoveto + 148 hlineto + -3 73 -3 71 -4 76 rrcurveto + -42 36 47 -13 42 hhcurveto + 104 101 98 170 159 -87 93 -144 -135 -102 -83 -188 hvcurveto + 228 -129 rmoveto + -29 -31 8 32 -30 hvcurveto + 103 vlineto + 84 39 53 55 58 28 -45 -89 -102 -41 -44 -49 vhcurveto + return + + + -23 107 rlineto + -5 -13 -18 -5 -16 hhcurveto + -39 -25 23 56 hvcurveto + return + + + 36 hmoveto + 411 120 -234 hlineto + 231 321 rlineto + 87 -385 -120 208 vlineto + -231 -321 rlineto + return + + + 492 callsubr + 408 147 120 -441 -120 147 hlineto + return + + + 38 -223 95 139 -21 429 121 327 callsubr + 11 107 104 151 vstemhm + 322 16 callsubr + 27 20 40 56 20 hvcurveto + 108 39 71 83 147 vvcurveto + 175 -107 99 -154 vhcurveto + hintmask 11110100 + -157 -106 -98 -176 -159 90 -101 134 -16 hvcurveto + hintmask 11111100 + -34 -28 -28 -46 -45 vvcurveto + -60 51 -34 63 vhcurveto + -13 332 rmoveto + hintmask 11110100 + -70 -42 60 97 98 42 55 70 68 42 -55 -98 hvcurveto + hintmask 11111100 + -97 -42 -60 -68 vhcurveto + return + + + rmoveto + 40 45 13 25 36 hvcurveto + -35 61 rlineto + -14 -24 -24 -6 -24 hhcurveto + -43 -33 18 49 -8 hvcurveto + 196 hlineto + 4 14 1 9 18 vvcurveto + 83 -43 76 -99 -84 -74 -68 -105 -108 74 -65 95 vhcurveto + -72 205 rmoveto + 42 7 24 20 31 hhcurveto + 40 14 -30 -32 hvcurveto + endchar + + + 309 callsubr + -251 -225 296 callsubr + return + + + 95 -7 rlineto + 36 4 14 13 19 hhcurveto + return + + + 65 hmoveto + 143 122 hlineto + 63 71 112 -193 rlineto + 159 hlineto + -187 292 174 204 rlineto + -160 hlineto + -157 -197 rlineto + -4 402 -143 hlineto + return + + + 133 callgsubr + -115 hlineto + return + + + 78 callsubr + 485 callsubr + -77 123 hintmask 11110000 + 224 callsubr + hintmask 11101000 + 14 callgsubr + hintmask 11110000 + 198 callgsubr + return + + + 323 callsubr + 82 140 hstemhm + 50 140 -30 147 -35 140 hintmask 11101000 + 4 callsubr + hintmask 11110100 + -40 409 -100 callsubr + + + 150 hintmask 11110100 + -101 callgsubr + return + + + vvcurveto + 37 -15 36 -15 21 vhcurveto + -109 -47 rlineto + 8 return + + + -50 25 callgsubr + 166 104 155 518 callsubr + hintmask 11101000 + 243 -12 rmoveto + 128 108 67 118 82 -53 52 -73 21 530 callsubr + 68 29 38 46 66 vvcurveto + 111 -88 63 -131 -78 -64 -31 -50 -58 vhcurveto + 74 -90 rlineto + 35 40 34 21 45 hhcurveto + 50 28 -26 -44 -51 -36 -34 -114 hvcurveto + -104 vlineto + hintmask 11101000 + 138 33 -35 -56 -48 -41 -27 -62 -54 -47 27 37 -38 hvcurveto + -68 -93 rlineto + -54 46 72 -36 103 hhcurveto + endchar + + + 34 callgsubr + endchar + + + 309 109 15 callgsubr + return + + + -40 callgsubr + -41 callsubr + return + + + 38 34 callsubr + return + + + -5 -37 callsubr + 45 77 147 callsubr + -72 14 rlineto + -47 -10 -32 -27 -49 hhcurveto + -49 -32 27 47 -10 hvcurveto + -72 12 callgsubr + return + + + 242 -211 rmoveto + 170 107 75 103 89 -67 37 -122 hvcurveto + return + + + 75 callsubr + 442 callgsubr + 461 callgsubr + -20 123 246 callgsubr + 451 hlineto + hintmask 01110100 + 52 callsubr + hintmask 10111000 + 125 callgsubr + return + + + -10 -12 132 callgsubr + return + + + vstem + 29 callgsubr + return + + + 66 callsubr + -15 8 -20 -23 vvcurveto + -47 -27 -18 -40 -8 vhcurveto + return + + + -23 1 callgsubr + return + + + -219 367 79 -71 71 81 60 44 82 hstemhm + 29 99 88 104 hintmask 10111100 + 130 367 rmoveto + 38 31 18 24 24 hvcurveto + 4 hlineto + hintmask 01111100 + 10 -34 rlineto + 83 189 hlineto + 100 -50 49 -85 -52 -49 -18 -26 -44 vhcurveto + 37 -68 rlineto + 17 32 31 13 27 hhcurveto + 32 14 -16 -28 3 hvcurveto + -131 -12 -56 -38 -70 vvcurveto + hintmask 10111100 + -54 39 -46 62 vhcurveto + 35 79 rmoveto + -23 -14 10 20 23 22 21 66 7 hvcurveto + -55 vlineto + -16 -17 -14 -10 -20 hhcurveto + endchar + + + 22 vhcurveto + -109 -44 470 callgsubr + -24 -26 vvcurveto + return + + + 70 31 46 61 96 vvcurveto + 155 -113 48 -138 vhcurveto + -235 hlineto + return + + + 38 hmoveto + 398 115 -215 hlineto + 208 303 rlineto + 78 -368 225 callgsubr + return + + + -16 32 callsubr + 76 -3 callsubr + return + + + -46 25 callgsubr + 389 -20 32 -20 return + + + -2 callgsubr + vvcurveto + return + + + 9 0 16 2 15 vhcurveto + return + + + -36 callgsubr + 161 -38 510 callsubr + return + + + -182 -223 95 128 530 callgsubr + 52 145 302 callsubr + -73 147 hintmask 11101000 + 204 130 callgsubr + 30 20 32 34 28 hvcurveto + hintmask 01100100 + 93 124 -73 404 73 124 -292 -124 72 -404 hlineto + hintmask 01110000 + -72 -124 hlineto + hintmask 11101000 + 109 hlineto + -27 -20 -45 -48 -61 216 callsubr + return + + + -50 -90 118 210 102 115 123 422 callgsubr + -90 rmoveto + 124 109 82 146 137 -93 65 -109 -26 -21 -4 -10 -24 hvcurveto + 11 129 rlineto + 233 123 -360 hlineto + -18 -330 66 -43 rlineto + 25 38 19 8 37 hhcurveto + 59 41 -38 -65 -69 -42 -38 -65 -54 -45 29 35 -38 hvcurveto + -66 -91 rlineto + -50 50 70 -41 104 hhcurveto + endchar + + + -50 0 97 108 97 97 97 hstemhm + 65 143 127 140 -123 142 hintmask 11110100 + 65 hmoveto + 223 hlineto + 113 93 41 102 67 -40 34 -62 15 hvcurveto + 4 vlineto + hintmask 11111000 + 59 16 24 44 42 vvcurveto + 99 -88 32 -111 vhcurveto + -211 hlineto + 143 -194 rmoveto + 97 59 vlineto + 49 19 -19 -30 -30 -20 -18 -49 hvcurveto + -58 -205 rmoveto + 108 vlineto + hintmask 11110100 + 70 hlineto + 52 22 -23 -29 -33 -20 -23 -53 hvcurveto + endchar + + + 334 callgsubr + -93 52 -101 -161 rlineto + 260 -34 334 callgsubr + -94 52 -101 -161 rlineto + endchar + + + -162 80 -98 123 return + + + -193 367 83 -75 75 181 73 -73 82 hstemhm + 26 106 108 104 hintmask 10011100 + 163 367 rmoveto + 33 30 17 23 23 hvcurveto + 4 hlineto + hintmask 01101100 + 7 -32 rlineto + 84 329 -80 hlineto + hintmask 10011100 + -9 -33 rlineto + -4 hlineto + 28 -25 -28 14 -31 hhcurveto + -70 -71 -64 -105 -111 53 -66 84 hvcurveto + 28 83 rmoveto + -37 -22 28 68 56 27 29 31 16 16 -6 -15 18 hvcurveto + -132 vlineto + -20 -15 -15 -8 -19 hhcurveto + endchar + + + -102 callgsubr + -7 385 callgsubr + endchar + + + -93 callsubr + -5 146 callsubr + endchar + + + -11 21 -21 212 117 77 134 -12 -20 23 -20 29 488 callsubr + hintmask 11000110 + 77 370 callgsubr + 152 hlineto + -178 279 rlineto + hintmask 11100010 + 56 89 rlineto + 29 19 14 9 25 hhcurveto + 10 9 536 callgsubr + hintmask 11001010 + 24 129 rlineto + hintmask 11000110 + 5 -13 -19 4 -18 hhcurveto + -68 -46 -22 -71 -42 hvcurveto + -70 -118 rlineto + -48 hlineto + hintmask 11010010 + 199 -147 vlineto + return + + + -277 21 -21 528 -20 150 callgsubr + return + + + 83 callgsubr + 6 54 rlineto + return + + + 108 266 callsubr + return + + + 26 -12 114 107 97 118 116 hstem + 51 146 213 147 vstem + 302 -12 rmoveto + 149 106 102 174 174 -106 102 -146 -86 -69 -26 -40 -46 hvcurveto + 66 -97 rlineto + 25 29 41 22 47 hhcurveto + 71 42 -38 -80 10 hvcurveto + -356 hlineto + -2 -17 -1 -12 -15 vvcurveto + -174 103 -100 148 vhcurveto + 114 vmoveto + -57 -42 36 71 -6 hvcurveto + 212 hlineto + -74 -13 -41 -33 -53 hhcurveto + endchar + + + -32 -22 -24 -35 -36 vvcurveto + -41 20 -26 26 -17 vhcurveto + -4 vlineto + return + + + 172 -151 -21 356 172 0 -20 return + + + 419 callsubr + 40 155 rlineto + 199 hlineto + 40 -155 rlineto + 156 hlineto + hintmask 1101000001000000 + -204 -11 callgsubr + hintmask 1110010001000000 + -141 -84 rmoveto + hintmask 1110000101000000 + 138 callgsubr + hintmask 1110100011000000 + 208 callsubr + hintmask 1110001001000000 + -54 callsubr + hintmask 1110010001000000 + 273 callgsubr + endchar + + + 10 callsubr + 165 callsubr + return + + + 156 callsubr + 137 3 43 callsubr + + + 96 21 186 callgsubr + 251 -20 209 callgsubr + 225 148 vstem + 40 callsubr + endchar + + + 47 callgsubr + 11 18 hhcurveto + return + + + -13 -7 195 callgsubr + return + + + -7 21 -21 334 126 70 97 -97 171 540 callgsubr + 344 callsubr + 286 428 callsubr + -71 hvcurveto + -241 147 260 544 callsubr + -34 -37 vhcurveto + 7 90 rlineto + 49 169 vlineto + hintmask 11101100 + 97 -169 vlineto + hintmask 11011100 + 74 -147 -75 vlineto + -68 -5 rlineto + -91 68 vlineto + endchar + + + 414 callgsubr + 39 38 29 97 14 hvcurveto + 1 -21 2 -22 5 -24 7 -20 rlinecurve + -26 -27 -32 -16 -34 hhcurveto + 213 193 297 callsubr + return + + + 114 101 345 callgsubr + return + + + 26 0 114 121 68 -68 71 108 114 hstemhm + 101 147 159 151 hintmask 10111100 + 101 hmoveto + 175 hlineto + 159 123 75 551 callsubr + -123 70 -169 hvcurveto + -165 hlineto + hintmask 11011100 + -222 vlineto + -75 -6 rlineto + hintmask 10111100 + -65 75 vlineto + 147 -121 rmoveto + 121 95 71 -95 108 466 callgsubr + + + 372 rmoveto + 72 37 36 45 49 47 -33 -119 12 vhcurveto + -47 -29 -39 -19 -38 hhcurveto + -49 -35 30 80 hvcurveto + 57 -462 rmoveto + 182 92 144 210 200 -98 126 -154 -117 -96 -84 -134 -136 72 -78 118 42 58 25 43 36 hvcurveto + -148 -7 -54 -50 -85 hhcurveto + -41 -30 13 23 -32 hvcurveto + -53 -101 rlineto + -37 54 43 -16 70 hhcurveto + endchar + + + rmoveto + 79 23 45 55 76 vvcurveto + 62 -26 35 -45 -36 -29 -25 -35 -39 30 -21 33 vhcurveto + 4 hlineto + 1 -37 -27 -23 -51 -16 rrcurveto + endchar + + + rmoveto + 79 214 -143 24 220 callsubr + + + 343 callgsubr + -134 -49 -86 -105 hvcurveto + return + + + rmoveto + 99 50 45 67 8 hvcurveto + -71 12 rlineto + -29 -8 -23 -24 -55 hhcurveto + -55 -23 24 29 -8 hvcurveto + -71 -12 rlineto + -67 8 50 -45 99 hhcurveto + hintmask 11111011 + 391 callsubr + hintmask 11110111 + 47 callgsubr + 12 18 hhcurveto + hintmask 11111011 + 295 callsubr + + + 23 163 -45 callgsubr + return + + + 28 0 102 callsubr + return + + + -12 168 callsubr + return + + + rmoveto + 126 hlineto + 92 102 -59 39 -94 -73 rlineto + -4 hlineto + -94 73 -59 -39 rlineto + hintmask 1111010001000000 + 44 -256 330 callgsubr + hintmask 1111100010000000 + 222 hmoveto + 420 callgsubr + hintmask 1111100010000000 + 555 callsubr + vhcurveto + endchar + + + 21 callsubr + endchar + + + -64 402 callgsubr + hstem + 14 486 vstem + 14 hmoveto + 152 hlineto + 39 82 12 29 14 29 12 28 rlinecurve + 4 hlineto + 16 -28 15 -30 16 -28 48 -82 rcurveline + 158 hlineto + -153 241 144 255 rlineto + -152 hlineto + -34 -80 -11 -28 -13 -29 -10 -28 rlinecurve + -4 hlineto + -14 28 -15 29 -13 28 -44 80 335 callgsubr + 143 -238 rlineto + endchar + + + -21 528 124 hstem + 204 148 vstem + 56 callgsubr + return + + + 28 0 317 callgsubr + 182 135 hintmask 01011100 + 77 hmoveto + 144 hlineto + 129 231 rlineto + hintmask 01101100 + 144 callsubr + hintmask 10011100 + 224 callgsubr + return + + + -278 6 167 139 185 hstemhm + 61 178 -80 97 hintmask 11100000 + 239 callsubr + -74 -506 rmoveto + hintmask 11010000 + 117 35 63 83 110 vvcurveto + 87 -36 52 -66 -51 -41 -33 -51 -53 42 -30 47 vhcurveto + 3 2 0 3 hhcurveto + 1 -50 -40 -46 -74 -26 rrcurveto + endchar + + + rmoveto + 138 52 vlineto + 60 35 -18 -48 -44 -32 -28 -61 hvcurveto + return + + + rmoveto + 183 76 vlineto + 77 42 -22 -64 -64 -42 -33 -77 hvcurveto + return + + + -277 -223 95 149 -21 528 -20 hstemhm + 42 108 -73 73 -73 147 hintmask 11110000 + 397 callgsubr + hintmask 11101000 + 332 callgsubr + hintmask 11100100 + 503 callgsubr + 528 -147 -528 vlineto + hintmask 11110000 + 39 hlineto + -29 -21 -45 -44 -64 216 callsubr + return + + + -66 callsubr + endchar + + + -125 62 -87 148 vhcurveto + return + + + 209 callgsubr + vstem + 77 hmoveto + return + + + 484 callgsubr + hstem + 36 411 77 callgsubr + return + + + 35 21 -21 235 117 183 117 209 callgsubr + 195 144 vstem + 77 hmoveto + 119 callgsubr + 81 callsubr + 147 -300 128 callsubr + return + + + 339 callgsubr + hintmask 1111001000000000 + 493 callsubr + hintmask 1111000100000000 + 555 callsubr + vhcurveto + endchar + + + 12 53 33 callsubr + -43 39 46 -22 44 hhcurveto + -34 120 270 callsubr + 203 vlineto + 31 28 27 14 30 hhcurveto + 59 27 -45 -89 -102 -41 -44 -51 hvcurveto + return + + + 28 vlineto + 111 74 -48 -156 -156 -74 -54 -111 hvcurveto + return + + + 212 -125 18 return + + + 36 -196 82 callgsubr + return + + + rmoveto + 87 62 50 62 49 -31 35 -39 512 callsubr + return + + + vlineto + 67 26 46 24 37 hhcurveto + 21 15 -3 -5 18 hvcurveto + return + + + 133 callgsubr + -147 hlineto + return + + + 67 47 39 60 60 -47 38 -67 -68 -46 -38 -60 -60 46 -39 68 hvcurveto + 55 vmoveto + -23 -19 17 27 26 19 17 23 23 19 -17 -26 -27 -19 -17 -23 hvcurveto + endchar + + + 58 125 512 callgsubr + -61 -11 -84 -66 vvcurveto + -145 135 528 -148 vlineto + -126 -230 rlineto + return + + + 64 142 33 callsubr + -6 -72 -12 -87 -77 vvcurveto + -231 145 652 -156 vlineto + -171 -325 rlineto + return + + + 47 -11 callsubr + return + + + -67 callsubr + 87 313 callsubr + return + + + 283 callsubr + 316 callgsubr + return + + + 208 255 rmoveto + 13 50 13 63 12 53 rrcurveto + 4 hlineto + 15 -52 12 -64 13 -50 11 -41 rcurveline + -103 hlineto + return + + + 344 callsubr + 432 callsubr + hlineto + return + + + 15 callsubr + endchar + + + hstemhm + 41 99 -75 75 -75 147 hintmask 10100000 + 517 callsubr + hintmask 10010000 + -30 66 rlineto + -6 -12 -11 -6 -12 hhcurveto + -23 -20 12 26 hvcurveto + hintmask 01001000 + 479 callgsubr + hintmask 10100000 + 41 hlineto + -25 -20 -40 -41 -58 300 callgsubr + return + + + 209 98 rmoveto + 51 31 35 76 8 hvcurveto + -67 354 callgsubr + return + + + rmoveto + 80 71 49 72 46 -31 32 -40 16 hvcurveto + return + + + hmoveto + 418 -89 callsubr + hlineto + return + + + -71 62 -37 57 -11 vhcurveto + return + + + 45 -48 callsubr + + + 82 117 64 48 91 hstemhm + 77.5 46 callsubr + hintmask 11110100 + 187 return + + + rmoveto + 38 callsubr + -37 -40 -53 -52 37 -40 51 hvcurveto + return + + + 83 42 46 49 103 callgsubr + return + + + rmoveto + 92 72 33 callsubr + 92 -72 return + + + 166 hintmask 11110000 + -47 callgsubr + hintmask 11101000 + return + + + -87 21 431 callsubr + hstem + 172 147 vstem + 56 callsubr + endchar + + + 227 callgsubr + -115 -212 rmoveto + 44 callgsubr + + + 45 rmoveto + -16 callgsubr + return + + + rmoveto + -35 -22 15 32 return + + + 144 hintmask 11111010 + 77 hmoveto + 119 callgsubr + 81 callsubr + 147 -300 128 callsubr + return + + + 127 422 127 return + + + -101 31 -66 110 vhcurveto + return + + + vlineto + -139 -7 -127 -89 -160 vvcurveto + -160 127 -89 139 -7 vhcurveto + -115 256 rmoveto + 92 45 50 70 4 vhcurveto + -292 vlineto + -70 4 -45 50 92 vvcurveto + 364 hmoveto + -92 -45 -50 -70 -4 vhcurveto + 292 vlineto + 71 -4 44 -50 -92 vvcurveto + endchar + + + -3 callsubr + 389 callsubr + return + + + rmoveto + 156 callgsubr + return + + + 44 13 20 26 hvcurveto + -31 66 rlineto + -6 -9 return + + + 139 hintmask 11111010 + 21 callgsubr + return + + + 168 282 callsubr + 401 -20 return + + + 185 callgsubr + hstem + 526 callsubr + vstem + -87 callsubr + return + + + hmoveto + 189 callsubr + return + + + -555 5 callsubr + return + + + -36 -25 -27 -34 -35 25 -27 36 hvcurveto + return + + + 21 468 callsubr + return + + + rlineto + -126 hlineto + -90 return + + + 65 8 54 21 65 vvcurveto + 57 -39 37 -111 4 vhcurveto + -14 -80 rlineto + 52 534 callsubr + -18 -13 -7 -19 -3 vhcurveto + endchar + + + 325 -12 rmoveto + 107 102 98 171 152 -75 99 -120 -46 -47 -21 -34 -38 hvcurveto + 4 76 rlineto + 172 -147 vlineto + return + + + 0 194 callsubr + return + + + -6 -9 -11 -16 hhcurveto + return + + + 129.5 return + + + 686 108 hstemhm + -54 119 -59 59 hintmask 10100000 + -34 582 rmoveto + 68 26 31 48 56 vvcurveto + 53 -23 29 -43 vhcurveto + hintmask 11000000 + -29 -24 -21 -36 -32 24 -19 28 3 3 0 1 2 hvcurveto + hintmask 10100000 + -4 -27 -21 -19 -37 -14 rrcurveto + endchar + + + 17 callgsubr + 147 -17 rmoveto + 74 213 -103 21 -36 -220 rlineto + 184 3 2 callsubr + + + 175 callgsubr + 381 callsubr + vhcurveto + return + + + 186 callgsubr + 90 219 callsubr + return + + + -57 21 -21 528 124 205 callsubr + 264 return + + + -549 rmoveto + -56 callgsubr + return + + + -36 -25 44 -65 hhcurveto + -51 -36 -38 -74 -6 hvcurveto + 64 -7 rlineto + 28 6 13 11 18 hhcurveto + return + + + 124 404 124 return + + + 60 callgsubr + 83 94 46 callgsubr + -107 302 hintmask 11111000 + 335 callsubr + 40 83 34 callgsubr + return + + + 36 21 -21 652 -20 hstem + 77 147 vstem + 243 callsubr + endchar + + + 83 15 51 41 82 vvcurveto + 40 -15 36 -15 80 callsubr + -61 -43 -10 -40 -2 vhcurveto + return + + + 178 -160.5 143 -130 117 return + + + -196 -20 -83 -57 return + + + -108 -12 122 418 -20 236 callgsubr + endchar + + + rmoveto + 51 38 40 53 52 508 callgsubr + -52 -53 38 -40 51 hvcurveto + endchar + + + hintmask 11010100 + 211 callgsubr + return + + + 195 rmoveto + 84 145 18 36 18 40 16 36 rlinecurve + 4 hlineto + -2 -40 -4 -61 -41 vvcurveto + -115 vlineto + -273 vmoveto + 137 161 73 112 -73 383 -180 hlineto + -232 -394 rlineto + -101 275 vlineto + endchar + + + 77 hmoveto + 216 hlineto + 121 99 45 109 71 -40 38 -76 16 hvcurveto + 4 vlineto + return + + + 13 callsubr + 528 return + + + -36 -20 -36 -36 -45 vvcurveto + -61 62 -50 88 vhcurveto + return + + + 510 callgsubr + 119 -110 -21 return + + + -22 -4 -7 -6 -15 hhcurveto + return + + + rmoveto + 79 34 -29 67 -30 55 -32 44 rlinecurve + 2 14 1 15 15 vvcurveto + 484 -147 -419 vlineto + 5 -18 -19 3 -20 hhcurveto + -87 -55 -55 -81 -82 57 -63 97 66 49 25 40 32 hvcurveto + 19 -29 19 -34 16 -38 rrcurveto + return + + + 173 callgsubr + 256 -35 173 callgsubr + endchar + + + 230 222 callsubr + return + + + -482 -12 676 hstem + -171 437 vstem + -171 320 callsubr + endchar + + + rlineto + 32 -34 -33 20 -55 457 callsubr + return + + + 119 130 138 -12 -20 23 -20 20 9 return + + + -12 rmoveto + 33 25 5 7 16 hvcurveto + return + + + 260 callgsubr + vhcurveto + return + + + hmoveto + 147 232 hlineto + return + + + -6 callsubr + hintmask 11010101 + -38 callgsubr + hintmask 11101010 + 148 callgsubr + + + 59 18 68 -68 84 -52 69 -17 -20 23 550 callsubr + return + + + -34 -220 rlineto + endchar + + + 77 241 callgsubr + 147 -533 rmoveto + 414 137 callsubr + return + + + 330 240 callgsubr + return + + + -64 -143 rlineto + -4 hlineto + 7 69 12 92 77 vvcurveto + 230 -146 vlineto + return + + + 278 -12 rmoveto + 125 116 95 165 82 -29 65 -45 45 hvcurveto + return + + + -12 242 callgsubr + return + + + -5 -37 callsubr + 105 67 hstem + -6 585 204 callgsubr + return + + + 33 -75 callsubr + + + hstem + 288 147 vstem + 226 -12 rmoveto + 144 65 103 126 hvcurveto + 435 -147 -423 vlineto + -87 -28 -27 -53 -33 -34 21 44 -24 vhcurveto + -100 -74 rlineto + -79 45 66 -39 99 hhcurveto + return + + + rmoveto + 134 144 rlineto + 104 vlineto + -134 144 -55 -44 111 -152 -111 -152 rlineto + return + + + 94.5 -94.5 97 return + + + hstemhm + 34 121 -107 137 -126 116 return + + + 117 97 102 535 callsubr + return + + + 181 callgsubr + endchar + + + 121 419 -20 return + + + 131 124 return + + + 33 callgsubr + 119 67 hstem + -6 516 144 callgsubr + return + + + 142 callgsubr + 99 callsubr + return + + + -32 -32 -28 -16 -25 hhcurveto + -41 -20 23 71 hvcurveto + 289 -147 -335 vlineto + -32 -31 -29 -16 -24 hhcurveto + -42 -20 23 71 hvcurveto + 289 -147 -308 vlineto + -124 48 -76 107 return + + + 150 312 rmoveto + -56 callgsubr + return + + + 90 177 callsubr + return + + + 6 hmoveto + 158 hlineto + 105 198 rlineto + 46 -198 131 198 46 hlineto + 105 -198 rlineto + return + + + -239 59 74 54 return + + + 77 hmoveto + 147 175 hlineto + 76 100 159 -275 rlineto + 161 hlineto + -233 392 197 260 rlineto + -162 hlineto + -194 -267 rlineto + -4 267 -147 hlineto + return + + + 222 hmoveto + -98 callsubr + endchar + + + 120 280 return + + + rmoveto + 358 callsubr + hvcurveto + 54 callsubr + return + + + 284 callgsubr + 156 callsubr + return + + + 26 59 rlineto + 43 19 19 7 25 hhcurveto + 7 6 536 callgsubr + return + + + 60 -12 293 callsubr + return + + + -16 257 callgsubr + return + + + 73 148 228 142 return + + + 31 callgsubr + 93 -21 return + + + 154 hstemhm + 55 285 callsubr + return + + + -12 rmoveto + 176 120 128 213 return + + + 120 -87 -21 388 120 return + + + 106 120 callsubr + return + + + 120 496 return + + + -45 callsubr + 121 138 return + + + rmoveto + 55 44 -111 152 111 152 -55 44 -134 -144 rlineto + -104 vlineto + return + + + 652 -147 return + + + rmoveto + 158 callgsubr + + + -55 callsubr + 402 callsubr + return + + + 6 -14 -17 4 -28 hhcurveto + -51 -54 -32 -67 -36 hvcurveto + -4 hlineto + return + + + 109 390 -86 hlineto + return + + + 47 27 29 -8 return + + + -108 120 return + + + vmoveto + -65 callsubr + + + 37 21 -21 406 122 209 callgsubr + 167 455 callsubr + 406 167 -406 148 528 -462 hlineto + endchar + + + 87 225 callsubr + return + + + rmoveto + -25 -28 8 24 -26 hvcurveto + return + + + -302 402 callgsubr + return + + + -12 390 callsubr + return + + + hhcurveto + 42 19 -22 return + + + 59 -48 callsubr + + + 24 153 2 69 rlineto + -95 hlineto + endchar + + + 264 -12 rmoveto + 136 91 116 216 216 -91 111 -136 -136 -91 -111 -216 -216 91 -116 136 hvcurveto + return + + + rmoveto + hintmask 11111000 + -76 callgsubr + + + 231 callsubr + 146 127 -69 140 return + + + 66 -66 109 hstemhm + 165 109 hintmask 01100000 + 165 return + + + 494 callgsubr + 141 147 return + + + -43 -13 30 56 -2 471 callsubr + return + + + 32 callsubr + 43 119 return + + + -182 184 callsubr + return + + + rmoveto + 105 76 -49 60 -100 -86 rlineto + return + + + 166 -156 147 return + + + rlineto + -9 vlineto + -87 52 -33 57 41 26 12 13 21 vhcurveto + -31 70 rlineto + -6 -10 -12 -5 -18 hhcurveto + -32 -20 25 73 24 0 20 2 32 hvcurveto + return + + + -278 388 297.5 hstem + 82 166 vstem + 82 388 401 callsubr + 126 -147 1 rlineto + endchar + + + rmoveto + hintmask 11111110 + -86 callsubr + return + + + -79 -223 95 128 111 callsubr + 46 callgsubr + return + + + vvcurveto + 305 callgsubr + return + + + -196 216 callgsubr + return + + + 148 hmoveto + 168 hlineto + 44 198 rlineto + return + + + 127 132 120 170 127 return + + + 98 -84 95 82 96 -85 97 return + + + 28 28 -44 55 hhcurveto + endchar + + + 251 -147 return + + + rmoveto + 69 8 36 32 46 hhcurveto + 54 23 -41 -60 hvcurveto + return + + + 75 8 64 34 82 vvcurveto + return + + + -35 -26 -23 -12 -32 hhcurveto + return + + + 0 -20 hstemhm + 77 132 return + + + 492 callgsubr + -10 return + + + -108 108 return + + + rmoveto + 22 callgsubr + return + + + -232 367 79 67 59 62 79 hstem + 24 97 116 87 vstem + return + + + 54 callsubr + 199 return + + + 149 hstem + 208 147 vstem + 70 hmoveto + 404 419 callgsubr + return + + + 31 callgsubr + 72 return + + + -100 34 -66 101 vhcurveto + return + + + 652 -148 return + + + -13 hhcurveto + -21 -21 return + + + 5 callsubr + 103 -676 83 callgsubr + return + + + hstemhm + 39 149 173 147 return + + + 45 rmoveto + 117 callgsubr + return + + + hintmask 11101000 + 77 155 callsubr + return + + + 10 -49 rlineto + 457 callgsubr + -169 hlineto + 220 callgsubr + hvcurveto + return + + + 82 98 322 callsubr + hintmask 11101000 + 186 return + + + 50 51 28 75 49 hvcurveto + -76 59 rlineto + -37 -21 -23 -21 -28 hhcurveto + return + + + 28 63 rlineto + 41 17 21 9 24 hhcurveto + 7 6 536 callgsubr + return + + + -21 461 191 300 callsubr + return + + + -12 5 callsubr + return + + + 376 callgsubr + 148 return + + + 62 90 82 hstemhm + 217 106 -92 106 return + + + -110 491 callgsubr + return + + + -88 92 -38 116 vhcurveto + return + + + 124 108 124 return + + + 82 266 callgsubr + return + + + hstemhm + 46 151 return + + + vvcurveto + 64 34 30 53 32 24 -14 -28 23 vhcurveto + 80 80 rlineto + 52 -45 -54 29 -74 hhcurveto + -124 -90 -79 -126 return + + + rmoveto + 11 58 rlineto + return + + + rmoveto + hintmask 1110010010000000 + 199 callgsubr + hvcurveto + hintmask 1110100010000000 + 179 callsubr + return + + + -107 0 120 408 -20 hstem + 77 147 vstem + 77 454 callgsubr + 408 -147 hlineto + return + + + 123 98 123 return + + + 383 callgsubr + 5 return + + + 344 callsubr + hlineto + return + + + 77 hmoveto + 369 114 -62 callsubr + hintmask 11110100 + return + + + hstem + 47 783 vstem + 47 -60 rmoveto + 783 2 hlineto + -389 805 rlineto + -4 hlineto + -390 -805 rlineto + return + + + 101 21 -21 155 115 221 59 -10 112 -84 340 callsubr + return + + + 47 -75 callsubr + + + -20 13 callsubr + return + + + 68 -68 84 -52 69 -14 550 callsubr + return + + + 147 175 62 hlineto + 99 -175 rlineto + return + + + 113 152 113 return + + + 113 325 115 return + + + 65 hmoveto + 147 return + + + 233 callgsubr + hintmask 10100000 + 184 callgsubr + hintmask 01100000 + -66 89 vlineto + endchar + + + -158 502 callsubr + 196 147 vstem + 196 hmoveto + 147 260 callsubr + hlineto + return + + + -237 21 -21 381 111.5 -111.5 115 101 116 0 -20 return + + + 168.5 -20 hstem + 200.5 109 vstem + 196 -80 rmoveto + 118 hlineto + -9 return + + + 116 -106 116 412 callgsubr + return + + + rlineto + 66 5 25 27 50 hhcurveto + 16 19 -4 -6 16 hvcurveto + return + + + 120 92 43 128 124 -92 43 -120 hvcurveto + return + + + 113 56 157 144 -108 57 -147 hvcurveto + return + + + 129 hstem + 41 126 vstem + 104 return + + + hstemhm + 36 144 -123 144 return + + + -25 1 callgsubr + return + + + rmoveto + 298 callsubr + return + + + -12 343 callsubr + return + + + 48 36 10 8 26 return + + + hvcurveto + -124 hlineto + return + + + -68 464 -32 callsubr + return + + + 33 -91 callgsubr + return + + + 47 -91 callgsubr + return + + + 222 206 94 hstem + 43 714 vstem + 43 206 rmoveto + 714 94 -714 hlineto + endchar + + + 73 391 callgsubr + endchar + + + 309 -12 rmoveto + return + + + 62 callsubr + hintmask 11001101 + -12 -49 rlineto + -4 hlineto + 42 -39 -40 19 -50 hhcurveto + return + + + 271 callsubr + 264 callgsubr + return + + + -144 -528 -163 528 -141 -528 -164 528 -144 hlineto + endchar + + + hmoveto + 147 198 52 hlineto + 114 -198 rlineto + return + + + 255 callsubr + 193 -20 hstemhm + return + + + 413 callgsubr + 46 callgsubr + return + + + 44 397 callsubr + return + + + 21 171 callsubr + return + + + rmoveto + 255 callgsubr + return + + + -12 255 callsubr + return + + + 460 104 -460 hlineto + return + + + 120 302 callsubr + return + + + 115 266 115 return + + + 109 302 109 return + + + -6 310 callsubr + return + + + 16 18 -4 -6 17 return + + + -196 115 return + + + hintmask 11101000 + 56 callgsubr + return + + + -45 callsubr + 120 138 return + + + -29 -24 42 -55 hhcurveto + -51 -31 -35 -76 -8 hvcurveto + 67 23 callsubr + return + + + -214 160 callgsubr + return + + + vstem + 45 -58 rmoveto + 2 hlineto + 805 390 rlineto + 4 vlineto + -805 389 rlineto + -2 hlineto + return + + + 216 callsubr + endchar + + + hstemhm + 65 147 return + + + -20 32 -20 hstemhm + return + + + 60 145 rmoveto + 56 33 35 75 4 hvcurveto + -70 9 rlineto + -27 -4 -10 -12 -18 hhcurveto + return + + + rmoveto + 92 63 33 callsubr + 92 -63 59 39 -90 92 181 callsubr + -92 rlineto + return + + + 33 32 43 64 78 vvcurveto + 145 -106 102 -155 -154 -106 -102 -145 vhcurveto + return + + + hintmask 11101000 + 150 callsubr + return + + + 70 158 75 hstem + 214 96 vstem + 134 return + + + hstem + 190 147 vstem + 190 hmoveto + 147 return + + + -37 callsubr + hstem + return + + + 70.5 -70.5 74 return + + + 47 callsubr + endchar + + + rmoveto + 96 hlineto + 21 306 rlineto + return + + + rmoveto + 96 hlineto + 47 171 23 return + + + -62 557 callgsubr + return + + + 483 -118 vlineto + return + + + vstem + 50 375 rmoveto + return + + + -34 74 rlineto + -7 return + + + 102 -44 102 hstemhm + return + + + 108 131 return + + + 942 -45 callgsubr + return + + + 738 -45 callgsubr + return + + + 377 callsubr + 71 callgsubr + 558 callgsubr + return + + + rmoveto + 416 callsubr + -260 vmoveto + 416 callsubr + endchar + + + 571 hstem + 63 102 vstem + 154 return + + + 120 hstem + 108 69 vstem + 53 return + + + 269 callsubr + 68 return + + + rmoveto + 147 432 callsubr + hlineto + return + + + 325 84 -325 hlineto + return + + + 69 531 callsubr + return + + + 70 -58 233 -134 return + + + rmoveto + 150 hlineto + return + + + 495 callsubr + -88 88 -88 332 callsubr + -82 82 -82 141 return + + + 60 -12 rmoveto + 96 48 57 183 40 hvcurveto + 12 57 12 61 12 62 rrcurveto + return + + + 5 -12 -13 2 -15 hhcurveto + -71 -48 -23 -81 -37 hvcurveto + -42 -91 rlineto + -45 hlineto + return + + + 511 callsubr + -61 61 -61 332 callsubr + -55 55 -55 142 return + + + 46 -2 44 -7 32 vhcurveto + -146 hlineto + 10 -52 2 -61 -39 vvcurveto + endchar + + + 332 hstem + 78.5 143 return + + + -172 125 505 callsubr + return + + + hstem + -128 73 110 73 vstem + -128 return + + + hlineto + 283 callgsubr + return + + + vlineto + 61 484 callsubr + return + + + 124 94 124 return + + + -21 408 120 return + + + 496 -147 return + + + -292 31 callgsubr + 60 119 -98 -21 33 -21 701 -20 return + + + -30 -223 95 128 -50 callsubr + return + + + 116 callsubr + -26 -169 vlineto + return + + + 138 29 hlineto + 75 14 48 36 38 vhcurveto + 3 3 2 2 2 3 return + + + -66 89 vlineto + 39 178 callsubr + return + + + 70 122 rlineto + 47 27 17 12 29 460 callsubr + 12 hvcurveto + return + + + -56 callsubr + endchar + + + 83 68 callsubr + + + 109 rlineto + -2 return + + + 238 callgsubr + hstemhm + 283 140 -125 144 hintmask 11101000 + return + + + 67 39 44 91 4 hvcurveto + -92 18 rlineto + -35 -4 -11 -17 -19 hhcurveto + return + + + -126 -116 -95 -165 -147 93 -92 109 -18 hvcurveto + return + + + 16 29 26 -20 15 -23 -22 -20 -15 -26 -29 20 -16 22 hvcurveto + return + + + -20 callgsubr + hstemhm + return + + + -111 1 callgsubr + return + + + 82 152 callgsubr + return + + + -91 -59 -34 -67 -63 vhcurveto + 80 -79 rlineto + return + + + -195 529 callsubr + return + + + 135 182 134 vstem + return + + + 2 -18 hhcurveto + -74 -48 -29 -89 return + + + 0 112 117 109 return + + + 63 286 callgsubr + return + + + 148 vstem + 77 hmoveto + 147 return + + + 131 122 147 return + + + hhcurveto + -105 -101 -98 -162 return + + + -56 -2 -13 -30 -43 hhcurveto + return + + + 42 556 callsubr + return + + + hhcurveto + 6 11 0 -4 return + + + 26 -6 41 hhcurveto + return + + + 199 callsubr + -104 vvcurveto + -84 56 -66 95 vhcurveto + 2 hlineto + return + + + a076f920 f7e70a0b + + + 21 -21 528 339 callsubr + return + + + 555 rmoveto + 98 18 -33 220 -143 -24 rlineto + endchar + + + -270 rmoveto + 118 hlineto + -6 206 rlineto + -106 hlineto + endchar + + + 132 -122 return + + + -21 652 -20 return + + + -12 rmoveto + 127 return + + + -161 -39 rmoveto + return + + + hvcurveto + -114 hlineto + return + + + hlineto + hintmask 11010000 + 101 78 hlineto + hintmask 11100000 + -211 hlineto + endchar + + + 59 hlineto + 61 28 -19 -38 -39 -29 -22 -60 hvcurveto + hintmask 11110100 + return + + + 149 hstem + 158 147 vstem + 158 hmoveto + 147 return + + + -28 callgsubr + -62 74 return + + + 0 124 408 115 hstem + 313 140 vstem + return + + + 128 207 124 -514 -124 159 vlineto + return + + + 405 callsubr + -10 -12 -7 -13 hhcurveto + -21 -22 12 26 return + + + rlineto + 499 callgsubr + return + + + -20 256 callgsubr + -142 142 return + + + 235 0 141 511 -20 return + + + 400 callgsubr + -67 return + + + 30 460 callsubr + 11 hvcurveto + return + + + 32 -19 -46 -48 -37 -20 -56 hvcurveto + return + + + hstemhm + 272 callgsubr + return + + + -58 34 callsubr + return + + + vhcurveto + -4 vlineto + hintmask 11100100 + return + + + -20 46 callgsubr + return + + + 127 -92 57 -95 return + + + 260 callsubr + vlineto + return + + + 528 -147 hlineto + return + + + 172 hmoveto + 147 return + + + 553 callsubr + hvcurveto + return + + + hstemhm + 54 134 return + + + hstemhm + 73 146 return + + + -6 rlineto + -109 return + + + -23 31 callgsubr + 60 119 282 119 return + + + 38 31 callgsubr + 60 86 callgsubr + return + + + -116 -16 -89 -96 -74 -115 rrcurveto + -4 93 hlineto + return + + + 425 callgsubr + -12 97 return + + + -180 21 -21 379 342 callgsubr + return + + + 180 callsubr + hstem + return + + + hlineto + 13 554 callsubr + return + + + 117 180 117 return + + + hlineto + 14 554 callgsubr + return + + + 299 -58 783 hstem + return + + + -12 185 -164 -21 return + + + fba9a076 0b + + + 95 206 95 return + + + rmoveto + 93 -17 rlineto + return + + + hstemhm + 73 148 return + + + 21 hvcurveto + 4 vlineto + return + + + hintmask 11101000 + 77 hmoveto + 147 491 callsubr + return + + + 31 callgsubr + 60 168 callsubr + return + + + -90 118 130 104 218 110 hstem + return + + + 156 callsubr + 78 20 rmoveto + 93 -17 return + + + 147 -210 rmoveto + 31 45 13 20 25 hvcurveto + return + + + 115 hstemhm + 311 148 -127 147 return + + + -200 48 -71 rlineto + 9 23 9 3 27 hhcurveto + return + + + 283 callgsubr + -72 hvcurveto + return + + + 112 hstem + 36 126 179 141 vstem + return + + + 283 -141 -292 vlineto + -94 -27 -33 -59 return + + + 15 hlineto + 100 191 rlineto + -215 hlineto + endchar + + + 144 vstem + 77 hmoveto + 147 return + + + 314 -268 103 62 103 return + + + 73 146 468 callgsubr + return + + + 134 182 136 vstem + return + + + -23 -12 133 531 -20 return + + + -12 418 callgsubr + return + + + hvcurveto + 4 vlineto + hintmask 11110000 + return + + + -69 74 hstemhm + -12 105 return + + + 160 hmoveto + 147 return + + + 584 113 hstem + return + + + -4 16 -10 -19 vvcurveto + return + + + 116 120 return + + + 24 127 rlineto + return + + + 153 147 return + + + rmoveto + hintmask 10100000 + 211 78 hlineto + hintmask 11000000 + -101 return + + + rmoveto + hintmask 11010000 + 211 78 hlineto + hintmask 11100000 + -101 return + + + 389 callsubr + 153 389 callgsubr + return + + + 414 callsubr + 123 return + + + -102 21 -21 192 110 106 120 return + + + 65 hmoveto + 134 hlineto + 129 210 rlineto + return + + + 482 callsubr + -49 -35 return + + + -239 rmoveto + 125 4 72 31 68 vvcurveto + return + + + -139 -406 -126 406 -139 return + + + 407 callgsubr + 124 209 callgsubr + return + + + 308 callsubr + endchar + + + 26 -27 36 hvcurveto + endchar + + + 9 0 -20 hstemhm + return + + + 192 191 return + + + 276 -12 rmoveto + return + + + -36 -26 -27 -34 return + + + 220 rlineto + 92 return + + + -35 26 -27 36 return + + + 375 rmoveto + 104 return + + + 110 -110 return + + + -25 -5 vhcurveto + endchar + + + rlineto + 239 -147 -309 vlineto + return + + + -88 vhcurveto + -63 -78 19 hlineto + 42 11 return + + + 84 hstem + 144 88 vstem + 144 return + + + -134 -12 -211 rrcurveto + endchar + + + 704 50 -704 vlineto + endchar + + + 137.5 return + + + 565 216 hstem + return + + + 144 -121 144 return + + + -233 92 162 -21 return + + + -4 -4 -32 hvcurveto + return + + + 75 30 147 return + + + -257 rmoveto + 78 return + + + hintmask 01011101 + 77 hmoveto + return + + + hintmask 11010100 + 77 hmoveto + return + + + -50 278 104 hstem + return + + + 77 139 61 hstem + return + + + 115 73 154 return + + + 275 -12 rmoveto + return + + + 406 -147 return + + + 259 -12 82 return + + + rmoveto + 476 83 -476 hlineto + endchar + + + -104 hlineto + endchar + + + 77 hlineto + 58 27 -21 -43 -38 -34 -23 -49 -47 -50 24 33 -42 hvcurveto + -68 -96 rlineto + return + + + 256 -140 -256 -58 vlineto + -71 150 rlineto + return + + + 21 -21 152 112 245 126 hstem + return + + + 183 -131 -183 -45 vlineto + -42 91 rlineto + return + + + 160 -8 110 292 110 return + + + 83 112 257 126 hstem + return + + + 65 hmoveto + 139 212 33 hlineto + return + + + 151 135 106 49 151 return + + + hintmask 1010011010000000 + return + + + rlineto + hintmask 11100100 + return + + + 154 hstem + return + + + 78 hstemhm + 114 123 -49 125 hintmask 11110000 + 46 return + + + + + + 112 0 91 477 92 hstem + 80 98 333 99 vstem + 80 hmoveto + 530 660 -530 hlineto + 183 -569 rmoveto + 39 77 41 98 33 callsubr + 41 -98 39 -77 rlineto + -84 323 rmoveto + -43 95 -31 59 rlineto + 152 hlineto + -32 -59 -42 -95 rlineto + -169 -259 rmoveto + 371 vlineto + 95 -186 rlineto + 238 -185 rmoveto + -94 185 94 186 rlineto + endchar + + + -5 21 -21 155 115 270 112 -67 callsubr + endchar + + + -46 callsubr + endchar + + + -191 476 79 175 77 hstem + -5 399 vstem + 157 593 rmoveto + 10 42 14 50 10 45 rrcurveto + 2 hlineto + 12 -44 12 -50 11 -43 10 -38 rcurveline + -91 hlineto + -152 -180 rmoveto + 106 hlineto + 26 101 rlineto + 131 hlineto + 25 -101 rlineto + 111 hlineto + -137 432 rlineto + -125 hlineto + endchar + + + -5 callsubr + endchar + + + 20 callsubr + endchar + + + -5 21 -21 155 115 270 112 -67 callsubr + 77 28 -89 callgsubr + + + -46 callsubr + 79 42 -89 callgsubr + + + 68 callgsubr + + + 33 callgsubr + 59 85 hstem + -6 516 8 callsubr + 274 callsubr + + + -5 -37 callsubr + 117 66 -67 callsubr + -19 227 callsubr + + + 33 callgsubr + 131 66 hstem + -6 516 vstem + -103 callsubr + -17 338 callsubr + + + -5 -37 callsubr + 48 140 hstem + 104 296 callgsubr + vstem + -104 callsubr + -24 48 -100 callsubr + + + 33 callgsubr + 62 140 hstem + 72 296 callgsubr + vstem + -103 callsubr + -22 62 -100 callsubr + + + -5 21 -21 155 115 270 112 -67 callsubr + 97 28 -22 callsubr + + + -46 callsubr + 99 42 -22 callsubr + + + -5 21 -21 155 115 270 112 -67 callsubr + endchar + + + -46 callsubr + endchar + + + 227 21 85 callgsubr + hstem + 580 147 vstem + -103 callsubr + 416 -528 440 callgsubr + + + 372 callsubr + -5 633 vstem + 279 -104 callgsubr + -159 -212 rmoveto + 44 callgsubr + + + -5 -37 callsubr + 69 94 hstemhm + -6 585 -445 302 hintmask 11111000 + -104 callsubr + hintmask 11110100 + -64 312 callgsubr + + + 33 callgsubr + 83 94 hstemhm + -6 516 -408 302 hintmask 11111000 + -103 callsubr + hintmask 11110100 + -62 440 callsubr + + + -5 -223 95 149 -55 callsubr + hstem + 382 107 204 callgsubr + 282 -493 226 callgsubr + 26 301 callsubr + -14 -7 -15 hhcurveto + -21 -18 559 callgsubr + -204 -11 callgsubr + -204 -652 rlineto + 150 hlineto + 40 155 rlineto + 199 hlineto + 40 -155 rlineto + 40 hlineto + -33 -19 -48 -48 -62 vvcurveto + -60 50 -34 64 vhcurveto + endchar + + + -5 -223 95 283 0 callsubr + hstem + 184 107 vstem + 298 16 callsubr + 23 13 22 27 22 hvcurveto + -54 45 rlineto + -54 -39 -39 507 callgsubr + 63 vhcurveto + -68 553 -105 callsubr + endchar + + + -75 -223 95 149 85 callgsubr + hstem + 312 108 144 callgsubr + 229 -437 226 callgsubr + 25 hvcurveto + -33 74 rlineto + -7 -10 -14 -7 -16 hhcurveto + -21 -17 559 callgsubr + -171 112 callgsubr + -170 -528 rlineto + 149 hlineto + 28 108 rlineto + 157 hlineto + 28 -108 rlineto + 38 hlineto + -33 -19 -49 -48 -62 388 callsubr + + + -75 -223 95 236 106 207 107 hstem + 152 108 vstem + 267 130 callgsubr + 23 13 22 27 22 hvcurveto + -54 45 rlineto + -54 -39 -40 -51 -61 216 callsubr + -59 478 -103 callgsubr + endchar + + + -5 -37 callsubr + 45 55 87 55 hstem + 171 72 84 72 10 callsubr + 100 rmoveto + -23 -19 17 27 26 19 17 23 23 19 -17 -26 -27 -19 -17 -23 hvcurveto + -55 410 callgsubr + endchar + + + 33 callgsubr + 59 55 87 55 hstem + 139 72 84 72 8 callsubr + 114 rmoveto + -23 -19 17 27 26 19 17 23 23 19 -17 -26 -27 -19 -17 -23 hvcurveto + -55 410 callgsubr + endchar + + + -5 -37 callsubr + 40 406 callsubr + 87 509 callsubr + hintmask 11101110 + -104 callsubr + hintmask 11110110 + 158 40 -6 callsubr + hintmask 11101110 + -38 callgsubr + hintmask 11110110 + 148 callgsubr + + + 33 callgsubr + 54 406 callsubr + 55 509 callsubr + hintmask 11110110 + -103 callsubr + 160 54 -6 callsubr + hintmask 11101110 + -38 callgsubr + hintmask 11110110 + 148 callgsubr + + + -19 callgsubr + + + -13 callsubr + + + -171 375 80 108 72 93 79 hstemhm + 50 104 110 101 -81 102 hintmask 11110100 + 50 375 rmoveto + 166 hlineto + 94 76 41 88 57 -32 32 -62 12 hvcurveto + 2 vlineto + hintmask 11111000 + 51 15 22 41 39 vvcurveto + 81 -71 24 -91 vhcurveto + -153 hlineto + 104 -172 rmoveto + 93 45 vlineto + 44 21 -13 -30 -30 -20 -20 -46 hvcurveto + -44 -180 rmoveto + 108 vlineto + hintmask 11110100 + 53 hlineto + 52 25 -16 -35 -38 -25 -19 -52 hvcurveto + endchar + + + -19 callgsubr + + + -13 callsubr + + + 35 callgsubr + endchar + + + 41 callsubr + endchar + + + -188 367 89 269 90 hstem + 30 107 vstem + 233 367 rmoveto + 58 49 22 44 37 hvcurveto + -56 61 rlineto + -23 -21 -26 -15 -35 hhcurveto + -62 -40 50 85 83 46 51 59 29 20 -11 -20 23 hvcurveto + 56 64 rlineto + 32 -28 -46 25 -56 hhcurveto + -113 -97 -85 -143 -144 92 -76 111 hvcurveto + endchar + + + 35 callgsubr + -16 692 -89 callgsubr + + + 41 callsubr + -15 582 -89 callgsubr + + + 486 callgsubr + 38 66 50 callgsubr + -86 714 -81 callgsubr + + + 486 callsubr + 52 66 hstem + 46 149 vstem + -25 callgsubr + -85 604 -81 callgsubr + + + 4 -239 59 192 -21 546 505 callgsubr + 143 105 vstem + 248 -239 rmoveto + 78 callgsubr + 22 52 67 9 57 32 45 52 rlinecurve + -78 92 rlineto + -34 -32 -42 -27 -53 hhcurveto + -96 -62 78 134 131 71 79 89 47 35 -22 -30 33 hvcurveto + 78 94 rlineto + 45 -44 -68 40 -84 hhcurveto + -165 -143 -126 -216 -199 114 -113 145 -19 hvcurveto + -42 -85 rlineto + 96 callgsubr + + + -58 -239 59 193 -21 427 121 hstem + 46 149 102 105 vstem + 205 -239 rmoveto + 78 callgsubr + 22 51 58 7 52 25 40 43 rlinecurve + -40 callsubr + -161 95 -89 121 -18 hvcurveto + -42 -86 rlineto + 96 callgsubr + + + 486 callgsubr + 105 66 50 callgsubr + -112 697 -75 callsubr + + + 486 callsubr + 119 66 hstem + 46 149 vstem + -25 callgsubr + -111 587 -75 callsubr + + + 486 callgsubr + 37 591 callsubr + 46 151 61 170 -57 callgsubr + -6 713 -82 callgsubr + + + 486 callsubr + 51 154 hstemhm + 46 149 27 170 hintmask 11110000 + -25 callgsubr + hintmask 11111000 + -5 603 -82 callgsubr + + + 8 callgsubr + + + 20 callgsubr + + + 57 0 119 414 119 209 callgsubr + 213 151 vstem + 221 callsubr + endchar + + + 2 0 114 300 114 209 callgsubr + 159 151 vstem + 77 hmoveto + 175 hlineto + 159 123 75 551 callsubr + -123 70 -169 hvcurveto + -165 hlineto + 147 -414 rmoveto + 300 466 callgsubr + + + -151 375 83 267 82 hstem + 50 104 136 107 404 callsubr + 131 hlineto + 129 87 69 151 148 -87 64 -135 hvcurveto + -125 hlineto + 104 -349 rmoveto + 267 17 vlineto + 72 47 -28 -104 -101 -47 -34 -71 hvcurveto + endchar + + + 57 0 119 414 119 50 66 209 callgsubr + 213 151 vstem + 221 callsubr + -14 583 -81 callgsubr + + + 2 0 114 300 114 64 66 209 callgsubr + 159 151 vstem + 77 hmoveto + 175 hlineto + 159 123 75 551 callsubr + -123 70 -169 hvcurveto + -165 hlineto + 147 -414 rmoveto + 300 179 callgsubr + -35 478 -81 callgsubr + + + 87 callgsubr + + + 112 callsubr + + + 62 0 124 415 113 hstem + 34 572 vstem + 34 hmoveto + 572 89 hlineto + -198 563 rlineto + -176 hlineto + -198 -563 rlineto + 158 35 rmoveto + 68 220 55 195 33 callsubr + 56 -195 69 -220 rlineto + endchar + + + -17 callgsubr + endchar + + + 3 callgsubr + endchar + + + -209 375 86 94 86 80 86 hstem + 50 104 404 callsubr + 284 86 -180 94 148 86 -148 80 174 86 -278 hlineto + endchar + + + -17 callgsubr + 203 28 -89 callgsubr + + + 3 callgsubr + 181 42 -89 callgsubr + + + -14 callsubr + 45 85 hstem + 77 147 vstem + 77 155 callsubr + 213 157 callsubr + + + 60 callgsubr + 59 85 132 callsubr + 369 114 -62 callsubr + 191 274 callsubr + + + -14 callsubr + 50 66 hstem + 77 147 vstem + 77 155 callsubr + 133 245 callgsubr + + + 60 callgsubr + 64 66 132 callsubr + 369 114 -62 callsubr + 111 64 -81 callgsubr + + + -14 callsubr + 117 66 hstem + 77 147 vstem + 77 155 callsubr + 107 227 callsubr + + + 60 callgsubr + 131 66 132 callsubr + 369 114 -62 callsubr + 85 338 callsubr + + + -14 callsubr + 48 140 46 callgsubr + -115 296 callgsubr + 314 callsubr + hintmask 11110110 + 102 48 -100 callsubr + + + 60 callgsubr + 62 140 46 callgsubr + -137 296 callgsubr + 336 callgsubr + hintmask 11110110 + 80 62 -100 callsubr + + + -14 callsubr + 49 286 callgsubr + -19 170 314 callsubr + hintmask 11110100 + 213 49 -82 callgsubr + + + 60 callgsubr + 454 callsubr + -41 170 hintmask 11101000 + 335 callsubr + 191 63 -82 callgsubr + + + -17 callgsubr + 223 28 -22 callsubr + + + 3 callgsubr + 201 42 -22 callsubr + + + -14 callsubr + 69 94 46 callgsubr + -85 302 hintmask 11111000 + 77 155 callsubr + hintmask 11110100 + 62 312 callgsubr + + + 195 callsubr + endchar + + + 434 callsubr + 209 callgsubr + 72 108 vstem + 411 16 callsubr + 42 40 46 46 2 hvcurveto + 5 124 384 callgsubr + 298 hlineto + -35 -21 -44 -49 -59 388 callsubr + + + 89 callgsubr + endchar + + + 289 callsubr + 23 108 vstemhm + 362 130 callgsubr + 44 40 44 46 2 hvcurveto + 5 114 hlineto + hintmask 01111000 + -222 101 182 107 -182 92 212 114 -359 -528 hlineto + hintmask 11111100 + 249 hlineto + -34 -21 -45 -47 -61 388 callsubr + + + 289 callsubr + -54 107 hintmask 01111000 + 77 hmoveto + hintmask 11110100 + 165 hlineto + -33 -23 -39 -52 -54 260 callgsubr + 34 45 15 20 25 vhcurveto + 478 callsubr + 29 21 33 35 28 hvcurveto + 113 114 hlineto + hintmask 01111000 + -62 callsubr + endchar + + + -17 callgsubr + endchar + + + 3 callgsubr + endchar + + + 164 callsubr + + + 106 callsubr + + + 106 callgsubr + + + 345 21 313 callgsubr + 209 callgsubr + 173 148 537 callsubr + 145 callgsubr + 621 -528 440 callgsubr + + + 214 21 186 callgsubr + 251 -20 hstem + 196 147 225 148 vstem + 196 -35 callsubr + -115 -212 rmoveto + 44 callgsubr + + + 87 callgsubr + + + 112 callsubr + + + -50 -12 114 113 71 -71 75 50 398 callsubr + 119 114 hstemhm + 21 201 -148 148 hintmask 10101101 + 337 -12 rmoveto + 72 62 33 59 48 hvcurveto + -81 76 rlineto + -35 -26 -28 -19 -38 hhcurveto + -56 -39 40 73 -18 hvcurveto + 172 75 -182 hlineto + -1 9 0 10 10 7 0 7 7 vvcurveto + 223 74 -214 hlineto + 76 16 39 43 57 hhcurveto + 35 26 -18 -25 25 hvcurveto + 82 79 rlineto + 50 -43 -60 28 -60 hhcurveto + hintmask 10110110 + -133 -101 -85 -149 -31 hvcurveto + -62 -5 rlineto + hintmask 10101110 + -68 vlineto + hintmask 11001101 + 54 hlineto + -1 -8 0 -9 -9 vvcurveto + -9 0 -8 1 -9 vhcurveto + hintmask 11001110 + -54 -4 rlineto + hintmask 10101110 + -69 62 vlineto + hintmask 10101101 + -149 30 99 -78 125 hhcurveto + endchar + + + 583 callgsubr + 13 callsubr + 253 226 124 -226 151 264 124 -411 hlineto + endchar + + + 542 callsubr + 13 callsubr + 192 185 110 -185 106 215 120 -362 hlineto + endchar + + + -224 540 86 95 86 hstem + 50 104 404 callsubr + 104 165 150 86 -150 95 176 86 -280 hlineto + endchar + + + 249 callsubr + 25 callsubr + endchar + + + 123 callgsubr + endchar + + + -147 367 89 82 84 104 89 hstem + 30 107 163 94 vstem + 245 367 rmoveto + 60 55 26 27 34 hvcurveto + 202 -164 -84 70 -70 vlineto + -8 -10 -16 -4 -18 hhcurveto + -80 -39 51 86 83 46 50 65 38 20 -12 -19 21 hvcurveto + 59 66 rlineto + 29 -33 -44 25 -61 hhcurveto + -120 -98 -82 -144 -145 95 -77 120 hvcurveto + endchar + + + 191 callsubr + 124 -411 hlineto + endchar + + + 193 callgsubr + 122 -363 hlineto + endchar + + + 249 callsubr + 33 85 25 callsubr + 709 278 callgsubr + + + 174 callgsubr + 47 85 146 callgsubr + -6 599 -48 callsubr + + + 249 callsubr + 38 66 25 callsubr + -80 714 -81 callgsubr + + + 174 callgsubr + 52 66 146 callgsubr + -86 604 -81 callgsubr + + + 249 callsubr + 105 66 25 callsubr + -106 697 -75 callsubr + + + 174 callgsubr + 119 66 146 callgsubr + -112 587 -75 callsubr + + + 249 callsubr + 37 154 327 callsubr + 83 170 0 130 hintmask 11101010 + -86 callgsubr + hintmask 11111100 + 713 vmoveto + -85 callsubr + + + 174 callgsubr + 51 154 hstemhm + 46 149 40 170 -16 129 hintmask 11101010 + -79 callsubr + hintmask 11111100 + -6 603 -82 callgsubr + + + 106 callsubr + + + 106 callgsubr + + + -126 554 89 hstem + 50 104 145 104 404 callsubr + 104 179 145 -179 104 432 -104 -164 -145 164 580 callsubr + + + 134 21 186 callgsubr + 74 97 -97 177 hstemhm + 97 147 225 148 hintmask 11011100 + 97 -31 callgsubr + 475 70 hlineto + hintmask 11101100 + 97 -70 vlineto + hintmask 11011100 + 80 -148 vlineto + hintmask 11101100 + -80 -225 vlineto + hintmask 11011100 + 80 -147 -80 vlineto + -72 -6 rlineto + -91 72 vlineto + 147 -74 rmoveto + 74 225 -74 vlineto + endchar + + + 82 21 -21 207 110 57 97 -97 154 hstemhm + 97 147 173 148 hintmask 11011100 + 97 321 callsubr + 374 71 hlineto + hintmask 11101100 + 97 -71 vlineto + hintmask 11011100 + 57 -148 vlineto + hintmask 11101100 + -57 -173 vlineto + hintmask 11011100 + 57 -147 -57 vlineto + -72 -6 rlineto + -91 72 vlineto + 147 -57 rmoveto + 57 173 -57 vlineto + endchar + + + 96 21 186 callgsubr + 251 -20 137 66 209 callgsubr + 225 148 vstem + 40 callsubr + 153 227 callsubr + + + 43 21 313 callgsubr + 151 66 157 callgsubr + 128 338 callsubr + + + 98 callgsubr + endchar + + + 148 callsubr + endchar + + + 97 callsubr + endchar + + + -375 477 callgsubr + 432 580 callsubr + + + 98 callgsubr + 65 28 -89 callgsubr + + + 148 callsubr + 136 556 -89 callgsubr + + + 97 callsubr + 64 42 -89 callgsubr + + + 147 callgsubr + 137 66 127 callgsubr + -31 227 callsubr + + + 283 callsubr + 117 66 316 callgsubr + 40 561 -75 callsubr + + + 271 callgsubr + 151 66 150 callgsubr + -32 338 callsubr + + + 7 callsubr + + + 283 callsubr + 48 140 hstemhm + 17 140 -33 147 -32 140 hintmask 11001000 + -14 callgsubr + hintmask 11110100 + 35 576 -100 callsubr + + + 271 callgsubr + 82 140 hstemhm + -30 140 -33 147 -32 140 513 callsubr + hintmask 11110100 + -37 62 -100 callsubr + + + 147 callgsubr + 69 154 127 callgsubr + 75 49 -82 callgsubr + + + 283 callsubr + 49 154 hstemhm + 113 170 -159 147 hintmask 11001000 + -14 callgsubr + hintmask 11110000 + 146 577 -82 callgsubr + + + 271 callgsubr + 83 154 hstemhm + 66 170 -159 433 callgsubr + 63 -82 callgsubr + + + 98 callgsubr + 85 28 -22 callsubr + + + 148 callsubr + 156 556 -22 callsubr + + + 97 callsubr + 84 42 -22 callsubr + + + 147 callgsubr + 89 94 127 callgsubr + -76 312 callgsubr + + + 283 callsubr + 69 94 hstemhm + 47 302 -225 147 hintmask 11101000 + -14 callgsubr + hintmask 11110000 + -5 597 68 callsubr + + + 271 callgsubr + 103 94 150 callgsubr + -77 440 callsubr + + + -277 -223 95 149 468 callsubr + hstemhm + 42 108 -73 73 -73 147 hintmask 11110000 + 397 callgsubr + hintmask 11101000 + 332 callgsubr + hintmask 11100100 + 503 callgsubr + 260 callsubr + -652 vlineto + hintmask 11110000 + 476 callgsubr + endchar + + + 88 callsubr + endchar + + + 129 callsubr + endchar + + + 98 callgsubr + endchar + + + 97 callsubr + endchar + + + 7 callsubr + + + 271 callgsubr + 82 140 hstemhm + -30 140 -33 147 -32 140 513 callsubr + hintmask 11110100 + -37 62 -100 callsubr + + + 244 callgsubr + + + 147 callgsubr + 60 406 callsubr + -46 95 28 147 31 95 572 callsubr + 147 260 callsubr + hlineto + hintmask 11100110 + 146 40 -6 callsubr + hintmask 11011100 + -38 callgsubr + hintmask 11100110 + 148 callgsubr + + + 283 callsubr + 40 406 callsubr + 0 95 -43 43 29 147 30 95 hintmask 11000010 + 52 hmoveto + 292 124 -73 404 73 124 hlineto + hintmask 11000110 + -292 -124 hlineto + hintmask 11100010 + 72 -404 -72 hlineto + 217 568 rmoveto + hintmask 11100011 + -41 callgsubr + hintmask 11011010 + -33 -33 58 -71 hhcurveto + -70 -52 -43 -101 -5 hvcurveto + hintmask 11010110 + 60 callsubr + hintmask 11100010 + 148 callgsubr + + + 271 callgsubr + 74 406 callsubr + -47 95 29 147 30 95 572 callsubr + 147 491 callsubr + hintmask 11100110 + 145 54 -6 callsubr + hintmask 11011100 + -38 callgsubr + hintmask 11100110 + 148 callgsubr + + + 201 callgsubr + + + 200 callsubr + + + -234 367 89 hstem + 192 104 vstem + 151 367 rmoveto + 101 44 71 84 hvcurveto + 285 -104 -276 vlineto + -59 -18 -16 -34 -23 -22 13 31 -15 vhcurveto + -71 -52 rlineto + -54 31 44 -27 67 hhcurveto + endchar + + + -69 225 callsubr + 137 66 228 callsubr + 27 697 -75 callsubr + + + -108 -12 122 418 -20 151 66 236 callgsubr + 6 587 -75 callsubr + + + 196 callsubr + + + 196 callgsubr + + + -164 477 callgsubr + 117 hlineto + 49 64 104 -181 rlineto + 113 hlineto + -156 261 132 171 rlineto + -115 hlineto + -124 -171 rlineto + -3 171 580 callsubr + + + 196 callsubr + + + 196 callgsubr + + + -60 0 124 528 -20 132 callsubr + 405 124 -258 491 callsubr + endchar + + + 331 callsubr + endchar + + + -229 375 86 hstem + 50 104 404 callsubr + 275 86 -171 346 580 callsubr + + + -60 0 124 528 -20 132 callsubr + 405 124 -258 491 callsubr + 67 28 -89 callgsubr + + + 331 callsubr + 68 42 -89 callgsubr + + + -22 21 -21 513 139 0 -20 hstemhm + -7 570 hintmask 10110000 + -7 hmoveto + 150 hlineto + 77 304 rlineto + hintmask 11010000 + 19 71 14 66 20 72 rrcurveto + 4 hlineto + 19 -72 13 -66 20 -71 78 -304 rcurveline + 156 hlineto + -197 -11 callgsubr + endchar + + + -90 21 -21 395 133 0 -20 hstemhm + -8 505 hintmask 10110000 + -8 hmoveto + 148 hlineto + 58 227 rlineto + hintmask 11010000 + 14 56 11 55 16 57 rrcurveto + 4 hlineto + 16 -57 11 -55 14 -56 60 -227 rcurveline + 153 hlineto + -165 112 callgsubr + endchar + + + -60 0 124 386 142 -142 222 -80 488 callsubr + 126 91 hintmask 10011100 + 77 hmoveto + 405 124 -258 491 callsubr + hintmask 11001100 + 276 -142 rmoveto + 63 hlineto + hintmask 10101100 + 275 callsubr + + + -107 0 120 286 122 -122 222 -100 488 callsubr + 107 91 hintmask 10011100 + 77 454 callgsubr + 408 -147 hlineto + hintmask 11001100 + 257 -122 rmoveto + 63 hlineto + hintmask 10101100 + 275 callsubr + + + -60 0 124 112 185 231 -20 209 callgsubr + 97 178 vstem + 77 hmoveto + 405 124 -258 491 callsubr + 333 -416 27 callgsubr + + + -107 0 120 106 185 117 -20 209 callgsubr + 69 178 vstem + 77 454 callgsubr + 408 -147 hlineto + 305 -302 27 callgsubr + + + -54 0 124 528 -20 hstem + 84 147 vstem + 84 hmoveto + 405 124 -258 154 hlineto + 208 113 -50 88 -158 -87 rlineto + 260 -147 -328 vlineto + -107 -60 50 -88 57 34 rlineto + endchar + + + -107 0 120 408 -20 hstem + 84 147 vstem + 84 454 callgsubr + 96 hlineto + 178 96 -50 81 -128 -68 rlineto + 203 -147 -271 vlineto + -107 -60 50 -82 57 33 rlineto + endchar + + + 184 21 319 callsubr + 342 134 hintmask 10111000 + 77 hmoveto + 132 239 hlineto + hintmask 11011000 + -59 callgsubr + endchar + + + 107 21 322 callgsubr + 267 132 hintmask 10111000 + 77 hmoveto + 132 148 hlineto + hintmask 11011000 + -51 callsubr + endchar + + + -64 375 432 -134 134 hstemhm + 50 95 223 97 hintmask 10110000 + 50 375 rmoveto + 95 151 hlineto + 43 -8 65 -5 39 vhcurveto + 2 hlineto + 37 -99 65 -161 rlineto + 40 hlineto + hintmask 01110000 + 66 161 37 99 rlineto + 3 hlineto + -5 -39 -9 -65 -43 vvcurveto + -151 97 432 -110 vlineto + -69 -188 -25 -74 rlineto + -3 hlineto + -26 74 -73 188 rlineto + -109 hlineto + endchar + + + 184 21 319 callsubr + 342 134 hintmask 10111000 + 77 hmoveto + 132 239 hlineto + hintmask 11011000 + -59 callgsubr + endchar + + + 107 21 322 callgsubr + 267 132 hintmask 10111000 + 77 hmoveto + 132 148 hlineto + hintmask 11011000 + -51 callsubr + endchar + + + -30 callsubr + endchar + + + -29 callgsubr + endchar + + + -132 375 129 -129 432 hstemhm + 50 97 153 97 hintmask 01110000 + 50 375 rmoveto + 97 147 hlineto + 50 -6 59 -5 48 vhcurveto + 2 hlineto + 43 -94 rlineto + hintmask 10110000 + 108 -210 rlineto + 108 432 -97 -143 hlineto + -52 6 -62 6 -46 vhcurveto + -3 hlineto + -43 96 -108 207 rlineto + -108 hlineto + endchar + + + -30 callsubr + 251 28 -89 callgsubr + + + -29 callgsubr + 225 42 -89 callgsubr + + + 480 callgsubr + 70 66 hstemhm + 77 471 callgsubr + 140 hintmask 01011110 + 524 callgsubr + hintmask 01101110 + 13 callgsubr + hintmask 10011110 + 18 callgsubr + hlineto + 181 245 callgsubr + + + 119 callsubr + 84 66 496 callgsubr + 182 135 hintmask 01011110 + 455 callgsubr + hintmask 01101110 + 12 callsubr + hintmask 10011110 + 17 callsubr + hlineto + 155 64 -81 callgsubr + + + 480 callgsubr + 60 406 callsubr + 77 140 -77 509 callsubr + -88 140 hintmask 0101011001000000 + 524 callgsubr + hintmask 0110011001000000 + 13 callgsubr + hintmask 1001101001000000 + 18 callgsubr + hlineto + 332 40 rmoveto + hintmask 0101101010000000 + -41 callgsubr + hintmask 0101010101000000 + -38 callgsubr + hintmask 1001101001000000 + 148 callgsubr + + + 119 callsubr + 74 102 -44 102 496 callgsubr + -98 95 185 135 -114 95 hintmask 0101011010000000 + 455 callgsubr + hintmask 0110011010000000 + 12 callsubr + hintmask 1001101010000000 + 17 callsubr + hlineto + 306 54 rmoveto + hintmask 0101101001000000 + -41 callgsubr + hintmask 0101010110000000 + -38 callgsubr + hintmask 1001101010000000 + 148 callgsubr + + + -30 callsubr + endchar + + + -29 callgsubr + endchar + + + -73 callgsubr + endchar + + + -63 callgsubr + endchar + + + -117 367 89 270 89 hstem + 30 107 187 107 vstem + 230 367 rmoveto + 119 82 86 140 141 -82 81 -119 -119 -81 -80 -142 -140 81 -86 119 hvcurveto + 89 vmoveto + -58 -35 54 83 84 35 49 58 58 36 -49 -84 -83 -36 -54 -58 hvcurveto + endchar + + + 293 0 419 callgsubr + -50 callsubr + -119 119 327 callsubr + 216 148 hintmask 01110110 + 373 hmoveto + 445 124 -257 150 208 123 -208 131 247 124 -427 hlineto + -194 -141 -99 -224 -224 141 -105 186 hvcurveto + hintmask 10101110 + 17 119 rmoveto + -114 -79 52 158 157 79 47 114 hvcurveto + 23 -414 hlineto + endchar + + + 188 88 callgsubr + hstem + 46 151 154 147 vstem + 339 hmoveto + 374 114 -215 101 175 107 -175 92 205 114 -373 hlineto + -161 -123 -75 -189 -193 123 -71 170 hvcurveto + -8 114 rmoveto + -85 -49 40 110 106 49 44 85 hvcurveto + 20 -300 hlineto + endchar + + + -73 callgsubr + -10 565 -89 callgsubr + + + -63 callgsubr + -14 461 -89 callgsubr + + + 256 callsubr + 105 66 hstem + 46 151 290 -97 callsubr + -106 570 -75 callsubr + + + 71 callsubr + 119 66 58 callgsubr + -110 466 -75 callsubr + + + 256 callsubr + 36 140 327 callsubr + -36 296 callgsubr + -36 151 hintmask 11110010 + -70 callsubr + hintmask 11101100 + -111 585 -100 callsubr + + + 71 callsubr + 50 140 327 callsubr + -73 296 callgsubr + -67 151 hintmask 11110010 + -99 callgsubr + hintmask 11101100 + -115 481 -100 callsubr + + + -73 callgsubr + 10 565 -22 callsubr + + + -63 callgsubr + 6 461 -22 callsubr + + + 256 callsubr + hstemhm + 47 151 290 151 -97 123 hintmask 11110000 + 154 callgsubr + hintmask 11101000 + 11 callgsubr + hintmask 11110000 + -213 120 -128 176 vhcurveto + -97 callgsubr + endchar + + + -27 callsubr + endchar + + + -73 callgsubr + -63 579 91 callsubr + + + -63 callgsubr + -67 475 91 callsubr + + + 256 callsubr + 57 94 327 callsubr + -6 302 -6 430 callgsubr + -70 callsubr + hintmask 11101000 + -151 606 68 callsubr + + + 71 callsubr + 71 94 327 callsubr + -43 302 -37 66 callgsubr + hintmask 11101000 + -155 502 68 callsubr + + + 133 0 119 418 127 hstemhm + 60 -45 callsubr + hintmask 11100010 + 44 hmoveto + hintmask 11010010 + 359 callgsubr + hintmask 11100010 + -74 callgsubr + hintmask 11100100 + 162 callgsubr + hintmask 11101000 + -110 4 hlineto + hintmask 11100010 + -93 callgsubr + endchar + + + 354 304 callgsubr + 131 147 hintmask 1110000010000000 + 44 hmoveto + 238 103 hlineto + hintmask 1101000110000000 + 443 callgsubr + hintmask 1110001010000000 + 498 callgsubr + hintmask 1110010010000000 + -88 4 hlineto + hintmask 1101000110000000 + 393 callsubr + hintmask 1100100010000000 + -78 43 -64 33 -32 vhcurveto + -4 vlineto + hintmask 1110000010000000 + -88 hlineto + 664 -115 440 callgsubr + + + 225 0 119 418 127 -12 -20 hstemhm + 152 -45 callsubr + hintmask 11010001 + 136 hmoveto + hintmask 11001001 + 359 callgsubr + hintmask 11010001 + -74 callgsubr + hintmask 11010010 + 162 callgsubr + hintmask 11010100 + -110 4 hlineto + hintmask 11010001 + -93 callgsubr + -63 321 rmoveto + hintmask 10110001 + 44 callgsubr + + + -73 callgsubr + endchar + + + -63 callgsubr + endchar + + + 199 120 callsubr + -12 -20 hstemhm + 138 151 290 151 hintmask 11011000 + 434 -12 -106 callgsubr + -353 325 rmoveto + hintmask 10111000 + 44 callgsubr + + + 256 callsubr + hstem + 47 151 290 151 vstem + 116 -41 rmoveto + 62 77 rlineto + -31 46 56 -17 63 hhcurveto + 176 120 128 213 86 -20 71 -35 54 hvcurveto + 76 94 -76 59 -66 -82 rlineto + 35 -48 -59 18 -68 250 callgsubr + -92 23 -77 39 -57 hvcurveto + -69 -86 rlineto + 158 312 rmoveto + 130 56 78 89 35 30 -12 -22 23 vhcurveto + -220 -273 rlineto + -8 28 -5 34 37 vvcurveto + 145 -214 rmoveto + -30 -27 10 18 -22 hvcurveto + 215 267 rlineto + 6 -24 3 -27 -30 vvcurveto + -131 -56 -83 -89 vhcurveto + endchar + + + 38 -12 112 328 112 hstem + 46 143 238 143 vstem + 189 266 rmoveto + 103 45 59 75 29 24 -9 -18 19 vhcurveto + -182 -210 rlineto + -7 22 -3 25 28 vvcurveto + -86 -291 rmoveto + 50 58 rlineto + -29 43 53 -16 60 hhcurveto + 153 108 104 174 76 -20 62 -36 45 hvcurveto + 54 62 -55 42 -49 -57 rlineto + 29 -43 -52 15 -60 hhcurveto + -156 -107 -99 -175 -76 21 -63 36 -47 hvcurveto + -55 -63 rlineto + 261 83 rmoveto + -29 -25 10 18 -19 hvcurveto + 182 210 rlineto + 6 -21 3 -24 -27 vvcurveto + -102 -45 -64 -73 vhcurveto + endchar + + + 256 callsubr + 28 102 -44 102 327 callsubr + -53 509 callsubr + -53 151 hintmask 11011001 + -70 callsubr + hintmask 11101010 + 71 577 218 callsubr + + + 71 callsubr + 42 102 -44 102 327 callsubr + -90 509 callsubr + -84 151 hintmask 11011001 + -99 callgsubr + hintmask 11101010 + 67 473 218 callsubr + + + 52 callgsubr + + + 57 callgsubr + + + -170 519 81 126 81 hstem + 50 104 130 102 404 callsubr + 104 144 60 hlineto + 91 81 46 103 105 -78 34 -94 hvcurveto + -164 hlineto + 104 -207 rmoveto + 126 52 vlineto + 51 27 -16 -42 -43 -25 -25 -53 hvcurveto + endchar + + + 182 -22 696 hstem + 48 139 128 130 128 139 vstem + 315 -22 rmoveto + 130 87 hlineto + 161 13 106 93 158 vvcurveto + 157 -106 89 -161 13 vhcurveto + 86 -130 -86 vlineto + -161 -13 -106 -89 -157 vvcurveto + -158 106 -93 161 -13 vhcurveto + -128 264 rmoveto + 83 50 54 78 12 vhcurveto + -301 vlineto + -78 12 -50 56 84 vvcurveto + 386 hmoveto + -84 -50 -56 -78 -12 vhcurveto + 301 vlineto + 78 -12 50 -54 -83 vvcurveto + endchar + + + 130 -18 176 -110 110 215 557 callsubr + 173 hstemhm + 48 139 102 130 102 139 hintmask 10011110 + 289 -18 rmoveto + 130 hlineto + hintmask 01101110 + 66 vlineto + 145 11 96 74 133 vvcurveto + 134 -96 72 -145 11 vhcurveto + hintmask 10011110 + 63 -130 vlineto + hintmask 01101110 + -63 vlineto + -146 -11 -95 -71 -135 vvcurveto + -134 95 -73 146 -11 vhcurveto + hintmask 10011110 + -102 218 rmoveto + 69 41 31 61 7 vhcurveto + -215 vlineto + -61 7 -41 32 69 vvcurveto + 334 hmoveto + -69 -41 -32 -61 -7 vhcurveto + 215 vlineto + 61 -7 41 -31 -69 vvcurveto + endchar + + + 268 callgsubr + + + 268 callsubr + + + 174 502 callsubr + 52 144 111 138 110 144 vstem + 307 hmoveto + 138 219 hlineto + 158 12 96 81 179 vvcurveto + 161 -144 -152 vlineto + -112 -38 -43 -72 -9 vhcurveto + 316 -138 -316 vlineto + -72 9 -39 43 112 vvcurveto + 152 -144 -161 vlineto + -179 96 -81 159 -12 vhcurveto + endchar + + + 104 491 callgsubr + hstem + 52 141 81 134 81 141 vstem + 274 hmoveto + 134 169 hlineto + 138 10 84 68 150 vvcurveto + 131 -141 -123 vlineto + -85 -29 -31 -52 -8 vhcurveto + 247 -134 -247 vlineto + -52 8 -29 31 85 vvcurveto + 123 -141 -131 vlineto + -150 84 -68 138 -10 vhcurveto + endchar + + + 106 -182 118 85 -21 537 505 callgsubr + 290 151 vstem + 342 108 rmoveto + -89 -56 82 139 130 56 78 89 89 56 -78 -130 -139 -56 -82 -89 hvcurveto + 215 -290 rmoveto + 50 41 10 12 24 hvcurveto + -26 107 rlineto + -6 -19 -25 -5 -28 hhcurveto + -55 -58 18 46 -30 hvcurveto + 126 36 81 118 175 290 callsubr + -184 90 -121 139 -29 vhcurveto + -102 46 98 -75 138 hhcurveto + endchar + + + 36 -171 114 76 -21 421 121 hstem + 44 151 222 151 vstem + 307 100 rmoveto + -70 -42 61 106 97 42 55 70 68 42 -55 -97 -106 -42 -61 -68 hvcurveto + 180 -271 rmoveto + 46 37 8 12 22 hvcurveto + -26 104 rlineto + -6 -18 -20 -4 -24 hhcurveto + -51 -44 10 45 -24 hvcurveto + 111 29 72 96 144 vvcurveto + 174 -107 99 -154 -156 -107 -98 -175 -147 75 -96 116 -28 vhcurveto + -99 42 77 -68 133 hhcurveto + endchar + + + -117 257 82 387 89 hstem + 27 107 189 106 vstem + 228 453 rmoveto + -59 -35 53 87 84 35 49 59 58 37 -49 -84 -87 -37 -53 -58 hvcurveto + 146 -196 rmoveto + 36 28 7 8 16 hvcurveto + -18 75 rlineto + -5 -14 -16 -3 -20 hhcurveto + -36 -39 8 29 -19 hvcurveto + 83 25 54 78 114 vvcurveto + 141 -82 81 -119 -120 -81 -80 -142 -122 61 -80 94 -20 vhcurveto + -67 31 66 -47 95 hhcurveto + endchar + + + 134 callsubr + endchar + + + 139 callgsubr + endchar + + + -162 528 81 117 81 hstem + 50 104 126 101 404 callsubr + 104 153 52 hlineto + 81 -153 rlineto + 116 hlineto + -98 173 rlineto + 46 22 30 41 62 vvcurveto + 102 -77 32 -93 vhcurveto + -161 hlineto + 104 -198 rmoveto + 117 49 vlineto + 50 27 -16 -40 -39 -27 -22 -50 hvcurveto + endchar + + + 134 callsubr + 328 vmoveto + 183 119 -78 95 -171 -140 rlineto + endchar + + + 139 callgsubr + 11 295 -89 callgsubr + + + 35 21 -21 235 117 183 117 50 66 209 callgsubr + 195 144 vstem + 77 hmoveto + 119 callgsubr + 81 callsubr + 147 -300 128 callsubr + -70 350 -81 callgsubr + + + 547 callgsubr + 64 66 209 callgsubr + 147 139 vstem + 21 callgsubr + -59 317 -81 callgsubr + + + 52 callgsubr + + + 57 callgsubr + + + -17 callsubr + endchar + + + -74 357 callsubr + hstem + 64 147 111 148 vstem + 254 -12 rmoveto + -95 callsubr + endchar + + + -204 367 90 272 87 hstem + 40 105 102 105 vstem + 187 367 rmoveto + 105 60 64 78 55 -25 30 -60 25 hvcurveto + -57 24 rlineto + -36 16 -29 9 25 vvcurveto + 22 16 14 34 36 28 -13 -22 29 vhcurveto + 53 65 rlineto + 37 -39 -54 20 -49 hhcurveto + -94 -65 -58 -72 -62 37 -33 52 -22 hvcurveto + 56 -24 rlineto + 37 -16 25 -8 -25 vvcurveto + -21 -14 -18 -40 -37 -43 17 27 -31 vhcurveto + -60 -70 rlineto + -43 46 61 -21 58 hhcurveto + endchar + + + -17 callsubr + 5 692 -89 callgsubr + + + -74 357 callsubr + hstem + 64 147 111 148 vstem + 254 -12 rmoveto + -95 callsubr + 7 582 -89 callgsubr + + + -22 120 callsubr + 38 66 hstem + 61 149 161 151 vstem + -87 callgsubr + -65 714 -81 callgsubr + + + -74 357 callsubr + 51 66 hstem + 64 147 111 148 vstem + 254 -12 rmoveto + -95 callsubr + -63 604 -81 callgsubr + + + -22 120 callsubr + 105 66 hstem + 61 149 161 151 vstem + -87 callgsubr + -91 697 -75 callsubr + + + -74 357 callsubr + 118 66 hstem + 64 147 111 148 vstem + 254 -12 rmoveto + -95 callsubr + -89 587 -75 callsubr + + + -29 184 callsubr + hstem + 38 477 vstem + 38 hmoveto + 477 124 -293 hlineto + 165 209 -162 195 rlineto + 263 124 -447 -89 hlineto + 199 -234 -202 -240 rlineto + endchar + + + -92 0 114 301 113 hstem + 38 410 vstem + 38 hmoveto + 410 114 -235 hlineto + 136 159 -128 142 rlineto + 214 113 -394 -80 hlineto + 163 -178 -166 -183 rlineto + endchar + + + -22 21 124 callsubr + endchar + + + 163 callsubr + + + -202 721 86 hstem + 137 104 vstem + 137 556 callsubr + 346 119 86 -344 -86 121 hlineto + endchar + + + -22 21 124 callsubr + endchar + + + 163 callsubr + + + -22 407 callgsubr + 124 50 66 hstem + 204 148 vstem + 56 callgsubr + -8 174 -81 callgsubr + + + -87 21 431 callsubr + 64 66 hstem + 172 147 vstem + 56 callsubr + -7 184 -81 callgsubr + + + 106 -12 127 157 129 136 505 callgsubr + 47 196 47 151 vstem + 244 272 rmoveto + 196 129 -196 hlineto + 98 -413 -106 callgsubr + endchar + + + 38 -12 112 115 107 106 112 hstem + 46 145 40 155 39 145 vstem + 365 callsubr + 154 107 101 178 178 -107 95 -154 -156 -107 -95 -178 -178 107 -101 156 hvcurveto + 112 vmoveto + -75 -43 61 106 105 43 56 75 73 43 -56 -105 -106 -43 -61 -73 hvcurveto + -78 115 rmoveto + 155 107 -155 hlineto + endchar + + + 39 21 -21 123 117 196 117 99 -20 209 callgsubr + 202 524 callsubr + 123 91 hlineto + 138 117 67 154 158 -114 51 -141 hvcurveto + -91 99 -147 hlineto + 147 -412 rmoveto + 196 82 vlineto + 78 42 -24 -68 -68 -39 -36 -81 hvcurveto + endchar + + + -16 21 -21 92 106 144 106 -106 186 46 callgsubr + 148 143 hintmask 11011100 + 77 hmoveto + 147 92 67 hlineto + 117 107 53 130 hvcurveto + hintmask 11101100 + 134 -104 39 -120 vhcurveto + -67 hlineto + hintmask 11011100 + 80 -147 vlineto + 147 -330 rmoveto + 144 61 vlineto + 56 31 -16 -51 -50 -28 -27 -59 hvcurveto + endchar + + + 2 callgsubr + endchar + + + 176 callsubr + endchar + + + -130 367 89 hstem + 48 104 148 100 vstem + 226 367 rmoveto + 116 58 65 147 hvcurveto + 228 -100 -240 vlineto + -83 -26 -28 -48 -49 -25 28 83 vhcurveto + 240 -104 -228 vlineto + -147 57 -65 121 vhcurveto + endchar + + + 2 callgsubr + -12 692 -89 callgsubr + + + 176 callsubr + -12 582 -89 callgsubr + + + 269 callsubr + 65 85 hstem + 251 callsubr + vstem + -94 callgsubr + -2 709 -48 callsubr + + + 185 callgsubr + 79 85 hstem + 526 callsubr + vstem + -87 callsubr + -2 599 -48 callsubr + + + 269 callsubr + 137 66 hstem + 251 callsubr + vstem + -94 callgsubr + -108 697 -75 callsubr + + + 185 callgsubr + 151 66 hstem + 526 callsubr + vstem + -87 callsubr + -108 587 -75 callsubr + + + 414 callsubr + 140 511 callsubr + -70 70 -70 296 callgsubr + -64 64 -64 142 hintmask 1111000010000000 + -94 callgsubr + hintmask 1110100010000000 + -113 712 rmoveto + hintmask 1110010010000000 + 41 29 30 40 40 -29 30 -41 hvcurveto + hintmask 1110100010000000 + -68 callsubr + hintmask 1111000100000000 + 222 hmoveto + 41 29 30 40 40 -29 30 -41 hvcurveto + hintmask 1111001000000000 + 187 callgsubr + hvcurveto + hintmask 1111000100000000 + -40 29 -30 41 vhcurveto + endchar + + + 416 callgsubr + 140 495 callsubr + -97 296 callgsubr + -91 141 hintmask 11110010 + -87 callsubr + hintmask 11101100 + -113 602 -100 callsubr + + + 2 callgsubr + 8 692 -22 callsubr + + + 176 callsubr + 8 582 -22 callsubr + + + -4 callgsubr + endchar + + + -1 callgsubr + endchar + + + 2 callgsubr + -65 706 91 callsubr + + + 176 callsubr + -65 596 91 callsubr + + + 269 callsubr + 89 94 511 callsubr + -40 40 228 34 -34 142 hintmask 11110010 + -94 callgsubr + hintmask 11101100 + -153 733 68 callsubr + + + 185 callgsubr + 103 94 495 callsubr + -67 67 174 61 -61 141 hintmask 11110010 + -87 callsubr + hintmask 11101100 + -153 623 68 callsubr + + + 87 -223 95 139 -21 662 -20 511 callsubr + 10 108 110 142 vstemhm + 203 callgsubr + hintmask 11110100 + 368 callgsubr + hintmask 11111100 + -31 -27 -29 -45 -47 388 callsubr + + + 72 callgsubr + endchar + + + -28 callsubr + endchar + + + -25 callsubr + endchar + + + -53 180 callsubr + 68 140 hstemhm + 81 140 -32 147 -33 140 39 callsubr + hintmask 11110100 + -38 468 -100 callsubr + + + 64 callsubr + + + 126 502 callsubr + 368 147 vstem + 368 -84 callgsubr + -287 208 rmoveto + 44 callgsubr + + + 269 callsubr + 65 55 87 55 511 callsubr + -3 72 84 72 3 142 hintmask 11111001 + -94 callgsubr + hintmask 11110110 + -2 709 rmoveto + 143 callsubr + + + 185 callgsubr + 79 55 87 55 495 callsubr + -30 72 84 72 -24 141 hintmask 11111001 + -87 callsubr + hintmask 11110110 + -2 599 rmoveto + 143 callsubr + + + 269 callsubr + 60 102 -44 102 511 callsubr + -87 87 214 95 -81 142 hintmask 11011001 + -94 callgsubr + hintmask 11101010 + 69 704 218 callsubr + + + 185 callgsubr + 74 406 callsubr + 73 127 -127 146 -114 114 468 callgsubr + -128 95 hintmask 1101010100000000 + -87 callsubr + hintmask 1110010010000000 + 69 594 -6 callsubr + hintmask 1101001100000000 + -33 -33 58 -71 hhcurveto + -70 -52 -43 -101 -5 hvcurveto + hintmask 1101100100000000 + 60 callsubr + hintmask 1110010010000000 + 148 callgsubr + + + -22 0 139 -118 468 callsubr + hstemhm + -7 570 hintmask 01110000 + 190 hmoveto + 177 hlineto + 196 652 327 callgsubr + -77 -304 rlineto + hintmask 10110000 + -19 -71 -14 -66 -19 -72 rrcurveto + -4 hlineto + -20 72 -13 66 -20 71 -78 304 rcurveline + -156 hlineto + endchar + + + -87 0 130 -109 -21 528 -20 hstemhm + -7 505 hintmask 01110000 + 157 hmoveto + 176 hlineto + 165 528 rlineto + -147 hlineto + -58 -230 rlineto + hintmask 10110000 + -14 -56 -12 -54 -16 -58 rrcurveto + -4 hlineto + -15 59 -12 53 -15 56 -60 230 rcurveline + -152 hlineto + endchar + + + -200 375 97 hstem + -6 389 vstem + 127 375 rmoveto + 125 hlineto + 131 432 rlineto + -105 hlineto + -51 -196 -12 -47 -9 -43 -13 -49 rlinecurve + -2 hlineto + -13 49 -10 43 -12 47 -51 196 rcurveline + -111 hlineto + endchar + + + -18 callsubr + endchar + + + 323 callgsubr + -49 callsubr + endchar + + + -29 375 98 191 143 hstem + 8 533 vstem + 89 375 rmoveto + 129 hlineto + 38 190 7 33 5 35 5 31 rlinecurve + 3 hlineto + 4 -31 6 -35 7 -33 41 -190 rcurveline + 131 hlineto + 76 432 rlineto + -99 hlineto + -29 -197 -6 -44 -5 -46 -5 -47 rlinecurve + -3 hlineto + -8 47 -9 47 -9 43 -46 197 rcurveline + -88 hlineto + -45 -197 -10 -44 -6 -46 -9 -47 rlinecurve + -3 hlineto + -7 47 -5 45 -6 45 -28 197 rcurveline + -107 hlineto + endchar + + + -18 callsubr + 383 28 -89 callgsubr + + + 323 callgsubr + -49 callsubr + 335 43 -89 callgsubr + + + 481 callsubr + 137 66 -9 callsubr + 287 227 callsubr + + + 323 callgsubr + 132 66 -49 callsubr + 239 48 -75 callsubr + + + 481 callsubr + 68 140 hstem + 226 296 callgsubr + -69 callgsubr + 282 48 -100 callsubr + + + 323 callgsubr + 63 140 hstem + 178 296 callgsubr + -42 callgsubr + 234 63 -100 callsubr + + + -18 callsubr + 403 28 -22 callsubr + + + 323 callgsubr + -49 callsubr + 355 43 -22 callsubr + + + 8 callgsubr + + + 20 callgsubr + + + -192 375 432 hstem + 7 371 vstem + 7 375 rmoveto + 111 hlineto + 38 86 10 22 11 22 11 27 rlinecurve + 2 hlineto + 12 -27 10 -22 11 -22 39 -86 rcurveline + 116 hlineto + -119 218 113 214 rlineto + -112 hlineto + -32 -77 -7 -20 -9 -22 -11 -29 rlinecurve + -3 hlineto + -12 29 -12 22 -8 20 -35 77 rcurveline + -116 hlineto + 114 -209 rlineto + endchar + + + -7 -28 callgsubr + hstemhm + 53 466 -398 329 hintmask 11110000 + 53 hmoveto + 466 124 -466 hlineto + hintmask 11101000 + 68 150 rmoveto + 329 123 -329 hlineto + -58 131 rmoveto + 446 124 -446 hlineto + endchar + + + -65 88 callgsubr + hstemhm + 53 408 -351 294 hintmask 11110000 + 53 hmoveto + 408 114 -408 hlineto + hintmask 11101000 + 57 101 rmoveto + 294 107 -294 hlineto + -49 92 rmoveto + 391 114 -391 hlineto + endchar + + + -28 callsubr + endchar + + + -25 callsubr + endchar + + + -222 375 432 hstem + 127 104 vstem + 127 556 callsubr + 153 hlineto + 131 279 rlineto + -108 hlineto + -37 -94 -12 -33 -12 -31 -12 -34 rlinecurve + -2 hlineto + -13 34 -11 31 -13 33 -37 94 rcurveline + -111 hlineto + 133 -279 rlineto + endchar + + + -28 callsubr + 63 448 -89 callgsubr + + + -25 callsubr + 61 389 -89 callgsubr + + + -53 180 callsubr + 137 66 hstem + 189 147 vstem + -69 callsubr + -33 453 -75 callsubr + + + 323 callsubr + 151 66 hstem + 160 147 vstem + 4 callsubr + -35 394 -75 callsubr + + + -53 180 callsubr + 68 140 hstemhm + 81 140 -32 147 -33 140 39 callsubr + hintmask 11110100 + -38 468 -100 callsubr + + + 64 callsubr + + + -28 callsubr + 83 448 -22 callsubr + + + -25 callsubr + 81 389 -22 callsubr + + + -37 184 callsubr + hstem + 36 472 76 callsubr + endchar + + + 133 callsubr + endchar + + + -214 375 86 260 86 hstem + 23 319 vstem + 23 375 rmoveto + 319 86 -191 hlineto + 190 284 rlineto + 62 -300 -86 171 vlineto + -189 -283 rlineto + endchar + + + -37 184 callsubr + hstem + 36 472 76 callsubr + 237 591 -89 callgsubr + + + 133 callsubr + 210 483 -89 callgsubr + + + -37 184 callsubr + 50 66 hstem + 36 472 76 callsubr + 167 613 -81 callgsubr + + + 484 callgsubr + 64 66 hstem + 36 411 77 callgsubr + 140 505 -81 callgsubr + + + -37 184 callsubr + 49 591 callsubr + 198 170 76 callsubr + 247 612 -82 callgsubr + + + 484 callgsubr + 63 591 callsubr + 171 170 77 callgsubr + 220 504 -82 callgsubr + + + -37 184 callsubr + hstem + 36 472 76 callsubr + endchar + + + 133 callsubr + endchar + + + 18 callsubr + 355 callgsubr + hintmask 10111000 + 29 callsubr + hintmask 01111000 + -100 callgsubr + hintmask 10111000 + -88 callgsubr + endchar + + + -5 -12 410 callsubr + 171 147 hintmask 10011100 + -33 callsubr + hintmask 01101100 + 19 callgsubr + hintmask 10011100 + -102 callsubr + endchar + + + 93 callsubr + + + 79 callsubr + + + 18 callsubr + 355 callgsubr + hintmask 10111000 + 29 callsubr + hintmask 01111000 + -100 callgsubr + hintmask 10111000 + -88 callgsubr + 46 470 -44 callsubr + + + -5 -12 410 callsubr + 171 147 hintmask 10011100 + -33 callsubr + hintmask 01101100 + 19 callgsubr + hintmask 10011100 + -102 callsubr + 16 464 -44 callsubr + + + 18 callsubr + 64 92 344 callgsubr + -76 84 130 147 -107 84 hintmask 10111010 + 29 callsubr + hintmask 01111010 + -100 callgsubr + hintmask 10111010 + -88 callgsubr + hintmask 01110101 + 36 470 -39 callgsubr + + + -38 callsubr + 64 92 558 callgsubr + -73 84 160 147 -137 84 hintmask 1001110100000000 + -33 callsubr + hintmask 0110110100000000 + 19 callgsubr + hintmask 1001110100000000 + -102 callsubr + hintmask 1001101010000000 + 6 464 -39 callgsubr + + + 18 callsubr + 145 91 355 callgsubr + hintmask 10111100 + 29 callsubr + hintmask 01111100 + -100 callgsubr + hintmask 10111100 + -88 callgsubr + hintmask 01111100 + -147 511 -31 callsubr + + + -38 callsubr + 145 91 256 callgsubr + hintmask 10011110 + -33 callsubr + hintmask 01101110 + 19 callgsubr + hintmask 10011110 + -102 callsubr + -177 505 -31 callsubr + + + -23 493 callgsubr + 216 253 vstem + 288 572 -44 callsubr + + + 18 callsubr + 61 143 344 callgsubr + -88 358 callgsubr + -136 147 hintmask 10111001 + 29 callsubr + hintmask 01111001 + -100 callgsubr + hintmask 10111001 + -88 callgsubr + hintmask 01110110 + -73 467 -83 callsubr + + + -38 callsubr + 61 143 558 callgsubr + -85 358 callgsubr + -106 147 hintmask 1001110010000000 + -33 callsubr + hintmask 0110110010000000 + 19 callgsubr + hintmask 1001110010000000 + -102 callsubr + hintmask 1001101100000000 + -103 461 -83 callsubr + + + -5 callgsubr + + + 18 callsubr + 355 callgsubr + hintmask 10111000 + 29 callsubr + hintmask 01111000 + -100 callgsubr + hintmask 10111000 + -88 callgsubr + 26 470 -29 callsubr + + + -5 -12 410 callsubr + 171 147 hintmask 10011100 + -33 callsubr + hintmask 01101100 + 19 callgsubr + hintmask 10011100 + -102 callsubr + -4 464 -29 callsubr + + + -79 callgsubr + endchar + + + -79 callgsubr + 67 447 115 callsubr + + + 18 callsubr + 84 93 344 callgsubr + -55 296 -103 147 hintmask 10111010 + 29 callsubr + hintmask 01111010 + -100 callgsubr + hintmask 10111010 + -88 callgsubr + hintmask 01110100 + -112 490 -24 callgsubr + + + -38 callsubr + 84 93 558 callgsubr + -52 296 -73 147 hintmask 10001101 + -33 callsubr + hintmask 01101101 + 19 callgsubr + hintmask 10011101 + -59 callsubr + hvcurveto + hintmask 10001101 + 92 callsubr + vhcurveto + 38 120 rmoveto + -57 -33 44 98 hvcurveto + hintmask 10011101 + 94 42 44 47 103 callgsubr + vhcurveto + -203 vlineto + hintmask 10001101 + 45 callsubr + hintmask 10001010 + -142 484 -24 callgsubr + + + 89 -12 112 467 97 hstemhm + 25 139 -60 121 104 112 hintmask 11011000 + 225 494 rmoveto + 45 26 28 33 31 14 -20 -31 -44 -36 -28 -47 -28 vhcurveto + -13 27 -8 27 24 vvcurveto + hintmask 11101000 + 17 -506 rmoveto + 82 68 25 41 55 hvcurveto + 56 -32 57 -23 54 -11 35 119 rcurveline + -33 5 -39 15 -41 21 50 68 35 73 24 79 rrcurveto + -134 hlineto + -16 -61 -26 -52 -33 -43 -48 35 -46 41 -37 43 rrcurveto + 68 46 68 54 85 vvcurveto + 90 -62 58 -98 vhcurveto + hintmask 11011000 + -109 -68 -78 -93 -41 15 -47 25 -47 hvcurveto + hintmask 11101000 + -64 -41 -55 -52 -91 vvcurveto + -100 75 -86 142 vhcurveto + -78 195 rmoveto + 30 18 25 26 23 vhcurveto + 38 -48 47 -46 50 -41 rrcurveto + -17 -27 -28 -9 -27 hhcurveto + -58 -39 34 49 hvcurveto + endchar + + + 18 -12 105 355 92 hstemhm + 25 131 -66 113 88 105 hintmask 11011000 + 203 394 rmoveto + 33 24 21 25 25 14 -15 -24 -34 -29 -21 -39 -21 vhcurveto + -13 22 -7 20 19 vvcurveto + hintmask 11101000 + 13 -406 rmoveto + 74 59 21 35 47 hvcurveto + 50 -27 50 -21 48 -8 33 114 rcurveline + -28 5 -32 10 -34 15 42 54 31 58 20 60 rrcurveto + -132 hlineto + -13 -45 -21 -40 -26 -33 -38 24 -37 29 -31 29 rrcurveto + 60 36 58 40 67 vvcurveto + 78 -58 51 -88 vhcurveto + hintmask 11011000 + -98 -62 -68 -77 -33 14 -38 23 -38 hvcurveto + hintmask 11101000 + -55 -31 -47 -40 -72 vvcurveto + -79 63 -76 128 vhcurveto + -60 163 rmoveto + 21 12 18 18 17 vhcurveto + 31 -34 37 -34 40 -30 rrcurveto + -10 -21 -21 -6 -21 hhcurveto + -44 -31 22 36 hvcurveto + endchar + + + -278 312 185 hstem + 61 178 vstem + 239 callsubr + endchar + + + -278 479 447 callgsubr + 479 27 callgsubr + + + -51 381 callgsubr + 114 -83 -21 23 212 callgsubr + 344 callgsubr + 98 100 -60 147 hintmask 10011010 + 387 -210 rmoveto + 32 173 callsubr + -14 -6 -13 hhcurveto + -21 -20 11 27 hvcurveto + hintmask 10011101 + 30 23 37 64 18 vhcurveto + 284 vlineto + -91 callsubr + 199 callsubr + -105 vvcurveto + hintmask 11001110 + -83 57 -66 91 56 46 26 37 42 vhcurveto + 4 hlineto + hintmask 10101010 + 12 -53 rlineto + -25 -17 -44 -41 -59 vvcurveto + hintmask 10011010 + 564 callgsubr + hintmask 11001101 + -147 312 -80 callsubr + endchar + + + -5 381 callgsubr + 120 71 callgsubr + 558 callgsubr + 131 100 -60 147 hintmask 11011100 + 427 -210 rmoveto + 32 173 callsubr + -14 -6 -13 hhcurveto + -21 -20 12 26 hvcurveto + hintmask 11101010 + 30 22 35 65 20 vhcurveto + 496 -115 vlineto + hintmask 11011010 + -12 -49 rlineto + -4 hlineto + 42 -39 -40 19 537 callgsubr + -98 -162 92 callsubr + hvcurveto + hintmask 11011100 + 30 callsubr + 12 -51 rlineto + -26 -18 -43 -40 -59 vvcurveto + 564 callgsubr + hintmask 11011010 + -147 318 rmoveto + -57 -33 44 98 94 42 44 47 103 callgsubr + hvcurveto + -203 vlineto + 45 callsubr + endchar + + + 31 callsubr + endchar + + + -51 381 callgsubr + 114 -93 -21 33 212 callgsubr + 344 callgsubr + -41 99 80 147 hintmask 10011011 + 248 38 callgsubr + 27 13 31 19 23 hvcurveto + 16 22 22 19 23 14 rrcurveto + 4 hlineto + -99 callsubr + hintmask 10101101 + 462 callsubr + hintmask 10011011 + -25 -22 -28 -38 -47 300 callgsubr + hintmask 11001101 + -8 312 -80 callsubr + endchar + + + -50 124 104 -28 104 52 104 -28 104 hstemhm + 29 470 hintmask 10101000 + 349 356 rmoveto + 317 callsubr + hintmask 10011000 + 259 callgsubr + hintmask 10101000 + 55 34 -76 83 hhcurveto + -232 vmoveto + 317 callsubr + hintmask 01101000 + 259 callgsubr + hintmask 10101000 + 55 34 -76 83 hhcurveto + endchar + + + 18 callsubr + 56 55 98 55 344 callgsubr + -39 89 86 89 -87 147 hintmask 1011110010000000 + 29 callsubr + hintmask 0111110010000000 + -100 callgsubr + hintmask 1011110010000000 + -88 callgsubr + hintmask 0111101100000000 + 36 462 rmoveto + -1 callsubr + + + -38 callsubr + 56 55 98 55 558 callgsubr + -36 89 86 89 -57 147 hintmask 1001111001000000 + -33 callsubr + hintmask 0110111001000000 + 19 callgsubr + hintmask 1001111001000000 + -102 callsubr + hintmask 1001110110000000 + 6 456 rmoveto + -1 callsubr + + + 542 callgsubr + 306 -26 rmoveto + 4 hlineto + 268 278 -80 70 -131 -150 rlineto + 357 -117 -357 vlineto + -132 150 -79 -70 rlineto + endchar + + + 542 callgsubr + 250 -26 rmoveto + 117 358 hlineto + 131 -150 80 69 -268 278 rlineto + -4 hlineto + -267 -278 79 -69 132 150 rlineto + endchar + + + -50 274 396 -133 133 hstemhm + 50 428 hintmask 10100000 + 50 274 rmoveto + 121 hlineto + 46 128 rlineto + hintmask 01100000 + 45 135 33 callsubr + 45 -135 46 -128 rlineto + 121 hlineto + -155 396 rlineto + -118 hlineto + endchar + + + -50 240 104 -28 104 hstemhm + 29 470 hintmask 10100000 + 349 240 rmoveto + 317 callsubr + hintmask 01100000 + 259 callgsubr + hintmask 10100000 + 55 34 -76 83 hhcurveto + endchar + + + -121 349 363 hstem + 183.5 90 vstem + 148 349 rmoveto + 81 89 80 -89 61 44 -59 104 108 49 -24 72 -115 -25 -13 119 rlineto + -77 hlineto + -13 -118 -116 24 -23 -72 108 -49 -59 -104 rlineto + endchar + + + 325 -172 89 121 91 -81 92 209 86 -86 94 137 89 hstemhm + 49 99 109 111 393 93 hintmask 1100111110000000 + 428 -172 rmoveto + 71 64 15 33 61 hvcurveto + -32 80 rlineto + -22 -42 -58 -17 -52 hhcurveto + -156 -136 95 197 225 169 146 171 196 77 -128 -143 -110 -59 -70 -60 -45 -15 28 58 14 hvcurveto + hintmask 1101011110000000 + 46 220 rlineto + -91 hlineto + hintmask 1010111110000000 + -14 -42 rlineto + -2 hlineto + 36 -17 -26 14 -33 hhcurveto + -115 -87 -123 -122 -92 53 -58 79 41 51 27 39 28 hvcurveto + 2 hlineto + hintmask 1100111110000000 + -48 11 47 -28 57 hhcurveto + 105 123 92 183 209 -138 147 -216 -246 -205 -184 -280 -255 179 -122 200 hvcurveto + hintmask 1010111110000000 + -8 312 rmoveto + -33 -19 22 45 60 36 82 60 20 16 -10 -19 10 hvcurveto + -24 -135 rlineto + -33 -25 -20 -12 -21 hhcurveto + endchar + + + 252 -34 84 88 90 -79 90 180 83 -83 91 107 84 hstemhm + 49 96 90 111 342 93 hintmask 1100111110000000 + 381 -34 rmoveto + 64 51 11 26 56 hvcurveto + -34 75 rlineto + -18 -35 -49 -10 -41 hhcurveto + -125 -123 68 179 195 148 125 152 175 68 -104 -121 -108 -55 -56 -46 -32 -12 27 53 12 hvcurveto + hintmask 1101011110000000 + 46 194 rlineto + -90 hlineto + hintmask 1010111110000000 + -16 -42 rlineto + -2 hlineto + 36 -16 -25 14 -32 hhcurveto + -105 -80 -109 -117 -79 48 -56 66 42 52 27 40 26 hvcurveto + 2 hlineto + hintmask 1100111110000000 + -47 10 37 -31 55 hhcurveto + 109 99 91 169 177 -127 126 -198 -224 -183 -159 -249 -230 164 -97 168 hvcurveto + hintmask 1010111110000000 + 2 273 rmoveto + -24 -13 19 34 52 30 75 48 21 11 -8 -19 10 hvcurveto + -22 -111 rlineto + -29 -24 -18 -13 -19 hhcurveto + endchar + + + 18 callsubr + 533 callgsubr + 42 141 -97 92 143 147 -94 92 hintmask 1010110100000000 + 29 callsubr + hintmask 0110110100000000 + -100 callgsubr + hintmask 1010110100000000 + -88 callgsubr + hintmask 0111000010000000 + 102 471 -50 callgsubr + hintmask 0110101100000000 + -74 callsubr + hintmask 0111000010000000 + 136 callgsubr + + + -38 callsubr + 533 callgsubr + 39 151 -94 92 173 147 -124 92 hintmask 1001011010000000 + -33 callsubr + hintmask 0110011010000000 + 19 callgsubr + hintmask 1001011010000000 + -102 callsubr + hintmask 1001101001000000 + 72 465 -50 callgsubr + hintmask 1001010110000000 + -74 callsubr + hintmask 1001101001000000 + 136 callgsubr + + + -5 -12 370 callsubr + 65 147 171 151 hintmask 10111100 + 183 callsubr + hintmask 01111100 + -701 115 vlineto + hintmask 10111100 + 136 callsubr + endchar + + + -193 367 82 -74 74 180 84 hstemhm + 42 104 107 106 hintmask 10111000 + 221 367 rmoveto + 71 67 64 115 100 -50 67 -80 -31 -31 -15 -23 -25 hvcurveto + 4 50 rlineto + 113 -104 vlineto + hintmask 01111000 + -463 80 vlineto + hintmask 10111000 + 8 35 33 callsubr + -29 24 33 -14 30 hhcurveto + -25 82 rmoveto + -16 -17 6 13 -17 hvcurveto + 475 callgsubr + -66 -26 -29 -31 hvcurveto + endchar + + + -239 -160 870 hstem + 28 298 vstem + 230 -160 rmoveto + 96 hlineto + -202 870 rlineto + -96 hlineto + endchar + + + -310 528 callgsubr + vstem + 86 -250 rmoveto + 96 1000 -96 hlineto + endchar + + + 22 -12 120 489 116 hstemhm + 64 137 -137 138 170 141 -92 144 hintmask 11100000 + 64 -177 rmoveto + hintmask 11010100 + 149 hlineto + -4 76 -3 77 -4 79 rrcurveto + -53 50 60 -14 54 hhcurveto + 96 103 66 146 93 -60 69 -76 15 hvcurveto + 4 vlineto + hintmask 11101000 + 54 34 30 49 67 vvcurveto + 125 -107 57 -110 -159 -73 -108 -139 vhcurveto + hintmask 11100100 + 259 -358 rmoveto + -38 -46 11 50 -38 hvcurveto + 97 2 94 3 97 vhcurveto + hintmask 11101000 + 85 3 29 55 58 hhcurveto + 40 36 -26 -54 -56 -25 -45 -77 -11 hvcurveto + 18 -107 590 callsubr + 4 12 13 2 15 hhcurveto + 62 31 -43 -52 -68 -45 -33 -53 hvcurveto + endchar + + + 534 callgsubr + 309 86 309 582 callgsubr + -152 rmoveto + 63 78 -19 hlineto + -41 -12 15 55 hvcurveto + 54 4 48 61 vvcurveto + 76 -24 29 -50 12 vhcurveto + 4 vlineto + 50 12 24 29 76 61 -4 48 54 vvcurveto + 55 12 15 560 callgsubr + -34 -108 hvcurveto + -71 10 -37 -63 vvcurveto + hintmask 11110000 + -35 -21 -37 -65 -2 vhcurveto + -86 vlineto + hintmask 11101000 + 65 -2 21 -37 -35 -63 -10 -37 -71 vvcurveto + -108 40 -34 88 vhcurveto + endchar + + + -234 -102 78 237 87 236 582 callgsubr + -102 rmoveto + 63 78 -19 hlineto + -41 -12 11 47 hvcurveto + 38 4 34 40 vvcurveto + 69 -24 28 -50 11 vhcurveto + 4 vlineto + 50 11 24 28 70 40 -4 33 38 vvcurveto + 47 12 11 560 callgsubr + -32 -98 hvcurveto + -52 10 -23 -44 vvcurveto + hintmask 11110000 + -31 -21 -33 -65 -1 vhcurveto + -87 vlineto + hintmask 11101000 + 65 -2 21 -32 -32 -43 -10 -25 -50 vvcurveto + -100 40 -31 88 vhcurveto + endchar + + + 534 callgsubr + 309 86 309 592 callsubr + -152 rmoveto + 63 hlineto + 88 40 34 108 hvcurveto + 71 -10 37 63 vvcurveto + hintmask 11101000 + 35 21 37 65 2 vhcurveto + 86 vlineto + hintmask 11110000 + -65 2 -21 37 35 63 10 37 71 vvcurveto + 108 -40 34 560 callsubr + -15 -55 hvcurveto + -54 -4 -48 -61 vvcurveto + -76 24 -29 50 -12 vhcurveto + -4 vlineto + -50 -12 -24 -29 -76 -61 4 -48 -54 vvcurveto + -55 -11 -15 -42 vhcurveto + -19 hlineto + endchar + + + -234 -102 78 237 87 236 592 callsubr + -102 rmoveto + 63 hlineto + 88 40 31 100 hvcurveto + 50 -10 25 43 vvcurveto + hintmask 11101000 + 32 21 32 65 2 vhcurveto + 87 vlineto + hintmask 11110000 + -65 1 -21 33 31 44 10 23 52 vvcurveto + 98 -40 32 560 callsubr + -11 -47 hvcurveto + -38 -4 -33 -40 vvcurveto + -70 24 -28 50 -11 vhcurveto + -4 vlineto + -50 -11 -24 -28 -69 -40 4 -34 -38 vvcurveto + -47 -11 -11 -42 vhcurveto + -19 hlineto + endchar + + + 534 callgsubr + 704 282 callgsubr + hintmask 11100000 + 87 -152 539 callsubr + 704 472 callsubr + + + -234 -102 78 560 282 callgsubr + hintmask 11100000 + 87 -102 539 callsubr + 560 472 callsubr + + + 534 callgsubr + 704 451 callgsubr + hintmask 11100000 + 46 -152 rmoveto + hintmask 11010000 + 211 860 539 callgsubr + -704 hlineto + hintmask 11100000 + -102 hlineto + endchar + + + -234 -102 78 560 451 callgsubr + hintmask 11100000 + 46 -102 rmoveto + hintmask 11010000 + 211 716 539 callgsubr + -560 hlineto + hintmask 11100000 + -102 hlineto + endchar + + + -23 572 92 hstem + 109 84 170 84 vstem + 278 572 -39 callgsubr + + + -310 528 callgsubr + vstem + 86 312 rmoveto + 96 438 -96 hlineto + -1000 vmoveto + 96 454 -96 hlineto + endchar + + + -233 123 278 hstem + 40 265 vstem + 172 123 rmoveto + 75 58 60 79 80 -58 59 -75 -74 -58 -59 -80 -79 58 -60 74 hvcurveto + endchar + + + 42 callgsubr + endchar + + + -265 367 82 182 82 hstem + 24 106 vstem + 187 367 rmoveto + 53 38 20 18 22 hvcurveto + -42 67 rlineto + -12 -14 -16 -11 -28 hhcurveto + -42 -28 37 54 54 30 37 41 19 14 -7 -12 14 hvcurveto + 48 66 rlineto + 17 -17 -37 18 -50 hhcurveto + -90 -78 -65 -108 -109 69 -64 94 hvcurveto + endchar + + + 42 callgsubr + 7 584 -44 callsubr + + + -23 577 91 hstem + 95 366 vstem + 203 577 -55 callgsubr + + + 447 callsubr + 69 91 40 -20 hstem + 36 151 vstem + -24 callsubr + -78 589 -55 callgsubr + + + -111 -239 59 169 118 -97 -21 27 -21 394 119 266 callgsubr + 65 105 hintmask 10011110 + 160 545 callsubr + hintmask 10101110 + 42 -26 21 -50 12 vhcurveto + 21 50 49 4 51 17 43 37 rlinecurve + hintmask 11001110 + -26 callgsubr + hvcurveto + hintmask 10011110 + -139 76 -89 107 -25 vhcurveto + -44 -89 rlineto + 96 callgsubr + + + 447 callsubr + 145 91 hstem + 36 151 vstem + -24 callsubr + -186 625 -31 callsubr + + + 447 callsubr + 61 154 266 callgsubr + 8 166 hintmask 11110000 + -24 callsubr + hintmask 11111000 + -3 581 rmoveto + -106 callsubr + + + -23 -239 59 86 98 -65 65 hstemhm + 269 105 hintmask 10110000 + 177 -239 rmoveto + 78 callgsubr + 28 65 rlineto + -86 hlineto + hintmask 11010000 + -48 -98 rlineto + 96 callgsubr + + + -50 -41 696 hstem + 60 143 72 81 vstem + 275 -41 rmoveto + 81 95 hlineto + 45 6 48 20 38 33 -59 93 rcurveline + -20 -16 -24 -14 -28 -5 rrcurveto + 272 vlineto + 19 -2 18 -9 20 -16 67 90 rcurveline + -29 30 -43 21 -52 5 rrcurveto + 93 -81 -97 vlineto + -124 -21 -91 -89 -141 vvcurveto + -145 85 -91 130 -17 vhcurveto + -72 253 rmoveto + 60 24 44 48 21 vhcurveto + -250 vlineto + -47 20 -25 45 60 vvcurveto + endchar + + + -52 -168 -21 665 20 12 -20 hstemhm + 8 532 hintmask 11010000 + 160 -189 rmoveto + 108 237 33 callsubr + 123 -237 145 32 -198 326 171 327 rlineto + -153 hlineto + -88 -202 rlineto + -4 hlineto + hintmask 10110000 + -115 214 rlineto + hintmask 11010000 + -145 -32 189 -311 -189 -342 rlineto + endchar + + + -23 653 91 hstem + 95 366 vstem + 95 613 -31 callsubr + + + -278 -12 185 139 185 hstem + 61 178 vstem + 239 callsubr + -324 vmoveto + -56 callgsubr + endchar + + + -370 367 129 78 353 callsubr + 367 rmoveto + 36 27 27 37 36 -27 29 -36 -36 -27 -29 -36 -37 27 -27 36 hvcurveto + 207 vmoveto + 158 callgsubr + + + -50 10 -21 28 -21 537 114 -6 -20 26 -20 hstemhm + 54 148 87 50 hintmask 01100110 + 340 533 rmoveto + 7 6 -1 -1 6 hvcurveto + -50 -426 -14 3 -13 5 -11 8 rlinecurve + 49 411 rlineto + 1 6 7 0 7 hhcurveto + -147 -643 rmoveto + 50 hlineto + 13 106 12 -3 13 -2 14 -2 rlinecurve + hintmask 10001110 + -12 -99 rlineto + 50 hlineto + 12 99 67 5 57 32 47 54 rlinecurve + -82 76 -22 -28 -24 -17 -29 -6 rlinecurve + 48 403 9 -8 9 -9 9 -10 rlinecurve + 81 80 -26 32 -33 24 -35 15 rlinecurve + 14 113 rlineto + -50 hlineto + -12 -100 rlineto + 1 -10 -9 1 -10 -4 -3 0 -4 hhcurveto + 12 98 rlineto + -50 hlineto + hintmask 01010110 + -12 -104 rlineto + -137 -26 -92 -117 -184 vvcurveto + -155 61 -101 93 -45 vhcurveto + -6 306 rmoveto + 92 22 66 43 33 vhcurveto + -40 -334 rlineto + -16 36 -9 48 59 vvcurveto + endchar + + + -278 6 167 hstem + 159 97 vstem + 76 326 callgsubr + 35 63 83 110 vvcurveto + 87 -36 52 -66 -51 -41 -33 -51 -53 42 -30 47 vhcurveto + 3 2 0 3 hhcurveto + 1 -50 -40 -46 -74 -26 rrcurveto + endchar + + + -370 1 413 callsubr + -130 114 callsubr + + + -370 263 413 callsubr + 132 114 callsubr + + + -370 -185 413 callsubr + -316 114 callsubr + + + -370 376 413 callsubr + 245 114 callsubr + + + 172 -9 61 75 86 217 86 79 60 hstem + 45 68 81 105 338 143 callgsubr + 12 75 rmoveto + 52 42 22 30 38 hvcurveto + -48 68 rlineto + -20 -25 -22 -14 -33 hhcurveto + -56 -36 43 68 59 34 47 63 27 20 -12 -22 21 hvcurveto + 55 61 rlineto + 32 -32 -39 27 -61 hhcurveto + -101 -92 -75 -117 -121 81 -76 112 hvcurveto + endchar + + + -50 130 102 196 102 hstem + 47 131 172 131 vstem + 93 83 rmoveto + 70 71 rlineto + -16 31 35 -8 35 hhcurveto + 34 36 8 16 31 hvcurveto + 70 -71 73 74 -61 62 rlineto + 21 30 13 37 44 vvcurveto + 43 -12 37 -22 29 vhcurveto + 61 62 -73 74 -69 -70 rlineto + 16 -32 -35 9 -35 hhcurveto + -35 -36 -9 -16 -31 hvcurveto + -69 70 -73 -74 60 -62 rlineto + -21 -29 -12 -37 -43 vvcurveto + -44 12 -37 22 -30 vhcurveto + -61 -62 rlineto + 244 75 rmoveto + -48 -38 38 60 59 38 39 48 48 38 -39 -59 -60 -38 -38 -48 hvcurveto + endchar + + + -5 -12 370 callsubr + 39 151 171 147 hintmask 10111100 + -33 callsubr + hintmask 01111100 + 315 callsubr + hintmask 10111100 + 16 callgsubr + endchar + + + -193 367 82 -74 74 182 82 -82 207 hstemhm + 26 106 108 104 hintmask 10101100 + 163 367 rmoveto + 33 30 17 23 23 hvcurveto + 2 hlineto + hintmask 01011100 + 8 -32 rlineto + 85 463 -104 hlineto + hintmask 10101100 + -107 vlineto + 5 -53 rlineto + 21 -20 -27 14 -34 hhcurveto + -67 -71 -64 -103 -113 53 -66 84 hvcurveto + 28 82 rmoveto + -38 -21 29 68 56 27 29 31 16 16 -6 -15 18 hvcurveto + -132 vlineto + -20 -15 -15 -9 -19 hhcurveto + endchar + + + -68 434 109.5 348 callsubr + 518 161 -8 328 callgsubr + 8 rlineto + endchar + + + -68 88.5 107.5 240 107.5 348 callsubr + 173 161 -9 rlineto + 118 vlineto + -161 -12 9 126 -9 126 161 -12 328 callgsubr + 12 -9 -126 9 -126 -161 12 rlineto + -118 vlineto + 161 9 rlineto + endchar + + + 36 375 callsubr + 40 153 -153 222 256 callgsubr + 41 91 hintmask 10110111 + -33 callsubr + hintmask 01110111 + 315 callsubr + hintmask 10110111 + 16 callgsubr + hintmask 01110111 + 272 440 rmoveto + 63 hlineto + hintmask 01101111 + 275 callsubr + + + -5 -12 120 -87 -21 339 121 96 71 -71 145 -141.5 67.5 256 callgsubr + hintmask 10101011 + 242 -12 rmoveto + 50 46 23 33 34 hvcurveto + 4 hlineto + hintmask 01100111 + 9 -44 rlineto + 123 557 hlineto + 68 5 rlineto + hintmask 01110011 + 65 -68 vlineto + hintmask 01101011 + 74 -147 vlineto + hintmask 01110011 + -74 -149 vlineto + hintmask 01101011 + -71 149 -73 vlineto + 6 -75 rlineto + 31 -34 -33 21 -55 hhcurveto + -105 -101 -94 -141 hvcurveto + hintmask 10101011 + -143 80 -94 123 vhcurveto + 38 120 rmoveto + -57 -33 41 78 73 42 39 265 callsubr + -23 26 hvcurveto + -155 vlineto + 45 callsubr + endchar + + + -213 398 70 147 71 hstem + 39 77 134 78 vstem + 183 398 rmoveto + 81 64 60 84 84 -64 60 -81 -80 -64 -60 -84 -84 64 -60 80 hvcurveto + 70 vmoveto + -39 -28 30 44 43 28 30 39 40 27 -30 -43 -44 -27 -30 -40 hvcurveto + endchar + + + -30 25 callgsubr + 497 109 hstemhm + 41 139 -92 136 142 142 hintmask 11101000 + 273 -12 rmoveto + 147 88 95 140 107 -55 58 -89 65 hvcurveto + hintmask 11011000 + -74 54 -66 35 35 vvcurveto + 16 14 11 32 51 66 -16 -24 70 vhcurveto + 33 109 rlineto + 23 -69 -79 17 -72 hhcurveto + -124 -58 -57 -65 -76 49 -52 55 -41 hvcurveto + hintmask 11101000 + -81 -35 -70 -67 -104 vvcurveto + -143 105 -85 127 vhcurveto + -93 230 rmoveto + 75 42 44 67 18 vhcurveto + 44 -35 33 -39 -57 vvcurveto + -82 -37 -35 -53 -52 -44 39 72 vhcurveto + endchar + + + -23 569 143 hstem + 97 358 callgsubr + vstem + 169 569 -83 callsubr + + + -23 533 callsubr + 90 342 callsubr + vstem + 146 182 callgsubr + + + -50 183 162 521 callgsubr + 230 -309 rmoveto + 423 callgsubr + 360 vmoveto + 423 callgsubr + endchar + + + -50 -110 217 -96 -21 25 -21 534 217 -103 -20 22 -20 hstemhm + 63 141 11 97 15 141 hintmask 1000010100000000 + 215 -110 rmoveto + 97 hlineto + hintmask 0010010100000000 + 104 vlineto + hintmask 0011001110000000 + 103 22 53 74 96 191 -264 -8 95 vvcurveto + 45 26 19 48 42 31 -17 -33 36 vhcurveto + hintmask 0010010110000000 + 74 84 rlineto + hintmask 0010010100000000 + -39 41 -46 32 -64 9 rrcurveto + hintmask 0011000100000000 + 101 -97 vlineto + hintmask 0010100100000000 + -103 vlineto + hintmask 1000101110000000 + -94 -19 -58 -68 -98 -180 264 2 -103 vvcurveto + -46 -25 -23 -56 -48 -44 20 38 -51 vhcurveto + hintmask 0100010100000000 + -64 -99 47 -43 70 -26 59 -7 rlinecurve + endchar + + + -50 0 74 42 97 -87 87 173 99 43 74 -71 71 hstemhm + 65 124 134 121 hintmask 11001011 + 226 116 rmoveto + 42 38 18 28 26 hvcurveto + 3 hlineto + hintmask 10100111 + 9 -36 rlineto + 100 402 hlineto + 73 6 rlineto + hintmask 11011011 + 68 -73 49 -121 -49 -144 -74 144 -15 vlineto + 4 -67 rlineto + 26 -28 -25 13 -44 hhcurveto + -81 -84 -67 -112 hvcurveto + hintmask 11001011 + -122 63 -68 98 vhcurveto + 30 97 rmoveto + -41 -26 29 63 hvcurveto + hintmask 11011011 + 51 35 30 36 24 18 -7 -19 21 vhcurveto + -111 vlineto + hintmask 11001011 + -26 -22 -19 -10 -26 hhcurveto + -178 -213 rmoveto + 399 74 -399 hlineto + endchar + + + -23 569 591 callsubr + 195 166 vstem + 278 569 rmoveto + -106 callsubr + + + 367 callsubr + endchar + + + -62 callgsubr + endchar + + + 304 callsubr + 193 367 58 callsubr + + + -62 callgsubr + -78 270 -44 callsubr + + + 304 callsubr + 192 748 rmoveto + 125 110 -70 68 -108 -127 rlineto + 54 -432 58 callsubr + + + -60 -20 callgsubr + 64 92 hstemhm + 99 84 170 84 -81 125 hintmask 11111010 + -105 callgsubr + -88 270 rmoveto + hintmask 11111100 + -49 callgsubr + hintmask 11111010 + 399 callsubr + + + -60 -20 callgsubr + 69 91 40 -20 -58 callsubr + -163 275 -55 callgsubr + + + -60 -20 callgsubr + 145 91 -58 callsubr + -271 311 -31 callsubr + + + -60 -20 callgsubr + 61 143 hstemhm + 87 358 callgsubr + -93 125 hintmask 11111010 + -105 callgsubr + -197 267 -33 callgsubr + hintmask 11111100 + 365 callgsubr + + + -60 -20 callgsubr + 61 154 588 callgsubr + hintmask 11100100 + 36 callsubr + -88 267 rmoveto + -106 callsubr + + + -62 callgsubr + -98 270 -29 callsubr + + + 304 callsubr + 175 748 rmoveto + 53 51 -108 127 -70 -68 rlineto + 143 -491 58 callsubr + + + -50 -12 102 455 102 hstemhm + 42 205 callgsubr + 263 -60 callsubr + + + -50 -12 102 471 102 hstemhm + 42 205 callgsubr + 263 -12 rmoveto + 135 90 76 100 89 -48 53 -62 34 531 callgsubr + 44 30 39 52 63 vvcurveto + 106 -77 68 -116 -118 -85 -67 -108 -69 35 -50 50 -37 487 callsubr + -61 -32 -47 -52 -82 vvcurveto + -103 94 -71 127 vhcurveto + hintmask 11011000 + 40 391 rmoveto + -66 26 -43 28 55 vvcurveto + 49 32 24 39 48 29 -32 -49 -36 -12 -34 -27 -31 vhcurveto + hintmask 11100100 + -37 -289 rmoveto + -53 -45 33 56 43 20 41 29 26 hvcurveto + 81 -34 53 -25 -61 vvcurveto + -53 -36 -26 -49 vhcurveto + endchar + + + -202 -12 289 callgsubr + -12 -21 callgsubr + + + -202 250 289 callgsubr + 250 -21 callgsubr + + + -31 -12 102 455 102 hstemhm + 50 205 callgsubr + 271 -60 callsubr + + + -29 -12 102 455 102 hstemhm + 52 205 callgsubr + 273 -60 callsubr + + + -67 -12 98 356 98 hstemhm + 47 128 -108 125 128 120 -105 130 hintmask 11100100 + 253 469 callsubr + 85 63 89 70 -44 41 -57 27 hvcurveto + 3 vlineto + hintmask 11011000 + 41 25 35 37 56 vvcurveto + 83 -73 58 -113 -107 -80 -57 -94 -54 32 -40 47 -31 487 callsubr + -55 -26 -44 -38 -66 vvcurveto + -83 88 -59 118 vhcurveto + hintmask 11011000 + 34 325 rmoveto + -59 18 -36 23 35 vvcurveto + 37 26 16 34 42 26 -22 -37 -23 -12 -27 -21 -20 vhcurveto + hintmask 11100100 + -27 -227 rmoveto + -45 -40 24 41 35 23 23 23 17 hvcurveto + 73 -25 41 -18 -40 vvcurveto + -41 -33 -16 -42 vhcurveto + endchar + + + -202 -198 289 callgsubr + -198 -21 callgsubr + + + -202 363 289 callgsubr + 363 -21 callgsubr + + + -50 -12 102 455 102 hstemhm + 42 205 callgsubr + 263 -60 callsubr + + + 400 -12 185 hstem + 76 178 154 178 153 178 vstem + 165 -12 rmoveto + -56 callgsubr + 332 hmoveto + -56 callgsubr + 331 hmoveto + -56 callgsubr + endchar + + + -60 -20 callgsubr + 84 93 hstemhm + 120 296 -60 125 hintmask 11110100 + 36 callsubr + -236 290 -24 callgsubr + + + 363 callsubr + + + 118 223 94 hstem + 43 610 vstem + 43 223 rmoveto + 610 94 -610 hlineto + endchar + + + -15 536 63 hstem + 43 478 vstem + 43 536 rmoveto + 478 63 -478 hlineto + endchar + + + -98 206 94 hstem + 43 394 vstem + 43 206 rmoveto + 394 94 -394 hlineto + endchar + + + -160 223 94 hstem + 43 332 vstem + 43 223 rmoveto + 332 94 -332 hlineto + endchar + + + -229 536 63 hstem + 43 263 vstem + 43 536 rmoveto + 263 63 -263 hlineto + endchar + + + -60 381 callgsubr + 3 callsubr + hstemhm + 258 97 1 125 hintmask 11111000 + 362 230 callgsubr + -10 -12 -6 -13 hhcurveto + -24 -19 12 26 39 20 29 88 61 hvcurveto + -49 89 rlineto + -22 -36 -34 -11 -37 hhcurveto + -66 -50 33 72 -13 hvcurveto + hintmask 11110100 + 297 hlineto + 3 12 3 27 26 vvcurveto + 135 -70 103 -141 -119 -115 -99 -161 vhcurveto + hintmask 11111000 + -164 109 -96 142 7 8 0 3 12 vhcurveto + -25 -22 -31 -39 -49 vvcurveto + -60 45 -31 59 vhcurveto + -185 512 rmoveto + hintmask 11110100 + 63 10 40 31 46 hhcurveto + 59 24 -39 -55 hvcurveto + endchar + + + -60 -210 87 137 -21 212 238 callgsubr + hstem + 172 99 85 125 vstem + 278 38 callgsubr + 32 20 35 53 12 hvcurveto + 41 9 39 16 39 25 -49 89 rcurveline + -22 -36 -34 -11 -37 hhcurveto + -66 -50 33 72 -13 hvcurveto + 297 hlineto + 3 12 3 27 26 vvcurveto + 135 -70 103 -141 -119 -115 -99 -161 -142 82 -91 114 -22 vhcurveto + -32 -26 -28 -41 -45 300 callgsubr + -101 512 rmoveto + 63 10 40 31 46 hhcurveto + 59 24 -39 -55 hvcurveto + endchar + + + -61 callgsubr + endchar + + + -61 callgsubr + 37 567 115 callsubr + + + -50 162 104 128 104 565 callgsubr + 34 394 rmoveto + 376 callsubr + -336 vmoveto + 441 callgsubr + + + -202 -120 84 92 453 callgsubr + 56 411 callsubr + + + -202 445 84 92 453 callgsubr + 621 411 callsubr + + + 222 -11 20 307 19 306 20 hstem + 46 130 450 129 vstem + 401 -11 rmoveto + 114 102 52 79 65 hvcurveto + -52 hlineto + -68 -55 -82 -43 -91 hhcurveto + -86 -78 38 61 -54 hvcurveto + -4 6 -4 7 8 vvcurveto + 183 vlineto + 3 2 1 2 vhcurveto + 575 9 hlineto + 186 -158 150 -196 -196 -159 -150 -186 -186 159 -150 196 vhcurveto + -221 346 rmoveto + -2 -2 2 3 hvcurveto + 180 vlineto + 9 4 8 5 6 vhcurveto + 60 55 76 38 86 hhcurveto + 83 76 -37 -58 56 hvcurveto + 5 -6 4 -7 -9 vvcurveto + -184 vlineto + -3 -2 -2 -3 vhcurveto + endchar + + + -51 callgsubr + endchar + + + -51 callgsubr + -3 732 115 callsubr + + + -18 25 callgsubr + 239 109 hstem + 42 134 197 137 vstem + 176 228 rmoveto + 80 41 38 58 34 33 -10 -33 30 vhcurveto + 1 -15 0 -14 -16 vvcurveto + -103 -39 -48 -56 -55 -47 42 79 vhcurveto + 97 -240 rmoveto + 147 90 117 161 149 -56 106 -79 80 hvcurveto + 120 61 -38 65 -143 -72 -44 33 -47 28 -47 24 rlinecurve + -64 -89 33 -17 30 -17 27 -19 rlinecurve + -116 -58 38 -65 142 71 39 -37 28 -43 18 -53 rlinecurve + 30 -28 -39 12 -39 hhcurveto + -104 -99 -84 -143 -147 107 -93 124 hvcurveto + endchar + + + -238 507 callsubr + hstemhm + 81 198 callsubr + hintmask 01001000 + 122 231 400 callsubr + hintmask 01010000 + 120 callgsubr + hintmask 01100000 + 69 -549 rmoveto + 51 38 40 52 hvcurveto + hintmask 10100000 + 53 508 callgsubr + -53 vhcurveto + hintmask 01100000 + -52 38 -40 51 vhcurveto + endchar + + + -238 507 callsubr + 243 297 0 -20 hstemhm + 81 178 -160.5 143 hintmask 01100100 + 122 231 rmoveto + 96 hlineto + 21 194 5 103 333 callsubr + -103 rlineto + hintmask 01011000 + 69 -437 rmoveto + 51 38 40 52 hvcurveto + hintmask 10011000 + 53 508 callgsubr + -53 vhcurveto + hintmask 01011000 + -52 38 -40 51 vhcurveto + endchar + + + -238 323 405 callgsubr + hstemhm + 81 198 callsubr + hintmask 01010000 + 96 -174 rmoveto + 148 hlineto + -5 133 rlineto + hintmask 01001000 + -21 306 rlineto + -96 hlineto + -21 -306 rlineto + hintmask 10100000 + 69 364 201 callsubr + + + -238 0 297 -276 -21 355 405 callgsubr + hstemhm + 81 178 -160.5 143 hintmask 01010100 + 96 hmoveto + 148 hlineto + -5 103 rlineto + hintmask 10010100 + -21 194 rlineto + -96 hlineto + -21 -194 rlineto + hintmask 01101000 + 69 252 201 callsubr + + + 347 callsubr + hstemhm + 90 147 hintmask 10110100 + 240 callsubr + hintmask 10101100 + 27 108 rlineto + hintmask 11010100 + 116 callsubr + -27 vlineto + -66 -5 rlineto + hintmask 10110100 + -109 66 vlineto + endchar + + + -346 625 78 -78 80 67 80 hstemhm + 60 104 hintmask 01110000 + 60 556 callsubr + 250 58 80 -58 15 hlineto + 36 14 16 22 13 12 -2 -3 9 vhcurveto + 19 74 rlineto + 6 -16 -24 5 -27 hhcurveto + -93 -33 -64 -72 hvcurveto + -11 vlineto + hintmask 10110000 + -45 -4 rlineto + hintmask 01110000 + -76 45 vlineto + endchar + + + 79 21 -21 381 115 91 116 -106 116 -10 -20 30 -20 412 callgsubr + hintmask 11010011 + 406 hmoveto + 175 callgsubr + vhcurveto + hintmask 11100011 + 381 callsubr + hvcurveto + hintmask 11000111 + 27 108 rlineto + hintmask 11010011 + 435 callsubr + hintmask 11100011 + 23 vlineto + 47 25 21 34 27 15 -4 -7 16 vhcurveto + hintmask 11001011 + 27 109 rlineto + hintmask 11100011 + 9 -23 -38 9 -42 hhcurveto + -135 -53 -83 -102 hvcurveto + -23 452 callgsubr + -381 147 381 169 vlineto + endchar + + + 355 381 575 callsubr + -136 349 callsubr + 159 285 callsubr + hintmask 10011101 + 406 177 callsubr + 27 108 rlineto + 435 callsubr + hintmask 10101101 + 111 callgsubr + 316 -381 415 callsubr + hintmask 11001110 + 364 callsubr + + + 365 25 callgsubr + 274 115 91 349 callsubr + 169 147 hintmask 11011110 + 857 348 callgsubr + 553 -147 -547 vlineto + 308 callsubr + -451 12 rmoveto + 189 callsubr + 27 108 rlineto + 435 callsubr + hintmask 11101110 + 111 callgsubr + endchar + + + 426 529 callsubr + 91 349 callsubr + 537 callsubr + hintmask 11101110 + 406 hmoveto + 147 381 153 -201 hlineto + -115 48 -77 123 358 callsubr + vhcurveto + 305 callsubr + 119 115 -119 467 callsubr + vlineto + -17 -132 rlineto + -161 590 callgsubr + 30 vlineto + 511 callgsubr + 381 callsubr + vhcurveto + 27 108 rlineto + 435 callsubr + hintmask 11101110 + 111 callgsubr + endchar + + + 110 -12 115 -82 -21 381 115 101 116 0 -20 hstemhm + 90 147 537 callsubr + hintmask 01110110 + 90 hmoveto + 147 381 153 -201 hlineto + hintmask 10110110 + -115 48 -77 123 358 callsubr + vhcurveto + 305 callsubr + 119 115 -119 467 callsubr + vlineto + -17 -132 rlineto + -161 30 hlineto + 511 callgsubr + 381 callsubr + vhcurveto + hintmask 01101110 + 27 108 rlineto + hintmask 01110110 + 116 callsubr + -27 452 callgsubr + vlineto + endchar + + + 39 21 -21 381 111.5 -111.5 575 callsubr + -126 116 0 -20 hstemhm + 90 147 159 285 callsubr + 589 callgsubr + 240 callsubr + 589 callsubr + 27 108 rlineto + hintmask 1100101010000000 + 116 callsubr + -27 vlineto + -66 -5 rlineto + 589 callgsubr + -109 66 vlineto + 316 -381 415 callsubr + hintmask 1011001100000000 + 364 callsubr + + + -50 206 94 hstem + 43 442 vstem + 43 206 rmoveto + 442 94 -442 hlineto + endchar + + + 91 callgsubr + + + -50 25 callgsubr + 214 103 104 124 422 callgsubr + -12 rmoveto + 124 109 84 146 141 -93 65 -109 -26 -21 -5 -10 -24 hvcurveto + 11 119 rlineto + 233 124 -360 hlineto + -18 -321 66 -42 rlineto + 24 38 19 8 37 hhcurveto + 59 41 -37 -69 -71 -42 -37 -65 -54 -45 28 35 -38 hvcurveto + -66 -93 rlineto + -50 50 70 -39 104 hhcurveto + endchar + + + -202 -12 158 callsubr + -12 98 callsubr + hintmask 11101000 + 151 91 hlineto + hintmask 11110100 + -46 callgsubr + -51 35 55 -28 70 hhcurveto + endchar + + + -202 250 158 callsubr + 250 83 callgsubr + 6 54 rlineto + hintmask 11101000 + 151 91 hlineto + hintmask 11110100 + -46 callgsubr + -51 35 55 -28 70 hhcurveto + endchar + + + 89 callsubr + + + 91 callgsubr + + + -84 -11 112 143 96 68 120 hstem + 77.5 124.5 99 143 vstem + 227 -11 rmoveto + 118 99 69 118 112 -84 52 -100 -20 -21 -4 -7 -20 hvcurveto + 6 79 rlineto + 215 120 -335 hlineto + -15 -273 63 -40 rlineto + 21 35 16 8 36 hhcurveto + 45 36 -27 -44 -46 -32 -26 -54 -49 -43 27 27 -34 hvcurveto + -65 -91 rlineto + -43 47 65 -32 91 hhcurveto + endchar + + + -202 -198 158 callsubr + -198 98 callsubr + hintmask 11101000 + 151 91 hlineto + hintmask 11110100 + -46 callgsubr + -51 35 55 -28 70 hhcurveto + endchar + + + -202 363 158 callsubr + 363 98 callsubr + hintmask 11101000 + 151 91 hlineto + hintmask 11110100 + -46 callgsubr + -51 35 55 -28 70 hhcurveto + endchar + + + 89 callsubr + + + 271 -12 72 190 82 -4 74 47 64 48 91 hstemhm + 77.5 46 callsubr + 173 294 callsubr + hintmask 1101110101010000 + 361 callgsubr + hintmask 1101101001010000 + 151 91 hlineto + hintmask 1101110101010000 + -46 callgsubr + -51 35 55 -28 70 hhcurveto + 18 298 callgsubr + hintmask 1101110110010000 + 104 -676 140 callsubr + hintmask 1011110101100000 + 37 callsubr + hintmask 1101110110010000 + 206 callsubr + hintmask 1011110101100000 + 26 callgsubr + hintmask 1101110110010000 + 4 callgsubr + + + 49 25 callgsubr + -98 -21 33 -21 381 111.5 -111.5 115 101 116 -12 -20 32 -20 412 callgsubr + hintmask 0100110011000000 + 541 215 callsubr + hintmask 1000101011000000 + -3 callgsubr + hintmask 0100110011000000 + 308 callsubr + hintmask 0010110011000000 + -451 12 rmoveto + 189 callsubr + hintmask 0010100111000000 + 27 108 rlineto + hintmask 0011010011000000 + 116 callsubr + -27 vlineto + -66 -5 rlineto + hintmask 0010110011000000 + -109 66 vlineto + endchar + + + 57 381 111.5 -111.5 115 101 116 hstemhm + 90 147 187 147 hintmask 01111000 + 240 callsubr + 27 108 rlineto + 116 callsubr + hintmask 10111000 + -27 vlineto + -66 -5 rlineto + hintmask 01111000 + -109 66 vlineto + 334 -381 rmoveto + 147 431 callgsubr + endchar + + + -50 583 callsubr + 294 137 vstem + 160 210 callgsubr + + + 591 callgsubr + 164 112 249 127 hstem + 294 137 vstem + 160 276 rmoveto + 84 140 18 37 18 36 16 36 rlinecurve + 4 hlineto + -2 -40 -4 -61 -40 vvcurveto + -108 vlineto + -276 vmoveto + 137 164 73 112 -73 376 -180 hlineto + -232 -386 rlineto + -102 275 vlineto + endchar + + + -202 87 395 callsubr + 157 42 callsubr + endchar + + + -202 349 395 callsubr + 419 42 callsubr + endchar + + + -33 586 callsubr + 302 137 vstem + 168 203 callsubr + + + -18 583 callsubr + 312 137 vstem + 178 210 callgsubr + + + -55 21 -21 118 106 184 120 hstem + 284 136 vstem + 174 224 rmoveto + 66 102 18 34 8 13 19 35 rlinecurve + 4 hlineto + -2 -36 -3 -50 -36 vvcurveto + -62 vlineto + -224 vmoveto + 136 118 64 106 -64 304 -179 hlineto + -203 -309 rlineto + -101 246 vlineto + endchar + + + -202 -99 395 callsubr + -29 42 callsubr + endchar + + + -202 462 395 callsubr + 532 42 callsubr + endchar + + + -50 586 callsubr + 294 137 vstem + 160 203 callsubr + + + 212 callsubr + + + -20 callsubr + endchar + + + 237 callsubr + 360 callgsubr + hintmask 11101100 + 403 callsubr + hintmask 11011100 + -92 callgsubr + endchar + + + -186 237 80 73 82 156 76 -76 84 hstemhm + 30 105 109 103 hintmask 11011100 + 175 237 rmoveto + 109 63 51 93 hvcurveto + hintmask 11101100 + 323 -82 vlineto + hintmask 11011100 + -8 -31 rlineto + -3 hlineto + 27 -24 -28 12 -33 hhcurveto + -69 -70 -64 -100 -93 53 -65 84 29 27 12 20 24 hvcurveto + -3 -33 rlineto + -6 vlineto + -34 -22 -32 -47 -26 -34 8 16 -30 vhcurveto + -35 -67 rlineto + -24 39 50 -13 36 hhcurveto + 19 235 rmoveto + -38 -21 26 51 53 26 26 30 17 20 -5 -15 16 hvcurveto + -107 vlineto + -22 -16 -15 -7 -19 hhcurveto + endchar + + + -217 237 63 62 78 38 63 88 75 -60 69 hstemhm + 23 84 -76 96 -88 81 93 89 -52 99 hintmask 1111010001000000 + 161 237 rmoveto + 117 71 50 69 59 -43 25 -84 hvcurveto + hintmask 1111000110000000 + -53 hlineto + -36 -13 6 16 10 4 5 7 7 hvcurveto + -5 16 12 -1 11 hhcurveto + 72 60 35 76 15 -4 16 -5 9 hvcurveto + 51 75 -121 hlineto + 6 -15 -19 3 -19 hhcurveto + hintmask 1111001010000000 + -73 -66 -41 -80 -38 21 -31 24 -15 hvcurveto + -4 vlineto + hintmask 1111000110000000 + -23 -15 -14 -23 -23 vvcurveto + -27 12 -17 18 -11 vhcurveto + -4 vlineto + hintmask 1111010010000000 + -30 -15 -16 -21 -28 vvcurveto + hintmask 1111010001000000 + -59 61 -24 77 vhcurveto + hintmask 1110101010000000 + 9 304 rmoveto + -25 -18 17 34 35 18 17 25 25 18 -18 -34 -34 -18 -17 -25 hvcurveto + hintmask 1111010001000000 + 8 -241 rmoveto + -43 -28 13 24 10 6 10 11 9 hvcurveto + -4 14 16 0 15 hhcurveto + 33 hlineto + 32 16 -6 -18 -21 -29 -17 -43 hvcurveto + endchar + + + -45 476 20 12 -20 hstemhm + 192 145 hintmask 10100000 + 185 -177 rmoveto + 152 hlineto + 56 -2 72 -11 62 vhcurveto + 128 200 35 115 29 168 rrcurveto + -146 hlineto + -7 -120 -27 -107 -50 -103 rrcurveto + -4 hlineto + hintmask 01100000 + -36 141 -53 134 -44 67 rrcurveto + hintmask 10100000 + -150 -32 rlineto + 106 -150 87 -241 -126 vvcurveto + -68 -2 -27 -5 -41 vhcurveto + endchar + + + 102 callgsubr + 64 92 231 callsubr + -73 84 135 127 -92 84 -61 140 hintmask 1111011000001000 + -19 callsubr + hintmask 1111011000001000 + 324 callsubr + hintmask 1110110100100000 + 28 callgsubr + hintmask 1111011000001000 + 1 callsubr + hintmask 1111010001010000 + 6 691 -39 callgsubr + + + 237 callsubr + 64 92 hstemhm + 39 149 -69 84 158 147 -135 84 hintmask 1101110100000000 + 99 callgsubr + hintmask 1110110100000000 + 403 callsubr + hintmask 1101110100000000 + -92 callgsubr + hintmask 1101101010000000 + 8 441 -39 callgsubr + + + 102 callgsubr + 69 91 40 -20 278 callsubr + hintmask 1111011100010000 + 73 callsubr + hintmask 1111011001100000 + -43 callgsubr + hintmask 1110111010100000 + 43 callgsubr + hintmask 1111011001100000 + 101 callsubr + hintmask 1111011100100000 + -46 -26 -25 -33 -41 vvcurveto + hintmask 1111011100010000 + 324 callsubr + hintmask 1110111010100000 + 28 callgsubr + hintmask 1111011100010000 + 1 callsubr + -69 696 -55 callgsubr + + + 237 callsubr + 69 91 312 callsubr + hintmask 11011110 + 99 callgsubr + hintmask 11101110 + 403 callsubr + hintmask 11011110 + -92 callgsubr + -67 446 -55 callgsubr + + + 102 callgsubr + 145 91 278 callsubr + hintmask 1111011000100000 + 73 callsubr + hintmask 1111010011000000 + -43 callgsubr + hintmask 1110110101000000 + 43 callgsubr + hintmask 1111010011000000 + 101 callsubr + hintmask 1111011001000000 + -46 -26 -25 -33 -41 vvcurveto + hintmask 1111011000100000 + 324 callsubr + hintmask 1110110101000000 + 28 callgsubr + hintmask 1111011000100000 + 1 callsubr + -177 732 -31 callsubr + + + 237 callsubr + 145 91 312 callsubr + hintmask 11011110 + 99 callgsubr + hintmask 11101110 + 403 callsubr + hintmask 11011110 + -92 callgsubr + -175 482 -31 callsubr + + + 102 callgsubr + 61 154 231 callsubr + 13 166 -33 127 -69 140 hintmask 1111011000010000 + -19 callsubr + hintmask 1111011000010000 + 324 callsubr + hintmask 1110110100100000 + 28 callgsubr + hintmask 1111011000010000 + 1 callsubr + hintmask 1111010001000000 + 6 688 rmoveto + -106 callsubr + + + 237 callsubr + 61 154 hstemhm + 39 149 17 166 -10 147 hintmask 11011101 + 99 callgsubr + hintmask 11101101 + 403 callsubr + hintmask 11011101 + -92 callgsubr + hintmask 11011110 + 8 438 rmoveto + -106 callsubr + + + 54 -12 109 -97 33 -12 -21 595 116 hstemhm + 65 145 85 134 -63 141 -36 134 hintmask 10011101 + 421 -12 rmoveto + 121 63 73 91 hvcurveto + 154 -176 -4 66 vvcurveto + hintmask 00111010 + 51 78 30 95 vvcurveto + 86 -68 81 -137 -161 -76 -95 -129 vhcurveto + -487 145 470 vlineto + 77 31 48 61 41 23 -29 -39 vhcurveto + hintmask 10011101 + -73 -71 -27 -77 -132 176 3 -76 vvcurveto + -28 -21 -20 -34 -31 -30 11 25 -34 vhcurveto + hintmask 01011101 + -51 -100 rlineto + hintmask 10011101 + -28 48 44 -17 59 hhcurveto + endchar + + + 419 357 callsubr + hstem + 64 147 111 148 88 147 111 148 vstem + 254 -12 rmoveto + -95 callsubr + 494 hmoveto + -95 callsubr + endchar + + + -23 493 callgsubr + 87 253 vstem + 268 572 -29 callsubr + + + -50 104 456 513 callgsubr + 104 rmoveto + hintmask 10100000 + 460 177 rlineto + 102 vlineto + -460 177 rlineto + -121 vlineto + 176 -58 135 -47 rlineto + -4 vlineto + -135 -47 -176 -58 rlineto + endchar + + + -50 0 104 513 callgsubr + 154 rmoveto + hintmask 10100000 + 460 142 rlineto + 122 vlineto + -460 142 rlineto + -121 vlineto + 172 -46 139 -34 rlineto + -4 vlineto + -139 -34 -172 -46 rlineto + -275 vmoveto + 441 callgsubr + + + -98 570 callgsubr + 49 78 110 78 vstem + 183 56 259 callsubr + 322 -144 259 callsubr + endchar + + + -98 570 callgsubr + 165 78 110 78 vstem + 109 56 229 callsubr + 243 -44 229 callsubr + endchar + + + -286 570 callgsubr + 49 78 vstem + 183 56 259 callsubr + endchar + + + -286 570 callgsubr + 165 78 vstem + 109 56 229 callsubr + endchar + + + 155 callgsubr + + + -194 626 87 hstem + 42 104 96 104 vstem + 459 callsubr + 219 hlineto + 20 20 16 12 20 hhcurveto + 35 5 428 callgsubr + -29 54 -75 -44 -36 -25 -24 -23 vhcurveto + 7 61 rlineto + 113 -104 vlineto + endchar + + + 109 callsubr + + + -7 21 48 callgsubr + 193 -20 136 66 hstem + 65 147 537 callsubr + vstem + 344 callsubr + 335 hlineto + -71 callgsubr + -49 -35 -33 -37 vhcurveto + 7 89 rlineto + 172 -147 vlineto + 142 32 -75 callsubr + + + -23 565 callsubr + 149 365 vstem + 226 565 210 callsubr + + + -246 201 104 hstem + 43 246 vstem + 43 201 rmoveto + 246 104 -246 hlineto + endchar + + + -246 218 104 hstem + 43 246 vstem + 43 218 rmoveto + 246 104 -246 hlineto + endchar + + + -327 532 72 hstem + 43 166 vstem + 43 532 rmoveto + 166 72 -166 hlineto + endchar + + + 80 callgsubr + + + -390 749 106 hstemhm + 35 118 -111 104 hintmask 10100000 + 459 callsubr + 330 -104 hlineto + hintmask 11000000 + 52 44 388 callgsubr + + + 80 callgsubr + + + 367 callsubr + 83 76 -44 callsubr + + + 271 callsubr + 177 91 264 callgsubr + -110 117 -31 callsubr + + + 271 callsubr + 93 143 hstemhm + -43 143 -35 147 -36 143 394 callsubr + hintmask 11110100 + -36 73 -83 callsubr + + + 367 callsubr + 63 76 -29 callsubr + + + 271 callsubr + 116 93 264 callgsubr + -75 96 -24 callgsubr + + + 236 113 136 -110 107 141 136 -91 107 hstemhm + 37 108 524 108 hintmask 10011100 + 579 113 rmoveto + 109 89 82 145 115 -84 84 -106 -80 -61 -42 -66 -51 hvcurveto + -4 hlineto + hintmask 01101100 + 49 -36 -52 43 -76 hhcurveto + -113 -77 -76 -130 -95 74 -83 96 74 55 46 46 314 callgsubr + hintmask 10011100 + -82 62 59 -36 83 hhcurveto + hintmask 01101100 + -359 133 rmoveto + -47 -28 36 38 39 23 28 47 40 38 -31 -44 29 hvcurveto + -40 -27 -34 -26 -41 hhcurveto + hintmask 10011100 + 359 3 rmoveto + -56 -38 45 56 -41 hvcurveto + 55 39 45 27 44 hhcurveto + 59 38 -36 -59 -47 -34 -41 -56 hvcurveto + endchar + + + -188 -158 110 729 110 hstemhm + 117 133 -95 132 hintmask 11010000 + 99 -158 rmoveto + 157 31 106 141 hvcurveto + hintmask 11100000 + 165 -37 141 153 vvcurveto + 94 11 39 52 14 12 -1 -3 9 vhcurveto + 15 107 rlineto + 3 -11 -23 4 -23 hhcurveto + -157 -32 -106 -141 hvcurveto + hintmask 11010000 + -165 38 -141 -153 vvcurveto + -95 -11 -38 -52 -14 -12 2 2 -10 vhcurveto + -14 -106 rlineto + -4 11 22 -4 24 hhcurveto + endchar + + + -302 -210 87 144 235 callgsubr + 93 153 hstemhm + 41 99 -87 170 -158 75 -75 147 hintmask 11111000 + 517 callsubr + hintmask 11110010 + -30 66 rlineto + -6 -12 -11 -6 -12 hhcurveto + -23 -20 12 26 hvcurveto + hintmask 11110001 + 479 callgsubr + hintmask 11111000 + 41 hlineto + -25 -20 -40 -41 -58 300 callgsubr + hintmask 11110100 + -9 779 rmoveto + 49 36 32 45 45 -36 31 -49 -49 -36 -31 -45 -45 36 -32 49 hvcurveto + endchar + + + -302 -210 87 -87 706 152 callsubr + endchar + + + -7 callgsubr + endchar + + + 202 callgsubr + 93 143 hstemhm + -43 143 -35 138 -27 143 35 callsubr + -177 581 -83 callsubr + + + -15 callsubr + 147 -17 rmoveto + 74 213 -103 21 -36 -220 rlineto + 184 3 rmoveto + 31 25 22 35 34 -25 22 -31 -32 -25 -22 -34 -35 25 -22 32 hvcurveto + endchar + + + -7 callgsubr + -24 567 115 callsubr + + + 271 callsubr + 97 390 callgsubr + -52 92 25 147 24 92 hintmask 11010100 + 150 callsubr + hintmask 11100110 + 139 77 -50 callgsubr + hintmask 11011100 + -74 callsubr + hintmask 11100110 + 136 callgsubr + + + 113 callgsubr + + + -388 240 81 428 106 hstem + 44 104 vstem + 27 240 rmoveto + 92 29 62 74 hvcurveto + 329 -104 -333 vlineto + -37 -7 -14 -26 -11 -9 2 2 -6 vhcurveto + -18 -77 rlineto + -4 14 16 -4 30 hhcurveto + 69 509 388 callgsubr + + + -300 382 callsubr + 577 -20 177 91 hstem + 66 147 vstem + 139 callsubr + -79 809 -31 callsubr + + + -30 402 callgsubr + 225 -20 hstem + 65 143 vstem + 61 callsubr + endchar + + + -207 375 330 -330 463 hstemhm + 42 104 hintmask 01100000 + 459 callsubr + 81 hlineto + 35 43 rlineto + hintmask 10100000 + 74 -124 rlineto + 112 hlineto + -128 190 120 140 rlineto + -112 hlineto + -97 -127 rlineto + -4 260 580 callsubr + + + -32 10 -21 32 -21 496 390 callsubr + 65 138 -138 143 hintmask 01010100 + 65 hmoveto + hintmask 01011000 + 436 callsubr + rrcurveto + hintmask 10010100 + 45 -90 42 -70 39 -49 rrcurveto + hintmask 01010100 + 165 11 -65 73 -81 120 -49 97 rlinecurve + 541 callgsubr + 499 callsubr + hintmask 01100100 + 424 callsubr + + + -30 402 callgsubr + hstem + 65 147 vstem + 344 callsubr + 117 hlineto + 59 72 112 -189 rlineto + 159 hlineto + -183 292 170 204 rlineto + -160 hlineto + -154 -200 rlineto + -3 200 -147 hlineto + endchar + + + 65 callgsubr + endchar + + + -302 0 701 464 callgsubr + endchar + + + -390 375 463 hstem + 42 104 vstem + 459 callsubr + 463 580 callsubr + + + -384 367 82 hstem + 42 104 vstem + 137 367 rmoveto + 24 15 4 5 12 hvcurveto + -12 75 rlineto + -2 -6 -3 0 -4 hhcurveto + -10 -7 8 21 hvcurveto + 360 -104 -356 vlineto + -69 23 -46 72 vhcurveto + endchar + + + 65 callgsubr + -67 740 -89 callgsubr + + + -302 0 949 464 callgsubr + 66 34 -89 callgsubr + + + -26 10 -21 32 -21 589 124 hstemhm + 13 535 hintmask 10110000 + 172 -11 rmoveto + 117 345 33 callsubr + hintmask 01110000 + 97 -334 rlineto + 158 hlineto + -176 504 rlineto + 145 -43 -64 64 -115 hhcurveto + -59 -28 -8 -13 -32 hvcurveto + 32 -119 rlineto + 10 22 18 6 30 hhcurveto + 42 36 -26 -51 12 hvcurveto + 3 -14 -213 -498 rlineto + endchar + + + -260 25 callgsubr + -98 -21 33 -21 465 callgsubr + hintmask 01010110 + 293 callgsubr + hintmask 10010110 + -3 callgsubr + hintmask 01010110 + 308 callsubr + hintmask 00110110 + 55 560 rmoveto + 63 hlineto + hintmask 00101110 + 275 callsubr + + + -260 465 callgsubr + hintmask 10110000 + 344 callsubr + 431 callgsubr + 190 -153 rmoveto + 63 hlineto + hintmask 01110000 + 275 callsubr + + + -125 25 callgsubr + -98 -21 33 -21 236 185 280 -20 389 callsubr + 63 178 hintmask 01011100 + 293 callgsubr + hintmask 10011100 + -3 callgsubr + hintmask 01011100 + 308 callsubr + hintmask 00111110 + 164 248 27 callgsubr + + + -125 236 185 hstem + 65 147 63 178 vstem + 344 callsubr + 431 callgsubr + 299 -465 27 callgsubr + + + -50 104 456 497 callgsubr + 104 rmoveto + 121 vlineto + -176 58 rlineto + hintmask 11000000 + -135 47 rlineto + 4 vlineto + 135 47 176 58 rlineto + 121 vlineto + -460 -177 rlineto + -102 vlineto + endchar + + + -50 0 104 497 callgsubr + 154 rmoveto + 121 vlineto + -172 46 rlineto + hintmask 11000000 + -139 34 rlineto + 4 vlineto + 139 34 172 46 rlineto + 121 vlineto + -460 -142 rlineto + -122 vlineto + -296 vmoveto + 441 callgsubr + + + -50 0 124 93 74 48 75 114 119 hstem + 110 141 vstem + 48 hmoveto + 449 124 -259 4 hlineto + 26 29 13 26 4 34 rrcurveto + 129 74 -132 hlineto + -3 16 -3 16 -4 16 rrcurveto + 142 75 -158 hlineto + -1 7 0 6 7 328 callsubr + -9 1 -10 2 -9 hvcurveto + -3 hlineto + -58 -6 rlineto + -69 82 vlineto + 5 -16 5 -16 4 -16 rrcurveto + -22 hlineto + -74 -5 rlineto + -69 100 vlineto + -10 -58 -42 -45 -52 -23 rrcurveto + endchar + + + 573 callsubr + 386 108 vstem + 386 94 rmoveto + 108 288 -460 -104 352 hlineto + endchar + + + -30 -10 123 434 123 hstem + 52 444 vstem + 214 -10 rmoveto + 120 hlineto + 162 340 -162 340 552 callgsubr + -162 -340 rlineto + 220 -217 rmoveto + -54 121 -45 96 45 96 54 121 33 callsubr + 54 -121 45 -96 -45 -96 -54 -121 rlineto + endchar + + + -239 25 callgsubr + -98 -21 516 -20 217 -20 hstemhm + 91 147 hintmask 01111000 + 226 215 callsubr + hintmask 10111000 + 22 callsubr + 201 vlineto + 121 64 -48 91 -73 -42 559 callsubr + -111 -60 49 -91 62 37 rlineto + -124 vlineto + hintmask 01111000 + 548 callsubr + + + -249 0 701 hstem + 91 147 vstem + 91 hmoveto + 147 348 hlineto + 118 63 -48 91 -70 -40 559 callsubr + -108 -58 48 -91 60 35 rlineto + endchar + + + 279 373 callsubr + 145 147 146 147 hintmask 10111100 + 334 callsubr + hintmask 11011100 + -10 callgsubr + hintmask 10111100 + -10 64 552 callgsubr + endchar + + + -1 626 79 -79 87 hstemhm + 42 88 -88 104 93 103 93 104 hintmask 01011100 + 459 callsubr + 220 hlineto + 21 20 16 10 16 hhcurveto + 31 10 -21 -40 hvcurveto + -190 103 220 vlineto + 21 21 16 10 15 hhcurveto + 32 9 428 callgsubr + -33 54 -73 -45 -32 -27 -29 -27 vhcurveto + 36 -18 -30 20 -45 hhcurveto + hintmask 01101100 + -45 -29 -24 -27 -26 hvcurveto + -2 hlineto + hintmask 10101100 + -8 43 rlineto + hintmask 10011100 + -84 hlineto + endchar + + + -23 592 93 hstem + 130 296 vstem + 130 592 -24 callgsubr + + + -50 278 104 hstem + 34 460 521 callgsubr + endchar + + + -202 -32 453 callgsubr + -32 rmoveto + 416 callsubr + endchar + + + -202 533 453 callgsubr + 533 rmoveto + 416 callsubr + endchar + + + 16 25 callgsubr + -114 120 -104 -21 508 -20 hstemhm + 65 138 -138 147 146 138 hintmask 00110110 + 65 -177 rmoveto + hintmask 01011010 + 148 hlineto + -7 69 -2 50 -1 74 rrcurveto + -19 16 22 -4 24 hhcurveto + 44 37 27 51 24 hvcurveto + 4 hlineto + hintmask 00110110 + -55 16 43 -28 69 hhcurveto + 42 24 7 9 21 hvcurveto + hintmask 01010110 + -17 109 rlineto + hintmask 10010110 + -4 -11 -12 -2 -9 hhcurveto + -27 -17 10 32 83 7 148 3 116 hvcurveto + -148 hlineto + hintmask 01010110 + -318 vlineto + -48 -26 -26 -17 -33 hhcurveto + -42 -19 24 70 hvcurveto + 289 -147 vlineto + endchar + + + -50 112 435 hstem + 48 432 vstem + 121 112 rmoveto + 143 144 143 -144 73 74 -142 143 142 144 -73 74 -143 -144 -143 144 -73 -74 142 -144 -142 -143 rlineto + endchar + + + -6 373 callsubr + 537 callsubr + hintmask 10111000 + 334 callsubr + hintmask 11011000 + -30 callgsubr + hintmask 10111000 + 325 callgsubr + endchar + + + -194 626 79 -79 87 hstemhm + 42 104 96 104 hintmask 01110000 + 459 callsubr + 219 hlineto + 20 20 16 12 21 hhcurveto + 34 5 428 callgsubr + -29 54 -75 -44 -35 -24 -27 -27 vhcurveto + -2 hlineto + hintmask 10110000 + -9 43 rlineto + -83 hlineto + endchar + + + -6 373 callsubr + 537 callsubr + hintmask 10111000 + 334 callsubr + hintmask 11011000 + -30 callgsubr + hintmask 10111000 + 325 callgsubr + 258 76 -44 callsubr + + + 272 257 callgsubr + 66 155 hstemhm + 161 85 97 147 537 callsubr + hintmask 10110110 + 343 hmoveto + 147 hlineto + hintmask 11010110 + -30 callgsubr + hintmask 10111110 + 325 callgsubr + -240 -144 59 callgsubr + + + -6 257 callgsubr + 101 91 40 -20 389 callsubr + 537 callsubr + hintmask 10111110 + 334 callsubr + hintmask 11011110 + -30 callgsubr + hintmask 10111110 + 325 callgsubr + 173 81 -55 callgsubr + + + -50 25 callgsubr + 131 104 195 110 hstem + 34 527 callsubr + 168 116 callgsubr + + + -50 25 callgsubr + 133 103 210 111 hstem + 34 527 callsubr + 168 444 rmoveto + 76 37 33 43 46 42 -35 -112 12 vhcurveto + -45 -26 -37 -18 -34 hhcurveto + -47 -36 28 73 hvcurveto + 62 -456 rmoveto + 133 123 108 240 233 -118 95 -123 -115 -96 -83 -137 -140 81 -64 108 39 55 24 41 33 hvcurveto + -148 -6 -55 -50 -68 hhcurveto + -38 -40 21 24 -22 hvcurveto + -78 -88 rlineto + -40 41 62 -36 84 hhcurveto + endchar + + + 576 callgsubr + 71 73 106 82 hstem + 35 96 110 99 vstem + 131 267 -52 callsubr + + + -202 250 82 71 73 106 82 hstem + 35 96 110 99 vstem + 131 529 -52 callsubr + + + -33 515 callsubr + 34 134 192 139 vstem + 168 113 callsubr + + + -16 25 callgsubr + 131 104 195 110 hstem + 50 527 callsubr + 184 116 callgsubr + + + -65 -12 115 92 98 140 108 hstem + 43 133 156 133 vstem + 176 362 rmoveto + 50 34 21 31 36 37 -17 -75 14 vhcurveto + -32 -19 -35 -16 -28 hhcurveto + -38 -32 17 52 hvcurveto + 51 -374 rmoveto + 124 114 91 194 194 -112 74 -112 -109 -89 -68 -113 -115 78 -50 95 39 48 19 34 29 hvcurveto + -108 -6 -47 -37 -58 hhcurveto + -38 -36 19 18 -20 hvcurveto + -76 -85 rlineto + -36 37 59 -31 80 hhcurveto + endchar + + + -202 -198 82 71 73 106 82 hstem + 35 96 110 99 vstem + 131 81 -52 callsubr + + + -202 363 82 71 73 106 82 hstem + 35 96 110 99 vstem + 131 642 -52 callsubr + + + -50 515 callsubr + 26 134 192 139 vstem + 160 113 callsubr + + + -50 162 103 130 103 565 callgsubr + 52 40 rmoveto + 93 hlineto + 72 122 rlineto + 277 103 -220 hlineto + 73 130 rlineto + 147 103 -89 hlineto + 72 122 rlineto + -94 hlineto + -72 -122 rlineto + -277 -103 220 hlineto + -73 -130 rlineto + -147 -103 89 hlineto + endchar + + + -6 257 callgsubr + 97 102 -38 102 389 callsubr + -89 92 461 callgsubr + -101 92 hintmask 1010110100000000 + 334 callsubr + hintmask 1100110100000000 + -30 callgsubr + hintmask 1011010010000000 + 325 callgsubr + 314 77 -50 callgsubr + hintmask 1010101100000000 + -74 callsubr + hintmask 1011010010000000 + 136 callgsubr + + + -55 0 150 -129 -21 476 20 12 -20 hstemhm + -1 507 hintmask 01101000 + 182 hmoveto + 140 hlineto + 109 183 45 138 30 175 rrcurveto + -146 hlineto + hintmask 10011000 + -9 -114 -22 -120 -49 -112 rrcurveto + -4 hlineto + -20 105 -54 163 -53 90 rrcurveto + hintmask 01101000 + -150 -32 79 -121 75 -171 29 -184 rlinecurve + endchar + + + 591 callgsubr + 187 94 110 94 hstem + 34 464 vstem + 86 hmoveto + 85 hlineto + 23 187 rlineto + 103 hlineto + -22 -187 rlineto + 85 hlineto + 23 187 rlineto + 95 94 -84 hlineto + 13 110 rlineto + 91 94 -79 514 callgsubr + -104 514 callgsubr + -91 -94 79 hlineto + -14 -110 rlineto + -85 -94 74 hlineto + 97 94 rmoveto + 13 110 rlineto + 104 hlineto + -14 -110 rlineto + endchar + + + -48 callgsubr + endchar + + + 163 callgsubr + + + -48 callgsubr + 10 465 -44 callsubr + + + 78 callsubr + 145 91 -34 callgsubr + -183 506 -31 callsubr + + + 78 callsubr + 61 143 266 callgsubr + -90 358 callgsubr + -90 150 hintmask 11110010 + -101 callgsubr + hintmask 11101100 + -109 462 -83 callsubr + + + 244 -12 115 -115 119 98 90 94 119 -112 112 hstemhm + 36 149 172 136 167 126 hintmask 01101111 + 267 -12 rmoveto + 73 51 30 57 41 hvcurveto + -55 41 59 -32 60 hhcurveto + 58 67 21 35 51 hvcurveto + hintmask 10101111 + -51 95 rlineto + -21 -36 -32 -15 -37 hhcurveto + -60 -48 33 69 -11 hvcurveto + 287 hlineto + 3 12 3 23 27 vvcurveto + 135 -67 106 -131 -60 -57 -32 -55 -40 vhcurveto + 54 -38 -53 33 -70 hhcurveto + -126 -108 -95 -165 hvcurveto + hintmask 01101111 + -165 104 -95 127 vhcurveto + 3 119 rmoveto + -54 -31 55 86 hvcurveto + hintmask 01110111 + 86 31 55 54 54 33 -55 -86 vhcurveto + hintmask 01101111 + -86 -33 -55 -54 vhcurveto + 223 188 297 callsubr + endchar + + + -23 -210 87 -87 212 hstemhm + 181 99 hintmask 10100000 + 287 38 callgsubr + hvcurveto + hintmask 01100000 + 30 17 29 35 28 vhcurveto + -82 hlineto + hintmask 10100000 + -34 -25 -35 -46 -50 300 callgsubr + endchar + + + -48 callgsubr + -10 465 -29 callsubr + + + 63 callsubr + endchar + + + -48 callgsubr + -52 458 210 callsubr + + + 78 callsubr + 84 93 266 callgsubr + -57 296 -57 65 callsubr + hintmask 11101000 + -148 485 -24 callgsubr + + + 232 callgsubr + hstem + 40 139 127 456 callsubr + vstem + -107 callgsubr + endchar + + + 232 callgsubr + hstem + 40 139 127 456 callsubr + vstem + -107 callgsubr + 183 567 115 callsubr + + + -25 319 callgsubr + 179 151 vstem + -81 callsubr + endchar + + + -25 319 callgsubr + 179 151 vstem + -81 callsubr + 48 448 115 callsubr + + + -50 0 119 367 306 callsubr + 516 478 callgsubr + -367 -138 vlineto + endchar + + + -50 0 119 384 306 callsubr + 533 -108 hlineto + -45 -28 -44 -17 -69 -13 rrcurveto + -91 119 -384 -138 vlineto + endchar + + + -202 281 279 callsubr + hmoveto + 264 callsubr + hintmask 10100000 + 184 callgsubr + hintmask 01100000 + -66 89 vlineto + endchar + + + -202 543 279 callsubr + 262 345 callsubr + + + -168 21 -21 429 474 callsubr + 578 439 callgsubr + + + -168 21 -21 486 474 callsubr + 635 439 callgsubr + + + -178 21 -21 385 143 hstem + 149 145 vstem + 149 hmoveto + 145 528 -108 hlineto + -43 -25 -41 -15 -63 -12 rrcurveto + -91 110 vlineto + endchar + + + -202 95 279 callsubr + -186 345 callsubr + + + -202 656 279 callsubr + 375 345 callsubr + + + -50 0 119 310 306 callsubr + 459 478 callgsubr + -310 -138 vlineto + endchar + + + 259 -12 72 268 74 141 207 callgsubr + 255 294 callsubr + hintmask 1101100000000000 + 231 callgsubr + hintmask 1110100000000000 + 184 callgsubr + hintmask 1101110010000000 + 437 callsubr + 123 -676 140 callsubr + hintmask 1101101100000000 + 37 callsubr + hintmask 1101110000000000 + -36 -20 -36 -36 -45 vvcurveto + hintmask 1101110010000000 + -61 62 -50 88 vhcurveto + hintmask 1101101100000000 + 26 callgsubr + hintmask 1101110010000000 + 4 callgsubr + + + 268 0 90 -81 -21 325 89 141 207 callgsubr + 270 289 -118 104 hintmask 10101100 + 231 callgsubr + hintmask 10110100 + 184 callgsubr + hintmask 01101100 + -66 89 vlineto + 35 178 callsubr + hintmask 10101110 + -8 -664 rmoveto + 378 callgsubr + hintmask 10101101 + 5 callgsubr + hintmask 10101110 + 379 callgsubr + endchar + + + 231 587 callgsubr + 158 75 153 207 callgsubr + 403 96 hintmask 10010111 + 231 callgsubr + hintmask 10011011 + 184 callgsubr + hintmask 01010111 + -66 89 vlineto + 50 178 callsubr + hintmask 10010111 + 30 -507 rmoveto + 42 81 40 77 33 callsubr + -6 -117 rlineto + -41 vlineto + -157 vmoveto + 96 hlineto + hintmask 00110111 + 87 58 vlineto + hintmask 10010111 + 418 callsubr + vlineto + hintmask 00110111 + 523 callgsubr + + + 578 callsubr + 98 62 90 82 141 207 callgsubr + 434 106 -92 106 hintmask 11101100 + 231 callgsubr + hintmask 11110100 + 184 callgsubr + hintmask 11101101 + -66 89 vlineto + 29 178 callsubr + 131 -676 154 callsubr + hintmask 11101110 + -54 callgsubr + hintmask 11101101 + 92 callgsubr + + + 79 callsubr + + + 93 callsubr + + + 163 callgsubr + + + -23 -12 114 292 114 hstem + 36 142 199 142 vstem + 178 256 rmoveto + 83 39 55 61 22 19 -6 -13 15 vhcurveto + -149 -186 rlineto + -5 19 -2 22 26 vvcurveto + -77 -281 rmoveto + 43 53 rlineto + -26 39 47 -14 48 hhcurveto + 125 116 95 165 72 -22 58 -35 44 hvcurveto + 47 58 -55 43 -44 -54 rlineto + 25 -39 -46 14 -47 hhcurveto + -126 -116 -95 -165 -72 22 -58 35 -43 hvcurveto + -47 -58 rlineto + 232 85 rmoveto + -23 -20 7 13 -15 hvcurveto + 150 186 rlineto + 5 -19 2 -23 -26 vvcurveto + -83 -39 -55 -60 vhcurveto + endchar + + + 78 callsubr + 533 callgsubr + 36 151 -99 92 189 150 -143 92 hintmask 11011010 + -101 callgsubr + hintmask 11101001 + 66 466 -50 callgsubr + hintmask 11010110 + -74 callsubr + hintmask 11101001 + 136 callgsubr + + + 69 callgsubr + + + -193 242 207 -82 82 180 76 -76 84 hstemhm + 42 86.5 -86.5 104 107 106 hintmask 10010110 + 42 242 rmoveto + 104 hlineto + hintmask 01010110 + 94 vlineto + -6 66 rlineto + -22 24 28 -13 29 hhcurveto + 71 67 64 115 100 -50 67 -80 hvcurveto + hintmask 01011010 + -34 -37 -19 -23 -23 hvcurveto + -3 hlineto + hintmask 01101010 + -7 34 rlineto + hintmask 01100110 + -83 hlineto + 154 -256 rmoveto + -16 -17 6 13 -17 hvcurveto + hintmask 01010110 + 475 callgsubr + hvcurveto + hintmask 01100110 + -66 -26 -29 -31 vhcurveto + endchar + + + 58 652 -20 hstem + 39 298 56 147 vstem + 393 -80 rmoveto + 147 732 -147 hlineto + -96 -455 rmoveto + 40 455 -44 hlineto + -139 -115 -55 -168 -153 116 -79 142 hvcurveto + endchar + + + -234 -179 914 hstem + 72 119 vstem + 204 -179 rmoveto + 92 38 rlineto + -73 130 -32 147 142 vvcurveto + 142 32 147 73 130 vhcurveto + -92 38 rlineto + -84 -137 -48 -144 -176 vvcurveto + -176 48 -144 84 -137 vhcurveto + endchar + + + -310 -90 412 callsubr + -90 90 callgsubr + + + -310 172 412 callsubr + 172 90 callgsubr + + + -234 -129 770 hstem + 72 119 vstem + 204 -129 rmoveto + 92 38 rlineto + -73 108 -32 120 119 vvcurveto + 119 32 120 73 108 vhcurveto + -92 38 rlineto + -84 -115 -48 -122 -148 vvcurveto + -147 48 -123 84 -115 vhcurveto + endchar + + + -310 -276 412 callsubr + -276 90 callgsubr + + + -310 285 412 callsubr + 285 90 callgsubr + + + -234 -179 914 561 callgsubr + -179 rmoveto + 84 137 48 144 176 vvcurveto + 176 -48 144 -84 137 vhcurveto + -92 -38 rlineto + 74 -130 32 -147 -142 vvcurveto + -142 -32 -147 -74 -130 vhcurveto + endchar + + + -310 -90 415 callgsubr + -90 107 callgsubr + + + -310 172 415 callgsubr + 172 107 callgsubr + + + -234 -129 770 561 callgsubr + -129 rmoveto + 84 115 48 123 147 vvcurveto + 148 -48 122 -84 115 vhcurveto + -92 -38 rlineto + 74 -108 32 -120 -119 vvcurveto + -119 -32 -120 -74 -108 vhcurveto + endchar + + + -310 -276 415 callgsubr + -276 107 callgsubr + + + -310 285 415 callgsubr + 285 107 callgsubr + + + -1 25 callgsubr + 195 112 131 119 hstem + 48 135 207 139 vstem + 183 194 rmoveto + 75 41 33 56 36 34 -15 -43 29 vhcurveto + -101 -21 -47 -36 -51 hhcurveto + -40 -37 29 58 hvcurveto + 61 -206 rmoveto + 168 117 154 235 178 -77 109 -155 -70 -59 -28 -46 -53 hvcurveto + 63 -91 rlineto + 30 31 33 16 39 hhcurveto + 79 30 -60 -112 hvcurveto + -7 0 -7 -6 vvcurveto + 39 -34 -46 22 -47 hhcurveto + -126 -89 -92 -137 -121 89 -76 107 hvcurveto + endchar + + + 279 -12 82 180 373 callgsubr + 156 102 120 103 hintmask 11011111 + 110 callgsubr + hintmask 10111111 + 22 -344 5 callsubr + 107 -676 -68 callgsubr + endchar + + + -278 -12 447 callgsubr + -12 27 callgsubr + + + -370 -8 353 callsubr + -8 261 callsubr + + + -370 254 353 callsubr + 254 261 callsubr + + + -370 -194 353 callsubr + -194 261 callsubr + + + -370 367 353 callsubr + 367 261 callsubr + + + -278 228 447 callgsubr + 228 27 callgsubr + + + 671 -12 82 180 373 callgsubr + 156 102 120 103 66 102 120 103 hintmask 0101110000000000 + 110 callgsubr + hintmask 1000001000000000 + 22 -344 5 callsubr + hintmask 1010001100000000 + 107 -676 -68 callgsubr + hintmask 1010000011000000 + 391 -82 -68 callgsubr + endchar + + + 591 callgsubr + 212 93 75 91 72 92 hstem + 65 139 vstem + 587 callsubr + 109 96 54 114 19 hvcurveto + 58 91 -59 hlineto + 121 -19 -92 43 -112 hhcurveto + -172 -165 hlineto + -62 -5 rlineto + -85 62 vlineto + 139 163 rmoveto + 25 hlineto + 50 32 -22 -50 12 hvcurveto + -119 hlineto + -166 vmoveto + 75 119 vlineto + -47 -11 -33 -28 -50 hhcurveto + endchar + + + 585 callsubr + -110 234 266 callgsubr + 115 134 115 151 hintmask 11011100 + 302 -177 rmoveto + 134 169 392 callgsubr + hintmask 10111100 + 124 -134 vlineto + hintmask 11011100 + -124 170 callsubr + + + 160 -8 109 287 120 hstemhm + 36 150 118 130 -130 134 113 430 callgsubr + 434 279 rmoveto + 76 21 33 33 39 24 -38 -96 -102 -45 -43 -71 -8 vhcurveto + -1 60 0 60 58 vvcurveto + -130 -456 rmoveto + hintmask 11101100 + 140 hlineto + -3 56 -2 56 -1 57 rrcurveto + 137 7 127 96 169 vvcurveto + 155 -80 89 -129 vhcurveto + hintmask 11110100 + -108 -81 -71 -179 hvcurveto + -157 vlineto + -83 7 -35 55 81 vvcurveto + 68 25 57 50 62 vhcurveto + -122 85 rlineto + -60 -70 -43 -101 -87 vvcurveto + -169 123 -91 145 -6 vhcurveto + endchar + + + 57 25 callgsubr + -95 -21 30 -21 380 116 hstemhm + 126 137 111 138 hintmask 10011100 + 522 -12 rmoveto + 37 33 7 8 19 hvcurveto + -17 108 rlineto + -2 -15 -13 -2 -9 hhcurveto + -29 -16 11 34 23 1 118 6 87 hvcurveto + 93 116 -520 566 callgsubr + -110 108 vlineto + hintmask 00111100 + -110 -12 -137 -24 -133 vhcurveto + hintmask 01011100 + 147 -9 rlineto + 13 131 13 140 118 vvcurveto + 115 hlineto + -83 -4 -110 -29 vvcurveto + hintmask 10011100 + -103 37 -67 111 vhcurveto + endchar + + + 573 callsubr + 210 108 vstem + 210 94 rmoveto + 108 184 176 104 -176 184 -108 -184 -176 -104 176 hlineto + endchar + + + -202 -32 561 callsubr + -161 363 callgsubr + + + -202 533 561 callsubr + 404 363 callgsubr + + + -50 0 104 190 104 hstem + 210 108 vstem + 210 158 rmoveto + 108 136 176 104 -176 168 -108 -168 -176 -104 176 hlineto + -176 -294 rmoveto + 441 callgsubr + + + 132 507 128 hstem + 80 147 256 147 vstem + 80 -120 rmoveto + 147 627 256 -627 147 755 -550 hlineto + endchar + + + 174 -12 115 393 390 callsubr + 55 140 112 134 117 148 hintmask 10111100 + 307 -177 rmoveto + 134 165 hlineto + 173 3 92 103 187 vvcurveto + 78 -14 76 -24 73 vhcurveto + hintmask 11011100 + -142 -31 rlineto + 24 -82 8 -60 -61 vvcurveto + -124 -40 -44 -77 -3 vhcurveto + 525 -134 -525 vlineto + -86 -28 59 63 hvcurveto + 38 2 70 41 vvcurveto + 46 -1 42 -8 34 vhcurveto + -142 85 callsubr + -107 vlineto + -132 63 -113 189 -4 vhcurveto + endchar + + + -5 -163 -21 172 448 callgsubr + 39 151 171 147 hintmask 11011100 + 361 535 callgsubr + 680 -115 hlineto + hintmask 11101100 + -12 -49 rlineto + -4 hlineto + 42 -39 -39 19 -54 457 callsubr + 92 callsubr + 45 47 23 32 33 hvcurveto + -6 -76 rlineto + -81 141 rmoveto + -57 -33 44 98 94 42 44 47 103 callgsubr + hvcurveto + -203 vlineto + 45 callsubr + endchar + + + -193 367 84 178 76 -76 84 hstemhm + 26 106 108 104 hintmask 10111000 + 240 242 rmoveto + 104 hlineto + hintmask 11011000 + 463 -80 vlineto + hintmask 10111000 + -9 -35 rlineto + -2 hlineto + 29 -26 -27 14 -33 hhcurveto + -70 -71 -66 -107 -107 54 -66 84 29 32 15 21 20 hvcurveto + -5 -54 rlineto + -49 102 rmoveto + -38 -21 28 63 60 29 27 29 16 18 -7 -14 16 hvcurveto + -131 vlineto + -20 -16 -14 -6 -19 hhcurveto + endchar + + + -115 507 callsubr + 575 544 callgsubr + hintmask 01101000 + 211 callgsubr + hintmask 01110000 + 64 -243 rmoveto + 51 38 40 52 hvcurveto + hintmask 10110000 + 53 -38 40 -51 -51 -37 -40 -53 vhcurveto + hintmask 01110000 + -52 37 -40 51 vhcurveto + endchar + + + -115 507 callsubr + 462 110 hstemhm + 130 177 -37 141 hintmask 01101000 + 154 231 rmoveto + 129 hlineto + -11 73 139 13 110 vvcurveto + 92 -78 41 -101 -74 -60 -28 -41 -47 vhcurveto + 64 -82 rlineto + 27 34 28 14 36 hhcurveto + 34 23 -16 -27 -59 -134 -34 18 -83 hvcurveto + hintmask 01110000 + 64 -243 rmoveto + 51 38 40 52 hvcurveto + hintmask 10110000 + 53 -38 40 -51 -51 -37 -40 -53 vhcurveto + hintmask 01110000 + -52 37 -40 51 vhcurveto + endchar + + + -115 -186 119 390 405 callgsubr + 344 callgsubr + -27 178 hintmask 10110000 + 232 -186 rmoveto + 78 64 37 54 48 hvcurveto + -81 74 rlineto + -27 -27 -27 -19 -37 hhcurveto + -39 -28 22 41 75 146 57 -20 137 hvcurveto + -128 hlineto + 11 -118 -150 -38 -123 vvcurveto + -119 82 -53 108 vhcurveto + hintmask 11001000 + 13 509 201 callsubr + + + -115 -32 110 277 405 callgsubr + hstemhm + 52 141 -37 178 hintmask 10110000 + 232 -32 rmoveto + 74 59 28 41 47 hvcurveto + -64 83 rlineto + -28 -34 -28 -14 -36 hhcurveto + -34 -23 17 26 59 135 34 -19 83 hvcurveto + -128 hlineto + 10 -73 -139 -13 -110 vvcurveto + -92 78 -41 102 vhcurveto + hintmask 11001000 + 13 387 201 callsubr + + + -41 354 425 callsubr + 94 143 vstem + 110 354 rmoveto + 80 hlineto + 29 199 120 callgsubr + 266 -199 394 callgsubr + + + -41 287 425 callsubr + 94 143 vstem + 110 287 rmoveto + 80 hlineto + 29 199 120 callgsubr + 266 -199 394 callgsubr + + + -41 21 504 callgsubr + 152 85 vstem + 103 -169 -42 callsubr + 269 -64 59 callgsubr + + + -41 338 155 hstem + 55 84 153 84 vstem + 149 338 267 callgsubr + 237 hmoveto + 151 callsubr + + + -107 271 155 hstem + 55 84 153 84 vstem + 149 271 267 callgsubr + 237 hmoveto + 151 callsubr + + + -41 542 504 callgsubr + 152 85 vstem + 103 352 -42 callsubr + 269 -64 59 callgsubr + + + -107 475 504 callgsubr + 152 85 vstem + 103 285 -42 callsubr + 269 -64 59 callgsubr + + + -278 338 155 hstem + 55 84 vstem + 149 338 rmoveto + 151 callsubr + + + -278 271 155 hstem + 55 84 vstem + 149 271 rmoveto + 151 callsubr + + + -278 542 504 callgsubr + vstem + 103 352 59 callgsubr + + + -278 475 504 callgsubr + vstem + 103 285 59 callgsubr + + + -278 21 504 callgsubr + vstem + 103 -169 59 callgsubr + + + -278 354 425 callsubr + vstem + 110 354 394 callgsubr + + + -278 287 425 callsubr + vstem + 110 287 394 callgsubr + + + 134 callgsubr + endchar + + + -306 622 83 -83 91 hstemhm + 42 88 -88 104 hintmask 01010000 + 459 callsubr + 188 hlineto + 44 18 29 15 25 hhcurveto + 13 14 -4 -2 9 hvcurveto + 18 89 rlineto + 4 -9 -13 4 -20 hhcurveto + hintmask 01100000 + -33 -35 -21 -45 -26 hvcurveto + -2 hlineto + hintmask 10100000 + -8 58 rlineto + hintmask 10010000 + -84 hlineto + endchar + + + 134 callgsubr + 194 76 -44 callsubr + + + 10 -80 144 hstem + 27 568 vstem + 277 -80 rmoveto + 102 hlineto + 216 900 rlineto + -98 hlineto + -157 -674 -6 -27 -5 -28 -4 -27 rlinecurve + -4 hlineto + -6 27 -7 28 -8 27 -99 294 rcurveline + -174 -71 26 -69 74 31 rlineto + endchar + + + 501 callsubr + 99 91 40 -20 152 callgsubr + hintmask 10011101 + 334 callsubr + hintmask 11001101 + 137 callgsubr + hintmask 10011101 + 536 callsubr + hintmask 11001110 + 263 callsubr + hintmask 10101110 + -10 87 rlineto + hintmask 10101101 + -120 hlineto + 109 81 -55 callgsubr + + + -116 311 49 116 40 54 43 53 49 hstem + 32 55 63 57 51 62 54 55 vstem + 231 311 rmoveto + 109 89 84 118 118 -89 84 -109 -110 -89 -84 -118 -118 89 -84 110 hvcurveto + 49 vmoveto + -84 -60 60 93 93 60 60 84 84 59 -60 -93 -93 -59 -60 -84 hvcurveto + -81 56 rmoveto + 57 60 29 hlineto + 30 -60 rlineto + 60 hlineto + -41 77 rlineto + 23 11 12 20 23 vvcurveto + 45 -35 21 -46 vhcurveto + -89 hlineto + 57 -97 rmoveto + 54 21 vlineto + 20 10 -12 -14 -15 -10 -13 -20 hvcurveto + endchar + + + -9 -12 45 callgsubr + hstem + 61 138 180 150 vstem + 53 callsubr + endchar + + + -23 564 55 98 55 hstem + 146 89 86 89 vstem + 278 564 rmoveto + -1 callsubr + + + -7 callsubr + endchar + + + -281 367 76 194 76 hstem + 31 96 58 96 vstem + 143 367 rmoveto + 89 49 47 61 59 -47 24 -41 15 hvcurveto + -33 13 -33 7 20 vvcurveto + 14 12 10 23 23 23 -12 -16 24 vhcurveto + 46 62 rlineto + 21 -29 -37 21 -53 hhcurveto + -77 -51 -44 -61 -55 46 -26 42 -17 hvcurveto + 34 -14 32 -8 -19 vvcurveto + -16 -13 -10 -26 -26 -29 11 22 -31 vhcurveto + -45 -65 rlineto + -25 35 49 -19 44 hhcurveto + endchar + + + -7 callsubr + 34 584 -44 callsubr + + + -135 -12 379 callsubr + 69 91 40 -20 10 callgsubr + -53 589 -55 callgsubr + + + -135 -12 379 callsubr + 145 91 10 callgsubr + -161 625 -31 callsubr + + + -50 -84 108 -3 -21 581 109 hstemhm + 37 124 -73 132 80 132 -65 124 hintmask 10110100 + 240 -84 rmoveto + 125 67 68 90 31 -9 25 -14 21 hvcurveto + hintmask 01101010 + 52 32 30 43 58 181 -271 6 71 vvcurveto + 25 18 14 36 35 39 -21 -27 31 vhcurveto + 67 92 rlineto + 32 -41 -62 33 -77 hhcurveto + -112 -66 -63 -90 -35 11 -27 18 -21 hvcurveto + hintmask 10110100 + -49 -30 -31 -48 -50 -188 263 7 -78 vvcurveto + -25 -19 -18 -41 -39 -38 18 33 -32 vhcurveto + hintmask 01110010 + -85 -75 rlineto + hintmask 10110100 + -57 45 76 -27 73 hhcurveto + hintmask 01110010 + -79 421 rmoveto + 24 12 19 23 15 vhcurveto + 78 -40 93 -20 -63 vvcurveto + -27 -11 -18 -23 -14 vhcurveto + -77 41 -95 20 63 vvcurveto + endchar + + + 126 callsubr + + + 591 callgsubr + 511 124 hstem + 159 148 vstem + 159 hmoveto + 148 hlineto + 11 248 21 119 147 178 rrcurveto + 90 -442 -124 285 vlineto + -120 -166 -38 562 callsubr + + + -50 407 callgsubr + 124 hstem + 159 148 vstem + 159 hmoveto + 148 hlineto + 11 255 18 126 150 180 rrcurveto + 91 -442 -124 285 vlineto + -123 -170 -35 -139 -12 -219 rrcurveto + endchar + + + -202 300 375 callgsubr + hmoveto + 55 callgsubr + endchar + + + -202 562 375 callgsubr + 262 183 callgsubr + + + -62 455 123 hstem + 144 148 vstem + 144 -78 rmoveto + 148 hlineto + 11 256 24 128 145 182 rrcurveto + 90 -428 -123 271 vlineto + -118 -171 -41 -144 -12 -218 rrcurveto + endchar + + + -62 21 -21 511 124 hstem + 149 148 vstem + 149 hmoveto + 148 hlineto + 11 248 19 119 145 178 rrcurveto + 90 -428 -124 271 vlineto + -118 -166 -36 562 callsubr + + + -114 21 431 callsubr + hstem + 126 145 vstem + 126 hmoveto + 145 hlineto + 11 206 14 91 133 142 rrcurveto + 89 -396 -120 240 vlineto + -107 -135 -30 -106 -10 -167 rrcurveto + endchar + + + -202 114 375 callgsubr + -186 183 callgsubr + + + -202 675 375 callgsubr + 375 183 callgsubr + + + -50 455 123 hstem + 159 148 vstem + 159 -78 rmoveto + 148 hlineto + 11 251 21 135 147 180 rrcurveto + 90 -442 -123 285 vlineto + -120 -169 -38 -150 -12 -214 rrcurveto + endchar + + + 251 -12 72 268 74 160 90 hstemhm + 97 114 280 294 callsubr + hintmask 10110101 + 97 262 rmoveto + 55 callgsubr + 58 -274 5 callsubr + hintmask 10111001 + 134 -676 140 callsubr + hintmask 11110110 + 37 callsubr + hintmask 10111001 + 206 callsubr + hintmask 11110110 + 26 callgsubr + hintmask 10111001 + 4 callgsubr + + + -5 25 callgsubr + 268 121 -119 119 -110 110 266 callgsubr + 171 140 hintmask 10011100 + 271 -12 rmoveto + 133 94 88 143 75 -28 60 -49 28 hvcurveto + 4 vlineto + hintmask 11001100 + 51 -1 35 -4 54 -6 rrcurveto + hintmask 10011100 + 121 -283 vlineto + -124 -118 -82 -172 -164 106 -90 129 hvcurveto + 2 119 rmoveto + -53 -33 49 86 hvcurveto + hintmask 10101100 + 96 33 39 53 55 30 -65 -78 vhcurveto + hintmask 10011100 + -81 -32 -46 -53 vhcurveto + endchar + + + -50 320 callgsubr + 41 451 callsubr + 275 -36 callsubr + + + -50 -12 110 210 104 133 119 hstem + 41 134 183 135 vstem + 275 308 rmoveto + 48 35 -27 -73 -77 -36 -33 -44 -44 -43 36 113 -12 hvcurveto + 44 25 38 17 33 hhcurveto + 6 -320 rmoveto + 115 97 83 137 140 -81 64 -109 -39 -56 -24 -43 -33 hvcurveto + 150 6 57 50 69 hhcurveto + 37 40 -21 -25 22 hvcurveto + 78 88 rlineto + 41 -41 -61 36 -84 hhcurveto + -134 -123 -107 -237 -236 117 -96 123 hvcurveto + endchar + + + 576 callgsubr + 106 73 71 82 hstem + 36 99 109 96 vstem + 193 176 -70 callgsubr + + + -202 250 82 106 73 71 82 hstem + 36 99 109 96 vstem + 193 438 -70 callgsubr + + + -33 320 callgsubr + 49 451 callsubr + 283 -36 callsubr + + + -16 320 callgsubr + 58 451 callsubr + 292 -36 callsubr + + + -59 -12 107 138 101 90 116 hstem + 54 133 158 132 vstem + 272 233 rmoveto + 41 32 -22 -46 -46 -32 -24 -34 -38 -36 17 75 -14 hvcurveto + 33 20 32 13 29 hhcurveto + 6 -245 rmoveto + 109 90 66 115 115 -75 50 -92 -43 -50 -20 -34 -30 hvcurveto + 108 6 48 36 60 hhcurveto + 35 37 -18 -18 20 hvcurveto + 75 86 rlineto + 35 -38 -57 31 -80 hhcurveto + -124 -115 -92 -193 -193 111 -74 113 hvcurveto + endchar + + + -202 -198 82 106 73 71 82 hstem + 36 99 109 96 vstem + 193 -10 -70 callgsubr + + + -202 363 82 106 73 71 82 hstem + 36 99 109 96 vstem + 193 551 -70 callgsubr + + + -50 320 callgsubr + 41 451 callsubr + 275 -36 callsubr + + + -239 -160 870 hstem + 13 297 vstem + 13 -160 rmoveto + 96 hlineto + 201 870 rlineto + -96 hlineto + endchar + + + 212 callsubr + + + -378 endchar + + + -440 endchar + + + -50 0 124 147 91 166 119 hstemhm + 110 141 -97 129 hintmask 11110000 + 48 hmoveto + 449 124 hlineto + hintmask 11101000 + -259 4 hlineto + 32 36 13 31 48 vvcurveto + 10 -1 9 -1 9 vhcurveto + 129 91 hlineto + hintmask 11110000 + -148 hlineto + -6 24 -5 24 24 328 callsubr + -26 7 -27 9 -27 hvcurveto + -6 hlineto + -68 -5 rlineto + -86 vlineto + hintmask 11101000 + 100 hlineto + 1 -9 1 -9 -9 vvcurveto + -71 -46 -55 -60 -27 vhcurveto + endchar + + + -44 -120 124 507 124 hstem + 26 499 vstem + 26 -120 rmoveto + 499 124 -317 4 hlineto + 175 249 -168 250 rlineto + 4 286 124 -464 -87 vlineto + 196 -291 -207 -290 rlineto + endchar + + + 450 callsubr + hstem + 85 147 vstem + -47 callgsubr + endchar + + + -319 367 81 176 79 -79 81 hstemhm + 57 104 hintmask 10110000 + 173 367 rmoveto + 34 24 6 6 19 hvcurveto + -18 74 rlineto + -5 -10 -10 0 -10 hhcurveto + -24 -17 15 37 hvcurveto + 124 77 81 -77 vlineto + hintmask 11010000 + 85 -87 vlineto + -12 -85 -50 -4 rlineto + hintmask 10110000 + -77 45 -126 vlineto + -77 33 -54 83 vhcurveto + endchar + + + -86 25 callgsubr + 274 115 hstem + 172 139 vstem + 311 -12 rmoveto + 43 38 8 9 32 hvcurveto + -19 110 rlineto + -6 -22 -16 -2 -18 hhcurveto + -23 -15 11 34 59 1 84 4 86 hvcurveto + 150 115 -366 hlineto + -74 496 callsubr + 146 -223 vlineto + -103 35 -67 104 vhcurveto + endchar + + + 450 callsubr + 52 80 -80 222 hstemhm + 85 147 45 74 -74 91 hintmask 11101010 + 337 callgsubr + 199 vlineto + hintmask 11101100 + 119 115 -119 467 callsubr + hlineto + -17 -132 -76 496 callsubr + 68 -201 vlineto + hintmask 11101010 + 270 callgsubr + 24 560 rmoveto + 63 hlineto + hintmask 11011010 + 275 callsubr + + + -29 25 callgsubr + 197 97 193 119 hstem + 48 144 166 143 vstem + 576 callsubr + 135 91 120 244 244 -91 117 -135 -136 -91 -117 -244 -244 91 -120 136 hvcurveto + 606 vmoveto + 43 34 -36 -157 6 hvcurveto + -166 hlineto + 157 6 34 36 43 hhcurveto + -487 vmoveto + -43 -34 40 157 -6 hvcurveto + 166 hlineto + -157 -6 -34 -40 -43 hhcurveto + endchar + + + -5 -163 -21 172 45 callgsubr + 193 -20 hstem + 65 147 171 151 vstem + 65 535 callgsubr + 145 hlineto + -4 74 rlineto + -30 34 35 -17 48 hhcurveto + 107 102 98 170 153 -77 99 -125 -45 -44 -19 -30 -35 hvcurveto + 4 71 rlineto + 171 -147 vlineto + 226 -593 270 callsubr + 352 callgsubr + -102 -41 -44 -51 hvcurveto + endchar + + + 67 callsubr + + + -50 25 callgsubr + 174 104 163 116 hstemhm + 311 148 -127 147 hintmask 11101000 + 243 -12 rmoveto + 128 108 69 120 84 -53 54 -73 21 530 callsubr + 69 29 37 50 67 vvcurveto + 114 -88 64 -131 -78 -64 -31 -50 -58 vhcurveto + 74 -90 rlineto + 35 40 34 20 45 hhcurveto + 50 28 -26 -47 -54 -36 -36 -114 hvcurveto + -104 vlineto + hintmask 11101000 + 138 33 -36 -58 -52 -41 -28 -62 -54 -47 27 37 -38 hvcurveto + -68 -93 rlineto + -54 46 72 -36 103 hhcurveto + endchar + + + -202 -12 316 callsubr + -12 -26 callsubr + + + -202 250 316 callsubr + 250 -26 callsubr + + + 61 callgsubr + + + 67 callsubr + + + -83 -12 113 117 100 111 111 hstemhm + 282 145 -127 146 hintmask 11101000 + 225 -12 rmoveto + 120 101 55 101 67 -48 42 -66 18 hvcurveto + 3 vlineto + hintmask 11110000 + 62 26 33 38 51 vvcurveto + 97 -81 54 -124 -69 -61 -25 -44 -54 vhcurveto + 72 -88 rlineto + 30 36 33 16 39 hhcurveto + 43 21 -18 -32 -38 -32 -23 -100 hvcurveto + -100 vlineto + hintmask 11101000 + 124 26 -24 -40 -33 -33 -20 -45 -55 -44 23 30 -35 hvcurveto + -66 -91 rlineto + -47 43 76 -28 84 hhcurveto + endchar + + + -202 -198 316 callsubr + -198 -26 callsubr + + + -202 363 316 callsubr + 363 -26 callsubr + + + 61 callgsubr + + + 271 -12 72 190 82 -4 74 28 322 callsubr + 174 294 callsubr + hintmask 1101101010100000 + 445 callgsubr + hintmask 1101110010100000 + -54 callgsubr + hintmask 1101101010100000 + 27 callsubr + -51 34 57 -28 68 hhcurveto + 19 298 callgsubr + hintmask 1101101100100000 + 104 -676 140 callsubr + hintmask 1011101011000000 + 37 callsubr + hintmask 1101101100100000 + 206 callsubr + hintmask 1011101011000000 + 26 callgsubr + hintmask 1101101100100000 + 4 callgsubr + + + 240 587 callgsubr + 93 82 -17 75 40 62 90 82 hstemhm + 214 106 -92 106 321 96 hintmask 1001011011000000 + 183 350 callgsubr + hintmask 1001011101000000 + -54 callgsubr + hintmask 1001011011000000 + 27 callsubr + -51 34 57 -28 68 hhcurveto + hintmask 0101011011000000 + 24 298 callgsubr + hintmask 1000111011000000 + 16 -507 rmoveto + 42 81 40 77 33 callsubr + -6 -117 rlineto + -41 vlineto + -157 vmoveto + 96 hlineto + hintmask 0011011011000000 + 87 58 vlineto + hintmask 1000111011000000 + 418 callsubr + vlineto + hintmask 0011011011000000 + 523 callgsubr + + + -23 573 390 callgsubr + 88 92 196 92 hintmask 10110000 + 344 39 callgsubr + + + -23 555 238 hstem + 224 177 vstem + 322 555 115 callsubr + + + -459 652 -20 hstem + -12 153 vstem + 81 440 rmoveto + 44 callgsubr + + + 104 362 525 callsubr + -87 87 hstemhm + 91 95 130 88 167 88 hintmask 01011110 + 91 362 rmoveto + 95 227 87 87 -269 -87 87 hlineto + 225 -227 rmoveto + 88 96 hlineto + -11 321 callgsubr + hintmask 01101110 + 57 165 33 callsubr + hintmask 10001110 + -11 -115 rlineto + -96 88 vlineto + hintmask 01101110 + 314 -109 vlineto + -38 -99 -23 -66 rlineto + -4 hlineto + hintmask 01011110 + -22 66 -39 99 rlineto + -108 hlineto + endchar + + + 299 -80 807 hstem + 47 783 vstem + 830 727 rmoveto + -783 -2 hlineto + 390 -805 33 callsubr + 389 805 rlineto + endchar + + + 299 -60 807 336 callsubr + endchar + + + -50 476 callsubr + 37 hmoveto + 447 124 -128 hlineto + -30 -44 568 callsubr + 103 108 100 114 107 vvcurveto + 122 -85 80 -125 449 callsubr + 34 32 35 31 46 hhcurveto + 55 35 -34 -62 -90 -114 -109 -162 -153 hvcurveto + endchar + + + -50 0 124 424 116 hstem + 313 140 vstem + 37 hmoveto + 447 124 -127 hlineto + -29 -45 568 callsubr + 106 106 96 124 114 vvcurveto + 123 -85 81 -125 449 callsubr + 33 32 35 31 46 hhcurveto + 55 35 -34 -63 -96 -109 -119 -167 -152 hvcurveto + endchar + + + -202 0 262 callgsubr + hmoveto + 378 callgsubr + hintmask 11010000 + 5 callgsubr + hintmask 10100000 + 379 callgsubr + endchar + + + -202 262 262 callgsubr + 262 rmoveto + 378 callgsubr + hintmask 11010000 + 5 callgsubr + hintmask 10100000 + 379 callgsubr + endchar + + + -60 0 124 351 115 hstem + 301 141 vstem + 45 hmoveto + 422 124 -97 hlineto + -30 -44 568 callsubr + 109 103 69 79 94 vvcurveto + 118 -82 80 -122 -90 -54 -34 -67 -62 vhcurveto + 79 -79 rlineto + 33 32 30 32 47 hhcurveto + 53 28 -34 -55 -82 -95 563 callgsubr + + + -52 476 callsubr + 45 hmoveto + 430 124 -111 hlineto + -29 -45 568 callsubr + 100 108 95 114 107 vvcurveto + 122 -80 80 -125 -91 -60 -33 -68 -64 vhcurveto + 80 -79 rlineto + 34 32 37 31 46 hhcurveto + 55 30 -34 -62 -90 -109 -109 -159 -153 hvcurveto + endchar + + + -96 0 121 306 113 hstem + 277 139 vstem + 38 hmoveto + 397 121 -92 hlineto + -28 -41 -2 -4 -29 hvcurveto + 82 72 89 93 91 vvcurveto + 100 -76 69 -115 -76 -65 -27 -59 -58 vhcurveto + 78 -77 rlineto + 24 28 33 26 42 hhcurveto + 45 25 -22 -48 -71 -100 -90 -139 -113 hvcurveto + endchar + + + -202 -186 262 callgsubr + -186 rmoveto + 378 callgsubr + hintmask 11010000 + 5 callgsubr + hintmask 10100000 + 379 callgsubr + endchar + + + -202 375 262 callgsubr + 375 rmoveto + 378 callgsubr + hintmask 11010000 + 5 callgsubr + hintmask 10100000 + 379 callgsubr + endchar + + + -50 0 124 351 115 hstem + 308 140 vstem + 37 hmoveto + 447 124 -116 hlineto + -29 -44 -4 -4 -33 hvcurveto + 109 103 77 79 94 vvcurveto + 118 -83 80 -122 449 callsubr + 33 32 35 32 47 hhcurveto + 51 33 -34 -55 -82 -110 563 callgsubr + + + 271 -12 82 98 62 32 90 -32 82 173 89 hstemhm + 47 289 -118 104 368 106 -92 106 hintmask 1010010010000000 + 545 callgsubr + 589 callgsubr + 5 callgsubr + hintmask 1010010010000000 + 379 callgsubr + 167 -332 5 callsubr + 93 -676 154 callsubr + hintmask 1101001100000000 + -54 callgsubr + hintmask 1110001010000000 + 27 callsubr + hintmask 1010010010000000 + -51 34 57 -28 68 hhcurveto + endchar + + + -23 callgsubr + endchar + + + -195 367 87 -79 79 hstemhm + 39 103 97 104 hintmask 10110000 + 144 367 rmoveto + 45 35 26 24 23 hvcurveto + 2 hlineto + hintmask 01110000 + 11 -42 rlineto + 83 330 -104 hlineto + hintmask 10110000 + -220 vlineto + -21 -19 -17 -10 -19 hhcurveto + -36 -6 19 40 hvcurveto + 192 -103 -205 vlineto + -80 31 -53 74 vhcurveto + endchar + + + 104 350 77 -65 525 callsubr + -66 77 hstemhm + 24 87 168 88 52 98 hintmask 01000111 + 24 362 rmoveto + 87 96 hlineto + hintmask 00110111 + -10 321 callgsubr + 56 165 33 callsubr + hintmask 01000111 + -10 -115 rlineto + -96 88 vlineto + hintmask 00110111 + 314 -109 vlineto + -39 -99 -22 372 callgsubr + hintmask 10001111 + 557 -326 rmoveto + 44 37 16 33 28 hvcurveto + -48 56 rlineto + -18 -17 -15 -10 -24 hhcurveto + -38 -31 28 64 61 32 30 37 22 15 -9 -15 14 hvcurveto + 47 57 rlineto + 25 -21 -36 19 -47 hhcurveto + -84 -77 -64 -108 -108 74 -57 88 hvcurveto + endchar + + + 141 362 71 -71 525 callsubr + -71 71 hstemhm + 24 87 168 88 65 96 88 98 hintmask 0100011110000000 + 24 362 rmoveto + 87 96 hlineto + hintmask 0011011110000000 + -10 321 callgsubr + 56 165 33 callsubr + hintmask 0100011110000000 + -10 -115 rlineto + -96 88 vlineto + hintmask 0011011110000000 + 314 -109 vlineto + -39 -99 -22 372 callgsubr + hintmask 1000111110000000 + 408 -314 rmoveto + 122 hlineto + 98 62 54 107 105 -62 48 -103 hvcurveto + -117 hlineto + 96 -243 rmoveto + 172 19 vlineto + 44 25 -20 -62 -65 -25 -25 -44 hvcurveto + endchar + + + -23 callgsubr + 81 584 -44 callsubr + + + 75 callsubr + 96 92 442 callgsubr + -91 84 157 147 -134 84 hintmask 10111010 + -23 callsubr + hintmask 01111010 + 129 callgsubr + hintmask 10111010 + -328 vlineto + -88 callsubr + hintmask 01110101 + 71 584 -39 callgsubr + + + 75 callsubr + 177 91 442 callgsubr + 461 callgsubr + hintmask 10111100 + -23 callsubr + hintmask 01111100 + 129 callgsubr + hintmask 10111100 + -328 vlineto + -88 callsubr + hintmask 01111100 + -112 625 -31 callsubr + + + 75 callsubr + 93 143 442 callgsubr + -103 358 callgsubr + -109 147 hintmask 10111001 + -23 callsubr + hintmask 01111001 + 129 callgsubr + hintmask 10111001 + -328 vlineto + -88 callsubr + hintmask 01110110 + -38 581 -83 callsubr + + + -23 callgsubr + 61 584 -29 callsubr + + + 74 callsubr + endchar + + + -23 callgsubr + 19 577 210 callsubr + + + 75 callsubr + 116 93 442 callgsubr + -70 70 150 76 -76 147 hintmask 10111001 + -23 callsubr + hintmask 01111001 + 129 callgsubr + hintmask 10111001 + -328 vlineto + -88 callsubr + hintmask 01110110 + -77 604 -24 callgsubr + + + -78 -140 83 hstem + 12 476 vstem + 12 -140 579 callsubr + + + 249 callsubr + 28 102 -44 102 327 callsubr + -30 95 188 130 -112 95 hintmask 1110010100000000 + -86 callgsubr + hintmask 1111010010000000 + 71 704 -6 callsubr + hintmask 1110101100000000 + -38 callgsubr + hintmask 1111010010000000 + 148 callgsubr + + + 174 callgsubr + 42 406 callsubr + 46 149 -73 95 172 129 -95 95 hintmask 1111010100000000 + -79 callsubr + 65 594 rmoveto + hintmask 1111010010000000 + -41 callgsubr + hintmask 1110101100000000 + -38 callgsubr + hintmask 1111010100000000 + 148 callgsubr + + + 102 callgsubr + 65 102 -38 102 231 callsubr + -94 92 148 127 -79 92 -82 140 hintmask 1111001100000100 + 73 callsubr + hintmask 1111001001010000 + -43 callgsubr + hintmask 1110101010010000 + 43 callgsubr + hintmask 1111001001010000 + 101 callsubr + hintmask 1111001100010000 + -46 -26 -25 -33 -41 vvcurveto + hintmask 1111001100000100 + 324 callsubr + hintmask 1110101010010000 + 28 callgsubr + hintmask 1111010100000100 + 1 callsubr + 72 692 rmoveto + hintmask 1111010010001000 + -52 callgsubr + hintmask 1111001000110000 + -74 callsubr + hintmask 1111010100000100 + 136 callgsubr + + + 237 callsubr + 533 callgsubr + 39 149 -90 92 171 147 -122 92 hintmask 1101011010000000 + 99 callgsubr + hintmask 1110011010000000 + 403 callsubr + hintmask 1101011010000000 + -92 callgsubr + hintmask 1101101001000000 + 74 442 -50 callgsubr + hintmask 1101010110000000 + -74 callsubr + hintmask 1101101001000000 + 136 callgsubr + + + -5 -223 95 283 0 callsubr + hstem + 184 107 vstem + 298 16 callsubr + 23 13 22 27 22 hvcurveto + -54 45 rlineto + -54 -39 -39 507 callgsubr + 63 vhcurveto + -68 553 -105 callsubr + 77 28 -89 callgsubr + + + -75 -223 95 149 85 callgsubr + hstem + 152 108 vstem + 267 130 callgsubr + 23 13 22 27 22 hvcurveto + -54 45 rlineto + -54 -39 -40 -51 -61 216 callsubr + -59 478 -103 callgsubr + 79 42 -89 callgsubr + + + -51 381 callgsubr + 114 -102 102 289 117 344 callgsubr + -41 99 80 147 hintmask 11010110 + 248 38 callgsubr + hvcurveto + hintmask 10110110 + 27 13 31 19 23 vhcurveto + 16 22 22 19 23 14 rrcurveto + 4 hlineto + -99 callsubr + hintmask 11011010 + 462 callsubr + hintmask 11010110 + -25 -22 -28 -38 -47 300 callgsubr + hintmask 11011010 + -8 312 -80 callsubr + 46 470 -44 callsubr + + + 31 callsubr + 30 464 -44 callsubr + + + 89 callgsubr + -17 903 -89 callgsubr + + + 289 callsubr + -54 107 hintmask 01111000 + 77 hmoveto + hintmask 11110100 + 165 hlineto + -33 -23 -39 -52 -54 260 callgsubr + 34 45 15 20 25 vhcurveto + 478 callsubr + 29 21 33 35 28 hvcurveto + 113 114 hlineto + hintmask 01111000 + -62 callsubr + 181 42 -89 callgsubr + + + -60 -210 87 328 238 callgsubr + hstem + 172 99 85 125 vstem + 278 38 callgsubr + 32 20 35 53 12 hvcurveto + 41 9 39 16 39 25 -49 89 rcurveline + -22 -36 -34 -11 -37 hhcurveto + -66 -50 33 72 -13 hvcurveto + 297 hlineto + 3 12 3 27 26 vvcurveto + 135 -70 103 -141 -119 -115 -99 -161 -142 82 -91 114 -22 vhcurveto + -32 -26 -28 -41 -45 300 callgsubr + -101 512 rmoveto + 63 10 40 31 46 hhcurveto + 59 24 -39 -55 hvcurveto + -78 270 -44 callsubr + + + 60 417 callgsubr + 293 callsubr + 327 callsubr + 158 105 -10 130 hintmask 10111101 + -86 callgsubr + -102 -227 288 callsubr + endchar + + + -2 417 callgsubr + 232 callsubr + hstemhm + 46 149 117 105 -28 129 hintmask 10111101 + -79 callsubr + -106 -227 288 callsubr + endchar + + + 102 callgsubr + 60 54 74 59 231 callsubr + 1 105 40 127 -69 140 hintmask 1111001100001000 + 73 callsubr + hintmask 1111001001010000 + -43 callgsubr + hintmask 1110101010010000 + 43 callgsubr + hintmask 1111001001010000 + 101 callsubr + hintmask 1111001100010000 + -46 -26 -25 -33 -41 vvcurveto + hintmask 1111001100001000 + 324 callsubr + hintmask 1110101010010000 + 28 callgsubr + hintmask 1111001100001000 + 1 callsubr + hintmask 1111011000110000 + 52 687 274 callgsubr + + + 237 callsubr + 60 54 74 59 hstemhm + 39 149 5 105 63 147 hintmask 1101111010000000 + 99 callgsubr + hintmask 1110111010000000 + 403 callsubr + hintmask 1101111010000000 + -92 callgsubr + hintmask 1101110110000000 + 54 437 274 callgsubr + + + 147 callgsubr + 65 85 127 callgsubr + 75 157 callsubr + + + 283 callsubr + 45 85 316 callgsubr + 146 573 -48 callsubr + + + 271 callgsubr + 79 85 150 callgsubr + 74 274 callsubr + + + 271 callsubr + 96 92 hstemhm + -31 84 12 147 11 84 394 callsubr + hintmask 11111100 + 73 76 -39 callgsubr + + + -277 -223 95 -95 1117 hstemhm + 42 108 -73 73 -73 147 hintmask 10100000 + 397 callgsubr + hintmask 10010000 + 332 callgsubr + hintmask 01001000 + 503 callgsubr + 260 callsubr + -652 vlineto + hintmask 10100000 + 476 callgsubr + -15 903 -89 callgsubr + + + 88 callsubr + -16 903 -89 callgsubr + + + 129 callsubr + -16 793 -89 callgsubr + + + -302 -210 87 -87 1036 152 callsubr + 1 782 -44 callsubr + + + 24 -182 116 87 468 callsubr + 209 callgsubr + 154 455 callsubr + 260 callsubr + hlineto + 271 -834 rmoveto + 135 43 91 109 hvcurveto + 634 -148 -638 371 callgsubr + -109 rlineto + -8 488 callgsubr + + + 24 -169 116 74 -21 528 -20 209 callgsubr + 154 455 callsubr + 491 callsubr + 271 -697 rmoveto + 135 43 467 callgsubr + 498 -148 -501 vlineto + -56 -13 -24 -40 -13 -12 2 4 -13 vhcurveto + -27 -109 rlineto + -7 488 callgsubr + + + -24 382 callsubr + 650 253 callsubr + 121 458 callgsubr + hintmask 11010100 + 150 callsubr + hintmask 11100100 + 73 391 callgsubr + 174 -765 82 callgsubr + hintmask 11011000 + 104 765 rmoveto + -106 callsubr + + + 36 527 callgsubr + 652 -20 209 callgsubr + 98 105 vstem + 243 callsubr + 153 -891 64 callgsubr + + + -23 527 callgsubr + 528 -20 209 callgsubr + 83 105 vstem + 77 hmoveto + 147 147 hlineto + 56 64 124 -211 rlineto + 157 hlineto + -197 312 167 216 rlineto + -159 hlineto + -144 -194 rlineto + -4 309 callgsubr + 138 -767 64 callgsubr + + + -30 527 callgsubr + 496 -20 225 -20 hstem + 65 143 75 105 vstem + 61 callsubr + 126 -940 64 callgsubr + + + -60 242 callsubr + 52 124 528 -20 209 callgsubr + 56 105 vstem + 77 hmoveto + 405 124 -258 491 callsubr + 111 -891 64 callgsubr + + + -107 242 callsubr + 52 120 408 488 callsubr + 30 105 hintmask 10111000 + 77 454 callgsubr + 408 -147 hlineto + 85 -767 rmoveto + hintmask 11111100 + -84 callsubr + + + -292 417 callgsubr + 119 -98 -21 33 -21 701 -20 389 callsubr + -59 105 hintmask 10010110 + 293 callgsubr + hintmask 10100110 + -3 callgsubr + hintmask 10010110 + 308 callsubr + hintmask 10001110 + -139 -227 rmoveto + hintmask 11001101 + -84 callsubr + + + -302 242 callsubr + 389 callsubr + -85 105 hintmask 10100000 + 344 callsubr + 431 callgsubr + -30 -940 rmoveto + hintmask 11010000 + -84 callsubr + + + 87 242 callsubr + 52 84 callgsubr + hstemhm + 77 140 118 105 8 140 hintmask 1001011010000000 + 524 callgsubr + hintmask 1001101010000000 + 13 callgsubr + 589 callsubr + 18 callgsubr + hlineto + 166 -891 rmoveto + hintmask 1101011110000000 + -84 callsubr + + + 28 242 callsubr + 52 317 callgsubr + 86 105 -9 135 hintmask 1001011010000000 + 455 callgsubr + hintmask 1001101010000000 + 12 callsubr + 589 callsubr + 17 callsubr + hlineto + 129 -767 rmoveto + hintmask 1101011100000000 + -84 callsubr + + + -6 -239 59 74 54 73 171 callsubr + 64 105 -16 147 hintmask 10101101 + 334 callsubr + hintmask 10110101 + -30 callgsubr + hintmask 11101110 + 325 callgsubr + 119 -735 64 callgsubr + + + 88 -12 137 -116 -21 33 -21 537 127 -12 -20 hstemhm + 77 142 -142 147 245 151 hintmask 10010101 + 412 -12 rmoveto + 142 66 111 232 243 -96 90 -128 -67 -60 -29 -53 -50 hvcurveto + hintmask 00101101 + 70 vlineto + hintmask 00101011 + -142 -652 147 hlineto + hintmask 10010011 + 455 vlineto + 53 33 54 29 41 hhcurveto + 73 44 -56 -150 -169 -34 -37 -40 -17 -13 4 5 -11 hvcurveto + hintmask 01001011 + -32 -127 rlineto + hintmask 10010101 + -13 20 39 -6 31 hhcurveto + endchar + + + 87 -182 116 533 185 hstemhm + 77 140 227 144 -140 140 hintmask 11101000 + 414 -182 rmoveto + 129 45 91 109 hvcurveto + 634 -140 -230 vlineto + 18 callgsubr + -652 490 callgsubr + 77 -12 87 -6 72 vhcurveto + 4 hlineto + 64 -142 rlineto + hintmask 11110000 + 170 -325 rlineto + 7 hlineto + -36 -13 -30 -39 -14 403 callgsubr + -26 -109 rlineto + hintmask 11101000 + -8 20 550 callgsubr + + + 24 -12 121 -100 -21 33 -21 419 121 -12 -20 hstemhm + 77 142 -142 147 185 151 hintmask 10010101 + 369 -12 rmoveto + 132 59 98 181 197 -85 76 -109 -56 -48 -22 -43 -43 hvcurveto + hintmask 00101101 + 53 vlineto + hintmask 00101011 + -142 -528 147 hlineto + hintmask 10010011 + 352 vlineto + 49 27 39 18 31 hhcurveto + 56 32 -43 -109 -133 -26 -25 -31 -13 -9 2 4 -11 hvcurveto + hintmask 01001011 + -30 -109 rlineto + hintmask 10010101 + -12 17 36 -6 27 hhcurveto + endchar + + + 28 -169 112 413 172 496 callgsubr + 175 142 -135 135 hintmask 11101000 + 367 -169 rmoveto + 121 41 85 94 hvcurveto + 518 -135 -145 vlineto + 17 callsubr + -528 380 callgsubr + 66 -11 84 -7 61 vhcurveto + 4 hlineto + 57 -125 rlineto + hintmask 11110000 + 130 -231 rlineto + 2 hlineto + -37 -12 -20 -31 -10 -10 2 3 -11 vhcurveto + -25 -106 rlineto + hintmask 11101000 + -5 18 23 -6 38 hhcurveto + endchar + + + -6 382 callsubr + 102 -21 383 125 -12 -20 540 callgsubr + 335 291 callsubr + 305 vlineto + hintmask 11101100 + 124 -46 76 -108 -67 -50 -35 -40 -42 vhcurveto + -4 hlineto + hintmask 11011100 + 333 callgsubr + -496 147 hlineto + hintmask 11101100 + 462 callgsubr + -290 371 callgsubr + -108 rlineto + hintmask 11011100 + -8 488 callgsubr + + + 256 callsubr + 33 85 hstem + 46 151 290 -97 callsubr + 582 278 callgsubr + + + 71 callsubr + 47 85 58 callgsubr + -4 478 -48 callsubr + + + 78 callsubr + 64 92 266 callgsubr + -78 84 170 84 -78 150 hintmask 11110010 + -101 callgsubr + hintmask 11101100 + 465 267 callsubr + + + 35 527 callgsubr + 235 117 183 117 46 callgsubr + 93 105 -3 144 hintmask 10111101 + 224 352 128 callsubr + -75 -591 288 callsubr + -137 180 rmoveto + 119 callgsubr + hintmask 10111101 + 81 callsubr + endchar + + + -17 -239 59 74 54 73 371 callsubr + 71 105 -29 139 hintmask 10111101 + 224 275 127 callsubr + -75 -514 288 callsubr + -115 180 rmoveto + 341 callsubr + hintmask 10111101 + 26 callsubr + endchar + + + -180 527 callgsubr + 379 219 callgsubr + -87 105 hintmask 1010010100000000 + 334 callsubr + hintmask 1011000100000000 + 137 callgsubr + hintmask 1010010100000000 + 536 callsubr + hintmask 1011001000000000 + 263 callsubr + hintmask 1010101000000000 + -10 87 rlineto + hintmask 1010100100000000 + -120 hlineto + -32 -735 rmoveto + hintmask 1110010010000000 + -84 callsubr + + + -22 -239 59 192 -21 546 127 hstemhm + 61 149 60 105 -4 430 callgsubr + 178 -239 rmoveto + hintmask 11111000 + 78 callgsubr + 22 52 rlineto + hintmask 11110100 + 128 16 73 86 97 vvcurveto + 92 -50 53 -79 32 vhcurveto + -84 34 rlineto + -56 23 -43 14 40 vvcurveto + 37 32 22 51 52 40 -19 -33 43 vhcurveto + 75 93 rlineto + 56 -56 -79 30 -75 hhcurveto + -136 -96 -86 -108 -95 64 -56 67 -27 hvcurveto + 85 -36 rlineto + 57 -24 37 -13 -41 vvcurveto + -39 -30 -24 -61 -54 -60 28 40 -47 vhcurveto + -84 -101 rlineto + hintmask 11111000 + 55 -52 72 -31 72 -8 -41 -85 rcurveline + 96 callgsubr + + + -74 -239 59 192 -21 435 115 hstemhm + 64 147 33 105 -27 148 hintmask 11111000 + 152 -239 rmoveto + 78 callgsubr + 22 51 rlineto + hintmask 11110100 + 111 14 64 68 86 vvcurveto + 93 -63 34 -77 27 vhcurveto + -55 20 rlineto + -39 14 -25 13 24 vvcurveto + 29 21 14 36 45 42 -20 -27 39 vhcurveto + 72 94 rlineto + 34 -46 -62 34 -86 hhcurveto + -124 -84 -66 -100 -82 66 -43 72 -26 hvcurveto + 56 -21 rlineto + 37 -14 27 -15 -28 vvcurveto + -26 -19 -19 -42 -54 -53 23 37 -49 vhcurveto + -70 -99 rlineto + hintmask 11111000 + 44 -36 62 -27 68 -8 -42 -85 rcurveline + 96 callgsubr + + + -135 -239 59 192 -21 408 518 callgsubr + hintmask 11110100 + 116 -239 rmoveto + hintmask 11111000 + 78 callgsubr + 23 52 rlineto + hintmask 11110100 + 101 15 54 64 78 vvcurveto + 91 -71 35 -63 23 vhcurveto + -51 19 -44 12 32 vvcurveto + 25 19 14 38 34 35 -16 -26 35 vhcurveto + 66 88 rlineto + 32 -42 -57 31 -76 hhcurveto + -114 -76 -63 -92 -82 69 -41 60 -23 hvcurveto + 51 -20 50 -15 -33 vvcurveto + -26 -19 -16 -44 -42 -41 18 34 -45 vhcurveto + -66 -92 rlineto + hintmask 11111000 + 40 -33 57 -25 55 -8 -42 -85 rcurveline + 96 callgsubr + + + -22 -239 59 201 -21 528 124 hstemhm + 204 148 -87 105 hintmask 11110000 + 204 hmoveto + hintmask 11101000 + 30 258 callgsubr + 32 528 179 124 -506 495 callgsubr + hlineto + endchar + + + -87 -239 59 201 431 callsubr + hstemhm + 172 147 -85 105 hintmask 11110000 + 172 hmoveto + hintmask 11101000 + 31 258 callgsubr + 30 408 147 120 -441 -120 147 hlineto + endchar + + + -195 -239 59 168 115 -94 -21 30 -21 384 115 hstemhm + 85 147 -9 105 hintmask 10011100 + 131 -239 rmoveto + hintmask 10101010 + 78 callgsubr + 21 49 40 2 30 9 23 7 rlinecurve + hintmask 11001100 + 305 callsubr + 119 115 -119 467 callsubr + vlineto + -17 -132 -76 496 callsubr + 68 -201 vlineto + hintmask 10011100 + -92 31 -67 75 -24 vhcurveto + hintmask 10011010 + -45 -91 rlineto + 96 callgsubr + + + -22 21 -21 267 97 164 124 hstem + 204 148 vstem + 204 hmoveto + 148 267 118 97 -118 164 179 124 -506 495 callgsubr + -164 -24 hlineto + -94 -5 rlineto + -92 118 vlineto + endchar + + + -87 21 -21 195 96 117 120 hstem + 172 147 vstem + 492 callsubr + 195 118 96 -118 117 147 120 -441 -120 147 -117 -24 hlineto + -94 -6 rlineto + -90 118 vlineto + endchar + + + -195 -12 115 97 94 -94 97 84 115 hstemhm + 85 389 callgsubr + 337 callgsubr + 18 119 97 -119 84 119 115 -119 467 callsubr + vlineto + -17 -132 -76 496 callsubr + 68 vlineto + hintmask 11011000 + -85 vlineto + -68 -4 rlineto + hintmask 10111000 + -92 68 -20 548 callgsubr + + + 87 -223 95 -95 1117 511 callsubr + 10 108 110 142 hintmask 10111000 + 203 callgsubr + hintmask 01101000 + 368 callgsubr + hintmask 10111000 + -31 -27 -29 -45 -47 216 callsubr + -24 903 -89 callgsubr + + + 72 callgsubr + -24 793 -89 callgsubr + + + -10 381 callgsubr + 125 -113 113 442 callgsubr + -42 100 92 147 hintmask 10101100 + 271 230 callgsubr + -9 -14 -6 -13 hhcurveto + -21 -20 11 27 25 9 26 21 24 hvcurveto + 16 22 26 24 33 30 rrcurveto + 3 hlineto + 11 -66 142 callsubr + hintmask 11010100 + -328 vlineto + -88 callsubr + 1 1 0 2 hhcurveto + hintmask 11001100 + -25 -22 -28 -38 -47 vvcurveto + hintmask 10101100 + 564 callgsubr + 24 782 -44 callsubr + + + -7 -12 120 -87 -21 339 121 70 97 -97 171 389 callsubr + 171 151 hintmask 10101110 + 325 -12 rmoveto + 107 102 93 153 134 -75 92 -120 -46 -47 -22 -33 -38 hvcurveto + 4 76 rlineto + 49 169 vlineto + hintmask 01110110 + 97 -169 vlineto + hintmask 01101110 + 74 -147 -75 vlineto + -68 -5 rlineto + -91 68 -530 115 vlineto + hintmask 10101110 + 12 53 33 callsubr + -43 39 46 -22 44 hhcurveto + -34 120 270 callsubr + 155 vlineto + 31 28 27 13 30 hhcurveto + 59 27 -40 -67 -82 -41 -42 -51 hvcurveto + endchar + + + 76 callgsubr + + + 100 callsubr + + + -50 -96 115 288 107 133 117 -18 -20 hstemhm + 30 464 -291.5 141 hintmask 11011000 + 116 -96 rmoveto + hintmask 11100100 + 136 39 95 119 14 hvcurveto + 23 189 rlineto + 115 107 -103 hlineto + 7 55 rlineto + 47 5 23 31 45 hhcurveto + 20 14 -7 -4 12 hvcurveto + hintmask 11011000 + 28 110 590 callsubr + 9 -20 -41 9 -25 hhcurveto + -132 -55 -60 -147 -16 hvcurveto + -5 -43 rlineto + -13 566 callgsubr + -101 75 vlineto + -17 -146 -12 -114 -18 -26 -47 -2 rlinecurve + -15 1 -15 2 -14 6 -20 -109 rcurveline + hintmask 11011000 + -9 15 32 -6 39 hhcurveto + endchar + + + 249 callsubr + -4 -20 63 115 327 callsubr + 218 124 -89 130 hintmask 11101101 + 365 -12 rmoveto + 91 79 35 44 45 hvcurveto + 300 -238 -120 108 -112 vlineto + -13 -16 -27 -7 -27 hhcurveto + -122 -61 78 134 131 71 79 101 hvcurveto + hintmask 11101110 + 56 34 -18 -23 33 hvcurveto + 77 95 rlineto + -16 20 -14 18 26 vvcurveto + 31 21 17 30 11 7 -3 -4 10 vhcurveto + 26 109 rlineto + 7 -20 -24 6 -41 hhcurveto + -91 -53 -64 -77 hvcurveto + hintmask 11011110 + -6 1 -5 -6 vvcurveto + hintmask 11101101 + 3 -16 -18 1 -18 hhcurveto + -174 -144 301 callgsubr + 140 -115 179 hvcurveto + endchar + + + 174 callgsubr + 20 112 hstemhm + 46 149 165 122 -93 129 hintmask 11101010 + 326 -12 rmoveto + 78 73 27 38 41 hvcurveto + 251 -214 -102 85 -83 vlineto + -9 -13 -18 -5 -21 hhcurveto + -97 -45 59 96 103 57 57 78 hvcurveto + hintmask 11101100 + 44 26 -11 -19 28 hvcurveto + hintmask 11111100 + 79 87 rlineto + -12 11 -13 17 19 vvcurveto + 26 18 10 25 9 4 -1 -3 9 vhcurveto + 26 103 rlineto + 7 -20 -22 6 -38 hhcurveto + -85 -48 -59 -67 hvcurveto + -3 0 -2 -3 vvcurveto + hintmask 11101100 + 1 -10 -10 1 -11 hhcurveto + -154 -129 -101 -179 hvcurveto + hintmask 11101010 + -183 125 -89 155 vhcurveto + endchar + + + -117 211 97 81 97 hstem + 161 147 vstem + 161 hmoveto + 147 211 124 97 -124 81 124 97 -124 215 -147 -215 -56 hlineto + -77 -5 rlineto + -92 133 -81 -56 vlineto + -77 -5 rlineto + -92 133 vlineto + endchar + + + -330 -12 185 hstemhm + 35 178 -161.5 145 hintmask 10100000 + 76 231 rmoveto + 96 hlineto + 22 306 5 164 327 callgsubr + 5 -164 rlineto + hintmask 11000000 + 70 192 callsubr + endchar + + + -5 -37 callsubr + 50 66 -67 callsubr + 7 245 callgsubr + + + 33 callgsubr + 64 66 hstem + -6 516 vstem + -103 callsubr + 9 64 -81 callgsubr + + + 18 callsubr + 69 91 40 -20 355 callgsubr + hintmask 10111110 + 29 callsubr + hintmask 01111110 + -100 callgsubr + hintmask 10111110 + -88 callgsubr + hintmask 01111010 + -39 475 -55 callgsubr + + + -38 callsubr + 69 91 256 callgsubr + hintmask 10011110 + -33 callsubr + hintmask 01101110 + 19 callgsubr + hintmask 10011110 + -102 callsubr + -69 469 -55 callgsubr + + + 147 callgsubr + 70 66 127 callgsubr + -5 245 callgsubr + + + 283 callsubr + 50 66 316 callgsubr + 66 578 -81 callgsubr + + + 271 callgsubr + 84 66 150 callgsubr + -6 64 -81 callgsubr + + + 271 callsubr + 101 91 40 -20 264 callgsubr + -2 81 -55 callgsubr + + + 256 callsubr + 38 66 hstem + 46 151 290 -97 callsubr + -80 587 -81 callgsubr + + + 71 callsubr + 52 66 58 callgsubr + -84 483 -81 callgsubr + + + 78 callsubr + 69 91 40 -20 -34 callgsubr + -75 470 -55 callgsubr + + + 269 callsubr + 70 66 hstem + 251 callsubr + vstem + -94 callgsubr + -82 714 -81 callgsubr + + + 185 callgsubr + 84 66 hstem + 526 callsubr + vstem + -87 callsubr + -82 604 -81 callgsubr + + + 75 callsubr + 101 91 40 -20 442 callgsubr + 461 callgsubr + hintmask 10111110 + -23 callsubr + hintmask 01111110 + 129 callgsubr + hintmask 10111110 + -328 vlineto + -88 callsubr + hintmask 01111110 + -4 589 -55 callgsubr + + + 541 callsubr + 49 69 423 callsubr + hintmask 1111100001000000 + -94 callgsubr + hintmask 1111010001000000 + -113 712 330 callgsubr + hintmask 1111010010000000 + -40 172 rmoveto + 302 69 -302 hlineto + 262 -241 rmoveto + 420 callgsubr + hintmask 1111010010000000 + 555 callsubr + vhcurveto + endchar + + + 341 callgsubr + 49 69 420 callsubr + hintmask 1111100001000000 + -87 callsubr + hintmask 1111010001000000 + -113 602 330 callgsubr + hintmask 1111010010000000 + -40 172 rmoveto + 302 69 -302 hlineto + 262 -241 rmoveto + 420 callgsubr + hintmask 1111010010000000 + 555 callsubr + vhcurveto + endchar + + + 75 callsubr + 95 123 62 69 442 callgsubr + -93 430 callsubr + -99 147 hintmask 1011110010000000 + -23 callsubr + hintmask 0111110010000000 + 129 callgsubr + hintmask 1011110010000000 + -328 vlineto + -88 callsubr + hintmask 0111101100000000 + -38 583 rmoveto + -66 callsubr + -39 185 rmoveto + 296 69 -296 hlineto + 257 -254 rmoveto + 130 callsubr + + + 541 callsubr + 423 callsubr + hintmask 1111000010000000 + -94 callgsubr + hintmask 1110100010000000 + -113 712 330 callsubr + 119 125 rmoveto + 124 489 callsubr + -145 rlineto + hintmask 1111000100000000 + 166 -164 135 callsubr + + + 341 callgsubr + 420 callsubr + hintmask 1111000010000000 + -87 callsubr + hintmask 1110100010000000 + -113 602 330 callsubr + 119 125 rmoveto + 124 489 callsubr + -145 rlineto + hintmask 1111000100000000 + 166 -164 135 callsubr + + + 75 callsubr + 95 123 442 callgsubr + -93 430 callsubr + -99 147 hintmask 10111001 + -23 callsubr + hintmask 01111001 + 129 callgsubr + hintmask 10111001 + -328 vlineto + -88 callsubr + hintmask 01110110 + -38 583 rmoveto + -66 callsubr + 116 142 rmoveto + 100 117 -78 52 -78 -133 rlineto + 158 -178 rmoveto + 130 callsubr + + + 541 callsubr + 31 68 423 callsubr + hintmask 1111100001000000 + -94 callgsubr + -65 866 121 callsubr + + + 341 callgsubr + 31 68 420 callsubr + hintmask 1111100001000000 + -87 callsubr + -65 756 121 callsubr + + + 75 callsubr + 95 123 43 71 442 callgsubr + -93 430 callsubr + -99 147 hintmask 1011110010000000 + -23 callsubr + hintmask 0111110010000000 + 129 callgsubr + hintmask 1011110010000000 + -328 vlineto + -88 callsubr + hintmask 0111101100000000 + 13 749 rmoveto + 116 hlineto + 92 92 -48 44 -100 -65 rlineto + -4 hlineto + -100 65 -48 -44 rlineto + 41 -258 -10 callsubr + + + 541 callsubr + 423 callsubr + hintmask 1111000010000000 + -94 callgsubr + hintmask 1110100010000000 + -113 712 330 callsubr + 103 125 rmoveto + 63 39 -95 145 -92 -57 rlineto + hintmask 1111000100000000 + 243 -252 135 callsubr + + + 341 callgsubr + 420 callsubr + hintmask 1111000010000000 + -87 callsubr + hintmask 1110100010000000 + -113 602 330 callsubr + 103 125 rmoveto + 63 39 -95 145 -92 -57 rlineto + hintmask 1111000100000000 + 243 -252 135 callsubr + + + 75 callsubr + 95 123 442 callgsubr + -93 430 callsubr + -99 147 hintmask 10111001 + -23 callsubr + hintmask 01111001 + 129 callgsubr + hintmask 10111001 + -328 vlineto + -88 callsubr + hintmask 01110110 + -38 583 rmoveto + -66 callsubr + 102 142 rmoveto + 56 36 -78 133 -78 -52 rlineto + 216 -259 rmoveto + 130 callsubr + + + 267 0 124 25 114 11 24 callgsubr + -111 111 71 94 hstemhm + 386 147 -144 302 hintmask 10110110 + 303 356 rmoveto + hintmask 11101110 + 26 57 26 64 27 64 rrcurveto + 4 -278 -125 hlineto + hintmask 10110110 + -275 -263 rmoveto + 155 hlineto + hintmask 11110110 + 68 149 rlineto + 177 hlineto + hintmask 10110110 + -149 407 124 -260 150 211 123 -211 131 250 124 -487 vlineto + hintmask 10110101 + 93 71 68 callsubr + + + 163 0 114 -7 105 3 345 callgsubr + 83 94 hstemhm + 304 302 -275 147 hintmask 10111010 + 267 281 rmoveto + 20 41 19 49 21 50 rrcurveto + 4 hlineto + hintmask 01011010 + -209 -96 vlineto + hintmask 10111010 + -249 -212 rmoveto + 152 hlineto + hintmask 01011010 + 49 107 rlineto + 144 hlineto + hintmask 10111010 + -107 357 114 -210 101 170 107 -170 92 200 114 -437 vlineto + hintmask 10111100 + 63 440 callsubr + + + 279 callgsubr + 84 93 hstemhm + 47 140 76 296 -236 134 167 125 hintmask 0110111011000000 + -21 callsubr + hintmask 0111011011000000 + 168 callgsubr + hintmask 0110111011000000 + -83 57 -66 90 vhcurveto + hintmask 1010111011000000 + 110 callsubr + hintmask 0110111101000000 + -361 297 -24 callgsubr + + + 106 -223 95 139 -21 547 505 callgsubr + 44 108 138 151 vstem + 356 151 callgsubr + -34 74 rlineto + -7 -9 108 callsubr + 30 24 42 53 16 hvcurveto + 128 39 84 108 184 290 callsubr + -197 103 -124 154 -18 vhcurveto + -34 -28 -28 -46 -45 216 callsubr + -14 338 338 callgsubr + + + 57 callsubr + endchar + + + 106 -223 95 665 505 callgsubr + 44 108 138 151 vstem + 356 151 callgsubr + -34 74 rlineto + -7 -9 108 callsubr + 30 24 42 53 16 hvcurveto + 128 39 84 108 184 290 callsubr + -197 103 -124 154 -18 vhcurveto + -34 -28 -28 -46 -45 216 callsubr + -14 338 rmoveto + -89 -56 83 469 callgsubr + 56 78 89 89 56 -78 -130 -131 -56 -83 -89 hvcurveto + -10 565 -89 callgsubr + + + 57 callsubr + -14 461 -89 callgsubr + + + -23 -210 87 135 -21 398 517 callgsubr + hintmask 11101100 + 221 callgsubr + hintmask 11110100 + 444 callsubr + hintmask 11101100 + -32 -26 -26 -42 -42 300 callgsubr + hintmask 11110100 + -8 317 261 callgsubr + + + -23 -210 87 512 517 callgsubr + hintmask 11011000 + 221 callgsubr + hintmask 01101000 + 444 callsubr + hintmask 11011000 + -32 -26 -26 -42 -42 300 callgsubr + hintmask 01101000 + -8 317 rmoveto + -61 -30 55 86 86 30 55 61 60 31 -55 -86 -86 -31 -55 -60 hvcurveto + 10 465 -44 callsubr + + + 249 callsubr + 25 callsubr + -10 692 -89 callgsubr + + + 123 callgsubr + -16 582 -89 callgsubr + + + -20 callsubr + 16 691 -44 callsubr + + + 237 callsubr + 360 callgsubr + hintmask 11101100 + 403 callsubr + hintmask 11011100 + -92 callgsubr + 18 441 -44 callsubr + + + -30 callsubr + 271 28 -22 callsubr + + + -29 callgsubr + 245 42 -22 callsubr + + + -6 373 callsubr + 537 callsubr + hintmask 10111000 + 334 callsubr + hintmask 11011000 + -30 callgsubr + hintmask 10111000 + 325 callgsubr + 238 76 -29 callsubr + + + -5 callsubr + 234 30 -89 callgsubr + + + 20 callsubr + 204 42 -89 callgsubr + + + -2 callsubr + -203 277 -44 callsubr + + + -22 417 callgsubr + 168 callsubr + hstemhm + 61 149 60 105 -4 151 hintmask 10111010 + -87 callgsubr + -98 -227 rmoveto + hintmask 11111100 + -84 callsubr + + + -74 417 callgsubr + 343 callsubr + hstemhm + 64 147 50 105 -44 148 hintmask 10111010 + 254 -12 rmoveto + -95 callsubr + -85 -227 rmoveto + hintmask 11111100 + -84 callsubr + + + -135 417 callgsubr + 109 302 518 callgsubr + hintmask 10111010 + -85 callgsubr + -95 -227 rmoveto + hintmask 11111100 + -84 callsubr + + + -22 527 callgsubr + 528 124 hstemhm + 204 148 -86 105 hintmask 10111000 + 56 callgsubr + -30 -767 277 callgsubr + + + -87 527 callgsubr + 408 120 hstemhm + 172 147 -84 105 hintmask 10111000 + 56 callsubr + -29 -647 277 callgsubr + + + -195 417 callgsubr + 418 callgsubr + hstemhm + 85 147 -9 105 hintmask 10111000 + -47 callgsubr + -125 -227 277 callgsubr + + + -300 382 callsubr + 577 -20 hstem + 66 147 vstem + 139 callsubr + endchar + + + 50 0 105 57 94 -94 97 51 87 149 106 hstemhm + 100 148 175 141 -109 141 hintmask 10111101 + 100 hmoveto + 242 hlineto + 142 112 62 138 92 -49 52 -93 18 hvcurveto + 4 vlineto + hintmask 11011110 + 77 19 33 55 55 vvcurveto + 118 -105 39 -135 vhcurveto + -224 -393 566 callgsubr + hintmask 10111110 + -91 74 vlineto + 148 235 rmoveto + 149 70 vlineto + 68 37 -20 -48 -50 -35 -31 -71 hvcurveto + -69 -292 rmoveto + 57 126 97 -126 51 82 vlineto + hintmask 10111101 + 81 44 -30 -69 -69 -45 -37 -80 hvcurveto + endchar + + + -8 0 82 38 93.5 -93.5 96 37 77 116 82 hstemhm + 101 148 130 133 -107 133 hintmask 10111101 + 101 hmoveto + 216 hlineto + 122 99 45 109 81 -40 45 -77 15 hvcurveto + 4 vlineto + hintmask 11011110 + 64 16 27 47 42 vvcurveto + 98 -94 26 -117 vhcurveto + -200 -312 hlineto + -75 -5 rlineto + hintmask 10111110 + -91 75 vlineto + 148 210 rmoveto + 116 53 vlineto + 53 24 -17 -38 -35 -21 -26 -56 hvcurveto + -53 -248 rmoveto + 38 97 96 -97 37 53 vlineto + hintmask 10111101 + 71 32 -26 -58 -55 -33 -32 -70 hvcurveto + endchar + + + -44 -12 117 289 102 -102 114 hstemhm + 58 147 139 141 hintmask 10111000 + 277 -12 rmoveto + 73 69 27 38 60 hvcurveto + -52 97 rlineto + -27 -48 -38 -18 -42 hhcurveto + -63 -27 28 42 -4 hvcurveto + 197 22 83 68 107 vvcurveto + 78 -50 58 -85 -66 -52 -29 -44 -39 vhcurveto + -4 hlineto + hintmask 11011000 + -11 61 rlineto + -120 -278 hlineto + hintmask 10111000 + -153 78 -77 141 vhcurveto + -72 277 rmoveto + 77 vlineto + 33 28 28 19 33 hhcurveto + 29 21 -15 -30 -39 -34 -30 -105 -15 hvcurveto + endchar + + + -4 -12 419 callgsubr + 120 71 callgsubr + 256 callgsubr + hintmask 01011100 + 242 -12 rmoveto + 55 49 31 35 33 hvcurveto + 4 hlineto + hintmask 10101100 + -43 18 36 -23 60 hhcurveto + 28 21 7 5 16 hvcurveto + -17 441 callsubr + -7 -2 0 -4 hhcurveto + -14 -10 10 31 hvcurveto + 348 -115 vlineto + hintmask 01011100 + -102 callsubr + endchar + + + -4 67 callgsubr + 120 -119 119 hstemhm + 66 147 172 150 hintmask 10101100 + 326 -12 rmoveto + 108 101 98 170 153 -73 99 -120 -56 -53 -29 -37 -38 hvcurveto + -3 hlineto + hintmask 01011100 + 44 -18 -37 22 -59 hhcurveto + -29 -21 -7 -5 -16 hvcurveto + 18 -109 rlineto + 2 6 3 0 4 hhcurveto + 13 10 -10 -31 hvcurveto + -348 115 vlineto + hintmask 10101100 + 12 49 33 callsubr + -42 40 47 -19 42 hhcurveto + -34 120 rmoveto + -25 -27 8 24 -27 hvcurveto + 203 vlineto + 31 29 26 14 30 hhcurveto + 59 28 -45 -89 -102 -41 -44 -52 hvcurveto + endchar + + + -5 -12 120 -87 -21 371 121 105 116 0 -20 hstemhm + 65 144 -144 147 171 151 hintmask 10110101 + 325 -12 rmoveto + 107 102 94 166 148 -75 96 -120 -46 -47 -22 -33 -38 hvcurveto + 2 67 350 callsubr + hintmask 01101011 + 27 108 rlineto + hintmask 01110011 + 343 callgsubr + -149 -55 -98 -115 hvcurveto + -500 115 vlineto + hintmask 10110011 + 12 52 33 callsubr + hintmask 10110101 + -42 39 46 -22 44 hhcurveto + hintmask 10110011 + -34 120 270 callsubr + 187 vlineto + 31 28 27 13 30 hhcurveto + 59 27 -42 -83 -97 -41 -41 -51 hvcurveto + endchar + + + 447 callsubr + hstem + 281 151 vstem + 186 -12 rmoveto + 137 109 95 165 167 -111 93 -129 -70 -56 -23 -30 -38 hvcurveto + 70 -95 rlineto + 21 24 20 8 33 hhcurveto + 61 45 -55 -86 -86 -48 -55 -63 -33 -31 16 20 -26 hvcurveto + -57 -96 rlineto + -43 48 61 -16 54 hhcurveto + endchar + + + -102 -12 112 75 97 124 112 hstem + 36 142 184 106 vstem + 327 175 rmoveto + 22 13 -12 -20 -23 -24 -20 -38 -26 -23 8 14 -19 hvcurveto + 34 32 33 19 30 hhcurveto + -199 -248 rmoveto + 10 33 12 30 13 27 rrcurveto + -19 37 44 -10 47 hhcurveto + 111 66 68 87 79 -49 50 -76 -54 -54 -26 -51 -50 hvcurveto + -5 16 -2 18 19 vvcurveto + 91 49 57 76 23 25 -9 -20 24 vhcurveto + 64 88 128 callgsubr + -75 23 -60 38 -44 hvcurveto + -18 -32 -16 -37 -15 -40 rrcurveto + endchar + + + -5 382 callsubr + 69 45 callgsubr + 205 480 callsubr + hintmask 11111100 + 528 -196 rmoveto + 37 269 callgsubr + -9 -3 -10 hhcurveto + -31 -12 22 49 hvcurveto + 723 -147 -181 vlineto + 220 callgsubr + 92 callsubr + hvcurveto + hintmask 11111010 + 46 44 23 32 35 hvcurveto + -1 -88 rlineto + hintmask 11111100 + -80 51 -71 111 vhcurveto + -248 304 rmoveto + -57 -33 44 98 94 42 44 47 103 callgsubr + hvcurveto + -203 vlineto + 45 callsubr + endchar + + + 426 callgsubr + 90 115 -10 480 callsubr + hintmask 10101110 + -33 callsubr + hintmask 01110110 + 10 -49 rlineto + 120 526 hlineto + 49 15 23 38 7 6 -1 -2 7 vhcurveto + hintmask 01101110 + 26 108 rlineto + hintmask 01110101 + 6 -17 -20 4 -32 hhcurveto + -126 -46 -79 -96 hvcurveto + 1 -82 213 callsubr + hvcurveto + hintmask 10101110 + 16 callgsubr + endchar + + + -60 -12 112 105 97 94 521 callsubr + 235 -12 rmoveto + 142 105 96 164 161 -104 99 -120 -142 -80 -103 -135 -26 4 -27 2 -12 hvcurveto + 297 hlineto + -72 -13 -44 -33 -67 hhcurveto + -38 -38 11 22 -36 hvcurveto + -48 -89 rlineto + -35 51 70 -21 59 hhcurveto + -73 314 rmoveto + 55 32 39 59 48 32 -31 -63 8 vhcurveto + endchar + + + 100 callgsubr + + + -232 367 79 63 59 66 79 hstem + 21 88 115 98 vstem + 164 367 rmoveto + 85 73 68 105 105 -64 68 -96 -40 -44 -13 -25 -36 hvcurveto + 36 -61 rlineto + 14 24 22 6 25 hhcurveto + 43 23 -22 -44 8 hvcurveto + -196 hlineto + -4 -14 -2 -9 -18 vvcurveto + -84 44 -76 99 vhcurveto + -1 79 rmoveto + -39 -15 28 35 hvcurveto + 115 hlineto + -44 -5 -24 -19 -32 hhcurveto + endchar + + + 149 -12 110 96 84 118 112 hstem + 346 136 60 74 vstem + 253 -12 rmoveto + 135 94 112 140 20 -1 18 -3 18 hvcurveto + 64 27 286 callsubr + -166 -67 rlineto + 76 -37 -71 47 -100 hhcurveto + -55 -67 -14 -36 -54 hvcurveto + 49 -95 rlineto + 21 34 36 12 37 hhcurveto + 50 35 -19 -42 19 hvcurveto + -292 -118 rlineto + -121 7 64 -108 146 hhcurveto + -86 178 rmoveto + 179 75 rlineto + -5 0 -5 -5 vvcurveto + -75 -38 -53 -55 -44 -32 25 43 -10 vhcurveto + endchar + + + -116 446 callsubr + 46 566 callsubr + hintmask 11110000 + 269 -12 rmoveto + 62 52 11 39 60 hvcurveto + -58 93 rlineto + -22 -36 -36 -9 -30 hhcurveto + -54 -39 21 35 35 24 14 52 hvcurveto + 84 97 hlineto + hintmask 11101000 + -68 hlineto + -46 -23 15 29 30 25 20 41 36 28 -10 -18 33 hvcurveto + 54 95 rlineto + 30 -49 -52 15 -58 hhcurveto + -107 -95 -43 -99 -40 25 -45 56 -17 hvcurveto + -4 vlineto + hintmask 11110000 + -61 -15 -43 -37 -67 vvcurveto + -100 110 -53 113 vhcurveto + endchar + + + -102 446 callsubr + 263 566 callsubr + hintmask 11101000 + 216 -12 rmoveto + 109 105 53 100 67 -43 37 -61 15 530 callsubr + 56 17 25 45 40 vvcurveto + 99 -89 43 -103 -62 -55 -15 -30 -52 vhcurveto + 54 -95 rlineto + 18 33 29 10 36 hhcurveto + 42 23 -20 -30 -29 -22 -15 -47 hvcurveto + -67 -97 hlineto + hintmask 11101000 + 83 hlineto + 52 24 -14 -35 -35 -38 -21 -55 -30 -36 9 22 -36 hvcurveto + -58 -93 rlineto + -39 64 54 -11 65 hhcurveto + endchar + + + -12 446 callsubr + 36 151 77 154 -63 566 callsubr + hintmask 11110010 + 301 -12 rmoveto + 113 108 53 100 hvcurveto + hintmask 11111000 + 67 -43 37 -61 15 vhcurveto + 4 vlineto + hintmask 11110100 + 56 17 25 45 40 vvcurveto + 99 -92 43 -108 -138 -125 -87 -175 vhcurveto + hintmask 11110010 + -172 119 -86 146 vhcurveto + 112 vmoveto + -70 -44 44 102 104 42 46 66 hvcurveto + hintmask 11110100 + 34 26 -20 -30 -29 -20 -15 -41 hvcurveto + hintmask 11111000 + -30 -97 hlineto + hintmask 11110010 + 46 hlineto + 46 22 -14 -35 -35 -32 -21 -45 hvcurveto + endchar + + + -224 382 callsubr + 286 230 callsubr + 194 -20 hstemhm + 103 389 callgsubr + 73 291 callsubr + 202 84 97 -84 194 -147 vlineto + hintmask 11011000 + -194 vlineto + -87 -5 rlineto + hintmask 10111000 + -92 87 -206 51 callgsubr + endchar + + + 142 callgsubr + 120 40 116 312 callsubr + -143 143 hintmask 11111100 + 99 callgsubr + 464 vlineto + 47 11 24 30 16 7 -2 -4 9 vhcurveto + 26 108 rlineto + 6 -17 -23 8 -29 hhcurveto + hintmask 11111010 + -128 -45 -83 -81 hvcurveto + -44 vlineto + 32 -34 -33 20 537 callgsubr + -99 -152 -143 80 -101 123 hvcurveto + hintmask 11111100 + 46 44 20 30 33 hvcurveto + -4 -62 rlineto + -51 -2 -30 -38 -73 hhcurveto + -40 -50 11 26 -46 hvcurveto + -49 -96 rlineto + 62 callgsubr + 160 callsubr + hvcurveto + -178 vlineto + 299 callsubr + endchar + + + 142 callgsubr + 120 -12 -20 360 callgsubr + 403 callsubr + hintmask 11101100 + -11 -46 rlineto + -4 hlineto + 41 -37 -40 17 537 callgsubr + -99 -152 -143 80 -101 123 46 44 20 30 33 hvcurveto + -4 -62 rlineto + -51 -3 -29 -38 -73 hhcurveto + -40 -50 11 26 -46 hvcurveto + -49 -96 rlineto + hintmask 11011100 + 62 callgsubr + hvcurveto + hintmask 11101100 + 160 callsubr + vhcurveto + -178 vlineto + hintmask 11011100 + 299 callsubr + endchar + + + -61 -12 112 99 98 99 112 hstem + 36 149 165 125 vstem + 288 -12 rmoveto + 77 69 28 37 41 hvcurveto + 244 -209 -98 84 -85 vlineto + -9 -13 -18 -5 -20 hhcurveto + -68 -46 53 93 104 57 46 59 45 21 -15 -21 30 hvcurveto + 66 88 rlineto + 34 -43 -46 26 -83 hhcurveto + -130 -125 -94 -168 -176 121 -82 131 hvcurveto + endchar + + + -55 -211 92 hstem + 110 120 70 119 vstem + 265 -211 rmoveto + 94 60 58 84 49 -19 38 -43 73 hvcurveto + 154 405 406 callgsubr + -65 -208 -13 -42 -13 -31 -12 -46 310 callgsubr + 46 -13 31 -13 42 -64 208 432 callgsubr + 159 -405 rlineto + -42 -72 -19 -39 -49 vvcurveto + -84 61 -58 94 vhcurveto + 92 vmoveto + -21 -14 17 26 28 9 29 22 44 hvcurveto + 5 hlineto + 24 -44 10 -29 -28 vvcurveto + -26 -14 -17 -21 vhcurveto + endchar + + + -9 -12 112 289 119 hstem + 88 137 119 138 vstem + 285 -12 rmoveto + 119 78 69 103 53 -36 74 -70 61 hvcurveto + 26 29 27 15 33 hhcurveto + 17 17 -4 -8 13 hvcurveto + 41 105 rlineto + 15 -20 -38 11 -34 hhcurveto + -50 -59 -20 -59 -67 hvcurveto + 59 -68 -58 20 -51 hhcurveto + -34 -38 -11 -15 -20 hvcurveto + 42 -105 rlineto + 8 12 16 4 18 hhcurveto + 31 29 -15 -26 30 hvcurveto + -71 -61 -35 -74 -53 vvcurveto + -103 77 -69 120 vhcurveto + 112 vmoveto + -39 -21 27 40 37 23 44 37 34 hvcurveto + 36 -34 23 -44 -37 vvcurveto + -40 -21 -27 -38 vhcurveto + endchar + + + -6 -12 125 hstem + 60 147 537 callsubr + vstem + 360 535 callgsubr + 680 -147 -328 hlineto + -40 -29 -25 -15 -37 hhcurveto + -43 -19 23 71 hvcurveto + 289 -147 -308 vlineto + -124 46 -76 108 68 48 33 40 37 vhcurveto + -7 -94 rlineto + endchar + + + -7 21 -21 366 126 105 116 0 -20 408 callgsubr + hintmask 11100110 + 344 callsubr + 318 428 callsubr + -71 hvcurveto + -273 147 292 400 callgsubr + vhcurveto + hintmask 11101010 + -67 -49 -35 -34 -37 hvcurveto + 5 81 350 callsubr + hintmask 11010110 + 27 108 rlineto + hintmask 11100110 + 343 callgsubr + -149 -55 -98 -115 hvcurveto + endchar + + + -7 382 callsubr + 447 126 105 116 408 callgsubr + hintmask 11101100 + 335 291 callsubr + 289 400 callgsubr + vhcurveto + hintmask 11110100 + -67 -49 -35 -34 -37 hvcurveto + 5 81 350 callsubr + 27 108 rlineto + 343 callgsubr + hintmask 11101100 + -149 -55 -98 -115 hvcurveto + -500 147 318 vlineto + 283 callgsubr + -71 hvcurveto + -274 371 callgsubr + 556 callgsubr + 488 callgsubr + + + -224 21 -21 205 230 callsubr + 194 -20 93 154 hstemhm + 94 285 callsubr + hintmask 10110010 + 104 hmoveto + 147 205 83 97 -83 309 callgsubr + hintmask 11010010 + -194 -1 vlineto + -87 -5 rlineto + hintmask 10110010 + -92 88 vlineto + hintmask 10111100 + 73 364 rmoveto + -106 callsubr + + + -224 205 230 callsubr + hstemhm + 104 147 hintmask 01100000 + 104 hmoveto + 147 205 83 97 -83 309 callgsubr + hintmask 10100000 + -194 -1 vlineto + -87 -5 rlineto + hintmask 01100000 + -92 88 vlineto + endchar + + + -292 25 callgsubr + hstem + 65 147 vstem + 200 348 callgsubr + 348 -147 -342 vlineto + 548 callsubr + + + -183 356 callgsubr + hstem + 124 147 vstem + 52 hmoveto + 291 115 -72 266 72 115 -291 -115 72 -266 -72 hlineto + endchar + + + -151 25 callgsubr + 178 101 -38 102 hstemhm + -12 92 60 147 61 92 hintmask 10101000 + 275 348 callgsubr + hintmask 11001100 + 141 vlineto + -3 13 15 -1 15 hhcurveto + 443 callsubr + -9 -9 2 2 -9 hvcurveto + 311 -147 vlineto + hintmask 10111000 + -255 vlineto + 3 -13 -14 1 -15 437 callgsubr + 8 9 -1 -3 8 hvcurveto + -190 vlineto + hintmask 10101000 + 548 callsubr + + + -140 282 98 60 71 hstem + -5 89 76 147 vstem + 135 380 rmoveto + -33 -18 11 19 19 11 11 19 27 19 -23 -36 hvcurveto + -1 vlineto + -380 vmoveto + 147 282 116 98 -116 321 -147 -211 hlineto + 13 -16 -19 8 -25 hhcurveto + -62 -43 -45 -60 -69 46 -55 107 hvcurveto + 12 hlineto + endchar + + + -292 382 callsubr + hstem + 65 147 vstem + 232 -196 rmoveto + 36 269 callgsubr + -8 -3 -10 hhcurveto + -32 -11 22 49 hvcurveto + 711 -147 -707 vlineto + -104 39 -86 128 vhcurveto + endchar + + + 45 -196 119 458 115 hstem + 65 147 243 147 vstem + 344 callsubr + 381 192 hlineto + -135 -200 48 -71 rlineto + 9 22 9 3 27 hhcurveto + 49 31 -34 -59 -67 -38 -39 -52 -42 -33 25 28 -29 hvcurveto + -66 -91 rlineto + -43 43 58 -38 87 hhcurveto + 118 101 82 146 90 -32 84 -122 19 hvcurveto + 131 193 rlineto + 78 -367 205 -147 vlineto + endchar + + + 279 -12 125 -113 113 hstemhm + 63 147 146 147 146 389 callgsubr + 218 -12 rmoveto + 66 47 38 46 43 hvcurveto + -54 25 42 -30 70 hhcurveto + 65 45 35 41 41 hvcurveto + 3 hlineto + hintmask 01111000 + 11 -64 142 callsubr + hintmask 10111000 + -335 vlineto + 238 callsubr + vhcurveto + endchar + + + 279 -12 125 hstem + 63 147 146 147 146 147 vstem + 649 535 callgsubr + 680 -147 -335 hlineto + 238 callsubr + 66 47 38 46 43 vhcurveto + -54 25 42 -30 70 hhcurveto + 59 41 26 46 45 hvcurveto + -7 -93 rlineto + endchar + + + 279 382 callsubr + 102 171 callsubr + 145 147 146 147 hintmask 11011110 + 628 -196 rmoveto + 129 40 467 callgsubr + 305 vlineto + hintmask 11101110 + 124 -48 76 -107 -66 -46 -38 -45 -44 vhcurveto + 53 -25 -42 30 -70 hhcurveto + -65 -44 -35 -41 -41 hvcurveto + -4 590 callgsubr + -10 64 rlineto + -120 -496 147 hlineto + hintmask 11101110 + 335 vlineto + 32 31 29 16 24 299 callgsubr + -289 147 335 vlineto + 32 32 28 16 25 299 callgsubr + -290 vlineto + -55 -10 -25 -34 -11 -10 3 4 -10 vhcurveto + -26 -108 rlineto + hintmask 11011110 + -8 19 24 -6 36 hhcurveto + endchar + + + 346 callgsubr + 45 -196 rmoveto + 127 40 86 104 hvcurveto + 341 -37 callgsubr + hintmask 11011000 + 333 callgsubr + -506 hlineto + -49 -11 -22 -32 -10 -9 3 4 -10 vhcurveto + -26 -108 rlineto + hintmask 10111000 + -8 18 23 -6 37 hhcurveto + endchar + + + 346 callgsubr + 532 -196 rmoveto + 37 269 callgsubr + -9 -3 -10 hhcurveto + -32 -11 22 49 hvcurveto + 318 482 callsubr + -50 -35 -40 -42 vhcurveto + -4 hlineto + hintmask 11011000 + 333 callgsubr + -496 147 hlineto + hintmask 10111000 + 462 callgsubr + -295 vlineto + -104 40 -86 127 vhcurveto + endchar + + + -17 0 183 -183 496 -183 183 hstemhm + 65 137 157 137 hintmask 01011000 + 65 hmoveto + 137 137 hlineto + hintmask 10111000 + 49 -7 67 -6 60 vhcurveto + 4 hlineto + 14 -30 20 -45 15 -29 119 -209 rcurveline + 135 496 -137 -137 hlineto + -49 7 -67 5 -60 vhcurveto + -3 hlineto + -14 29 -21 46 -15 29 -118 209 rcurveline + -135 hlineto + endchar + + + 6 callsubr + + + 148 0 105 100 97 87 107 hstem + 36 151 154 144 vstem + 291 -12 rmoveto + 39 30 2 10 46 hvcurveto + 294 105 -215 100 174 97 -174 87 205 107 -284 hlineto + 10 -49 -27 2 -39 hhcurveto + -129 -126 -87 -174 -177 126 -82 129 hvcurveto + 7 116 rmoveto + -57 -54 34 109 103 54 40 57 13 15 -2 -4 15 hvcurveto + -274 vlineto + -4 -15 -15 -2 -13 hhcurveto + endchar + + + 169 -12 112 296 112 hstem + 40 139 126 134 129 139 vstem + 235 -12 rmoveto + 58 51 25 69 27 hvcurveto + 4 hlineto + -69 27 57 -25 59 hhcurveto + 122 67 88 149 149 -103 134 -230 -224 -110 -135 -147 -171 75 -67 120 hvcurveto + 10 112 rmoveto + -43 -23 41 83 86 47 86 145 135 62 -67 -102 -87 -27 -40 -45 -32 -25 25 75 hvcurveto + 102 -134 -102 vlineto + -67 -20 -33 -40 vhcurveto + endchar + + + 585 callsubr + hstem + 36 151 115 134 115 151 vstem + 302 -184 rmoveto + 134 176 392 callgsubr + 197 -134 -197 170 callsubr + + + -180 -12 129 -117 117 hstemhm + 187 147 -125.5 125.5 hintmask 10100000 + 58 -12 rmoveto + hintmask 10010000 + 51 54 32 67 36 hvcurveto + 4 hlineto + hintmask 01010000 + 11 -87 rlineto + hintmask 01100000 + 120 432 callsubr + hlineto + hintmask 10100000 + -287 229 callgsubr + endchar + + + -180 -12 129 -117 117 hstemhm + 187 147 -125.5 125.5 hintmask 10100000 + 58 -12 rmoveto + hintmask 10010000 + 51 54 32 67 36 hvcurveto + 4 hlineto + hintmask 01010000 + 11 -87 rlineto + hintmask 01100000 + 457 callgsubr + hlineto + hintmask 10100000 + -492 229 callgsubr + endchar + + + -180 382 callsubr + 69 129 hstemhm + 187 147 -131 131 hintmask 11100000 + 354 -196 rmoveto + 36 269 callgsubr + -8 -3 -11 hhcurveto + -31 -11 22 49 hvcurveto + 506 -147 -287 229 callgsubr + hintmask 11010000 + 51 54 32 67 36 hvcurveto + 4 -114 hlineto + hintmask 11100000 + -92 36 -77 115 vhcurveto + endchar + + + -180 382 callsubr + 460 219 callgsubr + hintmask 10010100 + 232 -196 rmoveto + 36 269 callgsubr + -8 -3 -10 hhcurveto + -32 -11 22 49 hvcurveto + hintmask 11000100 + 298 141 callsubr + hintmask 10010100 + 536 callsubr + hintmask 11001000 + 263 callsubr + hintmask 10101000 + -10 87 rlineto + hintmask 10100100 + -120 -502 hlineto + hintmask 10010100 + -104 39 -86 128 vhcurveto + endchar + + + -201 381 127 hstem + 61 147 vstem + 61 166 callgsubr + hlineto + 81 45 28 34 29 11 -2 -8 28 vhcurveto + 22 123 rlineto + 8 -24 -38 6 -49 hhcurveto + -145 -60 -92 -112 hvcurveto + endchar + + + -46 163 97 127 109 hstem + 65 147 117 145 vstem + 344 callsubr + 163 52 hlineto + 90 -163 rlineto + 163 hlineto + -123 193 rlineto + 46 26 34 45 68 vvcurveto + 124 -91 40 -114 vhcurveto + -204 hlineto + 147 -236 rmoveto + 127 40 vlineto + 52 25 -20 -40 -39 -25 -28 -52 hvcurveto + endchar + + + -46 0 109 127 98 hstem + 65 147 117 145 vstem + 252 109 rmoveto + -40 127 40 hlineto + 52 25 -28 -38 -41 -25 -20 -52 hvcurveto + 17 -109 rmoveto + 114 91 41 124 68 -34 44 -46 27 hvcurveto + 123 192 rlineto + -163 hlineto + -90 -162 rlineto + -52 162 -147 -496 hlineto + endchar + + + -135 -196 112 72 109 -78 -21 401 109 hstemhm + 21 120 -93 138 92 137 hintmask 11011010 + 181 -196 rmoveto + 38 23 7 7 19 hvcurveto + -26 105 rlineto + -4 -14 -12 -3 -13 hhcurveto + hintmask 10111010 + -34 -20 18 64 -1 hvcurveto + hintmask 11010110 + -8 29 25 -2 16 hhcurveto + 133 71 70 90 91 -71 35 -63 23 hvcurveto + -51 19 -44 12 32 vvcurveto + 25 19 14 38 34 35 -16 -26 35 vhcurveto + 66 88 rlineto + 32 -42 -57 31 -76 hhcurveto + -114 -76 -63 -92 -82 69 -41 60 -23 hvcurveto + 51 -20 50 -15 -33 vvcurveto + -26 -19 -16 -49 vhcurveto + hintmask 11011010 + -44 -53 7 45 -88 hvcurveto + -4 -2 rlineto + -144 vlineto + -108 38 -91 122 vhcurveto + endchar + + + -300 382 callsubr + 679 115 hstem + 66 147 vstem + 36 291 callsubr + 515 306 callgsubr + -18 -23 429 callgsubr + -514 51 callgsubr + endchar + + + -224 382 callsubr + 286 230 callsubr + 296 115 hstemhm + 103 389 callgsubr + 73 291 callsubr + 202 84 97 -84 216 306 callgsubr + -18 -23 429 callgsubr + hintmask 11011000 + -211 vlineto + -87 -5 rlineto + hintmask 10111000 + -92 87 -206 51 callgsubr + endchar + + + -195 382 callsubr + 462 112 -112 115 hstemhm + 85 147 hintmask 10110000 + 256 -196 246 callsubr + 383 119 115 -119 467 callsubr + vlineto + hintmask 11010000 + -17 -132 -76 -6 rlineto + hintmask 10110000 + -109 68 -385 548 callgsubr + + + 72 -12 125 -92 -21 255 94 -94 97 -97 241 hstemhm + 103 147 461 callgsubr + hintmask 10001110 + 257 0 callgsubr + hintmask 01001110 + 11 -69 rlineto + 120 255 84 hlineto + hintmask 01010110 + 97 -84 vlineto + hintmask 01001110 + 144 -147 vlineto + hintmask 01010110 + -144 -150 vlineto + hintmask 01001110 + 144 -147 vlineto + hintmask 01100110 + -144 vlineto + -87 -6 rlineto + hintmask 01001110 + -91 87 -67 vlineto + hintmask 10001110 + -124 46 -76 108 vhcurveto + -7 219 rmoveto + 48 150 -87 vlineto + -39 -29 -22 -16 -37 hhcurveto + -43 -19 23 71 hvcurveto + endchar + + + -10 25 callgsubr + 274 115 hstemhm + 34 214 -204 148 -76 132 72 131 -131 213 -157 147 hintmask 11010001 + 284 -12 rmoveto + 152 87 107 106 hvcurveto + hintmask 11010100 + 80 -35 61 -37 36 vhcurveto + 3 vlineto + hintmask 11010010 + 82 115 -213 -95 hlineto + hintmask 11010001 + 37 -46 19 -46 -76 vvcurveto + -71 -29 -55 -63 -63 -29 55 71 vhcurveto + hintmask 11100001 + 76 19 46 37 46 vhcurveto + 95 -214 -115 vlineto + hintmask 11001001 + 82 -3 hlineto + hintmask 11010001 + -36 -36 -36 -61 -80 vvcurveto + -106 87 -107 153 vhcurveto + endchar + + + -26 25 callgsubr + 287 114 -12 -20 442 callgsubr + 157 151 hintmask 10111000 + 273 -12 rmoveto + 160 82 125 186 hvcurveto + hintmask 11011000 + 146 -74 63 -97 -31 -19 -2 -6 -18 vhcurveto + 16 -109 rlineto + 2 7 6 1 7 hhcurveto + 36 16 -37 -80 -105 -30 -65 -54 -46 -27 34 78 hvcurveto + hintmask 10111000 + 277 -147 -279 vlineto + -152 83 -77 130 vhcurveto + endchar + + + -55 387 109 hstem + 12 499 vstem + 12 hmoveto + 141 hlineto + 64 234 13 49 13 52 13 52 rlinecurve + 4 hlineto + 12 -52 14 -52 12 -49 65 -234 rcurveline + 148 hlineto + -168 496 rlineto + -169 hlineto + endchar + + + 198 0 153 224 119 hstem + 24 728 vstem + 24 hmoveto + 136 hlineto + 47 230 9 49 5 48 9 50 rlinecurve + 4 hlineto + 10 -50 9 -48 12 -49 56 -230 rcurveline + 127 hlineto + 54 230 12 47 9 50 9 50 rlinecurve + 4 hlineto + 8 -50 6 -48 8 -49 48 -230 rcurveline + 146 hlineto + -124 496 rlineto + -169 hlineto + -43 -198 -10 -46 -7 -46 -8 -53 rlinecurve + -4 hlineto + -9 53 -9 46 -9 46 -45 198 rcurveline + -172 hlineto + endchar + + + -57 597 116 hstem + 12 497 vstem + 12 hmoveto + 141 hlineto + 60 213 12 47 11 47 11 47 rlinecurve + 4 hlineto + 13 -49 12 -47 15 -45 71 -213 rcurveline + 147 hlineto + -191 483 16 49 rlineto + 38 13 25 27 49 hhcurveto + 10 14 -4 -2 9 hvcurveto + 26 112 rlineto + 6 -20 -20 4 -30 hhcurveto + -117 -53 -65 -124 -47 hvcurveto + endchar + + + -112 0 496 hstem + 160 147 vstem + 532 callsubr + 150 hlineto + 167 346 rlineto + -153 hlineto + -41 -107 -15 -41 -14 -35 -15 -42 rlinecurve + -4 hlineto + -14 42 -15 35 -13 41 -43 107 rcurveline + -155 hlineto + 168 -346 rlineto + endchar + + + -118 382 callsubr + 81 378 callsubr + hstem + 294 132 vstem + 449 -196 rmoveto + 34 22 6 8 19 hvcurveto + -26 108 rlineto + -4 -10 -9 -3 -10 hhcurveto + -32 -11 22 49 hvcurveto + 125 -205 vlineto + 208 303 rlineto + 78 -368 225 callgsubr + -79 256 -22 vlineto + -87 39 -87 116 vhcurveto + endchar + + + -58 -10 117 -116 121.5 63.5 78 127 115 hstemhm + 439 90 hintmask 10111000 + 414 176 rmoveto + 16 9 -8 -19 -22 -19 -20 -41 hvcurveto + -9 -9 0 -8 hhcurveto + 48 20 20 21 21 hhcurveto + -112 -258 rmoveto + 5 26 5 24 5 22 rrcurveto + 8 7 0 8 hhcurveto + 132 57 72 87 65 -41 40 -64 -73 -46 -56 -88 -34 hvcurveto + hintmask 01111000 + -20 1 -20 2 -20 2 208 303 rcurveline + 78 -358 225 callgsubr + -79 vlineto + 62 -5 68 -2 67 -2 rrcurveto + hintmask 10111000 + -5 -19 -4 -19 -4 -20 rrcurveto + endchar + + + -118 -196 119 199 100 159 115 hstem + 292 147 vstem + 211 -196 rmoveto + 123 105 82 146 104 -62 78 -110 8 hvcurveto + 149 196 rlineto + 78 -378 -115 203 vlineto + -152 519 callsubr + 58 38 -34 -59 -67 -41 -39 -57 -50 -40 24 29 -33 hvcurveto + -66 -91 rlineto + -44 47 64 -37 95 hhcurveto + endchar + + + -130 594 119 hstemhm + 129 147 8 147 hintmask 11000000 + 129 hmoveto + 147 273 hlineto + hintmask 11100000 + 287 callgsubr + hintmask 11000000 + -63 -43 -44 -112 -69 vhcurveto + endchar + + + -130 594 119 hstemhm + 17 147 8 147 hintmask 10100000 + 492 callsubr + 325 hlineto + hintmask 11100000 + 276 callgsubr + hintmask 10100000 + -105 66 -66 89 -64 vhcurveto + endchar + + + -22 25 callgsubr + 183 126 178 119 hstem + 48 134 32 128 32 134 vstem + 278 -12 rmoveto + 136 94 120 244 244 -94 117 -136 -136 -94 -117 -244 -244 94 -120 136 hvcurveto + 119 vmoveto + -48 -48 56 189 183 48 59 48 48 48 -59 -183 -189 -48 -56 -48 hvcurveto + 183 vmoveto + 35 29 28 36 34 -29 28 -35 -35 -29 -28 -34 -36 29 -28 35 hvcurveto + endchar + + + 90 callsubr + + + 4 189 128 hstem + 65 147 159 147 vstem + 344 callsubr + 189 159 -189 147 432 callsubr + -179 -159 179 -147 hlineto + endchar + + + -187 -196 112 72 97 484 154 hstemhm + -20 106 84 458 callgsubr + hintmask 11110100 + 335 -232 209 callsubr + -249 183 581 callgsubr + hintmask 11111000 + 167 618 rmoveto + -106 callsubr + + + -187 -196 112 72 97 hstem + -20 106 93 147 vstem + 86 -49 581 callgsubr + 249 -183 209 callsubr + endchar + + + -146 0 115 hstem + 65 147 vstem + 65 hmoveto + 341 115 -194 577 callgsubr + hlineto + endchar + + + -120 116 97 381 119 hstemhm + 139 147 8 147 hintmask 11100000 + 139 hmoveto + 147 116 105 97 -105 60 hlineto + hintmask 11110000 + 287 callgsubr + hintmask 11100000 + -63 -43 -44 -112 -69 vhcurveto + -112 -9 vlineto + -101 -6 rlineto + -91 110 vlineto + endchar + + + -120 116 97 381 119 hstemhm + 17 147 8 147 hintmask 11010000 + 492 callsubr + 116 106 97 -106 112 hlineto + hintmask 11110000 + 276 callgsubr + hintmask 11010000 + -105 66 -66 89 -64 vhcurveto + -60 -8 vlineto + -101 -6 rlineto + -91 109 vlineto + endchar + + + 318 -196 119 65 377 callsubr + 273 115 266 callsubr + 558 callgsubr + 151 147 240 147 hintmask 01010111 + 232 -12 rmoveto + 45 43 27 34 34 hvcurveto + 4 hlineto + hintmask 10110111 + 10 -49 rlineto + 120 381 189 hlineto + -132 519 callsubr + 46 30 -34 -59 -67 -37 -39 -51 -42 -31 26 27 -30 hvcurveto + -66 -91 rlineto + -42 44 56 -39 86 hhcurveto + 118 100 82 146 90 -31 83 -119 20 hvcurveto + 127 193 rlineto + 78 -364 205 -147 vlineto + hintmask 01001111 + -169 vlineto + 6 -76 rlineto + 31 -33 -29 21 -50 hhcurveto + -100 -96 -98 -162 hvcurveto + hintmask 01010111 + -162 76 -98 117 vhcurveto + 38 120 rmoveto + -50 -30 44 98 hvcurveto + hintmask 01001111 + 94 36 44 43 24 24 -9 -23 24 vhcurveto + -203 vlineto + hintmask 01010111 + -32 -23 -20 -13 -28 hhcurveto + endchar + + + 12 382 callsubr + 69 125 268 115 102 115 hstem + 85 147 146 147 vstem + 348 291 callsubr + 515 306 callgsubr + -19 -22 429 callgsubr + -17 -146 467 callsubr + vlineto + -17 -132 -76 496 callsubr + 68 -193 vlineto + -124 45 -76 107 59 44 23 38 34 vhcurveto + 4 -50 hlineto + -55 -13 -25 -40 -13 -12 3 4 -14 vhcurveto + -26 556 callgsubr + 21 25 -6 42 hhcurveto + -57 309 rmoveto + -41 -18 23 71 hvcurveto + 174 146 -217 vlineto + -37 -28 -22 -14 -37 hhcurveto + endchar + + + 287 callsubr + + + -385 548 55 98 54 hstemhm + 26 156 -89 89 hintmask 11100000 + 26 548 rmoveto + hintmask 11010000 + 109 -5 47 46 63 vvcurveto + hintmask 11100000 + 63 -47 46 -109 -6 vhcurveto + -54 vlineto + hintmask 11010000 + 49 1 18 -21 -29 vvcurveto + hintmask 11100000 + -29 -18 -22 -49 2 vhcurveto + endchar + + + -385 548 55 98 54 hstemhm + 11 89 -89 156 hintmask 11010000 + 167 548 rmoveto + 55 vlineto + hintmask 11100000 + -49 -2 -18 22 29 vvcurveto + hintmask 11010000 + 29 18 21 49 -1 vhcurveto + 54 vlineto + hintmask 11100000 + -109 6 -47 -46 -63 vvcurveto + hintmask 11010000 + -63 47 -46 109 5 vhcurveto + endchar + + + -235 763 82 hstemhm + 28 104 0 103 hintmask 10100000 + 132 375 rmoveto + 103 209 hlineto + hintmask 11000000 + -77 49 -26 30 41 vvcurveto + 38 26 21 40 30 26 -18 -24 19 vhcurveto + 51 65 rlineto + 33 -31 -44 26 -63 hhcurveto + -85 -73 -45 -92 hvcurveto + hintmask 10100000 + -72 43 -43 61 -46 vhcurveto + endchar + + + -431 540 205 hstem + 18 112 vstem + 21 540 rmoveto + 106 hlineto + 6 205 rlineto + -118 hlineto + endchar + + + -270 592 93 hstem + 6 296 vstem + 6 592 -24 callgsubr + + + -342 493 callgsubr + 56 253 vstem + 128 572 -44 callsubr + + + -342 493 callgsubr + -73 253 vstem + 108 572 -29 callsubr + + + -431 -270 206 hstem + 18 112 vstem + 15 466 callsubr + + + -321 0 191 114 191 hstem + 21 215 vstem + 21 hmoveto + 215 hlineto + -100 191 rlineto + -15 hlineto + 114 vmoveto + 523 callsubr + + + -321 305 191 hstem + 21 215 vstem + 121 305 rmoveto + 523 callsubr + + + -367 194 84 hstemhm + -115 215 -74 74 hintmask 11000000 + -115 263 rmoveto + hintmask 10100000 + 141 60 286 callsubr + hintmask 11000000 + -217 -89 rlineto + endchar + + + -225 237 63 hstem + 72 84 47 83 vstem + 180 237 rmoveto + 64 42 39 59 33 -15 26 -25 44 hvcurveto + 100 266 rlineto + -99 hlineto + -41 -134 -8 -28 -9 -20 -8 -30 rlinecurve + -3 hlineto + -9 30 -8 20 -8 28 -42 134 rcurveline + -103 hlineto + 104 -268 rlineto + -26 -43 -14 -25 -33 vvcurveto + -59 43 -39 65 vhcurveto + 63 vmoveto + -15 -9 11 16 18 7 19 14 29 hvcurveto + 3 hlineto + 16 -29 7 -19 -18 vvcurveto + -16 -10 -11 -13 vhcurveto + endchar + + + 493 callgsubr + -191 253 vstem + -10 572 -29 callsubr + + + 680 214 hstem + -173 249 vstem + 10 680 -22 callsubr + + + 555 238 hstem + -122 176 vstem + -44 465 callsubr + + + 493 callgsubr + -62 253 vstem + 10 572 -44 callsubr + + + 680 214 hstem + -76 249 vstem + -10 680 -89 callgsubr + + + 555 238 hstem + -54 177 vstem + 44 555 115 callsubr + + + 653 529 callgsubr + -183 613 -31 callsubr + + + 769 66 hstem + -170 340 vstem + -106 685 -75 callsubr + + + 631 79 hstem + -281 432 vstem + -104 566 -32 callsubr + -25 20 rmoveto + 56 44 -83 127 -78 -52 rlineto + endchar + + + 757 67 hstem + -253 406 vstem + -94 685 -11 callsubr + 1 35 285 callgsubr + endchar + + + 631 79 hstem + -151 428 vstem + -104 566 -32 callsubr + 327 20 rmoveto + 101 120 -78 51 -79 -127 rlineto + endchar + + + 757 67 hstem + -153 410 vstem + -94 685 -11 callsubr + 305 35 284 callsubr + endchar + + + 622 80 14 382 callgsubr + -151 302 -299 67 162 67 hintmask 10110000 + -104 566 rmoveto + 102 56 366 callgsubr + -56 47 52 -93 84 rlineto + -116 hlineto + -93 -84 rlineto + hintmask 11000100 + 153 callsubr + hintmask 10101000 + 385 callsubr + hintmask 11000100 + 233 callsubr + + + 748 68 22 81 -37 81 hstemhm + -153 509 callgsubr + hintmask 10111000 + -94 685 392 callsubr + hintmask 11011000 + 75 callgsubr + hintmask 10111000 + 107 callsubr + hintmask 11011000 + 295 callsubr + + + 625 61 33 69 hstem + -140 280 vstem + -88 564 rmoveto + 86 61 33 callsubr + 86 -61 52 33 -82 89 rlineto + -116 hlineto + -82 -89 rlineto + 140 122 rmoveto + 87 34 44 54 11 hvcurveto + -54 17 rlineto + -25 -11 -17 -21 -50 hhcurveto + -50 -17 21 25 -11 hvcurveto + -54 -17 rlineto + -54 11 34 -44 87 hhcurveto + endchar + + + 757 59 34 71 hstem + -155 310 vstem + -94 685 161 callsubr + 56 39 -87 92 rlineto + -126 hlineto + -87 -92 rlineto + 150 126 rmoveto + 98 49 43 66 8 hvcurveto + -71 12 rlineto + -27 -8 -22 -23 -54 hhcurveto + -54 -22 23 27 -8 hvcurveto + -71 -12 rlineto + -66 8 49 -43 98 hhcurveto + endchar + + + 631 79 46 62 hstem + 158 96 vstem + -104 566 159 callgsubr + 70 callgsubr + + + 750 74 -67 67 33 60 hstemhm + 158 95 hintmask 01110000 + -94 685 -11 callsubr + hintmask 10110000 + 290 26 303 callsubr + endchar + + + 573 349 callgsubr + 39 callgsubr + + + 692 406 callsubr + -198 509 callsubr + hintmask 10110000 + 71 692 -6 callsubr + hintmask 01110000 + -38 callgsubr + hintmask 10110000 + 148 callgsubr + + + 592 93 hstem + -148 296 vstem + -148 592 -24 callgsubr + + + 364 callgsubr + + + 592 93 hstem + -148 296 vstem + -148 592 -24 callgsubr + + + 364 callgsubr + + + 572 92 483 callgsubr + 572 267 callsubr + + + 697 404 callgsubr + -178 325 callsubr + hintmask 01110000 + 697 vmoveto + 156 callgsubr + hintmask 10010000 + 377 callgsubr + hintmask 01100000 + 161 callgsubr + hintmask 01110000 + 194 callgsubr + + + 697 85 hstem + -163 326 vstem + 697 278 callgsubr + + + 572 532 callgsubr + -172 506 callgsubr + hintmask 10110000 + 572 vmoveto + hintmask 01110000 + 294 callgsubr + hintmask 10110000 + 458 callsubr + hintmask 01110000 + 281 callsubr + hintmask 10110000 + 307 callgsubr + + + 572 83 hstem + 94 75 vstem + 572 vmoveto + -8 callsubr + 47 callsubr + -9 127 rmoveto + 64 44 -93 141 -87 -65 rlineto + endchar + + + 697 77 hstem + -163 326 vstem + 697 vmoveto + 117 callgsubr + -72 14 rlineto + -47 -10 -32 -27 -49 hhcurveto + -49 -32 27 47 -10 hvcurveto + -72 12 callgsubr + -17 108 rmoveto + 72 47 -95 137 -92 -57 rlineto + endchar + + + 572 83 hstem + 94 75 vstem + 572 vmoveto + -8 callsubr + 47 callsubr + 9 127 rmoveto + 535 callsubr + -87 65 -93 -141 rlineto + endchar + + + 697 77 hstem + -163 326 vstem + 697 vmoveto + 117 callgsubr + -72 14 rlineto + -47 -10 -32 -27 -49 hhcurveto + -49 -32 27 47 -10 hvcurveto + -72 12 callgsubr + 17 108 rmoveto + 115 489 callsubr + -137 rlineto + endchar + + + 572 567 callgsubr + -156 75 -75 312 -75 75 hintmask 10101000 + 572 vmoveto + 177 callgsubr + hintmask 11000100 + 58 142 rmoveto + 55 35 35 76 8 hvcurveto + -75 7 rlineto + -26 185 callsubr + hintmask 10110000 + -29 -24 42 -55 hhcurveto + -55 -35 -35 -77 -12 callgsubr + hintmask 11000100 + 233 callsubr + + + 702 71 74 80 -36 80 hstemhm + -153 509 callgsubr + hintmask 10111000 + 702 vmoveto + 99 50 45 67 8 hvcurveto + -71 12 rlineto + -29 -8 -23 -24 -55 hhcurveto + -55 -23 24 29 -8 hvcurveto + -71 -12 rlineto + -67 8 50 -45 99 hhcurveto + hintmask 11011000 + 391 callsubr + hintmask 10111000 + 47 callgsubr + 12 18 hhcurveto + hintmask 11011000 + 295 callsubr + + + 572 83 154 80 hstemhm + -12 96 10 75 hintmask 10100000 + 572 vmoveto + hintmask 10110000 + -8 callsubr + hintmask 10100000 + 515 callgsubr + hintmask 11100000 + 182 callsubr + + + 697 574 callsubr + -11 94 vstem + 697 vmoveto + 117 callgsubr + -72 14 rlineto + -47 -10 -32 -27 -49 hhcurveto + -49 -32 27 47 -10 hvcurveto + -72 12 callgsubr + -32 109 rmoveto + 64 5 51 23 59 vvcurveto + 44 -37 33 -109 4 vhcurveto + -14 -61 rlineto + 50 534 callsubr + -17 -14 -6 -19 -4 vhcurveto + endchar + + + 569 591 callsubr + -83 166 vstem + 569 vmoveto + -106 callsubr + + + 701 591 callsubr + -85 170 vstem + 701 vmoveto + -85 callsubr + + + 569 143 hstem + -181 358 callgsubr + vstem + -109 569 -83 callsubr + + + 700 140 hstem + -181 296 callgsubr + vstem + -111 700 -100 callsubr + + + 571 123 hstem + -171 430 callsubr + vstem + -109 571 rmoveto + -66 callsubr + 102 142 rmoveto + 56 36 -78 133 -78 -52 rlineto + 216 -259 rmoveto + 130 callsubr + + + 700 123 hstem + -172 332 callsubr + vstem + -111 700 rmoveto + 199 callgsubr + 179 callsubr + 103 125 rmoveto + 63 39 -95 145 -92 -57 rlineto + 243 -252 374 callsubr + 553 callsubr + -35 549 callsubr + + + 533 callsubr + -189 342 callsubr + vstem + -133 584 188 callgsubr + + + 571 123 hstem + -171 430 callsubr + vstem + -109 571 rmoveto + -66 callsubr + 116 142 rmoveto + 100 117 -78 52 -78 -133 rlineto + 158 -178 rmoveto + 130 callsubr + + + 700 123 hstem + -172 332 callsubr + vstem + -111 700 rmoveto + 199 callgsubr + 179 callsubr + 119 125 rmoveto + 124 489 callsubr + -145 rlineto + 166 -164 374 callsubr + 553 callsubr + -35 549 callsubr + + + 571 123 21 80 -36 80 hstemhm + -171 124 -113 64 143 124 -75 64 hintmask 11010010 + 67 97 callgsubr + + + 571 123 62 69 hstem + -171 430 callsubr + vstem + -109 571 rmoveto + -66 callsubr + -39 185 rmoveto + 296 69 -296 hlineto + 257 -254 rmoveto + 130 callsubr + + + 700 123 49 69 hstem + -172 332 callsubr + vstem + -111 700 rmoveto + 199 callgsubr + 179 callsubr + -40 172 rmoveto + 302 69 -302 hlineto + 262 -241 374 callsubr + 553 callsubr + -35 549 callsubr + + + 571 123 43 71 hstem + -171 430 callsubr + vstem + -58 737 rmoveto + 116 hlineto + 92 92 -48 44 -100 -65 rlineto + -4 hlineto + -100 65 -48 -44 rlineto + 41 -258 -10 callsubr + + + 700 123 31 68 hstem + -172 332 callsubr + vstem + -63 854 rmoveto + 126 hlineto + 92 102 -59 39 -94 -73 rlineto + -4 hlineto + -94 73 -59 -39 rlineto + 44 -256 rmoveto + 199 callgsubr + 179 callsubr + 222 hmoveto + 255 callgsubr + 553 callsubr + -35 549 callsubr + + + 703 90 hstem + -10 107 vstem + -43 101 callgsubr + + + 691 195 -73 73 hstemhm + -10 106 hintmask 10100000 + -43 691 rmoveto + 75 6 64 29 69 vvcurveto + hintmask 01100000 + 53 -45 35 -124 3 vhcurveto + -17 -73 rlineto + 58 -4 22 -11 -19 vvcurveto + hintmask 10100000 + -18 -20 -7 558 callsubr + + + 564 546 callgsubr + 564 vmoveto + -1 callsubr + + + 697 55 87 55 hstem + -114 72 84 72 vstem + 697 vmoveto + 143 callsubr + + + 565 callsubr + -129 365 vstem + -52 565 210 callsubr + + + 694 195 hstem + -135 382 vstem + -63 694 91 callsubr + + + 577 529 callgsubr + -75 577 -55 callgsubr + + + 702 66 hstem + -170 340 vstem + -80 702 -81 callgsubr + + + 565 callsubr + -236 365 vstem + -127 565 585 callgsubr + 288 -172 585 callgsubr + endchar + + + 694 195 hstem + -247 382 vstem + -125 694 rmoveto + 73 34 -101 161 -94 -52 rlineto + 310 -143 rmoveto + 72 34 -101 161 -93 -52 rlineto + endchar + + + 645 91 483 callgsubr + -85 565 rmoveto + 43 6 26 37 53 hhcurveto + 53 26 -37 -43 6 hvcurveto + 84 14 rlineto + 88 -3 -52 69 -114 hhcurveto + -115 -51 -69 -88 -3 hvcurveto + endchar + + + 759 86 hstem + -163 326 vstem + -83 694 rmoveto + 41 9 29 24 45 hhcurveto + 45 29 -24 -41 9 hvcurveto + 80 14 rlineto + 89 -9 -55 48 -99 hhcurveto + -99 -55 -48 -89 -9 hvcurveto + endchar + + + 586 108 hstemhm + -68 59 -59 119 hintmask 11000000 + -2 586 rmoveto + hintmask 10100000 + 29 24 21 36 32 -25 19 -28 -2 -3 0 -1 -2 hvcurveto + hintmask 11000000 + 4 27 21 19 37 14 -22 45 rcurveline + -68 -26 -31 -48 -56 vvcurveto + -53 22 -29 44 vhcurveto + endchar + + + 703 82 hstem + -97 107 vstem + 43 568 -64 callgsubr + + + 553 callgsubr + -195 97 vstem + -74 575 -80 callgsubr + + + 553 callgsubr + -185 97 vstem + -64 575 -66 callgsubr + + + 651 169 callgsubr + -156 75 -1 96 67 75 hintmask 10101100 + 35 563 -47 callsubr + hintmask 11001100 + 118 callsubr + hintmask 10110100 + -64 callsubr + hintmask 11001100 + 233 callsubr + + + 187 callsubr + + + 703 90 hstem + -10 107 vstem + -43 101 callgsubr + + + 553 callgsubr + -124 97 vstem + -147 575 rmoveto + -75 callgsubr + + + 553 callgsubr + -124 97 vstem + -147 575 rmoveto + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 651 169 callgsubr + -156 75 67 96 -1 75 hintmask 11010100 + 58 726 -45 callgsubr + hintmask 10111000 + -64 callsubr + hintmask 11010100 + 180 callgsubr + hintmask 10111000 + -35 callgsubr + + + -191 71 hstemhm + -87 186 -78 78 hintmask 10100000 + 21 570 callsubr + 203 -78 -66 hlineto + hintmask 11000000 + -108 -71 hlineto + hintmask 10100000 + 108 hlineto + endchar + + + -191 71 hstemhm + -99 78 -78 186 hintmask 11000000 + -99 570 callsubr + 66 hlineto + hintmask 10100000 + 108 71 hlineto + hintmask 11000000 + -108 66 -78 hlineto + endchar + + + 653 71 hstem + 21 78 vstem + 21 574 rmoveto + 78 150 -186 -71 108 hlineto + endchar + + + 427 237 hstem + 57 123 vstem + 1 427 rmoveto + 97 7 82 41 95 77 callsubr + endchar + + + -253 55 98 54 hstemhm + -93 89 -89 156 hintmask 11010000 + 63 -253 rmoveto + 55 vlineto + hintmask 11100000 + -49 -2 -18 22 29 vvcurveto + hintmask 11010000 + 29 18 21 49 -1 vhcurveto + 54 vlineto + hintmask 11100000 + -109 6 -47 -46 -63 vvcurveto + hintmask 11010000 + -63 47 -46 109 5 vhcurveto + endchar + + + -229 71 -71 175 hstemhm + -39 78 hintmask 10100000 + -107 -229 rmoveto + 214 71 -68 hlineto + hintmask 01100000 + 104 -78 vlineto + hintmask 10100000 + -104 -68 vlineto + endchar + + + -257 175 -70 70 hstemhm + -39 78 hintmask 10100000 + -39 570 callsubr + hlineto + hintmask 01100000 + 105 68 70 -214 -70 68 vlineto + endchar + + + -191 71 hstem + -39 78 vstem + -39 570 callsubr + 66 68 71 -68 66 -78 -66 -68 -71 68 hlineto + endchar + + + -191 71 hstem + -107 214 vstem + -107 -191 rmoveto + 214 71 -214 hlineto + endchar + + + 31 callgsubr + hstem + -83 166 vstem + -226 vmoveto + -106 callsubr + + + -218 143 hstem + -181 358 callgsubr + vstem + -109 -218 -83 callsubr + + + -253 546 callgsubr + -253 vmoveto + -1 callsubr + + + 242 callsubr + hstem + -10 105 vstem + -102 -239 64 callgsubr + + + -239 59 86 98 -65 65 hstemhm + -10 105 hintmask 10110000 + -102 -239 rmoveto + 78 callgsubr + 28 65 rlineto + -86 hlineto + hintmask 11010000 + -48 -98 rlineto + 96 callgsubr + + + -239 59 86 98 -65 65 hstemhm + -10 105 hintmask 10110000 + -102 -239 rmoveto + 78 callgsubr + 28 65 rlineto + -86 hlineto + hintmask 11010000 + -48 -98 rlineto + 96 callgsubr + + + -210 87 -87 212 hstemhm + -97 99 hintmask 10100000 + 9 38 callgsubr + hvcurveto + hintmask 01100000 + 30 17 29 35 28 vhcurveto + -82 hlineto + hintmask 10100000 + -34 -25 -35 -46 -50 300 callgsubr + endchar + + + -223 95 -95 225 hstemhm + -101 107 hintmask 10100000 + 14 -223 rmoveto + 34 45 15 20 25 hvcurveto + 478 callsubr + hvcurveto + hintmask 01100000 + 30 22 33 36 29 vhcurveto + -90 hlineto + hintmask 10100000 + -36 -25 -39 -52 -54 388 callsubr + + + -270 206 hstem + -56 112 vstem + -59 466 callsubr + + + -149 71 427 callsubr + -220 rmoveto + 73 71 110 -71 73 142 -256 hlineto + endchar + + + -225 529 callgsubr + -75 -225 -55 callgsubr + + + -233 92 483 callgsubr + -233 267 callsubr + + + -167 91 483 callgsubr + -85 -247 rmoveto + 43 6 26 37 53 hhcurveto + 53 26 -37 -43 6 hvcurveto + 84 14 rlineto + 88 -3 -52 69 -114 hhcurveto + -115 -51 -69 -88 -3 hvcurveto + endchar + + + -227 349 callgsubr + -227 49 callgsubr + + + -188 93 hstem + -148 296 vstem + -148 -188 -24 callgsubr + + + 170 101 -38 102 hstemhm + -226 92 -92 452 -92 92 hintmask 10010000 + 116 170 rmoveto + hintmask 10001000 + 443 callsubr + hintmask 01100000 + -59 -55 64 -102 437 callgsubr + hintmask 10010000 + 58 57 -63 100 hhcurveto + endchar + + + -253 55 98 54 hstemhm + -63 156 -89 89 hintmask 11100000 + -63 -253 rmoveto + hintmask 11010000 + 109 -5 47 46 63 vvcurveto + hintmask 11100000 + 63 -47 46 -109 -6 vhcurveto + -54 vlineto + hintmask 11010000 + 49 1 18 -21 -29 vvcurveto + hintmask 11100000 + -29 -18 -22 -49 2 vhcurveto + endchar + + + -214 71 427 callsubr + -214 rmoveto + 256 142 -73 -71 -110 71 -73 hlineto + endchar + + + -247 54 74 53 427 callsubr + -247 rmoveto + 256 181 -256 hlineto + 73 -127 rmoveto + 74 110 -74 vlineto + endchar + + + -244 115 -38 91 hstemhm + -187 75 77 70 77 75 hintmask 01111000 + -187 -235 rmoveto + 75 -10 rlineto + 63 13 15 25 29 10 -23 -32 vhcurveto + hintmask 10111000 + -22 70 vlineto + hintmask 01111000 + 22 vlineto + 32 10 23 28 25 14 -15 -63 vhcurveto + 75 10 rlineto + 107 1 -34 52 -76 hhcurveto + hintmask 10111000 + -35 -29 -17 -36 -12 hvcurveto + -4 hlineto + hintmask 01111000 + 36 -12 -28 17 -36 hhcurveto + -75 -35 -52 -107 1 hvcurveto + endchar + + + 541 201 hstem + -101 202 vstem + -51 541 rmoveto + 51 51 51 -51 50 49 -51 51 51 51 -50 50 -51 -51 -51 51 -50 -50 51 -51 -51 -51 rlineto + endchar + + + 573 349 callgsubr + 39 callgsubr + + + 692 406 callsubr + -198 509 callsubr + hintmask 10110000 + 71 692 -6 callsubr + hintmask 01110000 + -38 callgsubr + hintmask 10110000 + 148 callgsubr + + + 187 callsubr + + + 533 callsubr + -189 342 callsubr + vstem + -133 182 callgsubr + + + 32 callsubr + hstemhm + -57 104 hintmask 01100000 + 54 228 callgsubr + + + endchar + + + 633 94 hstem + -457 914 vstem + -419 536 rmoveto + 73 130 164 24 125 hhcurveto + 125 164 -24 -73 130 hvcurveto + 38 67 rlineto + 84 -137 -160 40 -160 hhcurveto + -160 -160 -40 -84 -137 hvcurveto + endchar + + + 789 94 hstem + -457 914 vstem + -419 692 rmoveto + 73 130 164 24 125 hhcurveto + 125 164 -24 -73 130 hvcurveto + 38 67 rlineto + 84 -137 -160 40 -160 hhcurveto + -160 -160 -40 -84 -137 hvcurveto + endchar + + + -278 388 298 hstem + 82 166 vstem + 82 388 401 callsubr + 127 rlineto + -147 hlineto + endchar + + + -278 0 298 hstem + 53 165 vstem + 53 hmoveto + 146 hlineto + 19 298 rlineto + -96 hlineto + -47 -171 rlineto + endchar + + + -23 32 callsubr + hstemhm + 222 104 hintmask 01100000 + 333 228 callgsubr + + + 126 callsubr + + + -8 0 121 302 105 hstem + 34 502 vstem + 34 hmoveto + 502 87 hlineto + -163 441 288 callgsubr + -164 -441 rlineto + 156 34 rmoveto + 47 148 43 154 33 callsubr + 44 -154 50 -148 rlineto + endchar + + + 55 304 callgsubr + hintmask 11100001 + 44 hmoveto + 238 103 hlineto + hintmask 11010001 + 443 callgsubr + hintmask 11010010 + 498 callgsubr + hintmask 11010100 + -88 4 hlineto + hintmask 11010001 + 393 callsubr + hintmask 11001001 + -78 43 -64 33 -32 vhcurveto + -4 vlineto + hintmask 11100001 + -88 hlineto + endchar + + + -132 -165 -21 575 119 hstem + 36 151 95 129 vstem + 349 -186 rmoveto + 43 65 19 67 35 vvcurveto + 82 -31 29 -93 33 vhcurveto + -64 23 -36 27 82 vvcurveto + 80 39 52 66 24 21 -9 -20 23 vhcurveto + 70 95 rlineto + 31 -36 -50 22 -61 hhcurveto + -133 -114 -92 -159 -166 98 -53 92 -31 hvcurveto + 41 -14 15 -18 -32 vvcurveto + -26 -21 -27 -28 -38 vhcurveto + endchar + + + 14 -12 127 480 116 hstemhm + 64 137 -137 139 160 141 -92 145 hintmask 11100100 + 319 -12 rmoveto + 129 109 67 143 93 -64 73 -91 13 hvcurveto + 4 vlineto + hintmask 11101000 + 70 31 32 52 67 vvcurveto + 125 -108 55 -109 -153 -70 -106 -139 vhcurveto + -223 vlineto + hintmask 11100100 + -185 128 -70 127 vhcurveto + -5 127 rmoveto + -52 -61 36 105 hvcurveto + 8 0 8 8 vvcurveto + 19 57 27 8 25 hhcurveto + 72 30 -46 -53 -61 -44 -32 -54 hvcurveto + hintmask 11011000 + -108 342 rmoveto + 85 4 27 53 57 hhcurveto + 38 31 -24 -56 -55 -28 -44 -132 -31 hvcurveto + 1 23 1 24 1 25 rrcurveto + endchar + + + -29 25 callgsubr + 209 92 186 119 hstemhm + 50 135 -110 138 145 143 -142 142 hintmask 11110100 + 185 513 rmoveto + 42 25 38 45 1 vhcurveto + 53 2 42 -43 8 -145 rrcurveto + -144 -15 -29 61 59 vvcurveto + hintmask 11101010 + 89 -525 rmoveto + 153 74 119 248 229 -91 129 -162 hvcurveto + hintmask 11110010 + -113 -85 -87 -107 -85 56 -144 253 29 hvcurveto + -178 -4 -29 -34 -47 hhcurveto + hintmask 11101010 + -43 -23 21 68 30 -1 42 -8 15 hvcurveto + -138 hlineto + 9 -31 0 -31 -46 vvcurveto + -110 56 -77 143 vhcurveto + endchar + + + -32 -188 696 hstemhm + 65 138 -138 143 hintmask 10100000 + 65 hmoveto + hintmask 11000000 + 436 callsubr + 44 -88 42 -69 38 -50 -36 -55 -50 -60 -49 -53 172 -11 rcurveline + 31 39 55 79 44 70 -65 73 -81 120 -49 97 541 callgsubr + hintmask 10100000 + 499 callsubr + 424 callsubr + + + -25 -177 277 -81 -21 22 -21 390 119 266 callgsubr + 21 145 13 151 hintmask 10011110 + 276 100 rmoveto + -61 -28 57 91 86 28 55 61 62 28 -55 -86 -91 -28 -57 -62 hvcurveto + hintmask 10010100 + -68 -277 rmoveto + 149 hlineto + hintmask 00110100 + -2 60 -3 56 -3 60 rrcurveto + hintmask 00111110 + 95 29 73 88 132 vvcurveto + 165 -114 95 -127 -126 -114 -95 -165 vhcurveto + hintmask 01010100 + -134 76 -88 96 -28 vhcurveto + endchar + + + -88 -166 -21 564 119 hstem + 36 151 127 129 vstem + 382 -187 rmoveto + 41 61 20 69 34 vvcurveto + 72 -26 33 -105 28 vhcurveto + -89 24 -36 40 68 vvcurveto + 96 49 39 74 45 61 0 -2 48 vhcurveto + 121 -166 vlineto + -146 -116 -82 -172 -153 104 -72 104 -27 hvcurveto + 61 -15 9 -16 -23 vvcurveto + -21 -17 -26 -30 -38 vhcurveto + endchar + + + -145 125 97 159 115 hstemhm + 65 137 -137 140 hintmask 11010000 + 65 -177 rmoveto + 148 hlineto + -5 111 -3 90 101 vvcurveto + 182 97 hlineto + hintmask 11100000 + -184 hlineto + -2 159 rlineto + 206 115 hlineto + hintmask 11010000 + -342 hlineto + endchar + + + -42 -181 881 hstem + 377 145 vstem + 502 -181 rmoveto + 12 68 8 66 66 vvcurveto + 281 -121 242 -230 158 vhcurveto + -95 -108 76 -51 61 -59 47 -67 rlinecurve + -251 -111 60 -123 90 49 79 40 83 37 rlinecurve + 13 -31 11 -31 8 -33 -252 -112 rcurveline + 60 -123 76 42 68 35 69 32 rlinecurve + 2 -21 1 -22 -22 vvcurveto + -60 -6 -59 -12 -66 vhcurveto + endchar + + + -17 callgsubr + 223 28 -22 callsubr + + + 3 callgsubr + 201 42 -22 callsubr + + + -14 callsubr + 48 140 46 callgsubr + -115 296 callgsubr + 314 callsubr + hintmask 11110110 + 102 48 -100 callsubr + + + 60 callgsubr + 62 140 46 callgsubr + -137 296 callgsubr + 336 callgsubr + hintmask 11110110 + 80 62 -100 callsubr + + + 123 -12 117 -86 -21 23 586 callgsubr + hstemhm + 184 148 186 144 hintmask 10011110 + 472 -12 rmoveto + 110 80 59 145 155 -111 61 -122 -46 -20 -3 -5 -31 hvcurveto + 477 callsubr + hintmask 00111110 + -528 148 283 vlineto + 4 22 19 3 34 hhcurveto + 72 39 -32 -68 hvcurveto + hintmask 10011110 + -61 -35 -24 -29 -10 -7 1 4 -10 vhcurveto + hintmask 01011110 + -23 -112 rlineto + hintmask 10011110 + -7 19 23 -3 26 hhcurveto + endchar + + + 39 -11 113 -92 -21 28 -21 25 -21 220 98 90 120 hstemhm + 154 147 137 141 hintmask 01001111 + 413 -11 rmoveto + 99 67 49 108 124 -104 48 -102 -29 -19 -3 -4 -24 hvcurveto + 500 callgsubr + hintmask 00011111 + -408 147 215 vlineto + 3 14 15 2 26 hhcurveto + 52 30 -24 -43 hvcurveto + hintmask 10001111 + -34 -22 -17 -22 -5 -7 2 2 -6 vhcurveto + hintmask 00101110 + -22 -110 rlineto + hintmask 01001111 + -6 16 20 -1 23 hhcurveto + endchar + + + 191 callsubr + 124 -411 hlineto + 209 28 -89 callgsubr + + + 193 callgsubr + 122 -363 hlineto + 187 28 -89 callgsubr + + + 4 -12 127 159 123 140 127 hstem + 46 514 vstem + 349 -12 rmoveto + 85 72 33 63 54 hvcurveto + -78 92 rlineto + -34 -32 -42 -27 -53 hhcurveto + -90 -57 46 113 -13 hvcurveto + 227 123 -224 hlineto + 97 19 60 43 80 hhcurveto + 47 35 -22 -30 33 hvcurveto + 78 94 rlineto + 45 -44 -68 40 -85 hhcurveto + -168 -139 -111 -231 -231 134 -103 169 hvcurveto + endchar + + + -63 -12 121 106 107 97 121 hstem + 46 327 vstem + 312 -12 rmoveto + 72 66 25 52 48 hvcurveto + -80 86 rlineto + -24 -24 -32 -18 -44 hhcurveto + -66 -44 33 73 -13 hvcurveto + 178 107 -175 hlineto + 65 17 47 32 57 hhcurveto + 38 27 -12 -25 28 hvcurveto + 80 88 rlineto + 38 -40 -61 32 -71 hhcurveto + -147 -127 -95 -184 -189 120 -84 146 hvcurveto + endchar + + + -17 callsubr + endchar + + + -74 357 callsubr + hstem + 64 147 111 148 vstem + 254 -12 rmoveto + -95 callsubr + endchar + + + 98 callgsubr + endchar + + + 97 callsubr + endchar + + + 7 callsubr + + + 147 callgsubr + 68 140 hstemhm + 12 123 -58 58 -58 147 -58 58 -58 123 hintmask 11101000 + 74 700 rmoveto + 36 25 30 40 40 -25 30 -36 hvcurveto + hintmask 11110000 + -36 -26 -30 -40 hvcurveto + hintmask 11101000 + -40 26 -30 36 vhcurveto + hintmask 11100010 + 153 hmoveto + hintmask 11100001 + 37 25 30 40 40 -25 30 -37 hvcurveto + hintmask 11100010 + -36 -25 -30 -40 -40 25 -30 36 hvcurveto + hintmask 11100100 + -150 -700 rmoveto + 147 260 callsubr + hlineto + endchar + + + 271 callgsubr + 82 140 hstemhm + -30 140 -33 147 -32 140 513 callsubr + hintmask 11110100 + -37 62 -100 callsubr + + + -277 590 140 hstemhm + 12 123 -58 58 -58 147 -58 58 -58 123 hintmask 10100000 + 74 590 rmoveto + 36 25 30 40 40 -25 30 -36 hvcurveto + hintmask 11000000 + -36 -26 -30 -40 hvcurveto + hintmask 10100000 + -40 26 -30 36 vhcurveto + hintmask 10001000 + 153 hmoveto + hintmask 10000100 + 37 25 30 40 40 -25 30 -37 hvcurveto + hintmask 10001000 + -36 -25 -30 -40 -40 25 -30 36 hvcurveto + hintmask 10010000 + -150 -590 rmoveto + 147 491 callsubr + endchar + + + 201 callgsubr + + + 200 callsubr + + + 342 -12 138 -126 504 callsubr + 114 124 hstemhm + 426 148 165 144 hintmask 10111100 + 79 -12 rmoveto + 104 56 59 219 42 hvcurveto + 16 85 14 85 16 92 rrcurveto + 99 hlineto + hintmask 01111100 + -528 199 vlineto + 145 352 callsubr + -54 238 -360 hlineto + -23 -126 -21 -123 -26 -121 rrcurveto + hintmask 10111100 + -140 -31 -23 -16 -32 hhcurveto + -12 -8 2 2 -8 hvcurveto + hintmask 01111100 + -27 -132 rlineto + hintmask 10111100 + -8 21 21 -2 34 hhcurveto + hintmask 01111100 + 495 129 rmoveto + 180 42 vlineto + 82 41 -28 -58 -67 -45 -27 -78 hvcurveto + endchar + + + 207 -12 136 -124 115 -97 -21 251 101 59 120 hstemhm + 345 148 116 139 hintmask 10011100 + 421 callsubr + 65 hlineto + hintmask 01011110 + -408 178 vlineto + 340 callgsubr + -127 hvcurveto + -33 179 -323 hlineto + -18 -94 -20 -98 -22 -93 rrcurveto + hintmask 10011100 + 502 callgsubr + hintmask 00111100 + -25 -131 rlineto + hintmask 10011100 + -7 18 22 -2 30 hhcurveto + hintmask 01011110 + 433 127 rmoveto + 133 23 429 callsubr + endchar + + + 355 0 117 155 129 -104 117 238 488 callsubr + 215 148 165 144 hintmask 11011110 + 77 166 callgsubr + 215 -272 199 hlineto + 145 113 56 157 hvcurveto + hintmask 10111110 + 144 -108 57 -147 vhcurveto + -54 238 -148 590 callgsubr + -251 -215 296 callsubr + vlineto + 510 -535 rmoveto + hintmask 10111110 + 180 42 vlineto + 82 41 -28 -58 -67 -46 -27 -77 hvcurveto + endchar + + + 243 0 115 92 127 -86 101 179 488 callsubr + 158 147 116 140 hintmask 11011110 + 77 hmoveto + 147 207 158 -207 177 hlineto + 123 103 43 135 hvcurveto + hintmask 10111110 + 124 -95 47 -128 vhcurveto + -33 179 -147 590 callgsubr + -194 -158 194 -147 vlineto + 452 -413 rmoveto + hintmask 10111110 + 133 23 vlineto + 62 31 -19 -46 -48 -36 -20 -56 hvcurveto + endchar + + + 140 21 586 callgsubr + hstem + 184 148 181 144 vstem + 184 hmoveto + 148 283 hlineto + 4 22 26 3 24 hhcurveto + 78 31 -32 -72 hvcurveto + -186 144 186 vlineto + 157 -93 65 -144 -30 -27 -3 -5 -31 vhcurveto + 477 callsubr + endchar + + + 61 21 -21 220 98 90 120 hstem + 154 147 134 144 vstem + 154 hmoveto + 147 215 hlineto + 3 14 15 2 26 hhcurveto + 56 23 -24 -65 hvcurveto + -131 144 131 vlineto + 138 -78 49 -128 -29 -19 -3 -4 -24 vhcurveto + 500 callgsubr + endchar + + + 93 callgsubr + 256 36 -89 callgsubr + + + 96 callsubr + 226 28 -89 callgsubr + + + 126 callgsubr + 275 36 -22 callsubr + + + 125 callsubr + 244 28 -22 callsubr + + + 528 callsubr + 65 404 callgsubr + 1 559 -451 325 callsubr + hintmask 11011000 + -16 callsubr + hintmask 11010110 + 129 709 172 callsubr + hintmask 11100010 + 377 callgsubr + hintmask 11010100 + 161 callgsubr + hintmask 11010110 + 194 callgsubr + + + -91 -12 126 -94 -21 529 -20 65 404 callgsubr + 1 494 -419 325 callsubr + hintmask 10101100 + 11 callsubr + hintmask 01101100 + -27 -121 rlineto + hintmask 10101100 + -7 17 26 -4 34 hhcurveto + hintmask 01101011 + 111 585 172 callsubr + hintmask 01110001 + 377 callgsubr + hintmask 01101010 + 161 callgsubr + hintmask 01101011 + 194 callgsubr + + + 85 0 124 528 -20 209 callgsubr + 43 564 callsubr + 34.5 147 vstem + 267 -188 rmoveto + 132 hlineto + 11 188 rlineto + 176 260 callsubr + -528 -215 528 -147 -652 190 hlineto + endchar + + + 25 0 122 406 488 callsubr + 9 137 11 148 vstemhm + 236 -172 rmoveto + 126 hlineto + 16 172 rlineto + hintmask 11101000 + 151 528 -148 -406 -157 577 callsubr + -528 hlineto + hintmask 11111000 + 153 hlineto + endchar + + + -5 21 -21 155 115 270 112 -67 callsubr + endchar + + + -46 callsubr + endchar + + + 22 0 114 175 108 235 callsubr + 209 callgsubr + 196 144 vstem + 77 hmoveto + 241 hlineto + 137 109 58 149 143 -113 47 -137 hvcurveto + -90 131 298 124 -445 hlineto + 147 -538 rmoveto + 175 78 vlineto + 77 41 -23 -61 -63 -39 -28 -78 hvcurveto + endchar + + + -35 0 107 118 92 90 121 209 callgsubr + 141 142 vstem + 77 hmoveto + 215 hlineto + 115 100 43 120 123 -102 31 -117 hvcurveto + -64 90 247 121 -394 hlineto + 147 -421 rmoveto + 118 54 vlineto + 56 31 -14 -42 -40 -29 -22 -58 hvcurveto + endchar + + + -19 callgsubr + + + -13 callsubr + + + 191 callsubr + 124 -411 hlineto + endchar + + + 193 callgsubr + 122 -363 hlineto + endchar + + + 92 0 530 callgsubr + 13 144 273 147 -64 144 hintmask 11110000 + 268 330 rmoveto + 16 80 6 40 14 78 rrcurveto + 126 -404 -230 hlineto + 30 50 21 69 17 87 rrcurveto + -111 -330 rmoveto + hintmask 11101000 + 356 -188 131 503 callsubr + vlineto + hintmask 11110000 + -80 528 -387 hlineto + -21 -125 -11 -63 -22 -115 -30 -158 -34 -57 -29 -10 rrcurveto + -30 -92 hlineto + 13 -220 rlineto + 131 hlineto + endchar + + + 26 0 122 286 120 hstemhm + 13 140 213 148 -62 141 hintmask 11110000 + 249 282 rmoveto + 11 52 5 23 10 51 rrcurveto + 91 -286 -172 hlineto + 24 42 18 55 13 63 rrcurveto + -96 -454 rmoveto + 172 vlineto + hintmask 11101000 + 299 -172 127 hlineto + 14 551 callgsubr + vlineto + hintmask 11110000 + -79 406 -350 hlineto + -18 -95 -9 -47 -18 -85 -25 -119 -28 -49 -24 -11 rrcurveto + -29 -100 hlineto + 14 -194 rlineto + endchar + + + -17 callgsubr + endchar + + + 3 callgsubr + endchar + + + 290 421 callgsubr + 364 140 hintmask 11001010 + 223 callgsubr + 158 hlineto + -189 342 rlineto + hintmask 11100010 + 434 callgsubr + hintmask 11000110 + 24 133 rlineto + hintmask 11100010 + 7 -14 -21 2 -18 hhcurveto + -74 -55 -27 -91 -44 hvcurveto + -71 -150 rlineto + -57 hlineto + hintmask 11010010 + 582 callsubr + hintmask 11100010 + 165 callgsubr + endchar + + + 188 21 -21 212 396 callgsubr + hstemhm + 314 137 hintmask 11001010 + 222 callgsubr + 155 hlineto + -160 276 rlineto + hintmask 11100010 + 444 callgsubr + hintmask 11000110 + 24 130 rlineto + hintmask 11100010 + 411 callgsubr + hintmask 11010010 + 482 callgsubr + hintmask 11100010 + 153 callgsubr + endchar + + + -14 -12 127 167 109 146 127 hstemhm + 356 144 -113 144 hintmask 11101000 + 576 callsubr + 145 111 70 134 78 -49 56 -65 18 530 callsubr + 55 25 28 53 63 vvcurveto + 108 -81 67 -150 -80 -75 -28 -52 -58 vhcurveto + 74 -98 rlineto + 32 43 40 19 51 hhcurveto + 54 38 -21 -51 -47 -29 -27 -78 hvcurveto + -67 -109 87 hlineto + hintmask 11101000 + 435 callgsubr + rlineto + -65 69 86 -25 85 hhcurveto + endchar + + + -78 -12 112 125 92 111 112 hstemhm + 300 143 -118 143 hintmask 11101000 + 242 -12 rmoveto + 129 97 58 111 59 -41 46 -53 15 530 callsubr + 253 callgsubr + hintmask 11101000 + 581 callsubr + -52 61 75 -21 71 hhcurveto + endchar + + + 126 callgsubr + endchar + + + 125 callsubr + endchar + + + 98 214 callgsubr + 73 404 callgsubr + 77 146 -59 325 callsubr + -66 145 hintmask 0101011001000000 + 543 callgsubr + hintmask 0110011001000000 + 145 callsubr + hintmask 1001011001000000 + 223 callsubr + hintmask 0101010110000000 + 265 53 172 callsubr + hintmask 0101101010000000 + 377 callgsubr + hintmask 0101010101000000 + 161 callgsubr + hintmask 0101010110000000 + 194 callgsubr + + + 119 callsubr + 65 404 callgsubr + 77 135 -79 325 callsubr + -95 135 571 callgsubr + 144 hlineto + 129 231 rlineto + hintmask 0110011001000000 + 144 callsubr + hintmask 1001011001000000 + 224 callgsubr + hintmask 0101010110000000 + 234 45 172 callsubr + hintmask 0101101010000000 + 377 callgsubr + hintmask 0101010101000000 + 161 callgsubr + hintmask 0101010110000000 + 194 callgsubr + + + 93 callgsubr + endchar + + + 96 callsubr + endchar + + + 79 -12 138 -107 -21 23 -21 528 124 hstemhm + 433 148 hintmask 10011000 + 66 -12 rmoveto + 104 54 59 219 42 hvcurveto + 16 86 16 84 16 92 rrcurveto + 119 hlineto + hintmask 00111000 + -528 148 652 -380 vlineto + -23 -126 -21 -123 -27 -121 rrcurveto + hintmask 10011000 + -140 -30 -23 -16 -33 hhcurveto + -11 -8 2 2 -9 hvcurveto + hintmask 01011000 + -26 -132 rlineto + hintmask 10011000 + -8 21 20 -2 35 hhcurveto + endchar + + + 12 -12 136 -106 -21 24 431 callsubr + hstemhm + 365 148 hintmask 10011000 + 421 callsubr + 85 hlineto + hintmask 00111000 + -408 148 528 -343 vlineto + -18 -94 -20 -98 -22 -93 rrcurveto + hintmask 10011000 + 502 callgsubr + hintmask 01011000 + -25 -131 rlineto + hintmask 10011000 + -7 18 22 -2 30 hhcurveto + endchar + + + 184 21 319 callsubr + 342 134 hintmask 10111000 + 77 hmoveto + 132 239 hlineto + hintmask 11011000 + -59 callgsubr + endchar + + + 107 21 322 callgsubr + 267 132 hintmask 10111000 + 77 hmoveto + 132 148 hlineto + hintmask 11011000 + -51 callsubr + endchar + + + 106 callsubr + + + 106 callgsubr + + + -73 callgsubr + endchar + + + -63 callgsubr + endchar + + + 268 callgsubr + + + 268 callsubr + + + 52 callgsubr + + + 57 callgsubr + + + 35 callgsubr + endchar + + + 41 callsubr + endchar + + + -22 21 124 callsubr + endchar + + + 163 callsubr + + + 528 callsubr + hstem + 1 559 vstem + -16 callsubr + endchar + + + 516 callgsubr + 494 hintmask 10110000 + 11 callsubr + hintmask 01110000 + -27 -121 rlineto + hintmask 10110000 + -7 17 26 -4 34 hhcurveto + endchar + + + 186 9 -21 88 109 284 109 86 -20 hstem + 45 138 135 127 136 138 vstem + 318 469 callsubr + 88 hlineto + 170 10 104 84 159 vvcurveto + 158 -104 81 -170 10 vhcurveto + 86 -127 -86 vlineto + -169 -10 -104 -81 -158 vvcurveto + -159 104 -84 169 -10 vhcurveto + -135 253 rmoveto + 90 51 43 84 7 vhcurveto + -284 vlineto + -84 7 -51 46 91 vvcurveto + 398 hmoveto + -91 -52 -46 -84 -7 vhcurveto + 284 vlineto + 84 -6 52 -44 -90 vvcurveto + endchar + + + 99 -12 180 -159 -21 73 107 196 107 -107 176 hstemhm + 45 134 98 124 98 134 hintmask 01101111 + 277 -12 rmoveto + 124 73 hlineto + 142 9 90 65 131 vvcurveto + hintmask 01110111 + 132 -90 64 -142 9 vhcurveto + hintmask 01101111 + 69 -124 vlineto + hintmask 01110111 + -69 vlineto + -142 -9 -90 -64 -132 vvcurveto + -131 90 -65 142 -9 vhcurveto + hintmask 10001111 + -98 205 rmoveto + 65 39 28 59 5 vhcurveto + -196 vlineto + -59 6 -39 27 65 vvcurveto + 320 hmoveto + -65 -39 -27 -59 -6 vhcurveto + 196 vlineto + 59 -5 39 -28 -65 vvcurveto + endchar + + + 8 callgsubr + + + 20 callgsubr + + + 91 0 124 528 488 callsubr + 206 147 -65 145 hintmask 11101000 + 512 -188 rmoveto + 132 503 callsubr + vlineto + hintmask 11110000 + -80 528 -147 -528 -206 528 -147 -652 hlineto + hintmask 11101000 + 435 hlineto + endchar + + + 32 0 122 406 488 callsubr + 147 575 callgsubr + hintmask 11101000 + 457 -172 rmoveto + 126 hlineto + 14 551 callgsubr + vlineto + hintmask 11110000 + -79 577 callsubr + -406 -147 577 callsubr + -528 hlineto + hintmask 11101000 + 380 hlineto + endchar + + + 52 21 -21 257 117 278 -20 hstem + 60 145 200 148 vstem + 405 hmoveto + 148 652 579 callgsubr + + + -2 21 -21 197 114 217 -20 hstem + 60 145 147 147 vstem + 352 hmoveto + 147 528 -147 -212 hlineto + -3 -14 -17 -2 -30 hhcurveto + -62 -24 24 66 hvcurveto + 127 -145 -127 vlineto + -150 81 -54 133 34 21 3 4 23 vhcurveto + endchar + + + 332 0 124 528 -20 hstem + 592 callgsubr + vstem + 77 hmoveto + 756 652 368 callsubr + + + 245 0 122 406 -20 hstem + 77 139 126 139 126 139 vstem + 77 hmoveto + 669 528 -139 -406 -126 406 546 callsubr + hlineto + endchar + + + 348 0 124 528 -20 hstemhm + 592 callgsubr + -64 144 hintmask 11111000 + 77 hmoveto + hintmask 11110100 + 692 -188 131 503 callsubr + vlineto + hintmask 11111000 + -80 528 368 callsubr + + + 259 0 122 406 -20 hstemhm + 77 139 126 139 126 139 -62 141 hintmask 11111000 + 77 hmoveto + hintmask 11110100 + 607 -172 127 hlineto + 14 551 callgsubr + vlineto + hintmask 11111000 + -79 406 -139 -406 -126 406 546 callsubr + hlineto + endchar + + + 152 0 504 callsubr + 114 124 hstem + 216 148 185 144 vstem + 216 hmoveto + 223 hlineto + 141 113 56 157 141 -120 60 -139 hvcurveto + -70 238 -339 -124 191 hlineto + 148 -411 rmoveto + 180 62 vlineto + 82 41 -30 -56 -67 -42 -27 -77 hvcurveto + endchar + + + 61 0 115 133 101 57 122 hstem + 182 147 135 139 vstem + 182 hmoveto + 196 hlineto + 340 callgsubr + -128 hvcurveto + -51 179 -304 -122 157 hlineto + 147 -291 rmoveto + 133 41 vlineto + 62 484 callsubr + endchar + + + 275 0 504 callsubr + 238 -20 209 callgsubr + 176 144 85 147 vstem + 77 hmoveto + 209 hlineto + 145 352 callsubr + -65 238 -147 hlineto + 147 -535 rmoveto + 180 53 vlineto + 82 41 -28 -58 -67 -46 -27 -77 hvcurveto + 352 -117 rmoveto + 147 260 callsubr + hlineto + endchar + + + 201 0 115 133 101 179 -20 209 callgsubr + 125 139 67 147 vstem + 77 hmoveto + 186 hlineto + 340 callgsubr + -127 hvcurveto + -42 179 -147 hlineto + 147 -413 rmoveto + 133 32 429 callsubr + 299 -115 rmoveto + 147 491 callsubr + endchar + + + 22 0 504 callsubr + 238 -20 209 callgsubr + 195 144 vstem + 77 hmoveto + 229 hlineto + 144 352 callsubr + -84 238 -147 hlineto + 147 -535 rmoveto + 180 72 vlineto + 83 40 -28 -58 -67 -45 -27 -77 hvcurveto + endchar + + + -34 0 115 133 101 179 -20 209 callgsubr + 145 139 vstem + 77 hmoveto + 206 hlineto + 340 callgsubr + -127 hvcurveto + -62 179 -147 hlineto + 147 -413 rmoveto + 133 52 429 callsubr + endchar + + + 4 -12 127 159 123 140 127 hstem + 22 514 vstem + 239 -12 rmoveto + 163 134 103 231 231 -128 111 -166 -86 -76 -40 -45 -48 hvcurveto + 78 -94 rlineto + 32 37 38 20 49 hhcurveto + 82 53 -43 -97 16 hvcurveto + -225 -123 227 hlineto + -112 -13 -54 -47 -83 hhcurveto + -57 -45 27 34 -35 hvcurveto + -78 -92 rlineto + -63 58 74 -33 85 hhcurveto + endchar + + + -62 -12 121 106 107 97 121 hstemhm + 22 448 -326 326 hintmask 11110000 + 198 -12 rmoveto + hintmask 11101000 + 146 126 78 204 178 -115 92 -141 -71 -66 -24 -48 -48 hvcurveto + 75 -90 rlineto + 23 25 36 18 42 hhcurveto + 59 40 -33 -64 14 hvcurveto + -176 -107 178 hlineto + -82 -13 -49 -24 -61 hhcurveto + -39 -29 14 25 -30 hvcurveto + -79 -88 rlineto + hintmask 11110000 + -39 41 63 -33 72 hhcurveto + endchar + + + 372 -12 127 -94 186 callgsubr + 136 127 -12 488 callsubr + 529 151 hintmask 10110110 + 616 115 rmoveto + -87 -49 83 469 callgsubr + 49 78 87 88 49 -78 -130 -131 -49 -83 -88 hvcurveto + -127 vmoveto + 175 113 128 213 212 -113 123 -175 -153 -103 -95 -168 -22 471 callsubr + hintmask 01101110 + 296 callsubr + -652 147 272 112 vlineto + hintmask 10110110 + -179 18 104 -105 158 hhcurveto + endchar + + + 271 -12 121 -88 460 callgsubr + 85 121 -12 488 callsubr + 434 149 hintmask 10110110 + 553 109 rmoveto + -65 -40 57 102 99 40 52 65 65 40 -52 -99 -102 -40 -57 -65 hvcurveto + 2 -121 rmoveto + 150 102 103 177 173 -102 99 -150 -133 -91 -73 -133 -22 hvcurveto + -85 hlineto + hintmask 01101110 + 194 -147 -528 147 207 84 vlineto + hintmask 10110110 + -139 20 92 -80 135 hhcurveto + endchar + + + 39 21 -21 235 117 183 117 hstem + 53 145 194 148 vstem + 392 hmoveto + 148 652 -235 hlineto + -138 -114 -48 -155 -101 52 -62 74 -29 hvcurveto + -167 -257 rlineto + 168 hlineto + 139 235 rlineto + 73 hlineto + -75 117 rmoveto + -78 -41 33 64 64 41 22 78 hvcurveto + 75 -183 hlineto + endchar + + + 547 callgsubr + hstem + 51 139 147 147 vstem + 337 hmoveto + 147 528 -210 hlineto + -122 -101 -39 -133 -77 42 -53 61 -28 hvcurveto + -142 -198 rlineto + 163 hlineto + 111 175 rlineto + 51 hlineto + -55 100 rmoveto + -62 -30 27 44 49 33 18 61 hvcurveto + 53 -138 hlineto + endchar + + + 18 callsubr + 355 callgsubr + hintmask 10111000 + 29 callsubr + hintmask 01111000 + -100 callgsubr + hintmask 10111000 + -88 callgsubr + endchar + + + -17 25 callgsubr + 256 108 344 callgsubr + -141 146 182 150 hintmask 11101000 + 183 275 rmoveto + 10 0 9 9 vvcurveto + 44 30 38 16 34 hhcurveto + 52 33 -33 -88 -83 -30 -52 -54 -65 -38 54 114 hvcurveto + hintmask 11011000 + 105 -287 rmoveto + 134 98 101 153 152 -87 77 -104 -54 -53 -21 -40 -34 hvcurveto + 13 130 46 6 139 19 44 6 46 11 26 20 -28 128 rcurveline + -31 -14 -28 -7 -60 -8 rrcurveto + -184 -25 -129 -68 -298 vvcurveto + -203 88 -119 158 vhcurveto + endchar + + + -32 25 callgsubr + hstemhm + 39 134 -81 143 135 137 hintmask 11010000 + 265 -12 rmoveto + 148 94 96 139 108 -54 64 -90 59 hvcurveto + hintmask 10110000 + -75 50 -53 14 23 vvcurveto + 20 18 1 134 9 vhcurveto + 45 3 49 11 30 17 -28 128 rcurveline + -31 -14 -27 -6 -116 -6 rrcurveto + -133 -9 -84 -26 -104 vvcurveto + -60 54 -48 57 -41 vhcurveto + hintmask 11010000 + -94 -29 -70 -65 -112 vvcurveto + -137 100 -85 126 vhcurveto + -92 228 rmoveto + 74 48 47 68 18 vhcurveto + 47 -35 34 -35 -57 vvcurveto + -83 -46 -38 -54 -51 -46 39 70 vhcurveto + endchar + + + 90 callsubr + + + -146 290 callgsubr + 194 115 -341 hlineto + endchar + + + 6 356 callgsubr + hstemhm + 11 141 194 575 callgsubr + hintmask 11110000 + 227 266 rmoveto + 13 115 rlineto + 106 -266 -160 hlineto + 19 37 15 49 7 65 rrcurveto + -75 -266 rmoveto + hintmask 11101000 + 280 -172 450 callgsubr + hintmask 11110000 + -79 381 -370 hlineto + -23 -197 -17 -140 -17 -31 -24 -13 rlinecurve + -31 -96 hlineto + 14 -191 rlineto + 127 hlineto + endchar + + + -62 callgsubr + endchar + + + 183 297 callgsubr + -20 20 7 hstemhm + 315 131 hintmask 11001010 + 241 callsubr + 158 hlineto + -158 256 rlineto + hintmask 11100010 + 318 callsubr + hintmask 11000110 + 23 136 rlineto + hintmask 11100010 + 422 callsubr + hintmask 11010010 + 584 callsubr + hintmask 11100010 + 171 callgsubr + endchar + + + -102 -12 112 105 442 callsubr + 220 -12 rmoveto + 112 110 53 100 67 -37 35 -60 16 hvcurveto + 164 callgsubr + rlineto + -47 64 61 -12 67 hhcurveto + endchar + + + 449 callgsubr + hstemhm + 65 142 169 142 hintmask 10111000 + 543 callsubr + hintmask 11011000 + 40 callgsubr + endchar + + + 449 callgsubr + 96 532 callgsubr + 65 142 -83 506 callgsubr + -92 142 hintmask 1011010010000000 + 543 callsubr + hintmask 1101010010000000 + 40 callgsubr + hintmask 1011001010000000 + 231 76 rmoveto + hintmask 1010110100000000 + 294 callgsubr + hintmask 1011010100000000 + 458 callsubr + 589 callgsubr + 281 callsubr + hintmask 1011001010000000 + 307 callgsubr + + + 104 callgsubr + endchar + + + -5 -12 139 -107 -21 22 -21 381 115 hstemhm + 362 147 hintmask 10011000 + 65 -12 rmoveto + 96 54 61 111 16 hvcurveto + 11 73 8 75 9 73 rrcurveto + 103 hlineto + hintmask 00111000 + -381 147 496 -366 vlineto + hintmask 10011000 + -12 -99 -9 -98 -13 -98 rrcurveto + -54 -7 -20 -20 -27 hhcurveto + -9 -8 2 2 -8 hvcurveto + hintmask 01011000 + -24 -132 rlineto + hintmask 10011000 + -7 18 18 -4 23 hhcurveto + endchar + + + 82 21 -21 43 172 126 155 hstem + 65 129 271 130 vstem + 65 hmoveto + 129 127 hlineto + 53 -11 105 -5 56 vhcurveto + 4 hlineto + 14 -42 21 -55 14 -42 59 -159 rcurveline + 80 hlineto + 58 159 14 42 20 53 14 44 rlinecurve + 4 hlineto + -5 -56 -10 -105 -53 vvcurveto + -127 130 496 -167 vlineto + -58 -170 -12 -40 -12 -36 -12 -35 rlinecurve + -4 hlineto + -11 35 -11 36 -13 40 -62 170 rcurveline + -168 hlineto + endchar + + + 4 21 -21 189 128 179 -20 hstem + 65 147 159 147 vstem + 344 callsubr + 189 159 -189 147 432 callsubr + -179 -159 179 -147 hlineto + endchar + + + -48 callgsubr + endchar + + + -4 21 -21 381 115 hstem + 65 147 461 callgsubr + vstem + 344 callsubr + 381 150 -381 147 496 -444 hlineto + endchar + + + 69 callgsubr + + + 42 callgsubr + endchar + + + -86 21 -21 381 115 hstem + 172 147 vstem + 492 callsubr + 381 147 115 -440 -115 146 hlineto + endchar + + + 254 callgsubr + hstemhm + 12 497 hintmask 10110000 + -98 callgsubr + hintmask 01110000 + -26 -112 rlineto + hintmask 10110000 + 252 callgsubr + endchar + + + 201 -163 -21 172 45 callgsubr + 193 -20 558 callgsubr + 128 143 -139 134 133 151 hintmask 11111101 + 318 -184 rmoveto + 143 127 hlineto + -5 72 rlineto + -18 27 30 -9 32 hhcurveto + 101 94 98 170 153 -71 99 -111 -36 -37 -14 -17 -29 hvcurveto + 5 76 rlineto + 148 -143 -148 vlineto + 4 -72 rlineto + 16 -24 -28 11 -40 hhcurveto + -96 -95 -98 -162 -162 75 -98 116 33 33 14 16 26 hvcurveto + -4 -75 rlineto + -49 165 rmoveto + -50 -29 44 98 94 34 44 41 hvcurveto + hintmask 11111011 + 19 21 -5 -14 17 hvcurveto + -239 vlineto + hintmask 11111101 + -16 -16 -17 -6 -20 hhcurveto + hintmask 11111011 + 242 hmoveto + -17 -19 4 16 -19 hvcurveto + 239 vlineto + 16 20 18 5 20 hhcurveto + 50 25 -45 -89 -102 -33 -44 -45 hvcurveto + endchar + + + 123 callsubr + + + 17 0 115 381 -20 389 callsubr + 146 147 -62 140 hintmask 11101000 + 443 -172 rmoveto + 450 callgsubr + hintmask 11110000 + -78 577 callgsubr + -381 -146 577 callgsubr + -496 hlineto + hintmask 11101000 + 378 hlineto + endchar + + + -28 21 -21 161 115 220 -20 hstem + 48 147 143 147 vstem + 338 hmoveto + 147 432 callsubr + -214 hlineto + -4 -18 -16 -2 -21 hhcurveto + -62 -26 26 51 hvcurveto + 143 -147 -143 vlineto + -138 85 -54 118 41 19 2 6 27 vhcurveto + endchar + + + 225 0 115 381 -20 hstem + 584 callgsubr + vstem + 65 hmoveto + 674 496 369 callgsubr + + + 251 0 115 381 -20 hstemhm + 584 callgsubr + -62 568 callgsubr + 65 hmoveto + hintmask 11110100 + 612 -172 450 callgsubr + hintmask 11111000 + -78 381 369 callgsubr + + + 45 453 callsubr + 43 115 hstem + 175 147 125 140 vstem + 175 hmoveto + 200 hlineto + 351 callsubr + -53 158 -296 -115 149 hlineto + 147 -269 rmoveto + 117 46 292 callgsubr + endchar + + + 161 453 callsubr + 158 -20 hstem + 65 147 108 141 66 147 vstem + 65 hmoveto + 183 hlineto + 120 93 43 128 124 -93 43 -120 hvcurveto + -36 158 -147 hlineto + 147 -384 rmoveto + 117 29 292 callgsubr + 286 -112 415 callsubr + endchar + + + -62 453 callsubr + 158 -20 hstem + 65 147 127 141 vstem + 65 hmoveto + 202 hlineto + 121 92 43 128 124 -92 43 -121 hvcurveto + -55 158 -147 hlineto + 147 -384 rmoveto + 117 49 vlineto + 53 25 -19 -38 -41 -25 -19 -53 hvcurveto + endchar + + + -111 446 callsubr + 21 411 -313 313 hintmask 11110000 + 187 -12 rmoveto + hintmask 11101000 + 140 105 87 173 175 -109 85 -138 -63 -59 -23 -34 -35 hvcurveto + 63 -84 rlineto + 18 25 27 11 33 hhcurveto + 60 40 -26 -68 13 hvcurveto + -170 -97 172 hlineto + -76 -12 -44 -29 -65 hhcurveto + -35 -36 14 19 -24 hvcurveto + -54 -86 rlineto + hintmask 11110000 + -43 45 63 -16 58 hhcurveto + endchar + + + 198 25 callgsubr + -86 -21 188 128 73 119 -12 -20 389 callsubr + 377 151 hintmask 10110110 + 505 107 rmoveto + -53 -33 55 86 86 33 55 53 57 27 -55 -86 -86 -27 -55 -57 hvcurveto + 9 -119 rmoveto + 125 101 95 165 165 -101 95 -125 -114 -88 -71 -121 -24 hvcurveto + -76 hlineto + hintmask 01101110 + 180 -147 -496 147 188 75 vlineto + hintmask 10110110 + -125 21 90 -75 116 hhcurveto + endchar + + + -34 21 -21 162 99 127 108 hstem + 61 145 127 147 vstem + 333 hmoveto + 147 496 -212 hlineto + -115 -92 -40 -124 -69 37 -45 49 -26 hvcurveto + -132 -192 rlineto + 163 hlineto + 100 162 rlineto + 55 hlineto + -47 99 rmoveto + -53 -27 27 40 40 27 20 53 hvcurveto + 47 -127 hlineto + endchar + + + -62 callgsubr + -98 270 -29 callsubr + + + -60 -20 callgsubr + 61 143 hstemhm + 87 358 callgsubr + -93 125 hintmask 11111010 + -105 callgsubr + -197 267 -33 callgsubr + hintmask 11111100 + 365 callgsubr + + + -6 382 callsubr + 102 -21 334 126 96 67.5 -67.5 71 -71 145 389 callsubr + 172 150 hintmask 11100111 + 302 -196 rmoveto + 143 89 90 286 183 -64 97 -121 -63 -46 -34 -34 -35 hvcurveto + 7 89 rlineto + 75 169 vlineto + hintmask 11101011 + 71 -169 vlineto + hintmask 11100111 + 74 -147 vlineto + hintmask 11110011 + -75 vlineto + -68 -5 rlineto + hintmask 11100111 + -65 68 -556 147 287 vlineto + 31 30 23 16 29 hhcurveto + 58 32 -27 -145 -193 -44 -50 -53 -13 -11 3 4 -13 hvcurveto + -26 556 callgsubr + 18 24 -6 36 hhcurveto + endchar + + + -146 290 callgsubr + 194 115 -341 hlineto + 187 76 -44 callsubr + + + -111 -20 callgsubr + hstem + 36 311 vstem + 281 -12 rmoveto + 54 61 16 43 49 hvcurveto + -53 90 rlineto + -19 -24 -34 -18 -36 hhcurveto + -65 -45 32 73 -12 hvcurveto + 171 97 -169 hlineto + 65 14 42 29 59 hhcurveto + 32 26 -11 -20 25 hvcurveto + 63 90 rlineto + 31 -37 -48 22 -61 hhcurveto + -139 -118 -87 -173 -173 105 -87 140 hvcurveto + endchar + + + -7 callsubr + endchar + + + 80 callgsubr + + + 271 callsubr + 93 143 hstemhm + -43 143 -35 147 -36 143 394 callsubr + hintmask 11110100 + -36 73 -83 callsubr + + + -279 402 callgsubr + 95 139 hstemhm + 9 127 -59 147 -60 126 hintmask 11110000 + 72 571 rmoveto + 36 28 30 40 39 -28 30 -36 -36 -27 -30 -39 -40 27 -30 36 hvcurveto + hintmask 11100100 + 155 hmoveto + 36 27 30 40 39 -27 30 -36 -36 -27 -30 -39 -40 27 -30 36 hvcurveto + hintmask 11101000 + -150 -571 415 callsubr + endchar + + + 113 callgsubr + + + 202 -12 139 -127 112 -103 -21 241 109 43 115 hstemhm + 136 126 83 147 112 140 hintmask 00111110 + 65 -12 rmoveto + 95 53 52 92 20 hvcurveto + 19 83 4 82 6 84 rrcurveto + 83 hlineto + hintmask 01011111 + -381 187 vlineto + 351 callsubr + -40 158 -356 hlineto + hintmask 10011110 + -5 -107 -4 -98 -17 -90 rrcurveto + -59 -11 -24 -15 -19 hhcurveto + -10 -8 2 2 -7 hvcurveto + hintmask 01011010 + -25 -132 rlineto + hintmask 00111110 + -7 18 18 -4 23 hhcurveto + hintmask 01011011 + 427 124 rmoveto + 117 33 292 callgsubr + endchar + + + 210 0 112 77 128 -88 109 158 -20 389 callsubr + 141 147 112 140 hintmask 11011110 + 344 callsubr + 189 141 -189 187 hlineto + 120 92 43 128 hvcurveto + hintmask 10111110 + 124 -92 43 -120 vhcurveto + -40 158 -147 590 callgsubr + -179 -141 179 -147 vlineto + 435 -384 rmoveto + hintmask 10111110 + 117 33 292 callgsubr + endchar + + + 109 callsubr + + + 104 callgsubr + 238 76 -44 callsubr + + + 449 callgsubr + hstemhm + 65 142 169 142 hintmask 10111000 + 543 callsubr + hintmask 11011000 + 40 callgsubr + 221 76 -29 callsubr + + + 254 callgsubr + 96 532 callgsubr + 95 506 callgsubr + hintmask 10110110 + -98 callgsubr + hintmask 01110110 + -26 -112 rlineto + hintmask 10110110 + 252 callgsubr + hintmask 01110110 + 147 766 rmoveto + hintmask 01101110 + 294 callgsubr + hintmask 01110110 + 458 callsubr + hintmask 01101110 + 281 callsubr + hintmask 01110110 + 307 callgsubr + + + 0 0 115 381 -20 hstem + 65 147 155 147 vstem + 222 -172 rmoveto + 126 hlineto + 17 172 rlineto + 149 432 callsubr + -381 -155 577 callgsubr + -496 152 hlineto + endchar + + + 46 0 114 170 104 95 117 hstem + 144 148 151 144 vstem + 144 hmoveto + 193 hlineto + 142 108 52 157 132 -114 47 -141 hvcurveto + -40 95 215 117 -215 96 -148 -96 -119 -117 119 hlineto + 148 -369 rmoveto + 170 32 vlineto + 83 36 -23 -57 -67 -39 -23 -76 hvcurveto + endchar + + + -13 0 107 125 100 67 98 hstem + 120 147 122 140 vstem + 120 hmoveto + 183 hlineto + 123 103 42 128 118 -96 44 -127 hvcurveto + -39 67 179 98 -179 81 -147 -81 -95 -98 95 hlineto + 147 -292 rmoveto + 125 29 vlineto + 62 31 -17 -46 -45 -36 -17 -57 hvcurveto + endchar + + + 22 453 callsubr + 87 116 hstem + 155 147 122 140 vstem + 155 hmoveto + 197 hlineto + 351 callsubr + -50 87 168 116 -168 87 -147 -87 -129 -116 129 hlineto + 147 -313 rmoveto + 117 43 292 callgsubr + endchar + + + 94 callgsubr + + + 122 callgsubr + + + 6 callsubr + + + -4 0 139 -118 -21 526 138 -12 -20 hstemhm + -7 616 hintmask 01011000 + 190 hmoveto + 184 hlineto + hintmask 01101000 + 122 462 rlineto + 38 10 17 26 30 hhcurveto + 11 11 -4 -2 8 hvcurveto + hintmask 01011000 + 26 132 rlineto + hintmask 10101000 + 8 -20 -16 4 -35 hhcurveto + -96 -47 -52 -123 -30 hvcurveto + -37 -141 -17 -72 -11 -65 -16 -72 rlinecurve + -4 hlineto + -20 72 -14 65 -19 72 rrcurveto + hintmask 01011000 + -78 304 rlineto + -156 hlineto + endchar + + + -73 0 130 276 134 -12 -20 23 -20 hstemhm + -7 543 hintmask 10011000 + 157 hmoveto + 182 hlineto + hintmask 11001000 + 98 356 rlineto + 28 7 14 22 25 hhcurveto + 11 5 0 -4 11 hvcurveto + hintmask 10011000 + 26 129 rlineto + hintmask 11001000 + 6 -18 -15 3 -34 hhcurveto + -90 -43 -42 -114 -26 hvcurveto + -23 -84 -13 -55 -11 -44 -11 -71 rlinecurve + -5 hlineto + -15 57 -13 60 -14 53 rrcurveto + hintmask 10101000 + -60 228 rlineto + -152 hlineto + endchar + + + -45 0 109 270 538 callgsubr + 21 -20 hstemhm + 12 541 hintmask 10011000 + 179 hmoveto + 177 hlineto + hintmask 11001000 + 86 315 rlineto + 38 11 17 26 29 hhcurveto + 12 9 -4 -2 8 hvcurveto + hintmask 10011000 + 25 124 rlineto + hintmask 11001000 + 7 -20 -17 4 -34 hhcurveto + -91 -43 -57 -117 -30 hvcurveto + -20 -72 -13 -49 -9 -52 -9 -52 310 callgsubr + 52 -13 52 -13 49 rrcurveto + hintmask 10101000 + -64 234 383 callgsubr + endchar + + + 191 callsubr + hlineto + 10 296 rlineto + -126 hlineto + -20 -172 rlineto + -275 hlineto + endchar + + + 193 callgsubr + hlineto + 9 288 rlineto + -123 hlineto + -20 -166 rlineto + -229 hlineto + endchar + + + -145 290 callgsubr + 195 hlineto + 10 287 552 callgsubr + -21 -172 rlineto + -211 hlineto + endchar + + + -32 21 -21 265 230 callsubr + 166 124 hstemhm + 102 389 callgsubr + 102 hmoveto + 147 265 125 97 -125 166 264 124 -411 hlineto + hintmask 11011000 + -290 vlineto + -76 -5 rlineto + hintmask 10111000 + -92 76 vlineto + endchar + + + -81 21 -21 194 92.5 -92.5 95 117 122 hstemhm + 102 389 callgsubr + 102 hmoveto + 147 194 125 95 -125 117 216 122 -363 hlineto + hintmask 11011000 + -239 vlineto + -76 -5 rlineto + hintmask 10111000 + -90 76 vlineto + endchar + + + -107 21 -21 180 230 callsubr + 104 115 hstemhm + 104 389 callgsubr + 104 hmoveto + 147 180 120 97 -120 104 194 115 -341 hlineto + hintmask 11011000 + -219 -1 vlineto + -82 -5 rlineto + hintmask 10111000 + -92 83 vlineto + endchar + + + 327 0 124 153 353 callgsubr + 364 140 244 145 hintmask 11001011 + 223 callgsubr + 40 -188 132 503 callsubr + -96 vlineto + -120 218 rlineto + hintmask 11100011 + 434 callgsubr + hintmask 11000111 + 24 133 rlineto + hintmask 11100011 + 7 -14 -21 2 -18 hhcurveto + -74 -55 -27 -91 -44 hvcurveto + -71 -150 rlineto + -57 hlineto + hintmask 11010011 + 582 callsubr + hintmask 11100011 + 165 callgsubr + endchar + + + 235 0 122 90 396 callgsubr + hstemhm + 314 137 209 140 hintmask 11001011 + 222 callgsubr + 51 -172 126 hlineto + 14 551 callgsubr + -107 vlineto + -89 154 rlineto + hintmask 11100011 + 444 callgsubr + hintmask 11000111 + 24 130 rlineto + hintmask 11100011 + 411 callgsubr + hintmask 11010011 + 482 callgsubr + hintmask 11100011 + 153 callgsubr + endchar + + + 225 0 115 83 115 56 139 -12 -20 25 -20 20 7 hstemhm + 315 131 207 139 hintmask 11001011 + 241 callsubr + 56 426 callsubr + -108 vlineto + -87 141 rlineto + hintmask 11100011 + 318 callsubr + hintmask 11000111 + 23 136 rlineto + hintmask 11100011 + 422 callsubr + hintmask 11010011 + 584 callsubr + hintmask 11100011 + 171 callgsubr + endchar + + + -14 13 -21 26 -21 285 109 146 127 hstemhm + 216 136.5 3.5 144 -113 144 hintmask 01111010 + 216 -188 rmoveto + 131 hlineto + 11 185 rlineto + 102 22 71 66 107 vvcurveto + 78 -49 56 -65 18 vhcurveto + 4 vlineto + hintmask 01110100 + 55 25 28 53 63 vvcurveto + 108 -81 67 -150 -80 -75 -28 -52 -58 vhcurveto + 74 -98 rlineto + 32 43 40 19 51 hhcurveto + 54 38 -21 -51 -47 -29 -27 -78 hvcurveto + -67 -109 87 hlineto + hintmask 10111010 + 435 callgsubr + 53 -50 63 -26 65 -10 rlinecurve + endchar + + + -78 14 -21 26 -21 227 92 111 112 hstemhm + 183.5 564 callsubr + -21 143 -118 143 hintmask 01111000 + 186 -172 rmoveto + 127 hlineto + 16 170 rlineto + hintmask 01110010 + 83 21 56 54 84 vvcurveto + 59 -41 46 -53 15 vhcurveto + 4 vlineto + hintmask 01110100 + 253 callgsubr + hintmask 10110010 + 581 callsubr + hintmask 10111000 + 44 -37 51 -22 51 -9 rrcurveto + endchar + + + -102 13 -21 213 442 callsubr + 163 -172 rmoveto + 124 hlineto + 17 170 rlineto + 77 20 61 49 74 vvcurveto + 67 -37 35 -60 16 vhcurveto + 164 callgsubr + 44 -32 42 -16 44 -7 rlinecurve + endchar + + + 89 0 124 153 353 callgsubr + 77 147 286 144 hintmask 11001011 + 77 hmoveto + 147 277 72 hlineto + 173 -277 rlineto + 41 -188 131 503 callsubr + -107 vlineto + -136 221 rlineto + hintmask 11100011 + 438 callsubr + hintmask 11000111 + 24 133 rlineto + hintmask 11100011 + 7 -14 -22 452 callsubr + -50 hvcurveto + -85 -150 rlineto + -72 hlineto + hintmask 11010011 + 256 -147 vlineto + endchar + + + 34 0 122 90 117 77 134 -12 -20 23 -20 29 488 callsubr + 235 140 hintmask 11000111 + 77 370 callgsubr + 48 -172 127 hlineto + 13 551 callgsubr + -114 vlineto + -100 157 rlineto + hintmask 11100011 + 56 89 rlineto + 29 19 14 9 25 hhcurveto + 10 9 536 callgsubr + hintmask 11001011 + 24 129 rlineto + hintmask 11000111 + 5 -13 -19 4 -18 hhcurveto + -68 -46 -22 -71 -42 hvcurveto + -70 -118 rlineto + -48 hlineto + hintmask 11010011 + 199 -147 vlineto + endchar + + + 10 0 115 83 115 56 139 -12 -20 25 7 0 -20 389 callsubr + 226 139 hintmask 11000111 + 65 369 callsubr + 60 426 callsubr + -112 vlineto + -93 145 rlineto + hintmask 11100011 + 248 callsubr + hintmask 11001011 + 247 callgsubr + hintmask 11010011 + 183 -147 vlineto + endchar + + + 171 21 -21 277 119 130 138 -136 124 3 9 hstemhm + 204 148 hintmask 11010100 + 204 hmoveto + 148 277 71 hlineto + 174 -277 rlineto + 155 hlineto + -213 345 590 callsubr + 70 122 rlineto + 47 27 16 12 483 callsubr + hintmask 11001100 + 24 133 590 callsubr + 7 -14 -21 452 callsubr + -51 hvcurveto + -84 -150 rlineto + -72 hlineto + hintmask 11010100 + 256 -327 495 callgsubr + vlineto + endchar + + + 96 21 -21 212 117 77 122 3 -20 29 -20 hstemhm + 182 147 hintmask 11100100 + 182 370 callgsubr + 152 hlineto + -178 279 56 89 rlineto + 29 18 14 9 26 hhcurveto + 9 9 -2 -2 7 hvcurveto + hintmask 11010100 + 24 129 rlineto + hintmask 11001100 + 5 -13 -19 4 -18 hhcurveto + -68 -47 -22 -71 -41 hvcurveto + -70 -118 rlineto + -48 hlineto + hintmask 11100100 + 199 -304 -122 157 vlineto + endchar + + + 78 21 -21 198 115 56 139 -127 115 5 7 hstemhm + 175 147 hintmask 11010100 + 175 386 callgsubr + hintmask 11100100 + 248 callsubr + hintmask 11001100 + 247 callgsubr + hintmask 11010100 + 183 -296 -115 149 vlineto + endchar + + + 111 0 124 148 129 251 488 callsubr + 225 148 -65 144 hintmask 11111000 + 77 -12 callsubr + hlineto + hintmask 11110100 + 83 -188 132 hlineto + 12 554 callsubr + vlineto + hintmask 11111000 + -79 528 -148 -251 -225 296 callsubr + hlineto + endchar + + + 58 0 122 85 127 194 488 callsubr + 173 148 -62 568 callgsubr + 77 376 callgsubr + hlineto + hintmask 11110100 + 86 -172 126 hlineto + 14 551 callgsubr + vlineto + hintmask 11111000 + -78 406 172 callgsubr + endchar + + + 30 0 115 74 128 179 -20 hstemhm + 67 147 159 147 -64 568 callgsubr + 67 hmoveto + 147 189 159 -189 hlineto + hintmask 11110100 + 83 -172 127 hlineto + 13 554 callgsubr + vlineto + hintmask 11111000 + -76 577 callgsubr + -179 -159 179 -147 hlineto + endchar + + + 4 16 -21 23 -21 540 127 327 callsubr + 82 564 callsubr + hintmask 01111000 + 279 -188 rmoveto + 132 hlineto + 11 185 53 13 47 30 38 44 rlinecurve + -78 92 rlineto + -34 -32 -42 -27 -53 hhcurveto + -96 -62 78 134 131 71 79 89 47 35 -22 -30 33 hvcurveto + 78 94 rlineto + 45 -44 -68 40 -84 hhcurveto + -165 -143 -126 -216 hvcurveto + hintmask 10111000 + -187 101 -111 132 -29 vhcurveto + endchar + + + -58 21 -21 419 121 hstem + 46 149 vstem + 230 -172 rmoveto + 127 hlineto + 16 166 48 11 43 23 34 37 rlinecurve + -40 callsubr + -145 76 -86 103 -29 hvcurveto + endchar + + + -111 19 -21 391 119 hstem + 36 151 vstem + 211 -172 rmoveto + 124 hlineto + 17 169 32 9 33 16 28 25 rlinecurve + -26 callgsubr + -134 70 -87 100 -29 hvcurveto + endchar + + + -28 callsubr + endchar + + + -25 callsubr + endchar + + + -55 -163 -21 680 -20 hstem + 191 147 vstem + 191 535 callgsubr + 184 hlineto + 173 496 303 callgsubr + 179 -496 rlineto + endchar + + + -53 21 -21 207 97 348 -20 hstem + 189 147 vstem + 189 hmoveto + 147 207 141 97 -107 hlineto + 163 348 rlineto + -154 hlineto + -59 -150 -18 -49 -18 -45 -19 -50 rlinecurve + -4 hlineto + -18 50 -17 45 -18 49 -58 150 335 callgsubr + 163 -348 rlineto + -14 hlineto + -93 -5 rlineto + -92 141 vlineto + endchar + + + -110 21 -21 129 98 301 -20 hstem + 160 147 vstem + 532 callsubr + 129 118 98 -96 hlineto + 145 301 -57 callsubr + 146 -301 rlineto + -2 hlineto + -94 -6 rlineto + -92 118 vlineto + endchar + + + -55 -163 -21 184 97 399 -20 hstem + 191 147 vstem + 191 535 callgsubr + 184 135 97 -101 hlineto + 139 399 303 callgsubr + 144 -399 rlineto + -30 hlineto + -77 -5 rlineto + -92 142 vlineto + endchar + + + 27 0 124 528 -20 hstem + 452 140 vstem + 11 hmoveto + 158 hlineto + 61 133 14 34 15 33 15 40 rlinecurve + 4 hlineto + 18 -40 15 -33 16 -34 65 -133 rcurveline + 60 -188 128 hlineto + 12 554 callsubr + -104 vlineto + -112 204 169 324 rlineto + -157 hlineto + -52 -123 -13 -30 -14 -34 -15 -41 rlinecurve + -4 hlineto + -18 41 -14 34 -15 30 -57 123 rcurveline + -164 hlineto + 170 -317 rlineto + endchar + + + -31 0 122 406 -20 hstem + 393 141 vstem + 11 hmoveto + 156 hlineto + 43 91 11 28 12 28 12 33 rlinecurve + 4 hlineto + 14 -33 13 -28 14 -28 45 -91 rcurveline + 58 -172 127 hlineto + 14 551 callgsubr + -107 vlineto + -82 143 143 263 rlineto + -156 hlineto + -33 -83 -9 -24 -13 -29 -13 -35 rlinecurve + -4 hlineto + -15 35 -13 29 -11 24 -39 83 rcurveline + -162 hlineto + 143 -257 rlineto + endchar + + + -30 0 115 381 -20 hstem + 398 139 vstem + 14 hmoveto + 152 hlineto + 39 82 12 29 14 29 12 28 rlinecurve + 4 hlineto + 16 -28 15 -30 16 -28 48 -82 rcurveline + 56 426 callsubr + -110 vlineto + -80 126 144 255 rlineto + -152 hlineto + -34 -80 -11 -28 -13 -29 -10 -28 rlinecurve + -4 hlineto + -14 28 -15 29 -13 28 -44 80 335 callgsubr + 143 -238 rlineto + endchar + + + 67 0 124 133 117 278 -20 hstemhm + 60 145 200 148 -61 568 callgsubr + 405 hmoveto + hintmask 11110100 + 87 -188 128 hlineto + 12 554 callsubr + vlineto + hintmask 11111000 + -79 528 579 callgsubr + + + 13 0 122 75 114 217 -20 hstemhm + 60 145 147 147 -61 568 callgsubr + 352 hmoveto + hintmask 11110100 + 86 -172 126 hlineto + 14 551 callgsubr + vlineto + hintmask 11111000 + -79 577 callsubr + -212 hlineto + -3 -14 -17 -2 -30 hhcurveto + -62 -24 24 66 hvcurveto + 127 -145 -127 vlineto + -150 81 -54 133 34 21 3 4 23 vhcurveto + endchar + + + -3 0 115 46 115 220 -20 hstemhm + 48 147 143 147 -60 139 hintmask 11111000 + 338 hmoveto + hintmask 11110100 + 87 426 callsubr + vlineto + hintmask 11111000 + -79 577 callgsubr + -214 hlineto + -4 -18 -16 -2 -21 hhcurveto + -62 -26 26 51 hvcurveto + 143 -147 -143 vlineto + -138 85 -54 118 41 19 2 6 27 vhcurveto + endchar + + + 52 21 -21 305 117 230 -20 209 callgsubr + 201 524 callsubr + 298 hlineto + 4 21 24 3 38 hhcurveto + 82 36 -31 -90 hvcurveto + -184 144 184 vlineto + 175 -93 63 -154 -43 -26 -2 -5 -29 vhcurveto + 237 -147 vlineto + endchar + + + -2 21 -21 236 113 179 -20 209 callgsubr + 148 524 callsubr + 230 hlineto + 3 14 17 3 30 hhcurveto + 63 24 -25 -65 hvcurveto + -146 144 146 vlineto + 150 -81 53 -133 -33 -22 -2 -5 -23 vhcurveto + 186 -147 vlineto + endchar + + + 155 callgsubr + + + 98 callgsubr + endchar + + + 97 callsubr + endchar + + + 290 21 -21 277 214 callsubr + 33 404 callgsubr + 256 124 -16 140 -16 124 hintmask 1100100101000000 + 223 callgsubr + 158 hlineto + -189 342 rlineto + hintmask 1110000101000000 + 434 callgsubr + hintmask 1100010101000000 + 24 133 rlineto + hintmask 1110000101000000 + 7 -14 -21 2 -18 hhcurveto + -74 -55 -27 -91 -44 hvcurveto + -71 -150 rlineto + -57 hlineto + hintmask 1101000101000000 + 582 callsubr + hintmask 1110000110100000 + 165 callgsubr + 244 355 172 callsubr + hintmask 1100101000100000 + 377 callgsubr + hintmask 1100100110000000 + 161 callgsubr + hintmask 1110000110100000 + 194 callgsubr + + + 188 21 -21 212 396 callgsubr + 42 404 callgsubr + 200 124 -10 137 -19 124 hintmask 1100100101000000 + 222 callgsubr + 155 hlineto + -160 276 rlineto + hintmask 1110000101000000 + 444 callgsubr + hintmask 1100010101000000 + 24 130 rlineto + hintmask 1110000101000000 + 411 callgsubr + hintmask 1101000101000000 + 482 callgsubr + hintmask 1110000110100000 + 153 callgsubr + 217 306 172 callsubr + hintmask 1100101000100000 + 377 callgsubr + hintmask 1100100110000000 + 161 callgsubr + hintmask 1110000110100000 + 194 callgsubr + + + 183 297 callgsubr + -20 20 7 64 532 callgsubr + 209 114 -8 131 -7 114 hintmask 1100101001000000 + 241 callsubr + 158 hlineto + -158 256 rlineto + hintmask 1110001001000000 + 318 callsubr + hintmask 1100011001000000 + 23 136 rlineto + hintmask 1110001001000000 + 422 callsubr + hintmask 1101001001000000 + 584 callsubr + hintmask 1110001010000000 + 171 callgsubr + 217 316 rmoveto + hintmask 1100100100100000 + 294 callgsubr + hintmask 1100101000100000 + 458 callsubr + hintmask 1100100110000000 + 281 callsubr + hintmask 1110001010000000 + 307 callgsubr + + + 65 callgsubr + endchar + + + -5 -37 callsubr + 45 404 callgsubr + -6 585 -471 325 callsubr + hintmask 11101100 + -104 callsubr + hintmask 11101011 + 88 45 172 callsubr + hintmask 11110001 + 135 callgsubr + + + 33 callgsubr + 54 404 callgsubr + -6 516 -440 325 callsubr + hintmask 11101100 + -103 callsubr + hintmask 11101011 + 84 54 172 callsubr + hintmask 11110001 + 135 callgsubr + + + 18 callsubr + 64 532 callgsubr + 42 141 -80 114 104 147 -135 114 hintmask 1011010100000000 + 29 callsubr + hintmask 0111010100000000 + -100 callgsubr + hintmask 1011010100000000 + -88 callgsubr + hintmask 0111001100000000 + 35 470 rmoveto + hintmask 0110100010000000 + 294 callgsubr + hintmask 0111000010000000 + 458 callsubr + hintmask 0110101100000000 + 281 callsubr + hintmask 0111001100000000 + 307 callgsubr + + + -5 callsubr + endchar + + + 20 callsubr + endchar + + + -5 callgsubr + + + -14 callsubr + 45 404 callgsubr + 77 147 -114 325 callsubr + hintmask 11101100 + 77 155 callsubr + hintmask 11101011 + 211 45 172 callsubr + hintmask 11110101 + 135 callgsubr + + + 60 callgsubr + 59 404 callgsubr + 77 147 -133 325 callsubr + hintmask 11101100 + 77 hmoveto + 369 114 -62 callsubr + hintmask 11101011 + 192 59 172 callsubr + hintmask 11110101 + 135 callgsubr + + + -60 -20 callgsubr + 64 532 callgsubr + 96 506 callgsubr + -84 125 hintmask 11110101 + -105 callgsubr + -88 270 rmoveto + hintmask 11101110 + 294 callgsubr + hintmask 11110110 + 458 callsubr + hintmask 11101101 + 281 callsubr + hintmask 11110101 + 307 callgsubr + + + 76 callgsubr + + + 100 callsubr + + + 100 callgsubr + + + 98 214 callgsubr + 97 94 hstemhm + 77 146 -32 32 231 145 hintmask 01011101 + 543 callgsubr + hintmask 01101101 + 145 callsubr + hintmask 10011101 + 223 callsubr + hintmask 01011011 + 114 77 68 callsubr + + + 119 callsubr + 89 94 496 callgsubr + -52 52 182 135 571 callsubr + 144 hlineto + 129 231 rlineto + hintmask 01101101 + 144 callsubr + hintmask 10011101 + 224 callgsubr + hintmask 01011011 + 83 312 callgsubr + + + 449 callgsubr + 116 93 hstemhm + 65 142 -59 59 169 142 hintmask 10111010 + 543 callsubr + hintmask 11011010 + 40 callgsubr + hintmask 10110110 + 83 96 -24 callgsubr + + + 256 callsubr + 36 140 327 callsubr + -36 296 callgsubr + -36 151 hintmask 11110010 + -70 callsubr + hintmask 11101100 + -111 585 -100 callsubr + + + 71 callsubr + 45 140 327 callsubr + -69 296 callgsubr + -71 151 hintmask 11110010 + -99 callgsubr + hintmask 11101100 + -111 476 -100 callsubr + + + 78 callsubr + 61 143 266 callgsubr + -90 358 callgsubr + -90 150 hintmask 11110010 + -101 callgsubr + hintmask 11101100 + -109 462 -83 callsubr + + + 94 callgsubr + + + 122 callgsubr + + + 6 callsubr + + + 528 callsubr + 89 94 hstemhm + 1 559 -426 302 hintmask 11110000 + -16 callsubr + hintmask 11101000 + -24 733 68 callsubr + + + -91 -12 126 -94 -21 529 -20 89 94 hstemhm + 1 494 -392 302 hintmask 10111000 + 11 callsubr + hintmask 01111000 + -27 -121 rlineto + hintmask 10111000 + -7 17 26 -4 34 hhcurveto + hintmask 01110100 + -40 609 68 callsubr + + + 254 callgsubr + 116 93 hstemhm + 12 497 -390 296 hintmask 10111000 + -98 callgsubr + hintmask 01111000 + -26 -112 rlineto + hintmask 10111000 + 252 callgsubr + hintmask 01110100 + -1 786 -24 callgsubr + + + 528 callsubr + hstem + 1 559 vstem + -16 callsubr + 64 706 91 callsubr + + + 516 callgsubr + 500 hintmask 10110000 + 11 callsubr + hintmask 01110000 + -27 -121 rlineto + hintmask 10110000 + -7 17 26 -4 34 hhcurveto + 48 582 91 callsubr + + + 254 callgsubr + hstemhm + 12 497 hintmask 10110000 + -98 callgsubr + hintmask 01110000 + -26 -112 rlineto + hintmask 10110000 + 252 callgsubr + 95 759 210 callsubr + + + -9 25 callgsubr + hstem + 16 537 vstem + 108 -12 rmoveto + 51 58 21 58 68 hvcurveto + -58 67 59 -21 50 hhcurveto + 34 38 11 15 20 hvcurveto + -41 105 rlineto + -8 -13 -17 -4 -17 hhcurveto + -33 -27 15 26 -29 hvcurveto + 70 62 36 73 53 vvcurveto + 104 -78 68 -119 -120 -77 -68 -104 -53 35 -73 71 -62 vhcurveto + -26 -30 -29 -15 -31 hhcurveto + -18 -16 4 8 -12 hvcurveto + -42 -105 rlineto + -15 20 38 -11 34 hhcurveto + endchar + + + 27 0 114 168 109 147 114 49 286 callgsubr + -9 170 11 144 -112 144 hintmask 11101001 + 190 callgsubr + hintmask 11101010 + 53 20 32 63 58 vvcurveto + 125 -105 37 -135 vhcurveto + -223 hlineto + 147 -261 rmoveto + 147 70 vlineto + 69 33 -19 -51 -47 -31 -30 -72 hvcurveto + -69 -277 rmoveto + 168 83 vlineto + hintmask 11110101 + 81 40 -23 -57 -60 -41 -28 -80 hvcurveto + -7 587 -82 callgsubr + + + -32 0 107 118 92 104 107 454 callsubr + -19 170 -21 134 -116 141 hintmask 11101001 + 204 callsubr + hintmask 11101010 + 64 16 27 52 45 vvcurveto + 105 -95 27 -117 vhcurveto + -199 hlineto + 147 -211 rmoveto + 104 54 vlineto + 51 25 -13 -35 -33 -21 -23 -55 hvcurveto + -54 -210 rmoveto + 118 vlineto + hintmask 11101001 + 473 callsubr + 7 484 -82 callgsubr + + + 426 callgsubr + 61 132 -132 154 -22 -20 389 callsubr + 63 166 -58 151 589 callsubr + 183 callsubr + hintmask 0110011010000000 + -701 115 vlineto + 589 callsubr + 136 callsubr + hintmask 0111001100000000 + 67 461 rmoveto + 49 34 30 47 hvcurveto + hintmask 0110101100000000 + 46 -34 31 -49 -49 -34 -31 -46 vhcurveto + hintmask 0111001100000000 + -47 34 -30 49 vhcurveto + endchar + + + 27 -188 93 95 114 168 109 147 114 46 callgsubr + -57 296 -67 144 -112 144 hintmask 11111001 + 190 callgsubr + hintmask 11111010 + 53 20 32 63 58 vvcurveto + 125 -105 37 -135 vhcurveto + -223 hlineto + 147 -261 rmoveto + 147 70 vlineto + 69 33 -19 -51 -47 -31 -30 -72 hvcurveto + -69 -277 rmoveto + 168 83 vlineto + hintmask 11111001 + 81 40 -23 -57 -60 -41 -28 -80 hvcurveto + hintmask 11110100 + -140 -302 -24 callgsubr + + + -32 -188 93 95 107 118 92 104 107 46 callgsubr + -73 296 -93 134 -116 141 hintmask 11111001 + 204 callsubr + hintmask 11111010 + 64 16 27 52 45 vvcurveto + 105 -95 27 -117 vhcurveto + -199 hlineto + 147 -211 rmoveto + 104 54 vlineto + 51 25 -13 -35 -33 -21 -23 -55 hvcurveto + -54 -210 rmoveto + 118 vlineto + hintmask 11111001 + 473 callsubr + -132 -295 -24 callgsubr + + + -5 -188 93 83 370 callsubr + 65 147 -68 296 -57 151 hintmask 11011101 + 183 callsubr + hintmask 10111101 + -701 115 vlineto + hintmask 11011101 + 136 callsubr + hintmask 10111010 + -147 -296 -24 callgsubr + + + 57 0 119 414 119 49 286 callgsubr + 9 170 34 151 hintmask 11010100 + 221 callsubr + hintmask 11111100 + 66 582 -82 callgsubr + + + 2 0 114 300 114 454 callsubr + -13 170 2 151 572 callsubr + 175 hlineto + 159 123 75 551 callsubr + -123 70 -169 hvcurveto + -165 hlineto + 147 -414 rmoveto + 300 179 callgsubr + hintmask 11101000 + 45 477 -82 callgsubr + + + 426 callgsubr + 61 132 -132 154 -22 -20 558 callgsubr + -64 166 69 147 589 callsubr + -33 callsubr + hintmask 0110011010000000 + 315 callsubr + 589 callsubr + 16 callgsubr + hintmask 0111000110000000 + -71 461 rmoveto + 49 34 30 47 hvcurveto + hintmask 0110100110000000 + 46 -34 31 -49 -49 -34 -31 -46 vhcurveto + hintmask 0111000110000000 + -47 34 -30 49 vhcurveto + endchar + + + 57 307 callsubr + 119 414 119 46 callgsubr + 6 166 41 151 hintmask 01110100 + 221 callsubr + hintmask 11101100 + 61 -345 rmoveto + -106 callsubr + + + 2 307 callsubr + 114 300 114 46 callgsubr + -11 166 4 151 hintmask 01110100 + 77 hmoveto + 175 hlineto + 159 123 75 551 callsubr + -123 70 -169 hvcurveto + -165 hlineto + 147 -414 rmoveto + 300 179 callgsubr + hintmask 11101000 + 45 -340 rmoveto + -106 callsubr + + + -5 31 callgsubr + 60 370 callsubr + 39 151 13 166 -8 147 hintmask 11011101 + -33 callsubr + hintmask 10111101 + 315 callsubr + hintmask 11011101 + 16 callgsubr + hintmask 10111110 + 6 -334 rmoveto + -106 callsubr + + + 57 -188 93 95 119 414 119 46 callgsubr + -59 296 -24 430 callgsubr + 221 callsubr + hintmask 11101000 + -87 -307 -24 callgsubr + + + 2 -188 93 95 114 300 114 46 callgsubr + -76 296 -61 430 callgsubr + 77 hmoveto + 175 hlineto + 159 123 75 551 callsubr + -123 70 -169 hvcurveto + -165 hlineto + 147 -414 rmoveto + 300 179 callgsubr + hintmask 11101000 + -103 -302 -24 callgsubr + + + -5 -188 93 83 370 callsubr + 39 151 -52 296 -73 147 hintmask 11011101 + -33 callsubr + hintmask 10111101 + 315 callsubr + hintmask 11011101 + 16 callgsubr + hintmask 10111010 + -142 -296 -24 callgsubr + + + -14 callsubr + 69 94 46 callgsubr + -85 302 hintmask 11111000 + 77 155 callsubr + hintmask 11110100 + 62 69 34 callgsubr + 120 19 rmoveto + 166 92 -60 81 -155 -107 rlineto + endchar + + + 195 callsubr + 120 19 rmoveto + 166 92 -60 81 -155 -107 rlineto + endchar + + + -60 -20 callgsubr + 84 93 hstemhm + 120 296 -60 125 hintmask 11110100 + 36 callsubr + -236 290 -9 callgsubr + 120 28 rmoveto + 155 91 -60 74 -144 -105 rlineto + endchar + + + 583 callgsubr + 49 286 callgsubr + -20 170 hintmask 11101000 + 77 hmoveto + 147 253 226 124 -226 151 264 124 -411 hlineto + hintmask 11110100 + 212 49 -82 callgsubr + + + 542 callsubr + 454 callsubr + -39 170 hintmask 11101000 + 77 hmoveto + 147 192 185 110 -185 106 215 120 -362 hlineto + hintmask 11110100 + 193 63 -82 callgsubr + + + 347 callsubr + 56 154 hstemhm + 90 147 -81 170 hintmask 10110110 + 240 callsubr + hintmask 10101110 + 27 108 rlineto + hintmask 11010110 + 116 callsubr + -27 vlineto + -66 -5 rlineto + hintmask 10110110 + -109 66 vlineto + hintmask 10110101 + 151 368 -82 callgsubr + + + 249 callsubr + 57 94 327 callsubr + 17 302 -66 130 hintmask 11111010 + -86 callgsubr + hintmask 11111100 + -151 733 68 callsubr + + + 174 callgsubr + 71 94 hstemhm + 46 149 -26 302 -82 129 hintmask 11111010 + -79 callsubr + hintmask 11110100 + -157 623 68 callsubr + + + 102 callgsubr + 84 93 231 callsubr + -52 296 -98 127 -69 140 hintmask 1111011000010000 + -19 callsubr + hintmask 1111011000010000 + 324 callsubr + hintmask 1110110100100000 + 28 callgsubr + hintmask 1111011000010000 + 1 callsubr + hintmask 1111010001000000 + -142 711 -24 callgsubr + + + 237 callsubr + 84 93 hstemhm + 39 149 -48 296 -75 147 hintmask 11011101 + 99 callgsubr + hintmask 11101101 + 403 callsubr + hintmask 11011101 + -92 callgsubr + hintmask 11011010 + -140 461 -24 callgsubr + + + 96 252 callsubr + 272 129 251 488 callsubr + 29 166 30 148 hintmask 01111010 + 40 callsubr + hintmask 11111110 + 259 -878 rmoveto + -106 callsubr + + + 43 -226 154 93 313 callgsubr + hstemhm + 77 147 4 166 3 148 hintmask 01111010 + 149 callgsubr + hintmask 11110100 + 234 -754 rmoveto + -106 callsubr + + + -7 252 callsubr + 383 125 193 -20 389 callsubr + 1 166 -14 147 hintmask 11111010 + 344 callsubr + 335 hlineto + -71 callgsubr + -49 -35 -33 -37 vhcurveto + 7 89 rlineto + 172 -147 vlineto + hintmask 11110100 + 231 -927 rmoveto + -106 callsubr + + + 96 567 callsubr + 272 129 251 488 callsubr + -57 57 197 84 -56 56 -56 148 hintmask 1111100010000000 + 40 callsubr + hintmask 1111010100000000 + 259 -885 rmoveto + 74 callgsubr + hintmask 1111011000000000 + -39 callsubr + hintmask 1111010100000000 + 399 callsubr + + + 43 -233 92 162 313 callgsubr + hstemhm + 77 147 -82 82 172 84 -83 83 -83 148 hintmask 1111100010000000 + 149 callgsubr + hintmask 1111010100000000 + 234 -761 rmoveto + 74 callgsubr + hintmask 1111011000000000 + -39 callsubr + hintmask 1111010100000000 + 399 callsubr + + + -7 567 callsubr + 383 125 193 -20 389 callsubr + -85 85 153 100 -100 147 -131 131 hintmask 1111100100000000 + 344 callsubr + 335 hlineto + -71 callgsubr + -49 -35 -33 -37 vhcurveto + 7 89 rlineto + 172 -147 vlineto + hintmask 1111011000000000 + 231 -934 rmoveto + 74 callgsubr + hintmask 1111010010000000 + -39 callsubr + hintmask 1111011000000000 + 399 callsubr + + + 36 252 callsubr + 652 488 callsubr + 25 166 hintmask 11110000 + 243 callsubr + hintmask 11111000 + 255 -878 rmoveto + -106 callsubr + + + -23 252 callsubr + 528 488 callsubr + 10 166 hintmask 11110000 + 77 hmoveto + 147 147 hlineto + 56 64 124 -211 rlineto + 157 hlineto + -197 312 167 216 rlineto + -159 hlineto + -144 -194 rlineto + -4 309 callgsubr + hintmask 11111000 + 240 -754 rmoveto + -106 callsubr + + + -30 252 callsubr + 496 -20 225 -20 hstemhm + 65 143 2 166 hintmask 11111000 + 61 callsubr + hintmask 11110100 + 228 -927 rmoveto + -106 callsubr + + + 36 -188 93 116 -21 652 488 callsubr + -40 40 -40 296 hintmask 11110000 + 243 callsubr + hintmask 11101000 + 107 -840 rmoveto + hintmask 11100100 + 296 93 hlineto + hintmask 11101000 + -296 hlineto + endchar + + + -23 -188 93 116 -21 528 488 callsubr + -55 55 hintmask 11110000 + 77 hmoveto + 147 147 hlineto + 56 64 124 -211 rlineto + 157 hlineto + -197 312 167 216 rlineto + -159 hlineto + -144 -194 rlineto + -4 309 callgsubr + hintmask 11101000 + 92 -716 -24 callgsubr + + + -30 -188 93 116 235 callgsubr + 225 -20 hstemhm + 65 143 -63 63 hintmask 11111000 + 61 callsubr + hintmask 11110100 + 80 -889 -24 callgsubr + + + -60 307 callsubr + 124 528 488 callsubr + -17 166 hintmask 11110000 + 77 hmoveto + 405 124 -258 491 callsubr + hintmask 11101000 + 213 -878 rmoveto + -106 callsubr + + + -107 307 callsubr + 120 408 488 callsubr + -43 166 hintmask 11110000 + 77 454 callgsubr + 408 -147 hlineto + hintmask 11101000 + 187 -754 rmoveto + -106 callsubr + + + 433 callsubr + 389 callsubr + -132 166 hintmask 10101100 + 293 callgsubr + hintmask 11001100 + -3 callgsubr + hintmask 10101100 + 308 callsubr + hintmask 10011010 + -37 386 callsubr + endchar + + + -302 -226 253 callsubr + hintmask 10100000 + 344 callsubr + 431 callgsubr + hintmask 11000000 + 73 -927 rmoveto + -106 callsubr + + + -60 307 callsubr + 124 528 -20 89 94 46 callgsubr + -17 166 hintmask 11111000 + 77 hmoveto + 405 124 -258 491 callsubr + -74 69 34 callgsubr + hintmask 11110100 + 287 -1041 rmoveto + -106 callsubr + + + -107 307 callsubr + 120 408 -20 103 94 46 callgsubr + -43 166 hintmask 11111000 + 77 454 callgsubr + 408 -147 hlineto + -73 83 34 callgsubr + hintmask 11110100 + 260 -931 rmoveto + -106 callsubr + + + 433 callsubr + 88 94 389 callsubr + -132 166 hintmask 10101110 + 293 callgsubr + hintmask 11001110 + -3 callgsubr + hintmask 10101110 + 308 callsubr + hintmask 10011101 + -208 781 34 callgsubr + 171 -1089 rmoveto + -106 callsubr + + + -302 31 callgsubr + 841 94 hstemhm + 55 285 callsubr + hintmask 01010000 + 344 callsubr + 431 callgsubr + -78 68 34 callgsubr + hintmask 11100000 + 151 -1089 rmoveto + -106 callsubr + + + -60 -188 93 95 124 528 488 callsubr + -82 296 hintmask 11110000 + 77 hmoveto + 405 124 -258 491 callsubr + hintmask 11101000 + 65 -840 -24 callgsubr + + + -107 -188 93 95 120 408 488 callsubr + -108 296 hintmask 11110000 + 77 454 callgsubr + 408 -147 hlineto + hintmask 11101000 + 39 -716 -24 callgsubr + + + -292 -188 93 83 119 -98 -21 33 -21 701 -20 hstemhm + 15 296 -246 147 hintmask 10101010 + 293 callgsubr + hintmask 11001010 + -3 callgsubr + hintmask 10101010 + 308 callsubr + hintmask 10011100 + -185 -176 -24 callgsubr + + + -302 -188 93 464 callgsubr + -76 -889 -24 callgsubr + + + 184 21 319 callsubr + 342 134 hintmask 10111000 + 77 hmoveto + 132 239 hlineto + hintmask 11011000 + -59 callgsubr + 294 28 -89 callgsubr + + + 107 21 322 callgsubr + 267 132 hintmask 10111000 + 77 hmoveto + 132 148 hlineto + hintmask 11011000 + -51 callsubr + 256 42 -89 callgsubr + + + 279 373 callsubr + 145 147 146 147 hintmask 10111100 + 334 callsubr + hintmask 11011100 + -10 callgsubr + hintmask 10111100 + -10 64 552 callgsubr + 388 76 -44 callsubr + + + 184 21 -21 461 191 0 -20 69 154 hstemhm + 77 132 87 170 85 134 hintmask 10111010 + 77 hmoveto + 132 239 590 callgsubr + -59 callgsubr + 304 49 -82 callgsubr + + + 107 21 -21 347 181 0 -20 83 154 hstemhm + 77 132 49 170 48 132 hintmask 10111010 + 77 hmoveto + 132 148 590 callgsubr + -51 callsubr + 266 63 -82 callgsubr + + + 279 257 callgsubr + 93 154 389 callsubr + 145 147 -144 166 124 147 hintmask 10111101 + 334 callsubr + hintmask 11011101 + -10 callgsubr + hintmask 10111011 + -10 64 552 callgsubr + 378 391 callgsubr + endchar + + + 184 -226 154 93 319 callsubr + 91 166 85 134 hintmask 11011010 + 77 hmoveto + 132 239 hlineto + hintmask 11101110 + -59 callgsubr + 306 -878 rmoveto + -106 callsubr + + + 107 -226 154 93 322 callgsubr + 51 166 50 132 hintmask 11011010 + 77 hmoveto + 132 148 hlineto + hintmask 11101110 + -51 callsubr + 266 -754 rmoveto + -106 callsubr + + + 279 -226 154 93 171 callsubr + 140 166 -161 147 146 147 hintmask 11011011 + 334 callsubr + hintmask 11101011 + -10 callgsubr + hintmask 11011101 + -10 64 552 callgsubr + 370 -722 rmoveto + -106 callsubr + + + 480 callgsubr + 69 154 hstemhm + 77 140 36 170 25 140 hintmask 01011101 + 524 callgsubr + hintmask 01101101 + 13 callgsubr + hintmask 10011101 + 18 callgsubr + hlineto + hintmask 01011111 + 261 49 -82 callgsubr + + + 119 callsubr + 83 154 496 callgsubr + 15 170 -3 135 hintmask 01011101 + 455 callgsubr + hintmask 01101101 + 12 callsubr + hintmask 10011101 + 17 callsubr + hlineto + hintmask 01011110 + 235 63 -82 callgsubr + + + -6 257 callgsubr + 93 154 389 callsubr + 18 166 -31 147 hintmask 10111010 + 334 callsubr + hintmask 11011010 + -30 callgsubr + hintmask 10111010 + 325 callgsubr + hintmask 10111100 + 248 391 callgsubr + endchar + + + 87 307 callsubr + 84 callgsubr + hstemhm + 77 140 45 166 20 140 hintmask 10101101 + 524 callgsubr + hintmask 10110101 + 13 callgsubr + hintmask 11001101 + 18 callgsubr + hlineto + hintmask 10101111 + 268 -878 rmoveto + -106 callsubr + + + 28 307 callsubr + 317 callgsubr + 13 166 3 135 hintmask 10101101 + 455 callgsubr + hintmask 10110101 + 12 callsubr + hintmask 11001101 + 17 callsubr + hlineto + hintmask 10101110 + 231 -754 rmoveto + -106 callsubr + + + -6 -226 154 93 171 callsubr + -9 166 -4 147 hintmask 11011010 + 334 callsubr + hintmask 11101010 + -30 callgsubr + hintmask 11011010 + 325 callgsubr + hintmask 11010100 + 221 -722 rmoveto + -106 callsubr + + + 87 -188 93 95 84 callgsubr + hstemhm + 77 140 -20 296 -45 140 hintmask 10101101 + 524 callgsubr + hintmask 10110101 + 13 callgsubr + hintmask 11001101 + 18 callgsubr + hlineto + hintmask 10101010 + 120 -840 -24 callgsubr + + + 28 -188 93 95 317 callgsubr + -52 52 182 135 hintmask 10101101 + 455 callgsubr + hintmask 10110101 + 12 callsubr + hintmask 11001101 + 17 callsubr + hlineto + hintmask 10101011 + 83 -716 -24 callgsubr + + + -6 -188 93 116 171 callsubr + -74 74 153 69 -69 147 hintmask 11011001 + 334 callsubr + hintmask 11101001 + -30 callgsubr + hintmask 11011001 + 325 callgsubr + hintmask 11010110 + 73 -684 -24 callgsubr + + + 256 callsubr + 57 94 327 callsubr + -6 302 -6 430 callgsubr + -70 callsubr + hintmask 11101000 + -151 606 34 callgsubr + 120 19 rmoveto + 166 92 -60 81 -155 -107 rlineto + endchar + + + 71 callsubr + 71 94 327 callsubr + -43 302 -37 66 callgsubr + hintmask 11101000 + -155 502 34 callgsubr + 120 19 rmoveto + 166 92 -60 81 -155 -107 rlineto + endchar + + + 78 callsubr + 84 93 266 callgsubr + -57 296 -57 65 callsubr + hintmask 11101000 + -148 485 -9 callgsubr + 120 28 rmoveto + 155 91 -60 74 -144 -105 rlineto + endchar + + + 18 21 -21 221 117 197 117 49 286 callgsubr + 7 170 15 144 hintmask 11101010 + 114 callgsubr + hintmask 11110110 + 20 363 -82 callgsubr + + + -27 21 -21 167 101 145 115 454 callsubr + -9 170 -10 140 hintmask 11101010 + 124 callgsubr + hintmask 11110100 + 14 323 -82 callgsubr + + + -5 -163 -21 172 30 callgsubr + 93 154 389 callsubr + 18 166 -13 151 hintmask 11011101 + 65 535 callgsubr + 145 hlineto + -5 79 rlineto + -33 35 40 -19 43 hhcurveto + 107 102 98 170 hvcurveto + hintmask 11101101 + 153 -74 99 -120 -52 -50 -26 -35 -39 vhcurveto + -4 hlineto + hintmask 11011101 + -10 49 552 callgsubr + 226 -388 270 callsubr + hintmask 11101101 + 352 callgsubr + hvcurveto + hintmask 11011101 + -102 -41 -44 -51 vhcurveto + hintmask 11011110 + 22 461 rmoveto + -106 callsubr + + + 35 21 -21 235 117 183 117 49 286 callgsubr + 1 170 24 167 callsubr + hintmask 11110110 + 10 349 -82 callgsubr + + + 547 callgsubr + 454 callsubr + -10 170 -13 167 callgsubr + 21 316 -82 callgsubr + + + 501 callsubr + 91 154 152 callgsubr + -46 166 hintmask 10011010 + 334 callsubr + hintmask 11001010 + 137 callgsubr + hintmask 10011010 + 536 callsubr + hintmask 11001100 + 263 callsubr + hintmask 10101100 + -10 87 rlineto + hintmask 10101010 + -120 hlineto + hintmask 10011001 + 184 391 callgsubr + endchar + + + 35 252 callsubr + 235 117 183 117 46 callgsubr + 20 166 9 167 callsubr + hintmask 11111110 + 27 -578 rmoveto + -106 callsubr + + + -17 -226 154 93 371 callsubr + -2 166 -17 167 callgsubr + 27 -501 rmoveto + -106 callsubr + + + -180 252 callsubr + 379 342 callgsubr + hstemhm + 52 166 -153 81 callgsubr + hintmask 11001001 + 334 callsubr + hintmask 11100001 + 137 callgsubr + hintmask 11001001 + 536 callsubr + hintmask 11100010 + 263 callsubr + hintmask 11010010 + -10 87 rlineto + hintmask 11010001 + -120 hlineto + hintmask 11001100 + 70 -722 rmoveto + -106 callsubr + + + 35 252 callsubr + 235 117 183 117 69 94 46 callgsubr + -65 302 -217 166 9 144 hintmask 1111110010000000 + 77 hmoveto + 119 callgsubr + 81 callsubr + 147 -300 128 callsubr + hintmask 1111101000000000 + -141 369 34 callgsubr + hintmask 1111110110000000 + 168 -1041 rmoveto + -106 callsubr + + + -17 -226 154 93 413 callgsubr + 83 94 46 callgsubr + -76 302 -228 166 -17 139 hintmask 1111110010000000 + 21 callgsubr + hintmask 1111101000000000 + -130 336 34 callgsubr + hintmask 1111100100000000 + 157 -931 rmoveto + -106 callsubr + + + -180 252 callsubr + 379 342 callgsubr + 114 93 hstemhm + 52 166 -153 81 callgsubr + -111 296 hintmask 1100110010000000 + 334 callsubr + hintmask 1110010010000000 + 137 callgsubr + hintmask 1100110010000000 + 536 callsubr + hintmask 1110010100000000 + 263 callsubr + hintmask 1101010100000000 + -10 87 rlineto + hintmask 1101010010000000 + -120 hlineto + hintmask 1100110001000000 + 36 96 -9 callgsubr + hintmask 1100111000000000 + 34 -911 rmoveto + -106 callsubr + + + 35 -188 93 116 -21 235 117 183 117 46 callgsubr + -45 45 -45 296 -56 144 hintmask 11111001 + 77 hmoveto + 119 callgsubr + 81 callsubr + 147 -300 128 callsubr + hintmask 11110101 + -121 -540 rmoveto + hintmask 11110010 + 296 93 hlineto + hintmask 11110101 + -296 hlineto + endchar + + + -17 -188 93 116 371 callsubr + -67 67 147 174 callsubr + hintmask 11110110 + -121 -463 -24 callgsubr + + + -180 -188 93 116 -21 379 219 callgsubr + hintmask 11001010 + 334 callsubr + hintmask 11100010 + 137 callgsubr + hintmask 11001010 + 24 127 590 callsubr + 263 callsubr + hintmask 11010100 + -10 87 rlineto + hintmask 11010010 + -120 hlineto + -78 -684 -24 callgsubr + + + -22 120 callsubr + 37 154 hstemhm + 61 149 -4 170 -5 430 callgsubr + -87 callgsubr + hintmask 11101000 + 15 713 -82 callgsubr + + + -74 357 callsubr + 50 154 hstemhm + 64 147 -25 170 -34 148 hintmask 11110100 + 254 -12 rmoveto + -95 callsubr + hintmask 11101000 + 17 603 -82 callgsubr + + + -135 -12 379 callsubr + 61 154 hstemhm + 48 138 -36 166 -38 137 hintmask 11110100 + -85 callgsubr + hintmask 11101000 + 22 581 rmoveto + -106 callsubr + + + -22 514 callsubr + hstemhm + 61 149 -13 166 8 430 callgsubr + -87 callgsubr + hintmask 11101100 + 4 386 callsubr + endchar + + + -74 31 callgsubr + 60 343 callsubr + hstemhm + 64 147 -23 166 -32 148 hintmask 11110100 + 254 -12 rmoveto + -95 callsubr + hintmask 11101000 + 17 386 callsubr + endchar + + + -135 31 callgsubr + 60 379 callsubr + hstemhm + 48 138 -51 166 -23 137 hintmask 11110100 + -85 callgsubr + hintmask 11101000 + 7 386 callsubr + endchar + + + -22 407 callgsubr + 124 49 154 hstemhm + 191 170 -157 331 callgsubr + 173 -82 callgsubr + + + -87 21 431 callsubr + 63 154 hstemhm + 160 170 -158 147 hintmask 11101000 + 56 callsubr + hintmask 11110000 + 73 183 -82 callgsubr + + + 450 callsubr + 213 154 hstemhm + 85 147 -144 162 callsubr + -85 721 rmoveto + -106 callsubr + + + -22 252 callsubr + 528 124 hstemhm + 193 166 -155 331 callgsubr + -754 rmoveto + -106 callsubr + + + -87 252 callsubr + 408 120 hstemhm + 162 285 callsubr + hintmask 11101000 + 56 callsubr + hintmask 11110000 + 73 -634 rmoveto + -106 callsubr + + + -195 31 callgsubr + 60 418 callgsubr + hstemhm + 85 147 -82 162 callsubr + -23 386 callsubr + endchar + + + -22 -188 93 116 124 callsubr + -76 -716 -24 callgsubr + + + -87 -188 93 116 431 callsubr + hstem + 172 147 vstem + 56 callsubr + -75 -596 -24 callgsubr + + + -195 -188 93 83 418 callgsubr + hstemhm + 85 147 -147 296 hintmask 11110000 + -47 callgsubr + hintmask 11101000 + -171 -176 -24 callgsubr + + + -53 180 callsubr + 69 154 hstemhm + 177 170 -158 200 callgsubr + 73 469 -82 callgsubr + + + 323 callsubr + 83 154 hstemhm + 146 170 -156 147 hintmask 11101000 + 4 callsubr + hintmask 11110000 + 71 410 -82 callgsubr + + + 254 callgsubr + 93 154 hstemhm + 184 166 hintmask 10111000 + -98 callgsubr + hintmask 01111000 + -26 -112 rlineto + hintmask 10111000 + 252 callgsubr + hintmask 01111000 + 147 763 rmoveto + -106 callsubr + + + -37 307 callsubr + 194 callsubr + hstem + 199 166 76 callsubr + 246 -315 rmoveto + -106 callsubr + + + -97 307 callsubr + 120 288 120 hstem + 169 166 77 callgsubr + 216 -313 rmoveto + -106 callsubr + + + -118 307 callsubr + 378 callsubr + hstem + 160 166 197 callgsubr + 205 -305 rmoveto + -106 callsubr + + + -37 -188 93 95 530 callgsubr + 36 472 -374 296 hintmask 11110000 + 29 callgsubr + hintmask 11101000 + 98 -277 -24 callgsubr + + + -97 -188 93 95 120 288 120 hstemhm + 36 411 -343 296 hintmask 11110000 + 55 callsubr + hintmask 11101000 + 68 -275 -24 callgsubr + + + -118 -188 93 95 378 callsubr + hstemhm + 38 398 -341 296 hintmask 11110000 + 82 callsubr + hintmask 11101000 + 57 -267 -24 callgsubr + + + -7 -188 93 116 48 callgsubr + 193 -20 389 callsubr + -64 64 153 79 -79 147 hintmask 11111001 + 344 callsubr + 335 hlineto + -71 callgsubr + -49 -35 -33 -37 vhcurveto + 7 89 rlineto + 172 -147 vlineto + hintmask 11110110 + 83 -889 -24 callgsubr + + + 96 -188 93 116 186 callgsubr + 251 488 callsubr + -36 36 225 35 -35 148 hintmask 11111001 + 40 callsubr + hintmask 11110110 + 111 -840 -24 callgsubr + + + 43 -188 93 116 313 callgsubr + hstemhm + 77 147 -61 61 173 62 -62 148 hintmask 11111001 + 149 callgsubr + hintmask 11110110 + 86 -716 -24 callgsubr + + + 450 callsubr + 213 143 hstemhm + -10 143 -48 147 -23 143 hintmask 11101000 + -47 callgsubr + hintmask 11110100 + -194 721 -83 callsubr + + + -22 407 callgsubr + 124 48 140 hstemhm + 95 140 -31 148 -35 140 383 callsubr + hintmask 11110100 + -39 172 -100 callsubr + + + -87 21 431 callsubr + 62 140 hstemhm + 64 140 -32 147 -33 140 hintmask 11101000 + 56 callsubr + hintmask 11110100 + -38 182 -100 callsubr + + + 127 510 callgsubr + 60 -39 -21 545 119 hstemhm + 80 148 287 151 hintmask 10011100 + 463 -12 rmoveto + 131 72 83 107 98 -67 52 -98 31 hvcurveto + 108 122 rlineto + 109 -30 -88 74 -130 hhcurveto + -194 -87 -109 -146 hvcurveto + hintmask 00111100 + -409 148 389 vlineto + 104 43 52 86 54 35 -28 -31 17 vhcurveto + -109 -125 10 -86 rlineto + hintmask 10011100 + 110 -20 41 -36 -40 vvcurveto + -43 -27 -29 -43 -29 -30 11 32 -32 vhcurveto + hintmask 01011100 + -77 -90 rlineto + hintmask 10011100 + -37 37 63 -35 86 hhcurveto + endchar + + + 58 -12 113 -101 47 -26 -21 426 114 hstemhm + 80 148 221 147 hintmask 10011100 + 420 -12 rmoveto + 117 59 71 87 82 -60 37 -73 25 hvcurveto + 87 88 rlineto + 95 -24 -81 67 -117 hhcurveto + -172 -76 -93 -119 hvcurveto + hintmask 00111000 + -328 148 310 vlineto + 75 32 41 63 44 27 -18 -24 17 vhcurveto + -89 -94 10 -72 rlineto + hintmask 10011100 + 80 -10 37 -25 -34 vvcurveto + -31 -20 -17 -28 -19 -28 6 22 -26 vhcurveto + hintmask 01011000 + -70 -82 rlineto + hintmask 10011100 + -28 32 53 -31 77 hhcurveto + endchar + + + -5 -226 154 93 -55 callsubr + hstem + 202 166 10 callsubr + -878 rmoveto + -106 callsubr + + + -75 -226 154 93 85 callgsubr + hstem + 170 166 8 callsubr + -754 rmoveto + -106 callsubr + + + -51 31 callgsubr + 60 63 callgsubr + 344 callgsubr + -9 166 -19 147 hintmask 11011010 + 29 callsubr + hintmask 10111010 + -100 callgsubr + hintmask 11011010 + -88 callgsubr + hintmask 10110100 + 17 -328 rmoveto + -106 callsubr + + + -5 31 callgsubr + 60 410 callsubr + 13 166 -8 147 hintmask 11001101 + -33 callsubr + hintmask 10110101 + 10 -49 rlineto + 120 496 -115 hlineto + hintmask 11001101 + -102 callsubr + hintmask 11001110 + 6 -334 rmoveto + -106 callsubr + + + -5 -37 callsubr + 161 73 hstem + 275 106 vstem + -104 callsubr + 44 39 rmoveto + -78 callgsubr + endchar + + + 33 callgsubr + 175 73 hstem + 243 106 vstem + -103 callsubr + 46 53 rmoveto + -78 callgsubr + endchar + + + 18 callsubr + 195 90 344 callgsubr + 83 107 -52 147 hintmask 10111010 + 29 callsubr + hintmask 01111010 + -100 callgsubr + hintmask 10111010 + -88 callgsubr + -7 466 rmoveto + hintmask 01110100 + -76 callgsubr + + + -38 callsubr + 195 90 558 callgsubr + 86 107 -22 147 hintmask 10011101 + -33 callsubr + hintmask 01101101 + 19 callgsubr + hintmask 10011101 + -102 callsubr + -37 460 rmoveto + hintmask 10011110 + -76 callgsubr + + + 226 callsubr + 223 489 284 callsubr + -399 -809 94 callsubr + + + 236 callsubr + 207 435 284 callsubr + -367 -699 95 callsubr + + + 49 callsubr + 327 20 rmoveto + 101 120 -78 51 -79 -127 rlineto + endchar + + + -38 callsubr + 123 79 256 callgsubr + hintmask 10011110 + -33 callsubr + hintmask 01101110 + 19 callgsubr + hintmask 10011110 + 37 callgsubr + 327 20 rmoveto + 101 120 -78 51 -79 -127 rlineto + endchar + + + 226 callsubr + -81 489 285 callgsubr + -38 -836 94 callsubr + + + 236 callsubr + -97 435 285 callgsubr + -6 -726 95 callsubr + + + 49 callsubr + -25 20 rmoveto + 56 44 -83 127 -78 -52 rlineto + endchar + + + -38 callsubr + 123 79 256 callgsubr + hintmask 10011110 + -33 callsubr + hintmask 01101110 + 19 callgsubr + hintmask 10011110 + 37 callgsubr + -25 20 rmoveto + 56 44 -83 127 -78 -52 rlineto + endchar + + + -5 -37 callsubr + 105 67 33 60 hstem + 443 95 204 callgsubr + 208 480 303 callsubr + -417 -797 94 callsubr + + + 33 callgsubr + 119 67 33 60 hstem + 411 95 144 callgsubr + 192 426 303 callsubr + -385 -687 95 callsubr + + + 18 callsubr + 123 79 46 62 355 callgsubr + -34 96 hintmask 10111110 + 29 callsubr + hintmask 01111110 + -100 callgsubr + hintmask 10111110 + -88 callgsubr + hintmask 01111101 + -68 464 159 callgsubr + 70 callgsubr + + + -38 callsubr + 123 79 46 62 256 callgsubr + -64 96 hintmask 1001111100000000 + -33 callsubr + hintmask 0110111100000000 + 19 callgsubr + hintmask 1001111100000000 + 37 callgsubr + 289 26 rmoveto + hintmask 1001111010000000 + 70 callgsubr + + + -5 -37 callsubr + 96 68 22 81 -37 81 hstemhm + 132 509 callgsubr + hintmask 11110111 + -104 callsubr + -7 33 392 callsubr + hintmask 11111011 + 75 callgsubr + hintmask 11110111 + 107 callsubr + hintmask 11111011 + 295 callsubr + + + 33 callgsubr + 110 68 22 81 -37 81 hstemhm + 100 509 callgsubr + hintmask 11110011 + -103 callsubr + -5 47 392 callsubr + hintmask 11111011 + 75 callgsubr + hintmask 11110111 + 107 callsubr + hintmask 11111011 + 295 callsubr + + + 18 callsubr + 114 80 14 80 -38 80 344 callgsubr + -55 67 126 147 -111 67 hintmask 1011011010000000 + 29 callsubr + hintmask 0111011010000000 + -100 callgsubr + hintmask 1011011010000000 + -88 callgsubr + hintmask 0111011010000000 + -68 464 rmoveto + 102 56 366 callgsubr + -56 47 52 -93 84 rlineto + -116 hlineto + -93 -84 rlineto + hintmask 0111100001000000 + 153 callsubr + hintmask 0111010110000000 + 385 callsubr + hintmask 0111100001000000 + 233 callsubr + + + -38 callsubr + 114 80 14 80 -38 80 558 callgsubr + -52 67 156 147 -141 67 hintmask 1001101101000000 + -33 callsubr + hintmask 0110101101000000 + 19 callgsubr + hintmask 1001101101000000 + -102 callsubr + -98 458 rmoveto + 102 56 366 callgsubr + -56 47 52 -93 84 rlineto + -116 hlineto + -93 -84 rlineto + hintmask 1001110100100000 + 153 callsubr + hintmask 1001101011000000 + 385 callsubr + hintmask 1001110100100000 + 233 callsubr + + + -5 -226 154 93 -55 callsubr + 117 66 hstem + 202 166 vstem + -104 callsubr + -19 361 callsubr + 170 -950 rmoveto + -106 callsubr + + + -75 -226 154 93 85 callgsubr + 131 66 hstem + 170 166 vstem + -103 callsubr + -17 362 callsubr + 170 -840 rmoveto + -106 callsubr + + + -51 31 callgsubr + 60 63 callgsubr + 145 91 344 callgsubr + -9 166 -19 147 hintmask 11011101 + 29 callsubr + hintmask 10111101 + -100 callgsubr + hintmask 11011101 + -88 callgsubr + hintmask 10111101 + -147 511 -63 callsubr + hintmask 10111010 + 56 -970 rmoveto + -106 callsubr + + + -5 31 callgsubr + 60 377 callsubr + 71 callgsubr + 145 91 558 callgsubr + 13 166 -8 147 hintmask 1100111010000000 + -33 callsubr + hintmask 1011011010000000 + 19 callgsubr + hintmask 1100111010000000 + -102 callsubr + -177 505 -63 callsubr + hintmask 1100111100000000 + 75 -970 rmoveto + -106 callsubr + + + 72 callsubr + 17 108 rmoveto + 115 489 callsubr + -137 rlineto + endchar + + + 519 callgsubr + hstem + -6 516 8 callsubr + 59 rmoveto + 117 callgsubr + -72 14 rlineto + -47 -10 -32 -27 -49 hhcurveto + -49 -32 27 47 -10 hvcurveto + -72 12 callgsubr + 17 108 rmoveto + 115 489 callsubr + -137 rlineto + endchar + + + 18 callsubr + 64 83 355 callgsubr + -98 75 hintmask 10111100 + 29 callsubr + hintmask 01111100 + -100 callgsubr + hintmask 10111100 + -88 callgsubr + hintmask 01110010 + 36 470 rmoveto + -8 callsubr + 47 callsubr + 9 127 rmoveto + 535 callsubr + -87 65 -93 -141 rlineto + endchar + + + 409 callgsubr + 256 callgsubr + -128 75 hintmask 10011110 + -33 callsubr + hintmask 01101110 + 19 callgsubr + hintmask 10011110 + 73 callgsubr + hintmask 10011101 + -8 callsubr + hintmask 10011110 + 47 callsubr + 9 127 rmoveto + 535 callsubr + -87 65 -93 -141 rlineto + endchar + + + 72 callsubr + -17 108 rmoveto + 72 47 -95 137 -92 -57 rlineto + endchar + + + 519 callgsubr + hstem + -6 516 8 callsubr + 59 rmoveto + 117 callgsubr + -72 14 rlineto + -47 -10 -32 -27 -49 hhcurveto + -49 -32 27 47 -10 hvcurveto + -72 12 callgsubr + -17 108 rmoveto + 72 47 -95 137 -92 -57 rlineto + endchar + + + 18 callsubr + 64 83 355 callgsubr + -98 75 hintmask 10111100 + 29 callsubr + hintmask 01111100 + -100 callgsubr + hintmask 10111100 + -88 callgsubr + hintmask 01110010 + 36 470 rmoveto + -8 callsubr + 47 callsubr + -9 127 rmoveto + 64 44 -93 141 -87 -65 rlineto + endchar + + + 409 callgsubr + 256 callgsubr + -128 75 hintmask 10011110 + -33 callsubr + hintmask 01101110 + 19 callgsubr + hintmask 10011110 + 73 callgsubr + hintmask 10011101 + -8 callsubr + hintmask 10011110 + 47 callsubr + -9 127 rmoveto + 64 44 -93 141 -87 -65 rlineto + endchar + + + -5 -37 callsubr + 45 574 callsubr + 274 94 10 callsubr + 313 callsubr + -72 14 rlineto + -47 -10 -32 -27 -49 hhcurveto + -49 -32 27 47 -10 hvcurveto + -72 12 callgsubr + -32 109 rmoveto + 64 5 51 23 59 vvcurveto + 44 -37 33 -109 4 vhcurveto + -14 -61 rlineto + 50 534 callsubr + -17 -14 -6 -19 -4 vhcurveto + endchar + + + 519 callgsubr + 139 61 hstem + 242 94 8 callsubr + 59 rmoveto + 117 callgsubr + -72 14 rlineto + -47 -10 -32 -27 -49 hhcurveto + -49 -32 27 47 -10 hvcurveto + -72 12 callgsubr + -32 109 rmoveto + 64 5 51 23 59 vvcurveto + 44 -37 33 -109 4 vhcurveto + -14 -61 rlineto + 50 534 callsubr + -17 -14 -6 -19 -4 vhcurveto + endchar + + + 18 callsubr + 64 83 154 80 344 callgsubr + 81 96 -39 147 -98 75 hintmask 1011010100000000 + 29 callsubr + hintmask 0111010100000000 + -100 callgsubr + hintmask 1011010100000000 + -88 callgsubr + hintmask 0111000010000000 + 36 470 rmoveto + -8 callsubr + 515 callgsubr + hintmask 0111101000000000 + 182 callsubr + + + 409 callgsubr + 154 80 558 callgsubr + 84 96 -9 147 -128 75 hintmask 1001111010000000 + -33 callsubr + hintmask 0110111010000000 + 19 callgsubr + hintmask 1001111010000000 + 73 callgsubr + hintmask 1001111001000000 + -8 callsubr + hintmask 1001111010000000 + 515 callgsubr + hintmask 1001111100000000 + 182 callsubr + + + -5 -37 callsubr + 50 71 74 80 -36 80 hstemhm + 132 509 callgsubr + hintmask 11110111 + -104 callsubr + 87 50 117 callsubr + + + 33 callgsubr + 64 71 74 80 -36 80 hstemhm + 100 509 callgsubr + hintmask 11110111 + -103 callsubr + 89 64 117 callsubr + + + 18 callsubr + 64 567 callgsubr + 42 141 -63 75 126 147 -111 75 hintmask 1011011010000000 + 29 callsubr + hintmask 0111011010000000 + -100 callgsubr + hintmask 1011011010000000 + -88 callgsubr + hintmask 0111100001000000 + 36 470 rmoveto + 177 callgsubr + 58 142 rmoveto + 55 35 35 76 8 hvcurveto + -75 7 rlineto + -26 185 callsubr + hintmask 0111010110000000 + -29 -24 42 -55 hhcurveto + -55 -35 -35 -77 -12 callgsubr + hintmask 0111100001000000 + 233 callsubr + + + -38 callsubr + 64 567 callgsubr + 39 151 -60 75 156 147 -141 75 hintmask 1001101101000000 + -33 callsubr + hintmask 0110101101000000 + 19 callgsubr + hintmask 1001101101000000 + 73 callgsubr + 177 callgsubr + hintmask 1001110100100000 + 58 142 rmoveto + 55 35 35 76 8 hvcurveto + -75 7 rlineto + -26 185 callsubr + hintmask 1001101011000000 + -29 -24 42 -55 hhcurveto + -55 -35 -35 -77 -12 callgsubr + hintmask 1001110100100000 + 233 callsubr + + + -5 -226 154 93 -55 callsubr + 45 85 hstem + 202 166 104 callsubr + -923 vmoveto + -106 callsubr + + + -75 -226 154 93 85 callgsubr + 59 85 hstem + 170 166 8 callsubr + 59 rmoveto + -16 callgsubr + -813 vmoveto + -106 callsubr + + + -51 31 callgsubr + 60 63 callgsubr + 64 92 344 callgsubr + -76 84 -17 166 -19 147 -107 84 hintmask 1101110010000000 + 29 callsubr + hintmask 1011110010000000 + -100 callgsubr + hintmask 1101110010000000 + -88 callgsubr + hintmask 1011101001000000 + 36 470 rmoveto + -61 callsubr + hintmask 1011100100000000 + -19 -798 rmoveto + -106 callsubr + + + -5 31 callgsubr + 60 377 callsubr + 71 callgsubr + 64 92 558 callgsubr + -73 84 2 166 -8 147 -137 84 hintmask 1100111001000000 + -33 callsubr + hintmask 1011011001000000 + 19 callgsubr + hintmask 1100111001000000 + -102 callsubr + hintmask 1100110100100000 + 6 464 rmoveto + -61 callsubr + hintmask 1100111010000000 + -798 vmoveto + -106 callsubr + + + -30 307 callsubr + -50 callsubr + hstemhm + 77 574 callgsubr + hintmask 01111000 + 77 155 callsubr + hintmask 11110100 + 218 -878 rmoveto + -106 callsubr + + + -79 307 callsubr + 111 callsubr + 46 callgsubr + -29 166 hintmask 01111000 + 335 callsubr + 201 -754 rmoveto + -106 callsubr + + + -60 31 callgsubr + 60 3 callsubr + 588 callgsubr + hintmask 01110100 + 36 callsubr + -88 -528 rmoveto + -106 callsubr + + + -14 callsubr + 161 73 209 callgsubr + 56 106 vstem + 77 155 callsubr + 170 39 rmoveto + -78 callgsubr + endchar + + + 60 callgsubr + 175 73 209 callgsubr + 34 106 vstem + 77 hmoveto + 369 114 -62 callsubr + 148 53 rmoveto + -78 callgsubr + endchar + + + -60 -20 callgsubr + 195 90 hstemhm + 258 107 -9 125 hintmask 11100100 + -105 callgsubr + -131 266 277 callsubr + + + -14 callsubr + 40 406 callsubr + 77 557 callsubr + 147 -132 509 callsubr + hintmask 1111001010000000 + 77 155 callsubr + 284 40 -6 callsubr + hintmask 1110100110000000 + -33 -33 58 -71 hhcurveto + -70 -52 -43 -101 -5 hvcurveto + hintmask 1110110010000000 + 60 callsubr + hintmask 1111001010000000 + 148 callgsubr + + + 60 callgsubr + 54 406 callsubr + 70 95 -88 88 -88 147 147 95 hintmask 1111000110000000 + 77 hmoveto + 369 114 -62 callsubr + 262 54 -6 callsubr + hintmask 1110110010000000 + -33 -33 58 -71 hhcurveto + -70 -52 -43 -101 -5 hvcurveto + hintmask 1110101010000000 + 60 callsubr + hintmask 1111000110000000 + 148 callgsubr + + + -60 -20 callgsubr + 533 callgsubr + 78 92 186 125 -115 92 hintmask 11110110 + -105 callgsubr + -22 271 rmoveto + hintmask 11110101 + -52 callgsubr + hintmask 11101110 + -74 callsubr + hintmask 11110110 + 136 callgsubr + + + -14 callsubr + 105 67 hstem + 77 147 vstem + 77 155 callsubr + 119 385 callgsubr + 305 35 284 callsubr + endchar + + + 60 callgsubr + 119 67 132 callsubr + 369 114 -62 callsubr + 97 146 callsubr + 305 35 284 callsubr + endchar + + + -60 -20 callgsubr + 123 79 -58 callsubr + -192 264 -32 callsubr + 327 20 rmoveto + 101 120 -78 51 -79 -127 rlineto + endchar + + + -14 callsubr + 105 67 hstem + 77 147 vstem + 77 155 callsubr + 119 385 callgsubr + 1 35 285 callgsubr + endchar + + + 60 callgsubr + 119 67 132 callsubr + 369 114 -62 callsubr + 97 146 callsubr + 1 35 285 callgsubr + endchar + + + -60 -20 callgsubr + 123 79 -58 callsubr + -192 264 -32 callsubr + -25 20 rmoveto + 56 44 -83 127 -78 -52 rlineto + endchar + + + -14 callsubr + 98 74 -67 67 33 60 46 callgsubr + 224 95 hintmask 11101010 + 77 155 callsubr + 119 385 callgsubr + hintmask 11110111 + 290 26 303 callsubr + endchar + + + 60 callgsubr + 112 74 -67 67 33 60 46 callgsubr + 202 95 572 callgsubr + 369 114 -62 callsubr + 97 146 callsubr + hintmask 11110111 + 290 26 303 callsubr + endchar + + + -60 -20 callgsubr + 123 79 46 62 hstemhm + 356 125 -55 96 hintmask 11111100 + -105 callgsubr + -192 264 159 callgsubr + hintmask 11111010 + 70 callgsubr + + + -14 callsubr + 96 68 22 81 -37 81 46 callgsubr + -87 509 callgsubr + hintmask 1111001000000000 + 77 155 callsubr + 119 33 392 callsubr + hintmask 1111101010000000 + 75 callgsubr + hintmask 1111010100000000 + 107 callsubr + hintmask 1111101010000000 + 295 callsubr + + + 60 callgsubr + 110 68 22 81 -37 81 46 callgsubr + -109 509 callgsubr + hintmask 1111001000000000 + 77 hmoveto + 369 114 -62 callsubr + 97 47 392 callsubr + hintmask 1111101010000000 + 75 callgsubr + hintmask 1111010100000000 + 107 callsubr + hintmask 1111101010000000 + 295 callsubr + + + -60 -20 callgsubr + 114 80 14 382 callgsubr + 120 67 162 67 -60 125 hintmask 1111011010000000 + -105 callgsubr + -192 264 rmoveto + 102 56 366 callgsubr + -56 47 52 -93 84 rlineto + -116 hlineto + -93 -84 rlineto + hintmask 1111101100000000 + 153 callsubr + hintmask 1111011010000000 + 385 callsubr + hintmask 1111101100000000 + 233 callsubr + + + -30 307 callsubr + -50 callsubr + 117 66 hstemhm + 77 574 callgsubr + hintmask 01111100 + 77 155 callsubr + 107 361 callsubr + hintmask 11111010 + 175 -950 rmoveto + -106 callsubr + + + -79 307 callsubr + 111 callsubr + 131 66 46 callgsubr + -29 166 hintmask 01111100 + 77 hmoveto + 369 114 -62 callsubr + 85 362 callsubr + hintmask 11111010 + 180 -840 rmoveto + -106 callsubr + + + -60 31 callgsubr + 60 3 callsubr + 145 91 588 callgsubr + hintmask 01111010 + -105 callgsubr + -271 311 -63 callsubr + hintmask 11111100 + 75 -970 rmoveto + -106 callsubr + + + 147 callgsubr + 181 73 46 callgsubr + -82 106 hintmask 11110000 + 77 hmoveto + 147 260 callsubr + hlineto + 32 39 rmoveto + hintmask 11101000 + -78 callgsubr + endchar + + + 283 callsubr + 161 73 hstemhm + 124 147 -83 106 hintmask 11010000 + -14 callgsubr + 103 567 rmoveto + hintmask 11101000 + -78 callgsubr + endchar + + + 271 callgsubr + 195 73 46 callgsubr + -83 106 hintmask 11110000 + 77 hmoveto + 147 491 callsubr + 31 53 rmoveto + hintmask 11101000 + -78 callgsubr + endchar + + + 271 callsubr + 227 90 389 callsubr + -84 107 hintmask 11110000 + 150 callsubr + 30 72 rmoveto + hintmask 11101000 + -76 callgsubr + + + -277 252 callsubr + 652 -20 hstemhm + 69 166 -158 147 hintmask 11101000 + 77 hmoveto + 147 260 callsubr + hlineto + hintmask 11110000 + 75 -878 rmoveto + -106 callsubr + + + -182 307 callsubr + 530 callgsubr + 115 458 callgsubr + hintmask 01101000 + -14 callgsubr + hintmask 11110000 + 146 -350 rmoveto + -106 callsubr + + + -277 252 callsubr + 528 -20 hstemhm + 68 166 -157 433 callgsubr + -754 rmoveto + -106 callsubr + + + -302 -226 154 93 318 callgsubr + hintmask 11110100 + 150 callsubr + hintmask 11111000 + 73 391 callgsubr + -795 vmoveto + -106 callsubr + + + 106 514 callsubr + hstem + 46 151 62 166 62 -97 callsubr + -341 vmoveto + -106 callsubr + + + 436 callgsubr + 25 166 31 66 callgsubr + hintmask 11111100 + -4 -335 rmoveto + -106 callsubr + + + 438 callgsubr + 8 166 8 65 callsubr + hintmask 11111100 + -333 vmoveto + -106 callsubr + + + 256 callsubr + 149 73 hstem + 46 151 135 106 49 -97 callsubr + -43 576 rmoveto + -78 callgsubr + endchar + + + 71 callsubr + 163 73 327 callsubr + 98 106 18 66 callgsubr + -47 472 rmoveto + hintmask 11111100 + -78 callgsubr + endchar + + + 78 callsubr + 195 90 266 callgsubr + 81 107 -6 65 callsubr + -43 461 277 callsubr + + + 256 callsubr + 93 67 hstem + 46 151 290 -97 callsubr + -94 570 -11 callsubr + 305 35 284 callsubr + endchar + + + 71 callsubr + 107 67 58 callgsubr + -98 466 -11 callsubr + 305 35 284 callsubr + endchar + + + 78 callsubr + 123 79 -34 callgsubr + -104 459 -32 callsubr + 327 20 rmoveto + 101 120 -78 51 -79 -127 rlineto + endchar + + + 256 callsubr + 93 67 hstem + 46 151 290 -97 callsubr + -94 570 -11 callsubr + 1 35 285 callgsubr + endchar + + + 71 callsubr + 107 67 58 callgsubr + -98 466 -11 callsubr + 1 35 285 callgsubr + endchar + + + 78 callsubr + 123 79 -34 callgsubr + -104 459 -32 callsubr + -25 20 rmoveto + 56 44 -83 127 -78 -52 rlineto + endchar + + + 256 callsubr + 86 74 -67 67 33 60 327 callsubr + 290 151 -138 95 hintmask 11011110 + -70 callsubr + -94 570 -11 callsubr + hintmask 11101110 + 290 26 rmoveto + hintmask 11101101 + 22 callgsubr + endchar + + + 71 callsubr + 100 74 -67 67 33 60 485 callgsubr + -107 95 hintmask 11011110 + -99 callgsubr + -98 466 -11 callsubr + hintmask 11101110 + 290 26 rmoveto + hintmask 11101101 + 22 callgsubr + endchar + + + 78 callsubr + 123 79 46 62 485 callsubr + -83 96 hintmask 11111100 + -101 callgsubr + -104 459 159 callgsubr + hintmask 11111010 + 70 callgsubr + + + 256 callsubr + 84 68 22 81 -37 81 327 callsubr + -8 509 callgsubr + -8 151 hintmask 1110110010000000 + -70 callsubr + -94 570 392 callsubr + hintmask 1111010100000000 + 75 callgsubr + hintmask 1110101010000000 + 107 callsubr + hintmask 1111010100000000 + 295 callsubr + + + 71 callsubr + 98 68 22 81 -37 81 327 callsubr + -45 509 callgsubr + -39 151 hintmask 1110110010000000 + -99 callgsubr + -98 466 392 callsubr + hintmask 1111010100000000 + 75 callgsubr + hintmask 1110101010000000 + 107 callsubr + hintmask 1111010100000000 + 295 callsubr + + + 78 callsubr + 114 80 14 456 callgsubr + -57 67 162 67 -57 150 hintmask 1110110010000000 + -101 callgsubr + -104 459 rmoveto + 102 56 366 callgsubr + -56 47 52 -93 84 rlineto + -116 hlineto + -93 -84 rlineto + hintmask 1111010100000000 + 153 callsubr + hintmask 1110101010000000 + 385 callsubr + hintmask 1111010100000000 + 233 callsubr + + + 106 514 callsubr + 105 66 hstem + 46 151 62 166 62 -97 callsubr + -106 570 -91 callgsubr + 170 -950 rmoveto + -106 callsubr + + + 498 callsubr + 119 66 327 callsubr + 25 166 31 151 hintmask 11111010 + -99 callgsubr + -110 466 -91 callgsubr + hintmask 11111110 + 170 -840 rmoveto + -106 callsubr + + + 497 callsubr + 145 91 266 callgsubr + 8 166 8 150 hintmask 11111010 + -101 callgsubr + -183 506 -63 callsubr + hintmask 11111110 + 75 -970 rmoveto + -106 callsubr + + + 256 callsubr + hstemhm + 47 151 290 151 -97 123 hintmask 11110000 + 154 callgsubr + hintmask 11101000 + 11 callgsubr + hintmask 11110000 + -213 120 -128 176 vhcurveto + -97 callgsubr + -10 565 -89 callgsubr + + + -27 callsubr + -12 582 -89 callgsubr + + + 63 callsubr + 13 465 -44 callsubr + + + 256 callsubr + hstemhm + 47 151 290 151 -97 123 hintmask 11110000 + 154 callgsubr + hintmask 11101000 + 11 callgsubr + hintmask 11110000 + -213 120 -128 176 vhcurveto + -97 callgsubr + 10 565 -22 callsubr + + + -27 callsubr + 8 582 -22 callsubr + + + 63 callsubr + -7 465 -29 callsubr + + + 256 callsubr + 149 73 hstemhm + 47 588 callsubr + -97 123 hintmask 11111100 + 154 callgsubr + hintmask 11111010 + 11 callgsubr + hintmask 11111100 + -213 120 -128 176 vhcurveto + -43 703 rmoveto + -78 callgsubr + 55 -634 338 callgsubr + + + 71 callsubr + 163 73 327 callsubr + 100 106 16 151 -80 123 hintmask 11110100 + 69 callsubr + hintmask 11110010 + 14 callsubr + hintmask 11110100 + -174 108 -104 155 vhcurveto + -45 593 rmoveto + hintmask 11111100 + -78 callgsubr + endchar + + + 78 callsubr + 195 90 266 callgsubr + 84 107 -9 150 -77 123 hintmask 11110100 + 224 callsubr + hintmask 11110010 + 14 callgsubr + hintmask 11110100 + 357 callgsubr + vhcurveto + -40 580 rmoveto + hintmask 11111000 + -78 callsubr + hintmask 11110100 + 52 -519 261 callgsubr + + + 256 callsubr + 28 406 callsubr + 47 151 -70 509 callsubr + -36 151 -97 123 hintmask 1101100100000000 + 154 callgsubr + hintmask 1101100010000000 + 11 callgsubr + hintmask 1101100100000000 + -213 120 -128 176 vhcurveto + -97 callgsubr + hintmask 1110101000000000 + 54 577 -6 callsubr + hintmask 1101010100000000 + -38 callgsubr + hintmask 1110101000000000 + 148 callgsubr + + + 71 callsubr + 42 102 -44 102 327 callsubr + -111 509 callsubr + -63 151 -80 123 hintmask 1101100100000000 + 69 callsubr + hintmask 1101100010000000 + 14 callsubr + hintmask 1101100100000000 + -174 108 -104 155 vhcurveto + hintmask 1110101000000000 + 46 594 -6 callsubr + hintmask 1101010100000000 + -38 callgsubr + hintmask 1110101000000000 + 148 callgsubr + + + 78 callsubr + 533 callgsubr + 36 151 -132 92 196 92 -66 150 -77 123 hintmask 1101100100000000 + 224 callsubr + hintmask 1101100010000000 + 14 callgsubr + hintmask 1101100100000000 + 198 callgsubr + hintmask 1110101000000000 + 33 466 -50 callgsubr + hintmask 1101010100000000 + -74 callsubr + hintmask 1110101000000000 + 136 callgsubr + + + 106 514 callsubr + hstemhm + 47 151 61 166 63 151 -97 123 hintmask 11110100 + 154 callgsubr + hintmask 11110010 + 11 callgsubr + hintmask 11110100 + -213 120 -128 176 vhcurveto + hintmask 11111100 + -1 386 callsubr + 1 341 338 callgsubr + + + 436 callgsubr + 28 166 28 151 -80 123 hintmask 11111100 + 308 -226 160 callgsubr + hintmask 11110100 + 1 335 15 callgsubr + hintmask 11110010 + 14 callsubr + hintmask 11110100 + -174 108 -104 155 vhcurveto + endchar + + + 438 callgsubr + 11 166 5 150 -77 123 hintmask 11110100 + 224 callsubr + hintmask 11110010 + 14 callgsubr + hintmask 11110100 + 357 callgsubr + vhcurveto + hintmask 11111000 + 3 386 callsubr + hintmask 11110100 + -3 333 261 callgsubr + + + 87 31 callgsubr + 60 242 callgsubr + 511 callsubr + 28 166 34 142 hintmask 11110100 + -94 callgsubr + hintmask 11111100 + -2 386 callsubr + endchar + + + 29 31 callgsubr + 60 234 callsubr + 495 callsubr + 1 166 7 141 hintmask 11110100 + -87 callsubr + hintmask 11101000 + -2 386 callsubr + endchar + + + -10 31 callgsubr + 60 132 callgsubr + hstemhm + 60 574 callgsubr + -4 147 hintmask 11011010 + -23 callsubr + hintmask 10111010 + 129 callgsubr + hintmask 11011010 + -328 vlineto + -88 callsubr + hintmask 10110100 + 64 386 callsubr + endchar + + + 269 callsubr + 181 73 511 callsubr + 101 106 21 142 hintmask 11110100 + -94 callgsubr + -45 703 rmoveto + hintmask 11111100 + -78 callgsubr + endchar + + + 185 callgsubr + 195 73 495 callsubr + 74 106 -6 141 hintmask 11110100 + -87 callsubr + -45 593 rmoveto + hintmask 11111000 + -78 callgsubr + endchar + + + 75 callsubr + 227 90 442 callgsubr + 68 107 -25 147 hintmask 10111010 + -23 callsubr + hintmask 01111010 + 129 callgsubr + hintmask 10111010 + -328 vlineto + -88 callsubr + 28 580 rmoveto + hintmask 01111100 + -76 callgsubr + + + -4 callgsubr + -269 378 -89 callgsubr + + + -1 callgsubr + -241 325 -89 callgsubr + + + 74 callsubr + 77 584 -44 callsubr + + + -4 callgsubr + -249 378 -22 callsubr + + + -1 callgsubr + -221 325 -22 callsubr + + + 74 callsubr + 57 584 -29 callsubr + + + 105 225 callsubr + 181 73 511 callsubr + 101 106 21 142 11 123 hintmask 11110100 + 591 598 rmoveto + hintmask 11110110 + 197 callsubr + hintmask 11110100 + 9 callgsubr + -302 389 rmoveto + hintmask 11111100 + -78 callgsubr + endchar + + + 47 218 callgsubr + 195 73 495 callsubr + 74 106 -6 141 10 123 hintmask 11110100 + 534 474 rmoveto + hintmask 11110110 + 53 callgsubr + hintmask 11110100 + 24 callsubr + -274 336 rmoveto + hintmask 11111000 + -78 callgsubr + endchar + + + 75 callsubr + 227 90 442 callgsubr + 64 107 -21 147 -20 123 hintmask 10111010 + -23 callsubr + hintmask 01111010 + 11 -69 rlineto + 120 451 hlineto + hintmask 01111001 + 52 callsubr + hintmask 10111010 + 125 callgsubr + 24 580 rmoveto + hintmask 01111100 + -76 callgsubr + + + 105 225 callsubr + 60 102 -44 102 511 callsubr + -87 87 214 95 -81 142 11 123 hintmask 1101100100000000 + 591 598 rmoveto + hintmask 1101100110000000 + 197 callsubr + hintmask 1110100100000000 + 9 callgsubr + -188 390 rmoveto + hintmask 1110101000000000 + -41 callgsubr + hintmask 1101010100000000 + -38 callgsubr + hintmask 1110100100000000 + 148 callgsubr + + + 47 218 callgsubr + 74 406 callsubr + 73 127 -127 146 -114 114 468 callgsubr + -128 95 43 123 hintmask 1101010100000000 + 534 474 rmoveto + hintmask 1101010101000000 + 53 callgsubr + hintmask 1110010100000000 + 24 callsubr + -160 337 rmoveto + hintmask 1110010010000000 + -41 callgsubr + hintmask 1101001100000000 + -33 -33 58 -71 hhcurveto + -70 -52 -43 -101 -5 hvcurveto + hintmask 1101100100000000 + 60 callsubr + hintmask 1110010100000000 + 148 callgsubr + + + 75 callsubr + 97 102 -38 102 442 callgsubr + -123 92 -92 123 461 callgsubr + -132 92 20 123 hintmask 1010110010000000 + -23 callsubr + hintmask 0110110010000000 + 11 -69 rlineto + 120 451 hlineto + hintmask 0110110000100000 + 52 callsubr + hintmask 1010110010000000 + 125 callgsubr + hintmask 0111010001000000 + 126 585 -50 callgsubr + hintmask 0110100110000000 + -31 -35 64 -63 hhcurveto + -77 -44 -49 -103 -3 hvcurveto + hintmask 0110101010000000 + 92 -5 rlineto + 39 4 11 16 20 hhcurveto + hintmask 0111010001000000 + 136 callgsubr + + + 105 31 callgsubr + 60 242 callgsubr + 511 callsubr + 28 166 34 142 11 123 hintmask 11110100 + 591 598 rmoveto + hintmask 11110110 + 197 callsubr + hintmask 11110100 + 9 callgsubr + hintmask 11111100 + -259 -528 rmoveto + -106 callsubr + + + 47 31 callgsubr + 60 234 callsubr + 495 callsubr + 1 166 7 141 10 123 hintmask 11110100 + 534 474 rmoveto + hintmask 11110110 + 53 callgsubr + hintmask 11110100 + 24 callsubr + hintmask 11101000 + -231 -471 rmoveto + -106 callsubr + + + -10 31 callgsubr + 60 132 callgsubr + 442 callgsubr + 8 166 -24 147 -20 123 hintmask 11011010 + -23 callsubr + hintmask 10111010 + 11 -69 rlineto + 120 451 hlineto + hintmask 10111001 + 52 callsubr + hintmask 11011010 + 125 callgsubr + hintmask 10111100 + 84 386 callsubr + endchar + + + -53 252 callsubr + 652 -20 hstemhm + 181 166 -158 200 callgsubr + 75 -458 rmoveto + -106 callsubr + + + -110 252 callsubr + 528 -20 hstemhm + 147 166 -153 147 hintmask 11101000 + 4 callsubr + hintmask 11110000 + 70 -407 rmoveto + -106 callsubr + + + -57 -218 154 -130 324 callgsubr + hstemhm + 364 166 hintmask 01011000 + -98 callgsubr + hintmask 00111000 + -26 -112 rlineto + hintmask 01011000 + 252 callgsubr + hintmask 10011000 + 327 -24 rmoveto + -106 callsubr + + + -53 180 callsubr + 181 73 hstemhm + 189 147 -84 106 hintmask 11110000 + -69 callsubr + 30 459 rmoveto + hintmask 11101000 + -78 callgsubr + endchar + + + 323 callsubr + 195 73 hstemhm + 160 147 -86 106 hintmask 11110000 + 4 callsubr + 28 400 rmoveto + hintmask 11101000 + -78 callgsubr + endchar + + + 254 callgsubr + 227 90 hstemhm + 257 107 hintmask 10111000 + -98 callgsubr + hintmask 01111000 + -26 -112 rlineto + hintmask 10111000 + 252 callgsubr + 104 762 rmoveto + hintmask 01111000 + -76 callgsubr + + + -53 180 callsubr + 60 406 callsubr + 64 95 30 147 29 95 hintmask 11010100 + -69 callsubr + hintmask 11100110 + 144 460 -6 callsubr + hintmask 11011100 + -38 callgsubr + hintmask 11100110 + 148 callgsubr + + + 323 callsubr + 74 406 callsubr + 33 95 32 147 27 95 hintmask 11010100 + 4 callsubr + hintmask 11100110 + 142 401 -6 callsubr + hintmask 11011100 + -38 callgsubr + hintmask 11100110 + 148 callgsubr + + + 254 callgsubr + 97 390 callgsubr + 77 92 196 92 hintmask 10101110 + -98 callgsubr + hintmask 01101110 + -26 -112 rlineto + hintmask 10101110 + 252 callgsubr + hintmask 01110110 + 213 767 -50 callgsubr + hintmask 01101110 + -74 callsubr + hintmask 01110110 + 136 callgsubr + + + 23 callgsubr + 237 90 266 callgsubr + 96 107 -26.5 186 callsubr + hintmask 01011110 + -40 callgsubr + hintmask 01011101 + -65 callgsubr + hintmask 01011110 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 01101101 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 01011110 + -59 -3 -43 -48 -44 hhcurveto + -20 470 115 callgsubr + + + 23 callgsubr + 227 326 callsubr + 9 107 60.5 -90 callsubr + hintmask 01011111 + 66 460 -64 callgsubr + + + 23 callgsubr + 225 326 callsubr + -18 97 97.5 -90 callsubr + -124 467 rmoveto + hintmask 01011011 + -75 callgsubr + + + 23 callgsubr + 225 326 callsubr + -89 97 168.5 -90 callsubr + hintmask 01011011 + -51 467 -80 callgsubr + + + 23 callgsubr + 225 326 callsubr + -18 97 97.5 -90 callsubr + -124 467 rmoveto + hintmask 01011011 + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 23 callgsubr + 225 326 callsubr + -79 97 158.5 -90 callsubr + hintmask 01011011 + -41 467 -66 callgsubr + + + 23 callgsubr + 175 59 16 456 callgsubr + -50 75 67 96 -11.5 51 callsubr + hintmask 0101110100010000 + 81 618 -45 callgsubr + hintmask 0101101010100000 + -64 callsubr + hintmask 0101110100010000 + 180 callgsubr + hintmask 0101101101000000 + -35 callgsubr + + + 23 callgsubr + 175 59 16 456 callgsubr + -50 75 -1 96 56.5 51 callsubr + hintmask 0101101101100000 + 58 455 -47 callsubr + hintmask 0101110100010000 + 118 callsubr + hintmask 0101101010100000 + -64 callsubr + hintmask 0101110100010000 + 233 callsubr + + + 77 -37 callsubr + -69 74 hstemhm + 72 106 hintmask 11011000 + 312 330 rmoveto + hintmask 11101000 + -107 callsubr + -241 281 callgsubr + hintmask 11011000 + -4 callsubr + endchar + + + 61 -37 callsubr + 531 callsubr + hintmask 11011000 + 296 330 rmoveto + hintmask 11101000 + -107 callsubr + -137 -222 rmoveto + hintmask 11011000 + -8 callgsubr + hintmask 11101000 + 265 callgsubr + endchar + + + 244 21 262 callsubr + 59 97 hintmask 11001100 + 479 330 rmoveto + hintmask 11100100 + -107 callsubr + -410 -215 131 callgsubr + hintmask 11001100 + 170 callgsubr + hintmask 11010100 + 122 callsubr + + + 243 21 262 callsubr + -12 97 hintmask 11001100 + 478 330 rmoveto + hintmask 11100100 + -107 callsubr + -339 -215 rmoveto + hintmask 11010100 + -60 callgsubr + hintmask 11100100 + 105 callsubr + + + 234 21 262 callsubr + 59 97 hintmask 11001100 + 469 330 rmoveto + hintmask 11100100 + -107 callsubr + -400 -215 131 callgsubr + hintmask 11001100 + 170 callgsubr + hintmask 11010100 + 87 callsubr + hintmask 11100100 + 61 138 callsubr + rlineto + endchar + + + 233 21 262 callsubr + -12 97 hintmask 11001100 + 468 330 rmoveto + hintmask 11100100 + -107 callsubr + -329 -215 rmoveto + hintmask 11010100 + -60 callgsubr + hintmask 11100100 + 516 callsubr + 61 138 callsubr + rlineto + endchar + + + 337 callsubr + 97 96 hintmask 1110000011000000 + 336 330 rmoveto + hintmask 1101000001000000 + -101 callsubr + -244 133 rmoveto + hintmask 1110000011000000 + -6 callgsubr + 33 -450 103 callsubr + + + 337 callsubr + 29 96 hintmask 1110000011000000 + 336 330 rmoveto + hintmask 1101000001000000 + -101 callsubr + hintmask 1110000011000000 + -174 133 -34 callsubr + -46 -403 103 callsubr + + + 208 callgsubr + 195 90 354 callsubr + 50 107 hintmask 11111010 + 9 callsubr + hintmask 11110110 + -71 callsubr + hintmask 11111010 + -59 -16 -37 -35 -67 vvcurveto + -102 104 -51 128 vhcurveto + -50 580 115 callgsubr + + + 208 callgsubr + 195 82 354 callsubr + -37 107 -72 callsubr + hintmask 11110010 + 36 580 -64 callgsubr + + + 191 callgsubr + -64 97 -72 callsubr + -154 587 rmoveto + hintmask 11110010 + -75 callgsubr + + + 191 callgsubr + -135 97 -72 callsubr + hintmask 11110010 + -81 95 callgsubr + + + 191 callgsubr + -64 97 -72 callsubr + -154 587 rmoveto + hintmask 11110010 + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 191 callgsubr + -125 97 -72 callsubr + hintmask 11110010 + -71 587 -66 callgsubr + + + 133 -28 callgsubr + -69 74 hstemhm + 70 106 64 580 callgsubr + 240 155 callsubr + -203 281 callgsubr + hintmask 11011100 + -4 callsubr + endchar + + + 133 -28 callgsubr + -69 427 callgsubr + hintmask 11100110 + 240 155 callsubr + -113 -222 rmoveto + hintmask 11010110 + 11 58 rlineto + -23 8 -22 12 30 vvcurveto + 24 23 17 57 4 vhcurveto + hintmask 11001110 + -17 74 rlineto + -124 -3 -44 -41 -59 vvcurveto + hintmask 11100110 + 265 callgsubr + endchar + + + 296 475 callsubr + 0 -20 hstemhm + 59 97 247 573 callgsubr + 403 155 callsubr + 395 callgsubr + hintmask 11001110 + 170 callgsubr + hintmask 11010110 + 122 callsubr + + + 295 475 callsubr + hstemhm + -12 97 317 580 callgsubr + 402 155 callsubr + -295 -215 rmoveto + hintmask 11011100 + -60 callgsubr + hintmask 11101100 + 105 callsubr + + + 286 475 callsubr + 0 -20 hstemhm + 59 97 237 573 callgsubr + 393 155 callsubr + 399 callgsubr + hintmask 11001110 + 170 callgsubr + hintmask 11010110 + 87 callsubr + hintmask 11100110 + 61 138 callsubr + rlineto + endchar + + + 285 475 callsubr + hstemhm + -12 97 307 580 callgsubr + 392 155 callsubr + -285 -215 rmoveto + hintmask 11011100 + -60 callgsubr + hintmask 11101100 + 516 callsubr + 61 138 callsubr + rlineto + endchar + + + 250 callsubr + 227 90 152 callgsubr + 84 107 -39 -73 callsubr + -90 745 rmoveto + hintmask 10110110 + -76 callgsubr + + + 250 callsubr + 227 448 callsubr + -3 107 48 -73 callsubr + hintmask 10110011 + -4 745 -64 callgsubr + + + 192 callgsubr + -30 97 85 -73 callsubr + -194 752 rmoveto + hintmask 10110011 + -75 callgsubr + + + 192 callgsubr + -101 97 156 -73 callsubr + hintmask 10110011 + -121 752 -80 callgsubr + + + 192 callgsubr + -30 97 85 -73 callsubr + -194 752 rmoveto + hintmask 10110011 + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 192 callgsubr + -91 97 146 -73 callsubr + hintmask 10110011 + -111 752 -66 callgsubr + + + 329 callgsubr + 67 96 -24 138 -115 75 hintmask 1011010100100000 + -15 callgsubr + hintmask 1101011000100000 + -43 callsubr + hintmask 1011011000100000 + -10 86 rlineto + hintmask 1011010100100000 + -53 callgsubr + hintmask 1101010100100000 + -53 callsubr + hintmask 1011010100100000 + 6 callgsubr + hintmask 1011100100010000 + 11 903 -45 callgsubr + hintmask 1011010010100000 + -64 callsubr + hintmask 1011100100010000 + 180 callgsubr + hintmask 1011010101000000 + -35 callgsubr + + + 329 callgsubr + -1 96 44 138 -115 75 hintmask 1011010100100000 + -15 callgsubr + hintmask 1101011000100000 + -43 callsubr + hintmask 1011011000100000 + -10 86 rlineto + hintmask 1011010100100000 + -53 callgsubr + hintmask 1101010100100000 + -53 callsubr + hintmask 1011010100100000 + 6 callgsubr + hintmask 1011010101100000 + -12 740 -47 callsubr + hintmask 1011100100010000 + 118 callsubr + hintmask 1011010010100000 + -64 callsubr + hintmask 1011100100010000 + 233 callsubr + + + 258 21 186 callgsubr + 182 74 -5 -20 hstemhm + 70 106 64 147 225 148 hintmask 11011110 + 240 -35 callsubr + -203 281 callgsubr + hintmask 11101110 + -4 callsubr + endchar + + + 258 21 186 callgsubr + 182 427 callgsubr + 225 148 hintmask 11010110 + 240 -31 callgsubr + hlineto + hintmask 11101110 + 36 callgsubr + -113 -222 rmoveto + hintmask 11011110 + -8 callgsubr + hintmask 11101110 + 265 callgsubr + endchar + + + 421 463 callgsubr + 59 97 247 147 225 148 hintmask 11001011 + 403 -31 callgsubr + hlineto + hintmask 11010111 + 36 callgsubr + 395 callgsubr + hintmask 11001111 + 170 callgsubr + hintmask 11100111 + 122 callsubr + + + 420 463 callgsubr + -12 97 317 147 225 148 hintmask 11001011 + 402 -31 callgsubr + hlineto + hintmask 11010111 + 36 callgsubr + -295 -215 rmoveto + hintmask 11100111 + -60 callgsubr + hintmask 11010111 + 105 callsubr + + + 412 463 callgsubr + 59 97 237 147 225 148 hintmask 11001011 + 393 -31 callgsubr + hlineto + hintmask 11010111 + 36 callgsubr + 399 callgsubr + hintmask 11001111 + 170 callgsubr + hintmask 11100111 + 87 callsubr + hintmask 11010011 + 61 138 callsubr + rlineto + endchar + + + 410 463 callgsubr + -12 97 307 147 225 148 hintmask 11001011 + 392 -31 callgsubr + hlineto + hintmask 11010111 + 36 callgsubr + -285 -215 rmoveto + hintmask 11100111 + -60 callgsubr + hintmask 11010111 + 516 callsubr + 61 138 callsubr + rlineto + endchar + + + 318 21 190 callsubr + 97 96 107 147 225 148 hintmask 1100000010110000 + 300 -31 callgsubr + hlineto + hintmask 1100001000110000 + 36 callgsubr + hintmask 1100100000110000 + -137 -84 rmoveto + hintmask 1100000100110000 + 138 callgsubr + hintmask 1101000010110000 + 208 callsubr + hintmask 1100010000110000 + -54 callsubr + hintmask 1100100000110000 + 273 callgsubr + -87 -165 rmoveto + hintmask 1110000011110000 + -6 callgsubr + endchar + + + 318 21 190 callsubr + 29 96 175 147 225 148 hintmask 1100000010110000 + 300 -31 callgsubr + hlineto + hintmask 1100001000110000 + 36 callgsubr + hintmask 1100100000110000 + -137 -84 rmoveto + hintmask 1100000100110000 + 138 callgsubr + hintmask 1101000010110000 + 208 callsubr + hintmask 1100010000110000 + -54 callsubr + hintmask 1100100000110000 + 273 callgsubr + hintmask 1110000011110000 + -17 -165 -34 callsubr + endchar + + + 202 callgsubr + 237 90 hstemhm + 65 138 -75 107 hintmask 01111000 + 28 callsubr + hintmask 10111000 + -82 callsubr + hintmask 01111000 + 169 callsubr + -111 590 rmoveto + hintmask 01110100 + -76 callgsubr + + + 202 callgsubr + 227 82 hstemhm + 41 107 -83 138 hintmask 01110100 + 28 callsubr + hintmask 10110100 + -82 callsubr + hintmask 01110100 + 169 callsubr + hintmask 01111000 + -25 580 -64 callgsubr + + + 202 callgsubr + 225 82 hstemhm + 14 97 -46 138 hintmask 01110100 + 28 callsubr + hintmask 10110100 + -82 callsubr + hintmask 01110100 + 169 callsubr + -215 587 rmoveto + hintmask 01111000 + -75 callgsubr + + + 202 callgsubr + 225 82 hstemhm + -57 97 25 138 hintmask 01110100 + 28 callsubr + hintmask 10110100 + -82 callsubr + hintmask 01110100 + 169 callsubr + hintmask 01111100 + -142 95 callgsubr + + + 202 callgsubr + 225 82 hstemhm + 14 97 -46 138 hintmask 01110100 + 28 callsubr + hintmask 10110100 + -82 callsubr + hintmask 01110100 + 169 callsubr + -215 587 rmoveto + hintmask 01111000 + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 202 callgsubr + 225 82 hstemhm + -47 97 15 138 hintmask 01110100 + 28 callsubr + hintmask 10110100 + -82 callsubr + hintmask 01110100 + 169 callsubr + hintmask 01111100 + -132 587 -66 callgsubr + + + 202 callgsubr + 175 169 callgsubr + -18 75 8 138 -79 96 -1 75 hintmask 0111010100000000 + 28 callsubr + hintmask 1011010100000000 + -82 callsubr + hintmask 0111010100000000 + 169 callsubr + hintmask 0111100101000000 + -10 409 callsubr + hintmask 0111011100000000 + -64 callsubr + hintmask 0111100101000000 + 180 callgsubr + hintmask 0111010010000000 + -35 callgsubr + + + 202 callgsubr + 175 169 callgsubr + -18 75 -1 96 -87 138 16 75 hintmask 0111010010000000 + 28 callsubr + hintmask 1011010010000000 + -82 callsubr + hintmask 0111010010000000 + 169 callsubr + hintmask 0111010100000000 + -33 575 -47 callsubr + hintmask 0111100011000000 + 118 callsubr + hintmask 0111011010000000 + -64 callsubr + hintmask 0111100011000000 + 233 callsubr + + + -114 21 -21 583 74 -5 -20 hstemhm + 70 106 64 389 callgsubr + 240 hmoveto + 147 260 callsubr + hlineto + -203 281 callgsubr + hintmask 11011000 + -4 callsubr + endchar + + + -114 21 -21 583 427 callgsubr + hintmask 10101000 + 240 hmoveto + 147 hlineto + hintmask 11011000 + 490 callsubr + -113 -222 rmoveto + hintmask 10111000 + -8 callgsubr + hintmask 11011000 + 265 callgsubr + endchar + + + 49 425 callgsubr + 59 97 247 147 hintmask 10010100 + 403 hmoveto + 147 hlineto + hintmask 10101100 + 490 callsubr + 395 callgsubr + hintmask 10011100 + 170 callgsubr + hintmask 11001100 + 122 callsubr + + + 48 500 callsubr + 317 147 hintmask 10010100 + 402 hmoveto + 147 hlineto + hintmask 10101100 + 490 callsubr + -295 -215 rmoveto + hintmask 11001100 + -60 callgsubr + hintmask 10101100 + 105 callsubr + + + 39 425 callgsubr + 59 97 237 147 hintmask 10010100 + 393 hmoveto + 147 hlineto + hintmask 10101100 + 490 callsubr + 399 callgsubr + hintmask 10011100 + 170 callgsubr + hintmask 11001100 + 87 callsubr + hintmask 10100100 + 61 138 callsubr + rlineto + endchar + + + 38 500 callsubr + 307 147 hintmask 10010100 + 392 hmoveto + 147 hlineto + hintmask 10101100 + 490 callsubr + -285 -215 rmoveto + hintmask 11001100 + -60 callgsubr + hintmask 10101100 + 516 callsubr + 61 138 callsubr + rlineto + endchar + + + -54 21 -21 491 219 callsubr + 97 96 107 147 hintmask 1100000101000000 + 300 hmoveto + 147 hlineto + hintmask 1100010001000000 + 490 callsubr + hintmask 1101000001000000 + -137 -84 rmoveto + hintmask 1100001001000000 + 138 callgsubr + hintmask 1110000101000000 + 208 callsubr + hintmask 1100100001000000 + -54 callsubr + hintmask 1101000001000000 + 273 callgsubr + -87 -165 rmoveto + hintmask 1100000111000000 + -6 callgsubr + endchar + + + -54 21 -21 491 219 callsubr + 29 96 175 147 hintmask 1100000101000000 + 300 hmoveto + 147 hlineto + hintmask 1100010001000000 + 490 callsubr + hintmask 1101000001000000 + -137 -84 rmoveto + hintmask 1100001001000000 + 138 callgsubr + hintmask 1110000101000000 + 208 callsubr + hintmask 1100100001000000 + -54 callsubr + hintmask 1101000001000000 + 273 callgsubr + hintmask 1100000111000000 + -17 -165 -34 callsubr + endchar + + + 355 callsubr + 205 90 266 callgsubr + 83 107 -11 430 callgsubr + -81 callsubr + -39 471 277 callsubr + + + 355 callsubr + 195 326 callsubr + -4 107 76 430 callgsubr + -81 callsubr + hintmask 11101100 + 47 461 -64 callgsubr + + + 249 callgsubr + -31 97 113 430 callgsubr + -81 callsubr + -143 468 rmoveto + hintmask 11101100 + -75 callgsubr + + + 249 callgsubr + -102 97 184 430 callgsubr + -81 callsubr + hintmask 11101100 + -70 468 -80 callgsubr + + + 249 callgsubr + -31 97 113 430 callgsubr + -81 callsubr + -143 468 rmoveto + hintmask 11101100 + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 249 callgsubr + -92 97 174 430 callgsubr + -81 callsubr + hintmask 11101100 + -60 468 -66 callgsubr + + + 249 -12 127 422 525 callgsubr + 12 151 290 151 hintmask 11001100 + 484 -12 -106 callgsubr + -447 315 rmoveto + hintmask 10111100 + 298 callsubr + -4 callsubr + endchar + + + 230 120 callsubr + -81 74 hstemhm + -12 105 77 481 callgsubr + 466 -12 -106 callgsubr + -339 315 rmoveto + hintmask 10111100 + -8 callgsubr + hintmask 11011100 + 265 callgsubr + endchar + + + 406 120 callsubr + -74 74 hstemhm + 59 97 203 481 callgsubr + 655 -12 -106 callgsubr + -618 322 141 callgsubr + hintmask 10111100 + 122 callsubr + + + 418 120 callsubr + -74 74 hstemhm + -12 97 273 481 callgsubr + 654 -12 -106 callgsubr + -547 322 rmoveto + hintmask 10111100 + 12 58 rlineto + -18 10 -16 12 24 vvcurveto + 24 19 20 49 5 vhcurveto + hintmask 11011100 + -17 74 rlineto + -101 -4 -47 -40 -64 vvcurveto + 105 callsubr + + + 396 120 callsubr + -74 74 -12 -20 hstemhm + 59 97 179 151 290 151 hintmask 11001110 + 631 -12 -106 callgsubr + -594 322 141 callgsubr + hintmask 10101110 + 87 callsubr + hintmask 10011110 + 61 138 callsubr + rlineto + endchar + + + 395 120 callsubr + -74 74 -12 -20 hstemhm + -12 97 249 151 290 151 hintmask 11001110 + 630 -12 -106 callgsubr + -523 322 rmoveto + hintmask 10101110 + 12 58 rlineto + -18 10 -16 12 24 vvcurveto + 24 19 20 49 5 vhcurveto + hintmask 11001110 + 247 callsubr + 78 20 510 callsubr + hintmask 10011110 + 61 138 callsubr + rlineto + endchar + + + 84 callsubr + 225 90 494 callsubr + 65 107 -18 147 hintmask 10111010 + -44 callgsubr + hintmask 11011010 + -92 callsubr + hintmask 10111010 + 131 callsubr + -40 590 rmoveto + hintmask 10111100 + -76 callgsubr + + + 84 callsubr + 215 82 494 callsubr + -22 107 69 147 hintmask 10111010 + -44 callgsubr + hintmask 11011010 + -92 callsubr + hintmask 10111010 + 374 callgsubr + 46 580 -64 callgsubr + + + 84 callsubr + 213 82 494 callsubr + -49 97 106 147 hintmask 10111010 + -44 callgsubr + hintmask 11011010 + -92 callsubr + hintmask 10111010 + 131 callsubr + -144 587 rmoveto + hintmask 10110110 + -75 callgsubr + + + 84 callsubr + 213 82 494 callsubr + -120 97 177 147 hintmask 10111010 + -44 callgsubr + hintmask 11011010 + -92 callsubr + hintmask 10111010 + 374 callgsubr + -71 95 callgsubr + + + 84 callsubr + 213 82 494 callsubr + -49 97 106 147 hintmask 10111010 + -44 callgsubr + hintmask 11011010 + -92 callsubr + hintmask 10111010 + 131 callsubr + -144 587 rmoveto + hintmask 10110110 + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 84 callsubr + 213 82 494 callsubr + -110 97 167 147 hintmask 10111010 + -44 callgsubr + hintmask 11011010 + -92 callsubr + hintmask 10111010 + 374 callgsubr + -61 587 -66 callgsubr + + + 84 callsubr + 163 169 callgsubr + 54 134 -81 75 67 96 -3 147 -145 75 hintmask 1011011001000000 + -44 callgsubr + hintmask 1101011001000000 + -92 callsubr + hintmask 1011011001000000 + 131 callsubr + hintmask 1011101000100000 + 61 409 callsubr + hintmask 1011010101000000 + -64 callsubr + hintmask 1011101000100000 + 180 callgsubr + hintmask 1011011010000000 + -35 callgsubr + + + 84 callsubr + 163 169 callgsubr + 54 134 -81 75 -1 96 65 147 -145 75 hintmask 1011011001000000 + -44 callgsubr + hintmask 1101011001000000 + -92 callsubr + hintmask 1011011001000000 + 131 callsubr + hintmask 1011010011000000 + 38 575 -47 callsubr + hintmask 1011101000100000 + 118 callsubr + hintmask 1011010101000000 + -64 callsubr + hintmask 1011101000100000 + 233 callsubr + + + 153 21 -21 583 417 callsubr + 302 147 hintmask 11011000 + 395 -84 callgsubr + -268 198 329 callsubr + -23 8 -22 12 30 vvcurveto + 24 23 17 57 4 vhcurveto + hintmask 10111000 + -17 74 rlineto + -124 -3 -44 -41 -59 vvcurveto + hintmask 11011000 + 265 callgsubr + endchar + + + 332 500 callsubr + 489 147 hintmask 10010100 + 574 217 callsubr + hintmask 10101100 + -96 callgsubr + -467 205 rmoveto + hintmask 11001100 + -60 callgsubr + hintmask 10101100 + 105 callsubr + + + 322 500 callsubr + 479 147 hintmask 10010100 + 564 217 callsubr + hintmask 10101100 + -96 callgsubr + -457 205 rmoveto + hintmask 11001100 + -60 callgsubr + hintmask 10101100 + 516 callsubr + 61 138 callsubr + rlineto + endchar + + + 216 21 -21 491 59 18 340 callsubr + 29 96 333 147 hintmask 1100001010000000 + 458 217 callsubr + hintmask 1101000010000000 + -96 callgsubr + -295 336 rmoveto + hintmask 1100010010000000 + 138 callgsubr + hintmask 1110001010000000 + 208 callsubr + hintmask 1100100010000000 + -54 callsubr + hintmask 1101000010000000 + 273 callgsubr + hintmask 1100001110000000 + -17 -165 -34 callsubr + endchar + + + 232 callgsubr + 225 90 hstemhm + 40 139 127 131 -74 107 89 147 hintmask 11111010 + -107 callgsubr + 96 590 rmoveto + hintmask 11110110 + -76 callgsubr + + + 232 callgsubr + 215 82 hstemhm + 40 139 97 107 -77 -18 callgsubr + hintmask 11111010 + 182 580 -64 callgsubr + + + 232 callgsubr + 213 82 hstemhm + 40 139 70 97 -40 -18 callgsubr + -8 587 rmoveto + hintmask 11111010 + -75 callgsubr + + + 232 callgsubr + 213 82 hstemhm + 40 139 -1 97 31 -18 callgsubr + hintmask 11101110 + 65 95 callgsubr + + + 232 callgsubr + 213 82 hstemhm + 40 139 70 97 -40 -18 callgsubr + -8 587 rmoveto + hintmask 11111010 + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 232 callgsubr + 213 82 hstemhm + 40 139 9 97 21 -18 callgsubr + hintmask 11111110 + 75 587 -66 callgsubr + + + 232 callgsubr + 163 169 callgsubr + 40 139 38 75 14 131 -78 96 -1 569 callsubr + hintmask 1110110100100000 + -107 callgsubr + hintmask 1111010101100000 + 197 409 callsubr + hintmask 1110111100100000 + -64 callsubr + hintmask 1111010101100000 + 180 callgsubr + hintmask 1110110010100000 + -35 callgsubr + + + 232 callgsubr + 163 169 callgsubr + 40 139 38 75 -1 96 -81 131 17 569 callsubr + hintmask 1110110010100000 + -107 callgsubr + hintmask 1110110100100000 + 174 575 -47 callsubr + hintmask 1111010011100000 + 118 callsubr + hintmask 1110111010100000 + -64 callsubr + hintmask 1111010011100000 + 233 callsubr + + + 275 0 119 418 525 callgsubr + 26 -45 callsubr + hintmask 1100100010000000 + 186 hmoveto + hintmask 1100010010000000 + 359 callgsubr + hintmask 1100100010000000 + -74 callgsubr + hintmask 1100100100000000 + 162 callgsubr + hintmask 1100101000000000 + -110 4 hlineto + hintmask 1100100010000000 + -93 callgsubr + -149 311 rmoveto + hintmask 1011100010000000 + 298 callsubr + -4 callsubr + endchar + + + 257 0 119 418 127 -81 74 hstemhm + -12 105 91 -45 callsubr + hintmask 1101100010000000 + 168 hmoveto + hintmask 1101010010000000 + 359 callgsubr + hintmask 1101100010000000 + -74 callgsubr + hintmask 1101100100000000 + 162 callgsubr + hintmask 1101101000000000 + -110 4 hlineto + hintmask 1101100010000000 + -93 callgsubr + -41 311 rmoveto + hintmask 1011100010000000 + -8 callgsubr + hintmask 1101100010000000 + 265 callgsubr + endchar + + + 440 0 119 418 127 -74 74 hstemhm + 59 97 212 -45 callsubr + hintmask 1101100010000000 + 352 hmoveto + hintmask 1101010010000000 + 359 callgsubr + hintmask 1101100010000000 + -74 callgsubr + hintmask 1101100100000000 + 162 callgsubr + hintmask 1101101000000000 + -110 4 hlineto + hintmask 1101100010000000 + -93 callgsubr + -315 318 141 callgsubr + hintmask 1011100010000000 + 122 callsubr + + + 439 0 119 418 127 -74 74 hstemhm + -12 97 282 -45 callsubr + hintmask 1101100010000000 + 351 hmoveto + hintmask 1101010010000000 + 359 callgsubr + hintmask 1101100010000000 + -74 callgsubr + hintmask 1101100100000000 + 162 callgsubr + hintmask 1101101000000000 + -110 4 hlineto + hintmask 1101100010000000 + -93 callgsubr + -244 318 rmoveto + hintmask 1011100010000000 + 12 58 rlineto + -18 10 -16 12 24 vvcurveto + 24 19 20 49 5 vhcurveto + hintmask 1101100010000000 + -17 74 rlineto + -101 -4 -47 -40 -64 vvcurveto + 105 callsubr + + + 430 0 119 418 127 -74 74 -12 -20 hstemhm + 59 97 202 -45 callsubr + hintmask 1100110001000000 + 342 hmoveto + hintmask 1100101001000000 + 359 callgsubr + hintmask 1100110001000000 + -74 callgsubr + hintmask 1100110010000000 + 162 callgsubr + hintmask 1100110100000000 + -110 4 hlineto + hintmask 1100110001000000 + -93 callgsubr + -305 318 141 callgsubr + hintmask 1010110001000000 + 87 callsubr + hintmask 1001110001000000 + 61 138 callsubr + rlineto + endchar + + + 429 0 119 418 127 -74 74 -12 -20 hstemhm + -12 97 272 -45 callsubr + hintmask 1100110001000000 + 341 hmoveto + hintmask 1100101001000000 + 359 callgsubr + hintmask 1100110001000000 + -74 callgsubr + hintmask 1100110010000000 + 162 callgsubr + hintmask 1100110100000000 + -110 4 hlineto + hintmask 1100110001000000 + -93 callgsubr + -234 318 rmoveto + hintmask 1010110001000000 + 12 58 rlineto + -18 10 -16 12 24 vvcurveto + 24 19 20 49 5 vhcurveto + hintmask 1100110001000000 + 247 callsubr + 78 20 510 callsubr + hintmask 1001110001000000 + 61 138 callsubr + rlineto + endchar + + + 299 0 119 372 59 -13 127 -96 68 -68 96 -64 69 -14 9 hstemhm + 97 96 33 -45 callsubr + hintmask 1010000010001000 + 210 hmoveto + hintmask 1010000001001000 + 359 callgsubr + hintmask 1010000010001000 + -74 callgsubr + hintmask 1010000010010000 + 162 callgsubr + hintmask 1010000010100000 + -110 4 hlineto + hintmask 1010000010001000 + -93 callgsubr + hintmask 1000100010001000 + -47 449 rmoveto + hintmask 1000001010001000 + 48 27 18 69 9 hvcurveto + hintmask 1010000010001000 + -64 9 rlineto + hintmask 1001000010001000 + 208 callsubr + hintmask 1000010010001000 + -54 callsubr + hintmask 1000100010001000 + 273 callgsubr + -87 -165 rmoveto + hintmask 1100000110001000 + -6 callgsubr + endchar + + + 299 0 119 372 59 -13 127 -96 68 -68 96 -64 69 -14 9 hstemhm + 29 96 101 -45 callsubr + hintmask 1010000010001000 + 210 hmoveto + hintmask 1010000001001000 + 359 callgsubr + hintmask 1010000010001000 + -74 callgsubr + hintmask 1010000010010000 + 162 callgsubr + hintmask 1010000010100000 + -110 4 hlineto + hintmask 1010000010001000 + -93 callgsubr + hintmask 1000100010001000 + -47 449 rmoveto + hintmask 1000001010001000 + 48 27 18 69 9 hvcurveto + hintmask 1010000010001000 + -64 9 rlineto + hintmask 1001000010001000 + 208 callsubr + hintmask 1000010010001000 + -54 callsubr + hintmask 1000100010001000 + 273 callgsubr + hintmask 1100000110001000 + -17 -165 -34 callsubr + endchar + + + -79 callgsubr + 13 464 -29 callsubr + + + -79 callgsubr + 33 464 -44 callsubr + + + -61 callgsubr + -17 584 -29 callsubr + + + -61 callgsubr + 3 584 -44 callsubr + + + -51 callgsubr + -57 749 -29 callsubr + + + -51 callgsubr + -37 749 -44 callsubr + + + -7 callgsubr + -78 584 -29 callsubr + + + -7 callgsubr + -58 584 -44 callsubr + + + -25 319 callgsubr + 179 151 vstem + -81 callsubr + -6 465 -29 callsubr + + + -25 319 callgsubr + 179 151 vstem + -81 callsubr + 14 465 -44 callsubr + + + 84 callsubr + 494 callsubr + 154 389 callgsubr + -44 callgsubr + hintmask 11011000 + -92 callsubr + hintmask 10111000 + 131 callsubr + -7 584 -29 callsubr + + + 84 callsubr + 494 callsubr + 154 389 callgsubr + -44 callgsubr + hintmask 11011000 + -92 callsubr + hintmask 10111000 + 131 callsubr + 13 584 -44 callsubr + + + 232 callgsubr + hstem + 40 139 127 456 callsubr + vstem + -107 callgsubr + 129 584 -29 callsubr + + + 232 callgsubr + hstem + 40 139 127 456 callsubr + vstem + -107 callgsubr + 149 584 -44 callsubr + + + 108 callgsubr + 237 90 266 callgsubr + 63 104 -71 107 -26.5 186 callsubr + hintmask 0101011110000000 + -40 callgsubr + hintmask 0101011110100000 + -41 callsubr + hintmask 0110011110100000 + -83 callgsubr + hintmask 0101101110100000 + -77 callgsubr + hintmask 0101011110000000 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 0101101110100000 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 0101011110000000 + -59 -3 -43 -48 -44 hhcurveto + 91 -324 rmoveto + 32 callgsubr + hintmask 1001011110000000 + -77 callsubr + hintmask 0101011110000000 + -56 callsubr + -111 794 rmoveto + hintmask 0101011101000000 + -76 callgsubr + + + 108 callgsubr + 227 326 callsubr + 9 107 -53 -96 callsubr + hintmask 0101011110000000 + -25 784 -64 callgsubr + + + 315 callgsubr + -18 97 -16 -96 callsubr + -215 791 rmoveto + hintmask 0101011010000000 + -75 callgsubr + + + 315 callgsubr + -89 97 55 -96 callsubr + hintmask 0101011011000000 + -142 791 -80 callgsubr + + + 315 callgsubr + -18 97 -16 -96 callsubr + -215 791 rmoveto + hintmask 0101011010000000 + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 315 callgsubr + -79 97 45 -96 callsubr + hintmask 0101011011000000 + -132 791 -66 callgsubr + + + 108 callgsubr + 175 59 16 456 callgsubr + -50 75 38 104 -75 96 -11.5 487 callgsubr + hintmask 0101011011010000 + -40 callgsubr + hintmask 0101011011010100 + -41 callsubr + hintmask 0110011011010100 + -83 callgsubr + hintmask 0101101011010100 + -77 callgsubr + hintmask 0101011011010000 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 0101101011010100 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 0101011011010000 + -59 -3 -43 -48 -44 hhcurveto + 91 -324 rmoveto + 32 callgsubr + hintmask 1001011011010000 + -77 callsubr + hintmask 0101011011010000 + -56 callsubr + hintmask 0101011101010010 + -10 408 callsubr + hintmask 0101011010110000 + -64 callsubr + hintmask 0101011101010010 + 180 callgsubr + hintmask 0101011011001000 + -35 callgsubr + + + 108 callgsubr + 175 59 16 456 callgsubr + -50 75 -1 96 -57 206 callgsubr + -119 75 hintmask 0101011011001000 + -40 callgsubr + hintmask 0101011011001100 + -41 callsubr + hintmask 0110011011001100 + -83 callgsubr + hintmask 0101101011001100 + -77 callgsubr + hintmask 0101011011001000 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 0101101011001100 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 0101011011001000 + -59 -3 -43 -48 -44 hhcurveto + 91 -324 rmoveto + 32 callgsubr + hintmask 1001011011001000 + -77 callsubr + hintmask 0101011011001000 + -56 callsubr + hintmask 0101011011010000 + -33 779 -47 callsubr + hintmask 0101011101001010 + 118 callsubr + hintmask 0101011010101000 + -64 callsubr + hintmask 0101011101001010 + 233 callsubr + + + 371 25 callgsubr + -98 -21 33 -55 callsubr + -69 74 hstemhm + 72 106 539 138 hintmask 00110101 + 312 330 rmoveto + hintmask 00111011 + -107 callsubr + -241 281 callgsubr + hintmask 01010111 + -4 callsubr + 833 -500 79 callgsubr + hintmask 10010101 + -94 callsubr + hintmask 01010111 + 44 callsubr + + + 355 25 callgsubr + -98 -21 33 -55 callsubr + 531 callsubr + 607 138 hintmask 00110101 + 296 330 rmoveto + hintmask 00111011 + -107 callsubr + -137 -222 rmoveto + hintmask 00110111 + -8 callgsubr + hintmask 00111011 + 265 callgsubr + hintmask 01010101 + 717 -442 79 callgsubr + hintmask 10010101 + -94 callsubr + hintmask 01010101 + 44 callsubr + + + 538 189 callgsubr + 59 97 728 138 hintmask 0011001010000000 + 479 330 rmoveto + hintmask 0011100110000000 + -107 callsubr + -410 -215 131 callgsubr + hintmask 0011001110000000 + 170 callgsubr + hintmask 0101010110000000 + 21 callsubr + 843 -664 79 callgsubr + hintmask 1001001010000000 + -94 callsubr + hintmask 0101010110000000 + 44 callsubr + + + 537 189 callgsubr + -12 97 798 138 hintmask 0011001010000000 + 478 330 rmoveto + hintmask 0011100110000000 + -107 callsubr + -339 -215 rmoveto + hintmask 0011010110000000 + -60 callgsubr + hintmask 0011100110000000 + 156 callsubr + 137 3 -27 callgsubr + hintmask 0101001010000000 + 843 -664 79 callgsubr + hintmask 1001001010000000 + -94 callsubr + hintmask 0101001010000000 + 44 callsubr + + + 528 189 callgsubr + 59 97 718 138 hintmask 0011001010000000 + 469 330 rmoveto + hintmask 0011100110000000 + -107 callsubr + -400 -215 131 callgsubr + hintmask 0011001110000000 + 170 callgsubr + hintmask 0011010110000000 + 87 callsubr + hintmask 0101100010000000 + 61 138 callsubr + rlineto + 803 -682 79 callgsubr + hintmask 1001001010000000 + -94 callsubr + hintmask 0101100010000000 + 44 callsubr + + + 527 189 callgsubr + -12 97 788 138 hintmask 0011001010000000 + 468 330 rmoveto + hintmask 0011100110000000 + -107 callsubr + -329 -215 rmoveto + hintmask 0011010110000000 + -60 callgsubr + hintmask 0011100110000000 + 516 callsubr + 61 138 callsubr + rlineto + hintmask 0101001010000000 + 803 -682 79 callgsubr + hintmask 1001001010000000 + -94 callsubr + hintmask 0101001010000000 + 44 callsubr + + + 395 25 callgsubr + -98 -21 33 -21 155 115 221 59 -10 112 -84 340 callsubr + 97 96 547 138 hintmask 0011100000101000 + 336 330 rmoveto + hintmask 0011010000001000 + -101 callsubr + -244 133 rmoveto + hintmask 0011100000111000 + -6 callgsubr + 33 -450 419 callsubr + 40 155 rlineto + 199 hlineto + 40 -155 rlineto + 156 hlineto + hintmask 0011010000001000 + -204 -11 callgsubr + hintmask 0011100100001000 + -141 -84 rmoveto + hintmask 0011100001001000 + 138 callgsubr + hintmask 0011101000101000 + 208 callsubr + hintmask 0011100010001000 + -54 callsubr + hintmask 0011100100001000 + 273 callgsubr + hintmask 0101100000101000 + 721 -580 79 callgsubr + hintmask 1001100000101000 + -94 callsubr + hintmask 0101100000101000 + 44 callsubr + + + 395 25 callgsubr + -98 -21 33 -21 155 115 221 59 -10 112 -84 340 callsubr + 29 96 615 138 hintmask 0011100000101000 + 336 330 rmoveto + hintmask 0011010000001000 + -101 callsubr + hintmask 0011100000111000 + -174 133 -34 callsubr + -46 -403 419 callsubr + 40 155 rlineto + 199 hlineto + 40 -155 rlineto + 156 hlineto + hintmask 0011010000001000 + -204 -11 callgsubr + hintmask 0011100100001000 + -141 -84 rmoveto + hintmask 0011100001001000 + 138 callgsubr + hintmask 0011101000101000 + 208 callsubr + hintmask 0011100010001000 + -54 callsubr + hintmask 0011100100001000 + 273 callgsubr + hintmask 0101100000101000 + 721 -580 79 callgsubr + hintmask 1001100000101000 + -94 callsubr + hintmask 0101100000101000 + 44 callsubr + + + 83 callsubr + 237 90 263 callgsubr + 84 107 -39 48 callsubr + 71 794 rmoveto + hintmask 0110110100100000 + -76 callgsubr + + + 83 callsubr + 227 248 callgsubr + -3 107 48 48 callsubr + hintmask 0110110000110000 + 157 784 -64 callgsubr + + + 105 callgsubr + -30 97 85 48 callsubr + -33 791 rmoveto + hintmask 0110110000110000 + -75 callgsubr + + + 105 callgsubr + -101 97 156 48 callsubr + hintmask 0110110000110000 + 40 791 -80 callgsubr + + + 105 callgsubr + -30 97 85 48 callsubr + -33 791 rmoveto + hintmask 0110110000110000 + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 105 callgsubr + -91 97 146 48 callsubr + hintmask 0110110000110000 + 50 791 -66 callgsubr + + + 83 callsubr + 175 59 16 80 -38 80 263 callgsubr + -62 75 67 96 -24 138 -115 75 hintmask 0110110101000010 + -15 callgsubr + hintmask 0111010110000010 + -43 callsubr + hintmask 0110110110000010 + -10 86 rlineto + hintmask 0110110101000010 + -53 callgsubr + hintmask 0111010101000010 + -53 callsubr + hintmask 0110110101000010 + 6 callgsubr + hintmask 0110110100010010 + 470 callsubr + hintmask 0110110100100010 + 32 callgsubr + hintmask 1010110100100010 + -77 callsubr + hintmask 0110110100100010 + 86 callsubr + hintmask 0110110100010010 + -106 -34 hlineto + -77 29 -50 82 vhcurveto + hintmask 0110111001000001 + 172 408 callsubr + hintmask 0110110100001010 + -64 callsubr + hintmask 0110111001000001 + 180 callgsubr + hintmask 0110110101000100 + -35 callgsubr + + + 83 callsubr + 175 59 16 80 -38 80 263 callgsubr + -62 75 -1 96 44 138 -115 75 hintmask 0110110101000010 + -15 callgsubr + hintmask 0111010110000010 + -43 callsubr + hintmask 0110110110000010 + -10 86 rlineto + hintmask 0110110101000010 + -53 callgsubr + hintmask 0111010101000010 + -53 callsubr + hintmask 0110110101000010 + 6 callgsubr + hintmask 0110110100010010 + 470 callsubr + hintmask 0110110100100010 + 32 callgsubr + hintmask 1010110100100010 + -77 callsubr + hintmask 0110110100100010 + 86 callsubr + hintmask 0110110100010010 + -106 -34 hlineto + -77 29 -50 82 vhcurveto + hintmask 0110110101000110 + 149 779 -47 callsubr + hintmask 0110111001000001 + 118 callsubr + hintmask 0110110100001010 + -64 callsubr + hintmask 0110111001000001 + 233 callsubr + + + 553 520 callgsubr + 182 74 -5 -20 hstemhm + 70 106 64 291 callgsubr + hintmask 0011011111000000 + 240 -35 callsubr + -203 281 callgsubr + hintmask 0101101111000000 + -4 callsubr + 1016 -500 79 callgsubr + hintmask 1001011111000000 + -94 callsubr + hintmask 0101101111000000 + 44 callsubr + + + 553 520 callgsubr + 182 69 -69 74 hstemhm + -12 105 147 291 callgsubr + hintmask 0011010111000000 + 240 -31 callgsubr + hlineto + hintmask 0011101111000000 + 36 callgsubr + -113 -222 rmoveto + hintmask 0011011111000000 + -8 callgsubr + hintmask 0011101111000000 + 265 callgsubr + hintmask 0101010111000000 + 915 -442 79 callgsubr + hintmask 1001010111000000 + -94 callsubr + hintmask 0101010111000000 + 44 callsubr + + + 716 393 callgsubr + 59 97 247 472 callgsubr + 403 -31 callgsubr + hlineto + hintmask 0011010111100000 + 36 callgsubr + 395 callgsubr + hintmask 0011001111100000 + 170 callgsubr + hintmask 0101100111100000 + 21 callsubr + 1020 -664 79 callgsubr + hintmask 1001001011100000 + -94 callsubr + hintmask 0101100111100000 + 44 callsubr + + + 715 393 callgsubr + -12 97 317 472 callgsubr + 402 -31 callgsubr + hlineto + hintmask 0011010111100000 + 36 callgsubr + -295 -215 rmoveto + hintmask 0011100111100000 + -60 callgsubr + hintmask 0011010111100000 + 156 callsubr + 137 3 -27 callgsubr + hintmask 0101001011100000 + 1020 -664 79 callgsubr + hintmask 1001001011100000 + -94 callsubr + hintmask 0101001011100000 + 44 callsubr + + + 706 393 callgsubr + 59 97 237 472 callgsubr + 393 -31 callgsubr + hlineto + hintmask 0011010111100000 + 36 callgsubr + 399 callgsubr + hintmask 0011001111100000 + 170 callgsubr + hintmask 0011100111100000 + 87 callsubr + hintmask 0101010011100000 + 61 138 callsubr + rlineto + 980 -682 79 callgsubr + hintmask 1001001011100000 + -94 callsubr + hintmask 0101010011100000 + 44 callsubr + + + 705 393 callgsubr + -12 97 307 472 callgsubr + 392 -31 callgsubr + hlineto + hintmask 0011010111100000 + 36 callgsubr + -285 -215 rmoveto + hintmask 0011100111100000 + -60 callgsubr + hintmask 0011010111100000 + 516 callsubr + 61 138 callsubr + rlineto + hintmask 0101001011100000 + 980 -682 79 callgsubr + hintmask 1001001011100000 + -94 callsubr + hintmask 0101001011100000 + 44 callsubr + + + 612 -12 119 -98 -21 33 190 callsubr + 97 96 107 291 callgsubr + hintmask 0011000000101110 + 300 -31 callgsubr + hlineto + hintmask 0011000010001110 + 36 callgsubr + hintmask 0011001000001110 + -137 -84 rmoveto + hintmask 0011000001001110 + 138 callgsubr + hintmask 0011010000101110 + 208 callsubr + hintmask 0011000100001110 + -54 callsubr + hintmask 0011001000001110 + 273 callgsubr + -87 -165 rmoveto + hintmask 0101100000111110 + -6 callgsubr + 1035 -462 79 callgsubr + hintmask 1001000000101110 + -94 callsubr + hintmask 0101100000111110 + 44 callsubr + + + 612 -12 119 -98 -21 33 190 callsubr + 29 96 175 291 callgsubr + hintmask 0011000000101110 + 300 -31 callgsubr + hlineto + hintmask 0011000010001110 + 36 callgsubr + hintmask 0011001000001110 + -137 -84 rmoveto + hintmask 0011000001001110 + 138 callgsubr + hintmask 0011010000101110 + 208 callsubr + hintmask 0011000100001110 + -54 callsubr + hintmask 0011001000001110 + 273 callgsubr + hintmask 0101100000111110 + -17 -165 -34 callsubr + 956 -415 79 callgsubr + hintmask 1001000000101110 + -94 callsubr + hintmask 0101100000111110 + 44 callsubr + + + 175 callsubr + 225 90 hstemhm + 40 139 127 494 callgsubr + -55 107 89 147 hintmask 0111111001000000 + -107 callgsubr + hintmask 0111110101000000 + 191 -204 rmoveto + 32 callgsubr + hintmask 1011110101000000 + -77 callsubr + hintmask 0111110101000000 + -56 callsubr + -95 794 rmoveto + hintmask 0111110011000000 + -76 callgsubr + + + 175 callsubr + 215 82 hstemhm + 40 139 97 107 -77 280 callsubr + hintmask 0111110101000000 + -107 callgsubr + hintmask 0111110011000000 + 191 -204 rmoveto + 32 callgsubr + hintmask 1011110011000000 + -77 callsubr + hintmask 0111110011000000 + -56 callsubr + hintmask 0111111001000000 + -9 784 -64 callgsubr + + + 367 callgsubr + 70 97 -40 280 callsubr + hintmask 0111110101000000 + -107 callgsubr + hintmask 0111110011000000 + 191 -204 rmoveto + 32 callgsubr + hintmask 1011110011000000 + -77 callsubr + hintmask 0111110011000000 + -56 callsubr + -199 791 rmoveto + hintmask 0111111001000000 + -75 callgsubr + + + 367 callgsubr + -1 97 31 280 callsubr + hintmask 0111110101000000 + -107 callgsubr + hintmask 0111110011000000 + 191 -204 rmoveto + 32 callgsubr + hintmask 1011110011000000 + -77 callsubr + hintmask 0111110011000000 + -56 callsubr + hintmask 0111101101000000 + -126 791 -80 callgsubr + + + 367 callgsubr + 70 97 -40 280 callsubr + hintmask 0111110101000000 + -107 callgsubr + hintmask 0111110011000000 + 191 -204 rmoveto + 32 callgsubr + hintmask 1011110011000000 + -77 callsubr + hintmask 0111110011000000 + -56 callsubr + -199 791 rmoveto + hintmask 0111111001000000 + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + 367 callgsubr + 9 97 21 280 callsubr + hintmask 0111110101000000 + -107 callgsubr + hintmask 0111110011000000 + 191 -204 rmoveto + 32 callgsubr + hintmask 1011110011000000 + -77 callsubr + hintmask 0111110011000000 + -56 callsubr + hintmask 0111111101000000 + -116 791 -66 callgsubr + + + 175 callsubr + 163 169 callgsubr + 40 139 38 75 14 494 callgsubr + -59 96 -1 569 callsubr + hintmask 0111101101000100 + -107 callgsubr + hintmask 0111101100100100 + 191 -204 rmoveto + 32 callgsubr + hintmask 1011101100100100 + -77 callsubr + hintmask 0111101100100100 + -56 callsubr + hintmask 0111110101001100 + 6 408 callsubr + hintmask 0111101111000100 + -64 callsubr + hintmask 0111110101001100 + 180 callgsubr + hintmask 0111101100010100 + -35 callgsubr + + + 175 callsubr + 163 169 callgsubr + 40 139 38 75 -1 96 -81 494 callgsubr + 36 569 callsubr + hintmask 0111101100100100 + -107 callgsubr + hintmask 0111101100010100 + 191 -204 rmoveto + 32 callgsubr + hintmask 1011101100010100 + -77 callsubr + hintmask 0111101100010100 + -56 callsubr + hintmask 0111101101000100 + -17 779 -47 callsubr + hintmask 0111110100101100 + 118 callsubr + hintmask 0111101110100100 + -64 callsubr + hintmask 0111110100101100 + 233 callsubr + + + 569 280 callgsubr + -81 74 hstemhm + 70 106 26 258 callsubr + hintmask 0101001000110000 + 186 hmoveto + hintmask 0101000100110000 + 359 callgsubr + hintmask 0101001000110000 + -74 callgsubr + hintmask 0101001001010000 + 162 callgsubr + hintmask 0101001010010000 + -110 4 hlineto + hintmask 0101001000110000 + -93 callgsubr + -149 311 rmoveto + hintmask 0010111000110000 + 298 callsubr + -4 callsubr + 1033 -500 79 callgsubr + hintmask 1001001000110000 + -94 callsubr + hintmask 0010111000110000 + 44 callsubr + + + 551 280 callgsubr + -81 74 hstemhm + -12 105 91 384 callsubr + hintmask 0101011000110000 + 168 hmoveto + hintmask 0101010100110000 + 359 callgsubr + hintmask 0101011000110000 + -74 callgsubr + hintmask 0101011001010000 + 162 callgsubr + hintmask 0101011010010000 + -110 4 hlineto + hintmask 0101011000110000 + -93 callgsubr + -41 311 rmoveto + hintmask 0100111000110000 + -8 callgsubr + hintmask 0101011000110000 + 265 callgsubr + hintmask 0011011000110000 + 913 -442 79 callgsubr + hintmask 1001011000110000 + -94 callsubr + hintmask 0011011000110000 + 44 callsubr + + + 735 446 callgsubr + hstemhm + 59 97 212 384 callsubr + hintmask 0101011000110000 + 352 hmoveto + hintmask 0101010100110000 + 359 callgsubr + hintmask 0101011000110000 + -74 callgsubr + hintmask 0101011001010000 + 162 callgsubr + hintmask 0101011010010000 + -110 4 hlineto + hintmask 0101011000110000 + -93 callgsubr + -315 318 141 callgsubr + hintmask 0010111000110000 + 21 callsubr + 1039 -664 79 callgsubr + hintmask 1001011000110000 + -94 callsubr + hintmask 0010111000110000 + 44 callsubr + + + 733 446 callgsubr + hstemhm + -12 97 282 384 callsubr + hintmask 0101011000110000 + 351 hmoveto + hintmask 0101010100110000 + 359 callgsubr + hintmask 0101011000110000 + -74 callgsubr + hintmask 0101011001010000 + 162 callgsubr + hintmask 0101011010010000 + -110 4 hlineto + hintmask 0101011000110000 + -93 callgsubr + -244 318 rmoveto + hintmask 0100111000110000 + 12 58 rlineto + -18 10 -16 12 24 vvcurveto + 24 19 20 49 5 vhcurveto + hintmask 0101011000110000 + 247 callsubr + 137 3 -27 callgsubr + hintmask 0011011000110000 + 1039 -664 79 callgsubr + hintmask 1001011000110000 + -94 callsubr + hintmask 0011011000110000 + 44 callsubr + + + 725 446 callgsubr + -12 -20 hstemhm + 59 97 202 384 callsubr + hintmask 0101001100011000 + 342 hmoveto + hintmask 0101001010011000 + 359 callgsubr + hintmask 0101001100011000 + -74 callgsubr + hintmask 0101001100101000 + 162 callgsubr + hintmask 0101001101001000 + -110 4 hlineto + hintmask 0101001100011000 + -93 callgsubr + -305 318 141 callgsubr + hintmask 0100101100011000 + 87 callsubr + hintmask 0010011100011000 + 61 138 callsubr + rlineto + 999 -682 79 callgsubr + hintmask 1001001100011000 + -94 callsubr + hintmask 0010011100011000 + 44 callsubr + + + 724 446 callgsubr + -12 -20 hstemhm + -12 97 272 384 callsubr + hintmask 0101001100011000 + 341 hmoveto + hintmask 0101001010011000 + 359 callgsubr + hintmask 0101001100011000 + -74 callgsubr + hintmask 0101001100101000 + 162 callgsubr + hintmask 0101001101001000 + -110 4 hlineto + hintmask 0101001100011000 + -93 callgsubr + -234 318 rmoveto + hintmask 0100101100011000 + 12 58 rlineto + -18 10 -16 12 24 vvcurveto + 24 19 20 49 5 vhcurveto + hintmask 0101001100011000 + 247 callsubr + 78 20 510 callsubr + hintmask 0010011100011000 + 61 138 callsubr + rlineto + 999 -682 79 callgsubr + hintmask 1001001100011000 + -94 callsubr + hintmask 0010011100011000 + 44 callsubr + + + 594 207 callsubr + 503 59 -13 127 -96 68 -68 96 -64 69 -14 9 hstemhm + 97 96 33 258 callsubr + hintmask 0100100000100011 + 210 hmoveto + hintmask 0100100000010011 + 359 callgsubr + hintmask 0100100000100011 + -74 callgsubr + hintmask 0100100000100101 + 162 callgsubr + hintmask 0100100000101001 + -110 4 hlineto + hintmask 0100100000100011 + -93 callgsubr + hintmask 0100001000100011 + -47 449 rmoveto + hintmask 0100000010100011 + 48 27 18 69 9 hvcurveto + hintmask 0100100000100011 + -64 9 rlineto + hintmask 0100010000100011 + 208 callsubr + hintmask 0100000100100011 + -54 callsubr + hintmask 0100001000100011 + 273 callgsubr + -87 -165 rmoveto + hintmask 0011000001100011 + -6 callgsubr + 1016 -462 79 callgsubr + hintmask 1000100000100011 + -94 callsubr + hintmask 0011000001100011 + 44 callsubr + + + 594 207 callsubr + 503 59 -13 127 -96 68 -68 96 -64 69 -14 9 hstemhm + 29 96 101 258 callsubr + hintmask 0100100000100011 + 210 hmoveto + hintmask 0100100000010011 + 359 callgsubr + hintmask 0100100000100011 + -74 callgsubr + hintmask 0100100000100101 + 162 callgsubr + hintmask 0100100000101001 + -110 4 hlineto + hintmask 0100100000100011 + -93 callgsubr + hintmask 0100001000100011 + -47 449 rmoveto + hintmask 0100000010100011 + 48 27 18 69 9 hvcurveto + hintmask 0100100000100011 + -64 9 rlineto + hintmask 0100010000100011 + 208 callsubr + hintmask 0100000100100011 + -54 callsubr + hintmask 0100001000100011 + 273 callgsubr + hintmask 0011000001100011 + -17 -165 -34 callsubr + 937 -415 79 callgsubr + hintmask 1000100000100011 + -94 callsubr + hintmask 0011000001100011 + 44 callsubr + + + 23 callgsubr + 96 92 266 callgsubr + -63 84 155.5 186 callsubr + -115 84 hintmask 0101110010000000 + -40 callgsubr + hintmask 0101110100000000 + -41 callsubr + hintmask 1001110100000000 + -83 callgsubr + hintmask 0110110100000000 + -77 callgsubr + hintmask 0101110010000000 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 0110110100000000 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 0101110010000000 + -59 -3 -43 -48 -44 hhcurveto + hintmask 0101101010000000 + 23 464 -39 callgsubr + + + 23 callgsubr + 116 93 266 callgsubr + -42 296 -77.5 -90 callsubr + hintmask 01011010 + -125 484 -24 callgsubr + + + -76 callsubr + -78 788 -29 callsubr + + + -76 callsubr + endchar + + + -76 callsubr + -58 788 -44 callsubr + + + 23 callgsubr + 97 102 -38 102 266 callgsubr + -84 92 168.5 186 callsubr + -102 92 hintmask 0101011001000000 + -40 callgsubr + hintmask 0101011010000000 + -41 callsubr + hintmask 1001011010000000 + -83 callgsubr + hintmask 0110011010000000 + -77 callgsubr + hintmask 0101011001000000 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 0110011010000000 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 0101011001000000 + -59 -3 -43 -48 -44 hhcurveto + hintmask 0101101001000000 + 89 465 -50 callgsubr + hintmask 0101010101000000 + -74 callsubr + hintmask 0101101001000000 + 136 callgsubr + + + 108 callgsubr + 97 102 -38 102 266 callgsubr + -84 92 55 206 callgsubr + -102 92 hintmask 0101010110101000 + -40 callgsubr + hintmask 0101010110110000 + -41 callsubr + hintmask 0110010110110000 + -83 callgsubr + hintmask 0101100110110000 + -77 callgsubr + hintmask 0101010110101000 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 0101100110110000 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 0101010110101000 + -59 -3 -43 -48 -44 hhcurveto + 91 -324 rmoveto + 32 callgsubr + hintmask 1001010110101000 + -77 callsubr + hintmask 0101010110101000 + -56 callsubr + hintmask 0101011010101000 + -2 789 -50 callgsubr + hintmask 0101010101101000 + -74 callsubr + hintmask 0101011010101000 + 136 callgsubr + + + 68 callgsubr + + + -5 -37 callsubr + 69 94 hstemhm + -6 585 -445 302 hintmask 11111000 + -104 callsubr + hintmask 11110100 + -64 312 callgsubr + + + 372 callsubr + -15 643 vstem + 279 -104 callgsubr + -202 -212 43 callsubr + + + 372 callsubr + -5 633 vstem + 279 -104 callgsubr + -159 -212 rmoveto + 44 callgsubr + + + 289 25 callgsubr + -98 -21 33 -55 callsubr + hstemhm + 634 138 hintmask 00111100 + -104 callsubr + hintmask 01011100 + 580 -664 79 callgsubr + hintmask 10011100 + -94 callsubr + hintmask 01011100 + 44 callsubr + + + -23 703 90 hstem + 268 107 vstem + 235 101 callgsubr + + + -414 583 74 hstem + 70 106 vstem + 37 430 356 callsubr + -4 callsubr + endchar + + + -277 25 callgsubr + hstem + 65 138 vstem + 209 -12 79 callgsubr + -94 callsubr + 44 callsubr + + + -23 703 90 hstem + 268 107 vstem + 235 101 callgsubr + + + -23 573 390 callgsubr + 88 92 196 92 hintmask 10110000 + 344 39 callgsubr + + + -23 571 123 21 80 -36 80 hstemhm + 107 124 -113 64 143 124 -75 64 hintmask 11010010 + 345 97 callgsubr + + + 7 callgsubr + 104 788 -29 callsubr + + + 7 callgsubr + endchar + + + 7 callgsubr + 124 788 -44 callsubr + + + 250 callsubr + 97 102 -38 102 152 callgsubr + -96 92 156 138 -98 92 589 callgsubr + -15 callgsubr + hintmask 1100110010000000 + -43 callsubr + hintmask 1010110010000000 + -10 86 rlineto + 589 callgsubr + -53 callgsubr + hintmask 1100101010000000 + -53 callsubr + 589 callgsubr + 6 callgsubr + hintmask 1011001001000000 + 19 750 -50 callgsubr + hintmask 1010100110000000 + -74 callsubr + hintmask 1011001001000000 + 136 callgsubr + + + 83 callsubr + 97 102 -38 102 263 callgsubr + -96 92 156 138 -98 92 hintmask 0110101010001000 + -15 callgsubr + hintmask 0111001100001000 + -43 callsubr + hintmask 0110101100001000 + -10 86 rlineto + hintmask 0110101010001000 + -53 callgsubr + hintmask 0111001010001000 + -53 callsubr + hintmask 0110101010001000 + 6 callgsubr + hintmask 0110101000101000 + 470 callsubr + hintmask 0110101001001000 + 32 callgsubr + hintmask 1010101001001000 + -77 callsubr + hintmask 0110101001001000 + 86 callsubr + hintmask 0110101000101000 + -106 -34 hlineto + -77 29 -50 82 vhcurveto + hintmask 0110110010000100 + 180 789 -50 callgsubr + hintmask 0110101000011000 + -74 callsubr + hintmask 0110110010000100 + 136 callgsubr + + + 227 callgsubr + -158 -212 43 callsubr + + + 164 callsubr + + + 214 21 186 callgsubr + 251 -20 hstem + 196 147 225 148 vstem + 196 -35 callsubr + -158 -212 43 callsubr + + + 214 21 186 callgsubr + 251 -20 hstem + 196 147 225 148 vstem + 196 -35 callsubr + -115 -212 rmoveto + 44 callgsubr + + + 390 520 callgsubr + 251 -20 hstemhm + 77 291 callgsubr + hintmask 00111111 + 40 callsubr + hintmask 01011111 + 802 -664 79 callgsubr + hintmask 10011111 + -94 callsubr + hintmask 01011111 + 44 callsubr + + + -23 553 callgsubr + 154 97 vstem + 131 575 rmoveto + -75 callgsubr + + + -252 590 557 callgsubr + 59 97 hintmask 01100000 + 37 437 141 callgsubr + hintmask 10100000 + 122 callsubr + + + -23 553 callgsubr + 154 97 vstem + 131 575 rmoveto + -90 callgsubr + 250 -76 rmoveto + 70 213 -118 23 220 callsubr + + + -252 590 217 callgsubr + 59 97 hintmask 00110000 + 37 437 141 callgsubr + hintmask 10010000 + 87 callsubr + hintmask 01010000 + 61 138 callsubr + rlineto + endchar + + + -23 651 169 callgsubr + 122 75 67 96 -1 75 hintmask 11010100 + 336 726 -45 callgsubr + hintmask 10111000 + -64 callsubr + hintmask 11010100 + 180 callgsubr + hintmask 10111000 + -35 callgsubr + + + -355 491 59 18 68 -36 69 -14 550 callsubr + 97 96 hintmask 11001100 + 163 568 rmoveto + hintmask 10010100 + 138 callgsubr + hintmask 11001100 + 208 callsubr + hintmask 10100100 + -54 callsubr + hintmask 11001100 + 273 callgsubr + -87 -165 rmoveto + hintmask 10001100 + -6 callgsubr + endchar + + + 202 callgsubr + 96 92 hstemhm + -31 84 12 138 20 84 hintmask 01110100 + 28 callsubr + hintmask 10110100 + -82 callsubr + hintmask 01110100 + 169 callsubr + hintmask 01111110 + -68 584 -39 callgsubr + + + 202 callgsubr + 116 93 hstemhm + -10 296 -221 138 hintmask 01110100 + 28 callsubr + hintmask 10110100 + -82 callsubr + hintmask 01110100 + 169 callsubr + hintmask 01111000 + -216 604 -24 callgsubr + + + -15 callsubr + 119 -17 rmoveto + 65 14 -35 220 -103 -21 rlineto + 220 -196 rmoveto + 31 25 22 35 34 -25 22 -31 -32 -25 -22 -34 -35 25 -22 32 hvcurveto + endchar + + + -15 callsubr + 147 -17 rmoveto + 74 213 -103 21 -36 -220 rlineto + 184 3 rmoveto + 31 25 22 35 34 -25 22 -31 -32 -25 -22 -34 -35 25 -22 32 hvcurveto + endchar + + + 202 callgsubr + 97 390 callgsubr + -52 92 25 138 33 92 hintmask 01101010 + 28 callsubr + hintmask 10101010 + -82 callsubr + hintmask 01101010 + 169 callsubr + hintmask 01110011 + -2 585 -50 callgsubr + hintmask 01101110 + -74 callsubr + hintmask 01110011 + 136 callgsubr + + + 202 callgsubr + 95 123 21 80 -36 80 hstemhm + -33 124 -113 64 23 138 -18 124 -75 64 hintmask 0111010010000000 + 28 callsubr + hintmask 1011010010000000 + -82 callsubr + hintmask 0111010010000000 + 169 callsubr + hintmask 0111100010100000 + -1 727 237 callgsubr + hintmask 0111010110000000 + 193 callsubr + hintmask 0111100010100000 + 36 25 -44 65 hhcurveto + hintmask 0111011001000000 + -176 -144 -10 callsubr + + + 147 callgsubr + 65 85 127 callgsubr + 75 157 callsubr + + + 147 callgsubr + 89 94 127 callgsubr + -76 312 callgsubr + + + 346 callsubr + -158 -212 43 callsubr + + + 244 callgsubr + + + -23 553 callgsubr + 83 97 vstem + 204 575 -80 callgsubr + + + -253 590 557 callgsubr + -12 97 hintmask 01100000 + 107 437 rmoveto + hintmask 10100000 + -60 callgsubr + hintmask 01100000 + 105 callsubr + + + -23 553 callgsubr + 93 97 vstem + 214 575 -66 callgsubr + + + -261 590 217 callgsubr + -12 97 hintmask 00110000 + 107 437 rmoveto + hintmask 10010000 + -60 callgsubr + hintmask 00110000 + 516 callsubr + rlineto + hintmask 01010000 + 61 138 callsubr + rlineto + endchar + + + -23 651 169 callgsubr + 122 75 -1 96 67 75 hintmask 10101100 + 313 563 -47 callsubr + hintmask 11001100 + 118 callsubr + hintmask 10110100 + -64 callsubr + hintmask 11001100 + 233 callsubr + + + -355 491 59 18 68 -36 69 -14 550 callsubr + 29 96 hintmask 11001100 + 163 568 rmoveto + hintmask 10010100 + 138 callgsubr + hintmask 11001100 + 208 callsubr + hintmask 10100100 + -54 callsubr + hintmask 11001100 + 273 callgsubr + hintmask 10001100 + -17 -165 -34 callsubr + endchar + + + 84 callsubr + 84 92 494 callsubr + -94 84 164 147 -141 84 hintmask 10111010 + -44 callgsubr + hintmask 11011010 + -92 callsubr + hintmask 10111010 + 131 callsubr + hintmask 10110101 + 3 584 -39 callgsubr + + + 84 callsubr + 104 93 494 callsubr + -73 296 -69 147 hintmask 10111010 + -44 callgsubr + hintmask 11011010 + -92 callsubr + hintmask 10111010 + 131 callsubr + hintmask 10110100 + -145 604 -24 callgsubr + + + 54 callgsubr + 119 -17 rmoveto + 65 14 -35 220 -103 -21 rlineto + 220 -196 rmoveto + 31 25 22 35 34 -25 22 -31 -32 -25 -22 -34 -35 25 -22 32 hvcurveto + endchar + + + 19 callsubr + + + -9 -12 45 callgsubr + 205 90 hstemhm + 61 138 90 107 -17 150 hintmask 11110100 + 53 callsubr + -33 470 277 callsubr + + + -9 -12 45 callgsubr + 195 82 hstemhm + 61 138 3 107 70 150 hintmask 11110100 + 53 callsubr + hintmask 11101100 + 53 460 -64 callgsubr + + + 84 callsubr + 85 102 -38 102 494 callsubr + -115 92 177 147 -128 92 hintmask 1010110100000000 + -44 callgsubr + hintmask 1100110100000000 + -92 callsubr + hintmask 1010110100000000 + 131 callsubr + hintmask 1011010010000000 + 69 585 -50 callgsubr + hintmask 1010101100000000 + -74 callsubr + hintmask 1011010010000000 + 136 callgsubr + + + 84 callsubr + 83 123 21 80 -36 80 494 callsubr + -96 124 -113 64 143 124 -92 147 -130 64 hintmask 1011011000100000 + -44 callgsubr + hintmask 1101011000100000 + -92 callsubr + hintmask 1011011000100000 + 131 callsubr + hintmask 1011101000010000 + 70 727 237 callgsubr + hintmask 1011010010100000 + 193 callsubr + hintmask 1011101000010000 + 36 25 -44 65 hhcurveto + hintmask 1011010101000000 + -176 -144 -10 callsubr + + + -53 180 callsubr + 65 85 hstem + 189 147 vstem + -69 callsubr + 73 465 -48 callsubr + + + -53 180 callsubr + 89 94 hstemhm + 111 302 -224 200 callgsubr + -78 489 68 callsubr + + + 126 502 callsubr + 368 147 vstem + 368 -84 callgsubr + -330 208 43 callsubr + + + 126 502 callsubr + 368 147 vstem + 368 -84 callgsubr + -287 208 rmoveto + 44 callgsubr + + + 181 21 -21 221 117 197 117 -69 427 callgsubr + 192 144 hintmask 11100111 + 240 118 callgsubr + -332 92 rmoveto + hintmask 11010111 + 11 58 rlineto + -23 8 -22 12 30 vvcurveto + 24 23 17 57 4 vhcurveto + hintmask 11001111 + -17 74 rlineto + -124 -3 -44 -41 -59 vvcurveto + hintmask 11100111 + 265 callgsubr + endchar + + + -23 533 callsubr + 89 342 callsubr + vstem + 145 584 188 callgsubr + + + -23 533 callsubr + 89 342 callsubr + vstem + 145 182 callgsubr + + + -23 555 238 hstem + 156 176 vstem + 234 465 callsubr + + + -459 440 230 hstem + -22 153 vstem + 38 440 43 callsubr + + + 175 callsubr + hstemhm + 40 139 127 280 callsubr + hintmask 01111101 + -107 callgsubr + hintmask 01111011 + 191 -204 rmoveto + 32 callgsubr + hintmask 10111011 + -77 callsubr + hintmask 01111011 + -56 callsubr + -62 788 -29 callsubr + + + 175 callsubr + hstemhm + 40 139 127 280 callsubr + hintmask 01111101 + -107 callgsubr + hintmask 01111011 + 191 -204 rmoveto + 32 callgsubr + hintmask 10111011 + -77 callsubr + hintmask 01111011 + 439 callsubr + + + 175 callsubr + hstemhm + 40 139 127 280 callsubr + hintmask 01111101 + -107 callgsubr + hintmask 01111011 + 191 -204 rmoveto + 32 callgsubr + hintmask 10111011 + -77 callsubr + hintmask 01111011 + -56 callsubr + -42 788 -44 callsubr + + + 232 callgsubr + 85 390 callgsubr + 40 139 4 92 31 131 34 92 -4 147 hintmask 1101101010000000 + -107 callgsubr + hintmask 1110101100000000 + 205 585 -50 callgsubr + hintmask 1101011010000000 + -74 callsubr + hintmask 1110101100000000 + 136 callgsubr + + + 175 callsubr + 85 390 callgsubr + 40 139 4 92 31 494 callgsubr + 53 92 -4 147 hintmask 0111011010010000 + -107 callgsubr + hintmask 0111011001010000 + 191 -204 rmoveto + 32 callgsubr + hintmask 1011011001010000 + -77 callsubr + hintmask 0111011001010000 + -56 callsubr + hintmask 0111101010100000 + 14 789 -50 callgsubr + hintmask 0111010110010000 + -74 callsubr + hintmask 0111101010100000 + 136 callgsubr + + + 212 120 callsubr + hstem + 152 151 290 151 vstem + 448 -12 -106 callgsubr + -410 325 43 callsubr + + + 199 120 callsubr + -12 -20 hstemhm + 138 151 290 151 hintmask 11011000 + 434 -12 -106 callgsubr + -353 325 rmoveto + hintmask 10111000 + 44 callgsubr + + + 233 0 119 418 127 hstemhm + 161 -45 callsubr + hintmask 11100010 + 145 hmoveto + hintmask 11010010 + 359 callgsubr + hintmask 11100010 + -74 callgsubr + hintmask 11100100 + 162 callgsubr + hintmask 11101000 + -110 4 hlineto + hintmask 11100010 + -93 callgsubr + -107 321 43 callsubr + + + 225 0 119 418 127 -12 -20 hstemhm + 152 -45 callsubr + hintmask 11010001 + 136 hmoveto + hintmask 11001001 + 359 callgsubr + hintmask 11010001 + -74 callgsubr + hintmask 11010010 + 162 callgsubr + hintmask 11010100 + -110 4 hlineto + hintmask 11010001 + -93 callgsubr + -63 321 rmoveto + hintmask 10110001 + 44 callgsubr + + + 427 280 callgsubr + hstemhm + 60 258 callsubr + hintmask 0101100011000000 + 44 hmoveto + hintmask 0101010011000000 + 359 callgsubr + hintmask 0101100011000000 + -74 callgsubr + hintmask 0101100101000000 + 162 callgsubr + hintmask 0101101001000000 + -110 4 hlineto + hintmask 0101100011000000 + -93 callgsubr + hintmask 0011100011000000 + 873 -131 79 callgsubr + hintmask 1001100011000000 + -94 callsubr + hintmask 0011100011000000 + 44 callsubr + + + -23 555 238 hstem + 224 177 vstem + 322 555 115 callsubr + + + -459 652 -20 hstem + -12 153 vstem + 81 440 rmoveto + 44 callgsubr + + + -23 703 82 hstem + 181 107 vstem + 321 568 -64 callgsubr + + + -417 583 74 hstem + -12 105 vstem + 127 430 rmoveto + -8 callgsubr + 265 callgsubr + endchar + + + -50 endchar + + + -478 endchar + + + -558 endchar + + + endchar + + + 363 callsubr + + + -124 528 callgsubr + 90 96 vstem + 86 -250 rmoveto + 96 1000 -96 hlineto + 186 -1000 rmoveto + 96 1000 -96 hlineto + endchar + + + -458 endchar + + + 287 callsubr + + + -41 388 297.5 hstem + 82 403 vstem + 82 388 401 callsubr + 126 -147 1 rlineto + 218 -298 401 callsubr + 126 -147 1 rlineto + endchar + + + -278 388 297.5 hstem + 53 165 vstem + 122 388 rmoveto + 96 hlineto + -19 298 -146 -1 22 -126 rlineto + endchar + + + 37 -12 185 hstemhm + 81 198 callsubr + 126.5 198 callsubr + hintmask 10010100 + 122 231 400 callsubr + hintmask 10100100 + 120 callgsubr + hintmask 11000010 + 178 callgsubr + 226 243 400 callsubr + hintmask 10100100 + 120 callgsubr + hintmask 10101000 + 178 callgsubr + endchar + + + -98 -12 185 58 278 63 110 hstemhm + 130 177 -158.5 112.5 44 133 hintmask 11101100 + 172 231 rmoveto + 97 hlineto + 97 169 26 162 vvcurveto + 103 -92 63 -123 -76 -76 -29 -70 -55 vhcurveto + 81 -74 rlineto + 47 37 32 16 47 hhcurveto + 52 40 -31 -52 -47 -21 -29 -29 -44 hvcurveto + 6 73 rlineto + 67 -118 vlineto + 11 -108 rlineto + hintmask 11110000 + 64 -413 159 callsubr + endchar + + + -78 565 83 hstem + 12 476 vstem + 12 565 579 callsubr + + + 9 -231 94 hstem + 0 587 vstem + 293 -231 rmoveto + 125 105 46 78 64 hvcurveto + -53 67 rlineto + -63 -60 -90 -34 -91 hhcurveto + -90 -90 34 63 -60 hvcurveto + -53 -67 rlineto + -78 64 105 -46 124 hhcurveto + endchar + + + 295 -12 185 390 544 callgsubr + 119 177 -27 141 202 callsubr + hintmask 11100100 + 64 -243 159 callsubr + 346 243 50 callsubr + hintmask 11011000 + 64 -243 159 callsubr + endchar + + + 173 -12 185 390 544 callgsubr + 70 198 callsubr + 202 callsubr + hintmask 11100010 + 64 -243 159 callsubr + 314 243 400 callsubr + hintmask 11010100 + 120 callgsubr + hintmask 11011000 + 178 callgsubr + endchar + + + 173 -12 185 390 119 hstemhm + 81 198 callsubr + 188.5 177 -27 141 hintmask 11001010 + 122 231 400 callsubr + hintmask 11010010 + 120 callgsubr + hintmask 11100010 + 178 callgsubr + 271 243 50 callsubr + hintmask 11010100 + 64 -243 159 callsubr + endchar + + + -50 0 109 127 58 48 58 126 109 hstemhm + 73 85.5 -85.5 100 -100 106 170 106 -100 100 -85.5 85.5 hintmask 1111100100000000 + 152 526 rmoveto + 4 hlineto + 36 -126 rlineto + -27 hlineto + hintmask 1111001100000000 + -92 -400 rmoveto + 106 236 60 hlineto + 80 -236 rlineto + 136 236 69 58 -69 48 69 58 -69 235 -106 -235 -60 hlineto + -80 235 rlineto + -136 -235 hlineto + -70 -6 rlineto + -52 70 -48 vlineto + -70 -6 rlineto + -52 70 vlineto + hintmask 1111010001000000 + 299 -127 rmoveto + -36 127 rlineto + 27 hlineto + 13 -127 rlineto + -201 185 rmoveto + -4 48 rlineto + 37 hlineto + 14 -48 rlineto + hintmask 1111001010000000 + 98 hmoveto + -14 48 rlineto + 47 hlineto + 4 -48 rlineto + endchar + + + -50 0 103 189 55 -55 58 142 103 40 -20 hstemhm + -19 164 -164 180 218 167 -151 151 hintmask 1011101100000000 + 262 492 rmoveto + 4 hlineto + 9 -142 rlineto + -22 hlineto + -171 -350 rmoveto + 143 hlineto + 25 292 rlineto + 29 hlineto + 27 -292 rlineto + 148 hlineto + 31 292 rlineto + 61 58 -55 hlineto + 31 285 rlineto + hintmask 1011110010000000 + -119 hlineto + -16 -285 rlineto + -37 hlineto + -26 245 rlineto + -111 hlineto + -24 -245 rlineto + -36 hlineto + -16 285 rlineto + hintmask 1101101100000000 + -130 hlineto + 34 -286 -60 -4 rlineto + hintmask 1011101100000000 + -53 67 vlineto + 116 -189 rmoveto + -6 147 -2 42 rlineto + 27 hlineto + -4 -42 -11 -147 rlineto + 204 hmoveto + -12 147 -4 42 rlineto + 28 hlineto + -2 -42 -6 -147 rlineto + endchar + + + -50 407 callgsubr + 107 396 callsubr + 200 hlineto + 111 60 rlineto + 81 vlineto + -111 -60 rlineto + 54 vlineto + 111 61 rlineto + 81 vlineto + -111 -60 rlineto + 111 158 107 -463 -107 158 -181 vlineto + -111 -61 rlineto + -81 vlineto + 111 60 rlineto + -54 vlineto + -111 -60 rlineto + -82 vlineto + 111 61 rlineto + endchar + + + 591 callgsubr + 212 93 41 522 callgsubr + 45 522 callgsubr + 36 92 hstemhm + 65 139 124 136 -136 191 hintmask 1101011101000000 + 587 callsubr + 98 87 43 91 30 hvcurveto + 67 58 hlineto + hintmask 1101011110000000 + -56 hlineto + 1 6 0 6 6 vvcurveto + 9 0 9 -1 9 vhcurveto + hintmask 1101011101000000 + 56 58 -67 hlineto + 93 -31 -84 35 -100 hhcurveto + -172 hlineto + hintmask 1101101101000000 + -129 569 callgsubr + hintmask 1110011101000000 + -52 62 -46 569 callgsubr + hintmask 1101011101000000 + -52 62 vlineto + 263 76 rmoveto + -6 0 -6 -1 -6 vhcurveto + -123 45 123 hlineto + 1 -8 0 -9 -10 vvcurveto + -124 121 rmoveto + 25 hlineto + 36 26 -11 -25 17 hvcurveto + -104 hlineto + -202 vmoveto + 41 105 vlineto + -26 -16 -27 -15 -37 hhcurveto + endchar + + + -50 -110 217 -94 -21 250 120 171 212 -104 -20 23 -20 hstemhm + 38 147 73 98 8 131 hintmask 1010011100000000 + 258 -110 rmoveto + 98 hlineto + hintmask 0110011100000000 + 102 vlineto + hintmask 0110011110000000 + 52 10 47 24 40 36 rrcurveto + 300 -200 -120 69 vlineto + hintmask 1011001110000000 + -122 vlineto + -8 -11 -18 -5 -18 hhcurveto + -84 -48 74 138 134 45 80 84 42 28 -18 -29 30 hvcurveto + hintmask 0110011110000000 + 81 80 rlineto + hintmask 0110011100000000 + -39 41 -48 28 -52 9 rrcurveto + hintmask 0111001100000000 + 101 -98 vlineto + hintmask 0110101100000000 + -104 vlineto + -132 -27 -88 -117 -183 vvcurveto + -189 91 -111 129 -22 vhcurveto + endchar + + + -50 -12 114 113 75 50 74 119 114 hstem + 76 141 85 141 vstem + 291 -12 rmoveto + 59 82 27 51 54 hvcurveto + -61 95 rlineto + -39 -47 -44 -20 -43 hhcurveto + -51 -23 27 38 18 7 16 11 14 hvcurveto + 266 75 -173 hlineto + 21 15 21 16 19 19 rrcurveto + 112 74 -66 hlineto + 5 16 3 19 20 vvcurveto + 114 -76 64 -121 -81 -55 -35 -50 -45 vhcurveto + 70 -79 rlineto + 33 34 31 17 38 hhcurveto + 41 23 -23 -37 -23 -13 -19 -20 -17 hvcurveto + -174 566 callgsubr + -68 144 vlineto + -18 -14 -18 -17 -15 -19 rrcurveto + -19 566 callgsubr + -69 59 vlineto + -3 -13 -1 -13 -15 vvcurveto + -113 74 -73 141 vhcurveto + endchar + + + -50 11 -21 23 -21 650 -20 23 -20 hstemhm + 54 148 85 81 hintmask 01011100 + 287 -110 rmoveto + 81 102 hlineto + 57 10 50 30 41 48 -82 76 rcurveline + -20 -25 -21 -16 -25 -8 rrcurveto + 422 vlineto + 22 -6 19 -14 17 -19 81 79 rcurveline + -37 43 -50 27 -52 6 rrcurveto + hintmask 10101100 + 91 -81 -94 vlineto + -139 -25 -94 -117 -186 vvcurveto + -195 97 -111 136 -18 vhcurveto + -85 329 rmoveto + 105 29 72 56 26 vhcurveto + -410 vlineto + -55 25 -30 72 110 vvcurveto + endchar + + + 591 callgsubr + 436 75 50 74 396 callsubr + 436 158 75 -388 hlineto + -75 -6 rlineto + -69 158 vlineto + -158 125 rmoveto + 463 74 -463 hlineto + endchar + + + 591 callgsubr + 201 117 71 74 55 117 -74 74 hstemhm + 69 396 hintmask 11101100 + 69 201 rmoveto + 71 hlineto + 143 -201 555 callgsubr + -171 226 63 28 45 53 10 82 rlinecurve + 70 74 -71 hlineto + -8 41 -20 34 -33 23 rrcurveto + 132 74 -396 hlineto + hintmask 11110100 + -117 65 vlineto + 61 39 -14 -41 14 hvcurveto + -105 566 callgsubr + -68 180 vlineto + -47 -13 -39 -24 -63 hhcurveto + -65 hlineto + endchar + + + -50 9 -21 647 -20 hstem + 90 147 136 126 vstem + 90 -12 rmoveto + 259 -7 150 98 182 vvcurveto + 11 -2 20 -5 20 vhcurveto + -121 -28 rlineto + 2 -15 0 -9 -6 vvcurveto + -71 -62 -50 -74 -8 vhcurveto + 165 vlineto + 163 87 -27 66 -136 -72 rlineto + 55 vlineto + 163 86 -27 67 -136 -72 rlineto + 128 -147 -200 562 callgsubr + -55 562 callgsubr + endchar + + + 591 callgsubr + 143 398 callsubr + 49 398 callsubr + 203 92 hstemhm + 65 139 124 136 hintmask 10101111 + 65 hmoveto + 139 143 195 74 -195 49 30 hlineto + 121 109 53 469 callgsubr + -104 55 -126 hvcurveto + -169 hlineto + hintmask 10110111 + -296 569 callgsubr + hintmask 11001111 + -68 62 -50 569 callgsubr + hintmask 10101111 + -68 62 vlineto + 139 197 rmoveto + 203 25 vlineto + 61 38 -30 -71 -62 -38 -40 -61 hvcurveto + endchar + + + -108 -12 122 495 108 hstem + 108 143 87 119 vstem + 251 489 rmoveto + 86 24 30 25 23 15 -20 -41 -70 -29 -56 -58 -55 vhcurveto + 54 -375 rmoveto + 70 56 38 39 44 hvcurveto + -53 89 rlineto + -21 -24 -31 -23 -39 hhcurveto + -42 -35 26 66 hvcurveto + 24 vlineto + 145 105 61 90 123 vvcurveto + 106 -64 63 -98 -108 -79 -75 -168 vhcurveto + -214 vlineto + -30 -19 -32 -20 -36 -21 55 -90 rcurveline + 17 10 16 10 15 9 rrcurveto + -98 21 80 -49 91 hhcurveto + endchar + + + 389 510 callgsubr + 159 -150 -21 26 -21 28 -21 128 78 63 90 117 159 -121 90 -76 119 -12 -20 27 -20 25 -20 hstemhm + 85 131 197 131 76 114 -81 264 -81 115 hintmask 001001110000011101000000 + 98 -12 rmoveto + 82 36 46 85 hvcurveto + 96 vlineto + 66 -7 74 -14 121 vhcurveto + 4 hlineto + 27 -70 rlineto + hintmask 000011100100011101000000 + 50 -137 53 -134 54 -135 rrcurveto + 161 485 hlineto + 35 10 8 30 vhcurveto + hintmask 000011101001011101000000 + -11 114 rlineto + hintmask 010000101000111101000000 + 3 -14 -6 2 -22 hhcurveto + -82 -36 -46 -85 hvcurveto + -96 vlineto + -66 7 -74 14 -121 vhcurveto + -4 hlineto + -27 70 rlineto + hintmask 100001101010011101000000 + -50 137 -53 134 -54 135 rrcurveto + -161 -485 hlineto + -35 -10 -8 -30 vhcurveto + hintmask 000101101000111101000000 + 11 -114 rlineto + hintmask 001001110000011101000000 + -3 14 6 -2 22 hhcurveto + hintmask 000011101000111101000000 + 687 281 rmoveto + 88 78 59 108 107 -78 61 -88 -88 -77 -61 -107 -108 77 -59 88 hvcurveto + 90 vmoveto + -32 -19 23 54 54 19 24 32 32 19 -24 -54 -54 -19 -23 -32 hvcurveto + hintmask 000011101000111010000000 + -132 -231 rmoveto + 264 78 -264 hlineto + endchar + + + 172 -9 61 178 76 119 79 91 60 hstem + 45 68 126 106 107 104 81 143 callgsubr + -136 87 rmoveto + 106 91 39 hlineto + 93 79 45 99 96 -76 34 -96 311 callgsubr + 106 -198 rmoveto + 119 31 vlineto + 49 27 -16 -39 -44 -25 -20 -51 hvcurveto + endchar + + + 104 350 72 -14 103 62 103 -62 73 hstemhm + 34 86 56 88 52 88 167 88 hintmask 10011111 + 140 350 rmoveto + 76 48 50 53 50 -24 26 -41 16 hvcurveto + -42 18 rlineto + -24 10 -13 6 13 vvcurveto + 12 8 10 21 22 26 -14 -14 21 vhcurveto + 45 61 rlineto + 22 -29 -38 18 -42 hhcurveto + -74 -46 -46 -54 -51 28 -26 34 -16 hvcurveto + 43 -19 rlineto + 23 -11 14 -5 -16 vvcurveto + -14 -10 -7 -19 -28 -29 16 21 -23 vhcurveto + -49 -60 rlineto + -33 37 41 -16 44 hhcurveto + 176 12 rmoveto + 88 96 hlineto + hintmask 01101111 + -11 321 callgsubr + 57 165 33 callsubr + -11 -115 rlineto + -96 88 314 -109 vlineto + -38 -99 -23 372 callgsubr + endchar + + + 259 9 -21 33 -21 300 90 153 207 callgsubr + 334 114 hintmask 01101100 + 231 callgsubr + hintmask 01110100 + 184 callgsubr + hintmask 10101100 + -66 89 vlineto + 29 178 callsubr + hintmask 01101110 + 62 -664 183 callgsubr + + + 578 callsubr + 71 73 106 82 141 207 callgsubr + 254 96 110 99 243 callgsubr + 68 -397 -52 callsubr + + + 577 -12 82 -49 -21 281 66 -66 109 -70 82 141 207 callgsubr + 370 109 82 102 120 103 hintmask 1000101111100000 + 174 320 callsubr + -391 -402 233 callgsubr + hintmask 1000110111100000 + 184 callgsubr + hintmask 0101001111100000 + -66 89 vlineto + 479 -543 233 callgsubr + hintmask 1010001111100000 + 184 callgsubr + hintmask 1001001111100000 + -66 89 vlineto + 353 -293 rmoveto + 94 69 77 131 hvcurveto + hintmask 1000101111100000 + 130 -69 76 -94 -94 -68 -76 -130 vhcurveto + hintmask 1001001111100000 + -131 68 -77 94 vhcurveto + 82 vmoveto + -33 -27 33 93 hvcurveto + hintmask 1000101111100000 + 93 27 31 33 33 27 -31 -93 vhcurveto + hintmask 1001001111100000 + -93 -27 -33 -33 vhcurveto + endchar + + + 578 callsubr + 117 64 48 91 153 207 callgsubr + 294.5 46 callsubr + hintmask 1110110000000000 + 231 callgsubr + hintmask 1111010000000000 + 184 callgsubr + hintmask 1110111010000000 + -66 89 vlineto + 29 178 callsubr + 132 -676 98 callsubr + hintmask 1110110100000000 + 151 91 hlineto + hintmask 1110111010000000 + -46 callgsubr + -51 35 55 -28 70 hhcurveto + endchar + + + 271 -12 82 117 64 11 90 -53 91 185 89 hstemhm + 47 289 -118 104 228.5 46 callsubr + hintmask 1010010101000000 + 545 callgsubr + hintmask 1001101101000000 + 5 callgsubr + hintmask 1010010101000000 + 379 callgsubr + 167 -332 5 callsubr + 94 -676 489 callgsubr + hvcurveto + hintmask 1101001101000000 + 79 -58 48 -69 -11 -18 -2 -4 -17 vhcurveto + 6 54 rlineto + hintmask 1001001010000000 + 151 91 hlineto + hintmask 1101001101000000 + -46 callgsubr + hintmask 1010010101000000 + -51 35 55 -28 70 hhcurveto + endchar + + + 271 -12 82 117 64 -1 82 -33 91 40 322 callsubr + 213.5 46 callsubr + hintmask 1010000110100000 + 445 callgsubr + hintmask 1001111010100000 + -54 callgsubr + hintmask 1010100110100000 + 27 callsubr + hintmask 1010000110100000 + -51 34 57 -28 68 hhcurveto + hintmask 1101000110100000 + 19 -262 311 callsubr + 6 54 rlineto + hintmask 1001000101000000 + 151 91 hlineto + hintmask 1101000110100000 + -46 callgsubr + -51 35 55 -28 70 hhcurveto + endchar + + + 314 -12 82 117 64 48 91 -41 70 158 75 hstemhm + 214 96 283.5 46 callsubr + hintmask 1101111010000000 + 134 419 42 callsubr + 34 -361 311 callsubr + hintmask 1010011000000000 + 6 54 rlineto + hintmask 1010010100000000 + 151 91 hlineto + hintmask 1110011010000000 + -46 callgsubr + hintmask 1101111010000000 + -51 35 55 -28 70 hhcurveto + endchar + + + 578 callsubr + 106 73 71 82 141 207 callgsubr + 243 99 109 96 243 callgsubr + 118 -488 -70 callgsubr + + + 271 -12 82 106 73 1 82 -12 82 47 64 48 91 hstemhm + 77.5 46 callsubr + 161 99 109 96 hintmask 1010111011100000 + 361 callgsubr + hintmask 1101110101100000 + 151 91 hlineto + hintmask 1010111011100000 + -46 callgsubr + -51 35 55 -28 70 hhcurveto + hintmask 1101111011100000 + 18 298 callgsubr + 99 -488 -70 callgsubr + + + 271 -12 82 98 62 20 373 callgsubr + 339 106 -92 106 hintmask 1010111010000000 + 110 callgsubr + 17 -344 5 callsubr + 102 -676 154 callsubr + hintmask 1101111100000000 + -54 callgsubr + hintmask 1110111010000000 + 27 callsubr + hintmask 1010111010000000 + -51 34 57 -28 68 hhcurveto + endchar + + + 39 194 116 hstem + 22 555 vstem + 300 -17 rmoveto + 69 79 -150 132 rlineto + 358 116 -358 hlineto + 150 132 -69 79 -278 -267 rlineto + -4 vlineto + endchar + + + 39 194 116 hstem + 40 555 vstem + 317 -17 rmoveto + 278 267 rlineto + 4 vlineto + -278 267 -70 -79 150 -132 rlineto + -357 -116 357 hlineto + -150 -132 rlineto + endchar + + + 222 -62 86 252 87 hstem + 209 96 190 96 vstem + 209 -62 rmoveto + 382 338 158 hlineto + 34 79 -381 353 rlineto + -4 hlineto + -381 -353 34 -79 rlineto + 158 hlineto + 96 -252 rmoveto + 339 -127 vlineto + -2 4 222 209 33 callsubr + 222 -209 -2 -4 rlineto + -127 -339 hlineto + endchar + + + 212 callsubr + + + -49 236 185 hstem + 175 178 vstem + 264 236 27 callgsubr + + + 222 340 372 hstem + 87 626 vstem + 166 340 rmoveto + 234 222 234 -222 79 81 -313 291 -313 -291 rlineto + endchar + + + 422 -178 407 callsubr + 116 166 116 131 108 hstem + 46 109 130 139 152 139 130 109 vstem + 218 -178 rmoveto + 147 59 109 123 hvcurveto + 7 152 -7 vlineto + -123 59 -109 147 108 64 74 97 121 -87 63 -141 vhcurveto + -11 166 11 hlineto + 141 87 64 125 94 -64 72 -108 -147 -59 -107 -125 hvcurveto + -7 -152 7 vlineto + 125 -59 107 -147 -108 -64 -72 -94 -125 87 -64 141 vhcurveto + 11 -166 -11 hlineto + -141 -87 -63 -121 -97 64 -74 108 hvcurveto + -6 108 rmoveto + -40 -17 30 30 42 34 29 50 hvcurveto + 46 -37 hlineto + -65 -26 -29 -47 vhcurveto + 27 529 rmoveto + -50 -34 29 42 30 17 30 40 47 26 -31 -63 hvcurveto + -37 vlineto + 430 37 rmoveto + 63 25 31 48 40 17 -30 -30 -42 -34 -29 -50 vhcurveto + -46 hlineto + -435 vmoveto + 37 46 vlineto + 50 34 -29 -42 -30 -17 -30 -40 -48 -25 29 65 hvcurveto + -291 153 rmoveto + 166 152 -166 vlineto + endchar + + + -234 613 282 callgsubr + hintmask 11000000 + 87 hmoveto + 110 613 474 callgsubr + + + -234 613 451 callgsubr + hintmask 10100000 + 148 hmoveto + 109 691 473 callgsubr + + + -234 -56 282 callgsubr + hintmask 11000000 + 87 -56 538 callsubr + 613 -110 hlineto + endchar + + + -234 -56 451 callgsubr + hintmask 11000000 + 46 -56 rmoveto + hintmask 10100000 + 211 691 -109 -613 hlineto + hintmask 11000000 + -102 hlineto + endchar + + + 422 -12 111 452 111 hstemhm + 38 924 -326 326 hintmask 11100000 + 621 -12 rmoveto + 341 111 -263 hlineto + -320 563 rlineto + -341 -111 263 hlineto + hintmask 11010000 + 335 hmoveto + 326 111 -326 hlineto + endchar + + + 422 -10 109 452 109 hstem + 806 129 vstem + 284 -10 rmoveto + 651 670 -651 hlineto + -264 -331 rlineto + -4 vlineto + 341 -226 rmoveto + -182 228 182 224 rlineto + 445 -452 hlineto + -353 36 rmoveto + 116 119 117 -119 74 73 -118 119 118 119 -74 73 -117 -120 -116 120 -74 -73 118 -119 -118 -119 rlineto + endchar + + + 299 -60 787 hstem + 45 787 vstem + 45 -60 rmoveto + 787 787 -787 hlineto + endchar + + + 299 -60 96 336 callsubr + 160 94 rmoveto + 232 499 231 -499 rlineto + endchar + + + 506 callsubr + 45 807 387 callsubr + endchar + + + 506 callsubr + 45 96 387 callsubr + 96 -623 rmoveto + 463 vlineto + 503 -231 rlineto + endchar + + + 299 631 96 hstem + 47 783 vstem + 830 727 rmoveto + -783 -2 hlineto + 390 -805 33 callsubr + 389 805 rlineto + -160 -94 rmoveto + -231 -499 -232 499 rlineto + endchar + + + 506 callsubr + 25 807 362 callgsubr + endchar + + + 506 callsubr + 736 96 362 callgsubr + -96 623 rmoveto + -463 vlineto + -503 232 rlineto + endchar + + + 299 -80 827 hstem + 25 827 vstem + 439 -80 rmoveto + 413 414 -413 413 -414 -413 rlineto + endchar + + + 299 -75 88 641 88 hstem + 31 97 621 97 vstem + 439 -75 rmoveto + 229 178 167 242 240 -178 168 -229 -230 -178 -168 -240 -242 178 -167 230 hvcurveto + 88 vmoveto + -174 -137 129 551 callsubr + 137 129 174 174 136 -129 -191 -192 -136 -129 -174 hvcurveto + 88 vmoveto + 124 99 98 135 132 -99 100 -124 -125 -99 -100 -132 -134 99 -99 125 hvcurveto + endchar + + + -1 -13 86 -59 86 -4 86 23 86 23 86 -86 87 -6 87 -86 86 -60 86 hstemhm + 36 85 -56 83 -7 85 22 83 21 85 -7 85 -58 85 hintmask 0010000000100000 + 105 96 rmoveto + 26 17 16 27 27 -18 16 -25 -21 -19 -16 -27 -27 19 -16 21 hvcurveto + hintmask 0001000001000000 + -28 109 rmoveto + 26 18 16 28 27 -19 15 -25 -22 -19 -15 -27 -28 19 -16 22 hvcurveto + hintmask 0000010000100000 + 28 109 rmoveto + 26 17 17 27 29 -18 14 -25 -21 -19 -14 -29 -27 19 -17 21 hvcurveto + hintmask 0100000100010000 + 78 -300 rmoveto + 25 18 445 callsubr + 382 vmoveto + 25 18 16 26 29 -20 15 -23 -22 -20 -15 -29 -26 20 -16 22 hvcurveto + hintmask 1000000010001000 + 105 -409 rmoveto + 26 17 16 29 26 -18 15 -25 -21 -19 -15 -26 -29 19 -16 21 hvcurveto + 435 vmoveto + 26 17 17 27 27 -18 15 -25 -21 -19 -15 -27 -27 19 -17 21 hvcurveto + hintmask 0100001000000100 + 106 -408 rmoveto + 26 17 445 callsubr + 381 vmoveto + 26 17 16 27 28 -20 16 -23 -22 -20 -16 -28 -27 20 -16 22 hvcurveto + hintmask 0010000000000010 + 79 -299 rmoveto + 25 17 16 27 27 -19 16 -23 -23 -20 -16 -27 -27 20 -16 23 hvcurveto + hintmask 0001000000000001 + 27 109 rmoveto + 24 18 16 28 27 -20 15 -22 -24 -19 -15 -27 -28 19 -16 24 hvcurveto + hintmask 0000100000000010 + -27 109 rmoveto + 25 17 16 27 28 -19 15 -23 -23 -20 -15 -28 -27 20 -16 23 hvcurveto + endchar + + + 347 callgsubr + 610 -584 vlineto + -75 -65 rlineto + 58 -562 rmoveto + 538 512 -538 vlineto + endchar + + + 347 callgsubr + 588 vlineto + 25 30 26 27 25 24 -90 79 rcurveline + -38 -40 -38 -46 -36 -52 rrcurveto + -458 hlineto + -75 -65 rlineto + 58 -562 rmoveto + 538 418 vlineto + -66 -110 -56 -126 -39 -132 rrcurveto + -4 hlineto + -27 75 -31 75 -45 73 -94 -61 rcurveline + 62 -91 41 -79 37 -102 138 16 rcurveline + 45 164 63 135 70 109 rrcurveto + -484 vlineto + endchar + + + -34 -28 218 hstem + 254 81 110 84 vstem + 137 -28 rmoveto + 120 78 69 130 hvcurveto + 361 vlineto + 70 -23 40 -60 -59 vvcurveto + -36 -4 -25 -10 -31 vhcurveto + 49 -20 rlineto + 25 35 24 57 56 vvcurveto + 80 -31 58 -94 64 vhcurveto + -50 34 -10 9 -12 23 rrcurveto + -78 -516 hlineto + 6 -9 -24 6 -26 hhcurveto + -95 -75 -60 -72 -60 57 -26 55 hvcurveto + endchar + + + 69 -20 708 hstem + 7 641 vstem + 165 -20 rmoveto + 138 16 80 288 130 199 135 127 rlinecurve + -90 78 -136 -138 -121 -221 -71 -239 rlinecurve + -4 hlineto + -33 83 -40 85 -52 82 -94 -61 rcurveline + 71 -99 45 -87 42 -113 rrcurveto + endchar + + + 299 -60 66 624 97 hstem + 45 66 624 97 vstem + 45 -60 rmoveto + 714 hlineto + 73 83 rlineto + 704 -704 vlineto + -83 -73 rlineto + 66 -648 rmoveto + 624 624 -624 vlineto + endchar + + + -141 -152 78 704 78 hstem + 87 85 50 76 vstem + 87 -152 rmoveto + 304 78 -93 704 93 78 -304 hlineto + 85 -782 rmoveto + 563 callsubr + + + -141 -152 78 704 78 hstem + 139 76 50 85 vstem + 46 -152 rmoveto + 304 860 -304 -78 93 -704 -93 hlineto + 169 hmoveto + 563 callsubr + + + -234 630 282 callgsubr + hintmask 11000000 + 87 278 rmoveto + 110 352 474 callgsubr + + + -234 630 451 callgsubr + hintmask 10100000 + 148 278 rmoveto + 109 430 473 callgsubr + + + -234 -152 282 callgsubr + hintmask 11000000 + 87 -152 538 callsubr + 352 -110 hlineto + endchar + + + -234 -152 451 callgsubr + hintmask 11000000 + 46 -152 rmoveto + hintmask 10100000 + 211 430 -109 -352 hlineto + hintmask 11000000 + -102 hlineto + endchar + + + 922 206 94 hstem + 43 1414 vstem + 43 206 rmoveto + 1414 94 -1414 hlineto + endchar + + + 1622 206 94 hstem + 43 2114 vstem + 2157 300 rmoveto + -2114 -94 2114 hlineto + endchar + + + 22 -12 120 205 97 187 116 389 callsubr + 68 146 -48 144 -100 144 hintmask 11111000 + 65 535 callgsubr + 145 hlineto + -6 82 rlineto + -41 45 63 -14 53 hhcurveto + hintmask 11110010 + 120 79 82 130 98 -59 60 -81 14 hvcurveto + 4 vlineto + hintmask 11110100 + 63 23 33 55 78 vvcurveto + 124 -111 57 -114 -158 -74 -106 -141 vhcurveto + hintmask 11110010 + 259 -358 rmoveto + -35 -43 9 44 -34 hvcurveto + 296 vlineto + 94 30 46 60 vhcurveto + hintmask 11110100 + 46 30 -29 -56 -69 -31 -33 -56 hvcurveto + -11 hlineto + hintmask 11111000 + -97 26 vlineto + hintmask 11110010 + 78 38 -37 -67 -64 -39 -37 -59 hvcurveto + endchar + + + -85 -184 680 hstem + -2 497 vstem + -2 -184 rmoveto + 153 hlineto + 58 153 13 37 11 33 10 33 rlinecurve + 4 hlineto + 9 -33 12 -34 12 -36 58 -153 rcurveline + 157 hlineto + -165 360 152 320 rlineto + -152 hlineto + -45 -115 -12 -36 -14 -31 -10 -31 rlinecurve + -4 hlineto + -11 31 -12 32 -12 35 -45 115 335 callgsubr + 154 -319 rlineto + endchar + + + endchar + + + -10 381 callgsubr + 125 -94 -21 23 235 callgsubr + 442 callgsubr + 110 99 -59 147 hintmask 10011110 + 423 -210 rmoveto + 31 45 13 20 25 hvcurveto + -30 66 rlineto + -6 -9 -14 -6 195 callgsubr + hvcurveto + hintmask 10011101 + 30 22 35 66 20 vhcurveto + 432 callsubr + vlineto + hintmask 11001101 + -328 vlineto + -88 callsubr + hintmask 11001110 + 41 callgsubr + hintmask 10101110 + 13 -71 rlineto + -27 -18 -42 -40 -59 vvcurveto + hintmask 10011110 + 308 callgsubr + endchar + + + -10 381 callgsubr + 132 callgsubr + 442 callgsubr + -42 100 92 147 hintmask 10110110 + 271 230 callgsubr + -9 -14 -6 -13 hhcurveto + -21 -20 11 27 25 9 26 21 24 hvcurveto + 16 22 26 24 33 30 rrcurveto + 3 hlineto + 11 -66 142 callsubr + hintmask 11011010 + -328 vlineto + -88 callsubr + 1 1 0 2 hhcurveto + hintmask 10110110 + -25 -22 -28 -38 -47 vvcurveto + 564 callgsubr + endchar + + + 84 callsubr + 494 callsubr + 154 389 callgsubr + -44 callgsubr + hintmask 11011000 + -92 callsubr + hintmask 10111000 + 131 callsubr + endchar + + + 84 callsubr + 81 143 494 callsubr + -106 358 callgsubr + -102 147 hintmask 10111001 + -44 callgsubr + hintmask 11011001 + -92 callsubr + hintmask 10111001 + 374 callgsubr + -106 581 -83 callsubr + + + 19 callsubr + + + 84 callsubr + 494 callsubr + 154 389 callgsubr + -44 callgsubr + hintmask 11011000 + -92 callsubr + hintmask 10111000 + 131 callsubr + 47 567 115 callsubr + + + 75 callsubr + 88 55 98 55 442 callgsubr + -54 89 86 89 -60 147 hintmask 1011110010000000 + -23 callsubr + hintmask 0111110010000000 + 129 callgsubr + hintmask 1011110010000000 + -328 vlineto + -88 callsubr + hintmask 0111101100000000 + 71 576 rmoveto + -1 callsubr + + + 75 callsubr + 97 102 -38 102 442 callgsubr + -112 92 -92 112 461 callgsubr + -121 92 hintmask 1010110010000000 + -23 callsubr + hintmask 0110110010000000 + 129 callgsubr + hintmask 1010110010000000 + -328 vlineto + -88 callsubr + hintmask 0111010001000000 + 137 585 -50 callgsubr + hintmask 0110100110000000 + -31 -35 64 -63 hhcurveto + -77 -44 -49 -103 -3 hvcurveto + hintmask 0110101010000000 + 92 -5 rlineto + 39 4 11 16 20 hhcurveto + hintmask 0111010001000000 + 136 callgsubr + + + -55 0 109 387 -20 hstem + 12 499 vstem + 179 hmoveto + 170 hlineto + 162 496 406 callgsubr + -65 -234 -13 -49 -13 -52 -12 -52 310 callgsubr + 52 -13 52 -13 49 -64 234 432 callgsubr + endchar + + + -223 375 76 -76 330 hstemhm + 8 339 hintmask 10100000 + 118 375 rmoveto + 120 hlineto + hintmask 01100000 + 109 330 rlineto + -99 hlineto + -41 -152 rlineto + hintmask 10100000 + -26 -102 rlineto + -2 hlineto + -28 102 rlineto + hintmask 01100000 + -40 152 rlineto + -103 hlineto + endchar + + + 398 callgsubr + hstemhm + 24 728 hintmask 10110000 + 292 callsubr + hintmask 11010000 + -58 callgsubr + endchar + + + -55 375 82 -82 330 -113 113 hstemhm + 16 491 hintmask 10110000 + 98 375 rmoveto + 119 hlineto + 28 127 16 90 rlineto + 2 hlineto + 16 -90 29 -127 rlineto + 121 hlineto + hintmask 01010000 + 78 330 rlineto + -95 hlineto + hintmask 10110000 + -29 -148 -16 -100 rlineto + -3 hlineto + -19 100 -40 148 rlineto + -83 hlineto + -38 -148 -18 -100 rlineto + -3 hlineto + -15 100 rlineto + hintmask 01010000 + -29 148 rlineto + -103 hlineto + endchar + + + 398 callgsubr + hstemhm + 24 728 hintmask 10110000 + 292 callsubr + hintmask 11010000 + -58 callgsubr + 375 76 -44 callsubr + + + 398 callgsubr + 177 91 hstemhm + 24 728 hintmask 10111000 + 292 callsubr + hintmask 11011000 + -58 callgsubr + 182 117 -31 callsubr + + + 398 callgsubr + 93 143 hstemhm + 208 358 callgsubr + hintmask 10111100 + 292 callsubr + hintmask 11011100 + -58 callgsubr + 256 73 -83 callsubr + + + 398 callgsubr + hstemhm + 24 728 hintmask 10110000 + 292 callsubr + hintmask 11010000 + -58 callgsubr + 355 76 -29 callsubr + + + 123 callsubr + + + -230 375 330 hstem + 8 332 vstem + 8 375 rmoveto + 108 hlineto + 24 51 25 52 33 callsubr + 32 -52 29 -51 rlineto + 110 hlineto + -102 159 97 171 rlineto + -108 hlineto + -22 -52 -20 -50 rlineto + -4 hlineto + -28 50 -27 52 rlineto + -111 hlineto + 97 -159 rlineto + endchar + + + -109 -166 -21 497 97 178 116 hstemhm + 17 218 -193 151 -105 147 89 129 hintmask 11101010 + 392 -187 rmoveto + 43 65 18 65 34 vvcurveto + 77 -25 32 -106 21 vhcurveto + -89 17 -40 15 68 vvcurveto + 61 53 42 67 27 24 -2 -7 30 vhcurveto + 115 vlineto + hintmask 11100110 + -8 -27 -18 -1 -28 hhcurveto + -52 -34 44 46 54 37 34 54 hvcurveto + 117 116 hlineto + hintmask 11110010 + -426 -116 hlineto + hintmask 11100110 + 54 6 25 1 38 2 rrcurveto + -30 -21 -16 -37 -34 vvcurveto + -60 33 -50 58 -23 vhcurveto + -4 vlineto + hintmask 11101010 + -74 -25 -63 -70 -86 vvcurveto + -125 84 -45 102 -22 vhcurveto + 75 -16 21 -11 -27 vvcurveto + -26 -18 -23 -29 -38 vhcurveto + endchar + + + 254 callgsubr + hstemhm + 12 497 hintmask 10110000 + -98 callgsubr + hintmask 01110000 + -26 -112 rlineto + hintmask 10110000 + 252 callgsubr + endchar + + + -225 252 79 hstem + 8 337 vstem + 83 252 rmoveto + 81 36 40 84 33 hvcurveto + 112 329 rlineto + -99 hlineto + -37 -137 -8 -32 -9 -30 -6 -32 rlinecurve + -4 hlineto + -9 34 -6 27 -10 33 -45 137 rcurveline + -104 hlineto + 129 -319 -5 -14 rlineto + -24 -8 -18 -17 -31 hhcurveto + -7 -5 0 4 -11 hvcurveto + -18 -77 rlineto + -4 15 14 -2 20 hhcurveto + endchar + + + 254 callgsubr + hstemhm + 12 497 hintmask 10110000 + -98 callgsubr + hintmask 01110000 + -26 -112 rlineto + hintmask 10110000 + 252 callgsubr + 157 766 -44 callsubr + + + 254 callgsubr + 177 91 hstemhm + 12 497 hintmask 10111000 + -98 callgsubr + hintmask 01111000 + -26 -112 rlineto + hintmask 10111000 + 252 callgsubr + hintmask 01111000 + -36 807 -31 callsubr + + + 254 callgsubr + 93 143 hstemhm + 86 358 callgsubr + hintmask 10111100 + -98 callgsubr + hintmask 01111100 + -26 -112 rlineto + hintmask 10111100 + 252 callgsubr + hintmask 01111100 + 38 763 -83 callsubr + + + -50 0 217 -70 70 55 70 293 -20 hstemhm + 190 389 callgsubr + 190 hmoveto + 147 hlineto + hintmask 01111000 + 147 154 70 -154 55 154 70 -122 vlineto + 147 293 383 callgsubr + -50 -133 -17 -43 -16 -44 -17 -44 rlinecurve + -4 hlineto + -18 43 -16 44 -16 44 -51 133 rcurveline + -151 hlineto + 147 -293 rlineto + -122 -70 153 -55 -153 -70 153 hlineto + endchar + + + 591 callgsubr + 240 74 321 -20 396 callsubr + 240 154 74 -137 hlineto + 162 321 383 callgsubr + -50 -133 -17 -43 -16 -44 -17 -44 rlinecurve + -4 hlineto + -18 43 -16 44 -16 44 -51 133 rcurveline + -151 hlineto + 161 -321 rlineto + -136 -74 153 hlineto + endchar + + + 254 callgsubr + hstemhm + 12 497 hintmask 10110000 + -98 callgsubr + hintmask 01110000 + -26 -112 rlineto + hintmask 10110000 + 252 callgsubr + 137 766 -29 callsubr + + + 239 callgsubr + endchar + + + -266 375 81 168 81 hstemhm + 25 270 -253 249 hintmask 11100000 + 25 375 rmoveto + 270 81 -141 hlineto + hintmask 11010000 + 137 193 rlineto + 56 -249 -81 120 vlineto + hintmask 11100000 + -137 -193 rlineto + endchar + + + 239 callgsubr + 217 493 -44 callsubr + + + -118 356 callgsubr + 81 91 40 -20 hstem + 38 398 197 callgsubr + 132 498 -55 callgsubr + + + -118 356 callgsubr + 73 591 callsubr + 162 166 197 callgsubr + 207 490 rmoveto + -106 callsubr + + + -50 -12 114 431 114 hstem + 37 526 callgsubr + 276 callsubr + 114 vmoveto + -49 -39 45 173 174 39 39 49 50 38 -39 -174 -173 -38 -45 -50 hvcurveto + endchar + + + -50 -12 114 143 153 135 114 hstemhm + 37 131 26 140 26 131 hintmask 11110100 + 276 callsubr + 114 vmoveto + -54 -42 53 165 165 42 48 54 54 42 -48 -165 -165 -42 -53 -54 hvcurveto + hintmask 11111100 + 143 vmoveto + 42 28 30 46 47 -28 30 -42 -42 -28 -30 -47 -46 28 -30 42 hvcurveto + endchar + + + 2 25 callgsubr + 138 153 130 119 hstemhm + 53 139 26 144 27 138 hintmask 11110100 + 290 -12 rmoveto + 142 95 124 208 208 -95 119 -142 -143 -94 -118 -209 -208 94 -124 143 hvcurveto + 119 vmoveto + -59 -39 55 158 159 39 49 59 59 40 -49 -159 -158 -40 -55 -59 hvcurveto + hintmask 11111100 + 138 vmoveto + 42 30 30 46 47 -30 30 -42 -43 -29 -30 -47 -46 29 -30 43 hvcurveto + endchar + + + 2 -12 105 449 105 hstem + 53 131 212 131 vstem + 290 -12 rmoveto + 142 95 124 208 208 -95 119 -142 -143 -94 -118 -209 -208 94 -124 143 hvcurveto + 554 vmoveto + 58 48 -50 -172 -27 -1 -25 -3 -21 hvcurveto + -180 242 rlineto + 39 19 28 14 31 hhcurveto + -449 vmoveto + -58 -48 57 170 27 1 24 2 22 hvcurveto + 181 -243 rlineto + -41 -19 -28 -16 -31 hhcurveto + endchar + + + -50 -12 105 449 105 hstem + 37 131 192 131 vstem + 276 callsubr + 554 vmoveto + 53 43 -50 -172 -24 -1 -22 -2 -20 hvcurveto + -163 237 rlineto + 37 17 25 14 28 hhcurveto + -449 vmoveto + -53 -43 57 170 24 1 22 1 19 hvcurveto + 165 -236 rlineto + -40 -18 -25 -16 -28 hhcurveto + endchar + + + -50 -12 114 448 114 hstem + 37 526 callgsubr + 264 -12 rmoveto + 136 91 117 224 223 -91 112 -136 -136 -91 -111 -224 -224 91 -117 136 hvcurveto + 114 vmoveto + -49 -39 47 180 179 39 42 49 50 38 -42 -179 -180 -38 -47 -50 hvcurveto + endchar + + + -202 -12 351 callgsubr + -12 -68 callgsubr + endchar + + + -202 250 82 250 82 hstem + 26 102 120 103 vstem + 110 callgsubr + endchar + + + -33 -12 114 375 113 hstem + 45 526 callgsubr + 272 -12 rmoveto + 134 93 108 193 194 -93 107 -134 -134 -93 -107 -194 -193 93 -108 134 hvcurveto + 114 vmoveto + -59 -29 74 113 113 29 75 59 59 29 -75 -113 -113 -29 -74 -59 hvcurveto + endchar + + + 2 25 callgsubr + 421 119 hstem + 53 147 180 147 vstem + 290 -12 rmoveto + 142 95 124 208 208 -95 119 -142 -143 -94 -118 -209 -208 94 -124 143 hvcurveto + 119 vmoveto + -54 -36 47 166 167 36 41 54 54 36 -41 -167 -166 -36 -47 -54 hvcurveto + endchar + + + -28 -12 114 325 114 hstem + 53 145 154 146 vstem + 576 callsubr + 129 94 105 175 172 -94 101 -129 -129 -93 -100 -173 -175 93 -105 129 hvcurveto + 114 vmoveto + -42 -35 39 127 126 35 33 42 42 35 -33 -126 -127 -35 -39 -42 hvcurveto + endchar + + + -202 -198 351 callgsubr + -198 -68 callgsubr + endchar + + + -202 363 351 callgsubr + 363 -68 callgsubr + endchar + + + -50 -12 114 375 113 hstem + 37 526 callgsubr + 264 -12 rmoveto + 134 93 108 193 194 -93 107 -134 -134 -93 -107 -194 -193 93 -108 134 hvcurveto + 114 vmoveto + -59 -29 74 113 113 29 75 59 59 29 -75 -113 -113 -29 -74 -59 hvcurveto + endchar + + + -112 -166 -21 772 116 hstem + 41 150 129 129 vstem + 389 -187 rmoveto + 43 65 17 65 34 vvcurveto + 77 -39 33 -100 20 vhcurveto + -90 18 -29 30 81 vvcurveto + 100 112 170 131 79 vhcurveto + 6 116 -368 -116 hlineto + 61 6 104 1 42 2 rrcurveto + -140 -107 -98 -142 -117 vvcurveto + -164 91 -52 92 -20 vhcurveto + 76 -17 20 -10 -27 vvcurveto + -26 -18 -23 -28 -38 vhcurveto + endchar + + + + + + + + 234 -12 rmoveto + 59 50 25 69 27 hvcurveto + 4 hlineto + -69 26 58 -25 59 hhcurveto + 122 67 97 171 103 -31 77 -45 72 hvcurveto + -135 -49 rlineto + 49 -79 15 -53 -80 vvcurveto + -91 -25 -49 -37 -40 -20 23 70 45 5 28 7 58 vhcurveto + -155 hlineto + 7 -58 5 -28 -45 vvcurveto + -63 -23 -30 -42 -42 -20 47 70 82 27 70 49 80 vhcurveto + -138 52 rlineto + -44 -71 -33 -102 -82 vvcurveto + -172 75 -93 119 vhcurveto + return + + + rmoveto + 176 120 128 213 305 callgsubr + -213 120 -128 176 hvcurveto + -97 callgsubr + return + + + 287 -12 rmoveto + 59 66 21 35 51 hvcurveto + -49 89 rlineto + -22 -36 -34 -11 -37 hhcurveto + -66 -50 33 72 -13 hvcurveto + 297 hlineto + 3 12 3 27 26 vvcurveto + 135 -70 103 -141 -119 -115 -99 -161 -164 109 -96 142 vhcurveto + -110 314 rmoveto + 63 10 40 31 46 hhcurveto + 59 24 -39 -55 hvcurveto + return + + + 330 -105 callsubr + return + + + rmoveto + 13 50 13 63 12 53 rrcurveto + 4 hlineto + 15 -52 12 -64 13 -50 11 -41 rcurveline + -103 hlineto + -204 -214 -93 callsubr + return + + + 419 callsubr + 40 155 rlineto + 199 hlineto + 40 -155 rlineto + 156 hlineto + -204 -11 callgsubr + return + + + 278 -12 rmoveto + 125 116 95 165 165 -116 95 -125 -126 -116 -95 -165 -165 116 215 callgsubr + -30 55 86 86 30 55 61 60 31 -55 -86 -86 -31 -55 -60 hvcurveto + return + + + -99 callsubr + 199 callsubr + -104 vvcurveto + return + + + 365 callsubr + 153 108 104 174 175 -108 99 -153 -155 -108 -99 -175 -174 108 -104 155 hvcurveto + 121 vmoveto + -72 callgsubr + return + + + 120 326 callgsubr + 53 64 125 47 hvcurveto + 172 501 406 callgsubr + -60 -213 -12 -47 -11 -47 -11 -47 310 callgsubr + 49 -12 47 -14 45 -71 213 432 callgsubr + 191 -483 -7 -26 rlineto + -39 -13 -25 -26 -49 hhcurveto + -11 -13 4 2 -9 hvcurveto + return + + + 127 vmoveto + -89 -56 83 469 callgsubr + 56 78 89 89 56 -78 -130 -131 -56 -83 -89 hvcurveto + return + + + 197 420 rlineto + -154 hlineto + -59 -150 -18 -49 -18 -45 -19 -50 rlinecurve + -4 hlineto + -18 50 -17 45 -18 49 -58 150 335 callgsubr + 197 -420 rlineto + return + + + 329 callsubr + -19 4 -16 8 21 vvcurveto + 20 20 12 50 3 vhcurveto + -7 82 rlineto + -109 -3 -51 -39 -59 vvcurveto + -71 63 -27 58 -9 vhcurveto + return + + + 334 -12 rmoveto + 168 89 95 219 hvcurveto + 501 callgsubr + -73 -40 44 128 vhcurveto + 365 -148 -350 vlineto + -219 92 -95 169 vhcurveto + return + + + 43 44 52 83 108 vvcurveto + 181 -119 125 -177 -178 -118 -125 -181 -108 51 -83 43 -44 vhcurveto + -4 -110 vlineto + return + + + -11 -46 rlineto + -4 hlineto + 41 -37 -40 17 537 callgsubr + -99 -152 -143 80 -101 123 46 44 20 30 33 hvcurveto + -4 -62 rlineto + -51 -3 -29 -38 -73 hhcurveto + -40 -50 11 26 -46 hvcurveto + -49 -96 rlineto + 62 callgsubr + 160 callsubr + hvcurveto + -178 vlineto + 299 callsubr + return + + + rmoveto + 104 84 33 callsubr + 104 -84 64 39 -90 111 rlineto + -160 hlineto + -90 -111 rlineto + return + + + 57 9 63 27 71 vvcurveto + 59 -51 39 -109 3 vhcurveto + -7 -82 rlineto + 50 -3 20 -12 -20 vvcurveto + -21 -16 -8 -19 -4 vhcurveto + return + + + rmoveto + 183 119 -78 95 -171 -140 rlineto + endchar + + + -84 57 -66 91 vhcurveto + 50 114 -80 callsubr + return + + + 552 callsubr + 156 90 94 108 92 -50 53 -79 32 hvcurveto + -84 34 rlineto + -56 23 -43 14 40 vvcurveto + 37 32 22 51 52 40 -19 -33 43 vhcurveto + 75 93 rlineto + 56 -56 -79 30 -75 hhcurveto + -136 -96 -86 -108 -95 64 -56 67 -27 hvcurveto + 85 -36 rlineto + 57 -24 37 -13 -41 vvcurveto + -39 -30 -24 -61 -54 -60 28 40 -47 vhcurveto + -84 -101 rlineto + -62 66 90 -32 85 hhcurveto + return + + + 365 -12 rmoveto + 91 79 35 44 45 hvcurveto + 300 -238 -120 108 -112 vlineto + -13 -16 -27 -7 -27 hhcurveto + -122 -61 78 134 131 71 79 101 56 34 -23 -29 33 hvcurveto + 77 94 rlineto + 44 -43 -68 41 -94 hhcurveto + -174 -144 301 callgsubr + 140 -115 179 hvcurveto + return + + + 211 -12 rmoveto + 133 71 70 90 91 -71 35 -63 23 hvcurveto + -51 19 -44 12 32 vvcurveto + 25 19 14 38 34 35 -16 -26 35 vhcurveto + 66 88 rlineto + 32 -42 -57 31 -76 hhcurveto + -114 -76 -63 -92 -82 69 -41 60 -23 hvcurveto + 51 -20 50 -15 -33 vvcurveto + -26 -19 -16 -44 -42 -41 18 34 -45 vhcurveto + -66 -92 rlineto + -41 50 75 -28 65 hhcurveto + return + + + 217 callsubr + -96 callgsubr + return + + + -18 108 rlineto + -4 -11 -12 -2 -9 hhcurveto + -28 -20 12 33 76 38 153 26 115 311 callgsubr + return + + + rmoveto + -85 callsubr + + + rmoveto + 160 hlineto + 90 110 -64 40 -104 -84 rlineto + -4 hlineto + -104 84 -64 -40 rlineto + endchar + + + -95 callgsubr + 141 -18 rmoveto + 82 16 -33 220 -119 -23 rlineto + endchar + + + 23 callgsubr + 266 callgsubr + 176.5 186 callsubr + hintmask 01011100 + 70 callsubr + hintmask 10011100 + -83 callgsubr + hintmask 01101100 + -77 callgsubr + hintmask 01011100 + -162 79 -96 120 vhcurveto + 35 120 rmoveto + -51 -32 43 96 hvcurveto + hintmask 01101100 + 99 46 42 45 40 28 -28 -59 21 vhcurveto + -7 -86 rlineto + hintmask 01011100 + -59 -3 -43 -48 -44 hhcurveto + return + + + 75 6 64 29 69 vvcurveto + 53 -45 35 -124 3 vhcurveto + -17 -73 rlineto + 58 -4 22 -11 -19 vvcurveto + -18 -20 -7 -25 -5 vhcurveto + return + + + -16 -87 rlineto + -4 hlineto + 71 -32 -49 28 -56 hhcurveto + -115 -104 -98 -164 hvcurveto + return + + + -78 callsubr + endchar + + + -90 callgsubr + 228 -76 rmoveto + 81 16 -32 220 -119 -23 rlineto + endchar + + + -67 63 -33 72 102 vvcurveto + 113 54 81 91 90 55 -81 -113 -102 -34 -72 -67 -63 vhcurveto + return + + + 256 callsubr + hstem + 46 151 290 -97 callsubr + return + + + -70 -42 60 97 98 42 55 70 68 42 -55 -98 -97 -42 -60 -68 hvcurveto + return + + + 520 callsubr + -289 147 308 482 callsubr + return + + + rmoveto + 33 18 -19 -34 -37 -22 -16 -25 -28 -27 22 56 -7 hvcurveto + 19 19 20 9 19 hhcurveto + 9 -188 rmoveto + 78 60 59 79 75 -47 48 -75 -31 -29 -12 -22 -23 hvcurveto + 65 7 26 40 57 hhcurveto + 27 20 -12 -14 19 hvcurveto + 42 67 rlineto + 20 -23 -36 21 -56 hhcurveto + -116 -66 -85 -124 -124 60 -81 106 hvcurveto + endchar + + + vstem + 135 hmoveto + 182 hlineto + 61 296 11 50 8 53 8 48 rlinecurve + 4 hlineto + 7 -48 8 -53 11 -50 64 -296 rcurveline + 185 hlineto + 116 652 406 callgsubr + -45 -305 -9 -67 -9 -69 -9 -70 310 callgsubr + 70 -13 70 -13 66 -70 305 rcurveline + -125 hlineto + -70 -305 -13 -68 -13 -69 -13 -69 rlinecurve + -4 hlineto + -8 69 -10 69 -8 68 -45 305 rcurveline + -151 hlineto + return + + + rmoveto + 94 69 77 469 callgsubr + -69 76 -94 -94 -68 -76 -130 -131 68 -77 94 hvcurveto + 82 vmoveto + -33 -27 33 93 93 27 31 33 33 27 -31 -93 -93 -27 -33 -33 hvcurveto + return + + + -16 callgsubr + endchar + + + -95 callgsubr + 71 -2 rmoveto + 82 -16 71 213 -119 23 rlineto + endchar + + + -41 callsubr + hintmask 10011101 + -83 callgsubr + hintmask 01101101 + -77 callgsubr + return + + + rmoveto + 12 58 rlineto + -25 5 -20 9 21 vvcurveto + 24 22 14 58 4 vhcurveto + -9 82 rlineto + -131 -4 -47 -43 -66 vvcurveto + -68 65 -30 75 -6 vhcurveto + endchar + + + 71 callsubr + 58 callgsubr + return + + + -60 -20 callgsubr + -58 callsubr + return + + + -107 446 callsubr + 36 144 -123 144 hintmask 11110000 + 9 callsubr + hintmask 11101000 + -71 callsubr + hintmask 11110000 + -59 -16 -37 -35 -67 vvcurveto + -102 104 -51 128 vhcurveto + return + + + 12 58 rlineto + -18 10 -16 12 24 vvcurveto + 24 19 20 49 5 vhcurveto + 284 callgsubr + return + + + 64 -12 95 -7 63 vhcurveto + 4 hlineto + 52 -155 93 -249 rlineto + 81 hlineto + 93 249 53 155 512 callgsubr + -63 -12 -95 -64 vvcurveto + -239 134 652 -160 vlineto + -103 -290 -13 -38 -11 -42 -13 -40 310 callgsubr + 40 -12 42 -13 38 -105 290 rcurveline + -161 hlineto + return + + + 9 46 7 46 9 53 rrcurveto + 4 hlineto + 9 -53 8 -46 10 -46 45 -198 rcurveline + 172 hlineto + 119 496 rlineto + -136 hlineto + -47 -230 -9 -49 -5 -48 -9 -50 rlinecurve + -4 hlineto + -10 50 -9 48 -12 49 -56 230 rcurveline + -127 hlineto + -55 -230 -12 -47 -8 -50 -9 -50 rlinecurve + -4 hlineto + -8 50 -6 48 -8 49 -48 230 rcurveline + -146 hlineto + return + + + vstem + 349 -12 rmoveto + 85 72 33 63 54 hvcurveto + -78 92 rlineto + -34 -32 -42 -27 -53 hhcurveto + -96 -62 78 134 131 71 79 89 47 35 -22 -30 33 hvcurveto + 78 94 rlineto + 45 -44 -68 40 -84 hhcurveto + -165 -143 301 callgsubr + 138 -115 165 hvcurveto + return + + + 38 callsubr + -38 -40 -53 -52 38 -40 51 hvcurveto + return + + + 419 callsubr + 407 callsubr + -56 52 -125 -92 rlineto + -4 hlineto + -125 92 -56 -52 rlineto + endchar + + + 36 21 21 28 41 vvcurveto + 68 -64 41 -72 -61 -40 -21 -46 -43 vhcurveto + 61 -54 rlineto + 22 18 21 17 25 hhcurveto + 30 19 -16 -26 -33 -31 -15 -48 hvcurveto + return + + + -131 85 callsubr + -344 147 vlineto + return + + + 77 44 49 103 3 hvcurveto + -92 5 rlineto + -38 -4 -11 -17 -20 hhcurveto + return + + + 250 callsubr + 152 callgsubr + 152 138 hintmask 10101100 + -15 callgsubr + hintmask 11010100 + -43 callsubr + hintmask 10110100 + -10 86 rlineto + hintmask 10101100 + -53 callgsubr + hintmask 11001100 + -53 callsubr + hintmask 10101100 + 6 callgsubr + return + + + rmoveto + -52 callgsubr + return + + + 74 callgsubr + -39 callsubr + return + + + -23 -12 119 282 119 -34 callgsubr + return + + + 337 callgsubr + 199 119 115 -119 467 callsubr + vlineto + -17 -132 -76 496 callsubr + 68 -201 vlineto + 270 callgsubr + return + + + -236 hlineto + -17 -194 46 -32 rlineto + 16 19 16 7 23 hhcurveto + 32 27 -20 -38 -32 -24 -27 -33 -34 -24 15 33 -25 hvcurveto + -65 -51 rlineto + return + + + rmoveto + 55 35 35 76 8 hvcurveto + -75 354 callgsubr + return + + + 260 -12 rmoveto + 149 80 103 169 83 -16 85 -22 80 hvcurveto + return + + + -80 hlineto + -55 -20 12 25 17 5 9 13 11 hvcurveto + -7 22 20 -3 18 hhcurveto + 109 86 53 114 26 -7 24 -9 15 hvcurveto + 79 107 -181 hlineto + return + + + vstem + 115 hmoveto + 174 hlineto + 46 209 10 41 6 43 6 39 rlinecurve + 4 hlineto + 5 -39 7 -43 8 -41 49 -209 rcurveline + 177 hlineto + 96 527 rlineto + -134 hlineto + -34 -230 -6 -54 -8 -56 -6 -55 rlinecurve + -4 hlineto + -11 55 -12 57 -11 53 -54 230 rcurveline + -118 hlineto + -56 -230 -10 -54 -12 -56 -11 -55 rlinecurve + -4 hlineto + -7 55 -7 55 -6 55 -34 230 rcurveline + -144 hlineto + return + + + 70 52 44 100 5 hvcurveto + -95 7 rlineto + -36 -4 -14 -13 -19 hhcurveto + return + + + 235 -12 rmoveto + 58 46 26 56 34 hvcurveto + 3 hlineto + return + + + rmoveto + -65 callsubr + + + -33 -33 58 -71 hhcurveto + -70 -52 -43 -101 -5 hvcurveto + 60 callsubr + return + + + vlineto + -71 callgsubr + -50 -35 -40 -42 vhcurveto + -4 hlineto + return + + + -17 -74 rlineto + 49 -5 19 -20 -24 vvcurveto + -24 -16 -12 -18 -10 vhcurveto + return + + + 64 7 53 24 49 vvcurveto + 40 -38 23 -110 4 vhcurveto + -13 -59 rlineto + 50 -4 15 -7 176 callgsubr + + + hstem + 272 callgsubr + vstem + -101 callgsubr + return + + + rmoveto + 42 29 31 41 40 -29 31 -42 -42 -30 -31 -40 -41 30 -31 42 hvcurveto + return + + + -176 -120 -122 -213 return + + + -12 callsubr + 148 return + + + 335 -37 callgsubr + return + + + 28 0 317 callgsubr + 182 135 hintmask 01011100 + 455 callgsubr + hintmask 01101100 + 12 callsubr + hintmask 10011100 + 17 callsubr + hlineto + return + + + 0 -50 callsubr + return + + + rmoveto + 93 17 -28 213 -125 -18 rlineto + return + + + -58 96 rlineto + -20 -26 -31 -16 -32 hhcurveto + -64 -47 55 86 86 45 55 71 23 20 -9 -20 24 hvcurveto + 69 95 128 callgsubr + return + + + 312 -12 rmoveto + 72 66 25 52 48 hvcurveto + -40 callsubr + -183 122 -89 144 hvcurveto + return + + + -9 callgsubr + endchar + + + 75 callsubr + 442 callgsubr + 150 147 246 callgsubr + 432 callsubr + hlineto + hintmask 10111000 + -328 vlineto + -88 callsubr + return + + + 419 callgsubr + 30 callgsubr + return + + + 140 callsubr + hintmask 11011000 + 37 callsubr + hintmask 11100100 + 206 callsubr + hintmask 11011000 + 26 callgsubr + hintmask 11100100 + 4 callgsubr + + + -12 3 callsubr + return + + + 27 0 114 168 109 147 114 46 callgsubr + 172 144 -112 144 hintmask 11110100 + 190 callgsubr + hintmask 11111000 + 53 20 32 63 58 vvcurveto + 125 -105 37 -135 vhcurveto + -223 hlineto + 147 -261 rmoveto + 147 70 vlineto + 69 33 -19 -51 -47 -31 -30 -72 hvcurveto + -69 -277 rmoveto + 168 83 vlineto + hintmask 11110100 + 81 40 -23 -57 -60 -41 -28 -80 hvcurveto + endchar + + + 456 callsubr + hintmask 11110110 + -107 callgsubr + return + + + -14 callsubr + hstem + 77 147 vstem + 77 155 callsubr + return + + + 117 callgsubr + -80 14 rlineto + -41 -9 -29 -25 -45 hhcurveto + -45 -29 25 41 -9 hvcurveto + -80 12 callgsubr + return + + + 353 -177 rmoveto + 149 485 hlineto + return + + + 52 hmoveto + 292 124 -73 404 73 124 -292 -124 72 -404 -72 hlineto + return + + + 77 147 return + + + -8 hvcurveto + 75 23 callsubr + return + + + 652 rlineto + -177 hlineto + return + + + 335 vlineto + 32 31 29 16 24 299 callgsubr + -289 147 335 vlineto + 32 32 28 16 25 299 callgsubr + -289 147 308 vlineto + 124 -48 76 -107 -66 -46 -38 -45 -44 vhcurveto + 53 -25 -42 30 -70 hhcurveto + -65 -44 -35 -41 -41 hvcurveto + -4 hlineto + return + + + rmoveto + 296 93 -296 hlineto + return + + + 11 58 rlineto + -23 8 -22 12 30 vvcurveto + 24 23 17 57 4 vhcurveto + -17 74 rlineto + -124 -3 -44 -41 -59 vvcurveto + return + + + 202 callgsubr + hstemhm + 65 138 hintmask 01110000 + 28 callsubr + hintmask 10110000 + -82 callsubr + hintmask 01110000 + 169 callsubr + return + + + 64 7 53 24 49 vvcurveto + 41 -38 22 -109 4 vhcurveto + -14 -59 rlineto + 50 -3 15 -8 109 callgsubr + return + + + -2 callsubr + endchar + + + 105 225 callsubr + hstemhm + 251 callsubr + 11 123 hintmask 11110000 + 591 598 rmoveto + hintmask 11111000 + 197 callsubr + hintmask 11110000 + 9 callgsubr + return + + + 22 callsubr + 553 -147 -547 vlineto + return + + + hlineto + 9 -54 2 -59 -39 return + + + 47 218 callgsubr + hstemhm + 526 callsubr + 10 123 hintmask 11110000 + 534 474 rmoveto + hintmask 11111000 + 53 callgsubr + hintmask 11110000 + 24 callsubr + return + + + -12 rmoveto + 41 callgsubr + return + + + 25 callgsubr + 282 119 return + + + 269 callsubr + hstem + 251 callsubr + vstem + -94 callgsubr + return + + + 60 callgsubr + 132 callsubr + 369 114 -62 callsubr + return + + + -16 -178 rmoveto + -30 -22 22 28 21 12 21 22 15 hvcurveto + 39 -19 31 -9 -31 vvcurveto + -26 -23 -22 -29 vhcurveto + endchar + + + 55 61 49 56 63 vvcurveto + 84 -58 48 -86 -60 -49 -27 -53 -40 vhcurveto + 61 -56 rlineto + 29 22 23 18 26 hhcurveto + 36 21 -23 -38 hvcurveto + return + + + -114 -5 -196 -6 -156 vhcurveto + return + + + 83 callsubr + 263 callgsubr + 152 138 hintmask 0110101001000000 + -15 callgsubr + hintmask 0111010001000000 + -43 callsubr + hintmask 0110110001000000 + -10 86 rlineto + hintmask 0110101001000000 + -53 callgsubr + hintmask 0111001001000000 + -53 callsubr + hintmask 0110101001000000 + 6 callgsubr + hintmask 0110100011000000 + 470 callsubr + hintmask 0110100101000000 + 32 callgsubr + hintmask 1010100101000000 + -77 callsubr + hintmask 0110100101000000 + 86 callsubr + hintmask 0110100011000000 + -106 -34 hlineto + -77 29 -50 82 vhcurveto + return + + + -11 502 callsubr + 11 545 vstem + 11 hmoveto + 158 hlineto + 61 133 14 34 15 33 15 40 rlinecurve + 4 hlineto + 18 -40 15 -33 16 -34 65 -133 rcurveline + 164 hlineto + -180 328 169 324 rlineto + -157 hlineto + -52 -123 -13 -30 -14 -34 -15 -41 rlinecurve + -4 hlineto + -18 41 -14 34 -15 30 -57 123 rcurveline + -164 hlineto + 170 -317 rlineto + endchar + + + -70 -365 hlineto + -128 -42 -44 -73 -73 -40 44 128 vhcurveto + 365 -148 -350 vlineto + -219 92 -95 169 168 89 95 219 vhcurveto + return + + + hstem + 48 138 92 137 vstem + -85 callgsubr + return + + + 76 20 39 40 72 vvcurveto + 40 -14 36 -16 80 callsubr + -43 -21 -18 -39 -11 vhcurveto + 20 -40 -47 11 -52 250 callgsubr + hvcurveto + return + + + -14 rlineto + -89 9 55 -48 99 hhcurveto + return + + + 77 -12 87 -6 72 vhcurveto + 4 hlineto + 64 -142 170 -325 rlineto + 151 652 -140 -230 hlineto + return + + + 66 20 54 48 80 vvcurveto + 37 -15 37 -15 20 vhcurveto + -109 -47 rlineto + 9 -14 7 -21 -22 vvcurveto + -56 -28 -24 -40 -10 vhcurveto + 13 -30 -33 7 -33 hhcurveto + -126 -116 -95 -165 hvcurveto + return + + + rmoveto + -72 callgsubr + -121 vmoveto + 153 108 104 174 88 -27 68 -47 47 hvcurveto + return + + + 92 callsubr + vhcurveto + 38 120 rmoveto + -57 -33 44 98 94 42 44 47 103 callgsubr + hvcurveto + -203 vlineto + 45 callsubr + return + + + rmoveto + 32 25 22 35 34 -25 22 -32 -31 -25 -22 -34 -35 25 -22 31 hvcurveto + return + + + -77 12 -92 6 -69 vhcurveto + -4 hlineto + -64 144 -170 324 rlineto + -151 return + + + 10 -49 62 callsubr + return + + + -69 491 callgsubr + hstem + 11 486 vstem + 11 hmoveto + 156 hlineto + 43 91 11 28 12 28 12 33 rlinecurve + 4 hlineto + 14 -33 13 -28 14 -28 45 -91 rcurveline + 162 hlineto + -152 265 143 263 rlineto + -156 hlineto + -33 -83 -9 -24 -13 -29 -13 -35 rlinecurve + -4 hlineto + -15 35 -13 29 -11 24 -39 83 rcurveline + -162 hlineto + 143 -257 rlineto + endchar + + + 77 hmoveto + 341 callsubr + 26 callsubr + 147 -253 127 callsubr + return + + + 65 5 51 23 59 vvcurveto + 44 -37 33 -110 3 vhcurveto + -13 -60 rlineto + 50 -4 15 -10 -19 vvcurveto + -17 -14 -6 -18 -4 vhcurveto + return + + + 17 -12 -22 callgsubr + return + + + 123 235 callsubr + return + + + -12 119 return + + + 16 250 rmoveto + -32 13 -25 13 28 vvcurveto + 21 18 15 22 24 18 -15 -25 -16 -8 -18 -17 -16 vhcurveto + return + + + rmoveto + -56 callgsubr + endchar + + + 11 457 rmoveto + -39 -29 28 55 53 29 27 39 39 29 -28 -52 -55 -29 -28 -39 hvcurveto + return + + + 36 hmoveto + 472 124 -291 hlineto + 288 439 rlineto + 89 -442 -124 261 vlineto + -288 -439 rlineto + return + + + 45 callgsubr + -12 -20 return + + + -226 154 return + + + 28 19 4 7 14 hvcurveto + return + + + -75 21 85 callgsubr + return + + + rmoveto + 302 94 -302 hlineto + return + + + 486 callgsubr + 50 callgsubr + return + + + 59 callsubr + vlineto + return + + + -102 callsubr + -98 458 -32 callsubr + return + + + -210 rmoveto + 31 173 callsubr + -13 380 callsubr + 11 27 return + + + 573 49 callgsubr + + + 16 28 25 46 16 30 rrcurveto + 4 hlineto + -6 -61 -7 -65 -50 vvcurveto + -138 142 496 -134 vlineto + -129 -210 -15 -29 -26 -45 -16 -30 rlinecurve + -3 hlineto + 5 61 7 66 49 vvcurveto + 138 -142 vlineto + return + + + 68 46 31 50 42 hvcurveto + 3 hlineto + return + + + -111 319 callgsubr + vstem + -24 callsubr + return + + + 8 -22 -27 4 -28 hhcurveto + -107 -98 -60 -119 -58 32 -47 35 -24 hvcurveto + -4 vlineto + return + + + 60 138 callsubr + -28 -213 rlineto + endchar + + + 245 callsubr + 120 return + + + hstemhm + -13 callgsubr + return + + + -28 -28 44 -55 hhcurveto + -56 -33 -35 -76 -4 hvcurveto + 70 -8 rlineto + 27 4 10 return + + + -21 383 125 return + + + -50 callgsubr + hintmask 01110000 + -74 callsubr + hintmask 10110000 + 136 callgsubr + + + hstem + 46 151 -57 callgsubr + return + + + vlineto + -55 -13 -25 -39 -14 403 callgsubr + -26 556 callgsubr + 20 461 callsubr + return + + + 18 21 -21 221 117 197 117 209 callgsubr + 192 144 vstem + 114 callgsubr + endchar + + + 74 16 59 40 82 66 callsubr + -14 8 -21 -22 vvcurveto + -61 -44 -12 -39 -1 vhcurveto + return + + + 84 callsubr + 96 113 494 callsubr + -114 342 callsubr + -110 147 hintmask 10111001 + -44 callgsubr + hintmask 11011001 + -92 callsubr + hintmask 10111001 + 374 callgsubr + -130 387 callgsubr + return + + + 114 hlineto + 7 132 17 87 89 113 rrcurveto + 58 -294 -90 174 vlineto + -68 -103 -32 -76 -7 -121 rrcurveto + return + + + 204 hmoveto + 148 528 179 124 -506 495 callgsubr + hlineto + return + + + -27 21 -21 167 101 145 115 209 callgsubr + 151 140 vstem + 124 callgsubr + endchar + + + hstem + 46 151 222 151 vstem + -99 callgsubr + return + + + -42 callsubr + endchar + + + -79 88 callgsubr + return + + + -50 -90 118 -7 -21 206 104 165 518 callsubr + hintmask 10110100 + 243 -90 rmoveto + 128 108 73 118 84 -53 55 -73 512 callsubr + hintmask 01111000 + 68 29 38 53 66 vvcurveto + 111 -88 66 -131 -78 -64 -31 -50 -58 vhcurveto + 74 -90 rlineto + 35 40 34 21 45 hhcurveto + 50 28 -29 -44 -51 -36 -41 -114 hvcurveto + -104 vlineto + hintmask 10110100 + 138 33 -39 -56 -49 -41 -34 -62 -54 -47 28 37 -38 hvcurveto + hintmask 01110100 + -68 -93 rlineto + hintmask 10110100 + -54 46 72 -36 103 hhcurveto + endchar + + + -37 57 74 -19 54 hhcurveto + 24 334 rmoveto + -57 -35 46 82 return + + + 114 -81 212 callgsubr + return + + + rmoveto + -84 callsubr + + + -292 25 callgsubr + -98 -21 713 -20 389 callsubr + hintmask 01110000 + 293 callgsubr + hintmask 10110000 + -3 callgsubr + hintmask 01110000 + 308 callsubr + return + + + 430 callgsubr + -99 callgsubr + return + + + -12 377 callsubr + 280 return + + + -5 -37 callsubr + 45 85 hstem + -6 585 104 callsubr + endchar + + + -5 -163 -21 172 448 callgsubr + 65 147 171 151 hintmask 11011100 + 65 535 callgsubr + 145 hlineto + -5 79 rlineto + -33 35 40 -19 43 hhcurveto + 107 102 98 170 hvcurveto + hintmask 11101100 + 153 -74 99 -120 -52 -50 -26 -35 -39 vhcurveto + -4 hlineto + hintmask 11011100 + -10 49 552 callgsubr + 226 -388 270 callsubr + hintmask 11101100 + 352 callgsubr + hvcurveto + hintmask 11011100 + -102 -41 -44 -51 vhcurveto + endchar + + + 63 9 53 20 65 vvcurveto + 47 -38 29 -109 4 vhcurveto + -14 -62 rlineto + 51 -4 14 -10 -19 vvcurveto + -18 -12 -6 -18 -5 vhcurveto + endchar + + + 280 99 callsubr + return + + + 29 -223 95 139 -21 538 -20 495 callsubr + -17 108 83 141 hintmask 11101100 + 317 16 callsubr + 34 21 36 42 12 hvcurveto + 110 28 51 75 150 vvcurveto + 522 callsubr + vhcurveto + hintmask 11110100 + -59 -29 33 94 hvcurveto + 292 -146 -283 vlineto + -164 66 -77 123 -14 vhcurveto + hintmask 11101100 + -31 -26 -29 -42 -51 216 callsubr + return + + + -102 callsubr + 6 464 rmoveto + return + + + 115 51 69 88 3 hvcurveto + return + + + 213 114 rmoveto + 56 33 35 76 4 hvcurveto + -70 9 rlineto + -27 -4 -10 -12 -18 hhcurveto + return + + + 97 -12 120 156 108 171 121 hstem + 51 150 280 148 vstem + 338 -12 rmoveto + 174 117 118 221 221 -117 116 -172 -101 -75 -34 -47 -51 hvcurveto + 67 -101 rlineto + 32 35 46 29 62 hhcurveto + 95 53 -54 -117 10 hvcurveto + -427 hlineto + -2 -17 -1 -17 -15 vvcurveto + -218 110 -117 177 vhcurveto + -2 120 rmoveto + -77 -50 47 109 -8 hvcurveto + 278 hlineto + -108 -14 -53 -48 -76 hhcurveto + endchar + + + vstem + 55 callsubr + return + + + 125 4 72 31 68 vvcurveto + 42 -26 21 -50 12 vhcurveto + return + + + rmoveto + 43 23 7 9 21 hvcurveto + return + + + -302 21 318 callgsubr + 394 callsubr + hintmask 11110000 + 364 callsubr + + + 125 -125 147 return + + + 216 callgsubr + 493 -147 -497 51 callgsubr + return + + + 489 callgsubr + 79 -58 48 -69 -11 -18 -2 -4 -17 hvcurveto + return + + + 184 -163 -21 467 405 callgsubr + return + + + -21 108 106 207 107 return + + + 121 310 121 return + + + 82 0 119 182 68.5 -68.5 71 161 119 hstemhm + 102 147 213 151 hintmask 10111100 + 102 241 callgsubr + hintmask 11011100 + -280 vlineto + -76 -5 rlineto + hintmask 10111100 + -66 76 vlineto + 147 -182 rmoveto + 182 125 71 -125 161 424 callgsubr + + + 0 111 callsubr + return + + + 434 callsubr + 46 callgsubr + -41 107 hintmask 11110100 + 297 16 callsubr + 40 40 50 46 hvcurveto + 119 124 hlineto + hintmask 01111000 + 384 callgsubr + hlineto + hintmask 11110100 + 183 hlineto + -34 -21 -43 -49 -59 vvcurveto + -60 50 -34 64 vhcurveto + return + + + rmoveto + 79 32 rlineto + -45 82 -23 82 90 vvcurveto + 89 23 83 45 81 vhcurveto + -79 32 rlineto + -58 -88 -33 -78 -119 vvcurveto + -120 33 -78 58 -88 vhcurveto + endchar + + + -50 25 callgsubr + 197 103 104 124 422 callgsubr + -12 rmoveto + 124 109 81 141 135 -93 62 -109 -26 -21 -4 -11 -24 hvcurveto + 11 119 rlineto + 233 124 -360 hlineto + -18 -321 66 -42 rlineto + 24 38 19 8 37 hhcurveto + 59 41 -34 -64 -65 -42 -34 -65 -54 -45 28 35 -38 hvcurveto + -66 -93 rlineto + -50 50 70 -39 104 hhcurveto + endchar + + + 27 callsubr + -51 34 57 -28 68 hhcurveto + endchar + + + 44 421 callgsubr + 77 147 hintmask 11001010 + 77 hmoveto + 147 277 72 hlineto + 173 -277 rlineto + 155 hlineto + -213 345 rlineto + hintmask 11100010 + 438 callsubr + hintmask 11000110 + 24 133 rlineto + hintmask 11100010 + 7 -14 -22 452 callsubr + -50 hvcurveto + -85 -150 rlineto + -72 hlineto + hintmask 11010010 + 256 -147 vlineto + return + + + 106 -12 121 168 117 149 121 hstem + 46 592 vstem + 342 -12 rmoveto + 175 121 120 221 220 -121 115 -175 -174 -122 -114 -221 -221 122 -120 174 hvcurveto + 555 vmoveto + 78 52 -51 -98 15 hvcurveto + -290 hlineto + 98 15 53 51 77 hhcurveto + -434 vmoveto + -80 -54 58 110 -13 hvcurveto + 294 hlineto + -110 -13 -53 -58 -81 hhcurveto + endchar + + + 587 -80 callgsubr + + + 499 callgsubr + endchar + + + 715 237 callgsubr + hintmask 10101100 + 193 callsubr + hintmask 11010010 + 36 25 -44 65 hhcurveto + hintmask 10110100 + -176 -144 -10 callsubr + + + -277 21 -21 652 -20 127 callgsubr + return + + + 256 -203 rmoveto + 161 91 78 138 hvcurveto + return + + + -60 -12 112 96 97 103 521 callsubr + 249 -12 rmoveto + 124 109 99 161 162 -101 98 -131 -62 -66 -14 -36 -54 hvcurveto + 49 -95 rlineto + 21 34 36 12 38 hhcurveto + 62 41 -33 -70 11 hvcurveto + -297 hlineto + -2 -12 -4 -27 -26 vvcurveto + -137 72 -103 141 vhcurveto + -3 112 rmoveto + -59 -25 39 57 hvcurveto + 179 hlineto + -67 -10 -37 -29 -48 hhcurveto + endchar + + + 568 115 callgsubr + + + -44 -211 92 100 112 64 89 143 107 -87 99 return + + + 27 29 -8 -24 26 return + + + -32 297 callgsubr + 7 0 -20 389 callsubr + hintmask 11000110 + 65 386 callgsubr + hintmask 11100010 + 248 callsubr + hintmask 11001010 + 247 callgsubr + hintmask 11010010 + 183 -147 vlineto + return + + + -16 -216 88 -88 161 76 213 callgsubr + -131 104 -104 131 return + + + 43 21 313 callgsubr + 157 callgsubr + endchar + + + rmoveto + 57 88 33 78 120 vvcurveto + 119 -33 78 -57 88 vhcurveto + -80 -32 rlineto + 45 -81 23 -83 -89 vvcurveto + -90 -23 -82 -45 -82 vhcurveto + endchar + + + 17 -216 88 -88 161 43 -22 callgsubr + return + + + -12 vvcurveto + -10 -12 -5 -18 -3 vhcurveto + return + + + 188 250 -68 callgsubr + return + + + 23 vlineto + 47 25 21 34 27 15 -4 -7 16 vhcurveto + 27 109 rlineto + 9 -23 -38 9 -42 hhcurveto + -135 -53 -83 -102 hvcurveto + -23 452 callgsubr + -381 147 381 169 vlineto + return + + + 528 288 callgsubr + return + + + -300 382 callsubr + 577 -20 93 154 hstemhm + 57 458 callgsubr + hintmask 11101000 + 139 callsubr + hintmask 11110000 + 104 765 rmoveto + -106 callsubr + + + 77 118 callgsubr + return + + + rmoveto + -76 callgsubr + + + 434 rmoveto + 72 37 31 43 45 41 -32 -100 13 vhcurveto + -45 -25 -37 -18 -33 hhcurveto + -48 -36 25 67 hvcurveto + 61 -446 rmoveto + 133 124 107 237 223 -118 92 -123 -115 -96 -81 -132 -134 81 -62 108 39 55 25 42 33 hvcurveto + -148 -5 -55 -50 -71 hhcurveto + -37 -40 21 24 -21 hvcurveto + -78 -88 rlineto + -40 40 62 -36 84 hhcurveto + endchar + + + 99 55 48 89 9 hvcurveto + return + + + hmoveto + 147 221 81 hlineto + 138 117 68 153 158 -116 52 -143 hvcurveto + -224 hlineto + 147 -314 rmoveto + 197 68 vlineto + 80 44 -25 -68 -68 -39 -36 -81 hvcurveto + return + + + 147 235 81 hlineto + 125 -235 555 callgsubr + -148 261 rlineto + return + + + 5 133 333 callsubr + -133 rlineto + return + + + -223 226 callgsubr + return + + + 38 -12 112 115 107 106 112 hstem + 46 524 vstem + 365 callsubr + 154 107 100 179 178 -107 95 -154 -156 -107 -95 -178 -179 107 -100 156 hvcurveto + 440 vmoveto + 59 40 -36 -70 13 hvcurveto + -226 hlineto + 70 13 40 36 61 hhcurveto + -328 vmoveto + -62 -41 41 74 -12 hvcurveto + 228 hlineto + -74 -12 -41 -41 -60 hhcurveto + endchar + + + 174 callgsubr + 146 callgsubr + return + + + 77 hmoveto + 147 167 67 hlineto + 118 106 54 131 134 -103 42 -121 hvcurveto + -214 hlineto + 147 -260 rmoveto + 145 62 vlineto + 60 29 -21 -49 -46 -30 -29 -59 hvcurveto + return + + + -46 -328 hlineto + -88 callsubr + return + + + 98 214 callgsubr + hstemhm + 77 146 231 145 hintmask 01011100 + 543 callgsubr + hintmask 01101100 + 145 callsubr + hintmask 10011100 + 223 callsubr + return + + + 13 callsubr + 260 callsubr + hlineto + return + + + rlineto + 31 -37 -47 22 -61 hhcurveto + -137 -121 -95 -165 return + + + 11 -69 142 callsubr + return + + + 151 callgsubr + -33 74 rlineto + -7 -10 108 callsubr + return + + + rmoveto + 57 11 62 37 71 vvcurveto + return + + + 125 -92 235 callgsubr + return + + + rlineto + 257 callsubr + return + + + -180 21 -21 379 219 callgsubr + hintmask 10010100 + 334 callsubr + hintmask 11000100 + 137 callgsubr + hintmask 10010100 + 536 callsubr + hintmask 11001000 + 263 callsubr + hintmask 10101000 + -10 87 rlineto + hintmask 10100100 + -120 hlineto + return + + + 377 callgsubr + hintmask 11101010 + 161 callgsubr + hintmask 11101011 + 194 callgsubr + + + 31 35 -64 63 hhcurveto + endchar + + + 288 141 callsubr + return + + + 48 27 18 69 9 hvcurveto + -64 9 rlineto + return + + + 547 callgsubr + 209 callgsubr + 147 139 vstem + 21 callgsubr + return + + + 186 callgsubr + 189 217 callgsubr + return + + + 131 callgsubr + 170 callgsubr + return + + + -5 -203 115 101 118 257 return + + + 67 vstem + 375 -9 rmoveto + 177 152 127 207 206 -152 124 -177 -177 -153 -123 -207 -207 153 -127 177 hvcurveto + 61 vmoveto + -147 -115 109 164 164 115 106 147 147 115 -106 -164 -164 -115 -109 -147 hvcurveto + return + + + vstem + 149 callsubr + return + + + vstem + 149 callgsubr + return + + + hstem + 46 149 194 129 vstem + -79 callsubr + return + + + -277 180 callsubr + return + + + 33 33 -58 71 hhcurveto + endchar + + + 77 321 callsubr + 528 172 callgsubr + return + + + 205 callsubr + -147 hlineto + return + + + 121 callgsubr + 25 hvcurveto + return + + + hstemhm + 65 81 callgsubr + return + + + -58 118 rlineto + 71 -35 -51 24 -68 hhcurveto + -20 -19 -3 -5 -13 hvcurveto + 24 -130 rlineto + 2 8 9 2 9 hhcurveto + 28 17 -13 -28 14 hvcurveto + 43 -89 rlineto + return + + + 343 254 callsubr + 111 -33 86 -56 58 hvcurveto + return + + + -7 21 48 callgsubr + 193 -20 hstem + 65 147 537 callsubr + vstem + 344 callsubr + 335 hlineto + -71 callgsubr + -49 -35 -33 -37 vhcurveto + 7 89 rlineto + 172 -147 vlineto + endchar + + + 128 46 58 80 4 359 callsubr + return + + + 209 callgsubr + 173 148 145 callgsubr + return + + + 36 27 27 37 36 -27 29 -36 -36 -27 -29 -36 -37 27 -27 36 hvcurveto + endchar + + + -32 callsubr + 289 26 rmoveto + return + + + rmoveto + 49 34 30 47 46 -34 31 -49 -49 -34 -31 -46 -47 34 -30 49 hvcurveto + return + + + -36 -16 24 40 -2 359 callsubr + return + + + -106 267 119 vlineto + return + + + -205 367 82 182 82 hstem + 24 106 113 105 vstem + 186 367 rmoveto + 85 77 64 108 109 -77 65 -85 -85 -77 -65 -109 -108 77 -64 85 hvcurveto + 82 vmoveto + -39 -17 36 54 55 17 37 39 39 18 -37 -55 -54 -18 -36 -39 hvcurveto + endchar + + + 4 vlineto + hintmask 11110000 + 54 17 24 46 40 vvcurveto + 99 -98 43 -107 -66 -61 -16 -35 -54 vhcurveto + 54 -94 rlineto + 25 38 37 8 42 hhcurveto + 49 26 -17 -29 -31 -24 -17 -46 hvcurveto + -70 -97 hlineto + hintmask 11101000 + 79 hlineto + 52 24 -15 -34 -35 -40 -21 -52 -35 -45 12 28 -41 hvcurveto + -57 -93 return + + + 91 -43 -55 27 -74 hhcurveto + -18 -21 -2 -7 -15 hvcurveto + 25 -133 rlineto + 4 10 12 0 6 hhcurveto + 29 22 -10 -49 22 hvcurveto + 55 -125 rlineto + return + + + hmoveto + 147 272 return + + + 174 callsubr + hintmask 11110100 + return + + + 52 -97 rlineto + 28 48 42 17 40 hhcurveto + 55 19 -28 -43 3 hvcurveto + -195 -20 -81 -58 -105 vvcurveto + return + + + 59 16 382 callgsubr + return + + + 64 -47 40 -101 4 vhcurveto + return + + + 81 -37 -48 23 -71 hhcurveto + -15 -13 -2 -5 -12 hvcurveto + 23 -136 rlineto + 2 6 6 2 7 hhcurveto + 24 21 -9 -41 17 hvcurveto + 28 -63 rlineto + return + + + -148 -194 -173 309 callgsubr + return + + + rmoveto + 109 172 -99 44 -87 -181 rlineto + return + + + -2 -12 232 callsubr + return + + + 147 381 89 115 -89 30 hlineto + 511 callgsubr + return + + + 109 callgsubr + endchar + + + 104 44 53 60 6 hvcurveto + -72 12 rlineto + -26 -7 -22 -26 -53 hhcurveto + -53 -22 26 26 -7 hvcurveto + -72 -12 rlineto + -60 6 44 -53 104 hhcurveto + return + + + 69 192 callsubr + return + + + 27 vlineto + 83 49 -40 -107 -109 -49 -44 -83 hvcurveto + return + + + 181 callgsubr + -93 -163 rmoveto + return + + + 29 24 -42 55 hhcurveto + return + + + 584 188 callsubr + + + rmoveto + 55 callgsubr + endchar + + + -33 -23 -25 -12 -54 -8 rrcurveto + return + + + 29 218 callgsubr + return + + + -21 272 129 return + + + -41 -29 -30 -40 return + + + 17 callgsubr + 119 -17 rmoveto + 65 14 -35 220 -103 -21 rlineto + 220 -196 2 callsubr + + + 25 callgsubr + -98 -21 33 262 callsubr + return + + + 77 hmoveto + 242 hlineto + 141 112 59 133 87 -51 49 -66 17 hvcurveto + 4 vlineto + return + + + 208 callgsubr + 193 82 354 callsubr + return + + + -16 21 213 callgsubr + return + + + -106 21 -21 406 122 13 callsubr + 406 216 return + + + -80 4 46 -58 128 hhcurveto + endchar + + + 310 callsubr + 12 26 return + + + -23 464 callsubr + 147 hlineto + 56 64 124 -211 rlineto + 157 hlineto + -197 312 167 216 rlineto + -159 hlineto + -144 -194 rlineto + -4 309 callgsubr + endchar + + + vstem + 82 callsubr + return + + + 357 callgsubr + vhcurveto + 119 vmoveto + -61 -30 55 86 86 30 55 61 60 31 -55 -86 -86 -31 -55 -60 hvcurveto + return + + + 36 26 27 35 34 -26 27 -36 return + + + 147 39 callsubr + hintmask 11110000 + return + + + -69 225 callsubr + 228 callsubr + endchar + + + -277 25 callgsubr + -98 -21 508 -20 return + + + 346 151 callgsubr + -34 74 rlineto + -7 -9 108 callsubr + 28 20 39 48 15 hvcurveto + 126 38 58 87 185 vvcurveto + 501 callgsubr + vhcurveto + return + + + vstem + 211 callsubr + return + + + 126 -103 129 148 119 -110 137 hintmask 11100100 + return + + + 104 9.5 186 callsubr + return + + + 66 -66 109 hstemhm + 135 109 return + + + -107 -20 callgsubr + return + + + hstem + -13 callgsubr + return + + + 264 rmoveto + 84 138 18 36 18 36 16 35 rlinecurve + 4 hlineto + -2 -40 -4 -61 -41 vvcurveto + -103 vlineto + -264 vmoveto + 137 152 73 112 -73 371 -180 hlineto + -232 -382 rlineto + -101 275 vlineto + endchar + + + 154 231 50 callsubr + return + + + -21 391 117 return + + + -3 callsubr + 225 448 callsubr + return + + + 0 84 callgsubr + return + + + -95 126 hvcurveto + 119 vmoveto + -61 return + + + rmoveto + 135 42 467 callgsubr + return + + + 74 272 callsubr + return + + + -12 234 callsubr + return + + + 342 callgsubr + 152 callgsubr + return + + + 6 -76 213 callsubr + return + + + 286 230 callgsubr + -10 -13 380 callsubr + 11 27 29 17 31 51 20 hvcurveto + 100 39 72 80 134 vvcurveto + 165 -116 95 -125 vhcurveto + return + + + 2 hmoveto + 154 hlineto + 108 212 rlineto + 50 -212 137 212 50 hlineto + 108 -212 rlineto + return + + + 2 hmoveto + 158 hlineto + 137 277 rlineto + 67 -277 140 277 67 hlineto + 137 -277 rlineto + return + + + -57 -126 rlineto + -4 hlineto + 7 57 11 88 66 vvcurveto + 145 -135 vlineto + return + + + -115 185 vlineto + -208 -302 rlineto + return + + + rmoveto + 35 44 15 20 return + + + 89 -28 callgsubr + hstem + 196 147 vstem + 196 155 callsubr + return + + + -216 rmoveto + 32 callgsubr + hintmask 10100000 + -77 callsubr + hintmask 01100000 + 439 callsubr + + + vlineto + -68 -27 -45 -24 -38 hhcurveto + -21 -15 4 4 -17 hvcurveto + -25 -127 rlineto + -6 15 16 -4 28 hhcurveto + return + + + 401 callgsubr + 25 hvcurveto + -30 66 rlineto + -6 return + + + 135 251 callgsubr + return + + + 168 25 callgsubr + 401 -20 return + + + rmoveto + 264 callsubr + return + + + 27 -36 -36 -26 -27 return + + + -21 496 -20 return + + + hstem + 249 147 vstem + 205 -12 rmoveto + 129 62 89 107 hvcurveto + 344 -147 -335 vlineto + -65 -23 -18 -38 -28 -27 19 33 -19 vhcurveto + -98 -72 rlineto + -68 41 59 -34 89 hhcurveto + return + + + rmoveto + 51 36 39 73 6 hvcurveto + -64 7 rlineto + -27 -6 -13 -12 -18 hhcurveto + return + + + 97 94 112 return + + + -118 356 callgsubr + hstem + 38 398 197 callgsubr + return + + + rmoveto + -101 callsubr + return + + + hmoveto + 192 hlineto + 191 128 105 224 224 -128 99 -199 hvcurveto + -184 hlineto + return + + + 127 537 -20 return + + + hintmask 11101111 + 231 callgsubr + hintmask 11110111 + 184 callgsubr + hintmask 11101111 + 437 callsubr + return + + + 346 callsubr + -115 -212 rmoveto + 44 callgsubr + + + 50 -81 callgsubr + + + hintmask 10111000 + -23 callsubr + hintmask 01111000 + 11 -69 rlineto + 120 return + + + 23 136 rlineto + 5 -13 -13 2 -14 hhcurveto + -71 -45 -19 -85 -41 hvcurveto + -44 -91 rlineto + -50 hlineto + return + + + 82 263 callgsubr + return + + + 355 callsubr + 193 326 callsubr + return + + + hhcurveto + -32 callgsubr + return + + + 262 233 callgsubr + return + + + -6 20 20 -4 30 hhcurveto + return + + + 45 21 24 42 48 vvcurveto + 90 -69 58 -138 -67 -66 -23 -43 -53 vhcurveto + 69 -94 rlineto + 34 39 38 14 35 hhcurveto + 40 29 -20 -33 -39 -22 -19 -54 hvcurveto + -61 -92 hlineto + return + + + -57 -194 324 callgsubr + return + + + 36 25 27 35 34 -25 27 -36 return + + + 558 callgsubr + 171 147 return + + + 21 -3 callsubr + return + + + hlineto + -46 -94 479 callsubr + 11 -59 rlineto + 78 callgsubr + hintmask 11110000 + 26 61 rlineto + return + + + -55 -34 76 -83 hhcurveto + -50 -51 -28 -75 -49 hvcurveto + 76 -59 rlineto + 37 21 24 21 27 hhcurveto + return + + + vvcurveto + -60 51 -34 64 return + + + rmoveto + 275 callgsubr + + + 90 223 89 hstemhm + 45 289 -118 104 hintmask 10100000 + 45 return + + + 152 callgsubr + -131 104 -104 131 return + + + hstem + 65 147 vstem + 150 callsubr + return + + + -82 63 -34 76 -8 vhcurveto + return + + + hstemhm + 36 151 return + + + rmoveto + 15 callsubr + return + + + 85 547 callsubr + 215 147 vstem + 77 hmoveto + 147 528 215 -528 147 652 -509 hlineto + endchar + + + 23 6 8 18 hvcurveto + -26 108 rlineto + -4 -10 return + + + -115 48 -77 123 vhcurveto + return + + + -277 491 callgsubr + return + + + 36 151 182 150 return + + + 28 23 -32 47 hhcurveto + return + + + rmoveto + 28 54 rlineto + -45 4 -19 12 19 vvcurveto + 24 25 11 78 4 vhcurveto + -11 59 rlineto + -125 -4 -72 -31 -68 vvcurveto + -49 34 -26 107 -9 vhcurveto + endchar + + + -61 -30 55 86 86 30 55 61 60 31 -55 -86 -86 -31 -55 -60 hvcurveto + endchar + + + -112 69 -43 44 63 vvcurveto + 60 37 33 58 50 41 -29 -35 32 vhcurveto + 72 93 rlineto + 50 -47 -67 40 -97 hhcurveto + -122 -104 -69 -136 hvcurveto + return + + + rmoveto + hintmask 11110100 + -84 callsubr + + + vmoveto + -67 callgsubr + + + 208 -12 114 -114 115 102 90 96 117 -112 112 return + + + 207 callsubr + 549 127 return + + + -222 356 callsubr + return + + + 78 hstemhm + 87 557 callsubr + 211 return + + + 31 32 23 17 37 273 callsubr + return + + + -17 74 rlineto + -101 -4 -47 -40 -64 vvcurveto + return + + + rmoveto + 44 49 -97 87 -48 -59 rlineto + return + + + 154 46 callgsubr + return + + + 89 64 66 66 105 vvcurveto + 136 -103 69 -121 -98 -68 -40 -50 -47 vhcurveto + 72 -93 rlineto + 35 33 41 29 51 hhcurveto + 57 36 -33 -60 hvcurveto + return + + + rlineto + -175 hlineto + return + + + 72 268 74 hstemhm + 38 294 callsubr + hintmask 11100100 + 188 return + + + 21 -21 381 115 hstem + 65 147 vstem + 344 callsubr + 381 return + + + 147 225 148 138 138 return + + + vlineto + 53 26 -19 -38 -41 -26 -19 -53 hvcurveto + return + + + 200 215 callsubr + return + + + 115 54 64 100 3 471 callsubr + return + + + 727f3d87 1e0e + + + 140 82 140 return + + + 21 -21 198 115 56 139 -12 -20 25 return + + + -262 5 callsubr + return + + + 273 callsubr + -72 hvcurveto + return + + + vvcurveto + 308 callgsubr + return + + + -126 -216 -219 return + + + 469 callsubr + 114 return + + + 406 callgsubr + -63 -219 -13 -51 -15 -47 -12 -50 310 callgsubr + 50 -15 47 -12 51 -63 219 432 callgsubr + return + + + 0 115 305 120 hstemhm + 44 238 -226 147 -71 150 68 151 -151 239 -159 147 return + + + 212 -120 123 -176 -32 callgsubr + return + + + vlineto + 55 16 25 47 10 9 -3 -4 10 vhcurveto + 26 108 rlineto + 8 return + + + -100 3 54 -64 115 hhcurveto + endchar + + + -60 47 -31 59 vhcurveto + return + + + 194 -147 hlineto + return + + + rlinecurve + -4 hlineto + -13 return + + + hvcurveto + -145 hlineto + return + + + 69 68 callsubr + + + 460 callgsubr + 194 -20 return + + + 35 hvcurveto + 4 hlineto + return + + + 108 callgsubr + 225 326 callsubr + return + + + hstem + 124 147 vstem + -14 callgsubr + return + + + 102 callsubr + 496 callgsubr + return + + + 235 callgsubr + 93 253 callsubr + return + + + 1 callgsubr + hstem + 36 151 return + + + -12 110 195 104 131 119 hstem + return + + + 115 33 callsubr + 56 -165 rlineto + 68 hlineto + return + + + -21 347 181 300 callsubr + return + + + 139 0 132 200 195 return + + + 116 -85 -21 680 -20 return + + + 333 callgsubr + hlineto + return + + + -194 rmoveto + 117 return + + + rlineto + -150 hlineto + return + + + rlineto + 118 vlineto + -161 -9 9 173 rlineto + -118 hlineto + 9 -173 -161 9 rlineto + -118 vlineto + 161 return + + + 250 callsubr + 175 59 16 80 -38 80 152 callgsubr + -62 75 return + + + rmoveto + hintmask 1111001001000000 + 199 callgsubr + hvcurveto + hintmask 1111010001000000 + 179 callsubr + return + + + 148 383 callsubr + hintmask 11110000 + 72 return + + + -33 74 rlineto + -7 -9 -14 -7 -14 hhcurveto + -20 -21 12 26 hvcurveto + return + + + -10 63 rlineto + -120 return + + + rmoveto + 122 143 return + + + rcurveline + -158 hlineto + return + + + hintmask 11101000 + 77 hmoveto + 369 114 -62 callsubr + return + + + 256 -12 246 callsubr + return + + + rmoveto + -89 -56 83 469 callgsubr + 56 78 89 89 56 -78 -130 -131 -56 -83 -89 hvcurveto + endchar + + + 374 callsubr + hvcurveto + return + + + 123 102 43 135 124 -95 47 return + + + 416 callgsubr + 123 return + + + 538 callgsubr + 22 -20 return + + + 8 -22 -36 10 -41 hhcurveto + return + + + hstemhm + 42 141 return + + + 107 92 114 return + + + -6 382 callsubr + 464 113 -113 125 540 callsubr + return + + + 229 -10 58 538 89 hstem + 74 58 512 89 vstem + 74 -10 rmoveto + 594 hlineto + 65 75 rlineto + return + + + 215 callsubr + 22 callsubr + return + + + 390 callgsubr + -190 92 196 92 hintmask 10110000 + 66 return + + + 250 154 callsubr + return + + + 82 250 82 hstem + 26 102 120 103 vstem + 188 return + + + 203 vlineto + 31 29 26 14 30 hhcurveto + 59 27 -45 -89 return + + + 214 callsubr + hstemhm + return + + + 7 rlineto + -27 185 callsubr + return + + + 344 callgsubr + 138 147 return + + + 0 378 callsubr + return + + + -165 116 -95 126 return + + + 143 76 143 return + + + 267 106 hlineto + return + + + 312 callsubr + hintmask 11011100 + 99 callgsubr + return + + + 187 250 98 callsubr + return + + + vstem + 832 725 rmoveto + -2 hlineto + -805 -389 rlineto + -4 vlineto + 805 -390 rlineto + 2 hlineto + return + + + rmoveto + 88 129 119 84 -119 127 -88 -127 -118 -84 118 hlineto + endchar + + + 721 94 hstem + -151 302 vstem + -151 721 68 callsubr + + + 218 hmoveto + 42 30 31 41 40 -30 31 -42 -42 -29 -31 -40 -41 29 -31 42 hvcurveto + endchar + + + 33 callsubr + 102 return + + + 175 callsubr + 213 82 hstemhm + 40 139 return + + + -73 -40 44 128 hvcurveto + 365 -148 -350 vlineto + -200 76 -96 142 -16 vhcurveto + return + + + -146 -381 -121 381 -141 -381 -121 381 -145 hlineto + endchar + + + hmoveto + 147 212 48 hlineto + 139 -212 rlineto + return + + + vlineto + -55 -13 -25 -40 -13 403 callgsubr + -27 return + + + -66 rlineto + -4 hlineto + -22 66 -39 99 rlineto + -108 hlineto + return + + + 82 -12 82 180 82 hstemhm + 26 102 120 103 return + + + 131 callsubr + hintmask 10110110 + return + + + 90 hstem + 117 114 vstem + 117 return + + + hmoveto + 147 207 173 -207 return + + + -40 -2 -16 -24 -36 hhcurveto + return + + + 289 90 -118 hlineto + return + + + -49 -71 -63 -100 -82 vhcurveto + return + + + 135 145 hlineto + return + + + -210 87 111 return + + + 80 -38 80 hstemhm + return + + + rlineto + -148 hlineto + return + + + -271 150 222 123 -222 131 261 124 -408 -652 return + + + 33 -11 callsubr + return + + + 369 callsubr + 161 hlineto + -167 260 rlineto + return + + + 596 17 callgsubr + return + + + rmoveto + 34 25 22 31 31 -25 22 -34 -35 -24 -22 -31 -31 24 -22 35 hvcurveto + endchar + + + 147 hintmask 10111000 + return + + + 102 -38 102 hstemhm + return + + + 73 160 callgsubr + return + + + hlineto + 138 7 128 89 160 vvcurveto + 160 -127 89 -139 7 vhcurveto + return + + + -12 119 -98 -21 33 140 callgsubr + return + + + rmoveto + 80 hlineto + 29 199 120 callgsubr + endchar + + + -366 -215 131 callgsubr + return + + + 115 79 134 -12 -20 24 -20 20 8 return + + + 157 151 callgsubr + return + + + 198 0 119 224 153 0 -20 return + + + -356 -215 131 callgsubr + return + + + vlineto + 124 -46 76 -108 return + + + -210 rmoveto + 32 44 13 20 return + + + 21 235 callgsubr + return + + + -12 3 4 -13 vhcurveto + return + + + 74 -74 138 hstemhm + return + + + 185 0 -20 return + + + rlineto + -141 hlineto + return + + + 21 -21 528 return + + + hstemhm + 65 142.5 -142.5 147 537 callsubr + return + + + -38 callsubr + 64 83 return + + + vmoveto + 67 47 39 60 60 -47 38 -67 -68 -46 -38 -60 -60 46 -39 68 hvcurveto + return + + + 5 -12 -20 3 -19 hhcurveto + -68 -52 -24 -71 -35 hvcurveto + -57 -118 rlineto + -42 hlineto + return + + + hstemhm + 90 459 callgsubr + return + + + -21 175 100 138 115 return + + + 50 114 166 callsubr + return + + + 571 hstem + 103 102 vstem + 115 return + + + 185 callgsubr + 82 return + + + 242 callsubr + 40 return + + + 115 278 115 return + + + 119 -119 return + + + 255 callgsubr + hvcurveto + hintmask 1111100100000000 + 493 callsubr + return + + + 21 -21 277 353 callgsubr + return + + + hstem + 82 130.5 120.5 147 vstem + 247 return + + + 46 35 32 45 45 -35 32 -46 -46 -35 -32 -45 -45 35 -32 46 hvcurveto + return + + + 137 callsubr + endchar + + + 21 -21 590 217 callgsubr + return + + + -5 375 callsubr + return + + + 417 callsubr + 147 147 return + + + -21 -40 hvcurveto + -190 104 203 vlineto + 81 return + + + 6 -37 hhcurveto + -143 -44 -91 -109 hvcurveto + return + + + 151 hintmask 11110100 + return + + + 701 -147 hlineto + return + + + rcurveline + -148 hlineto + return + + + 147 513 callsubr + hintmask 11110000 + 74 return + + + 56 125 rlineto + 49 22 21 10 483 callsubr + return + + + 80 38 -24 -55 -56 -47 -32 -67 -58 -53 19 45 -49 hvcurveto + -78 -101 return + + + 498 callsubr + 327 callsubr + return + + + hhcurveto + -67 -39 -44 -91 -4 hvcurveto + 92 -18 rlineto + 35 4 11 16 20 hhcurveto + return + + + 497 callsubr + 266 callgsubr + return + + + -109 hlineto + -44 -27 -45 -18 -68 -13 rrcurveto + -91 119 vlineto + endchar + + + rmoveto + 147 422 -147 hlineto + endchar + + + 376 callsubr + endchar + + + hstemhm + 60 147 return + + + -54 52 -25 53 70 vvcurveto + 86 44 56 69 70 44 -56 -86 vhcurveto + return + + + 44 89 rlineto + 28 14 17 13 27 hhcurveto + 9 9 -2 -2 8 hvcurveto + return + + + 186 350 callgsubr + return + + + 280 callgsubr + -74 74 return + + + 185 hstem + 61 178 vstem + 150 return + + + 30 callgsubr + hstemhm + return + + + 5 21 -21 314 182 0 -20 return + + + 126 505 callsubr + vlineto + return + + + 78 hstemhm + 46 211 -109 109 return + + + vlineto + -66 -5 rlineto + -109 66 return + + + 84 hstem + 26 325 vstem + 26 return + + + hmoveto + 357 120 -210 return + + + 77 hmoveto + 380 callgsubr + return + + + 80 -38 80 266 callgsubr + return + + + 120 701 -147 return + + + 166 -157 147 return + + + 147 169 147 return + + + -21 207 127 return + + + 150 147 return + + + 335 vlineto + 520 callsubr + return + + + 21 140 callgsubr + return + + + hstem + 65 147 vstem + 344 callsubr + 431 callgsubr + return + + + 548 153 -153 222 389 callsubr + 40 91 return + + + 179 callgsubr + endchar + + + 91 108 hvcurveto + return + + + 174 141 return + + + 131 130 return + + + rlineto + 8 -15 8 return + + + 140 231 return + + + 291 callgsubr + hintmask 0011001011100000 + return + + + hlineto + hintmask 11000000 + -211 -78 hlineto + hintmask 10100000 + 102 hlineto + endchar + + + hlineto + hintmask 10100000 + 101 78 hlineto + hintmask 11000000 + -211 hlineto + endchar + + + 133 vlineto + 19 18 16 9 19 hhcurveto + 36 18 -26 -59 return + + + 42 hlineto + -34 -23 -43 -47 -59 216 callsubr + return + + + 375 432 hstem + 50 104 404 callsubr + 104 return + + + -108 hlineto + -45 -27 -44 -18 -69 -13 rrcurveto + -91 119 return + + + 30 19 35 53 20 vhcurveto + 432 callsubr + -496 vlineto + return + + + 87 214 callgsubr + return + + + 151 290 151 hintmask 11011100 + return + + + 201 -137 -201 -41 vlineto + return + + + hstem + -169 84 170 84 vstem + return + + + -97 0 120 288 120 return + + + 327 callsubr + 222 151 return + + + 4 120 callsubr + return + + + 186 callsubr + -119 75 return + + + 21 550 callgsubr + + + rmoveto + 88 63 58 78 return + + + 471 callgsubr + hlineto + return + + + 407 callgsubr + -20 return + + + hvcurveto + 405 callsubr + return + + + 572 254 hstem + return + + + 131 -123 104 return + + + -124 179 return + + + hstemhm + 77 135 return + + + hstemhm + 34 149 -149 460 hintmask 10100000 + 494 return + + + -70 -25 -53 -55 -52 vhcurveto + -103 239 115 vlineto + return + + + 61 -8 16 -14 -20 vvcurveto + -28 -25 -12 -78 -4 vhcurveto + return + + + 97 170 120 -446 -120 129 vlineto + return + + + 350 -142 -365 vlineto + -128 -42 -44 -73 return + + + -107 -26 -19 -12 -27 hhcurveto + -8 -7 2 2 -8 hvcurveto + return + + + 34 21 34 53 22 vhcurveto + return + + + 155 hstem + 161 85 return + + + 127 hstem + 46 151 return + + + 114 116 114 return + + + -51 -61 vvcurveto + -60 51 -34 return + + + -38 40 -51 -51 -38 -40 return + + + 70 166 70 return + + + 25 callgsubr + -107 return + + + 51 21 20 36 return + + + 33 callsubr + -7 return + + + hstemhm + 34 460 -149 149 hintmask 11000000 + 34 return + + + hlineto + 20 165 rlineto + -84 hlineto + -21 -165 rlineto + return + + + 47 callsubr + -35 125 rmoveto + return + + + -91 -12 126 -94 -21 529 -20 hstemhm + 1 return + + + 119 266 callgsubr + -7 99 90 150 return + + + 109 hstemhm + 48 138 22 105 -35 137 return + + + 33 callgsubr + 59 77 return + + + 25 callgsubr + -98 -21 33 186 callgsubr + return + + + vstem + 34 278 rmoveto + 376 callsubr + return + + + 54.5 -54.5 58 return + + + -141 -249 rlineto + -54 179 vlineto + endchar + + + 77 hmoveto + 490 callgsubr + return + + + 127 -81 74 hstemhm + 70 106 return + + + 139 176 139 vstem + return + + + 242 callsubr + 73 -21 return + + + -250 1000 hstem + 86 96 return + + + 91 hstem + -183 366 vstem + return + + + 194 callsubr + hstemhm + return + + + hvcurveto + 4 vlineto + hintmask 11011000 + return + + + 78 -78 164 hstemhm + return + + + 65 390 callgsubr + return + + + -234 -152 78 return + + + -184 rmoveto + 147 return + + + -2 -2 6 hvcurveto + return + + + -50 hhcurveto + -104 -105 return + + + 129 -12 -20 return + + + hlineto + hintmask 11100000 + -211 -78 hlineto + hintmask 11010000 + 102 return + + + 389 callsubr + 537 callsubr + hintmask 11011100 + return + + + 54 47 42 22 51 12 -12 137 rcurveline + return + + + 39 -26 555 hstem + 250 117 vstem + return + + + 77 hmoveto + 156 hlineto + 171 325 rlineto + return + + + 119 hstemhm + 130 177 -27 141 return + + + 47 262 rmoveto + 378 callgsubr + return + + + 55 98 55 hstem + -132 89 86 89 vstem + return + + + -17 21 413 callgsubr + return + + + vlineto + 270 callgsubr + endchar + + + 1e136c50 0b + + + 461 callsubr + endchar + + + 194 rlineto + 100 return + + + rlineto + -120 hlineto + return + + + 701 82 hstem + return + + + 191 rlineto + 96 return + + + rlineto + 165 hlineto + return + + + -108 rlineto + -8 return + + + 74 0 -20 hstemhm + return + + + hstemhm + 39 151 return + + + 13 25 40 35 45 55 5 hvcurveto + return + + + 41 vhcurveto + 19 78 -63 hlineto + -88 -40 return + + + hstem + 154 118 vstem + 140 return + + + vlineto + -86 -46 27 -67 59 32 rlineto + return + + + -93 -161 -127 hvcurveto + endchar + + + -60 48 -31 58 vhcurveto + return + + + hstem + 34 460 vstem + return + + + hlineto + -74 -6 rlineto + return + + + 73 69 81 -39 81 hstemhm + return + + + 140 hintmask 11111000 + return + + + vlineto + -62 -5 rlineto + return + + + 56 392 hstem + return + + + hintmask 0101011001000000 + 77 hmoveto + return + + + hintmask 11101010 + 77 hmoveto + return + + + 147 hintmask 11100110 + return + + + 147 -12 166 return + + + 147 -61 140 return + + + -202 -12 82 return + + + 381 -147 return + + + 77ebe712 0b + + + -148 -271 hlineto + -4 -20 -24 -3 -39 hhcurveto + -81 -36 31 90 hvcurveto + 157 -145 -157 vlineto + -175 93 -63 154 43 26 2 5 29 vhcurveto + endchar + + + 147 hintmask 11101100 + return + + + rmoveto + 22 13 15 30 15 17 -5 -10 17 vhcurveto + -35 -3 -15 -22 -31 hhcurveto + -28 -15 17 18 hvcurveto + return + + + 78 hstemhm + 31 125 -49 123 hintmask 11101000 + 235 return + + + -54 21 -21 253 124 151 124 return + + + 65 145 121 141 121 146 return + + + rmoveto + 77 35 -87 181 -99 -44 rlineto + return + + + -21 290 118 120 124 return + + + 0 157 -148 -21 99 70 return + + + hstemhm + 185 166 5 125 return + + + hintmask 1010101010000000 + return + + + hlineto + hintmask 11011110 + return + + + -50 21 -21 return + + + 77 144 164 141 163 144 return + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otc2otf_data/expected_output/SourceSansPro-It.ttx b/tests/otc2otf_data/expected_output/SourceSansPro-It.ttx new file mode 100644 index 000000000..f9eda9b0e --- /dev/null +++ b/tests/otc2otf_data/expected_output/SourceSansPro-It.ttx @@ -0,0 +1,44276 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + © 2010 - 2018 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’. + + + Source Sans Pro + + + Italic + + + 1.090;ADBO;SourceSansPro-It;ADOBE + + + Source Sans Pro Italic + + + Version 1.090;hotconv 1.0.109;makeotfexe 2.5.65596 + + + SourceSansPro-It + + + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + + + Adobe Systems Incorporated + + + Paul D. Hunt + + + http://www.adobe.com/type + + + This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an ‘AS IS’ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software. + + + http://scripts.sil.org/OFL + + + Preferred Athabaskan ogoneks + + + Slashed zero + + + Straight l + + + Alternate a + + + Alternate g + + + Serifed I + + + Titling figures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 228 -12 rmoveto + 63 55 24 28 39 hvcurveto + -30 51 rlineto + -23 -31 -40 -19 -38 hhcurveto + -85 -65 53 127 18 hvcurveto + 316 hlineto + 7 18 10 37 38 vvcurveto + 100 -41 76 -109 -127 -133 -124 -183 -130 76 -73 115 vhcurveto + -106 293 rmoveto + 94 25 70 62 71 159 callsubr + -15 -3 -15 hvcurveto + return + + + 287 -12 rmoveto + 188 131 205 201 105 callsubr + -166 80 -109 147 hvcurveto + 4 67 rmoveto + -105 -47 86 204 callsubr + 95 178 141 104 48 -85 -129 -153 -95 -179 -141 hvcurveto + return + + + rmoveto + 37 72 33 66 35 76 rrcurveto + 4 hlineto + 5 -75 7 -70 6 -69 10 -112 rcurveline + -195 hlineto + -222 -265 rmoveto + 86 hlineto + 105 205 109 callsubr + 18 -205 rlineto + 81 hlineto + -76 656 rlineto + -90 hlineto + return + + + 212 -12 rmoveto + 133 130 131 184 121 -69 74 -105 -133 -129 -131 -184 -121 68 -74 105 hvcurveto + -96 callgsubr + return + + + -102 callgsubr + endchar + + + -52 hhcurveto + -62 callsubr + -16 callsubr + hvcurveto + 28 64 -63 callgsubr + return + + + hhcurveto + -50 -22 -95 callsubr + -6 -26 -2 92 callgsubr + 33 -47 82 return + + + 14 66 rlineto + -294 23 callsubr + 239 14 callgsubr + -241 hlineto + 42 213 rlineto + 285 113 callgsubr + -362 hlineto + return + + + 300 -12 rmoveto + 75 63 27 40 48 180 callsubr + rlineto + -206 hlineto + -13 -64 rlineto + 136 hlineto + -37 -181 rlineto + -22 -26 -38 -18 -48 hhcurveto + -126 -48 89 117 159 100 182 165 53 36 -29 -42 25 hvcurveto + 55 41 rlineto + 56 -33 -54 41 -78 -23 callgsubr + return + + + 231 -12 rmoveto + 133 95 84 117 73 -36 44 -63 37 hvcurveto + -76 45 rlineto + -48 29 -37 27 51 vvcurveto + 53 45 53 74 61 46 -31 -40 34 vhcurveto + 51 46 rlineto + 53 -41 -67 39 -78 hhcurveto + -118 -86 -83 -99 -74 45 -46 56 -34 hvcurveto + 76 -46 rlineto + 49 -30 33 -30 -48 vvcurveto + -75 -61 -49 -80 -73 -57 35 58 -39 vhcurveto + -57 -43 rlineto + -78 53 76 -38 90 hhcurveto + return + + + -6 -209 rmoveto + 93 59 73 95 51 hvcurveto + 286 527 rlineto + -76 hlineto + -140 -273 -24 -46 -25 -53 -23 -46 rlinecurve + -4 hlineto + -4 46 -5 55 -7 44 -38 273 rcurveline + -76 hlineto + 83 -487 -18 -35 rlineto + -67 -33 -45 -44 -49 hhcurveto + -13 -11 3 6 -12 hvcurveto + -25 -57 rlineto + -10 19 23 -4 14 hhcurveto + return + + + rmoveto + -67 -37 48 88 136 88 111 89 67 37 -49 -88 13 callsubr + -90 hvcurveto + return + + + 26 49 -8 callgsubr + hvcurveto + 61 300 -15 callgsubr + -62 -310 rlineto + return + + + -27 -38 hhcurveto + -50 -22 26 49 -8 callgsubr + hvcurveto + 61 300 -15 callgsubr + return + + + 10 callgsubr + hintmask 01011100 + -32 callgsubr + hintmask 10101100 + -106 callgsubr + return + + + rmoveto + 116 66 138 124 87 -46 65 -77 -116 -66 -138 -124 -87 46 -65 77 hvcurveto + 5 50 rmoveto + -49 -20 45 61 96 43 112 75 49 20 -45 -61 -96 -43 -112 -75 hvcurveto + return + + + 35 hmoveto + 370 hlineto + -100 callsubr + return + + + 103 79 59 91 59 -32 33 -82 46 hvcurveto + -43 24 -43 22 40 vvcurveto + 41 36 35 51 44 34 -20 -26 25 vhcurveto + 46 40 rlineto + 40 -37 -50 26 -61 hhcurveto + -88 -73 -59 -86 -55 42 -39 61 -35 hvcurveto + 75 -42 22 -19 -35 vvcurveto + -47 -47 -34 -56 return + + + rmoveto + 79 72 60 91 70 -46 44 -65 -15 -22 -4 -11 -17 hvcurveto + 29 101 rlineto + 158 hlineto + 10 51 rlineto + -207 hlineto + -52 -187 23 -23 rlineto + 18 25 19 11 30 hhcurveto + 42 28 -28 -48 -58 -45 -38 -44 -50 -6 callgsubr + 66 hhcurveto + return + + + 286 -12 rmoveto + 117 92 74 189 37 hvcurveto + 75 370 rlineto + 75 12 58 42 76 vvcurveto + 19 -4 17 -8 21 vhcurveto + -62 -21 rlineto + 6 -16 2 -13 -13 vvcurveto + -53 -39 -32 -66 -4 vhcurveto + -31 hlineto + -81 -402 rlineto + -143 -28 -64 -56 -75 hhcurveto + -92 -41 53 94 24 3 25 6 30 hvcurveto + 75 375 110 callgsubr + -368 rlineto + -6 -33 -4 -32 -28 vvcurveto + -136 74 -71 133 vhcurveto + return + + + 139 hmoveto + 77 hlineto + 52 256 274 400 rlineto + -83 hlineto + -124 -188 -32 -48 -29 -47 -30 -49 rlinecurve + -3 hlineto + -12 50 -9 45 -12 48 -45 189 rcurveline + -80 hlineto + 107 -400 rlineto + return + + + hstem + 79 78 vstem + -105 callgsubr + return + + + -82 callsubr + endchar + + + 120 callgsubr + hintmask 11010100 + -44 callgsubr + hintmask 11101000 + 39 callsubr + hintmask 11010100 + -48 callgsubr + hintmask 11101000 + -54 callgsubr + + + 77 vstem + 35 hmoveto + -68 callgsubr + 15 -315 rmoveto + 50 253 rlineto + 96 hlineto + 96 51 -29 -72 -93 -69 -59 -125 hvcurveto + return + + + 106 2 75 34 66 vvcurveto + 36 -19 23 -86 7 vhcurveto + -23 -37 rlineto + 45 -2 18 -14 -23 vvcurveto + -29 -37 -21 -80 -3 vhcurveto + return + + + 14 callgsubr + -81 hlineto + 105 525 rlineto + 81 hlineto + 14 65 rlineto + -238 hlineto + -14 -65 rlineto + 80 hlineto + -106 -525 31 callgsubr + return + + + -73 8 -20 14 33 vvcurveto + 22 16 21 17 12 vhcurveto + -6 14 16 -3 20 hhcurveto + 117 85 85 116 24 -9 27 -15 20 hvcurveto + 96 hlineto + 12 60 rlineto + -166 hlineto + return + + + rmoveto + 56 37 38 39 40 35 -30 -76 vhcurveto + -6 vlineto + -34 -26 -34 -15 -28 hhcurveto + -39 -24 26 41 hvcurveto + 8 -271 rmoveto + 104 96 92 170 93 -56 59 -71 -69 -68 -57 -91 -61 40 -45 66 39 36 21 24 22 hvcurveto + -101 -14 -57 -55 -63 hhcurveto + -29 -21 9 18 -19 hvcurveto + -34 -38 rlineto + -25 25 33 -13 40 hhcurveto + endchar + + + rmoveto + 172 100 -37 60 -165 -116 rlineto + endchar + + + rmoveto + 86 hlineto + 125 111 -33 28 -130 150 callsubr + -90 93 -39 -25 rlineto + endchar + + + 73 13 50 33 5 55 5 55 -42 30 -87 2 -15 -53 rcurveline + 51 -3 26 -13 -2 -26 -2 -27 -23 -18 -41 -9 rrcurveto + return + + + vstem + -78 callgsubr + return + + + rmoveto + 26 22 23 28 23 -14 14 -23 57 callgsubr + 185 hmoveto + 26 22 23 28 23 -15 14 -22 57 callgsubr + return + + + rmoveto + -85 callsubr + + + -58 -377 rmoveto + -67 -50 23 55 41 51 36 40 19 hvcurveto + 21 -5 22 -4 16 -2 rrcurveto + 79 -9 40 -18 -42 vvcurveto + -53 -65 -41 -87 vhcurveto + return + + + -87 callgsubr + endchar + + + 216 -12 rmoveto + 71 50 30 27 35 hvcurveto + -34 50 rlineto + -23 -30 -35 -20 -43 hhcurveto + -77 -38 48 88 133 91 114 97 38 23 -14 -30 25 hvcurveto + 45 48 rlineto + 33 -29 -39 26 -58 hhcurveto + -141 -130 -134 -181 -124 73 -71 106 hvcurveto + return + + + 18 callgsubr + hintmask 11101000 + -85 callgsubr + hintmask 11110000 + -60 callsubr + endchar + + + rlineto + 63 -36 callgsubr + return + + + vstem + 35 hmoveto + 73 hlineto + 74 370 11 59 9 75 8 59 rlinecurve + 4 hlineto + 22 -146 61 -348 rlineto + 44 hlineto + 193 348 79 146 rlineto + 4 hlineto + -16 -57 -19 -77 -12 -59 -76 -370 rcurveline + 75 62 callsubr + -93 hlineto + -195 -354 -70 -136 1 callsubr + -22 136 -57 354 rlineto + -93 hlineto + return + + + 16 -24 -28 -23 -25 -30 -37 callsubr + return + + + hintmask 10111110 + -60 callgsubr + hintmask 01111110 + -8 -74 rlineto + 63 hlineto + 97 486 rlineto + -76 -35 callgsubr + return + + + 47 -224 53 325 52 220 60 -44 169 callgsubr + hintmask 1110101100000000 + -40 callgsubr + hintmask 1110010010000000 + -80 callsubr + hintmask 1101001010000000 + -43 callgsubr + hintmask 1110010010000000 + -9 callsubr + hintmask 1110101010000000 + 108 callsubr + hintmask 1110101100000000 + 143 callgsubr + hintmask 1101001010000000 + -47 callsubr + hintmask 1110101100000000 + -72 callsubr + return + + + hstem + 32 75 254 76 vstem + -107 callgsubr + return + + + -135 -128 -147 -187 return + + + 331 -12 61 180 52 -31 51 135 62 -61 61 hstemhm + 32 75 233 64 -49 49 258 66 hintmask 1100111010000000 + 157 -12 rmoveto + 72 65 36 60 64 hvcurveto + -54 23 60 -42 70 hhcurveto + 62 54 24 28 38 hvcurveto + -30 51 rlineto + -23 -30 -41 -19 -38 hhcurveto + -84 -52 69 111 17 hvcurveto + 304 hlineto + 6 18 11 37 38 vvcurveto + 100 -42 76 -109 -61 -61 -36 -59 -45 vhcurveto + 64 -11 -46 31 -66 hhcurveto + -59 -63 -22 -28 -51 hvcurveto + hintmask 1011010110000000 + 21 -56 rlineto + 26 46 48 18 42 hhcurveto + 60 24 -32 -59 -14 -1 -12 -4 -18 hvcurveto + -186 -6 -132 -51 -138 vvcurveto + hintmask 1100111010000000 + -76 57 -42 68 vhcurveto + 28 61 rmoveto + -45 -33 26 47 hvcurveto + hintmask 1010111010000000 + 81 88 43 145 4 vhcurveto + -7 -43 0 -30 5 -42 rrcurveto + hintmask 1100111010000000 + -58 -55 -57 -28 -41 hhcurveto + 230 232 rmoveto + 94 24 68 62 61 159 callsubr + -14 -3 -16 hvcurveto + return + + + 76 31 -32 -39 -44 -38 -28 -47 -44 -6 callgsubr + 65 hhcurveto + return + + + rmoveto + 70 49 51 60 53 -41 29 -55 -69 -49 -51 -60 -53 41 -29 54 hvcurveto + 5 36 rmoveto + -31 -17 20 29 39 28 33 33 31 18 -21 -28 -39 -28 -33 -34 hvcurveto + endchar + + + rmoveto + 60 47 44 79 16 163 callgsubr + -44 -13 -21 -23 -26 -45 -17 72 -69 hhcurveto + return + + + 31 hmoveto + 76 hlineto + -39 callsubr + -61 -300 rlineto + 77 hlineto + 62 310 rlineto + 5 27 3 17 23 vvcurveto + 75 -34 46 -81 -50 -60 -36 -59 -62 vhcurveto + 53 -7 -28 42 -77 hhcurveto + -51 -57 179 callgsubr + return + + + rmoveto + 52 hlineto + 484 684 rlineto + -52 hlineto + return + + + 15 -22 -28 -23 -26 -29 -37 callsubr + return + + + -191 -5 -132 -52 -138 vvcurveto + return + + + -51 callgsubr + hintmask 10101111 + return + + + 62 -203 51 140 200 callgsubr + -25 61 218 76 hintmask 11110110 + 157 -203 -34 callsubr + 35 28 47 45 27 hvcurveto + 31 20 28 19 36 24 rrcurveto + 55 callsubr + hintmask 11111010 + 165 callsubr + 2 hlineto + hintmask 11110110 + -37 -31 -36 -45 -48 vvcurveto + -45 32 -22 43 vhcurveto + hintmask 11111010 + 189 453 rmoveto + -27 -135 rlineto + -43 -49 -44 -23 -41 hhcurveto + -45 -33 23 50 81 88 43 151 4 hvcurveto + return + + + rlineto + 6 27 2 17 23 vvcurveto + 75 -33 46 -82 return + + + -60 -47 -45 -78 -16 hvcurveto + 54 -4 rlineto + 43 13 22 24 25 hhcurveto + return + + + vstem + -1 hmoveto + 426 hlineto + 15 66 rlineto + -331 hlineto + 422 544 10 46 rlineto + -393 hlineto + -14 -65 rlineto + 300 hlineto + -425 -544 rlineto + return + + + -3 -9 -3 0 -4 hhcurveto + -10 -7 6 12 4 0 5 2 10 hvcurveto + return + + + 65 430 rmoveto + -48 -30 36 56 73 54 71 73 48 29 -37 -55 -73 -54 -71 -72 hvcurveto + return + + + 65 hlineto + 29 126 43 110 124 120 4 34 rcurveline + -261 hlineto + -10 -51 rlineto + 193 hlineto + -98 -104 -56 -106 -33 -129 rrcurveto + return + + + -24 callsubr + 125 callgsubr + + + rmoveto + 75 32 58 65 92 vvcurveto + 43 -22 25 -31 -33 -22 -27 -30 -29 21 -16 29 148 callgsubr + -36 -34 -51 -62 -31 vhcurveto + return + + + rmoveto + 28 23 26 28 26 -18 -55 callsubr + return + + + -7 -15 -17 -8 -19 hhcurveto + -46 -16 20 40 13 1 11 2 12 hvcurveto + return + + + 105 hmoveto + 92 hlineto + 118 266 20 46 19 49 20 48 rlinecurve + 4 hlineto + 1 -48 1 -49 1 -46 14 -266 rcurveline + 95 hlineto + 221 486 rlineto + -72 hlineto + return + + + 107 -12 -31 callgsubr + return + + + 22 callsubr + 57 51 27 29 hhcurveto + 48 68 callgsubr + 22 callsubr + 58 51 27 28 hhcurveto + 48 23 -53 callgsubr + return + + + -24 callgsubr + -49 -53 -30 -51 hhcurveto + return + + + -25 17 -15 23 hvcurveto + return + + + 30 11 14 23 hvcurveto + -16 38 rlineto + -8 -13 -11 84 callgsubr + return + + + -48 callsubr + 125 623 -15 callgsubr + return + + + rmoveto + 23 31 11 14 22 hvcurveto + -16 38 rlineto + -8 -12 -12 -4 -13 173 callgsubr + 23 return + + + -123 -619 rlineto + -4 -17 -2 -14 -11 vvcurveto + -40 22 -23 43 vhcurveto + return + + + 62 -12 61 201 51 135 62 return + + + -40 callsubr + 179 51 -2 callgsubr + 13 518 -62 callgsubr + return + + + 194 callgsubr + 78 -7 callgsubr + return + + + -14 -68 -8 -76 -8 -65 rrcurveto + 20 callsubr + return + + + rmoveto + 48 36 -114 177 -66 -49 rlineto + endchar + + + -17 286 rlineto + -75 hlineto + -128 -286 -21 -46 -17 -45 -20 -45 rlinecurve + -4 hlineto + -1 45 -1 45 -1 46 -16 286 rcurveline + -76 hlineto + return + + + -12 61 180 52 156 61 return + + + -97 387 45 -37 37 126 38 82 46 hstemhm + 86 56 159 57 hintmask 10111100 + 86 465 rmoveto + -50 36 -28 45 35 41 20 26 26 vhcurveto + 4 hlineto + hintmask 01111100 + -4 -38 rlineto + 47 hlineto + 37 187 rlineto + 2 15 3 17 13 vvcurveto + 69 -37 28 -66 -40 -42 -14 -18 -35 vhcurveto + 18 -41 rlineto + 15 32 28 12 28 hhcurveto + 40 17 -20 -37 -8 -1 -6 -3 -11 hvcurveto + hintmask 10111100 + -121 -5 -90 -34 -92 vvcurveto + 205 93 rmoveto + -17 -82 rlineto + -27 -29 -29 -17 -29 hhcurveto + -26 -19 14 30 52 58 27 91 3 hvcurveto + endchar + + + rmoveto + 28 24 23 30 26 -17 -66 callsubr + return + + + 194 callsubr + 13 67 rlineto + -459 hlineto + -13 -67 181 callgsubr + return + + + 171 -220 rmoveto + 121 78 70 127 26 hvcurveto + return + + + 109 callgsubr + 62 312 203 callsubr + -63 -312 rlineto + 78 62 callsubr + -77 hlineto + -56 -277 rlineto + -296 hlineto + 56 277 31 callgsubr + return + + + rmoveto + hintmask 01010000 + 70 26 45 51 68 vvcurveto + 32 -17 21 -25 vhcurveto + hintmask 01100000 + -26 -23 -16 -32 -23 17 -14 20 20 callgsubr + hintmask 10010000 + -6 -36 -28 -24 -42 -17 rrcurveto + endchar + + + rmoveto + 44 20 rlineto + -21 48 -8 69 54 vvcurveto + 117 41 105 89 110 vhcurveto + -38 22 rlineto + -104 -121 -45 -97 -135 vvcurveto + -71 16 -66 26 -55 vhcurveto + endchar + + + vstem + -10 callsubr + return + + + 97 37 34 -21 -51 return + + + -114 55 -62 85 return + + + 50 -86 64 256 57 232 63 hstemhm + 327 76 -37 78 hintmask 11110000 + 174 -86 rmoveto + 132 97 80 123 69 -42 48 -65 24 hvcurveto + 4 vlineto + hintmask 11101000 + 93 28 55 67 83 vvcurveto + 87 -60 59 -106 -62 -61 -22 -41 -54 vhcurveto + 40 -51 rlineto + 31 37 48 20 39 hhcurveto + 67 34 -40 -57 -62 -52 -73 -157 hvcurveto + -12 -57 rlineto + hintmask 11110000 + 133 49 -50 -68 -78 -64 -60 -92 -65 -47 42 44 -30 hvcurveto + -51 -40 rlineto + -59 41 69 -51 86 hhcurveto + endchar + + + 189 callsubr + hstem + 79 78 517 66 vstem + -88 callsubr + return + + + rmoveto + 43 37 -122 140 -55 -50 rlineto + endchar + + + 73 -211 54 157 170 callgsubr + 129 65 vstem + 207 124 callsubr + 45 57 74 60 hvcurveto + 94 hlineto + -100 callsubr + -131 -656 181 callgsubr + -52 -34 -44 -55 -53 vvcurveto + -45 33 -24 45 vhcurveto + return + + + 373 0 66 128 62 56 134 callsubr + -59 59 hstemhm + -33 861 hintmask 11110100 + 313 380 rmoveto + hintmask 11101100 + 50 73 49 70 50 74 rrcurveto + 3 hlineto + -68 -341 rlineto + -168 hlineto + -262 -256 rmoveto + 89 hlineto + 131 194 rlineto + 198 hlineto + -39 -194 rlineto + 359 204 callgsubr + -282 23 callsubr + 228 204 callgsubr + -229 hlineto + hintmask 11110100 + 42 213 rlineto + 273 hlineto + 14 65 rlineto + -402 hlineto + return + + + 35 hmoveto + 354 hlineto + 13 122 callgsubr + 118 590 31 callgsubr + return + + + -36 -25 -22 -32 -33 vvcurveto + -26 12 -25 19 -14 vhcurveto + -2 vlineto + return + + + 131 656 rlineto + return + + + 72 16 74 59 89 vvcurveto + 95 -77 50 -126 vhcurveto + -175 hlineto + 21 -282 rmoveto + 44 221 rlineto + 91 hlineto + 99 44 -35 -60 -74 -59 -52 -125 hvcurveto + -157 -313 rmoveto + 52 256 rlineto + 116 hlineto + return + + + 117 callsubr + hstem + 57 80 -70 callgsubr + return + + + -58 callsubr + hintmask 11111000 + -50 callsubr + hintmask 11101000 + 66 callgsubr + + + 50 -5 19 -13 -25 vvcurveto + -3 -32 -36 -19 -80 -3 rrcurveto + endchar + + + -29 23 -16 26 vhcurveto + endchar + + + 50 -86 63 298 59 174 66 hstem + 331 77 vstem + 168 -86 rmoveto + 125 115 95 152 113 -71 60 -96 -33 -28 -8 -12 -23 hvcurveto + 54 194 rlineto + 232 14 callgsubr + -300 hlineto + -81 -306 33 -26 rlineto + 22 41 24 11 42 hhcurveto + 69 46 -44 -83 -104 -75 -67 -84 -74 -39 42 43 -29 hvcurveto + -50 -40 rlineto + -61 39 61 -47 88 hhcurveto + endchar + + + 140 callgsubr + 85 59 vstem + 179 387 rmoveto + 41 39 21 34 32 20 callgsubr + -6 -47 rlineto + 47 hlineto + 63 321 rlineto + -45 hlineto + -14 -39 1 callsubr + 32 -16 -27 15 -31 hhcurveto + -91 -86 -97 -122 -77 38 -41 56 hvcurveto + 19 48 rmoveto + -31 -23 24 53 86 60 78 60 22 21 -12 -33 18 hvcurveto + -26 -134 rlineto + -39 -30 -39 -23 -32 hhcurveto + endchar + + + rmoveto + 49 7 48 20 8 50 10 46 -40 24 -78 3 -13 -41 rcurveline + 49 -2 19 -11 -5 -27 -4 -21 -21 -9 -26 -6 rrcurveto + return + + + rlineto + -4 hlineto + return + + + 287 -12 rmoveto + 188 131 205 201 90 -24 74 -46 48 hvcurveto + return + + + 47 -224 53 325 52 220 60 -44 56 return + + + 61 47 27 38 hhcurveto + 50 return + + + 18 -209 62 633 15 callgsubr + return + + + vstem + 12 callgsubr + return + + + 50 95 61 334 84 0 -20 hstemhm + -9 447 hintmask 10110000 + 85 156 rmoveto + 189 229 rlineto + hintmask 11010000 + 25 32 25 36 27 37 rrcurveto + 4 hlineto + -10 -44 -13 -46 -7 -37 -42 -207 rcurveline + -46 -230 rmoveto + 72 hlineto + 34 169 rlineto + 82 hlineto + 12 61 rlineto + -82 hlineto + 83 418 rlineto + -84 hlineto + -353 -428 -10 -51 rlineto + 280 hlineto + endchar + + + 80 21 -21 205 134 callgsubr + return + + + 81 callgsubr + hstemhm + 35 579 hintmask 01011000 + 61 callgsubr + hintmask 01101000 + -69 callgsubr + hintmask 10011000 + -29 callsubr + return + + + -95 116 -38 -31 rlineto + endchar + + + 1 callgsubr + 56 rlineto + 13 -25 -26 82 callsubr + return + + + 186 -12 115 callgsubr + return + + + -136 -87 -110 return + + + rlineto + -254 hlineto + return + + + 43 132 callsubr + hintmask 11111010 + 43 callgsubr + hintmask 11110110 + -41 -15 49 -63 hhcurveto + -55 -29 -40 -51 -11 hvcurveto + 43 -5 rlineto + 29 10 13 17 24 hhcurveto + hintmask 11111010 + 41 14 -50 63 hhcurveto + endchar + + + -39 -21 42 -58 hhcurveto + -47 -28 -37 -52 -14 hvcurveto + 42 -4 rlineto + 29 11 10 13 20 hhcurveto + return + + + -127 -286 -21 -46 -16 -45 -19 -45 rlinecurve + -4 hlineto + -2 45 -1 45 -2 46 rrcurveto + return + + + rmoveto + 108 58 77 74 18 hvcurveto + return + + + -21 486 -20 return + + + -4 hlineto + -42 137 -150 420 31 callgsubr + return + + + 73 0 49 callgsubr + return + + + 69 344 rlineto + 61 return + + + hlineto + 51 246 rlineto + return + + + hintmask 10111111 + -60 callgsubr + hintmask 01111111 + 83 callgsubr + hintmask 10111111 + -104 callgsubr + vhcurveto + return + + + -12 rmoveto + 126 114 96 152 111 -71 57 -96 -33 -28 -9 -11 -23 hvcurveto + 52 188 rlineto + 233 204 callgsubr + -299 hlineto + -80 -301 33 -26 rlineto + 23 42 24 10 41 hhcurveto + 69 46 -40 -82 -103 -75 -67 -83 -75 -39 41 44 -29 hvcurveto + -50 -41 rlineto + -60 39 62 -48 87 hhcurveto + endchar + + + 218 105 rmoveto + 47 26 38 51 14 hvcurveto + -43 4 rlineto + -29 -10 -10 -13 -19 hhcurveto + return + + + -44 -217 rlineto + return + + + 33 callsubr + rlineto + return + + + 60 hlineto + 77 390 rlineto + -47 hlineto + return + + + 55 61 31 38 42 return + + + 70 15 52 45 75 vvcurveto + 19 -3 17 -8 21 vhcurveto + -63 -22 rlineto + return + + + -32 -21 -26 -10 -52 -8 rrcurveto + return + + + 15 73 rlineto + 57 11 31 36 47 hhcurveto + 26 18 -8 -9 16 hvcurveto + 27 56 rlineto + 13 -27 -27 10 -39 hhcurveto + -84 -55 -59 -98 -21 hvcurveto + -14 -71 -65 -5 return + + + -49 -217 rmoveto + 84 41 63 93 19 hvcurveto + 111 547 -15 callgsubr + -111 -548 59 callgsubr + return + + + hmoveto + 35 176 rlineto + 83 129 callsubr + -83 hlineto + 80 400 rlineto + -84 hlineto + -350 -410 -9 -52 rlineto + 279 hlineto + -35 -176 rlineto + -150 238 rmoveto + 182 212 rlineto + hintmask 11101000 + 27 32 26 35 27 37 rrcurveto + 4 hlineto + -10 -44 -13 -45 -8 -38 -38 -189 rcurveline + endchar + + + rmoveto + 104 120 45 97 136 vvcurveto + 70 -17 67 -26 55 vhcurveto + -43 -21 rlineto + 21 -48 8 -69 -54 vvcurveto + -117 -41 -105 -90 -110 vhcurveto + endchar + + + vstem + 200 -12 rmoveto + 142 120 204 239 124 -56 95 -100 -142 -122 -207 -238 -125 57 -92 101 hvcurveto + return + + + hlineto + 17 83 rlineto + 57 11 1 callgsubr + return + + + -47 -22 -48 -43 -56 vvcurveto + -61 51 -42 70 vhcurveto + return + + + rmoveto + 147 125 204 239 122 -59 97 -107 -147 -127 -207 -238 -122 59 -95 109 hvcurveto + 4 61 rmoveto + -69 -31 65 88 180 88 206 109 68 32 -65 -89 -181 -89 -204 -108 hvcurveto + endchar + + + -68 callsubr + -76 hlineto + return + + + rmoveto + 130 131 -50 36 -119 -142 rlineto + 199 -25 rmoveto + 130 131 -50 36 -119 -142 rlineto + endchar + + + 20 61 rlineto + 3 hlineto + -44 23 42 -29 52 hhcurveto + -3 64 rmoveto + -38 -34 21 51 -27 hvcurveto + return + + + vstem + 33 -206 -34 callsubr + 42 32 40 56 36 hvcurveto + 27 callgsubr + -97 -486 rlineto + 18 hlineto + -37 -26 -54 -55 -58 161 callgsubr + return + + + 12 112 rlineto + 4 hlineto + 38 -204 rlineto + 34 hlineto + 118 204 rlineto + 4 hlineto + -31 -112 -28 -140 rlineto + 54 hlineto + 62 310 rlineto + -70 hlineto + -70 -115 -41 -81 1 callsubr + -11 81 -22 115 rlineto + -69 hlineto + endchar + + + -63 callgsubr + -49 -53 -30 -51 hhcurveto + return + + + 55 53 3 hvcurveto + -49 -8 rlineto + -74 -7 return + + + 79 -79 112.5 return + + + 543 186 -86 86 hstemhm + 95 92 hintmask 10100000 + 79 543 rmoveto + hintmask 01100000 + 77 27 31 48 55 vvcurveto + 32 -17 24 -26 -27 -22 -17 -31 -22 18 -16 19 3 3 0 1 4 vhcurveto + -9 -30 -20 -22 -44 -17 rrcurveto + endchar + + + 21 callgsubr + hintmask 10100000 + 32 callsubr + hintmask 01100000 + 101 callsubr + endchar + + + 188 callgsubr + 62 callgsubr + return + + + -346 -12 684 hstem + -211 536 vstem + -211 107 callsubr + endchar + + + hstemhm + -15 68 18 66 -58 71 172 76 -44 68 return + + + 76 hlineto + 27 callgsubr + return + + + 23 callgsubr + 62 hlineto + -103 callgsubr + return + + + -29 23 -16 26 hvcurveto + endchar + + + vstem + 159 -12 rmoveto + 114 67 83 113 22 hvcurveto + 94 472 31 callgsubr + -92 -461 rlineto + -87 -17 -42 -53 -66 hhcurveto + -55 -38 29 48 -19 hvcurveto + -51 -43 rlineto + -61 28 55 -40 78 hhcurveto + return + + + 143 60 callgsubr + return + + + hvcurveto + -46 8 rlineto + -49 -18 -39 -39 -58 hhcurveto + -59 return + + + 31 hmoveto + 69 callsubr + return + + + -10 -3 -13 130 callgsubr + 24 return + + + hlineto + -8 callsubr + return + + + 43 callsubr + 46 231 87 callgsubr + return + + + -212 103 -82 -21 return + + + rmoveto + 39 hlineto + 44 155 11 57 rlineto + -54 hlineto + endchar + + + 35 hmoveto + 210 hlineto + 156 117 64 146 75 -53 42 -68 16 hvcurveto + 1 4 rlineto + return + + + -80 -42 -53 -43 -49 hhcurveto + -17 -14 3 5 -10 hvcurveto + -27 -68 rlineto + -6 14 14 -3 18 hhcurveto + return + + + vstem + 60 callsubr + return + + + 76 hlineto + 143 144 callgsubr + return + + + -12 22 22 -7 31 hhcurveto + return + + + -42 callsubr + 57 278 152 callsubr + -36 -134 return + + + rlineto + 148 78 71 100 104 vvcurveto + 98 -69 54 -96 -89 -71 -43 -44 -49 vhcurveto + 31 -49 rlineto + 39 41 56 34 62 hhcurveto + 68 38 -40 -66 -74 -58 -81 -153 -77 hvcurveto + return + + + 49.5 -49.5 return + + + 41 45 27 62 33 hvcurveto + -43 28 rlineto + -43 -22 -23 -18 -29 hhcurveto + hintmask 01011000 + 131 callgsubr + return + + + rmoveto + 23 31 9 14 22 55 callgsubr + return + + + 21 115 callsubr + return + + + 99 callsubr + -116 61 -71 95 -14 vhcurveto + return + + + -21 432 66 -12 -20 return + + + rmoveto + 35 22 -85 161 142 156 -28 29 -156 -148 -11 -62 rlineto + return + + + 60.5 -50.5 64 return + + + rmoveto + 54 hlineto + 86 383 19 92 -15 callgsubr + return + + + 10 -35 hhcurveto + -82 -52 -59 -98 -20 hvcurveto + -16 -81 return + + + hmoveto + 76 hlineto + 85 424 rlineto + return + + + -92 -41 53 94 24 3 25 6 30 hvcurveto + 75 375 110 callgsubr + -368 rlineto + -6 -33 -4 -32 -28 vvcurveto + -121 60 -70 110 -14 vhcurveto + return + + + 49 -58 callgsubr + + + 151 callsubr + -85 -424 rlineto + 76 hlineto + 86 424 194 callsubr + return + + + 212 -12 rmoveto + 133 130 131 184 58 -16 47 -28 33 hvcurveto + return + + + -21 429 69 -12 -20 23 -20 return + + + 47 20 callgsubr + return + + + 118 204 rlineto + 4 hlineto + -32 -112 -28 -140 rlineto + 55 hlineto + 61 310 rlineto + -69 hlineto + -71 -115 -40 -81 1 callsubr + -11 81 return + + + 179 -12 rmoveto + return + + + rmoveto + 93 57 59 70 20 59 callsubr + -25 39 49 1 hvcurveto + -48 -8 rlineto + -70 -5 35 -59 92 hhcurveto + return + + + 571 141 callsubr + -117 -163 rlineto + 192 -25 141 callsubr + -118 -163 rlineto + endchar + + + rmoveto + 96 25 70 62 71 hhcurveto + 70 24 -53 -55 -19 -2 -15 -3 -16 hvcurveto + return + + + 57 -1 55 98 56 -27 54 return + + + -21 278 63 253 62 return + + + 98 28 66 80 98 vvcurveto + 40 -19 26 -35 -39 -25 -31 -33 -30 22 -18 30 vhcurveto + 2 hlineto + -9 -48 -39 -42 -63 -24 rrcurveto + endchar + + + hlineto + -34 -26 -55 -58 -58 vvcurveto + -45 32 -24 44 vhcurveto + return + + + -85 -65 53 125 18 hvcurveto + 316 hlineto + 6 18 11 38 39 vvcurveto + 100 -41 76 -109 -127 -133 -124 -183 return + + + -107 387 45 110 39 97 46 hstem + 86 57 172 50 vstem + return + + + -8 -39 rlineto + 90 hlineto + return + + + -217 rmoveto + 26 30 8 7 16 hvcurveto + -13 57 rlineto + -4 -10 -12 -5 -14 120 callsubr + 4 17 hvcurveto + return + + + 134 128 147 187 return + + + rmoveto + 86 -1 59 44 72 vvcurveto + 48 -42 36 -64 -5 vhcurveto + -7 -34 rlineto + 42 19 -18 -29 -47 -30 -31 -56 hvcurveto + endchar + + + 165 -80 109 -147 -188 -131 -205 -200 return + + + -19 102 callgsubr + 44 -23 -42 29 -52 hhcurveto + return + + + -12 -56 callsubr + return + + + -54 -26 -63 -42 -64 vvcurveto + return + + + rlineto + 232 hlineto + return + + + -76 56 -42 65 return + + + 516 -91 callgsubr + return + + + vvcurveto + 102 55 60 73 41 29 -25 -36 22 vhcurveto + 53 41 rlineto + 45 -29 -44 39 -67 hhcurveto + -119 -86 -85 -136 return + + + 42 -71 callsubr + + + rmoveto + 52 hlineto + 42 153 19 92 rlineto + -75 hlineto + -15 -92 rlineto + return + + + -21 656 -20 return + + + hstem + 69 793 vstem + 69 -60 rmoveto + 793 2 hlineto + -394 823 1 callsubr + -395 -823 rlineto + return + + + 158 -12 141 callgsubr + return + + + 97 486 rlineto + -62 hlineto + return + + + 42 -87 callgsubr + return + + + hhcurveto + -24 -9 13 28 15 1 9 return + + + -8 -74 rlineto + 63 hlineto + return + + + 0 150 callgsubr + return + + + 18 -31 -38 10 -44 hhcurveto + -188 -131 -205 -200 -166 80 -109 147 hvcurveto + return + + + -211 75 callsubr + return + + + rlineto + 5 26 3 17 24 vvcurveto + 74 -34 47 -82 -59 -53 -35 -48 -55 vhcurveto + -4 hlineto + 18 68 return + + + rlineto + -59 hlineto + hintmask 11010000 + -37 -23 -46 -15 return + + + -26 30 callgsubr + return + + + -11 -57 rlineto + 71 hlineto + return + + + hlineto + 12 62 rlineto + return + + + 126 callsubr + -58 190 callgsubr + -50 163 callsubr + return + + + vstem + 63 -54 rmoveto + 2 hlineto + 823 395 rlineto + 4 vlineto + -823 394 rlineto + -2 hlineto + return + + + rmoveto + 108 66 rlineto + 4 hlineto + 79 -66 38 25 -77 88 rlineto + -72 hlineto + -109 -87 rlineto + return + + + rmoveto + 23 19 19 22 22 -17 12 -18 -24 -18 -19 -22 -22 16 -12 19 hvcurveto + endchar + + + 66 213 65 return + + + rlineto + 54 hlineto + 132 70 -74 -124 -195 -106 -136 -170 hvcurveto + endchar + + + 35.5 -35.5 38 return + + + rmoveto + 51 hlineto + 66 159 33 97 rlineto + -75 hlineto + return + + + 49 111 44 161 49 return + + + rlineto + 70 callsubr + return + + + 277 0 64 345 77 return + + + rmoveto + 204 callsubr + -52 34 return + + + 49 143 41 133 48 return + + + 11 93 rlineto + -63 hlineto + return + + + -215 103 -82 -21 203 19 callgsubr + hstemhm + 56 78 25 107 return + + + -33 callsubr + endchar + + + rmoveto + 33 27 -83 89 -39 -35 rlineto + return + + + -12 61 539 62 hstem + 42 72 return + + + 307 51 -307 hlineto + return + + + -106 122 callsubr + return + + + -94 1 callsubr + return + + + -11 -57 rlineto + 63 hlineto + return + + + rlineto + 125 129 callsubr + -123 hlineto + 27 134 rlineto + -65 hlineto + return + + + -29 51 hhcurveto + 103 callsubr + 113 -55 63 -85 return + + + 3 callgsubr + 32 53 rcurveline + return + + + -10 -4 -16 hvcurveto + -39 -196 rlineto + 57 hlineto + 41 204 rlineto + 3 return + + + b6771d0b + + + 6 64 rlineto + -63 hlineto + 103 -434 rmoveto + -38 -34 20 50 -27 hvcurveto + return + + + 68 hintmask 11101000 + 222 -12 rmoveto + return + + + hhcurveto + 70 24 -53 -55 -18 -2 return + + + -21 424 62 176 62 return + + + -28 -12 59 391 60 return + + + 83 171 callgsubr + return + + + rlineto + 114 hlineto + return + + + 8 callsubr + 112 47 hstem + -53 return + + + -54 callsubr + 110 callsubr + vhcurveto + return + + + -4 -21 -23 -12 -30 -6 rrcurveto + endchar + + + 61 256 57 221 61 hstemhm + 442 76 -53 79 return + + + 258 18 callgsubr + return + + + -263 rmoveto + 67 hlineto + 30 196 rlineto + -52 hlineto + endchar + + + hstemhm + 39 77 281 78 14 64 return + + + -206 51 143 return + + + 59 187 59 return + + + 31 -29 hvcurveto + -43 -45 rlineto + -40 33 55 -39 92 hhcurveto + return + + + 52 158 61 hstemhm + 37 74 5 61 205 65 return + + + 410 58 -410 hlineto + endchar + + + 5 7 callgsubr + return + + + 31 76 callsubr + return + + + 410 57 -410 hlineto + return + + + 47 27 51 -1 50 hstemhm + return + + + hvcurveto + 57 284 return + + + 38 32 12 10 return + + + 367 -12 66 hstem + 52 78 209 76 vstem + return + + + 656 39 20 50 -8 50 hstemhm + 5 287 return + + + 11 52 24 12 59 11 54 -44 28 -74 3 return + + + -47 -28 -40 -51 -50 vvcurveto + -44 31 -23 44 vhcurveto + return + + + 29 28 -22 22 -29 -29 -22 -22 -28 -29 22 return + + + -250 1000 hstem + 95 52 return + + + vstem + 162 callsubr + return + + + 199 -12 115 callgsubr + return + + + 113 136 75 return + + + -44 32 -23 43 vhcurveto + return + + + 64 -43 -21 29 -21 return + + + -60 31 -48 85 return + + + rlineto + 191 hlineto + return + + + 5 8 -13 hvcurveto + return + + + 163 -27 554 hstem + 265 63 vstem + return + + + 44.5 -44.5 return + + + -192 -217 63 -42 -21 703 -20 return + + + 97 53 -45 -66 -102 -79 -43 -125 hvcurveto + return + + + -152 45 360 50 360 45 hstemhm + return + + + 120 21 -21 264 63 267 62 return + + + 50 10 3 201 -74 -14 rlineto + endchar + + + rlineto + 296 hlineto + return + + + 128 154 return + + + 412 vstem + 120 hmoveto + 80 hlineto + return + + + 10 36 25 6 35 15 52 hvcurveto + return + + + rlineto + -139 hlineto + endchar + + + 153 770 rlineto + return + + + -245 rmoveto + 48 hlineto + return + + + -25 -2 -18 -21 vvcurveto + return + + + 579 198 hstem + return + + + rlineto + 110 hlineto + return + + + hvcurveto + hintmask 1011111110000000 + return + + + 67 368 hstem + return + + + hlineto + 28 140 rlineto + return + + + -29 -58 -56 -60 vvcurveto + return + + + rlineto + 174 hlineto + return + + + 47 50 41 hstem + return + + + hlineto + 11 45 rlineto + return + + + hlineto + 11 52 rlineto + return + + + rlineto + 112 hlineto + return + + + rmoveto + 92 53 50 56 18 hvcurveto + -45 8 rlineto + -36 -14 -35 -33 -61 hhcurveto + -61 -23 33 36 -1 hvcurveto + -46 -8 rlineto + -56 -4 34 -50 93 hhcurveto + return + + + -12 64 292 60 168 66 hstem + return + + + rmoveto + 47 17 -65 159 -62 -27 rlineto + return + + + 67 171 62 hstem + 393 78 vstem + return + + + hintmask 1111111010000000 + return + + + hlineto + -9 -45 rlineto + return + + + 50 21 -21 return + + + + + + 198 0 56 548 56 hstem + 36 586 vstem + 36 hmoveto + 456 hlineto + 130 660 rlineto + -456 hlineto + 172 -276 rmoveto + -28 93 -40 127 rlineto + 229 hlineto + -90 -127 -67 -93 rlineto + -192 -328 rmoveto + 99 136 71 101 rlineto + 4 hlineto + 31 -101 44 -136 rlineto + -279 49 rmoveto + 94 470 75 -235 rlineto + 161 -235 rmoveto + -75 235 171 235 rlineto + endchar + + + 8 callsubr + hstem + -53 522 vstem + 227 377 -105 callsubr + endchar + + + -11 callsubr + endchar + + + 8 callsubr + hstem + -53 552 vstem + 227 377 -105 callsubr + 24 47 -78 callsubr + + + 8 callsubr + 49 53 hstem + 235 52 vstem + 227 377 -105 callsubr + 54 85 callsubr + + + 8 callsubr + 136 45 hstem + -53 559 vstem + 227 377 -105 callsubr + -59 113 callsubr + + + 8 callsubr + 59 95 hstem + 230 91 95 90 vstem + 227 377 -105 callsubr + -33 8 callgsubr + + + 8 callsubr + hstem + -53 522 vstem + 227 377 -105 callsubr + 74 37 -13 callsubr + + + 8 callsubr + 73 54 hstem + -53 554 vstem + 227 377 -105 callsubr + -69 73 -29 callgsubr + endchar + + + 80 -211 54 178 -21 205 134 callgsubr + hstem + 306 65 6 callsubr + 215 -476 75 callsubr + 39 34 44 64 36 hvcurveto + -76 656 rlineto + -90 hlineto + -356 -656 rlineto + 86 hlineto + 105 205 109 callsubr + 18 -205 rlineto + 13 hlineto + -43 -30 -52 -55 -57 vvcurveto + -45 33 -24 45 vhcurveto + endchar + + + 80 -211 54 362 134 callgsubr + hstem + 124 65 vstem + 202 -211 rmoveto + 23 53 callgsubr + 34 26 41 45 29 hvcurveto + -24 29 rlineto + -63 -39 -49 -62 -55 vvcurveto + -45 32 -24 46 vhcurveto + 25 588 -105 callsubr + endchar + + + 8 callsubr + 44 36 106 36 hstem + 276 46 101 46 vstem + 227 377 -105 callsubr + 62 80 rmoveto + -27 -16 18 28 33 27 27 31 28 15 -19 -28 -33 -27 -26 -31 hvcurveto + -2 -36 rmoveto + 60 46 43 56 53 -41 26 -46 -59 -47 -45 -54 -54 41 -25 46 hvcurveto + endchar + + + 8 callsubr + 53 172 callgsubr + -53 608 hintmask 11110100 + 227 377 -105 callsubr + 129 53 -58 callsubr + hintmask 11111100 + -50 callsubr + hintmask 11110100 + 66 callgsubr + + + 153 0 167 callsubr + hintmask 11110000 + 66 callsubr + hintmask 11101000 + -7 callsubr + hintmask 11110000 + 199 callsubr + endchar + + + 16 callgsubr + endchar + + + 16 callgsubr + 91 715 -78 callsubr + + + 189 callgsubr + 38 45 hstem + 57 80 36 callgsubr + 83 718 -77 callsubr + + + 120 -226 39 179 63 -42 -21 609 67 hstemhm + 57 80 124 63 hintmask 10111100 + 144 -226 rmoveto + 3 callgsubr + rrcurveto + hintmask 11011100 + 32 53 76 2 58 33 47 41 rlinecurve + -66 callgsubr + -140 66 -102 122 -19 hvcurveto + -53 -82 rlineto + -4 callsubr + + + 189 callgsubr + 124 45 hstem + 57 80 36 callgsubr + 8 710 -71 callsubr + + + 189 callgsubr + 48 103 hstem + 57 80 233 107 36 callgsubr + 129 728 -100 callgsubr + -26 -32 56 callsubr + + + 162 0 64 529 63 hstem + 487 -59 callgsubr + endchar + + + 162 0 64 529 63 50 45 hstem + 487 -59 callgsubr + 132 642 -77 callsubr + + + -14 callgsubr + + + 135 122 callsubr + hstem + -19 508 vstem + -19 hmoveto + 499 hlineto + 9 45 -77 611 rlineto + -90 hlineto + -332 -611 rlineto + 255 332 rmoveto + 37 72 34 66 35 76 rrcurveto + 4 hlineto + 5 -75 7 -70 5 -69 34 -311 rcurveline + -327 hlineto + endchar + + + -11 callgsubr + endchar + + + -11 callgsubr + 168 47 -78 callsubr + + + 21 callsubr + 49 53 hstem + 242 52 -86 callgsubr + 198 85 callsubr + + + 21 callsubr + 50 45 hstem + 35 502 -86 callgsubr + 160 50 -77 callsubr + + + 21 callsubr + 136 45 hstem + 35 493 -86 callgsubr + 85 113 callsubr + + + 21 callsubr + 59 95 hstem + 237 91 95 90 -86 callgsubr + 111 8 callgsubr + + + 21 callsubr + 60 103 hstem + 323 107 -86 callgsubr + 206 60 -100 callgsubr + -26 -32 56 callsubr + + + -11 callgsubr + 218 37 -13 callsubr + + + 44 callgsubr + 75 73 -29 callgsubr + endchar + + + 73 -211 54 157 170 callgsubr + 228 65 vstem + 306 -211 rmoveto + 24 30 9 14 22 hvcurveto + -17 42 rlineto + -8 -13 -10 -3 -12 173 callgsubr + 24 42 51 70 61 7 hvcurveto + -100 callsubr + -131 -656 rlineto + 287 hlineto + -38 -26 187 callgsubr + + + -12 callsubr + endchar + + + -14 callgsubr + + + 50 -12 64 188 42 -42 45 70 41.5 -41.5 44 191 63 hstemhm + 82 77 -75 77 hintmask 10101110 + 271 -12 rmoveto + 66 56 28 46 49 hvcurveto + -38 47 rlineto + -32 -33 -39 -25 -47 hhcurveto + -77 -48 66 122 -1 hvcurveto + 202 213 callgsubr + hintmask 10101101 + -210 hlineto + 2 24 3 24 5 22 rrcurveto + 252 hlineto + 9 44 rlineto + -250 hlineto + 112 35 70 79 83 hhcurveto + 47 25 -29 -41 20 hvcurveto + 58 37 rlineto + 53 -28 -42 43 -73 hhcurveto + hintmask 10110101 + -119 -108 -102 -153 -45 hvcurveto + -53 -3 rlineto + hintmask 11001101 + -9 -40 rlineto + 51 hlineto + -5 -23 -3 -23 -2 -25 rrcurveto + hintmask 11001110 + -54 -4 rlineto + hintmask 10101110 + -10 -40 rlineto + 62 hlineto + -164 1 73 -88 115 hhcurveto + endchar + + + 229 callgsubr + hstem + 35 493 109 callgsubr + 60 297 rlineto + 240 204 callgsubr + -241 hlineto + 45 228 rlineto + 285 113 callgsubr + -362 hlineto + endchar + + + -6 callsubr + endchar + + + 117 callsubr + 37 53 hstem + 57 80 152 52 -70 callgsubr + 111 717 -58 callgsubr + + + 117 callsubr + 38 45 hstem + 57 80 -70 callgsubr + 73 718 -77 callsubr + + + 117 callsubr + 124 45 hstem + 57 80 -70 callgsubr + -2 710 -71 callsubr + + + 117 callsubr + 48 103 hstem + 57 80 233 107 -70 callgsubr + 119 728 -100 callgsubr + -26 -32 56 callsubr + + + 192 21 51 callsubr + endchar + + + 224 21 -21 312 67 110 73 callsubr + 51 -51 167 hstemhm + 50 633 hintmask 11010100 + 50 hmoveto + 78 hlineto + 62 312 203 callsubr + -63 -312 rlineto + 78 hlineto + 98 489 rlineto + 73 hlineto + 11 51 rlineto + -74 hlineto + hintmask 11001100 + 23 116 -15 callgsubr + hintmask 11010100 + -23 -116 rlineto + -296 hlineto + hintmask 11001100 + 23 116 31 callgsubr + hintmask 11100100 + -23 -116 -73 -3 rlineto + hintmask 11010100 + -10 -48 rlineto + 73 hlineto + 55 -110 rmoveto + 22 110 203 callsubr + -22 -110 rlineto + endchar + + + 192 21 188 callgsubr + 156 45 62 callgsubr + 120 113 callsubr + + + 70 callgsubr + hstem + 35 209 -13 callgsubr + endchar + + + 149 callsubr + hstem + -7 370 -75 callsubr + endchar + + + 70 callgsubr + hstem + 35 326 -13 callgsubr + 23 47 -78 callsubr + + + 149 callsubr + hstem + -7 404 -75 callsubr + 218 637 -78 callsubr + + + 70 callgsubr + 156 45 hstem + 35 333 -13 callgsubr + -60 113 callsubr + + + 149 callsubr + 137 45 hstem + -7 411 -75 callsubr + 135 633 -71 callsubr + + + 70 callgsubr + 79 95 hstem + 92 91 95 90 -13 callgsubr + -34 8 callgsubr + + + 149 callsubr + 59 95 hstem + 128 91 95 90 -75 callsubr + 161 649 -76 callgsubr + + + 70 callgsubr + 80 103 hstem + 178 107 -13 callgsubr + 61 60 -100 callgsubr + -26 -32 56 callsubr + + + 149 callsubr + 60 103 hstem + 214 107 -75 callsubr + 256 650 -100 callgsubr + -26 -32 56 callsubr + + + 70 callgsubr + hstem + 35 247 -13 callgsubr + 73 37 -13 callsubr + + + 149 callsubr + hstem + -7 370 -75 callsubr + 268 627 -13 callsubr + + + 70 callgsubr + 93 54 hstem + 35 328 -13 callgsubr + -70 73 -29 callgsubr + endchar + + + 149 callsubr + 73 54 hstem + -7 406 -75 callsubr + 125 663 -29 callgsubr + endchar + + + -178 -211 54 178 115 callsubr + hstem + -39 65 vstem + 37 -211 rmoveto + 25 53 callgsubr + 39 36 49 51 31 hvcurveto + 32 callgsubr + -131 -656 rlineto + 15 98 callsubr + endchar + + + -106 -211 54 157 150 callgsubr + hstem + -1 64 vstem + 75 -211 rmoveto + 22 34 10 15 22 hvcurveto + -18 40 rlineto + -8 -12 -10 -3 -13 173 callgsubr + 24 39 37 49 50 31 hvcurveto + 80 -81 callsubr + -14 -66 rlineto + 95 98 callsubr + endchar + + + 70 callgsubr + 73 172 callgsubr + 35 382 hintmask 11101000 + 35 hmoveto + 78 hlineto + 32 callgsubr + 128 53 -5 callsubr + + + 149 callsubr + 53 172 callgsubr + -7 460 hintmask 11101000 + -78 callgsubr + 323 643 -5 callsubr + + + 26 -12 115 callgsubr + hstem + -2 458 57 callsubr + endchar + + + 26 -12 115 callgsubr + 156 45 hstem + -2 583 57 callsubr + 160 710 -71 callsubr + + + 129 76 callsubr + hstem + 35 564 0 callgsubr + endchar + + + 32 0 192 callgsubr + 35 367 -18 callsubr + endchar + + + 32 0 192 callgsubr + 35 367 -18 callsubr + 31 47 -78 callsubr + + + 32 0 192 callgsubr + 35 429 -18 callsubr + 204 -144 65 callsubr + + + 32 0 66 202 120 268 -20 hstemhm + 35 397 -113 113 hintmask 11110000 + -10 callsubr + hintmask 11101000 + 200 -388 rmoveto + -57 callgsubr + endchar + + + 32 0 192 callgsubr + -9 411 vstem + 35 hmoveto + 354 hlineto + 13 122 callgsubr + 42 211 215 103 -21 53 -180 -89 62 312 31 callgsubr + -70 -351 -105 -50 20 -53 71 35 rlineto + endchar + + + 275 21 -21 69 97 397 93 hstem + 35 665 -67 callsubr + endchar + + + 9 callsubr + endchar + + + 9 callsubr + 208 47 -78 callsubr + + + 81 callgsubr + 70 45 hstemhm + 35 579 hintmask 01011100 + 61 callgsubr + hintmask 01101100 + -69 callgsubr + hintmask 10011100 + -29 callsubr + 200 50 -77 callsubr + + + 81 callgsubr + 73 172 callgsubr + 35 579 hintmask 01011010 + 61 callgsubr + hintmask 01101010 + -69 callgsubr + hintmask 10011010 + -29 callsubr + 313 53 -58 callsubr + hintmask 01011110 + -50 callsubr + hintmask 10011010 + 66 callgsubr + + + 22 callgsubr + -97 callgsubr + endchar + + + 386 0 64 -64 49 callgsubr + -63 63 hstemhm + 60 79 hintmask 01110100 + 338 hmoveto + 380 hlineto + 14 66 rlineto + -276 23 callsubr + 221 14 callgsubr + -223 hlineto + 43 213 rlineto + 265 hlineto + 14 65 rlineto + -426 hlineto + -222 -133 -161 -239 -161 96 -95 182 hvcurveto + hintmask 10101100 + 3 64 rmoveto + -132 -70 73 124 196 106 136 170 hvcurveto + 71 hlineto + -106 -529 rlineto + endchar + + + 22 callgsubr + -97 callgsubr + 90 648 -78 callsubr + + + 22 callgsubr + 124 45 -97 callgsubr + 7 643 -71 callsubr + + + 22 callgsubr + 47 95 hstemhm + 60 79 145 91 95 90 -33 79 hintmask 11111010 + -106 callsubr + 33 660 -43 callsubr + hintmask 11111100 + -47 callgsubr + + + 22 callgsubr + -97 callgsubr + 140 638 -13 callsubr + + + -28 callgsubr + endchar + + + 22 callgsubr + -97 callgsubr + 52 651 42 callsubr + + + 22 callgsubr + 61 54 -97 callgsubr + -3 674 -29 callgsubr + endchar + + + 228 0 64 537 67 hstem + 66 77 408 81 vstem + -7 hmoveto + 226 hlineto + 10 51 rlineto + -49 44 -37 78 100 vvcurveto + 188 110 140 144 98 56 -76 -111 -170 -94 -119 -108 -74 vhcurveto + -11 -51 rlineto + 227 hlineto + 11 64 rlineto + -124 hlineto + 2 4 rlineto + 82 68 96 114 176 vvcurveto + 145 -83 97 -140 -194 -149 -164 -224 -94 36 -76 34 -42 vhcurveto + -4 -131 vlineto + endchar + + + 22 callgsubr + hstem + 60 79 388 79 vstem + 37 -30 rmoveto + 84 90 rlineto + -46 38 56 -26 72 hhcurveto + 188 131 205 201 59 -10 52 -20 43 hvcurveto + 97 104 -36 35 -89 -95 rlineto + 49 -38 -57 27 -74 hhcurveto + -188 -131 -205 -200 -61 11 -53 21 -43 hvcurveto + -95 -101 rlineto + 142 264 rmoveto + 154 95 178 141 55 40 -24 -42 25 vhcurveto + -344 -366 rlineto + -8 29 -4 34 37 vvcurveto + 152 -214 rmoveto + -54 -38 23 39 -25 hvcurveto + 342 366 rlineto + 7 -28 4 -32 -36 vvcurveto + -153 -95 -179 -141 vhcurveto + endchar + + + 22 callgsubr + 41 172 callgsubr + 60 79 388 79 hintmask 11101100 + -106 callsubr + 195 654 -58 callsubr + hintmask 11111100 + -50 callsubr + hintmask 11101100 + 66 callgsubr + + + 201 callsubr + hstem + 480 51 callgsubr + endchar + + + 203 -162 65 86 64 548 67 hstem + 60 79 388 79 vstem + 291 53 rmoveto + -105 -47 85 131 154 95 178 141 104 48 -85 -129 -156 -95 -178 -141 hvcurveto + 168 -215 rmoveto + 22 22 4 7 21 hvcurveto + -5 61 rlineto + -4 -18 -17 -3 -20 hhcurveto + -70 -61 28 58 -23 hvcurveto + 176 16 120 196 193 vvcurveto + 105 callsubr + -143 59 -101 111 -25 vhcurveto + -107 33 85 -49 111 hhcurveto + endchar + + + 202 callgsubr + hstem + 474 -83 callsubr + endchar + + + 202 callgsubr + hstem + 474 -83 callsubr + 66 362 -78 callsubr + + + 202 callgsubr + 50 45 hstem + 474 -83 callsubr + 58 365 -77 callsubr + + + 162 callgsubr + hstem + 120 79 180 80 vstem + -98 callsubr + endchar + + + 162 callgsubr + hstem + 120 79 180 80 vstem + -98 callsubr + 96 717 -78 callsubr + + + 162 callgsubr + 40 45 hstem + 120 79 180 80 vstem + -98 callsubr + 88 720 -77 callsubr + + + 162 callgsubr + 127 45 hstem + 120 79 180 80 vstem + -98 callsubr + 13 713 -71 callsubr + + + 178 callgsubr + hstem + 93 472 -30 callsubr + endchar + + + 178 callgsubr + 50 45 hstem + 93 472 -30 callsubr + 23 117 -77 callsubr + + + 132 21 -21 152 63 267 63 -63 178 hstemhm + 458 77 hintmask 11011000 + 35 hmoveto + 77 hlineto + 30 152 rlineto + 106 hlineto + 167 120 72 161 hvcurveto + hintmask 11101000 + 113 -80 47 -119 vhcurveto + -115 hlineto + hintmask 11011000 + 23 115 31 callgsubr + -10 -445 rmoveto + 52 267 rlineto + 105 hlineto + 94 51 -32 -76 -104 -72 -55 -136 hvcurveto + endchar + + + 12 callsubr + -86 callsubr + endchar + + + 12 callsubr + -86 callsubr + 91 715 -78 callsubr + + + 12 callsubr + 69 53 hstem + 79 78 128 52 vstem + -105 callgsubr + 121 717 -58 callgsubr + + + 12 callsubr + 156 45 -86 callsubr + 8 710 -71 callsubr + + + 12 callsubr + 79 95 hstem + 79 78 123 91 95 90 vstem + -105 callgsubr + 34 727 -76 callgsubr + + + 12 callsubr + -86 callsubr + 141 705 -13 callsubr + + + -14 callsubr + endchar + + + 12 callsubr + -86 callsubr + 53 718 42 callsubr + + + 12 callsubr + 93 54 -86 callsubr + -2 741 -29 callgsubr + endchar + + + 186 -211 54 147 65 -44 -21 666 -20 hstemhm + 79 78 8 65 hintmask 11011100 + 42 callgsubr + hintmask 11011000 + 84 callsubr + hintmask 10111100 + -41 -30 -43 -54 -48 vvcurveto + hintmask 11011100 + -45 32 -24 46 vhcurveto + endchar + + + 12 callsubr + 64 36 106 36 hstem + 79 78 169 46 101 46 vstem + -105 callgsubr + 127 712 65 callgsubr + + + 12 callsubr + 73 172 callgsubr + 79 78 hintmask 11101000 + -105 callgsubr + 196 721 -5 callsubr + + + 66 0 76 580 -20 hstem + 82 495 vstem + 141 hmoveto + 93 hlineto + 343 656 rlineto + -84 hlineto + -181 -364 -35 -70 -36 -76 -33 -70 rlinecurve + -4 hlineto + -4 72 -6 73 -6 71 -27 364 rcurveline + -79 hlineto + endchar + + + 108 callgsubr + 6 callgsubr + hintmask 10101100 + 95 hmoveto + 97 hlineto + 179 401 rlineto + hintmask 11010100 + -79 callgsubr + hintmask 10101100 + 10 361 rlineto + -80 hlineto + endchar + + + 108 callgsubr + 6 callgsubr + hintmask 10101100 + 95 hmoveto + 97 hlineto + 179 401 rlineto + hintmask 11010100 + -79 callgsubr + hintmask 10101100 + 10 361 rlineto + -80 hlineto + 338 47 -78 callsubr + + + 108 callgsubr + 157 45 6 callgsubr + hintmask 10110110 + 95 hmoveto + 97 hlineto + 179 401 rlineto + hintmask 11011010 + -79 callgsubr + hintmask 10110110 + 10 361 rlineto + -80 hlineto + 255 43 -71 callsubr + + + 108 callgsubr + 79 95 hstemhm + 99.5 64.5 -64.5 79.5 166 91 0 64.5 30.5 90 hintmask 1011010100000000 + 95 hmoveto + 97 hlineto + 179 401 rlineto + hintmask 1101100100000000 + -79 callgsubr + hintmask 1011011010000000 + 10 361 rlineto + -80 hlineto + 281 8 callgsubr + + + 108 callgsubr + 6 callgsubr + hintmask 10101100 + 95 hmoveto + 97 hlineto + 179 401 rlineto + hintmask 11010100 + -79 callgsubr + hintmask 10101100 + 10 361 rlineto + -80 hlineto + 388 37 -13 callsubr + + + 64 76 callsubr + hstem + -36 582 vstem + -36 hmoveto + 83 hlineto + 128 180 22 33 25 38 26 35 rlinecurve + 3 hlineto + 10 -35 11 -34 10 -33 60 -184 rcurveline + 84 hlineto + -117 334 237 322 rlineto + -82 hlineto + -120 -171 -20 -30 -23 -33 -23 -32 rlinecurve + -3 hlineto + -11 34 -7 28 -9 30 -56 174 rcurveline + -84 hlineto + 108 -316 rlineto + endchar + + + 177 callsubr + hstem + 83 459 -75 callgsubr + endchar + + + 177 callsubr + hstem + 83 459 -75 callgsubr + 102 447 -78 callsubr + + + 177 callsubr + 157 45 hstem + 83 459 -75 callgsubr + 19 443 -71 callsubr + + + 177 callsubr + 79 95 hstem + 195 91 95 90 -75 callgsubr + 45 459 -76 callgsubr + + + 177 callsubr + hstem + 83 459 -75 callgsubr + 152 437 -13 callsubr + + + 58 callgsubr + endchar + + + 58 callgsubr + 315 656 -78 callsubr + + + 82 122 callsubr + 50 45 hstem + -1 542 -49 callsubr + 307 659 -77 callsubr + + + 82 122 callsubr + 60 103 hstem + 313 107 -49 callsubr + 353 669 -100 callgsubr + -26 -32 56 callsubr + + + -40 callsubr + hstemhm + 39 79 hintmask 10101000 + -80 callgsubr + hintmask 01011000 + -32 callgsubr + hintmask 10101000 + -106 callgsubr + endchar + + + -67 callgsubr + endchar + + + -25 callsubr + + + -75 -1 callsubr + + + -40 callsubr + 251 -20 -2 callgsubr + 95 527 -81 callgsubr + + + -67 callgsubr + 99 530 -81 callgsubr + + + -40 callsubr + 105 55 96 -20 hstemhm + 39 79 78 54 -53 callsubr + 77 callgsubr + endchar + + + -32 callsubr + 73 55 hstem + 32 75 71 54 129 76 vstem + -107 callgsubr + 122 522 -84 callgsubr + + + -40 callsubr + 218 56 -2 callgsubr + -1 111 callsubr + endchar + + + -32 callsubr + 186 56 -63 callsubr + 3 519 -74 callgsubr + + + 87 211 callsubr + 269 215 vstem + 304 579 -81 callgsubr + + + -40 callsubr + 123 95 hstemhm + 39 79 83 92 94 91 -93 callsubr + hintmask 10101111 + 34 537 -45 callsubr + + + -32 callsubr + 91 95 hstemhm + 32 75 76 92 86 76 -68 91 hintmask 11111110 + -107 callgsubr + 38 540 -24 callsubr + hintmask 11111101 + 125 callgsubr + + + -61 callsubr + endchar + + + -40 callsubr + hstemhm + 39 79 hintmask 10101000 + -80 callgsubr + hintmask 01011000 + -32 callgsubr + hintmask 10101000 + -106 callgsubr + 156 518 -28 callsubr + + + -67 callgsubr + 160 521 -28 callsubr + + + -40 callsubr + 135 54 -2 callgsubr + -2 549 -72 callgsubr + + + -32 callsubr + 103 54 -63 callsubr + 2 552 -72 callgsubr + + + 152 -12 61 565 54 hstem + 15 76 72 66 151 63 vstem + 229 480 rmoveto + 78 44 56 57 35 15 -26 -30 -71 -65 -44 -75 -45 vhcurveto + -7 28 -4 28 26 vvcurveto + -49 -492 rmoveto + 72 64 28 45 56 hvcurveto + 41 -35 42 -25 40 -13 32 62 rcurveline + -31 11 -35 21 -36 29 64 69 50 84 41 88 rrcurveto + -70 hlineto + -35 -77 -39 -67 -54 -57 -50 53 -45 68 -28 70 rrcurveto + 91 57 93 60 102 vvcurveto + 61 -36 46 -72 -92 -80 -80 -112 -36 6 -38 12 -39 vhcurveto + -86 -52 -80 -62 -108 vvcurveto + -93 66 -60 99 vhcurveto + -89 163 rmoveto + 65 49 46 62 42 vhcurveto + 30 -74 46 -71 52 -57 rrcurveto + -33 -43 -47 -20 -46 hhcurveto + -61 -42 41 61 hvcurveto + endchar + + + 107 171 callsubr + 64 -43 -21 446 64 -12 -20 hstemhm + 39 79 118 61 hintmask 11010110 + 311 2 callgsubr + 44 42 43 68 31 hvcurveto + hintmask 11001110 + 118 callsubr + hintmask 11010110 + 116 callgsubr + 61 61 34 50 89 callsubr + hintmask 10110110 + -7 -66 rlineto + -51 216 callsubr + hintmask 11010110 + -44 31 -23 44 vhcurveto + -104 258 -63 callgsubr + -48 -54 -30 -51 hhcurveto + endchar + + + 62 171 callsubr + 61 201 51 135 62 hstem + 32 75 94 61 99 76 vstem + 276 -206 rmoveto + 23 31 11 14 22 hvcurveto + -16 38 rlineto + -8 -12 -12 84 callgsubr + 44 42 43 68 31 hvcurveto + -103 callgsubr + -54 callsubr + 110 callsubr + 30 callsubr + vhcurveto + 3 hlineto + -3 -51 rlineto + -52 -29 -58 -56 -60 161 callgsubr + -91 255 -95 callgsubr + endchar + + + -52 callsubr + endchar + + + 107 -203 51 140 -31 callgsubr + hstemhm + 39 79 -4 61 hintmask 10101010 + 50 callgsubr + hintmask 11010100 + 116 callgsubr + hvcurveto + 3 3 0 3 hhcurveto + hintmask 11010010 + -37 -31 -37 -45 -48 vvcurveto + hintmask 10101010 + -45 31 -22 44 vhcurveto + hintmask 11010100 + 18 255 -63 callgsubr + -48 -54 -30 -51 hhcurveto + endchar + + + 50 153 56 30 56 71 56 30 56 hstemhm + 45 406 hintmask 01111000 + 332 366 rmoveto + 74 callsubr + hintmask 01111000 + 211 callgsubr + hintmask 11011000 + -213 vmoveto + 74 callsubr + hintmask 11011000 + 211 callgsubr + endchar + + + -40 callsubr + 90 36 121 36 hstemhm + 39 79 118 52 110 52 hintmask 1010111110000000 + -80 callgsubr + hintmask 0101111110000000 + -32 callgsubr + hintmask 1010111110000000 + -106 callgsubr + 124 504 -59 callsubr + + + -32 callsubr + 58 36 121 36 hstemhm + 32 75 111 52 91 76 -57 52 226 callsubr + 153 -12 rmoveto + 30 callsubr + hvcurveto + 23 callgsubr + hintmask 1111111100000000 + 62 hlineto + -103 callgsubr + -54 callsubr + 226 callsubr + 110 callsubr + vhcurveto + 32 61 -95 callgsubr + 128 507 -59 callsubr + + + 196 callsubr + 294 -27 rmoveto + 5 hlineto + 264 262 -42 39 -193 -195 rlineto + 448 -63 -448 vlineto + -193 195 -42 -39 rlineto + endchar + + + 196 callsubr + 265 -27 rmoveto + 63 449 hlineto + 193 -195 42 39 -264 261 rlineto + -5 hlineto + -264 -261 42 -39 193 195 rlineto + endchar + + + 49 594 76 hstem + 83 354 vstem + 83 283 rmoveto + 66 hlineto + 64 178 47 133 rlineto + 3 hlineto + 45 -133 65 -178 rlineto + 64 hlineto + -146 387 rlineto + -62 hlineto + endchar + + + 50 260 56 30 56 hstemhm + 45 406 vstemhm + 332 260 rmoveto + 41 45 27 62 33 hvcurveto + -43 28 rlineto + -43 -22 -23 -18 -29 hhcurveto + hintmask 01100000 + 131 callgsubr + hintmask 11100000 + 211 callgsubr + endchar + + + -27 422 291 hstem + 125 288 vstem + 176 434 rmoveto + 80 76 52 -88 40 23 -38 97 103 31 -7 43 -103 -14 8 107 -44 4 -25 -106 -99 33 -18 -40 88 -49 -69 -88 rlineto + endchar + + + 384 -155 52 150 53 -44 53 267 53 164 51 hstemhm + 45 57 142 61 172 47 198 55 hintmask 1101111110000000 + 352 -155 rmoveto + 55 55 14 29 54 hvcurveto + -23 46 rlineto + -24 -39 -47 -13 -49 hhcurveto + -140 -116 99 178 238 189 181 182 172 77 -110 -145 -153 -76 -85 -65 -53 -13 42 62 14 hvcurveto + 50 217 rlineto + -51 hlineto + -13 -43 rlineto + -2 hlineto + 33 -17 -25 18 -31 hhcurveto + -108 -88 -120 -118 213 callsubr + -86 54 -49 61 44 40 29 38 31 205 callgsubr + 34 -29 47 hhcurveto + 108 102 106 195 171 -108 125 -189 -224 -211 -207 -274 -202 135 -116 172 213 callsubr + 21 264 rmoveto + -39 -29 29 60 78 56 100 79 22 19 -11 -34 18 hvcurveto + -36 -161 rlineto + -42 -31 -30 -19 -29 hhcurveto + endchar + + + 372 -21 50 120 52 -44 53 239 53 135 49 hstemhm + 98 56 125 60 158 48 170 53 hintmask 1101111110000000 + 368 -21 rmoveto + 51 57 11 30 51 hvcurveto + -14 43 rlineto + -23 -39 -49 -11 -48 hhcurveto + -132 -91 85 148 214 170 161 169 152 70 -92 -126 -139 -61 -79 -55 -50 -13 41 62 15 hvcurveto + 45 192 rlineto + -50 hlineto + -14 -43 rlineto + -2 hlineto + 33 -16 -24 16 -30 hhcurveto + -102 -79 -108 -105 213 callsubr + -85 48 -47 56 41 41 28 38 29 205 callgsubr + 32 -27 46 hhcurveto + 97 87 97 179 150 -93 111 -177 -205 -195 -180 -255 -168 113 -104 157 213 callsubr + 30 231 rmoveto + -33 -26 27 59 67 48 86 72 21 18 -9 -35 17 hvcurveto + -30 -135 rlineto + -42 -30 -29 -18 -28 hhcurveto + endchar + + + -40 callsubr + 111 147 callgsubr + 39 79 hintmask 1010010010000000 + -80 callgsubr + hintmask 0101010010000000 + -32 callgsubr + hintmask 1010010010000000 + -106 callgsubr + hintmask 1010101010000000 + 201 525 33 callgsubr + hintmask 1010100110000000 + -52 callgsubr + hintmask 1010010010000000 + -61 callgsubr + hintmask 1010101010000000 + 52 callgsubr + + + -32 callsubr + 79 59 26 59 hstemhm + 32 75 254 76 hintmask 11101110 + -107 callgsubr + hintmask 11111110 + 205 528 33 callgsubr + -52 callgsubr + hintmask 11101110 + -61 callgsubr + hintmask 11111110 + 52 callgsubr + + + 106 139 callgsubr + 214 -20 hstemhm + 417 79 hintmask 10111000 + 86 callgsubr + hintmask 01111000 + -142 -712 rlineto + 63 hlineto + hintmask 10111000 + 63 callsubr + endchar + + + -70 140 callgsubr + 339 58 vstem + 220 387 rmoveto + 198 callgsubr + -35 -19 -26 -30 hvcurveto + -3 hlineto + 16 66 24 118 rlineto + -58 hlineto + -93 -468 rlineto + 46 hlineto + 13 39 rlineto + 4 hlineto + -32 16 28 -15 30 hhcurveto + -1 48 rmoveto + -22 -22 12 168 callgsubr + 31 24 -24 -53 -86 -60 -78 -60 hvcurveto + endchar + + + -90 -160 870 hstem + 88 169 vstem + 203 -160 rmoveto + 54 hlineto + -117 870 rlineto + -52 hlineto + endchar + + + -199 187 callsubr + vstem + 95 -250 rmoveto + 52 1000 -52 hlineto + endchar + + + -140 200 callsubr + 47 63 -8 60 hintmask 11110000 + 135 -152 rmoveto + 44 213 callgsubr + -24 hlineto + -43 -12 16 33 hvcurveto + hintmask 11101000 + 63 52 137 70 vvcurveto + 29 -12 21 -32 11 vhcurveto + 4 vlineto + 47 12 24 35 13 65 12 61 7 62 11 57 rrcurveto + 64 13 18 30 53 hhcurveto + 26 213 callgsubr + -46 hlineto + -80 -34 -31 -104 -20 hvcurveto + -14 -68 -5 -59 -12 -64 rrcurveto + -37 -8 -22 -42 -68 hhcurveto + -11 -50 rlineto + 57 13 -28 -28 hvcurveto + hintmask 11110000 + -58 -55 -137 -74 vvcurveto + -56 26 -24 62 vhcurveto + endchar + + + -137 200 callsubr + 137 61 -9 64 hintmask 11101000 + -52 -152 rmoveto + 46 hlineto + hintmask 11110000 + 78 35 30 103 21 hvcurveto + 14 69 5 60 12 64 rrcurveto + 37 7 22 42 69 hhcurveto + 11 50 rlineto + -58 -12 28 26 hvcurveto + hintmask 11101000 + 59 55 138 74 vvcurveto + 54 -26 26 -63 vhcurveto + -44 hlineto + -10 -45 rlineto + 25 hlineto + 42 12 -16 -34 hvcurveto + hintmask 11110000 + -63 -52 -137 -69 vvcurveto + -29 11 -21 33 -11 vhcurveto + -4 vlineto + -47 -12 -23 -35 -14 -66 -11 -62 -8 -61 -11 -57 rrcurveto + -65 -12 -19 -28 -53 hhcurveto + -26 hlineto + endchar + + + -138 160 callgsubr + 8 341 vstem + 8 -152 rmoveto + 169 219 callsubr + -112 hlineto + 208 callsubr + 113 hlineto + 7 45 rlineto + -169 hlineto + endchar + + + -138 160 callgsubr + -49 343 vstem + -49 -152 rmoveto + 171 hlineto + 172 860 219 callgsubr + -8 -45 221 callsubr + -155 -770 rlineto + -111 hlineto + endchar + + + 87 571 55 hstem + 198 54 vstem + 327 571 -84 callgsubr + + + -199 187 callsubr + vstem + 95 289 rmoveto + 52 461 -52 hlineto + -1000 vmoveto + 52 463 -52 hlineto + endchar + + + -135 145 238 hstem + 41 217 vstem + 139 145 rmoveto + 72 47 67 66 61 -42 44 -55 -74 -46 -69 -64 -62 41 -43 57 hvcurveto + endchar + + + 176 callsubr + hstem + 37 78 vstem + -70 callsubr + endchar + + + -138 387 47 243 47 hstem + 86 58 vstem + 210 387 rmoveto + 42 35 16 17 21 hvcurveto + -20 38 rlineto + -12 -19 -21 -12 -27 hhcurveto + -42 -35 29 59 71 51 84 69 25 16 -9 -18 17 hvcurveto + 34 36 rlineto + 22 -21 -29 16 -38 hhcurveto + -106 -76 -106 -103 -80 53 -48 71 hvcurveto + endchar + + + 176 callsubr + 219 -20 hstem + 37 78 vstem + -70 callsubr + 71 591 -81 callgsubr + + + 87 575 56 hstem + 201 309 vstem + 290 575 rmoveto + 82 hlineto + -5 callgsubr + 10 callsubr + + + 176 callsubr + 77 128 callgsubr + 37 78 hintmask 11101100 + -70 callsubr + 57 587 rmoveto + 82 hlineto + hintmask 11110100 + -5 callgsubr + hintmask 11101100 + 10 callsubr + + + 5 -226 39 200 -21 443 63 hstem + 37 78 76 63 vstem + 74 -226 rmoveto + 154 callsubr + 65 3 47 28 33 26 -34 50 rcurveline + -23 -30 -35 -20 -43 hhcurveto + -77 -38 48 88 133 91 114 97 38 23 -14 -30 25 hvcurveto + 45 48 rlineto + 33 -29 -39 26 -58 hhcurveto + -141 -130 -134 -181 -107 55 -68 83 -16 hvcurveto + -53 -82 rlineto + -4 callsubr + + + 176 callsubr + 186 56 hstem + 37 78 vstem + -70 callsubr + -25 580 -74 callgsubr + + + 176 callsubr + 89 103 hstem + 37 78 155 107 vstem + -70 callsubr + 103 599 -103 callsubr + + + 87 -226 39 97 93 -68 68 hstemhm + 201 63 hintmask 10110000 + 84 -226 rmoveto + 3 callgsubr + 41 68 rcurveline + -54 hlineto + hintmask 11010000 + -60 -93 rlineto + -4 callsubr + + + 50 -14 169 -64 64 hstemhm + 78 76 hintmask 10100000 + 203 -14 rmoveto + 50 hlineto + hintmask 01100000 + 21 105 61 4 45 24 42 27 rlinecurve + -27 52 -31 -22 -35 -18 -43 -3 rlinecurve + 69 349 32 -5 21 -17 23 -26 rlinecurve + 47 45 -27 31 -34 28 -49 7 rlinecurve + 20 103 rlineto + -49 hlineto + -20 -102 rlineto + -117 -11 -124 -104 -166 vvcurveto + -113 56 -69 90 -13 vhcurveto + -70 208 rmoveto + 110 73 79 79 14 vhcurveto + -69 -345 rlineto + -55 15 -28 52 75 vvcurveto + endchar + + + 87 684 56 hstem + 177 310 vstem + 208 568 -74 callgsubr + + + -188 -12 120 249 120 hstemhm + 23 113 -49 113 hintmask 11010000 + 134 357 rmoveto + -57 callgsubr + hintmask 11100000 + -64 -369 rmoveto + -57 callgsubr + endchar + + + -256 387 92 133 92 hstemhm + 78 89 -44 89 hintmask 11100000 + 115 387 35 callgsubr + hintmask 11010000 + 45 225 46 callgsubr + + + 50 -12 64 -40 -21 599 63 -11 -20 hstemhm + 62 74 hintmask 01011000 + 92 -110 rmoveto + 36 hlineto + 37 118 15 -8 18 -6 18 -3 rlinecurve + hintmask 10011000 + -31 -101 rlineto + 35 hlineto + 31 98 rlineto + 67 56 28 46 51 hvcurveto + -38 47 -32 -31 -39 -24 -45 -2 rlinecurve + 158 505 11 -12 10 -15 9 -17 rlinecurve + 56 35 -17 31 -20 27 -28 20 rlinecurve + 39 125 rlineto + -36 hlineto + -34 -109 rlineto + hintmask 01101000 + -16 6 -17 4 -21 1 31 98 rcurveline + -35 hlineto + -31 -100 rlineto + -146 -20 -122 -166 -236 vvcurveto + -90 26 -70 47 -41 vhcurveto + 1 209 rmoveto + 176 75 138 97 32 vhcurveto + -146 -469 rlineto + -17 31 -9 42 50 vvcurveto + 216 353 rmoveto + 19 15 -4 -6 14 hvcurveto + -164 -525 -18 4 -17 9 -14 13 rlinecurve + 159 509 rlineto + 2 2 0 2 hhcurveto + endchar + + + -188 -164 272 -112 112 hstemhm + 26 118 hintmask 10100000 + -20 -164 rmoveto + hintmask 01100000 + 97 callsubr + + + -260 -114 198 -85 85 hstemhm + 0 91 -50 50 hintmask 10010000 + -24 -114 -20 callsubr + + + -260 152 198 -85 85 hstemhm + 50 91 -50 50 hintmask 10010000 + 26 152 -20 callsubr + + + -260 -291 198 -85 85 hstemhm + -37 91 -50 50 hintmask 10010000 + -61 -291 -20 callsubr + + + -260 281 198 -85 85 hstemhm + 77 91 -50 50 hintmask 10010000 + 53 281 -20 callsubr + + + 235 -11 41 95 51 286 50 101 40 hstem + 36 43 101 59 379 25 callgsubr + 25 95 rmoveto + 53 40 21 30 41 hvcurveto + -25 39 rlineto + -21 -33 -28 -18 -37 hhcurveto + -60 -38 37 72 103 78 74 64 30 19 -12 -23 19 hvcurveto + 37 34 rlineto + 28 -22 -29 23 -47 hhcurveto + -96 -112 -90 -146 -98 60 -53 86 hvcurveto + endchar + + + 50 139 58 269 57 hstem + 67 72 227 72 vstem + 46 115 rmoveto + 72 63 rlineto + -26 24 34 -13 42 hhcurveto + 42 42 16 26 35 hvcurveto + 54 -68 43 36 -53 68 rlineto + 35 39 22 53 59 vvcurveto + 29 -6 26 -10 21 vhcurveto + 73 63 -35 42 -73 -63 rlineto + 23 -25 -34 14 -41 hhcurveto + -41 -40 -14 -24 -34 hvcurveto + -48 63 -44 -37 47 -61 rlineto + -37 -40 -23 -55 -60 vvcurveto + -30 6 -25 9 -21 vhcurveto + -71 -62 rlineto + 215 40 rmoveto + -56 -31 38 68 92 71 71 69 56 31 -38 -68 -93 -71 -70 -69 hvcurveto + endchar + + + 105 139 callgsubr + 214 -20 hstemhm + 39 79 hintmask 10111000 + -80 callgsubr + hintmask 01111000 + -12 callgsubr + hintmask 10111000 + -38 callsubr + endchar + + + -65 140 callgsubr + 87 58 vstem + 181 387 rmoveto + 40 40 21 34 32 20 callgsubr + -7 -47 rlineto + 47 hlineto + 92 465 rlineto + -57 hlineto + -23 -116 -8 -65 1 callsubr + 30 -15 -28 15 -30 hhcurveto + -91 -86 -97 -122 -77 37 -41 57 hvcurveto + 19 48 rmoveto + -31 -24 24 53 86 60 78 60 22 22 -12 -33 17 hvcurveto + -25 -134 rlineto + -39 -31 -38 -23 -32 hhcurveto + endchar + + + 5 493.5 61 157.5 -20 hstem + 101 342 vstem + 118 -80 rmoveto + 66 hlineto + 111 576 135 -5 13 66 -137 -5 36 160 rlineto + -66 hlineto + -28 -160 -134 5 -13 -66 138 5 rlineto + endchar + + + 5 76.5 60.5 357.5 60 157.5 -20 hstem + 18 425 vstem + 119 -80 rmoveto + 66 hlineto + 27 159 135 -5 13 66 -138 -6 41 182 32 182 135 -7 13 66 -137 -5 35 160 rlineto + -65 hlineto + -28 -160 -135 5 -12 -66 138 7 -42 -182 -31 -182 -135 6 -13 -66 136 5 rlineto + endchar + + + 112 139 callgsubr + 50 164 hstemhm + 39 79 hintmask 10111000 + -80 callgsubr + hintmask 01111000 + -12 callgsubr + hintmask 10111000 + -38 callsubr + 359 496 65 callsubr + + + 105 -12 64 -31 -21 414 64 94 45 -45 140 -137.5 42.5 hstemhm + 39 79 hintmask 10110010 + -80 callgsubr + hintmask 01100110 + -8 -72 rlineto + 63 hlineto + 116 572 70 5 rlineto + hintmask 10110010 + 10 40 rlineto + -71 hlineto + hintmask 10101010 + 19 95 -15 callgsubr + hintmask 10110010 + -19 -95 rlineto + -156 hlineto + -8 -45 rlineto + 155 hlineto + -14 -70 -16 -95 rlineto + -3 hlineto + 43 -22 -39 28 -52 hhcurveto + -134 -127 -148 -166 -16 callsubr + hvcurveto + -3 callgsubr + 115 88 123 -17 callsubr + 26 hvcurveto + -40 -197 rlineto + -63 -49 -53 -30 -51 hhcurveto + endchar + + + -117 432 44 166 43 hstem + 101 47 143 47 vstem + 208 432 rmoveto + 71 59 65 77 66 -45 45 -61 -72 -59 -65 -77 -66 45 -45 62 hvcurveto + 3 44 rmoveto + -40 -23 31 38 49 32 48 48 40 23 -31 -39 -49 -32 -47 -48 hvcurveto + endchar + + + 87 589 95 hstem + 203 92 94 91 vstem + 243 589 -45 callsubr + + + 50 97 101 104 57 101 102 hstem + 202 102 vstem + 48 302 rmoveto + 178 callsubr + 205 -262 rmoveto + 29 22 22 186 callsubr + -22 29 hvcurveto + 363 vmoveto + 29 22 23 186 callsubr + -23 29 hvcurveto + endchar + + + 50 -110 162 -39 -21 598 161 hstemhm + 115 76 138 75 hintmask 10111000 + 142 -110 rmoveto + 56 hlineto + 20 98 rlineto + 113 7 73 81 104 173 -213 13 122 vvcurveto + 60 46 42 64 46 40 -30 -39 27 vhcurveto + 50 45 -29 39 -42 31 -47 12 rlinecurve + 21 103 rlineto + -56 hlineto + -20 -98 rlineto + -103 -6 -73 -71 -98 -153 214 -13 -144 vvcurveto + -69 -52 -47 -73 -60 -48 38 40 -30 vhcurveto + hintmask 01111000 + -49 -48 34 -41 52 -37 59 -12 rlinecurve + endchar + + + 50 0 45 65 55 257 54 82 46 -43.5 43.5 hstemhm + 74 67 hintmask 11110100 + 190 110 rmoveto + 44 47 24 31 35 hvcurveto + 2 hlineto + -5 -45 rlineto + 55 hlineto + hintmask 11101100 + 89 438 75 5 rlineto + hintmask 11110100 + 9 41 rlineto + -74 hlineto + 14 71 rlineto + -66 hlineto + -14 -71 rlineto + -134 hlineto + -9 -46 rlineto + 133 hlineto + -9 -45 -15 -85 rlineto + 28 -20 -23 20 -45 hhcurveto + -98 -107 -94 -139 -80 43 -53 73 hvcurveto + 21 55 rmoveto + -46 -24 35 54 97 75 71 66 29 25 -15 -33 18 hvcurveto + -30 -154 rlineto + -37 -41 -35 -18 -37 hhcurveto + -179 -165 rmoveto + 343 213 callgsubr + -344 hlineto + endchar + + + 87 587 103 hstem + 287 107 vstem + 336 587 -103 callsubr + + + 121 callgsubr + hstem + 31 174 39 callgsubr + endchar + + + 51 -26 callsubr + -92 callgsubr + endchar + + + 100 callsubr + 215 387 -37 callgsubr + + + 51 -26 callsubr + 219 -20 -92 callgsubr + -88 298 -81 callgsubr + + + 100 callsubr + 252 773 rmoveto + 125 92 -36 42 -115 -103 rlineto + -11 -417 -37 callgsubr + + + 51 -26 callsubr + 73 55 96 -20 hstem + 37 74 72 54 145 65 vstem + -107 callsubr + -65 290 -84 callgsubr + + + 51 -26 callsubr + 77 128 callgsubr + 37 74 271 65 hintmask 11110111 + -107 callsubr + -102 294 rmoveto + 82 hlineto + hintmask 11111011 + -5 callgsubr + hintmask 11110111 + 10 callsubr + + + 51 -26 callsubr + 186 56 -92 callgsubr + -184 287 -74 callgsubr + + + 51 -26 callsubr + 91 95 hstemhm + 37 74 77 92 94 91 -83 65 hintmask 11111101 + -107 callsubr + -149 308 -24 callsubr + hintmask 11111110 + 125 callgsubr + + + 51 -26 callsubr + 89 103 hstemhm + 37 74 161 107 3 65 hintmask 11101010 + -107 callsubr + hintmask 11111100 + -56 306 -103 callsubr + + + 51 -26 callsubr + -92 callgsubr + -27 289 -28 callsubr + + + 100 callsubr + 299 769 rmoveto + 36 24 -79 120 -48 -36 rlineto + 7 -490 -37 callgsubr + + + -90 callgsubr + + + 50 -12 57 566 57 hstemhm + 30 70 24 69 177 71 -28 158 callsubr + 117 102 73 116 71 -50 52 -39 27 hvcurveto + 4 vlineto + hintmask 11110100 + 76 43 53 57 90 vvcurveto + 100 -80 47 -83 -104 -90 -68 -114 -53 22 -36 38 -38 vhcurveto + -4 vlineto + hintmask 11101000 + -81 -36 -73 -64 -101 vvcurveto + -113 98 -53 94 vhcurveto + hintmask 11110100 + 89 367 rmoveto + -73 35 -45 32 67 vvcurveto + 76 57 46 62 58 43 -37 -63 -72 -49 -50 -53 -34 vhcurveto + hintmask 11101000 + -85 -310 rmoveto + -69 -57 43 74 78 50 50 71 40 hvcurveto + 79 -44 70 -36 -77 vvcurveto + -82 -71 -46 -73 vhcurveto + endchar + + + -77 -12 44 325 45 hstemhm + 13 95 callsubr + hintmask 11101000 + 134 -12 -84 callsubr + + + -77 254 44 325 45 hstemhm + 63 95 callsubr + hintmask 11101000 + 184 254 -84 callsubr + + + -90 callgsubr + + + -90 callgsubr + + + -77 -189 44 325 45 hstemhm + -24 95 callsubr + hintmask 11101000 + 97 -189 -84 callsubr + + + -77 383 44 325 45 hstemhm + 90 95 callsubr + hintmask 11101000 + 211 383 -84 callsubr + + + -90 callgsubr + + + 529 -12 120 hstem + 83 113 216 113 216 113 cntrmask 01110000 + 130 -12 rmoveto + -57 callgsubr + 329 hmoveto + -57 callgsubr + 329 hmoveto + -57 callgsubr + endchar + + + 51 -26 callsubr + 103 54 -92 callgsubr + -185 320 -72 callgsubr + + + 114 callgsubr + + + 123 551 41 hstem + 105 478 vstem + 105 551 rmoveto + 473 hlineto + 5 41 rlineto + -473 hlineto + endchar + + + 33 225 54 hstem + 35 392 vstem + 35 225 rmoveto + 380 hlineto + 12 54 rlineto + -381 hlineto + endchar + + + -87 551 41 hstem + 105 267 vstem + 105 551 rmoveto + 262 hlineto + 5 41 rlineto + -262 hlineto + endchar + + + 51 171 callsubr + 61 178 52 158 61 hstem + 37 74 68 61 142 65 vstem + 253 -206 rmoveto + 24 -36 callsubr + 40 33 52 112 66 hvcurveto + -30 51 rlineto + -23 -31 -40 -19 -38 hhcurveto + 99 callsubr + -130 76 -73 115 9 10 1 2 9 vhcurveto + -42 -38 -35 -44 -48 vvcurveto + -44 31 -23 43 vhcurveto + -131 485 94 callsubr + endchar + + + 51 -198 51 158 -21 237 174 callsubr + hintmask 11110110 + 191 -198 -34 callsubr + 53 52 34 59 17 hvcurveto + 38 11 28 14 31 21 -30 51 rcurveline + -23 -31 -40 -19 -38 hhcurveto + hintmask 11111010 + 77 callsubr + hintmask 11110110 + -46 -31 -31 -42 -48 161 callgsubr + -69 477 94 callsubr + endchar + + + 50 195 57 156 57 210 callgsubr + 48 408 rmoveto + 178 callsubr + -270 vmoveto + 178 callsubr + endchar + + + -77 -95 51 117 51 hstem + -29 307 vstem + -29 73 146 callgsubr + + + -77 484 51 117 51 hstem + 85 307 vstem + 85 652 146 callgsubr + + + 370 -12 20 308 18 306 20 hstem + 66 130 450 128 vstem + 420 -12 rmoveto + 114 102 52 80 66 hvcurveto + -52 hlineto + -68 -56 -82 -44 -90 hhcurveto + -86 -78 38 62 -54 hvcurveto + -4 6 -4 6 8 vvcurveto + 184 vlineto + 2 2 2 2 vhcurveto + 574 8 hlineto + 186 -158 150 -196 -196 -158 -150 -186 -186 158 -150 196 vhcurveto + -220 346 rmoveto + -2 -2 2 4 hvcurveto + 180 vlineto + 8 4 8 4 6 vhcurveto + 60 56 76 38 86 hhcurveto + 82 76 -36 -58 56 hvcurveto + 6 -6 4 -8 -8 vvcurveto + -184 vlineto + -4 -2 -2 -4 vhcurveto + endchar + + + 94 -12 64 334 61 hstem + 43 70 282 74 vstem + 113 179 rmoveto + 103 65 104 103 52 36 -37 -40 26 vhcurveto + -141 -9 -65 -116 -96 hhcurveto + -72 -40 58 69 hvcurveto + 103 -191 rmoveto + 160 93 169 190 101 -27 81 -45 66 hvcurveto + 133 55 -16 41 -145 -60 -34 39 -42 33 -46 27 rlinecurve + -36 -46 37 -24 32 -26 26 -29 rlinecurve + -135 -56 16 -41 147 61 36 -52 20 -62 5 -79 rlinecurve + 44 -29 -44 27 -48 hhcurveto + -143 -88 -137 -138 -106 74 -78 99 hvcurveto + endchar + + + -148 -12 120 -99 -21 hstemhm + 43 113 hintmask 01100000 + 102 196 81 callsubr + -93 -683 rmoveto + 38 27 35 34 hvcurveto + hintmask 10100000 + 29 -16 22 -30 -38 -29 -36 -34 vhcurveto + hintmask 01100000 + -29 19 -21 29 vhcurveto + endchar + + + -148 378 120 0 -20 hstemhm + 126 112 hintmask 01100000 + 21 -185 rmoveto + 77 hlineto + 82 475 rlineto + -54 hlineto + -86 -383 rlineto + hintmask 10100000 + 131 471 rmoveto + 39 28 36 34 29 -18 21 -29 -38 -27 -34 -35 -29 16 -22 29 hvcurveto + endchar + + + -148 21 160 callsubr + hstem + 43 354 vstem + -19 callgsubr + endchar + + + -235 670 197 callsubr + 46 111 47 hstemhm + 90 243 hintmask 01110000 + 90 395 rmoveto + 57 hlineto + 55 275 rlineto + 68 218 callgsubr + -67 hlineto + 10 52 rlineto + 37 8 19 22 28 hhcurveto + 15 11 -4 -7 10 hvcurveto + 20 41 rlineto + 12 -20 -19 5 -21 hhcurveto + -59 -37 -41 -66 -12 hvcurveto + hintmask 10110000 + -10 -51 -45 -3 rlineto + hintmask 01110000 + -7 -43 rlineto + 42 hlineto + endchar + + + 119 21 -21 424 62 166 62 -52 62 hstemhm + 43 622 hintmask 11101000 + 153 callgsubr + hintmask 11011000 + 26 callgsubr + hintmask 11101000 + 33 callsubr + 86 callsubr + endchar + + + 357 424 82 callgsubr + 101 103 -38 62 -52 62 hstemhm + 693 107 hintmask 01010100 + 153 callgsubr + hintmask 01001100 + 26 callgsubr + hintmask 10010100 + 28 callsubr + hintmask 01100100 + 86 callsubr + 185 -424 rmoveto + 54 callsubr + 64 73 callgsubr + + + 368 -12 64 372 82 callgsubr + 166 62 -52 62 hstemhm + 594 48 callsubr + hintmask 10110010 + 153 callgsubr + hintmask 10101010 + 26 callgsubr + hintmask 11010010 + 28 callsubr + hintmask 10110010 + 86 callsubr + 263 -436 rmoveto + 21 14 3 5 13 hvcurveto + -1 59 rlineto + hintmask 10110100 + -35 callsubr + hintmask 10110010 + 145 callsubr + + + 399 -12 62 374 82 callgsubr + 166 62 -52 62 hstemhm + 573 78 hintmask 10110100 + 311 83 callsubr + 164 hlineto + -57 -274 rlineto + -4 -18 -2 -16 -20 vvcurveto + -60 32 -48 84 39 31 12 10 22 vhcurveto + -16 55 rlineto + -7 -15 -17 -8 -20 hhcurveto + -46 -16 20 40 13 2 11 2 12 hvcurveto + 57 278 rlineto + 124 hlineto + 13 62 rlineto + -123 hlineto + 26 134 rlineto + -64 hlineto + -37 -134 rlineto + -167 hlineto + hintmask 10101100 + 26 callgsubr + hintmask 11010100 + 28 callsubr + hintmask 10110100 + 86 callsubr + endchar + + + 131 -12 62 -29 160 callsubr + hstemhm + 306 78 hintmask 01111000 + 43 hmoveto + 76 hlineto + 86 424 rlineto + 163 hlineto + -57 -274 rlineto + -4 -18 -1 -16 -20 vvcurveto + hintmask 10111000 + 193 callsubr + 181 callsubr + 21 vhcurveto + -16 55 rlineto + 71 callsubr + rlineto + -167 hlineto + 17 83 rlineto + 57 11 11 callsubr + -65 -5 151 callsubr + endchar + + + 89 21 -21 424 62 101 103 -28 62 hstemhm + 425 107 hintmask 11011000 + -19 callgsubr + 185 -424 rmoveto + 54 callsubr + hintmask 11101000 + 64 73 callgsubr + + + 50 225 54 hstem + 35 409 vstem + 35 225 rmoveto + 397 hlineto + 12 54 rlineto + -398 hlineto + endchar + + + 50 223 callsubr + 351 77 vstem + 188 25 callsubr + + + 50 -12 64 301 60 178 65 hstem + 350 77 vstem + 187 -12 rmoveto + 125 115 97 153 116 -70 59 -95 -34 -27 -8 -12 -23 hvcurveto + 54 198 rlineto + 233 113 callgsubr + -300 hlineto + -81 -309 33 -27 rlineto + 23 41 24 10 42 hhcurveto + 68 45 -42 -86 -105 -75 -68 -84 -74 -39 41 44 -29 hvcurveto + -51 -41 rlineto + -60 40 61 -48 88 hhcurveto + endchar + + + -79 -12 149 callgsubr + hstem + 226 60 vstem + 135 -12 -89 callsubr + endchar + + + -79 254 149 callgsubr + hstem + 276 60 vstem + 185 254 -89 callsubr + endchar + + + -2 callsubr + + + 31 223 callsubr + 345 77 vstem + 182 25 callsubr + + + -79 -189 149 callgsubr + hstem + 189 60 vstem + 98 -189 -89 callsubr + endchar + + + -79 383 149 callgsubr + hstem + 303 60 vstem + 212 383 -89 callsubr + endchar + + + -2 callsubr + + + 357 -12 44 226 49 50 45 77 44 86 51 hstemhm + 272 60 113 95 callsubr + 226 callsubr + 181 258 -89 callsubr + -40 98 callgsubr + -59 105 callgsubr + hintmask 1111110101000000 + -44 callgsubr + 226 callsubr + 39 callsubr + hintmask 1111110101000000 + -48 callgsubr + 226 callsubr + -54 callgsubr + + + 100 -12 64 -43 -21 33 160 callsubr + -12 -20 hstemhm + 326 48 callsubr + hintmask 00111001 + -19 callgsubr + hintmask 01011001 + 263 -436 rmoveto + 21 14 3 5 13 hvcurveto + hintmask 10011001 + -1 59 rlineto + hintmask 10010110 + -35 callsubr + hintmask 01011001 + 145 callsubr + + + 90 424 82 callgsubr + 176 62 hstemhm + 43 489 hintmask 01110000 + -55 callgsubr + hintmask 10110000 + -16 -81 -65 -5 rlineto + hintmask 01110000 + 151 callsubr + 185 -424 rmoveto + 69 callsubr + endchar + + + 50 183 callgsubr + 15 446 hintmask 11011000 + 331 35 callsubr + + + 228 callsubr + 186 61 327 82 0 -20 hstemhm + 20 444 hintmask 11011000 + 331 hmoveto + 37 186 rlineto + 83 hlineto + 13 61 rlineto + -84 hlineto + 82 409 rlineto + -84 hlineto + -349 -419 -9 -51 rlineto + 277 hlineto + -38 -186 rlineto + -145 247 rmoveto + 184 221 rlineto + hintmask 11101000 + 26 33 24 36 27 37 rrcurveto + 4 hlineto + -10 -45 -11 -45 -8 -38 -41 -199 rcurveline + endchar + + + -76 106 43 184 57 hstem + 9 295 vstem + 78 149 -56 callgsubr + endchar + + + -76 372 43 184 57 hstem + 59 295 vstem + 128 415 -56 callgsubr + endchar + + + 7 callsubr + + + 55 183 callgsubr + 26 446 hintmask 11011000 + 342 35 callsubr + + + -76 -71 43 184 57 hstem + -28 295 vstem + 41 -28 -56 callgsubr + endchar + + + -76 501 43 184 57 hstem + 86 295 vstem + 155 544 -56 callgsubr + endchar + + + 7 callsubr + + + 52 callsubr + + + 126 callgsubr + hstemhm + 39 79 hintmask 11101000 + -22 callsubr + hintmask 11011000 + 99 callgsubr + hintmask 11101000 + -99 callgsubr + endchar + + + -64 callsubr + endchar + + + -106 248 40 206 39 138 45 -34 42 hstemhm + 49 51 6 49 -43 53 108 57 -36 50 hintmask 1110001010000000 + 112 587 rmoveto + -31 12 -23 20 -17 vhcurveto + -4 vlineto + hintmask 1110010010000000 + -24 -16 -14 -18 -25 vvcurveto + -18 7 -16 11 -7 vhcurveto + -4 vlineto + hintmask 1110101100000000 + -36 -16 -39 -26 -42 vvcurveto + -63 67 -13 47 83 84 36 72 43 -26 19 -89 12 vhcurveto + hintmask 1110010010000000 + -51 8 -9 7 22 vvcurveto + 12 10 12 11 8 vhcurveto + -4 8 11 -1 13 hhcurveto + 80 56 58 76 14 -3 17 -8 12 hvcurveto + 59 hlineto + 8 45 rlineto + -110 hlineto + 6 -13 -13 2 -17 hhcurveto + hintmask 1110001010000000 + -76 -59 -60 -77 hvcurveto + hintmask 1110101100000000 + 46 -194 rmoveto + 17 -4 11 -3 12 -1 rrcurveto + 51 -5 24 -10 -27 vvcurveto + -31 -45 -24 -60 -39 -29 13 32 26 28 22 30 12 vhcurveto + hintmask 1101001010000000 + 87 289 rmoveto + 32 17 -22 -35 -46 -34 -46 -46 -32 -17 21 36 46 34 46 46 hvcurveto + endchar + + + -76 244 47 108 48 229 48 hstem + 88 58 vstem + 180 244 rmoveto + 82 56 54 88 18 hvcurveto + 65 330 rlineto + -46 hlineto + -13 -39 1 callsubr + 32 -16 -28 15 -30 hhcurveto + -92 -84 -96 -117 -71 36 -41 58 40 36 17 26 32 20 callgsubr + -13 -54 rlineto + -59 -15 -34 -38 -50 hhcurveto + -34 -35 17 21 -26 hvcurveto + -26 -40 rlineto + -30 36 44 -15 39 hhcurveto + 21 203 rmoveto + -32 -23 23 49 80 59 77 60 22 22 -12 -33 17 hvcurveto + -26 -134 rlineto + -32 -30 -38 -18 -31 hhcurveto + endchar + + + 126 callgsubr + 105 55 96 -20 hstemhm + 39 79 73 54 hintmask 11101110 + -22 callsubr + hintmask 11011110 + 99 callgsubr + hintmask 11101110 + -99 callgsubr + hintmask 11101111 + 115 502 -84 callgsubr + + + 3 callsubr + 73 55 hstemhm + -15 68 18 66 -58 71 14 54 104 76 -44 68 hintmask 1110110101000000 + -40 callgsubr + hintmask 1110101000100000 + -80 callsubr + hintmask 1101100100100000 + -43 callgsubr + hintmask 1110101000100000 + -9 callsubr + hintmask 1110110100100000 + 108 callsubr + hintmask 1110110101000000 + 143 callgsubr + hintmask 1101100100100000 + -47 callsubr + hintmask 1110110111000000 + -72 callsubr + 123 742 -84 callgsubr + + + 126 callgsubr + 109 128 callgsubr + 39 79 hintmask 11101011 + -22 callsubr + hintmask 11011011 + 99 callgsubr + hintmask 11101011 + -99 callgsubr + 78 506 rmoveto + 82 hlineto + hintmask 11101101 + -5 callgsubr + hintmask 11101011 + 10 callsubr + + + 3 callsubr + 77 169 callgsubr + hintmask 1110010110000000 + -40 callgsubr + hintmask 1110001001000000 + -80 callsubr + hintmask 1101000101000000 + -43 callgsubr + hintmask 1110001001000000 + -9 callsubr + hintmask 1110010101000000 + 108 callsubr + hintmask 1110010110000000 + 143 callgsubr + hintmask 1101000101000000 + -47 callsubr + hintmask 1110110110000000 + -72 callsubr + 86 746 rmoveto + 82 hlineto + -5 callgsubr + 10 callsubr + + + 126 callgsubr + 218 56 hstemhm + 39 79 hintmask 11101100 + -22 callsubr + hintmask 11011100 + 99 callgsubr + hintmask 11101100 + -99 callgsubr + -4 499 -74 callgsubr + + + 3 callsubr + 186 169 callgsubr + hintmask 1110010110000000 + -40 callgsubr + hintmask 1110001001000000 + -80 callsubr + hintmask 1101000101000000 + -43 callgsubr + hintmask 1110001001000000 + -9 callsubr + hintmask 1110010101000000 + 108 callsubr + hintmask 1110010110000000 + 143 callgsubr + hintmask 1101000101000000 + -47 callsubr + hintmask 1110110110000000 + -72 callsubr + 4 739 -74 callgsubr + + + 126 callgsubr + 121 103 hstemhm + 39 79 162 107 hintmask 11100100 + -22 callsubr + hintmask 11010100 + 99 callgsubr + hintmask 11100100 + -99 callgsubr + hintmask 11101110 + 124 518 -103 callsubr + + + 3 callsubr + 89 103 hstemhm + -15 68 18 66 -58 71 103 107 -38 76 -44 68 hintmask 1110010101000000 + -40 callgsubr + hintmask 1110001000100000 + -80 callsubr + hintmask 1101000100100000 + -43 callgsubr + hintmask 1110001000100000 + -9 callsubr + hintmask 1110010100100000 + 108 callsubr + hintmask 1110010101000000 + 143 callgsubr + hintmask 1101000100100000 + -47 callsubr + hintmask 1110010101000000 + -72 callsubr + hintmask 1110100110000000 + 132 758 -103 callsubr + + + 125 -12 60 -27 -21 662 62 hstemhm + 283 75 58 74 -57 72 hintmask 10110100 + 339 -12 rmoveto + 95 71 70 87 hvcurveto + 123 -147 16 77 vvcurveto + hintmask 01111000 + 77 132 29 125 vvcurveto + 89 -64 43 -80 -113 -74 -90 -109 -23 vhcurveto + -105 -525 rlineto + 76 hlineto + 102 507 rlineto + 85 18 48 70 68 hhcurveto + 52 21 -33 -45 hvcurveto + -106 -133 -24 -105 vvcurveto + hintmask 10110100 + -102 150 -17 -95 vvcurveto + -51 -42 -36 -52 -41 -33 16 25 -31 vhcurveto + -35 -51 rlineto + -33 41 50 -17 49 hhcurveto + endchar + + + 87 208 callgsubr + 233 180 vstem + 365 570 -28 callsubr + + + 50 135 391 hstem + 376 84 vstem + 48 135 rmoveto + 412 166 rlineto + 58 vlineto + -412 167 rlineto + -65 vlineto + 204 -80 124 -48 rlineto + -4 vlineto + -124 -49 -204 -79 rlineto + endchar + + + 50 0 58 hstem + 377 83 vstem + 48 155 rmoveto + 412 153 212 callgsubr + 153 rlineto + -65 vlineto + 203 -75 126 -44 rlineto + -4 vlineto + -126 -43 -203 -74 rlineto + -221 vmoveto + 175 callsubr + + + -18 214 callsubr + 40 355 vstem + 143 67 79 callsubr + 263 -158 79 callsubr + endchar + + + -18 214 callsubr + 23 355 vstem + 51 67 76 callgsubr + 188 -29 76 callgsubr + endchar + + + -178 214 callsubr + 40 195 vstem + 143 67 79 callsubr + endchar + + + -178 214 callsubr + 23 195 vstem + 51 67 76 callgsubr + endchar + + + 93 21 -21 432 66 214 -20 hstem + 394 78 vstem + -98 callgsubr + -59 -53 -35 -47 -55 vhcurveto + -4 hlineto + 16 61 48 235 -15 callgsubr + endchar + + + -77 675 49 hstem + 324 59 vstem + 201 callgsubr + 39 38 30 19 29 hhcurveto + 27 15 -16 -32 -10 -2 155 callsubr + 13 3 15 15 vvcurveto + 52 -21 30 -56 -40 -35 -22 -29 -34 vhcurveto + -4 hlineto + 17 72 24 118 rlineto + -58 hlineto + endchar + + + 93 21 -21 412 66 207 callgsubr + 390 78 hintmask 11001100 + 31 hmoveto + 76 hlineto + 65 324 rlineto + 61 4 callsubr + 22 -53 callgsubr + -56 -280 rlineto + 76 hlineto + 58 290 -51 callsubr + -59 -53 -35 -47 -55 vhcurveto + -4 hlineto + 16 61 23 112 217 callsubr + hintmask 11010100 + 11 51 rlineto + -175 hlineto + hintmask 11001100 + 19 92 -15 callgsubr + hintmask 11100100 + -18 -92 -72 -4 rlineto + hintmask 11001100 + -9 -47 rlineto + 70 hlineto + endchar + + + 93 21 -21 432 66 214 -20 141 45 hstem + 394 78 vstem + -98 callgsubr + -59 -53 -35 -47 -55 vhcurveto + -4 hlineto + 16 61 48 235 -15 callgsubr + 113 27 -71 callsubr + + + 87 571 188 hstem + 239 320 vstem + 280 93 callsubr + + + -131 222 59 hstem + 35 231 vstem + 35 222 rmoveto + 218 hlineto + 13 59 rlineto + -219 hlineto + endchar + + + -197 549 45 hstem + 108 152.5 vstem + 105 549 rmoveto + 153 hlineto + 5 45 rlineto + -152 hlineto + endchar + + + 121 callgsubr + 121 103 hstem + 143 90 callgsubr + endchar + + + -267 779 75 hstem + 157 77 188 callsubr + 63 321 rlineto + -58 hlineto + 46 63 133 callsubr + + + 121 callgsubr + 251 -20 hstem + 31 309 39 callgsubr + 32 93 -81 callgsubr + + + 121 callgsubr + 218 56 hstem + 31 312 39 callgsubr + -64 82 -74 callgsubr + + + 121 callgsubr + 123 95 hstem + 59 92 94 91 39 callgsubr + -29 103 -45 callsubr + + + 121 callgsubr + hstem + 31 238 39 callgsubr + 93 84 -28 callsubr + + + 121 callgsubr + 135 54 hstem + 31 296 39 callgsubr + -65 115 -72 callgsubr + + + 322 152 71 -54 58 194 70 -43 58 hstemhm + 32 60 556 60 hintmask 10011100 + 540 152 rmoveto + 96 72 76 103 107 -72 68 -97 -79 -52 -53 -67 -50 hvcurveto + -4 hlineto + hintmask 01101100 + 47 -35 -53 58 -79 hhcurveto + -90 -65 -67 -95 -92 64 -68 84 77 51 58 46 33 20 callgsubr + hintmask 10011100 + -76 58 56 -45 81 hhcurveto + hintmask 01101100 + -353 75 rmoveto + -53 -42 42 57 58 39 37 55 47 44 -41 -57 39 hvcurveto + -52 -33 -44 -44 -52 hhcurveto + hintmask 10011100 + 355 -4 rmoveto + -59 -47 40 74 -53 hvcurveto + 68 47 50 43 56 hhcurveto + 68 44 -48 -65 -62 -41 -50 -65 hvcurveto + endchar + + + -109 -158 60 827 60 hstem + -26 427 vstem + 18 -158 rmoveto + 109 38 96 131 27 hvcurveto + 28 147 2 199 29 147 rrcurveto + 102 19 25 65 54 hhcurveto + 16 13 -2 -2 7 hvcurveto + 16 58 rlineto + 4 -9 -18 2 -20 hhcurveto + -110 -38 -99 -129 -25 hvcurveto + -29 -146 0 -201 -30 -145 rrcurveto + -105 -20 -22 -62 -57 hhcurveto + -14 -11 2 2 -8 hvcurveto + -16 -57 rlineto + -5 9 16 -2 19 hhcurveto + endchar + + + -193 -206 51 176 19 callsubr + 121 103 hstem + -42 61 123 107 44 callsubr + 158 793 -103 callsubr + + + -193 -206 51 hstem + -42 61 44 callsubr + endchar + + + 121 callgsubr + 111 147 callgsubr + 22 363 hintmask 11010010 + 4 callgsubr + hintmask 11101010 + 138 91 33 callgsubr + hintmask 11100110 + -52 callgsubr + hintmask 11010010 + -61 callgsubr + hintmask 11101010 + 52 callgsubr + + + 198 callsubr + 121 103 hstemhm + 140 107 hintmask 10111000 + 34 callsubr + hintmask 01111000 + -25 -57 rlineto + hintmask 10111000 + 70 callsubr + 238 804 -103 callsubr + + + -266 250 47 482 75 hstem + 157 77 vstem + 31 250 rmoveto + 59 30 40 62 12 hvcurveto + 72 364 rlineto + -58 hlineto + -71 -361 rlineto + -37 -7 -13 -21 -26 hhcurveto + -14 -9 4 4 -9 hvcurveto + -20 -41 rlineto + -9 18 17 -5 19 hhcurveto + 161 529 133 callsubr + + + 198 callsubr + 218 56 hstemhm + -124 464 hintmask 10111000 + 34 callsubr + hintmask 01111000 + -25 -57 rlineto + hintmask 10111000 + 70 callsubr + 110 785 -74 callgsubr + + + 46 152 callgsubr + 246 -20 hstem + 31 462 vstem + -38 callgsubr + 96 483 -15 callgsubr + endchar + + + -105 395 468 hstem + 83 314 188 callsubr + 16 83 72 71 62 -154 rlineto + 57 hlineto + -79 187 128 134 rlineto + -63 hlineto + -159 -161 1 callsubr + 63 308 rlineto + -58 hlineto + endchar + + + 46 152 callgsubr + hstem + 31 462 vstem + -38 callgsubr + 50 257 -15 callgsubr + endchar + + + 9 callgsubr + endchar + + + -192 0 712 hstem + 31 219 68 callsubr + endchar + + + -266 395 468 hstem + 83 151 188 callsubr + 93 468 rlineto + -58 hlineto + endchar + + + -265 387 48 hstemhm + 93 58 -58 84.5 hintmask 10100000 + 140 387 rmoveto + 15 13 2 4 10 hvcurveto + -1 45 rlineto + hintmask 11000000 + -3 -6 -4 0 -3 hhcurveto + -7 -6 3 9 4 1 3 1 7 hvcurveto + 81 402 rlineto + hintmask 10100000 + -58 hlineto + -78 -395 rlineto + -3 -12 -2 -11 -11 vvcurveto + -29 15 -18 32 vhcurveto + endchar + + + 9 callgsubr + 82 761 -78 callsubr + + + -192 0 915 hstem + 31 332 68 callsubr + 18 43 -78 callsubr + + + -187 -12 192 callsubr + 552 164 hstemhm + 44 48 callsubr + hintmask 01010100 + 40 callgsubr + hintmask 10010100 + -1 59 rlineto + hintmask 10011000 + -35 callsubr + hintmask 01010100 + -33 callsubr + hintmask 00110100 + 158 560 65 callsubr + + + -187 548 164 hstem + 31 330 68 callsubr + 94 -164 65 callsubr + + + -99 -12 192 callsubr + 275 120 321 -20 hstemhm + 44 48 callsubr + 87.5 113 hintmask 01011011 + 40 callgsubr + hintmask 10011011 + -1 59 rlineto + hintmask 10011101 + -35 callsubr + hintmask 01011011 + -33 callsubr + hintmask 00111011 + 182 283 rmoveto + -57 callgsubr + endchar + + + -99 271 120 hstemhm + 31 326 -113 113 hintmask 11000000 + 60 callsubr + hintmask 10100000 + 118 -441 rmoveto + -57 callgsubr + endchar + + + 50 135 391 hstem + 46 84 vstem + 458 135 rmoveto + 66 vlineto + -203 79 -125 49 rlineto + 4 vlineto + 125 48 203 80 212 callgsubr + -167 rlineto + -58 vlineto + endchar + + + 50 0 58 hstem + 46 84 vstem + 458 155 rmoveto + 66 vlineto + -202 74 -126 43 rlineto + 4 vlineto + 126 44 202 75 212 callgsubr + -153 rlineto + -65 vlineto + 2 -308 rmoveto + 175 callsubr + + + 50 0 66 173 45 63 42 -42 45 194 64 hstemhm + 146 72 -66 76 -73 71 hintmask 11011100 + 4 hmoveto + 382 hlineto + 12 66 rlineto + hintmask 11011001 + -259 4 hlineto + 50 48 29 52 8 69 rrcurveto + 128 hlineto + 9 45 rlineto + hintmask 11011010 + -135 hlineto + 19 -2 22 -2 22 vhcurveto + 152 213 callgsubr + hintmask 11011100 + -167 hlineto + 11 -1 11 10 112 callsubr + hvcurveto + hintmask 11101100 + -12 1 -13 1 -13 vhcurveto + hintmask 11101010 + -69 -4 rlineto + hintmask 11011010 + -10 -40 rlineto + 83 hlineto + 2 -22 2 -22 1 -19 rrcurveto + -3 hlineto + -97 -5 -10 -40 rlineto + hintmask 11011001 + 108 hlineto + -10 -82 -48 -69 -84 -42 rrcurveto + endchar + + + 50 302 57 hstem + 398 60 vstem + 398 103 rmoveto + 60 256 -410 -57 350 hlineto + endchar + + + 69 -10 64 552 64 hstem + 70 387 vstem + 228 -10 rmoveto + 71 hlineto + 158 340 -158 340 rlineto + -71 hlineto + -158 -340 rlineto + 191 -276 rmoveto + -60 133 -63 143 63 141 60 135 rlineto + 4 hlineto + 61 -135 63 -141 -63 -143 -61 -133 rlineto + endchar + + + -155 -12 64 -43 -21 724 -20 hstemhm + 59 48 callsubr + hintmask 01101000 + 124 -12 rmoveto + 21 14 3 5 13 hvcurveto + hintmask 10101000 + -1 59 rlineto + hintmask 10110000 + -48 callsubr + 57 284 116 62 -20 50 -83 -47 55 274 -15 callgsubr + hintmask 01101000 + 226 callgsubr + 38 -48 -243 166 callgsubr + + + -162 0 712 hstem + 29 284 vstem + 46 hmoveto + 76 hlineto + 75 373 116 62 -20 50 -83 -47 55 274 -15 callgsubr + 226 callgsubr + 37 rlineto + endchar + + + 369 96 callgsubr + hstemhm + 383 76 209 78 hintmask 11011000 + -57 callsubr + hintmask 10111000 + 89 callgsubr + endchar + + + 106 670 46 -41 49 hstemhm + 319 56 132 59 hintmask 01110000 + 201 callgsubr + 37 34 34 21 23 hhcurveto + 29 14 -17 -32 -10 -3 -10 -3 -15 hvcurveto + -39 -196 rlineto + 57 hlineto + 44 222 rlineto + 37 33 35 21 23 hhcurveto + 28 13 -17 -30 -11 -2 -11 -3 -15 hvcurveto + -39 -196 rlineto + 57 hlineto + 40 203 rlineto + 4 17 2 15 12 vvcurveto + 52 -21 30 -55 -38 -38 -25 -35 -39 vhcurveto + 33 -6 -17 27 -51 hhcurveto + -38 -37 -24 -30 -32 hvcurveto + -4 hlineto + hintmask 10110000 + 3 46 rlineto + -47 hlineto + endchar + + + 87 601 54 hstem + 207 264 vstem + 207 601 -72 callgsubr + + + 50 302 57 210 callgsubr + 48 302 rmoveto + 178 callsubr + endchar + + + -77 -11 51 hstem + -29 307 vstem + -29 -11 rmoveto + 148 callsubr + endchar + + + -77 568 51 hstem + 85 307 vstem + 85 568 rmoveto + 148 callsubr + endchar + + + 96 -9 63 hstem + -10 503 vstem + -10 -191 rmoveto + 76 hlineto + 29 150 13 83 rlineto + -38 14 33 -13 38 hhcurveto + 50 48 36 47 89 callsubr + 121 callsubr + 96 486 rlineto + -75 hlineto + -69 -344 rlineto + -61 -60 -46 -94 callsubr + endchar + + + 50 135 391 hstem + 65 377 vstem + 105 135 rmoveto + 148 156 148 -156 41 41 -149 155 149 155 -41 40 -148 -155 -148 155 -40 -40 148 -155 -148 -155 rlineto + endchar + + + 95 96 callgsubr + hstemhm + 394 78 hintmask 11010000 + -82 callgsubr + hintmask 10110000 + 89 callgsubr + endchar + + + -75 670 46 -41 49 hstemhm + 323 60 hintmask 01100000 + 201 callgsubr + 39 38 30 19 29 hhcurveto + 27 14 -16 -32 -10 -1 155 callsubr + 16 3 12 15 vvcurveto + 52 -21 30 -56 -41 -36 -24 -30 -35 vhcurveto + -4 hlineto + hintmask 10100000 + 3 46 rlineto + -47 hlineto + endchar + + + 95 96 callgsubr + 251 -20 hstemhm + 394 78 hintmask 11011000 + -82 callgsubr + hintmask 10111000 + 89 callgsubr + 192 93 -81 callgsubr + + + 312 96 callgsubr + 32 -20 120 102 hstemhm + 207 53 350 78 hintmask 11001110 + 127 443 rmoveto + 75 32 58 65 92 vvcurveto + 43 -22 25 -31 -33 -22 -27 -30 -29 21 -16 29 148 callgsubr + hintmask 10011110 + -36 -34 -51 -62 -31 vhcurveto + 136 -480 rmoveto + 76 hlineto + hintmask 11001110 + 22 callsubr + 4 callsubr + 68 callgsubr + 62 310 -51 callsubr + -61 -54 -37 -48 -54 vhcurveto + -4 hlineto + hintmask 10101110 + 89 callgsubr + endchar + + + 95 96 callgsubr + 109 128 callgsubr + 394 78 hintmask 11010110 + -82 callgsubr + hintmask 10111010 + 89 callgsubr + 178 89 rmoveto + 82 hlineto + -5 callgsubr + hintmask 11010110 + 10 callsubr + + + -18 callgsubr + + + 50 -12 64 206 57 293 60 hstem + 68 72 247 72 vstem + 140 444 rmoveto + 82 61 82 77 67 42 -62 -91 -20 -1 -20 -1 -20 vhcurveto + -62 -51 -55 -18 -31 hhcurveto + -71 -37 50 79 hvcurveto + 17 -456 rmoveto + 173 129 189 275 126 -67 90 -110 -121 -93 -109 -126 -109 64 -66 98 43 61 24 48 43 hvcurveto + -172 -28 -87 -106 -100 hhcurveto + -46 -32 20 38 -23 hvcurveto + -52 -41 rlineto + -44 28 47 -37 73 hhcurveto + endchar + + + -77 -12 138 callsubr + hstem + 40 56 151 57 vstem + 96 259 -79 callsubr + + + -77 254 138 callsubr + hstem + 90 56 151 57 vstem + 146 525 -79 callsubr + + + -25 callgsubr + + + -18 callgsubr + + + -77 -189 138 callsubr + hstem + 3 56 151 57 vstem + 59 82 -79 callsubr + + + -77 383 138 callsubr + hstem + 117 56 151 57 vstem + 173 654 -79 callsubr + + + -25 callgsubr + + + 50 194 58 156 58 210 callgsubr + 71 68 rmoveto + 55 hlineto + 78 126 rlineto + 254 58 -224 hlineto + 94 156 rlineto + 130 58 -100 hlineto + 77 126 rlineto + -55 hlineto + -78 -126 rlineto + -254 -58 224 hlineto + -94 -156 rlineto + -130 -58 100 hlineto + endchar + + + 95 96 callgsubr + 111 147 callgsubr + 394 78 hintmask 11001001 + -82 callgsubr + hintmask 10110101 + 89 callgsubr + 298 91 33 callgsubr + hintmask 11010011 + -52 callgsubr + hintmask 11001001 + -61 callgsubr + hintmask 10110101 + 52 callgsubr + + + 49 21 -21 205 55 150 55 185 -20 hstem + 24 467 vstem + 38 hmoveto + 52 hlineto + 64 205 rlineto + 126 hlineto + -65 -205 rlineto + 52 hlineto + 64 205 rlineto + 85 hlineto + 14 55 rlineto + -81 hlineto + 46 150 rlineto + 82 hlineto + 14 55 rlineto + -79 223 callgsubr + -125 223 callgsubr + -84 hlineto + -14 -55 rlineto + 80 hlineto + -46 -150 rlineto + -82 hlineto + -13 -55 rlineto + 79 hlineto + 68 55 rmoveto + 46 150 rlineto + 127 hlineto + -46 -150 rlineto + endchar + + + -39 callgsubr + endchar + + + 38 callgsubr + + + 71 callgsubr + 219 -20 37 callgsubr + 84 527 -81 callgsubr + + + 71 callgsubr + 186 56 37 callgsubr + -12 111 callsubr + endchar + + + 71 callgsubr + 91 95 hstemhm + 39 77 87 92 94 91 -83 78 hintmask 11111010 + -104 callsubr + 23 537 -24 callsubr + hintmask 11111100 + 125 callgsubr + + + 382 -12 61 -61 64 177 52 154 63 -61 61 hstemhm + 39 77 278 75 245 65 hintmask 01110101 + 208 -12 rmoveto + 78 76 50 83 45 hvcurveto + -87 19 60 -46 81 hhcurveto + 59 53 25 27 37 hvcurveto + hintmask 10110101 + -29 51 rlineto + -23 -31 -40 -19 -38 hhcurveto + -74 -58 51 129 15 hvcurveto + 301 hlineto + 7 18 10 37 38 vvcurveto + 100 -41 76 -110 -66 -72 -46 -80 -43 vhcurveto + 81 -19 -50 45 -81 hhcurveto + -130 -128 -131 -184 hvcurveto + hintmask 01110101 + -121 67 -74 102 vhcurveto + hintmask 01110111 + 12 64 rmoveto + -67 -37 48 88 136 88 111 86 67 37 -49 -88 13 callsubr + -87 hvcurveto + 249 229 rmoveto + hintmask 01101101 + 94 23 63 62 65 159 callsubr + -15 -4 -15 hvcurveto + endchar + + + 87 -206 51 hstem + 110 61 vstem + 185 2 callgsubr + 40 33 43 55 38 hvcurveto + -53 hlineto + -42 -29 -54 -55 -58 vvcurveto + -44 31 -23 44 vhcurveto + endchar + + + -39 callgsubr + 145 518 -28 callsubr + + + 87 7 callgsubr + 170 callsubr + hintmask 11110000 + 87 callsubr + hintmask 11111000 + -65 callgsubr + hintmask 11110000 + -121 68 -74 105 vhcurveto + -96 callgsubr + endchar + + + -39 callgsubr + 60 519 141 callsubr + -117 -163 rlineto + 192 -25 141 callsubr + -118 -163 rlineto + endchar + + + 71 callgsubr + 103 54 37 callgsubr + -13 549 -72 callgsubr + + + 50 0 64 478 50 -50 96 94 callgsubr + 116 574 126 callsubr + -57 190 callgsubr + -50 rlineto + 113 hlineto + -96 -478 207 callsubr + + + 50 0 64 497 49 -49 95 94 callgsubr + 120 592 rlineto + -59 hlineto + hintmask 11010000 + -37 -22 -46 -16 -57 190 callgsubr + -49 rlineto + 113 hlineto + -100 -497 207 callsubr + + + -74 312 164 callgsubr + 92 214 callgsubr + 120 hmoveto + 29 callsubr + hintmask 10100000 + 32 callsubr + hintmask 01100000 + 101 callsubr + endchar + + + -74 578 164 callgsubr + 142 214 callgsubr + 170 266 50 callsubr + + + -88 21 -21 478 50 -50 96 hstemhm + 76 210 hintmask 10110000 + 93 hmoveto + 77 hlineto + 116 574 130 callsubr + endchar + + + -90 21 -21 542 50 -50 96 hstemhm + 95 210 hintmask 10110000 + 100 hmoveto + 77 hlineto + 128 638 130 callsubr + endchar + + + -74 135 164 callgsubr + 55 214 callgsubr + 83 -177 50 callsubr + + + -74 707 164 callgsubr + 169 214 callgsubr + 197 395 50 callsubr + + + 50 0 64 414 50 -50 96 94 callgsubr + 103 510 130 callsubr + -83 -414 207 callsubr + + + 343 -12 44 325 45 180 164 callgsubr + 433 95 callsubr + hintmask 11011010 + 58 callsubr + hintmask 11101010 + 32 callsubr + hintmask 11011010 + 101 callsubr + -104 69 callgsubr + -31 105 callgsubr + hintmask 11010101 + -44 callgsubr + hintmask 11011010 + 39 callsubr + hintmask 11010101 + -48 callgsubr + hintmask 11011010 + -54 callgsubr + + + 342 0 51 -42 -21 362 52 180 164 callgsubr + 659 61 hintmask 10101100 + 58 callsubr + hintmask 10110100 + 32 callsubr + hintmask 01101100 + 101 callsubr + -106 69 callgsubr + hintmask 10101100 + -162 -672 rmoveto + -77 callgsubr + endchar + + + 318 225 callgsubr + 184 57 192 164 callgsubr + 119 577 hintmask 01110110 + 147 60 callgsubr + hintmask 01111010 + 32 callsubr + hintmask 01110110 + 101 callsubr + -88 69 callgsubr + -135 -523 rmoveto + 86 100 67 84 rlineto + 4 hlineto + -26 -108 -15 -76 rlineto + hintmask 10010110 + -30 -149 rmoveto + 54 hlineto + hintmask 01110110 + 103 callgsubr + + + 348 -12 142 callsubr + 180 164 callgsubr + 642 59 -37 60 hintmask 11101100 + 58 callsubr + hintmask 11110100 + 32 callsubr + hintmask 11101100 + 101 callsubr + -106 69 callgsubr + -23 -684 18 callgsubr + hintmask 11101010 + -85 callgsubr + hintmask 11101100 + -60 callsubr + endchar + + + -76 -1 callsubr + + + -25 callsubr + + + 38 callgsubr + + + 85 -12 62 386 62 0 -20 hstemhm + 39 73 290 73 hintmask 11011000 + 112 188 rmoveto + 126 84 122 99 37 28 -15 -27 18 vhcurveto + -259 -266 rlineto + -5 17 -2 20 23 vvcurveto + -83 -211 rmoveto + 59 61 rlineto + -33 31 43 -17 50 hhcurveto + 133 130 130 185 hvcurveto + hintmask 10111000 + 42 -8 36 -15 30 vhcurveto + 67 69 rlineto + hintmask 11011000 + -30 28 -61 -63 rlineto + 35 -31 -44 18 -52 hhcurveto + -133 -129 -131 -184 -44 9 -38 16 -30 hvcurveto + -64 -66 rlineto + 218 45 rmoveto + -36 -27 13 25 -18 hvcurveto + 259 265 rlineto + 4 -16 2 -19 -21 vvcurveto + -126 -84 -121 -100 vhcurveto + endchar + + + 71 callgsubr + 79 147 callgsubr + 39 77 281 78 hintmask 11010011 + -104 callsubr + hintmask 11101011 + 190 525 33 callgsubr + hintmask 11100111 + -52 callgsubr + hintmask 11010011 + -61 callgsubr + hintmask 11101011 + 52 callgsubr + + + 105 -184 -21 193 64 382 64 -12 -20 hstemhm + 417 79 hintmask 11101000 + 63 callgsubr + hintmask 11011000 + 157 callsubr + hintmask 11101000 + 46 232 rlineto + 50 88 callgsubr + hvcurveto + hintmask 11011000 + -135 -89 -124 -97 vhcurveto + endchar + + + -71 387 47 242 48 -46 38 hstemhm + 339 58 hintmask 11010000 + 56 257 rmoveto + 57 hlineto + 21 106 8 71 rlineto + 4 hlineto + -32 16 28 -15 30 hhcurveto + 198 callgsubr + -33 -18 -28 -33 hvcurveto + -4 hlineto + hintmask 10110000 + 1 38 rlineto + -47 hlineto + hintmask 11010000 + 138 -40 rmoveto + 31 24 -24 -53 -86 -61 -79 -60 -23 -20 13 168 callgsubr + endchar + + + 105 656 -20 hstem + 73 450 vstem + 300 -80 rmoveto + 76 hlineto + 147 736 -15 callgsubr + -153 -429 rmoveto + 15 hlineto + 87 429 rlineto + -48 hlineto + -141 -133 -81 -172 -115 101 -61 119 hvcurveto + endchar + + + -139 -176 907 hstem + 65 64 vstem + 122 -176 rmoveto + 50 19 rlineto + -29 76 -14 113 93 vvcurveto + 210 73 192 141 179 vhcurveto + -45 25 rlineto + -148 -187 -85 -178 -233 vvcurveto + -110 25 -114 32 -85 vhcurveto + endchar + + + -203 -79 228 callgsubr + 39 57 vstem + 81 -79 -19 callsubr + + + -203 187 228 callgsubr + 89 57 vstem + 131 187 -19 callsubr + + + -203 -256 228 callgsubr + 2 57 vstem + 44 -256 -19 callsubr + + + -203 316 228 callgsubr + 116 57 vstem + 158 316 -19 callsubr + + + -137 -176 907 hstem + 169 65 vstem + 1 -176 rmoveto + 147 187 86 178 234 vvcurveto + 109 -25 114 -32 85 vhcurveto + -50 -19 rlineto + 29 -76 13 -112 -94 vvcurveto + -209 -72 -193 -141 -178 vhcurveto + endchar + + + -204 -79 228 callgsubr + 107 57 vstem + 15 -79 36 callsubr + + + -204 187 228 callgsubr + 157 57 vstem + 65 187 36 callsubr + + + -204 -256 228 callgsubr + 70 57 vstem + -22 -256 36 callsubr + + + -204 316 228 callgsubr + 184 57 vstem + 92 316 36 callsubr + + + 89 -11 63 290 62 201 62 hstem + 23 72 327 74 vstem + 95 155 rmoveto + 91 62 96 96 65 41 -42 -50 26 vhcurveto + -40 -108 -69 -89 -83 -1 rrcurveto + -62 -35 50 53 -1 hvcurveto + 87 -166 rmoveto + 183 131 245 224 127 -59 82 -119 -53 -47 -23 -32 -41 hvcurveto + 33 -48 rlineto + 22 27 37 19 34 hhcurveto + 79 35 -63 -92 -44 -6 -47 -12 -46 hvcurveto + 54 -34 -49 37 -69 hhcurveto + -138 -91 -134 -124 -97 71 -60 88 hvcurveto + endchar + + + 361 197 callgsubr + hstem + 61 172 callsubr + 81 172 callsubr + vstem + 184 258 -92 callsubr + -54 -320 -56 callsubr + -49 -684 -92 callsubr + endchar + + + -188 -12 120 hstem + 23 113 vstem + 70 -12 rmoveto + -57 callgsubr + endchar + + + -260 -8 92 hstem + -3 89 vstem + 34 -8 46 callgsubr + + + -260 258 92 hstem + 47 89 vstem + 84 258 46 callgsubr + + + -260 -185 92 hstem + -40 89 vstem + -3 -185 46 callgsubr + + + -260 387 92 hstem + 74 89 vstem + 111 387 46 callgsubr + + + -188 268 120 hstem + 79 113 vstem + 126 268 rmoveto + -57 callgsubr + endchar + + + 714 197 callgsubr + hstemhm + 61 172 callsubr + 81 172 callsubr + 49 172 callsubr + hintmask 0101110000000000 + 184 258 -92 callsubr + hintmask 1000001000000000 + -54 -320 -56 callsubr + hintmask 1010001100000000 + -49 -684 -92 callsubr + hintmask 1010000011000000 + 349 -50 -92 callsubr + endchar + + + 228 callsubr + 250 52 119 50.5 -50.5 53 111 53 hstemhm + 377 72 hintmask 11011100 + 30 hmoveto + 74 hlineto + 50 250 rlineto + 40 hlineto + 119 101 55 116 28 hvcurveto + 56 hlineto + 10 53 rlineto + -59 hlineto + 4 0 5 5 vvcurveto + 104 -72 46 -104 vhcurveto + -115 hlineto + hintmask 11101100 + -33 -164 -73 -5 rlineto + hintmask 11011100 + -9 -48 rlineto + 71 hlineto + 107 164 rmoveto + 30 hlineto + 83 43 -31 -74 hvcurveto + -6 -178 vlineto + -34 -172 rmoveto + 24 119 rlineto + 181 hlineto + -78 -20 -63 -41 -91 hhcurveto + endchar + + + 128 -12 63 373 62 hstemhm + 336 72 -72 134.5 hintmask 11100000 + 417 -12 rmoveto + hintmask 11010000 + 23 16 5 6 14 hvcurveto + 1 57 rlineto + hintmask 11100000 + -3 -13 -8 -2 -6 hhcurveto + -23 -13 11 23 16 40 189 34 134 hvcurveto + 82 hlineto + 13 62 rlineto + -431 hlineto + -67 -5 -12 -57 rlineto + 93 hlineto + -26 -133 -35 -147 -44 -144 75 -7 rcurveline + 38 143 35 149 27 139 rrcurveto + 180 hlineto + -29 -129 -45 -184 -41 vvcurveto + -53 24 -29 57 vhcurveto + endchar + + + 50 302 57 hstemhm + 222 60 -59 60 hintmask 11000000 + 222 103 rmoveto + 60 199 176 57 hlineto + hintmask 10100000 + -175 195 -60 -195 -175 -57 hlineto + hintmask 11000000 + 174 hlineto + endchar + + + -77 -11 51 hstem + 96 56 vstem + 96 -149 rmoveto + 56 138 126 51 -126 137 -56 -137 -125 -51 125 hlineto + endchar + + + -77 568 51 hstem + 210 56 vstem + 210 430 rmoveto + 56 138 126 51 -126 137 -56 -137 -125 -51 125 hlineto + endchar + + + 50 0 58 257 58 hstemhm + 222 60 -59 60 hintmask 11100000 + 222 130 rmoveto + 60 185 176 58 hlineto + hintmask 11010000 + -175 181 -60 -181 -175 -58 hlineto + hintmask 11100000 + 174 hlineto + -174 -315 rmoveto + 175 callsubr + + + 216 570 68 hstem + 97 76 320 76 vstem + 97 -120 rmoveto + 76 690 320 -690 76 758 -472 hlineto + endchar + + + 107 -184 -21 193 64 382 64 -12 -20 hstemhm + 39 79 hintmask 11101000 + 289 -205 rmoveto + 77 hlineto + hintmask 11011000 + 138 691 rlineto + -62 hlineto + hintmask 11101000 + 116 callgsubr + 61 61 34 51 49 hvcurveto + 2 hlineto + -30 -119 rlineto + -115 98 46 callsubr + endchar + + + -75 140 callgsubr + 85 59 vstem + 399 716 rmoveto + -45 hlineto + -14 -39 1 callsubr + 32 -16 -27 15 -31 hhcurveto + -91 -86 -97 -122 -77 38 -41 56 41 39 21 34 32 20 callgsubr + -23 -79 -21 -106 rlineto + 57 hlineto + -110 178 rmoveto + -31 -23 24 53 86 60 78 60 22 21 -12 -33 18 hvcurveto + -26 -134 rlineto + -39 -30 -39 -23 -32 hhcurveto + endchar + + + -21 -12 120 -99 -21 630 64 hstemhm + 94 190 callsubr + hintmask 01111000 + 145 201 -64 callgsubr + hvcurveto + hintmask 10111000 + -17 callgsubr + vhcurveto + hintmask 01111000 + -29 18 -21 29 vhcurveto + endchar + + + -21 -195 64 510 120 hstem + -4 75 136 113 vstem + 148 -195 rmoveto + 60 56 29 41 38 hvcurveto + -40 46 rlineto + -32 -29 -38 -20 -39 hhcurveto + -53 -32 33 54 123 188 39 10 168 hvcurveto + -66 6 rlineto + -14 -151 -193 -36 -161 vvcurveto + -87 59 -52 93 vhcurveto + 105 574 rmoveto + 38 29 37 33 29 -19 21 -29 -38 -27 -34 -35 -29 16 -22 30 hvcurveto + endchar + + + -23 426 245 hstem + 128 278 vstem + 128 426 114 callsubr + 142 -153 114 callsubr + endchar + + + -23 7 102 hstem + 87 216 callgsubr + 7 -148 -44 callsubr + 181 -37 -44 callsubr + endchar + + + -23 434 101 hstem + 110 216 callgsubr + 163 434 rmoveto + 34 callgsubr + 165 hmoveto + 34 callgsubr + endchar + + + -23 598 102 hstem + 207 216 callgsubr + 127 443 -44 callsubr + 181 -37 -44 callsubr + endchar + + + -188 434 101 hstem + 110 53 vstem + 163 434 rmoveto + 34 callgsubr + endchar + + + -188 598 102 hstem + 207 53 vstem + 127 443 -44 callsubr + endchar + + + -188 7 102 hstem + 87 53 vstem + 7 -148 -44 callsubr + endchar + + + -188 426 245 hstem + 128 113 vstem + 128 426 114 callsubr + endchar + + + -88 21 88 callsubr + hstemhm + 31 349 hintmask 11001000 + -34 callgsubr + hintmask 10011000 + 27 68 rlineto + hintmask 11001000 + -9 callgsubr + hintmask 10101000 + 143 callsubr + endchar + + + -206 671 45 -45 53 hstemhm + 83 229 hintmask 01100000 + 83 395 rmoveto + 57 hlineto + 42 210 rlineto + 46 29 28 20 32 hhcurveto + 8 5 0 -4 9 hvcurveto + 19 52 rlineto + 4 -9 -6 1 -11 hhcurveto + -38 -31 -23 -36 -26 hvcurveto + -3 hlineto + hintmask 10100000 + 5 51 rlineto + -47 hlineto + endchar + + + -88 21 88 callsubr + 248 -20 hstemhm + 31 390 hintmask 11001100 + -34 callgsubr + hintmask 10011100 + 27 68 rlineto + hintmask 11001100 + -9 callgsubr + hintmask 10101100 + 143 callsubr + 113 93 -81 callgsubr + + + 107 -97 87 hstem + 61 591 vstem + 203 -97 rmoveto + 57 hlineto + 392 917 rlineto + -58 hlineto + -324 -769 -23 102 callgsubr + -3 61 -41 352 -138 -58 6 -44 77 32 rlineto + endchar + + + -88 21 88 callsubr + 106 128 callgsubr + 31 416 hintmask 11001011 + -34 callgsubr + hintmask 10011011 + 27 68 rlineto + hintmask 11001011 + -9 callgsubr + hintmask 10101101 + 143 callsubr + 99 89 rmoveto + 82 hlineto + -5 callgsubr + hintmask 11001011 + 10 callsubr + + + -24 323 34 130 30 70 32 56 35 hstem + 73 37 189 40 59 37 vstem + 235 323 rmoveto + 114 86 105 113 hvcurveto + 99 -1 -74 70 -88 hhcurveto + -115 -84 -107 -111 -100 74 -69 88 hvcurveto + 3 34 rmoveto + -80 -48 60 79 96 69 83 90 79 50 -59 -79 -97 -71 -83 -89 hvcurveto + -69 60 rmoveto + 38 hlineto + 15 70 rlineto + 34 hlineto + 22 -70 rlineto + 40 hlineto + -28 79 rlineto + 30 10 19 25 30 vvcurveto + 37 -24 21 -39 vhcurveto + -66 hlineto + 18 -102 rmoveto + 13 70 rlineto + 25 hlineto + 23 10 -11 -19 -24 -19 -16 -30 hvcurveto + endchar + + + 87 556 36 121 36 hstem + 238 52 110 52 vstem + 333 556 -59 callsubr + + + 161 callsubr + hstem + 72 73 127 73 vstem + -89 callgsubr + endchar + + + -159 387 43 251 43 hstem + 109 55 77 55 vstem + 172 387 rmoveto + 76 48 38 62 40 -26 24 -49 27 hvcurveto + -31 16 -26 15 23 vvcurveto + 26 22 23 34 30 26 -17 -18 19 vhcurveto + 30 36 rlineto + 23 -27 -34 19 -42 hhcurveto + -64 -49 -40 -58 -39 31 -25 42 -23 hvcurveto + 43 -24 16 -15 -19 vvcurveto + -30 -23 -21 -40 -35 -29 21 24 -24 vhcurveto + -35 -33 rlineto + -32 29 42 -23 46 hhcurveto + endchar + + + 161 callsubr + 219 -20 hstem + 72 73 127 73 vstem + -89 callgsubr + 79 591 -81 callgsubr + + + 161 callsubr + 77 128 callgsubr + 72 73 127 73 hintmask 11101110 + -89 callgsubr + 65 587 rmoveto + 82 hlineto + hintmask 11110110 + -5 callgsubr + hintmask 11101110 + 10 callsubr + + + 161 callsubr + 186 56 hstem + 72 73 127 73 vstem + -89 callgsubr + -17 580 -74 callgsubr + + + 47 -60 60 624 60 hstemhm + 56 68 24 71 56 70 25 68 hintmask 11100100 + 182 -60 rmoveto + hintmask 11101100 + 95 68 64 86 21 -5 18 -8 16 hvcurveto + hintmask 11110100 + 66 30 40 40 77 148 -219 15 95 vvcurveto + 47 38 27 41 43 38 -26 -32 28 vhcurveto + 43 45 rlineto + 42 -39 -53 31 -59 hhcurveto + -87 -64 -57 -87 -22 6 -19 10 -17 hvcurveto + hintmask 11101100 + -63 -27 -45 -50 -72 -148 219 -1 -105 vvcurveto + -46 -39 -33 -50 -48 -47 28 37 -35 vhcurveto + -41 -50 rlineto + hintmask 11100100 + -47 47 60 -28 60 hhcurveto + -58 404 rmoveto + 50 31 31 44 19 vhcurveto + 66 -54 105 -30 -78 vvcurveto + -53 -26 -26 -46 -17 vhcurveto + -65 55 -109 23 80 vvcurveto + endchar + + + -188 -4 112 249 120 hstemhm + 26 118 -57 113 hintmask 11010000 + 134 357 rmoveto + -57 callgsubr + -154 -521 rmoveto + hintmask 11100000 + 97 callsubr + + + 228 callsubr + 572 66 hstem + 105 205 callsubr + 46 218 62 184 199 209 callgsubr + -398 hlineto + -14 -66 rlineto + 310 hlineto + -163 -161 -75 -172 -57 -239 rrcurveto + endchar + + + 228 callsubr + 591 65 hstem + 109 205 callsubr + 47 226 64 184 200 197 10 49 rcurveline + -398 hlineto + -14 -65 rlineto + 310 hlineto + -165 -171 -75 -173 -59 -247 rrcurveto + endchar + + + -77 339 51 hstem + 66 271 vstem + 72 hmoveto + -46 callsubr + endchar + + + -77 605 51 hstem + 116 271 vstem + 122 266 rmoveto + -46 callsubr + endchar + + + 26 508 66 hstem + 80 398 vstem + 85 -74 rmoveto + 81 hlineto + 46 222 60 190 196 209 callgsubr + -385 hlineto + -13 -66 203 callsubr + -160 -161 -73 -177 -58 -244 rrcurveto + endchar + + + 26 21 -21 572 66 hstem + 97 397 vstem + 105 hmoveto + 81 hlineto + 45 218 63 184 190 209 callgsubr + -384 hlineto + -13 -66 rlineto + 295 hlineto + -156 -161 -73 -172 -58 -239 rrcurveto + endchar + + + -77 162 51 hstem + 29 271 vstem + 35 -177 rmoveto + -46 callsubr + endchar + + + -77 734 51 hstem + 143 271 vstem + 149 395 rmoveto + -46 callsubr + endchar + + + 50 508 66 hstem + 93 408 vstem + 104 -74 rmoveto + 81 hlineto + 45 222 64 188 197 188 10 50 rcurveline + -394 hlineto + -14 -66 rlineto + 306 hlineto + -162 -162 -75 -177 -58 -243 rrcurveto + endchar + + + 340 -12 44 325 45 207 51 hstemhm + 429 95 callsubr + hintmask 11110100 + 102 270 rmoveto + -46 callsubr + -7 -282 -56 callsubr + -29 105 callgsubr + hintmask 11101010 + -44 callgsubr + hintmask 11110100 + 39 callsubr + hintmask 11101010 + -48 callgsubr + hintmask 11110100 + -54 callgsubr + + + -83 callgsubr + + + 50 -12 60 287 57 213 63 hstem + 51 72 246 71 vstem + 123 202 rmoveto + 18 1 17 1 17 vhcurveto + 62 46 58 19 32 hhcurveto + 71 37 -46 -74 -85 -60 -82 -75 -68 -43 62 92 hvcurveto + 106 -214 rmoveto + 121 90 108 130 104 -63 62 -98 -43 -61 -23 -50 -43 hvcurveto + 174 27 88 112 102 hhcurveto + 43 30 -21 -38 22 hvcurveto + 52 41 rlineto + 44 -27 -45 37 -71 hhcurveto + -173 -129 -193 -271 -126 68 -90 110 hvcurveto + endchar + + + -77 -12 142 callgsubr + hstem + 24 58 150 56 vstem + 82 143 -88 callgsubr + + + -77 254 142 callgsubr + hstem + 74 58 150 56 vstem + 132 409 -88 callgsubr + + + -83 callgsubr + + + -83 callgsubr + + + -77 -189 142 callgsubr + hstem + -13 58 150 56 vstem + 45 -34 -88 callgsubr + + + -77 383 142 callgsubr + hstem + 101 58 150 56 vstem + 159 538 -88 callgsubr + + + -83 callgsubr + + + -90 -160 870 hstem + -72 490 vstem + -72 -160 rmoveto + 55 hlineto + 435 870 rlineto + -56 hlineto + endchar + + + 52 callsubr + + + -230 endchar + + + -296 endchar + + + 50 0 66 217 56.5 -56.5 59 244 64 hstemhm + 146 72 -61 71 hintmask 10111000 + 4 hmoveto + 382 hlineto + 12 66 rlineto + hintmask 10110100 + -259 4 hlineto + 60 57 29 64 91 vvcurveto + 1 140 vlineto + 12 59 rlineto + hintmask 10111000 + -156 hlineto + -3 29 -3 28 25 112 callsubr + -26 3 -31 3 -30 hvcurveto + hintmask 11010100 + -80 -5 rlineto + hintmask 10110100 + -11 -54 rlineto + 96 hlineto + -4 0 -3 -4 vvcurveto + -96 -49 -83 -95 -47 vhcurveto + endchar + + + 55 -120 66 626 66 hstem + 32 458 vstem + 32 -120 rmoveto + 458 66 -360 hlineto + -1 4 213 311 -207 307 -1 4 rlineto + 329 66 -420 -51 hlineto + 220 -318 -231 -339 rlineto + endchar + + + -105 -12 62 374 62 hstem + 69 78 vstem + -94 callgsubr + endchar + + + -208 387 46 237 45 -45 46 hstemhm + 107 59 hintmask 10110000 + 187 387 rmoveto + 18 25 6 6 17 hvcurveto + -10 43 rlineto + -4 -10 -9 -5 -16 hhcurveto + -24 -12 15 26 6 1 10 1 9 hvcurveto + 35 171 rlineto + 85 218 callgsubr + -86 hlineto + hintmask 11010000 + 18 89 rlineto + -48 hlineto + -24 -89 -50 -2 rlineto + hintmask 10110000 + -8 -44 rlineto + 47 hlineto + -34 -169 rlineto + -3 -14 -2 -11 -12 vvcurveto + -43 20 -34 60 vhcurveto + endchar + + + -105 -12 62 374 62 62 72 hstem + 69 78 vstem + -94 callgsubr + 129 560 65 callsubr + + + 105 -184 -21 193 64 382 64 214 -20 hstem + 417 79 vstem + -10 -205 rmoveto + 76 hlineto + 31 159 18 104 rlineto + 2 hlineto + -41 26 40 153 callsubr + -60 -57 -33 -39 -48 hvcurveto + -2 hlineto + 22 96 39 190 -15 callgsubr + 58 -660 rmoveto + -38 -34 20 50 -27 hvcurveto + 46 233 87 callgsubr + endchar + + + 50 224 callgsubr + 343 77 -41 78 hintmask 11110000 + 187 -1 callgsubr + + + 50 -12 64 259 57 238 62 hstemhm + 343 77 -37 78 hintmask 11110000 + 187 -12 rmoveto + 134 99 77 123 69 -41 55 -69 23 hvcurveto + 4 vlineto + hintmask 11101000 + 101 28 50 70 85 vvcurveto + 88 -60 58 -107 -61 -61 -21 -41 -54 vhcurveto + 39 -52 rlineto + 32 38 48 20 39 hhcurveto + 68 33 -40 -57 -64 -52 -77 -159 hvcurveto + -12 -57 rlineto + hintmask 11110000 + 134 49 -53 -73 -77 -64 -56 -91 -66 -49 41 45 -31 hvcurveto + -51 -40 rlineto + -60 40 69 -50 87 hhcurveto + endchar + + + -79 -12 142 callsubr + hstemhm + 216 59 -37 60 hintmask 11110000 + 134 -12 -69 callsubr + + + -79 254 142 callsubr + hstemhm + 266 59 -37 60 hintmask 11110000 + 184 254 -69 callsubr + + + -15 callsubr + + + 31 224 callgsubr + 335 77 -41 78 hintmask 11110000 + 179 -1 callgsubr + + + -79 -189 142 callsubr + hstemhm + 179 59 -37 60 hintmask 11110000 + 97 -189 -69 callsubr + + + -79 383 142 callsubr + hstemhm + 293 59 -37 60 hintmask 11110000 + 211 383 -69 callsubr + + + -15 callsubr + + + 357 -12 44 226 49 50 45 48 41 133 48 hstemhm + 259 59 -37 60 104 95 callsubr + hintmask 1111110101000000 + 177 168 callsubr + hintmask 1111101101000000 + -85 callgsubr + hintmask 1111110101000000 + -60 callsubr + -36 98 callgsubr + -59 105 callgsubr + hintmask 1111110010100000 + -44 callgsubr + hintmask 1111110101000000 + 39 callsubr + hintmask 1111110010100000 + -48 callgsubr + hintmask 1111110101000000 + -54 callgsubr + + + 334 225 callgsubr + 109 49 26 57 60 41 133 48 hstemhm + 262 59 -37 60 hintmask 0111011100000000 + 180 168 callsubr + hintmask 0111011010000000 + -85 callgsubr + hintmask 0111011100000000 + -60 callsubr + -25 98 callgsubr + -151 -523 rmoveto + hintmask 0111111100000000 + 86 100 67 84 rlineto + 4 hlineto + -26 -108 -15 -76 rlineto + hintmask 1001011100000000 + -30 -149 rmoveto + 54 hlineto + hintmask 0111111100000000 + 103 callgsubr + + + 87 577 59 26 59 hstemhm + 166 363 vstemhm + 410 577 33 callgsubr + -52 callgsubr + hintmask 01100000 + -61 callgsubr + hintmask 11100000 + 52 callgsubr + + + 181 414 66 138 58 -50 50 hstemhm + 76 592 hintmask 10110000 + 123 366 rmoveto + 55 hlineto + 52 260 rlineto + 96 hlineto + 10 50 rlineto + -249 hlineto + -11 -50 rlineto + 99 hlineto + 145 -260 rmoveto + 53 hlineto + 29 140 11 112 rlineto + 4 hlineto + 38 -204 rlineto + 35 hlineto + hintmask 11010000 + 90 callsubr + rlineto + hintmask 10110000 + -23 115 rlineto + -68 hlineto + endchar + + + 465 -80 825 111 callgsubr + endchar + + + 465 -60 825 116 callsubr + endchar + + + 50 0 66 521 63 hstem + 377 75 vstem + -10 hmoveto + 395 hlineto + 12 122 callgsubr + 220 191 111 95 141 vvcurveto + 91 -61 66 -109 -64 -57 -29 -50 106 callgsubr + 70 34 -46 -58 -124 -124 -97 -255 -216 hvcurveto + endchar + + + 50 0 66 540 62 hstem + 378 76 vstem + -10 hmoveto + 395 hlineto + 12 122 callgsubr + 226 194 107 101 151 vvcurveto + 90 -62 66 -109 -64 -56 -29 -49 -58 vhcurveto + 39 -48 rlineto + 41 44 44 23 43 hhcurveto + 69 34 -47 -57 -134 -119 -103 -261 -219 hvcurveto + endchar + + + -77 0 51 299 52 hstem + 239 61 vstem + 1 hmoveto + -77 callgsubr + endchar + + + -77 266 51 299 52 hstem + 289 61 vstem + 51 266 rmoveto + -77 callgsubr + endchar + + + 32 0 66 457 63 hstem + 347 75 vstem + -10 hmoveto + 379 hlineto + 12 66 rlineto + -261 hlineto + 196 161 106 83 119 vvcurveto + 90 -59 67 -99 -64 -57 -30 -49 106 callgsubr + 60 32 -46 -58 -104 -115 -82 -234 -187 hvcurveto + endchar + + + 37 0 66 521 63 hstem + 367 75 vstem + -10 hmoveto + 385 hlineto + 12 66 rlineto + -266 hlineto + 212 191 109 95 141 vvcurveto + 91 -59 66 -101 -64 -57 -29 -50 106 callgsubr + 63 31 -46 -58 -124 -120 -97 -249 -216 hvcurveto + endchar + + + -77 -177 51 299 52 hstem + 202 61 vstem + -36 -177 rmoveto + -77 callgsubr + endchar + + + -77 395 51 299 52 hstem + 316 61 vstem + 78 395 rmoveto + -77 callgsubr + endchar + + + 50 0 66 457 63 hstem + 359 75 vstem + -10 hmoveto + 395 hlineto + 12 66 rlineto + -274 hlineto + 203 161 108 83 119 vvcurveto + 90 -61 67 -109 -64 -57 -30 -49 106 callgsubr + 70 34 -46 -58 -104 -118 -82 -243 -187 hvcurveto + endchar + + + 365 -12 49 143 41 49 51 33 48 218 52 hstemhm + 289 61 308 59 -37 60 hintmask 11111110 + 51 270 rmoveto + -77 callgsubr + 91 -320 -56 callsubr + -57 -684 18 callgsubr + hintmask 11111101 + -85 callgsubr + hintmask 11111110 + -60 callsubr + endchar + + + 45 callgsubr + hstemhm + 56 78 hintmask 10110000 + -60 callgsubr + hintmask 01110000 + 83 callgsubr + hintmask 10110000 + -104 callgsubr + vhcurveto + endchar + + + -75 387 49 hstem + 98 59 vstem + 174 387 rmoveto + 42 35 24 30 35 20 callgsubr + -4 -46 rlineto + 47 hlineto + 64 321 rlineto + -58 hlineto + -44 -222 rlineto + -39 -38 -29 -19 -30 hhcurveto + -27 -14 16 32 10 2 10 4 16 hvcurveto + 39 196 rlineto + -58 hlineto + -40 -204 rlineto + -3 -16 -3 -12 -15 vvcurveto + -52 21 -30 55 vhcurveto + endchar + + + 195 355 46 13 66 138 58 -40 47 hstemhm + 428 58 hintmask 10011000 + 543 355 rmoveto + 42 34 17 29 32 hvcurveto + -25 33 rlineto + -21 -24 -20 -12 -29 hhcurveto + -39 -28 30 54 86 58 65 60 23 16 -9 -18 13 hvcurveto + 35 32 rlineto + 22 -15 -27 20 -41 hhcurveto + -93 -87 -90 -119 -74 46 -45 69 hvcurveto + -493 11 rmoveto + 53 215 callsubr + hintmask 11101000 + 45 callsubr + + + 209 366 45 3 66 138 58 -44 44 hstemhm + 627 58 hintmask 10011000 + 412 366 rmoveto + 91 hlineto + 110 72 80 111 78 -47 41 -85 hvcurveto + -78 hlineto + 2 -265 rmoveto + 43 221 rlineto + 32 hlineto + 52 23 -28 -57 -75 -49 -61 -69 hvcurveto + -459 -45 rmoveto + 53 215 callsubr + hintmask 01101000 + 45 callsubr + + + 45 callgsubr + 251 -20 hstemhm + 56 78 hintmask 10111000 + -60 callgsubr + hintmask 01111000 + 83 callgsubr + hintmask 10111000 + -104 callgsubr + vhcurveto + 127 591 -81 callgsubr + + + 45 callgsubr + 105 55 96 -20 hstemhm + 56 78 58 54 -65 callsubr + 150 583 -84 callgsubr + + + 45 callgsubr + 218 56 hstemhm + 56 78 hintmask 10111000 + -60 callgsubr + hintmask 01111000 + 83 callgsubr + hintmask 10111000 + -104 callgsubr + vhcurveto + 31 580 -74 callgsubr + + + 118 callgsubr + 95 hstemhm + 56 78 63 92 94 91 -65 callsubr + 66 601 -45 callsubr + + + 45 callgsubr + hstemhm + 56 78 hintmask 10110000 + -60 callgsubr + hintmask 01110000 + 83 callgsubr + hintmask 10110000 + -104 callgsubr + vhcurveto + 188 582 -28 callsubr + + + 113 13 callgsubr + hstemhm + 56 78 404 65 hintmask 10111000 + -60 callgsubr + hintmask 01111000 + -22 callgsubr + hintmask 10111000 + -104 callgsubr + vhcurveto + endchar + + + 45 callgsubr + hstemhm + 56 78 hintmask 10110000 + -60 callgsubr + hintmask 01110000 + 83 callgsubr + hintmask 10110000 + -104 callgsubr + vhcurveto + 103 583 141 callsubr + -117 -163 rlineto + 192 -25 141 callsubr + -118 -163 rlineto + endchar + + + 45 callgsubr + 135 54 hstemhm + 56 78 hintmask 10111000 + -60 callgsubr + hintmask 01111000 + 83 callgsubr + hintmask 10111000 + -104 callgsubr + vhcurveto + 30 613 -72 callgsubr + + + 53 -124 50 hstem + -36 468 vstem + -36 -124 222 callgsubr + + + 117 callsubr + 41 172 callgsubr + 57 80 hintmask 11110100 + -99 callsubr + 186 721 -58 callsubr + hintmask 11111100 + -50 callsubr + hintmask 11110100 + 66 callgsubr + + + 126 callgsubr + 111 147 callgsubr + 39 79 hintmask 1110010010000000 + -22 callsubr + hintmask 1101010010000000 + 99 callgsubr + hintmask 1110010010000000 + -99 callgsubr + hintmask 1110101010000000 + 198 508 33 callgsubr + hintmask 1110100110000000 + -52 callgsubr + hintmask 1110010010000000 + -61 callgsubr + hintmask 1110101010000000 + 52 callgsubr + + + 3 callsubr + 79 59 26 59 53 callsubr + hintmask 1110011011000000 + -40 callgsubr + hintmask 1110010100100000 + -80 callsubr + hintmask 1101010010100000 + -43 callgsubr + hintmask 1110010100100000 + -9 callsubr + hintmask 1110011010100000 + 108 callsubr + hintmask 1110011011000000 + 143 callgsubr + hintmask 1101010010100000 + -47 callsubr + hintmask 1110111011000000 + -72 callsubr + 206 748 33 callgsubr + -52 callgsubr + hintmask 1110010010100000 + -61 callgsubr + hintmask 1110111011000000 + 52 callgsubr + + + 80 -211 54 362 134 callgsubr + hstem + 124 65 vstem + 202 -211 rmoveto + 23 53 callgsubr + 34 26 41 45 29 hvcurveto + -24 29 rlineto + -63 -39 -49 -62 -55 vvcurveto + -45 32 -24 46 vhcurveto + 25 588 -105 callsubr + 18 47 -78 callsubr + + + 107 -203 51 140 64 382 64 hstemhm + 39 79 -4 61 hintmask 11101000 + 50 callgsubr + 106 callsubr + hintmask 11110000 + -62 callsubr + -16 callsubr + hvcurveto + 3 3 0 3 hhcurveto + hintmask 11101000 + -37 -31 -37 -45 -48 vvcurveto + -45 31 -22 44 vhcurveto + hintmask 11110000 + 18 255 -63 callgsubr + -48 -54 -30 -51 hhcurveto + 90 527 -81 callgsubr + + + -52 callsubr + -63 329 -81 callgsubr + + + -12 callsubr + 114 914 -78 callsubr + + + 51 -198 51 374 174 callsubr + hintmask 11101100 + 191 -198 -34 callsubr + 53 52 34 59 17 hvcurveto + 38 11 28 14 31 21 -30 51 rcurveline + -23 -31 -40 -19 -38 hhcurveto + hintmask 01110100 + 77 callsubr + hintmask 11101100 + -46 -31 -31 -42 -48 161 callgsubr + hintmask 01101100 + -69 477 94 callsubr + -80 300 -81 callgsubr + + + 158 129 callgsubr + 41 141 callgsubr + hstem + 57 80 143 65 -70 callgsubr + -136 -209 -73 callsubr + + + 126 callgsubr + 110 37 92 40 hstemhm + 39 79 139 65 hintmask 11101111 + -22 callsubr + hintmask 11011111 + 99 callgsubr + hintmask 11101111 + -99 callgsubr + 158 507 91 callgsubr + + + 3 callsubr + 78 37 92 40 hstemhm + -15 68 18 66 -58 71 80 65 27 76 -44 68 hintmask 1110011011100000 + -40 callgsubr + hintmask 1110010101010000 + -80 callsubr + hintmask 1101010011010000 + -43 callgsubr + hintmask 1110010101010000 + -9 callsubr + hintmask 1110011011010000 + 108 callsubr + hintmask 1110011011100000 + 143 callgsubr + hintmask 1101010011010000 + -47 callsubr + hintmask 1110011011100000 + -72 callsubr + hintmask 1110110011010000 + 166 747 91 callgsubr + + + 70 callgsubr + 69 53 hstem + 97 52 -13 callgsubr + 53 85 callsubr + + + 149 callsubr + 49 53 hstem + 133 52 -75 callsubr + 248 639 -58 callgsubr + + + 121 callgsubr + 105 55 96 -20 hstem + 54 54 39 callgsubr + 55 85 -84 callgsubr + + + -178 -211 54 hstem + -39 65 vstem + 37 -211 rmoveto + 25 53 callgsubr + 39 36 49 51 31 hvcurveto + 32 callgsubr + -131 -656 rlineto + 15 98 callsubr + 151 914 -78 callsubr + + + -106 -211 54 157 150 callgsubr + hstem + -1 64 vstem + 75 -211 rmoveto + 22 34 10 15 22 hvcurveto + -18 40 rlineto + -8 -12 -10 -3 -13 173 callgsubr + 24 39 37 49 50 31 hvcurveto + 80 -81 callsubr + -14 -66 rlineto + 95 98 callsubr + 153 914 -78 callsubr + + + -193 -206 51 hstem + -42 61 44 callsubr + 125 785 -81 callgsubr + + + 68 -162 64 119 115 callsubr + hstem + 35 458 vstem + 215 -162 rmoveto + 84 43 65 92 19 hvcurveto + 132 661 31 callgsubr + -132 -663 rlineto + -58 -12 -23 -33 -37 hhcurveto + -21 -12 6 8 -12 hvcurveto + -26 -59 139 callsubr + -180 162 rmoveto + 78 hlineto + 32 callgsubr + endchar + + + 44 -217 63 741 103 hstem + 143 107 127 90 callgsubr + -4 -804 rmoveto + 84 41 63 93 19 hvcurveto + 111 547 -15 callgsubr + -111 -548 59 callgsubr + -25 -57 139 callsubr + 238 804 -103 callsubr + + + 129 129 callgsubr + 74 115 callsubr + hstem + 265 65 0 callgsubr + -17 -877 -73 callsubr + + + 46 129 callgsubr + 74 19 callsubr + 246 -20 hstem + 207 65 vstem + -38 callgsubr + 96 483 -15 callgsubr + -82 -933 -73 callsubr + + + 32 129 callgsubr + 53 192 callgsubr + 208 65 -18 callsubr + -74 -877 -73 callsubr + + + -182 129 callgsubr + 41 192 callsubr + 716 -20 hstemhm + 44 48 callsubr + -82.5 65 hintmask 1101010100000000 + 40 callgsubr + hintmask 1110010100000000 + -1 59 rlineto + hintmask 1110011000000000 + -35 callsubr + hintmask 1101010100000000 + -33 callsubr + hintmask 1100110010000000 + -151 -209 -73 callsubr + + + -192 -218 39 92 37 hstem + 60 65 68 callsubr + -229 -930 -73 callsubr + + + 189 -229 39 92 37 61 158 callgsubr + 254 65 hintmask 11010110 + 61 callgsubr + hintmask 11011010 + -69 callgsubr + hintmask 11100110 + -29 callsubr + -28 -885 -73 callsubr + + + 95 129 callgsubr + 74 78 callsubr + hstemhm + 212 65 117 78 hintmask 11110110 + -82 callgsubr + hintmask 11101110 + 89 callgsubr + -32 -707 -73 callsubr + + + 182 -12 67 -46 -21 33 -21 601 67 -12 -20 hstemhm + 509 79 hintmask 10010100 + 345 -12 rmoveto + 143 100 217 236 162 -73 65 -106 -57 -73 -35 -49 -53 hvcurveto + hintmask 00101100 + 15 72 rlineto + -75 hlineto + -131 -656 rlineto + 78 hlineto + hintmask 10010100 + 101 511 rlineto + 59 57 71 31 45 hhcurveto + 73 49 -43 -124 -187 -81 -192 -89 -20 -13 195 callsubr + hintmask 01010100 + -31 -62 rlineto + hintmask 10010100 + -11 19 36 -7 28 hhcurveto + endchar + + + 189 -164 63 661 96 hstem + 35 579 vstem + 336 -164 rmoveto + 84 41 61 92 19 hvcurveto + 134 667 rlineto + -75 hlineto + -69 -348 -14 -68 -8 -76 -8 -65 rlinecurve + 20 callsubr + -131 -656 rlineto + 75 hlineto + 70 353 13 66 10 73 8 68 rlinecurve + 4 hlineto + 43 -141 149 -422 rlineto + -72 -13 -25 -26 -37 hhcurveto + -21 -12 195 callsubr + -25 -57 139 callsubr + endchar + + + 95 -217 63 -42 -21 238 78 callsubr + hstemhm + 394 78 hintmask 10110100 + 246 -217 rmoveto + 83 42 63 93 19 hvcurveto + 74 371 -51 callsubr + -61 -54 -37 -48 -54 vhcurveto + -4 hlineto + hintmask 10101100 + 89 callgsubr + -97 -486 rlineto + 76 hlineto + hintmask 10110100 + 22 callsubr + 4 callsubr + 22 -53 callgsubr + -73 157 callgsubr + hintmask 01110100 + -25 -57 rlineto + hintmask 10110100 + 70 callsubr + endchar + + + 22 callgsubr + 37 53 hstem + 60 79 150 52 186 79 vstem + -106 callsubr + 120 650 -58 callgsubr + + + 71 callgsubr + 73 55 96 -20 hstem + 39 77 82 54 145 78 vstem + -104 callsubr + 107 519 -84 callgsubr + + + 125 -229 39 92 37 82 96 callsubr + hstem + 248 65 161 77 vstem + 181 341 rmoveto + 50 253 rlineto + 96 hlineto + 96 51 -29 -72 -93 -69 -59 -125 hvcurveto + -148 -570 rmoveto + -82 callsubr + -96 190 rmoveto + -68 callgsubr + endchar + + + -88 129 callgsubr + 74 88 callsubr + hstemhm + 59 65 hintmask 11110010 + -34 callgsubr + hintmask 11100110 + 27 68 rlineto + hintmask 11110010 + -9 callgsubr + hintmask 11101010 + 143 callsubr + -185 -707 -73 callsubr + + + 76 -226 39 177 64 -43 -21 611 67 hstemhm + 120 79 11 63 106 80 hintmask 10111010 + 93 -226 rmoveto + hintmask 10111110 + 154 callsubr + 125 7 88 82 112 vvcurveto + 73 -36 44 -63 37 vhcurveto + hintmask 11011010 + -76 45 rlineto + -48 29 -37 27 51 vvcurveto + 53 45 53 74 61 46 -31 -40 34 vhcurveto + 51 46 rlineto + 53 -41 -67 39 -78 hhcurveto + -118 -86 -83 -99 -74 45 -46 56 -34 hvcurveto + 76 -46 rlineto + 49 -30 33 -30 -48 vvcurveto + -75 -61 -49 -80 -73 -57 35 58 -39 vhcurveto + -57 -43 rlineto + hintmask 10111110 + 45 -67 63 -37 73 -10 -52 -80 rcurveline + -4 callsubr + + + -28 -226 39 177 57 -36 -21 448 60 hstemhm + 72 73 13 63 51 73 hintmask 10111010 + 41 -226 rmoveto + hintmask 10111110 + 3 callgsubr + 33 55 rcurveline + 87 11 63 56 81 vvcurveto + 59 -32 33 -82 46 vhcurveto + hintmask 11011010 + -43 24 -43 22 40 vvcurveto + 41 36 35 51 44 34 -20 -26 25 vhcurveto + 46 40 rlineto + 40 -37 -50 26 -61 hhcurveto + -88 -73 -59 -86 -55 42 -39 61 -35 hvcurveto + 75 -42 22 -19 -35 vvcurveto + -47 -47 -34 -56 -51 -44 29 42 -30 vhcurveto + -48 -38 rlineto + hintmask 10111110 + 29 -48 57 -35 58 -7 -51 -80 rcurveline + -4 callsubr + + + 80 -226 39 208 -21 589 67 hstem + 191 63 194 callgsubr + 14 hlineto + -58 -90 rlineto + 50 -5 19 -13 -25 vvcurveto + -3 -32 -36 -19 -80 -3 2 -39 rcurveline + 3 callgsubr + 39 65 rcurveline + 10 -7 callgsubr + endchar + + + -105 -226 39 200 -21 432 221 callgsubr + 13 63 hintmask 11110000 + 43 -226 rmoveto + hintmask 11111000 + 154 callsubr + 33 2 28 11 20 9 -17 55 rcurveline + hintmask 11110000 + 71 callsubr + -76 -5 128 callsubr + -57 -274 rlineto + -2 -18 -3 -16 -20 vvcurveto + -49 21 -41 54 -14 vhcurveto + hintmask 11111000 + -53 -82 rlineto + -4 callsubr + + + 80 21 -21 312 51 226 67 hstem + 93 472 194 callgsubr + 78 hlineto + 62 312 rlineto + 119 hlineto + 10 51 rlineto + -119 hlineto + 45 226 -23 callsubr + -45 -226 rlineto + -34 hlineto + -87 -3 -10 -48 rlineto + 121 hlineto + endchar + + + -105 -12 62 180 49 -49 52 142 221 callgsubr + hintmask 10111000 + 185 -12 112 callgsubr + 17 84 rlineto + 124 220 callsubr + -124 hlineto + 29 142 152 callsubr + -36 -134 -76 -5 128 callsubr + hintmask 11011000 + -30 -143 -72 -4 rlineto + hintmask 10111000 + -9 -47 rlineto + 71 hlineto + -17 -80 rlineto + -2 -18 -3 -16 -20 vvcurveto + 193 callsubr + vhcurveto + endchar + + + 186 -211 54 hstemhm + 79 78 8 65 vstemhm + 42 callgsubr + hintmask 11000000 + 84 callsubr + hintmask 11100000 + -41 -30 -43 -54 -48 vvcurveto + -45 32 -24 46 vhcurveto + 135 914 -78 callsubr + + + 98 171 callsubr + 66 hstemhm + 56 78 -31 61 hintmask 11010000 + 177 -206 rmoveto + 24 -36 callsubr + 38 29 44 42 29 hvcurveto + 38 26 31 25 35 30 rrcurveto + 4 hlineto + 83 callgsubr + -69 -344 rlineto + hintmask 11100000 + -61 -59 -47 -27 -38 -101 callsubr + 148 callgsubr + hintmask 11010000 + -36 -31 -37 -47 -49 vvcurveto + -44 31 -23 43 vhcurveto + 119 785 -81 callgsubr + + + 89 -12 64 -31 -21 414 64 207 callgsubr + 413 79 hintmask 10100110 + 234 -12 rmoveto + 134 124 143 181 107 -55 59 182 callgsubr + 14 67 217 callsubr + hintmask 10101010 + 11 51 rlineto + -175 hlineto + hintmask 10100110 + 19 92 -15 callgsubr + hintmask 10110010 + -18 -92 -72 -4 rlineto + hintmask 01100110 + -9 -47 rlineto + 70 hlineto + -113 -569 rlineto + 63 hlineto + hintmask 10100110 + 20 61 rlineto + 3 hlineto + -44 23 42 -29 52 hhcurveto + 90 426 rmoveto + 55 34 -38 -75 -130 -85 -119 -97 -38 -34 21 51 -27 hvcurveto + 42 211 rlineto + 49 46 59 30 45 hhcurveto + endchar + + + 206 -12 66 232 59 261 66 hstem + 63 72 398 77 vstem + 278 -12 rmoveto + 181 151 172 239 165 -71 108 -149 -79 -70 -34 -45 -49 hvcurveto + 35 -53 rlineto + 37 42 51 29 62 hhcurveto + 111 40 -85 -131 -15 -1 -15 -1 -15 hvcurveto + -452 hlineto + -10 -39 -6 -29 -43 vvcurveto + -145 79 -101 136 vhcurveto + 5 66 rmoveto + -102 -62 87 145 20 hvcurveto + 382 hlineto + -138 -32 -95 -94 -111 hhcurveto + endchar + + + 50 -97 63 382 58 202 63 -22 -20 hstemhm + -48 570 hintmask 11011000 + 31 -97 rmoveto + 96 51 80 109 34 hvcurveto + 79 256 rlineto + 125 hlineto + 12 58 rlineto + -119 hlineto + 22 72 rlineto + hintmask 11101000 + 66 20 37 64 52 hhcurveto + 21 19 -7 -10 17 hvcurveto + hintmask 11011000 + 25 58 rlineto + hintmask 11101000 + 13 -24 -29 9 -28 hhcurveto + -92 -58 -74 -117 -35 hvcurveto + -23 -74 rlineto + -23 hlineto + -67 -3 -12 -55 rlineto + 85 hlineto + -71 -232 rlineto + -96 -29 -35 -54 -53 hhcurveto + -19 -17 6 9 -15 hvcurveto + -25 -56 rlineto + hintmask 11011000 + -16 24 27 -6 28 hhcurveto + endchar + + + 117 callsubr + 71 62 hstem + 57 80 353 63 vstem + 300 -12 rmoveto + 75 63 27 40 48 180 callsubr + rlineto + -206 hlineto + -13 -64 rlineto + 136 hlineto + -37 -181 rlineto + -22 -26 -38 -18 -48 hhcurveto + -126 -48 89 117 159 100 182 165 53 36 -22 -33 25 hvcurveto + 55 41 -13 35 -7 27 2 31 rlinecurve + 3 37 24 25 35 -3 14 -1 8 -6 10 -5 25 55 rcurveline + -14 8 -17 9 -25 2 -67 6 -54 -43 -6 -68 -1 -15 1 -14 2 -15 rrcurveto + 10 -24 -29 6 -32 -23 callgsubr + endchar + + + -134 255 53 111 53 hstem + -19 352 vstem + 49 8 rmoveto + 76 hlineto + 50 247 163 callsubr + 12 53 rlineto + -116 hlineto + 23 111 163 callsubr + 11 53 rlineto + -115 hlineto + 50 248 -15 callgsubr + -49 -248 rlineto + -41 hlineto + -78 -4 -9 -49 rlineto + 117 hlineto + -22 -111 rlineto + -41 hlineto + -78 -5 -9 -48 rlineto + 117 hlineto + endchar + + + -184 -12 120 hstemhm + 31 113 -113 226 hintmask 10100000 + 90 196 rmoveto + 53 hlineto + 86 383 28 133 31 callgsubr + -22 -133 rlineto + hintmask 11000000 + -79 -591 rmoveto + -57 callgsubr + endchar + + + 8 callsubr + 50 45 hstem + -53 583 vstem + 227 377 -105 callsubr + 16 50 -77 callsubr + + + -40 callsubr + 109 128 callgsubr + 39 79 hintmask 10101011 + -80 callgsubr + hintmask 01011011 + -32 callgsubr + hintmask 10101011 + -106 callgsubr + 81 523 rmoveto + 82 hlineto + hintmask 10101101 + -5 callgsubr + hintmask 10101011 + 10 callsubr + + + -32 callsubr + 77 56 -63 callsubr + 85 526 rmoveto + 82 hlineto + -5 callgsubr + 10 callsubr + + + 70 callgsubr + 70 45 hstem + 35 357 -13 callgsubr + 15 50 -77 callsubr + + + 149 callsubr + 50 45 hstem + -7 435 -75 callsubr + 210 640 -77 callsubr + + + 121 callgsubr + 109 128 callgsubr + 31 335 hintmask 11101100 + 4 callgsubr + 18 89 rmoveto + 82 hlineto + hintmask 11110100 + -5 callgsubr + hintmask 11101100 + 10 callsubr + + + 22 callgsubr + 38 45 -97 callgsubr + 82 651 -77 callsubr + + + 71 callgsubr + 77 128 callgsubr + 39 77 281 78 hintmask 11101110 + -104 callsubr + 70 523 rmoveto + 82 hlineto + hintmask 11110110 + -5 callgsubr + hintmask 11101110 + 10 callsubr + + + 12 callsubr + 70 45 -86 callsubr + 83 718 -77 callsubr + + + 45 callgsubr + 109 128 callgsubr + 56 78 hintmask 10110110 + -60 callgsubr + hintmask 01110110 + 83 callgsubr + hintmask 10110110 + -104 callgsubr + vhcurveto + 113 587 rmoveto + 82 hlineto + hintmask 10111010 + -5 callgsubr + hintmask 10110110 + 10 callsubr + + + 12 callsubr + 79 88 56 44 hstem + 79 78 127 84 100 83 vstem + -105 callgsubr + 35 727 -42 callgsubr + 21 24 26 24 -15 14 -22 -25 30 callgsubr + -197 144 rmoveto + 256 hlineto + 10 44 rlineto + -257 hlineto + endchar + + + 107 callgsubr + 71 44 hstemhm + 56 78 65 84 101 84 24 callsubr + 64 601 -74 callsubr + -190 159 rmoveto + 254 hlineto + 10 44 14 callsubr + endchar + + + 12 callsubr + 79 88 hstem + 79 78 115 84 100 84 vstem + -105 callgsubr + 23 727 -42 callgsubr + 22 24 26 24 -16 14 -21 127 callsubr + -76 112 95 callgsubr + + + 107 callgsubr + hstemhm + 56 78 65 84 101 84 -65 callsubr + 180 720 rmoveto + 113 96 -42 38 -102 -106 rlineto + -85 -147 -74 callsubr + endchar + + + 12 callsubr + 79 88 36 46 hstem + 79 78 127 84 100 83 vstem + -105 callgsubr + 35 727 -42 callgsubr + 21 24 26 24 -15 14 -22 -25 30 callgsubr + -108 124 rmoveto + 72 hlineto + 110 90 -31 26 -108 -70 1 callsubr + -78 70 -38 -25 rlineto + endchar + + + 107 callgsubr + 43 48 hstemhm + 56 78 65 84 101 84 24 callsubr + 146 732 rmoveto + 67 hlineto + 116 92 -24 30 -118 -74 1 callsubr + -89 74 -33 -29 rlineto + 3 -224 -74 callsubr + endchar + + + 12 callsubr + 79 88 hstem + 79 78 115 84 100 84 vstem + -105 callgsubr + 23 727 -42 callgsubr + 22 24 26 24 -16 14 -21 127 callsubr + -74 106 rmoveto + 39 21 -73 127 -57 -31 rlineto + endchar + + + 107 callgsubr + hstemhm + 56 78 65 84 101 84 -65 callsubr + 64 601 -74 callsubr + -71 113 rmoveto + 37 21 -64 122 -51 -30 rlineto + endchar + + + 373 0 66 128 62 56 134 callsubr + -59 59 77 54 hstemhm + -33 861 hintmask 11110110 + 313 380 rmoveto + hintmask 11101110 + 50 73 49 70 50 74 rrcurveto + 3 hlineto + -68 -341 rlineto + -168 hlineto + -262 -256 rmoveto + 89 hlineto + 131 194 rlineto + 198 hlineto + -39 -194 rlineto + 359 204 callgsubr + -282 23 callsubr + 228 204 callgsubr + -229 hlineto + hintmask 11110110 + 42 213 rlineto + 273 hlineto + 14 65 rlineto + -402 hlineto + 78 77 -29 callgsubr + endchar + + + 331 -12 61 180 52 -31 51 135 62 -61 61 116 54 hstemhm + 32 75 233 64 -49 49 258 66 hintmask 1100111101000000 + 157 -12 rmoveto + 72 65 36 60 64 hvcurveto + -54 23 60 -42 70 hhcurveto + 62 54 24 28 38 hvcurveto + -30 51 rlineto + -23 -30 -41 -19 -38 hhcurveto + -84 -52 69 111 17 hvcurveto + 304 hlineto + 6 18 11 37 38 vvcurveto + 100 -42 76 -109 -61 -61 -36 -59 -45 vhcurveto + 64 -11 -46 31 -66 hhcurveto + -59 -63 -22 -28 -51 hvcurveto + hintmask 1011011011000000 + 21 -56 rlineto + 26 46 48 18 42 hhcurveto + 60 24 -32 -59 -14 -1 -12 -4 -18 hvcurveto + -186 -6 -132 -51 -138 vvcurveto + hintmask 1100111101000000 + -76 57 -42 68 vhcurveto + 28 61 rmoveto + -45 -33 26 47 hvcurveto + hintmask 1010111101000000 + 81 88 43 145 4 vhcurveto + -7 -43 0 -30 5 -42 rrcurveto + hintmask 1100111101000000 + -58 -55 -57 -28 -41 hhcurveto + 230 232 rmoveto + 94 24 68 62 61 159 callsubr + -14 -3 -16 hvcurveto + -329 333 -72 callgsubr + + + -30 callgsubr + endchar + + + -30 callgsubr + 78 648 -78 callsubr + + + 85 -206 51 145 62 -41 -21 445 63 hstemhm + 39 77 -20 61 240 78 hintmask 10110110 + 171 2 callgsubr + 37 26 48 83 27 hvcurveto + 130 41 79 124 144 vvcurveto + 124 -72 71 -102 vhcurveto + hintmask 10111010 + -133 -129 -131 -184 -109 56 -71 88 -13 hvcurveto + hintmask 10110110 + 185 callsubr + hintmask 11011010 + 49 258 -96 callsubr + endchar + + + 85 -206 51 590 63 hstemhm + 39 77 -20 61 240 78 hintmask 11011000 + 171 2 callgsubr + 37 26 48 83 27 hvcurveto + 130 41 79 124 144 vvcurveto + 124 -72 71 -102 vhcurveto + hintmask 01101000 + -133 -129 -131 -184 -109 56 -71 88 -13 hvcurveto + hintmask 11011000 + 185 callsubr + 49 258 rmoveto + hintmask 01101000 + -67 -37 48 88 136 88 111 89 67 37 -49 -88 hvcurveto + hintmask 11011000 + 13 callsubr + -90 vhcurveto + 75 527 -81 callgsubr + + + -6 callsubr + 81 715 -78 callsubr + + + 126 callgsubr + 251 -20 hstemhm + 39 79 hintmask 11101100 + -22 callsubr + hintmask 11011100 + 99 callgsubr + hintmask 11101100 + -99 callgsubr + 92 510 -81 callgsubr + + + -64 callsubr + 100 750 -81 callgsubr + + + 9 callsubr + 258 37 -13 callsubr + + + 95 96 callgsubr + hstemhm + 394 78 hintmask 11010000 + -82 callgsubr + hintmask 10110000 + 89 callgsubr + 253 84 -28 callsubr + + + -11 callsubr + 171 51 -78 callsubr + + + -61 callsubr + -232 311 -81 callgsubr + + + 76 -229 39 92 37 49 66 547 67 hstemhm + 120 79 8 65 107 80 hintmask 11111010 + -98 callsubr + -140 -217 rmoveto + hintmask 11111110 + -85 callsubr + + + -28 129 callgsubr + 41 59 391 60 hstemhm + 72 73 8 65 54 73 hintmask 11111010 + -89 callgsubr + -126 -209 rmoveto + hintmask 11111110 + -85 callsubr + + + 80 129 callgsubr + 74 -21 589 67 hstem + 197 65 -30 callsubr + -202 -810 -73 callsubr + + + -105 129 callgsubr + 41 62 374 221 callgsubr + 2 65 hintmask 11111000 + -94 callgsubr + -152 -209 rmoveto + hintmask 11110100 + -85 callsubr + + + 198 callsubr + hstemhm + -124 330 hintmask 10110000 + 34 callsubr + hintmask 01110000 + -25 -57 rlineto + hintmask 10110000 + 70 callsubr + endchar + + + 175 0 58 117 50 -50 52 99 53 219 58 hstemhm + 460 76 -53 79 hintmask 10111100 + 53 hmoveto + 210 hlineto + 156 117 65 148 77 -53 44 -68 16 hvcurveto + 1 4 rlineto + hintmask 11011010 + 72 16 74 58 87 vvcurveto + 92 -77 49 -126 vhcurveto + -175 hlineto + -86 -429 -77 -4 rlineto + hintmask 10111100 + -11 -48 rlineto + 78 hlineto + 53 -117 rmoveto + 24 117 rlineto + 150 hlineto + 10 52 rlineto + -149 hlineto + 20 99 rlineto + 115 hlineto + 96 53 -46 -67 -108 -81 -47 -123 hvcurveto + -50 321 rmoveto + 44 219 rlineto + 90 hlineto + hintmask 10111010 + 98 45 -34 -61 -73 -60 -51 -124 hvcurveto + endchar + + + 59 -12 62 130 55 188 63 -49 61 hstemhm + 64 76 254 75 hintmask 11011100 + 218 -12 rmoveto + 61 66 25 33 57 hvcurveto + -24 52 rlineto + -28 -51 -48 -20 -46 hhcurveto + -65 -28 26 63 13 1 11 4 17 hvcurveto + 207 17 117 73 124 vvcurveto + 66 -46 38 -62 -61 -64 -35 -40 -47 vhcurveto + -3 hlineto + hintmask 11101100 + 5 63 rlineto + -63 hlineto + -57 -288 rlineto + -4 -21 -3 -24 -19 vvcurveto + hintmask 11011100 + -103 57 -43 97 vhcurveto + -64 247 rmoveto + 26 131 rlineto + 45 52 50 26 45 hhcurveto + 37 30 -24 -43 -79 -92 -45 -148 -11 hvcurveto + endchar + + + 109 -12 64 382 64 hstemhm + 39 79 229 75 -75 105.5 hintmask 11101000 + -80 callgsubr + -4 -20 -1 -8 -6 vvcurveto + -37 5 23 -13 30 hhcurveto + 18 15 3 5 15 hvcurveto + -1 59 rlineto + hintmask 11110000 + -3 -9 -3 0 -3 hhcurveto + -10 -5 5 10 4 0 5 2 10 hvcurveto + 80 400 rlineto + -62 hlineto + 135 callgsubr + hvcurveto + hintmask 11101000 + -24 callgsubr + -48 -54 -30 -51 hhcurveto + endchar + + + 109 -12 64 382 64 -63 63 hstemhm + 87.5 105.5 -75 75 229 79 hintmask 11010100 + 238 -12 rmoveto + 135 128 147 187 114 -55 62 -85 -61 -59 -35 -44 -50 hvcurveto + -3 hlineto + hintmask 10110100 + 4 16 1 8 5 vvcurveto + 37 -5 -23 13 -30 hhcurveto + -18 -15 -3 -5 -15 hvcurveto + 1 -59 rlineto + hintmask 10101100 + 4 9 3 0 3 hhcurveto + 10 5 -6 -10 -4 0 -5 -2 -9 hvcurveto + -81 -401 rlineto + 64 hlineto + 20 61 rlineto + 3 hlineto + hintmask 11010100 + -44 23 41 -29 52 hhcurveto + -3 64 rmoveto + -37 -34 21 51 -28 hvcurveto + 47 230 rlineto + 50 46 59 30 45 hhcurveto + 54 35 -41 -82 -135 -90 -124 -97 hvcurveto + endchar + + + 106 -12 64 -31 -21 426 65 171 62 hstemhm + 416 78 hintmask 10111000 + 234 -12 rmoveto + 134 126 146 184 112 -54 61 -86 -60 -56 -33 -39 -49 hvcurveto + -2 hlineto + 23 96 11 55 rlineto + 58 13 30 34 50 100 callgsubr + -91 -54 -56 -103 -20 hvcurveto + hintmask 01111000 + -113 -565 rlineto + 63 hlineto + hintmask 10111000 + 43 callsubr + 45 224 rlineto + 49 45 60 29 45 hhcurveto + 54 35 -39 -80 -133 -88 -122 -97 hvcurveto + endchar + + + 9 7 callgsubr + hstem + 322 78 vstem + 125 -12 rmoveto + 141 134 121 191 126 -72 72 -97 -69 -51 -25 -36 -43 hvcurveto + 33 -48 rlineto + 30 36 33 16 44 hhcurveto + 64 44 -56 -88 -140 -88 -99 -106 -43 -35 21 28 -24 hvcurveto + -43 -50 rlineto + -36 29 49 -27 64 hhcurveto + endchar + + + 19 -12 64 100 59 224 63 hstem + 37 78 218 66 vstem + 290 152 rmoveto + 34 12 -22 -21 -3 hvcurveto + -32 -5 -41 -25 -51 hhcurveto + -34 -28 9 16 -19 hvcurveto + 47 48 49 28 38 hhcurveto + -241 -221 rmoveto + 17 34 20 30 21 28 rrcurveto + -23 30 39 -12 45 hhcurveto + 96 76 59 72 6 hvcurveto + 53 5 -34 39 -64 hhcurveto + -58 -62 -33 -59 -60 hvcurveto + -7 19 -4 23 27 vvcurveto + 133 91 114 97 38 23 -14 -30 25 vhcurveto + 45 48 rlineto + 33 -29 -39 26 -58 hhcurveto + -141 -130 -134 -181 -51 13 -42 23 -32 hvcurveto + -25 -32 -24 -35 -23 -40 rrcurveto + endchar + + + 107 -217 63 142 64 382 64 214 -20 hstem + 39 79 198 73 vstem + 399 102 callsubr + 157 784 -15 callgsubr + -38 -190 -16 -95 rlineto + -3 hlineto + 43 -24 -39 28 -52 hhcurveto + -62 callsubr + -16 callsubr + 61 61 34 51 49 hvcurveto + 2 hlineto + -31 -143 -5 -31 -32 vvcurveto + -56 28 -28 55 vhcurveto + -192 269 46 callsubr + endchar + + + 107 139 callgsubr + 164 62 -12 -20 hstemhm + 39 79 hintmask 10110100 + -80 callgsubr + hintmask 01110100 + -8 -72 rlineto + 63 hlineto + 115 572 rlineto + 67 14 23 23 37 hhcurveto + 12 11 -4 -3 7 hvcurveto + hintmask 10101100 + 24 57 rlineto + hintmask 10110100 + 6 -12 -19 6 -20 hhcurveto + -84 -46 -50 -94 -19 hvcurveto + -13 -61 -17 -92 rlineto + -3 hlineto + 43 -24 -39 28 -102 callsubr + -49 -53 -30 -51 hhcurveto + endchar + + + 51 -26 callsubr + hstem + 375 72 vstem + 175 -12 rmoveto + 158 114 149 171 122 -71 68 -97 -136 -95 -122 -147 -6 hvcurveto + 320 hlineto + -101 -26 -72 -79 -90 hhcurveto + -47 -41 15 25 -32 hvcurveto + -35 -48 rlineto + -32 37 52 -21 67 hhcurveto + -59 293 rmoveto + 80 12 62 76 81 hhcurveto + 66 38 -48 -80 -9 0 -7 -2 -12 hvcurveto + endchar + + + 51 -12 61 164 52 173 60 hstem + 30 66 269 75 vstem + 181 -12 rmoveto + 125 134 124 183 132 -68 71 -103 -61 -48 -20 -23 -45 hvcurveto + 24 -53 rlineto + 20 35 39 16 40 hhcurveto + 78 46 -65 -108 -12 hvcurveto + -316 hlineto + -10 -27 -9 -37 -37 vvcurveto + -100 42 -76 109 vhcurveto + 9 61 rmoveto + -73 -21 53 55 18 2 21 4 17 hvcurveto + 255 hlineto + -104 -26 -70 -60 -71 hhcurveto + endchar + + + -109 387 45 101 39 107 45 hstem + 81 50 173 56 vstem + 187 387 rmoveto + 81 92 82 120 88 -47 47 -71 -39 -36 -13 -16 -30 hvcurveto + 18 -39 rlineto + 13 24 21 10 29 hhcurveto + 50 31 -33 -74 -6 hvcurveto + -210 hlineto + -5 -14 -8 -31 -23 vvcurveto + -62 29 -55 77 vhcurveto + 111 146 rmoveto + -63 -16 -47 -38 -42 hhcurveto + -46 -16 31 36 12 2 11 1 11 hvcurveto + endchar + + + 214 -12 61 145 52 190 62 hstem + 15 67 429 51 vstem + 186 -12 rmoveto + 129 119 135 174 4 hvcurveto + 82 30 185 callgsubr + 31 24 12 11 18 vhcurveto + -14 43 rlineto + -8 -11 -12 -6 -17 hhcurveto + -23 -14 206 callsubr + -148 -54 rlineto + 98 -15 -68 50 -91 hhcurveto + -68 -47 -20 -27 -49 hvcurveto + 25 -54 rlineto + 22 39 38 17 48 hhcurveto + 61 48 -35 -77 8 hvcurveto + -348 -127 rlineto + -4 -1 -7 -5 vvcurveto + -110 51 -83 120 vhcurveto + -104 179 rmoveto + 282 103 rlineto + -130 -12 -79 -91 -80 hhcurveto + -73 -38 46 72 hvcurveto + endchar + + + 199 callgsubr + 21 78 -6 75 hintmask 11110000 + 189 -12 rmoveto + 63 49 14 40 64 hvcurveto + -22 50 rlineto + -32 -52 -38 -11 -48 hhcurveto + -64 -42 29 49 62 54 40 90 hvcurveto + 68 220 callsubr + hintmask 11101000 + -54 hlineto + -69 -31 28 42 52 43 34 67 43 33 -13 -24 33 hvcurveto + 38 49 rlineto + 30 -38 -46 19 -57 hhcurveto + -117 -74 -61 -86 -44 31 -32 37 -12 hvcurveto + -3 vlineto + hintmask 11110000 + -76 -17 -64 -49 -85 vvcurveto + -77 70 -44 98 vhcurveto + endchar + + + 199 callgsubr + 301 76 -57 75 hintmask 11110000 + 157 -12 rmoveto + 119 101 71 100 55 -39 29 -48 14 hvcurveto + 2 vlineto + hintmask 11101000 + 57 20 48 46 66 vvcurveto + 72 -64 35 -76 -60 -54 -17 -31 -50 vhcurveto + 25 -52 rlineto + 25 41 37 14 43 hhcurveto + 47 36 -21 -43 -50 -44 -42 -89 hvcurveto + -53 hlineto + -11 -52 rlineto + 63 hlineto + hintmask 11110000 + 75 40 -27 -48 -62 -62 -43 -80 -49 -40 11 32 -38 hvcurveto + -33 -50 rlineto + -40 47 46 -14 65 hhcurveto + endchar + + + 66 -26 callsubr + hstemhm + 39 77 264 75 -56 75 hintmask 11111000 + 236 -12 rmoveto + 118 101 70 101 55 -39 29 -47 14 hvcurveto + 2 vlineto + hintmask 11110100 + 57 20 48 46 66 vvcurveto + 72 -66 35 -80 -158 -131 -131 -184 vhcurveto + hintmask 11111000 + -121 72 -74 125 vhcurveto + 9 61 rmoveto + -86 -43 49 90 137 90 112 110 hvcurveto + hintmask 11110100 + 46 37 -21 -43 -50 -45 -42 -88 hvcurveto + -14 hlineto + -10 -52 rlineto + 22 hlineto + hintmask 11111000 + 75 41 -27 -48 -62 -58 -43 -77 hvcurveto + endchar + + + -165 -217 63 -42 -21 446 73 callsubr + 52 205 -20 hstemhm + -113 377 hintmask 10011100 + -38 -217 rmoveto + 84 41 63 93 19 hvcurveto + 59 290 rlineto + 89 hlineto + 10 52 rlineto + -89 hlineto + 42 205 -15 callgsubr + hintmask 10101100 + -42 -205 -91 -5 rlineto + hintmask 10011100 + -9 -47 rlineto + 90 hlineto + -59 -291 59 callgsubr + hintmask 01011100 + -25 -57 rlineto + hintmask 10011100 + 70 callsubr + endchar + + + 106 -220 63 162 64 365 64 106 64 hstem + 39 79 vstem + -22 callsubr + 109 538 rlineto + 57 11 23 32 40 hhcurveto + 10 13 -3 -3 7 hvcurveto + 24 58 rlineto + 6 -13 -20 6 -18 hhcurveto + -84 -46 -54 -92 -19 hvcurveto + -19 -95 rlineto + -3 hlineto + 43 -24 -40 28 -101 callgsubr + endchar + + + 126 callgsubr + hstemhm + 39 79 hintmask 11101000 + -22 callsubr + hintmask 11011000 + 99 callgsubr + hintmask 11101000 + -99 callgsubr + endchar + + + 61 -12 61 158 52 178 61 hstem + 39 78 vstem + 228 -12 rmoveto + 69 62 26 33 41 hvcurveto + 42 212 rlineto + -175 hlineto + -11 -52 212 callsubr + -27 -128 rlineto + -17 -24 -35 -13 -37 hhcurveto + -80 -46 52 88 136 92 112 114 50 30 -19 -26 24 hvcurveto + 44 48 rlineto + 30 -28 -42 28 -74 hhcurveto + -160 -128 -137 -177 -128 79 -68 110 hvcurveto + endchar + + + 18 -224 56 hstem + 38 65 85 65 vstem + 125 -224 rmoveto + 80 48 66 83 30 -3 33 -17 61 hvcurveto + 248 437 -15 callgsubr + -137 -254 -26 -48 -22 -44 -25 -51 rlinecurve + -4 hlineto + -6 49 -5 45 -6 49 -38 254 rcurveline + -76 hlineto + 74 -428 rlineto + -60 -79 -35 -61 -57 vvcurveto + -53 34 -32 53 vhcurveto + 10 56 rmoveto + -18 -14 13 23 40 31 54 40 53 20 callgsubr + 8 -33 2 -33 -30 vvcurveto + -50 -16 -37 -37 vhcurveto + endchar + + + 72 -12 61 386 63 hstem + 70 74 190 74 vstem + 209 -12 rmoveto + 127 72 96 100 66 -37 60 -44 56 hvcurveto + 41 46 38 28 37 hhcurveto + 18 14 -4 -10 14 hvcurveto + 32 56 rlineto + 13 -16 -26 8 -28 hhcurveto + -52 -57 -35 -52 -59 hvcurveto + 51 -41 -47 36 -56 hhcurveto + -27 -28 -7 -13 -21 hvcurveto + 22 -58 rlineto + 8 13 15 7 17 hhcurveto + 36 31 -25 -40 33 hvcurveto + -98 -78 -67 -85 -92 vvcurveto + -80 56 -47 83 vhcurveto + 9 61 rmoveto + -51 -23 32 44 64 55 78 74 60 hvcurveto + 32 -42 29 -48 -58 vvcurveto + -68 -44 -62 -72 vhcurveto + endchar + + + 100 -12 66 hstem + 56 78 vstem + 282 -205 rmoveto + 77 hlineto + 138 691 rlineto + -76 hlineto + -68 -344 rlineto + -61 -62 -46 -27 -39 -101 callsubr + 59 53 35 47 56 vhcurveto + 4 hlineto + -17 -61 rlineto + endchar + + + 89 21 -21 424 225 callsubr + 31 hmoveto + 76 hlineto + 67 337 rlineto + 60 4 callsubr + 23 -25 -50 -17 -3 -14 -5 -25 hvcurveto + -59 -293 rlineto + 76 hlineto + 61 303 125 callsubr + 19 94 rlineto + 58 13 30 34 50 100 callgsubr + -91 -54 -56 -103 -20 hvcurveto + endchar + + + 89 -217 63 578 225 callsubr + 246 -217 rmoveto + 83 42 62 94 19 hvcurveto + 73 364 125 callsubr + 20 97 rlineto + 51 12 31 38 49 100 callgsubr + -90 -54 -57 -100 -20 hvcurveto + -114 -567 rlineto + 76 hlineto + 67 337 rlineto + 60 4 callsubr + 23 -25 -50 -17 -3 -14 -5 -25 hvcurveto + -72 -355 rlineto + -58 -12 -22 -34 -37 hhcurveto + -22 -11 195 callsubr + -25 -57 139 callsubr + endchar + + + -160 21 -21 229 73 callsubr + 52 205 -20 150 103 0 -20 hstemhm + 152 107 hintmask 10110110 + 43 hmoveto + 76 hlineto + 46 229 rlineto + 89 hlineto + 10 52 rlineto + -88 hlineto + 41 205 -15 callgsubr + hintmask 11010110 + -41 -205 -92 -5 rlineto + hintmask 10111010 + -9 -47 rlineto + 91 hlineto + 112 387 -103 callsubr + + + -160 229 73 callsubr + 52 hstemhm + -2 266 hintmask 01100000 + 43 hmoveto + 76 hlineto + 46 229 rlineto + 89 hlineto + 10 52 rlineto + -88 hlineto + 41 205 -15 callgsubr + hintmask 10100000 + -41 -205 -92 -5 rlineto + hintmask 01100000 + -9 -47 rlineto + 91 hlineto + endchar + + + -182 -12 64 hstemhm + 44 48 callsubr + hintmask 10100000 + 40 callgsubr + -1 59 rlineto + hintmask 11000000 + -48 callsubr + 81 397 rlineto + hintmask 10100000 + -77 hlineto + -79 -393 166 callgsubr + + + -100 0 203 callgsubr + hstem + -1 335 vstem + -1 hmoveto + 237 hlineto + 13 62 rlineto + -81 hlineto + 73 362 rlineto + 81 129 callsubr + -237 195 callgsubr + 80 hlineto + -73 -362 31 callgsubr + endchar + + + -56 -12 64 261 59 26 59 hstemhm + 116 48 callsubr + hintmask 10101000 + 181 -12 rmoveto + 21 14 3 5 13 hvcurveto + -1 59 rlineto + hintmask 11110000 + -48 callsubr + 47 237 rlineto + -8 15 17 -5 20 hhcurveto + 165 callgsubr + hhcurveto + -17 -13 7 9 -13 hvcurveto + 65 324 -15 callgsubr + hintmask 10101000 + -54 -270 rlineto + 9 -15 -18 6 -22 hhcurveto + 155 callgsubr + 18 14 -8 -11 14 hvcurveto + -57 -286 166 callgsubr + + + -108 318 52 75 45 hstem + 18 48 vstem + 129 370 rmoveto + -41 -22 15 24 21 12 15 25 34 12 -30 -29 1 hvcurveto + -3 -16 rlineto + -74 -370 rmoveto + 76 hlineto + 64 318 rlineto + 108 hlineto + 10 52 rlineto + -108 hlineto + 69 342 -15 callgsubr + -51 -257 rlineto + 20 -13 -21 15 -33 hhcurveto + -48 -31 -40 -40 -53 39 -39 76 hvcurveto + 3 hlineto + endchar + + + -188 -217 63 hstem + 11 78 vstem + 99 -217 rmoveto + 26 29 8 7 16 hvcurveto + -12 57 rlineto + -4 -10 -13 -5 -13 120 callsubr + 3 17 hvcurveto + 157 784 -15 callgsubr + -156 -781 rlineto + -4 210 callsubr + -56 29 -28 59 vhcurveto + endchar + + + 140 -216 62 289 49 240 62 hstem + 431 77 vstem + 31 83 callsubr + 282 hlineto + -246 136 callgsubr + 71 41 -34 -71 -106 -84 -78 -79 -70 -41 31 173 callsubr + 127 116 111 156 callgsubr + -374 hlineto + 45 226 -15 callgsubr + endchar + + + 182 callsubr + 166 -12 rmoveto + 51 60 36 59 62 hvcurveto + -53 7 28 -42 77 hhcurveto + 50 58 37 48 51 20 callgsubr + -7 -73 41 callsubr + -69 -344 rlineto + -61 -57 -52 -27 -28 hhcurveto + -48 -22 26 49 -8 callgsubr + hvcurveto + 60 300 rlineto + -76 hlineto + -69 -344 rlineto + -61 -58 -51 -27 -28 hhcurveto + -48 -23 -95 callsubr + -5 -26 -3 92 callgsubr + 34 -47 80 vhcurveto + endchar + + + 182 callsubr + 552 -205 rmoveto + 77 hlineto + 138 691 rlineto + -76 hlineto + -69 -344 rlineto + -61 -57 -52 -27 -28 hhcurveto + -48 -22 26 49 -8 callgsubr + hvcurveto + 60 300 rlineto + -76 hlineto + -69 -344 rlineto + -61 -58 -51 -27 -28 hhcurveto + -48 -23 -95 callsubr + -5 -26 -3 92 callgsubr + 34 -47 80 51 60 36 59 62 vhcurveto + -53 7 28 -42 77 hhcurveto + 49 61 37 48 89 callsubr + -26 -112 rlineto + endchar + + + 369 -217 63 -42 -21 238 78 callsubr + hstemhm + 383 76 209 78 hintmask 10110110 + 519 -217 rmoveto + 83 42 63 93 19 hvcurveto + 75 371 rlineto + 5 27 3 17 23 vvcurveto + 75 -34 46 -81 -50 -60 -36 -59 -62 vhcurveto + 53 -7 -28 42 -77 hhcurveto + -51 -58 179 callgsubr + hintmask 10101110 + 89 callgsubr + -96 -486 rlineto + 76 hlineto + hintmask 10110110 + -39 callsubr + -74 157 callgsubr + hintmask 01110110 + -25 -57 rlineto + hintmask 10110110 + 70 callsubr + endchar + + + 95 -217 63 586 66 hstem + 394 78 vstem + -48 -217 rmoveto + 83 43 62 94 18 hvcurveto + 80 405 rlineto + 61 4 callsubr + 68 callgsubr + 62 310 -51 callsubr + -61 -54 -37 -48 -54 vhcurveto + -4 hlineto + 89 callgsubr + -109 -548 rlineto + -57 -11 -23 -35 -37 hhcurveto + -20 -9 4 7 -10 hvcurveto + -26 -57 rlineto + -11 20 20 -6 29 hhcurveto + endchar + + + 95 -217 63 586 66 hstemhm + 305 79 10 78 vstemhm + 394 -217 rmoveto + 26 29 8 7 16 hvcurveto + -13 57 rlineto + -4 -10 -12 -5 -13 120 callsubr + 3 17 hvcurveto + hintmask 11010000 + 76 382 -51 callsubr + -61 -54 -37 -48 -54 vhcurveto + -4 hlineto + 89 callgsubr + -97 -486 rlineto + 76 hlineto + 22 callsubr + 4 callsubr + 22 -53 callgsubr + hintmask 11110000 + -74 -369 rlineto + -5 210 callsubr + -56 30 -28 59 vhcurveto + endchar + + + 94 0 107 -107 486 -107 107 hstemhm + 31 461 hintmask 01010000 + 31 hmoveto + 72 hlineto + 42 202 rlineto + hintmask 10110000 + 10 52 8 62 8 63 rrcurveto + 4 hlineto + 11 -30 15 -45 11 -29 113 -275 rcurveline + 69 hlineto + 98 486 rlineto + -73 hlineto + -40 -202 -10 -52 -9 -62 -9 -63 rlinecurve + -3 hlineto + -12 30 -14 45 -11 29 -113 275 rcurveline + -70 hlineto + endchar + + + 85 -12 61 178 55 155 61 hstem + 39 73 290 73 vstem + 212 -12 rmoveto + 133 130 131 184 121 -69 74 -105 -133 -129 -131 -184 -121 68 -74 105 hvcurveto + 82 449 rmoveto + 71 37 -50 -89 hvcurveto + -5 0 -6 -5 vvcurveto + -276 hlineto + 90 29 67 65 72 hhcurveto + -75 -388 rmoveto + -71 -36 50 89 13 1 13 1 13 hvcurveto + 280 hlineto + -102 -24 -73 -76 -78 hhcurveto + endchar + + + 248 -12 64 -52 58 171 52 147 58 -51 63 hstemhm + 39 77 hintmask 10110100 + 227 -12 rmoveto + hintmask 01110100 + 27 29 2 10 40 hvcurveto + 270 hlineto + 12 58 rlineto + -225 hlineto + 34 171 rlineto + 179 220 callsubr + -180 hlineto + 29 147 rlineto + 216 hlineto + 11 58 rlineto + -261 hlineto + hintmask 01101100 + 10 -36 -27 2 -32 hhcurveto + -151 -134 -129 -187 hvcurveto + hintmask 10110100 + -129 78 -65 110 vhcurveto + 14 64 rmoveto + -74 -51 43 97 hvcurveto + hintmask 10101100 + 139 91 104 109 20 22 -3 -6 20 vhcurveto + -73 -364 rlineto + hintmask 10110100 + -6 -22 -24 -4 -18 hhcurveto + endchar + + + 253 -12 64 -64 68 378 63 hstemhm + 34 77 452 77 hintmask 01111000 + 178 -12 rmoveto + 60 47 34 64 27 20 callgsubr + -72 16 54 -26 62 hhcurveto + 109 83 108 163 149 -116 89 -136 -213 -141 -157 -192 -115 74 -45 70 hvcurveto + hintmask 10111000 + 16 64 rmoveto + -43 -40 26 79 146 105 131 162 106 79 -69 -111 hvcurveto + hintmask 01111000 + -121 -57 -77 -63 -48 -32 22 56 17 6 25 5 25 vhcurveto + 22 109 rlineto + -72 hlineto + -26 -113 rlineto + hintmask 10111000 + -90 -21 -30 -55 -53 hhcurveto + endchar + + + 218 -205 917 hstem + 39 77 415 77 vstem + 199 -205 rmoveto + 70 hlineto + 39 196 rlineto + 159 7 141 105 174 vvcurveto + 134 -98 71 -101 11 vhcurveto + 44 219 rlineto + -71 hlineto + -43 -217 rlineto + -160 -7 -140 -104 -175 vvcurveto + -134 99 -72 100 -11 vhcurveto + 293 280 rmoveto + -126 -99 -90 -112 -7 vhcurveto + 77 385 rlineto + 69 -9 65 -53 -100 vvcurveto + -415 -59 rmoveto + 127 99 90 112 6 vhcurveto + -77 -386 rlineto + -69 10 -65 53 100 vvcurveto + endchar + + + -88 -12 69 -57 57 hstemhm + -40 349 hintmask 10100000 + 6 -12 rmoveto + 60 51 46 59 39 20 callgsubr + hintmask 01100000 + -11 -93 41 callsubr + -61 -306 rlineto + hintmask 10100000 + 67 callsubr + endchar + + + -88 -12 69 -57 57 hstemhm + -40 396 hintmask 10100000 + 6 -12 rmoveto + 60 51 46 59 39 20 callgsubr + hintmask 01100000 + -11 -93 rlineto + 63 hlineto + 144 712 rlineto + -76 hlineto + -108 -532 rlineto + hintmask 10100000 + 67 callsubr + endchar + + + -88 -217 63 142 69 hstem + 120 73 vstem + 203 102 callsubr + 111 558 rlineto + -76 hlineto + -61 -306 rlineto + 67 callsubr + 60 52 46 59 39 20 callgsubr + -38 -167 -3 -34 -25 vvcurveto + -56 28 -28 55 vhcurveto + endchar + + + -88 -217 63 583 69 -12 -20 23 -20 hstemhm + 11 78 hintmask 11001000 + 99 -217 rmoveto + 26 29 8 7 16 hvcurveto + -12 57 rlineto + -4 -10 -13 -5 -13 120 callsubr + 3 17 hvcurveto + 75 379 rlineto + 79 41 54 43 48 hhcurveto + 18 14 -3 -5 10 hvcurveto + hintmask 10011000 + 27 68 rlineto + hintmask 11001000 + -9 callgsubr + hintmask 10101000 + 143 callsubr + -111 -555 rlineto + -4 210 callsubr + hintmask 11001000 + -56 29 -28 59 vhcurveto + endchar + + + -95 429 69 hstem + 31 343 vstem + 31 hmoveto + 76 hlineto + 58 295 rlineto + 93 18 45 41 60 hhcurveto + 24 13 -2 -9 22 hvcurveto + 27 63 rlineto + 10 -22 -25 7 -34 hhcurveto + -101 -74 -62 -123 -25 hvcurveto + endchar + + + 41 197 51 175 63 hstem + 368 78 vstem + 31 hmoveto + 76 hlineto + 40 197 rlineto + 90 hlineto + 80 -197 rlineto + 84 hlineto + -91 205 rlineto + 83 21 53 61 81 vvcurveto + 87 -66 31 -93 vhcurveto + -159 hlineto + 28 -238 rmoveto + 35 175 rlineto + 76 hlineto + 67 34 -19 -53 -58 -48 -45 -85 hvcurveto + endchar + + + 41 0 63 175 51 hstem + 331 76 vstem + 31 hmoveto + 170 hlineto + 122 84 70 102 60 -32 33 -50 15 hvcurveto + 175 206 rlineto + -85 hlineto + -160 -197 rlineto + -2 -2 0 -3 hhcurveto + -83 hlineto + 40 197 -15 callgsubr + -9 -423 rmoveto + 35 175 rlineto + 76 hlineto + 66 35 -20 -52 -59 -48 -44 -86 hvcurveto + endchar + + + -28 -217 63 142 59 391 60 hstem + -37 66 43 73 127 73 vstem + 56 -217 rmoveto + 20 22 6 7 15 hvcurveto + -9 58 rlineto + -4 -10 -11 -4 -14 hhcurveto + -28 -12 16 33 16 1 21 20 88 hvcurveto + -21 36 41 -11 36 hhcurveto + -90 callsubr + -50 -38 14 46 -73 vhcurveto + -4 -2 rlineto + -35 -139 -6 -47 -39 vvcurveto + -62 36 -35 57 vhcurveto + endchar + + + -192 -217 63 817 63 hstem + -124 497 vstem + -49 -217 rmoveto + 82 44 62 94 18 hvcurveto + 125 623 rlineto + 66 13 21 35 54 hhcurveto + 14 13 -3 -6 12 hvcurveto + 26 57 rlineto + 8 -15 -24 7 -23 hhcurveto + -100 -46 -59 -102 -20 hvcurveto + -127 -627 rlineto + -58 -12 -22 -34 -37 hhcurveto + -21 -12 4 8 -13 hvcurveto + -25 -56 139 callsubr + endchar + + + -165 -217 63 383 73 callsubr + 52 382 63 hstemhm + -113 497 hintmask 10111000 + -38 -217 rmoveto + 82 44 62 94 18 hvcurveto + 58 290 rlineto + 90 hlineto + 10 52 rlineto + -89 hlineto + 56 281 rlineto + 66 13 21 35 54 hhcurveto + 14 13 -3 -6 12 hvcurveto + 26 57 rlineto + 8 -15 -24 7 -23 hhcurveto + -100 -46 -59 -102 -20 hvcurveto + hintmask 11011000 + -58 -284 -91 -5 rlineto + hintmask 10111000 + -9 -47 rlineto + 90 hlineto + -59 -291 rlineto + -58 -12 -22 -34 -37 hhcurveto + -21 -12 4 8 -13 hvcurveto + -25 -56 139 callsubr + endchar + + + -105 -217 62 579 82 callgsubr + hstemhm + 26 78 hintmask 10110000 + 142 -217 112 callgsubr + 100 483 152 callsubr + hintmask 11010000 + -36 -134 -76 -5 rlineto + hintmask 10110000 + 128 callsubr + -100 -479 rlineto + -3 -19 -2 -15 -20 vvcurveto + 193 callsubr + vhcurveto + endchar + + + 108 -12 66 -33 -21 259 73 callsubr + 52 -52 227 hstemhm + 71 78 hintmask 10010100 + 186 -46 callgsubr + hintmask 01010100 + 121 callsubr + 52 259 rlineto + 83 220 callsubr + -84 hlineto + hintmask 10001100 + 35 175 rlineto + -76 hlineto + hintmask 10010100 + -35 -175 rlineto + -217 hlineto + hintmask 10001100 + 36 175 -15 callgsubr + hintmask 10100100 + -35 -175 -84 -5 rlineto + hintmask 10010100 + -9 -47 rlineto + 83 hlineto + -17 -83 rlineto + -6 -26 -2 92 callgsubr + 33 -47 82 vhcurveto + -37 141 rmoveto + -8 callgsubr + vhcurveto + 15 73 rlineto + 216 hlineto + -23 -117 rlineto + -61 -59 -47 -27 -38 hhcurveto + -50 -22 26 49 hvcurveto + endchar + + + 85 -12 64 372 62 -50 50 hstemhm + 38 77 283 74 hintmask 11011000 + 216 -12 rmoveto + 146 110 134 145 56 -21 67 -28 32 hvcurveto + 2 102 vlineto + 13 62 rlineto + -181 hlineto + hintmask 10111000 + -10 -50 rlineto + 33 -32 18 -63 -54 vvcurveto + -131 -81 -104 -90 -72 -40 45 83 vhcurveto + hintmask 11011000 + 103 61 96 75 57 vhcurveto + 9 50 rlineto + -181 195 callgsubr + 101 -2 hlineto + -64 -49 -65 -98 -112 vvcurveto + -104 66 -71 112 vhcurveto + endchar + + + 95 -12 66 381 63 -12 -20 hstemhm + 61 76 274 78 hintmask 11011000 + 204 -12 rmoveto + 154 131 182 202 90 -44 36 -66 -23 -18 -2 -6 -17 hvcurveto + -61 vlineto + 4 11 9 2 9 hhcurveto + 39 22 -19 -55 -164 -105 -143 -91 -50 -28 22 69 19 5 22 5 24 hvcurveto + hintmask 10111000 + 56 276 -15 callgsubr + -56 -277 rlineto + -6 -27 -3 -25 -21 vvcurveto + hintmask 11011000 + -102 54 -46 89 vhcurveto + endchar + + + 18 426 60 hstem + -27 422 vstem + 324 486 rmoveto + -92 hlineto + -259 -486 rlineto + 77 hlineto + 143 281 25 48 24 49 23 48 rlinecurve + 4 hlineto + 5 -47 4 -51 5 -47 36 -281 rcurveline + 76 hlineto + endchar + + + 277 0 77 345 64 hstemhm + 256 64 -50.5 60.5 hintmask 11010000 + 603 486 rmoveto + -92 hlineto + -118 -266 -20 -46 -19 -49 -20 -48 rlinecurve + -4 hlineto + -1 48 -1 49 -1 46 -14 266 rcurveline + -95 hlineto + -221 -486 rlineto + 72 hlineto + hintmask 11100000 + 127 286 21 46 16 45 19 45 rlinecurve + 4 hlineto + 2 -45 1 -45 2 -46 rrcurveto + hintmask 11010000 + 17 -286 rlineto + 75 hlineto + 128 286 21 46 17 45 20 45 rlinecurve + 4 hlineto + 1 -45 1 -45 1 -46 16 -286 rcurveline + 76 hlineto + endchar + + + 18 662 62 hstem + -27 554 vstem + -27 hmoveto + 76 hlineto + 140 273 24 47 25 52 23 46 rlinecurve + 4 hlineto + 4 -46 5 -54 7 -45 38 -273 rcurveline + 76 hlineto + -83 487 33 64 rlineto + 68 36 33 43 52 hhcurveto + 13 13 -4 -5 10 hvcurveto + 25 57 rlineto + 8 -15 -23 6 -18 hhcurveto + -91 -53 -63 -104 -53 hvcurveto + endchar + + + -22 0 486 hstem + 47 405 vstem + 117 hmoveto + 76 hlineto + 34 168 225 318 rlineto + -79 hlineto + -93 -138 -26 -39 -26 -40 -27 -41 rlinecurve + -3 hlineto + -11 42 -10 38 -11 40 -40 138 rcurveline + -79 hlineto + 103 -318 rlineto + endchar + + + -12 -217 63 154 203 callgsubr + hstem + 251 71 vstem + 336 -217 rmoveto + 24 25 7 6 14 hvcurveto + -6 58 rlineto + -3 -10 -12 -5 -13 hhcurveto + -24 -12 13 28 21 1 17 30 137 hvcurveto + -254 hlineto + 323 379 8 45 rlineto + -317 195 callgsubr + 221 hlineto + -323 -380 -8 -44 rlineto + 282 hlineto + -18 -80 -3 -26 -25 vvcurveto + -58 29 -28 56 vhcurveto + endchar + + + 10 0 58 -58 62 98 47 217 62 hstemhm + 387 48 hintmask 01111000 + 354 160 rmoveto + 21 12 -12 -20 hvcurveto + hintmask 10111000 + -28 -33 -42 -68 vhcurveto + -15 -15 0 -15 hhcurveto + hintmask 01111000 + 70 42 39 32 32 hhcurveto + -179 -241 rmoveto + 12 30 11 27 12 24 rrcurveto + 45 hlineto + 130 50 81 60 43 -31 23 -42 -55 -56 -54 -94 -55 hvcurveto + -33 1 -34 1 -34 1 323 379 rcurveline + 8 45 rlineto + -313 195 callgsubr + 221 hlineto + -323 -380 -8 -44 rlineto + 175 hlineto + -11 -22 -10 -24 -11 -25 rrcurveto + endchar + + + -12 -217 63 289 49 240 62 hstem + 279 77 vstem + 113 -217 rmoveto + 127 116 112 156 callgsubr + -336 hlineto + -12 -62 rlineto + 243 hlineto + -246 136 callgsubr + 71 41 -34 -71 -107 -84 -77 -79 -70 -41 30 173 callsubr + endchar + + + -20 661 63 hstem + 370 78 vstem + 95 hmoveto + 76 hlineto + 58 290 72 callsubr + endchar + + + -20 661 63 hstem + 70 78 vstem + 139 hmoveto + 76 hlineto + 63 322 72 callgsubr + endchar + + + 51 -12 67 257 94 251 67 hstem + 41 73 99 90 100 73 vstem + 190 -12 rmoveto + 171 115 271 261 148 -66 56 -84 -171 -114 -271 -260 -149 65 -56 84 hvcurveto + 12 67 rmoveto + -49 -39 33 110 210 87 249 114 48 40 -32 -111 -209 -87 -250 -114 hvcurveto + 48 257 rmoveto + 27 26 24 31 23 -16 16 -21 -28 -25 -23 -33 -21 16 -17 21 hvcurveto + endchar + + + 50 0 58 171 52 147 58 hstemhm + 364 75 -56 75 hintmask 11110000 + 31 hmoveto + 191 hlineto + 139 78 70 89 57 -40 27 -47 14 hvcurveto + 1 2 rlineto + hintmask 11101000 + 58 20 47 43 64 vvcurveto + 71 -65 29 -84 vhcurveto + -181 hlineto + 36 -205 rmoveto + 29 147 rlineto + 93 hlineto + 67 30 -20 -43 -42 -44 -42 -87 hvcurveto + -133 -223 rmoveto + 34 171 rlineto + 92 hlineto + hintmask 11110000 + 81 38 -27 -48 -47 -45 -49 -97 hvcurveto + endchar + + + 104 221 67 hstem + 31 470 vstem + 31 hmoveto + 76 hlineto + 44 221 rlineto + 220 hlineto + -44 -221 rlineto + 77 -36 callgsubr + -76 hlineto + -40 -198 rlineto + -220 hlineto + 40 198 -15 callgsubr + endchar + + + -151 -217 63 91 55 595 103 hstem + -124 62 270 107 vstem + 170 -263 rmoveto + 53 22 -19 60 -26 50 -28 37 rlinecurve + 9 21 7 24 5 26 101 509 rcurveline + -76 hlineto + -105 -520 -1 -3 rlineto + 19 -29 -30 10 -31 hhcurveto + -85 -39 -58 -54 -56 39 -41 71 57 44 25 42 31 hvcurveto + 20 -31 17 -37 15 -45 rrcurveto + -232 149 123 callgsubr + 319 701 -103 callsubr + + + -151 -217 63 91 55 hstem + -124 62 vstem + -62 -114 123 callgsubr + 232 -149 rmoveto + 53 22 -19 60 -26 50 -28 37 rlinecurve + 9 21 7 24 5 26 101 509 rcurveline + -76 hlineto + -105 -520 -1 -3 rlineto + 19 -29 -30 10 -31 hhcurveto + -85 -39 -58 -54 -56 39 -41 71 57 44 25 42 31 hvcurveto + 20 -31 17 -37 15 -45 rrcurveto + endchar + + + -30 0 62 hstem + 31 305 vstem + 31 hmoveto + 292 hlineto + 13 62 rlineto + -216 hlineto + 85 424 -15 callgsubr + endchar + + + 206 callgsubr + 376 78 vstem + 101 hmoveto + 76 215 callsubr + 114 220 callsubr + -115 hlineto + 20 98 72 callsubr + -26 -131 rlineto + -34 hlineto + -87 -5 -9 -47 rlineto + 120 hlineto + endchar + + + 206 callgsubr + 76 78 vstem + 145 hmoveto + 76 hlineto + 27 140 rlineto + 116 220 callsubr + -116 hlineto + 25 130 72 callgsubr + -19 -98 rlineto + -32 hlineto + -88 -5 -9 -47 rlineto + 119 hlineto + endchar + + + 387 -216 62 142 64 83 50 239 62 -52 64 hstemhm + 39 79 560 77 hintmask 11110110 + 169 -12 rmoveto + 57 56 35 49 46 20 callgsubr + -8 -72 rlineto + 63 hlineto + 86 424 rlineto + 248 hlineto + -226 136 callgsubr + 59 33 -33 -69 -108 -77 -79 -69 -63 -31 31 31 -27 hvcurveto + -43 -45 rlineto + -40 31 45 -39 84 hhcurveto + 117 110 113 145 82 -51 72 -104 -11 hvcurveto + 218 256 8 45 rlineto + -341 hlineto + 46 226 -15 callgsubr + hintmask 11101110 + -38 -190 -16 -95 rlineto + -3 hlineto + 42 -24 -34 29 -47 hhcurveto + -130 -123 -151 -193 hvcurveto + hintmask 11110110 + -107 51 -59 79 vhcurveto + 28 64 rmoveto + -48 -31 37 77 hvcurveto + hintmask 11101110 + 140 84 128 93 33 28 -22 -50 28 vhcurveto + 27 callsubr + hintmask 11110110 + -61 -48 -47 -32 -48 hhcurveto + endchar + + + 115 -217 63 143 67 368 82 callgsubr + 177 63 hstemhm + 73 78 hintmask 11011100 + 258 -217 rmoveto + 82 44 62 94 18 hvcurveto + 125 623 rlineto + 66 13 22 35 53 hhcurveto + 14 14 -3 -6 11 hvcurveto + 26 57 rlineto + 8 -15 -24 7 -23 hhcurveto + -100 -46 -59 -102 -20 hvcurveto + -16 -79 rlineto + -215 hlineto + 27 134 rlineto + -65 hlineto + hintmask 11101100 + -36 -134 -76 -5 rlineto + hintmask 11011100 + 128 callsubr + -50 -246 rlineto + -6 -27 -2 -17 -23 vvcurveto + -75 33 -47 82 56 54 36 45 50 vhcurveto + 4 hlineto + -26 -132 rlineto + -58 -11 -23 -34 -38 hhcurveto + -21 -12 4 8 -13 hvcurveto + -25 -56 139 callsubr + -35 273 rmoveto + -50 -22 25 50 17 2 14 6 25 hvcurveto + 48 237 rlineto + 217 hlineto + -57 -280 rlineto + -61 -60 -47 -27 -37 hhcurveto + endchar + + + -188 434 256 hstem + 112 150 101 callgsubr + endchar + + + -269 534 35 125 34 hstem + 178 52 vstem + 85 534 104 callsubr + + + -269 537 34 125 35 hstem + 89 52 vstem + 195 537 93 callgsubr + + + -133 821 50 hstem + 106 59 vstem + 151 171 callgsubr + 42 211 rlineto + -59 39 -27 34 46 vvcurveto + 51 38 45 63 42 23 -21 -24 19 vhcurveto + 38 38 rlineto + 28 -22 -35 29 -61 hhcurveto + -98 -66 -68 -86 -58 34 -39 48 -37 hvcurveto + endchar + + + -322 564 182 hstem + 90 95 vstem + 90 564 rmoveto + 52 hlineto + 43 182 rlineto + -66 hlineto + endchar + + + -168 601 54 hstem + 73 264 vstem + 73 601 -72 callgsubr + + + -217 211 callsubr + 109 215 vstem + 144 579 -81 callgsubr + + + -217 208 callgsubr + 73 180 vstem + 205 570 -28 callsubr + + + -322 -263 196 hstem + -74 97 vstem + -74 169 callsubr + + + -242 0 138 211 137 hstem + -22 237 vstem + -22 hmoveto + 143 hlineto + -38 138 rlineto + -11 hlineto + 38 211 175 callgsubr + + + -242 349 137 hstem + 72 143 vstem + 110 349 175 callgsubr + + + -245 194 52 hstem + 34 51 vstem + 103 194 rmoveto + 31 24 12 11 18 hvcurveto + -14 43 rlineto + -8 -12 -12 -6 -16 hhcurveto + -24 -13 206 callsubr + -174 -64 -7 -56 118 43 185 callgsubr + vhcurveto + endchar + + + -123 248 41 hstem + 92 50 55 50 vstem + 162 289 rmoveto + -14 -6 9 13 22 16 33 25 37 hvcurveto + 3 hlineto + 6 -20 5 -21 -18 vvcurveto + -30 -12 -25 -23 vhcurveto + -9 -41 rmoveto + 59 35 49 51 24 -7 25 -11 35 hvcurveto + 162 284 rlineto + -57 hlineto + -90 -166 -15 -29 -15 -23 -15 -29 rlinecurve + -3 hlineto + -2 29 -6 23 -3 29 -24 166 rcurveline + -60 hlineto + 51 -283 rlineto + -39 -56 -21 -32 -39 vvcurveto + -35 25 -23 36 vhcurveto + endchar + + + 208 callgsubr + 17 180 vstem + 149 570 -28 callsubr + + + 693 177 hstem + 23 177 vstem + 157 693 -13 callsubr + + + 566 200 hstem + 29 142 vstem + 118 566 rmoveto + 53 12 -66 188 -76 -17 rlineto + endchar + + + 211 callsubr + 53 215 vstem + 88 579 -81 callgsubr + + + 703 160 hstem + 77 202 vstem + 107 703 -78 callsubr + + + 558 215 hstem + 70 153 vstem + 120 558 rmoveto + 103 190 -72 25 -81 -198 rlineto + endchar + + + 684 56 hstem + -39 310 vstem + -8 568 -74 callgsubr + + + 793 45 hstem + -9 295 vstem + 24 699 -71 callsubr + + + 645 51 hstem + -110 359 vstem + 6 570 -62 callgsubr + 1 34 rmoveto + 39 26 -78 121 -53 -31 rlineto + endchar + + + 768 47 hstem + -60 322 vstem + 34 699 -33 callgsubr + 25 49 146 callsubr + endchar + + + 645 51 hstem + -19 389 vstem + 6 570 78 callgsubr + + + 768 47 hstem + 4 370 vstem + 34 699 79 callgsubr + + + 641 51 18 51 -9 51 hstemhm + -19 305 hintmask 10110000 + 6 570 rmoveto + 118 71 rlineto + 4 hlineto + 89 -71 32 31 -85 91 rlineto + -68 hlineto + -115 -87 rlineto + hintmask 11010000 + 26 callsubr + hintmask 10110000 + 16 callsubr + hintmask 11010000 + 154 callgsubr + + + 765 179 callsubr + 8 310 hintmask 10110000 + 37 699 132 callsubr + hintmask 11010000 + 43 callgsubr + hintmask 10110000 + -41 -15 49 -63 hhcurveto + -55 -29 -40 -51 -11 hvcurveto + 43 -5 rlineto + 29 10 13 17 24 227 callgsubr + 41 14 -50 63 hhcurveto + endchar + + + 635 44 26 45 hstemhm + 25 39 vstemhm + 13 570 rmoveto + 109 65 rlineto + 4 hlineto + 83 -65 35 23 -82 86 rlineto + -68 hlineto + -108 -85 rlineto + hintmask 01100000 + 148 111 rmoveto + 84 43 45 44 17 hvcurveto + -38 10 rlineto + -29 -13 -27 -25 -57 hhcurveto + -56 -21 25 29 -2 hvcurveto + -39 -10 rlineto + -44 -1 27 -45 83 hhcurveto + endchar + + + 768 44 29 46 hstemhm + 43 47 vstemhm + 42 699 rmoveto + 105 69 rlineto + 4 hlineto + 81 -69 37 26 -77 87 rlineto + -72 hlineto + -106 -87 rlineto + hintmask 01100000 + 149 116 rmoveto + 89 50 44 50 14 hvcurveto + -45 8 rlineto + -30 -11 -31 -26 -58 hhcurveto + -58 -22 26 30 -1 hvcurveto + -47 -8 rlineto + -50 -2 34 -44 88 hhcurveto + endchar + + + 645 51 54 41 hstemhm + -19 364 -62 61 hintmask 11100000 + 6 570 29 callgsubr + hintmask 11010000 + -21 callgsubr + + + 768 218 callsubr + 8 354 vstem + 38 699 133 callgsubr + 248 31 0 callsubr + endchar + + + 577 59 26 59 hstemhm + -50 363 vstemhm + 194 577 33 callgsubr + -52 callgsubr + hintmask 01100000 + -61 callgsubr + hintmask 11100000 + 52 callgsubr + + + 709 172 callgsubr + -33 368 hintmask 10100000 + 212 709 -58 callsubr + hintmask 11100000 + -50 callsubr + hintmask 10100000 + 66 callgsubr + + + 601 54 hstem + -9 264 vstem + -9 601 -72 callgsubr + + + 729 54 hstem + 14 267 vstem + 14 729 -29 callgsubr + endchar + + + 601 54 hstem + -9 264 vstem + -9 601 -72 callgsubr + + + 729 54 hstem + 20 267 vstem + 20 729 -29 callgsubr + endchar + + + 571 55 hstem + -18 54 vstem + 111 571 -84 callgsubr + + + 705 46 hstem + 12 72 vstem + 137 705 rmoveto + 111 48 65 67 19 hvcurveto + -72 hlineto + -47 -12 -29 -39 -56 hhcurveto + -56 -14 39 47 8 hvcurveto + -72 hlineto + -67 -9 22 -65 112 hhcurveto + endchar + + + 705 53 hstem + 15 52 vstem + 137 705 -58 callgsubr + + + 572 47 hstem + -16 59 vstem + 110 572 rmoveto + 117 54 75 77 14 hvcurveto + -63 hlineto + -57 -13 -30 -48 -70 hhcurveto + -57 -19 28 39 13 1 11 4 14 hvcurveto + -58 hlineto + -4 -12 -2 -14 -14 vvcurveto + -62 37 -50 89 vhcurveto + endchar + + + 571 51 hstem + -18 49 vstem + 110 571 18 callsubr + -46 48 callgsubr + -25 47 callsubr + 30 -77 105 hhcurveto + 27 128 rmoveto + 42 24 -71 125 -56 -35 rlineto + endchar + + + 705 49 hstem + 15 48 vstem + 137 705 92 callsubr + 25 109 rmoveto + 43 25 -73 123 -58 -31 rlineto + endchar + + + 571 51 hstem + -18 49 vstem + 110 571 18 callsubr + -46 48 callgsubr + -25 47 callsubr + 30 -77 105 hhcurveto + 23 134 rmoveto + 121 96 -44 44 -110 -109 rlineto + endchar + + + 705 49 hstem + 15 48 vstem + 137 705 92 callsubr + 19 115 rmoveto + 125 98 -46 40 -115 -106 rlineto + endchar + + + 571 47 92 50 -8 50 hstemhm + -14 47 hintmask 10110000 + 110 571 rmoveto + 98 50 56 51 16 hvcurveto + -46 8 rlineto + -33 -11 -37 -35 -62 hhcurveto + -61 -24 35 33 hvcurveto + -47 -8 rlineto + -51 -4 30 -56 98 227 callgsubr + 80 callgsubr + hintmask 10110000 + 75 callgsubr + hintmask 11010000 + 38 22 -42 58 hhcurveto + endchar + + + 708 45 90 50 0 50 hstemhm + 15 46 hintmask 10110000 + 138 708 222 callsubr + hintmask 11010000 + 91 135 rmoveto + 54 29 40 51 12 hvcurveto + -43 5 rlineto + -29 -10 -13 -17 -23 hhcurveto + hintmask 10110000 + -41 -15 50 -64 hhcurveto + -55 -28 -40 -52 -13 hvcurveto + 44 -5 rlineto + 30 9 14 17 23 227 callgsubr + 41 15 -50 64 hhcurveto + endchar + + + 571 51 176 50 hstem + -17 49 vstem + 110 571 rmoveto + 108 59 77 74 18 hvcurveto + -47 48 callgsubr + -24 47 callsubr + 29 -77 105 hhcurveto + -5 111 rmoveto + 51 8 55 22 10 54 10 53 -42 27 -81 2 -17 -50 rcurveline + 53 -2 21 -13 -5 -26 166 callsubr + + + 705 49 156 42 hstem + 16 47 117 61 vstem + 137 705 rmoveto + 93 57 59 70 21 59 callsubr + -26 39 49 1 hvcurveto + -47 -8 rlineto + -70 -5 34 -59 92 hhcurveto + -4 95 rmoveto + 49 8 48 20 11 51 8 47 -38 23 -77 3 -16 -42 rcurveline + 48 -3 19 -10 -5 -26 -4 -21 -21 -9 -27 -6 rrcurveto + endchar + + + 587 103 hstem + 71 107 vstem + 120 587 -103 callsubr + + + 716 103 hstem + 96 107 vstem + 145 716 -100 callgsubr + -26 -32 56 callsubr + + + 589 95 hstem + -13 92 94 91 vstem + 27 589 -45 callsubr + + + 715 95 hstem + 10 91 95 90 vstem + 50 715 -76 callgsubr + + + 589 88 180 callgsubr + 25 589 -74 callsubr + -71 113 rmoveto + 37 21 -64 122 -51 -30 rlineto + endchar + + + 715 88 hstem + 2 84 100 84 vstem + 39 715 -42 callgsubr + 22 24 26 24 -16 14 -21 127 callsubr + -74 106 rmoveto + 39 21 -73 127 -57 -31 rlineto + endchar + + + 594 86 hstemhm + -26 80 -80 172 44 81 hintmask 10110000 + 8 594 rmoveto + hintmask 11010000 + 26 20 22 27 23 -13 14 -22 hvcurveto + hintmask 10110000 + -25 -20 -22 -29 -21 13 -14 21 hvcurveto + 218 hmoveto + 24 21 22 27 23 -13 14 -22 -25 -21 -22 -29 -21 14 -14 22 hvcurveto + -115 -33 rmoveto + 38 4 -6 204 -64 -8 rlineto + endchar + + + 589 88 180 callgsubr + 141 708 rmoveto + 113 96 -42 38 -102 -106 rlineto + -85 -147 -74 callsubr + endchar + + + 715 88 hstem + 2 84 100 84 vstem + 39 715 -42 callgsubr + 22 24 26 24 -16 14 -21 127 callsubr + -76 112 95 callgsubr + + + 589 88 29 50 -1 51 hstemhm + -9 85 100 84 hintmask 11011000 + 27 589 rmoveto + 27 22 23 28 23 -15 14 -22 -26 -22 -23 -29 -21 15 -15 21 hvcurveto + 186 hmoveto + 25 22 23 28 23 -14 14 -22 -26 -22 -23 -29 -21 15 -15 22 hvcurveto + hintmask 01011000 + -7 117 rmoveto + 50 32 39 52 14 hvcurveto + -41 5 rlineto + -31 -10 -14 -15 -24 hhcurveto + hintmask 00111000 + -42 -22 50 -57 hhcurveto + -51 -31 -39 -53 -14 hvcurveto + 41 -5 rlineto + 31 10 14 15 23 hhcurveto + hintmask 01011000 + 43 22 -49 57 hhcurveto + endchar + + + 589 88 71 44 180 callgsubr + 25 589 -74 callsubr + -190 159 rmoveto + 254 hlineto + 10 44 14 callsubr + endchar + + + 715 88 56 44 hstem + 14 84 100 83 vstem + 51 715 -42 callgsubr + 21 24 26 24 -15 14 -22 -25 30 callgsubr + -197 144 rmoveto + 256 hlineto + 10 44 rlineto + -257 hlineto + endchar + + + 589 88 43 48 180 callgsubr + 107 720 rmoveto + 67 hlineto + 116 92 -24 30 -118 -74 1 callsubr + -89 74 -33 -29 rlineto + 3 -224 -74 callsubr + endchar + + + 715 88 36 46 hstem + 14 84 100 83 vstem + 51 715 -42 callgsubr + 21 24 26 24 -15 14 -22 -25 30 callgsubr + -108 124 rmoveto + 72 hlineto + 110 90 -31 26 -108 -70 1 callsubr + -78 70 -38 -25 rlineto + endchar + + + 707 53 hstem + 145 64 vstem + 81 572 rmoveto + -76 callsubr + endchar + + + 826 46 hstem + 148 64 vstem + 85 697 rmoveto + -71 callgsubr + endchar + + + 556 36 121 36 hstem + 22 52 110 52 vstem + 117 556 -59 callsubr + + + 700 36 106 36 hstem + 56 46 101 46 vstem + 143 700 65 callgsubr + + + 571 188 hstem + 23 320 vstem + 64 93 callsubr + + + 706 167 hstem + 30 329 vstem + 69 706 42 callsubr + + + 575 56 hstem + -15 309 vstem + 74 575 rmoveto + 82 hlineto + -5 callgsubr + 10 callsubr + + + 706 45 hstem + 14 296 vstem + 99 706 -77 callsubr + + + 567 195 hstem + -67 270 vstem + 3 567 rmoveto + 50 16 -56 179 -64 -24 rlineto + 221 -171 rmoveto + 49 16 -55 179 -64 -24 rlineto + endchar + + + 701 176 hstem + -59 287 vstem + 21 701 224 callsubr + 240 -149 224 callsubr + endchar + + + 672 55 hstem + 216 54 vstem + 7 568 97 callgsubr + + + 788 53 hstem + 235 53 vstem + 44 704 rmoveto + 47 18 37 37 57 hhcurveto + 57 25 -37 -47 -3 hvcurveto + 53 8 rlineto + 70 5 -35 59 -92 hhcurveto + -93 -56 -59 -70 -21 hvcurveto + endchar + + + 543 86 hstem + 62 92 vstem + 105 543 rmoveto + 28 21 17 31 22 -18 16 -19 -3 -3 0 -1 -4 hvcurveto + 9 30 20 22 44 17 -9 32 rcurveline + -78 -27 -31 -48 -56 vvcurveto + -31 17 -24 26 vhcurveto + endchar + + + 707 50 hstem + 55 61 vstem + 147 574 rmoveto + 17 38 rlineto + -28 7 -20 13 23 vvcurveto + 27 25 22 68 3 vhcurveto + 6 50 rlineto + -113 -3 -47 -47 -57 vvcurveto + -45 42 -22 50 -9 vhcurveto + endchar + + + 705 51 hstemhm + 147 151 callgsubr + 52 85 callgsubr + hintmask 10100000 + 116 -18 rmoveto + hintmask 11000000 + 202 callsubr + + + 705 51 hstem + -15 284 vstem + 62 85 callgsubr + 57 -8 rmoveto + 46 -10 104 197 -69 14 rlineto + endchar + + + 183 callsubr + hintmask 11010000 + 134 562 rmoveto + 16 33 -24 6 -14 10 2 14 rlinecurve + 4 18 22 11 47 2 1 39 rcurveline + -76 -2 -45 -19 -8 -40 -8 -41 40 -22 43 -9 rrcurveto + hintmask 01010000 + 67 153 rmoveto + 47 29 37 51 15 hvcurveto + -44 4 rlineto + -28 -10 -10 -14 -19 hhcurveto + hintmask 00110000 + -37 -20 42 -56 hhcurveto + -47 -29 -37 -51 -15 hvcurveto + 44 -4 rlineto + 28 11 11 14 19 hhcurveto + hintmask 01010000 + 36 20 -42 55 hhcurveto + endchar + + + 49 callsubr + + + 707 53 hstem + 145 64 vstem + 81 572 rmoveto + -76 callsubr + endchar + + + 705 51 hstemhm + -1.5 227 -173.5 173.5 -72.5 151 callgsubr + -1 577 rmoveto + hintmask 10100000 + 49 184 callsubr + -15 -51 rcurveline + 47 -3 21 -14 -6 -26 -5 -26 -21 -14 -28 -7 rrcurveto + hintmask 10001000 + 176 -56 rmoveto + hintmask 10010000 + 202 callsubr + + + 705 51 hstem + -9 284 vstem + 577 vmoveto + 48 184 callsubr + -14 -51 rcurveline + 47 -3 20 -14 -5 -26 -5 -26 -22 -14 -27 -7 rrcurveto + 172 -56 rmoveto + 104 197 -68 14 -82 -201 rlineto + endchar + + + 183 callsubr + hintmask 01010000 + 201 715 rmoveto + 47 29 37 51 15 hvcurveto + -44 4 rlineto + -28 -10 -10 -14 -19 hhcurveto + hintmask 00110000 + -37 -20 42 -56 hhcurveto + -47 -29 -37 -51 -15 hvcurveto + 44 -4 rlineto + 28 11 11 14 19 hhcurveto + hintmask 01010000 + 36 20 -42 55 hhcurveto + -118 -153 rmoveto + hintmask 11010000 + 47 9 49 22 8 41 8 40 -38 19 -74 2 -15 -39 rcurveline + 47 -2 17 -11 -4 -18 -3 -14 -19 -10 -24 -6 rrcurveto + endchar + + + -173 46 hstem + -105 182 vstem + -9 209 callsubr + 38 190 rlineto + -49 hlineto + -14 -72 rlineto + -110 hlineto + -9 -46 212 callsubr + endchar + + + -173 46 hstem + -124 181 vstem + -124 209 callsubr + 14 72 rlineto + 110 218 callgsubr + -110 hlineto + 15 72 rlineto + -49 hlineto + endchar + + + 667 47 hstem + 60 167 vstem + 151 573 rmoveto + 49 hlineto + 27 141 rlineto + -157 hlineto + -10 -47 212 callsubr + endchar + + + 444 191 hstem + 173 65 vstem + 95 444 rmoveto + 74 10 69 44 80 vvcurveto + 18 -3 20 -8 19 vhcurveto + -61 -22 5 -14 3 -14 -1 -12 rlinecurve + -3 -53 -40 -33 -50 -5 rrcurveto + endchar + + + -257 34 125 35 hstem + -128 52 vstem + -22 -257 93 callgsubr + + + -207 46 -46 152 hstemhm + -134 197 hintmask 10100000 + -134 -207 rmoveto + 188 218 callgsubr + -70 hlineto + hintmask 01100000 + 21 106 rlineto + -49 hlineto + hintmask 10100000 + -20 -106 rlineto + -70 hlineto + endchar + + + -245 152 -45 45 hstemhm + -121 197 hintmask 10100000 + -72 209 callsubr + hintmask 01100000 + 22 107 rlineto + 69 hlineto + 9 45 rlineto + -188 227 callsubr + 70 hlineto + endchar + + + -176 45 hstem + -128 197 vstem + -73 -249 rmoveto + 48 hlineto + 15 73 rlineto + 70 hlineto + 9 45 rlineto + -70 hlineto + 14 73 rlineto + -49 hlineto + -13 -73 rlineto + -70 227 callsubr + 69 hlineto + endchar + + + -176 45 hstem + -128 197 vstem + -128 -176 rmoveto + 188 hlineto + 9 45 rlineto + -188 hlineto + endchar + + + -217 103 hstem + -86 107 vstem + -37 -217 -103 callsubr + + + -203 95 hstem + -169 92 94 91 vstem + -129 -203 -45 callsubr + + + -258 36 121 36 hstem + -139 52 110 52 vstem + -44 -258 -59 callsubr + + + -226 39 92 37 hstem + -16 65 vstem + -132 -226 -73 callsubr + + + -226 39 97 93 -68 68 hstemhm + -15 63 hintmask 10110000 + -132 -226 rmoveto + 3 callgsubr + 41 68 rcurveline + -54 hlineto + hintmask 11010000 + -60 -93 rlineto + -4 callsubr + + + -226 39 97 93 -68 68 hstemhm + -15 63 hintmask 10110000 + -132 -226 rmoveto + 3 callgsubr + 41 68 rcurveline + -54 hlineto + hintmask 11010000 + -60 -93 rlineto + -4 callsubr + + + -206 51 hstem + -106 61 vstem + -31 2 callgsubr + 40 33 43 55 38 hvcurveto + -53 hlineto + -42 -29 -54 -55 -58 vvcurveto + -44 31 -23 44 vhcurveto + endchar + + + -211 54 hstem + -111 65 vstem + -33 124 callsubr + 39 37 46 54 37 hvcurveto + -57 hlineto + -43 -29 187 callgsubr + + + -263 196 hstem + -85 97 vstem + -85 169 callsubr + + + -129 47 hstem + -163 267 vstem + -163 -226 rmoveto + 45 hlineto + 19 97 rlineto + 148 hlineto + -18 -97 rlineto + 45 hlineto + 28 144 rlineto + -239 hlineto + endchar + + + -229 56 hstem + -172 309 vstem + -83 -229 rmoveto + 82 hlineto + -5 callgsubr + 10 callsubr + + + -230 55 hstem + -177 54 vstem + -48 -230 -84 callgsubr + + + -124 55 hstem + 59 54 vstem + -150 -228 97 callgsubr + + + -227 59 26 59 hstemhm + -207 363 vstemhm + 37 -227 33 callgsubr + -52 callgsubr + hintmask 01100000 + -61 callgsubr + hintmask 11100000 + 52 callgsubr + + + -165 54 hstem + -159 264 vstem + -159 -165 -72 callgsubr + + + 184 59 26 59 hstemhm + -145 394 hintmask 10100000 + 132 184 rmoveto + 165 callgsubr + -59 -20 85 -85 hhcurveto + hintmask 11100000 + 155 callgsubr + hintmask 10100000 + 58 21 -85 84 hhcurveto + endchar + + + -260 35 125 34 hstem + 11 52 vstem + -82 -260 104 callsubr + + + -225 47 hstem + -162 266 vstem + -162 -225 rmoveto + 238 hlineto + 28 143 rlineto + -45 hlineto + -19 -96 rlineto + -148 hlineto + 19 96 rlineto + -45 hlineto + endchar + + + -240 40 84 39 hstem + -166 270 vstem + -166 -240 rmoveto + 238 hlineto + 32 163 rlineto + -238 hlineto + 21 -123 rmoveto + 16 84 rlineto + 148 hlineto + -16 -84 rlineto + endchar + + + -229 95 5 52 hstemhm + 80 49 hintmask 01100000 + -164 -230 rmoveto + 79 16 23 22 29 hhcurveto + 26 11 -16 -30 hvcurveto + hintmask 10100000 + -13 -2 -14 -7 -27 vhcurveto + 45 hlineto + hintmask 01100000 + 69 12 22 31 34 hhcurveto + 22 13 -11 -36 -14 -2 -18 -5 -22 hvcurveto + 48 6 rlineto + 4 23 4 23 18 vvcurveto + 58 -26 25 -45 -33 -32 -16 -41 -17 vhcurveto + -3 hlineto + 39 -2 -24 18 -34 hhcurveto + -60 -43 -43 -104 -19 hvcurveto + endchar + + + 555 169 hstem + 32 185 vstem + 58 555 rmoveto + 60 51 40 -51 39 33 -40 51 60 51 -25 34 -61 -51 -40 51 -39 -34 40 -51 -60 -51 rlineto + endchar + + + 577 59 26 59 hstemhm + -50 363 vstemhm + 194 577 33 callgsubr + -52 callgsubr + hintmask 01100000 + -61 callgsubr + hintmask 11100000 + 52 callgsubr + + + 709 172 callgsubr + -33 368 hintmask 10100000 + 212 709 -58 callsubr + hintmask 11100000 + -50 callsubr + hintmask 10100000 + 66 callgsubr + + + 49 callsubr + + + 594 86 hstem + -26 80 136 81 vstem + 8 594 rmoveto + 26 20 22 27 23 -13 14 -22 -25 -20 -22 -29 -21 13 -14 21 hvcurveto + 218 hmoveto + 24 21 22 27 23 -13 14 -22 -25 -21 -22 -29 -21 14 -14 22 hvcurveto + -120 -33 rmoveto + 104 192 -56 21 -84 -200 rlineto + endchar + + + -201 54 -54 139 hstemhm + -57 60 hintmask 01100000 + 4 -201 rmoveto + 19 13 4 5 13 hvcurveto + hintmask 10100000 + -6 48 rlineto + -3 -12 -3 0 -5 hhcurveto + -10 -10 5 17 hvcurveto + hintmask 01100000 + 14 6 26 8 23 vhcurveto + -59 hlineto + -13 -49 -2 -16 -15 vvcurveto + -39 22 -20 39 vhcurveto + endchar + + + endchar + + + 663 55 hstem + -323 873 vstem + -303 551 64 callgsubr + + + 810 55 hstem + -293 873 vstem + -273 698 64 callgsubr + + + 72 -12 64 hstem + -20 469 vstem + 52 -12 rmoveto + 53 58 35 53 60 hvcurveto + -52 42 49 -36 57 hhcurveto + 28 28 7 13 22 hvcurveto + -23 58 rlineto + -8 -14 -14 -6 -18 hhcurveto + -38 -31 24 40 -34 hvcurveto + 100 78 69 85 92 vvcurveto + 80 -57 47 -85 -129 -74 -96 -100 -66 38 -60 45 -56 vhcurveto + -41 -47 -39 -27 -38 hhcurveto + -19 -15 3 10 -13 hvcurveto + -33 -55 rlineto + -14 16 27 -8 29 hhcurveto + endchar + + + 153 0 61 256 57 221 61 60 103 hstemhm + 308 107 27 76 -53 79 hintmask 11100100 + 66 callsubr + hintmask 11100010 + -7 callsubr + hintmask 11100100 + 199 callsubr + hintmask 11111100 + 119 655 -100 callgsubr + -26 -32 56 callsubr + + + 106 139 callgsubr + 89 103 22 -20 hstemhm + 337 107 -27 79 hintmask 10101010 + 86 callgsubr + hintmask 01101010 + -142 -712 rlineto + 63 hlineto + hintmask 10101010 + 63 callsubr + hintmask 10110100 + 155 535 -103 callsubr + + + 153 -160 54 106 167 callsubr + hintmask 11111000 + 66 callsubr + hintmask 11110100 + -7 callsubr + hintmask 11111000 + 199 callsubr + -142 -221 -72 callgsubr + + + 106 -160 54 94 64 -31 -21 434 64 214 -20 hstemhm + 417 79 hintmask 11011100 + 86 callgsubr + hintmask 10111100 + -142 -712 rlineto + 63 hlineto + hintmask 11011100 + 63 callsubr + -160 -212 -72 callgsubr + + + 162 0 64 529 63 60 103 hstem + 340 107 40 -59 callgsubr + 178 652 -100 callgsubr + -26 -32 56 callsubr + + + 105 139 callgsubr + 89 103 22 -20 hstemhm + 39 79 126 107 10 callgsubr + hintmask 01101100 + -12 callgsubr + hintmask 10101100 + -38 callsubr + hintmask 10110110 + 86 535 -103 callsubr + + + 162 -212 103 109 64 529 63 hstem + 170 107 210 -59 callgsubr + 8 -276 -103 callsubr + + + 105 64 callsubr + 200 64 -31 -21 434 64 214 -20 hstemhm + 39 79 7 107 hintmask 01101110 + -80 callgsubr + hintmask 01011110 + -12 callgsubr + hintmask 01101110 + -38 callsubr + hintmask 01101101 + -33 -264 5 callgsubr + hintmask 10101101 + -50 callgsubr + hintmask 01101101 + -3 callsubr + + + 162 -160 54 106 64 529 63 hstem + 487 -59 callgsubr + -114 -224 -72 callgsubr + + + 105 -160 54 94 64 -31 -21 434 64 214 -20 hstemhm + 39 79 hintmask 11011100 + -80 callgsubr + hintmask 10111100 + -12 callgsubr + hintmask 11011100 + -38 callsubr + -155 -212 -72 callgsubr + + + 44 callgsubr + 74 73 -29 callgsubr + 137 44 95 callgsubr + + + 51 -26 callsubr + 103 54 -92 callgsubr + -185 320 -73 callgsubr + 139 53 rmoveto + 114 96 -42 38 -102 -106 rlineto + endchar + + + 229 callgsubr + 60 103 hstem + 326 107 109 callgsubr + 60 297 rlineto + 240 204 callgsubr + -241 hlineto + 45 228 rlineto + 285 113 callgsubr + -362 hlineto + 209 60 -100 callgsubr + -26 -32 56 callsubr + + + -148 21 160 callsubr + 36 103 hstem + 267 107 vstem + -19 callgsubr + 188 336 -100 callgsubr + -26 -32 56 callsubr + + + 117 callsubr + 61 54 hstem + 57 80 -70 callgsubr + -12 741 -29 callgsubr + endchar + + + 126 callgsubr + 135 54 hstemhm + 39 79 hintmask 11101100 + -22 callsubr + hintmask 11011100 + 99 callgsubr + hintmask 11101100 + -99 callgsubr + -5 532 -72 callgsubr + + + 3 callsubr + 103 54 53 callsubr + hintmask 1110110110000000 + -40 callgsubr + hintmask 1110101001000000 + -80 callsubr + hintmask 1101100101000000 + -43 callgsubr + hintmask 1110101001000000 + -9 callsubr + hintmask 1110110101000000 + 108 callsubr + hintmask 1110110110000000 + 143 callgsubr + hintmask 1101100101000000 + -47 callsubr + hintmask 1110110110000000 + -72 callsubr + 3 772 -72 callgsubr + + + 192 -212 103 130 188 callgsubr + hstem + 193 107 -21 callsubr + 76 -868 -103 callsubr + + + 93 137 callgsubr + 214 -20 hstemhm + 141 107 146 78 hintmask 01111110 + -98 callgsubr + -59 -53 -35 -47 -55 vhcurveto + -4 hlineto + 16 61 48 235 -15 callgsubr + 17 -924 5 callgsubr + hintmask 10111110 + -50 callgsubr + hintmask 01111110 + -3 callsubr + + + 192 -225 55 191 188 callgsubr + hstem + 102 54 -21 callsubr + 65 -881 -84 callgsubr + + + 93 -225 55 191 -21 432 66 214 -20 hstem + 50 54 290 78 vstem + -98 callgsubr + -59 -53 -35 -47 -55 vhcurveto + -4 hlineto + 16 61 48 235 -15 callgsubr + 6 -937 -84 callgsubr + + + 129 -212 103 130 115 callsubr + hstem + 194 107 0 callgsubr + 77 -868 -103 callsubr + + + 46 64 callsubr + 233 19 callsubr + 246 -20 hstemhm + 138 107 hintmask 01111100 + -38 callgsubr + 96 483 -15 callgsubr + 14 -924 5 callgsubr + hintmask 10111100 + -50 callgsubr + hintmask 01111100 + -3 callsubr + + + 129 -160 54 127 115 callsubr + hstem + 35 564 0 callgsubr + -45 -816 -72 callgsubr + + + 46 -160 54 127 19 callsubr + 246 -20 hstem + 31 462 vstem + -38 callgsubr + 96 483 -15 callgsubr + -108 -872 -72 callgsubr + + + 32 -212 103 109 192 callgsubr + 137 107 -18 callsubr + 20 -868 -103 callsubr + + + -182 64 callsubr + 200 192 callsubr + 716 -20 hstemhm + 4 107 -67 48 callsubr + hintmask 0101010010000000 + 40 callgsubr + hintmask 0110010010000000 + -1 59 rlineto + hintmask 0110010100000000 + -35 callsubr + hintmask 0101010010000000 + -33 callsubr + hintmask 0100111000000000 + -56 -200 5 callgsubr + hintmask 1000111000000000 + -50 callgsubr + hintmask 0100111000000000 + -3 callsubr + + + -192 -209 103 hstem + -10 107 68 callsubr + -134 -921 -103 callsubr + + + 32 -212 103 109 66 590 -20 93 54 hstem + 137 107 -18 callsubr + -62 73 -29 callgsubr + 71 -995 -103 callsubr + + + -182 -217 103 -82 -21 205 192 callsubr + 716 -20 75 54 hstemhm + 4 107 -67 48 callsubr + hintmask 0101011001000000 + 40 callgsubr + hintmask 0110011001000000 + -1 59 rlineto + hintmask 0110011010000000 + -35 callsubr + hintmask 0101011001000000 + -33 callsubr + hintmask 0100111001000000 + -24 779 -29 callgsubr + hintmask 0100111100000000 + -43 -1038 5 callgsubr + hintmask 1000111100000000 + -50 callgsubr + hintmask 0100111100000000 + -3 callsubr + + + -192 -209 103 873 54 hstem + -9 107 68 callsubr + -88 55 -29 callgsubr + -56 -1030 -103 callsubr + + + 32 -160 54 106 192 callgsubr + 35 367 -18 callsubr + -102 -816 -72 callgsubr + + + -182 -160 54 94 192 callsubr + 716 -20 hstemhm + 44 48 callsubr + hintmask 10101010 + 40 callgsubr + hintmask 11001010 + -1 59 rlineto + hintmask 11001100 + -35 callsubr + hintmask 10101010 + -33 callsubr + hintmask 10011010 + -178 -148 -72 callgsubr + + + -192 -157 54 hstem + -85 335 68 callsubr + -258 -869 -72 callgsubr + + + 275 21 -21 69 97 397 93 hstem + 35 665 -67 callsubr + 238 47 -78 callsubr + + + 369 96 callgsubr + 251 -20 hstemhm + 383 76 209 78 hintmask 11011100 + -57 callsubr + hintmask 10111100 + 89 callgsubr + 329 93 -81 callgsubr + + + 275 21 -21 69 97 397 93 60 103 hstem + 393 107 -67 callsubr + 276 60 -100 callgsubr + -26 -32 56 callsubr + + + 369 96 callgsubr + 121 103 hstemhm + 383 76 -19 107 121 78 hintmask 11011010 + -57 callsubr + hintmask 10110110 + 89 callgsubr + 361 73 callgsubr + + + 275 -220 103 138 -21 69 97 397 93 hstem + 224 107 -67 callsubr + 107 -876 -103 callsubr + + + 369 137 callgsubr + -12 -20 hstemhm + 278 107 -2 76 209 78 hintmask 01110011 + -57 callsubr + hintmask 01101101 + 89 callgsubr + 199 -698 5 callgsubr + hintmask 10110101 + -50 callgsubr + hintmask 01101101 + -3 callsubr + + + 81 callgsubr + 80 103 hstemhm + 363 107 hintmask 01011100 + 61 callgsubr + hintmask 01101100 + -69 callgsubr + hintmask 10011100 + -29 callsubr + 246 60 -100 callgsubr + -26 -32 56 callsubr + + + 95 96 callgsubr + 121 103 hstemhm + 303 107 -16 78 hintmask 11010100 + -82 callgsubr + hintmask 10111000 + 89 callgsubr + 224 73 callgsubr + + + 189 -220 103 117 158 callgsubr + 183 107 hintmask 10101100 + 61 callgsubr + hintmask 10110100 + -69 callgsubr + hintmask 11001100 + -29 callsubr + 66 -876 -103 callsubr + + + 95 137 callgsubr + -12 -20 hstemhm + 142 107 145 78 hintmask 01110110 + -82 callgsubr + hintmask 01101110 + 89 callgsubr + 63 -698 5 callgsubr + hintmask 10110110 + -50 callgsubr + hintmask 01101110 + -3 callsubr + + + 189 -168 54 114 158 callgsubr + 35 579 hintmask 10101100 + 61 callgsubr + hintmask 10110100 + -69 callgsubr + hintmask 11001100 + -29 callsubr + -56 -824 -72 callgsubr + + + 95 -160 54 127 78 callsubr + hstemhm + 394 78 hintmask 11101000 + -82 callgsubr + hintmask 11011000 + 89 callgsubr + -59 -646 -72 callgsubr + + + 22 callgsubr + 61 54 -97 callgsubr + -4 674 -29 callgsubr + 137 44 95 callgsubr + + + 71 callgsubr + 103 54 37 callgsubr + -13 549 -73 callgsubr + 139 53 rmoveto + 114 96 -42 38 -102 -106 rlineto + endchar + + + 201 callsubr + 60 103 hstem + 342 107 31 51 callgsubr + 118 389 -100 callgsubr + -26 -32 56 callsubr + + + 105 -184 -21 193 64 382 64 -12 -20 121 103 hstemhm + 302 107 8 79 hintmask 11101010 + 63 callgsubr + hintmask 11011010 + 157 callsubr + hintmask 11101010 + 46 232 rlineto + 50 88 callgsubr + hvcurveto + hintmask 11011010 + -135 -89 -124 -97 vhcurveto + hintmask 11101110 + 120 535 -103 callsubr + + + 202 callgsubr + 60 103 hstem + 336 107 31 -83 callsubr + 105 375 -100 callgsubr + -26 -32 56 callsubr + + + -88 21 88 callsubr + 118 103 hstemhm + 224 107 hintmask 11001100 + -34 callgsubr + hintmask 10011100 + 27 68 rlineto + hintmask 11001100 + -9 callgsubr + hintmask 10101100 + 143 callsubr + 145 73 callgsubr + + + 125 -220 103 138 96 callsubr + hstem + 176 107 191 -83 callsubr + -55 -561 -103 callsubr + + + -88 64 callsubr + 233 88 callsubr + hstemhm + -11 107 hintmask 01110010 + -34 callgsubr + hintmask 01100110 + 27 68 rlineto + hintmask 01110010 + -9 callgsubr + hintmask 01101010 + 143 callsubr + -90 -698 5 callgsubr + hintmask 10110010 + -50 callgsubr + hintmask 01101010 + -3 callsubr + + + 125 -220 103 138 96 callsubr + 73 54 hstem + 176 107 191 -83 callsubr + -27 388 -29 callgsubr + -39 -1003 -103 callsubr + + + -88 64 callsubr + 233 88 callsubr + 132 54 hstemhm + -11 107 hintmask 01110011 + -34 callgsubr + hintmask 01100111 + 27 68 rlineto + hintmask 01110011 + -9 callgsubr + hintmask 01101011 + 143 callsubr + 16 115 -73 callgsubr + -116 -867 5 callgsubr + hintmask 10110011 + -50 callgsubr + hintmask 01101011 + -3 callsubr + + + 125 -168 54 135 96 callsubr + hstem + 474 -83 callsubr + -177 -509 -72 callgsubr + + + -88 -160 54 127 88 callsubr + hstemhm + -84 464 hintmask 11100100 + -34 callgsubr + hintmask 11001100 + 27 68 rlineto + hintmask 11100100 + -9 callgsubr + hintmask 11010100 + 143 callsubr + -212 -646 -72 callgsubr + + + 162 callgsubr + 50 103 hstemhm + 120 79 117 107 -44 80 hintmask 11010100 + -98 callsubr + hintmask 11111000 + 134 730 -100 callgsubr + -26 -32 56 callsubr + + + 161 callsubr + 89 103 hstemhm + 72 73 80 107 -60 73 hintmask 11010100 + -89 callgsubr + hintmask 11111000 + 111 599 -103 callsubr + + + 76 -220 103 105 66 547 67 hstemhm + 120 79 -64 107 137 80 hintmask 01110100 + -98 callsubr + hintmask 11101100 + -47 -208 -103 callsubr + + + -28 64 callsubr + 200 59 391 60 hstemhm + 72 73 -62 107 82 73 hintmask 01111010 + -89 callgsubr + hintmask 01110110 + -31 -200 5 callgsubr + hintmask 10110110 + -50 callgsubr + hintmask 01110110 + -3 callsubr + + + 178 callgsubr + 60 103 hstem + 305 107 -30 callsubr + 71 127 -100 callgsubr + -26 -32 56 callsubr + + + -105 -12 62 374 62 237 103 hstem + 69 78 40 107 vstem + -94 callgsubr + 51 735 -103 callsubr + + + 80 -212 103 130 -21 589 67 hstem + 125 107 -30 callsubr + -109 -801 -103 callsubr + + + -105 64 callsubr + 200 62 374 221 callgsubr + -68 107 hintmask 01111000 + -94 callgsubr + hintmask 01110100 + -57 -200 5 callgsubr + hintmask 10110100 + -50 callgsubr + hintmask 01110100 + -3 callsubr + + + 80 -160 54 127 -21 589 67 hstem + 52 513 -30 callsubr + -231 -749 -72 callgsubr + + + -105 -160 54 94 62 374 62 hstem + 69 78 vstem + -94 callgsubr + -179 -148 -72 callgsubr + + + 177 callsubr + 80 103 hstem + 281 107 -75 callgsubr + 140 460 -100 callgsubr + -26 -32 56 callsubr + + + 18 -209 62 633 -20 121 103 hstem + 239 107 vstem + -97 callsubr + 294 796 -103 callsubr + + + 82 -220 103 117 150 callgsubr + hstem + 133 107 -49 callsubr + 173 -267 -103 callsubr + + + -20 64 callsubr + 212 203 callgsubr + hstemhm + 93 107 hintmask 01111000 + -45 callgsubr + 144 -256 5 callgsubr + hintmask 10111000 + -50 callgsubr + hintmask 01111000 + -3 callsubr + + + 82 -168 54 114 150 callgsubr + hstem + -1 542 -49 callsubr + 52 -215 -72 callgsubr + + + -20 -160 54 106 203 callgsubr + hstem + -10 440 vstem + -45 callgsubr + 22 -204 -72 callgsubr + + + 93 -160 54 127 -21 432 66 214 -20 hstem + 394 78 vstem + -98 callgsubr + -59 -53 -35 -47 -55 vhcurveto + -4 hlineto + 16 61 48 235 -15 callgsubr + -105 -872 -72 callgsubr + + + 192 -160 54 127 51 callsubr + -46 -816 -72 callgsubr + + + -105 -12 62 374 62 239 95 hstemhm + 69 78 -44 92 94 91 hintmask 11110100 + -94 callgsubr + hintmask 11101100 + -42 737 -45 callsubr + + + 178 callgsubr + 59 95 hstem + 217 91 95 90 -30 callsubr + -26 126 -76 callgsubr + + + 203 -12 64 -31 -21 608 64 hstemhm + 509 79 hintmask 10110000 + 391 -12 rmoveto + 117 80 86 111 73 -56 66 -104 34 hvcurveto + 165 143 rlineto + 122 -23 -76 49 -110 hhcurveto + -149 -86 -100 -136 -27 hvcurveto + hintmask 01110000 + -87 -436 rlineto + 78 hlineto + 81 414 rlineto + 130 26 70 64 89 hhcurveto + 68 47 -30 -65 21 hvcurveto + -165 -146 -6 -49 rlineto + 123 -32 42 -56 -52 vvcurveto + hintmask 10110000 + -69 -54 -57 -67 -59 -38 27 43 -29 vhcurveto + -48 -47 rlineto + -56 41 63 -31 73 hhcurveto + endchar + + + 80 -212 103 130 -21 205 134 callgsubr + hstem + 136 107 vstem + 227 377 -105 callsubr + -118 -868 -103 callsubr + + + 107 64 callsubr + 200 -31 callgsubr + hstemhm + 39 79 30 107 hintmask 01101010 + -80 callgsubr + hintmask 01010110 + -32 callgsubr + hintmask 01101010 + -106 callgsubr + hintmask 01101011 + -10 -264 5 callgsubr + hintmask 10101011 + -50 callgsubr + hintmask 01101011 + -3 callsubr + + + 62 -212 103 97 200 callgsubr + 15 107 132 76 hintmask 11111010 + -107 callgsubr + hintmask 11111110 + -14 -261 -103 callsubr + + + 8 callsubr + 170 46 hstem + 368 64 vstem + 227 377 -105 callsubr + 2 41 rmoveto + -71 callgsubr + endchar + + + -40 callsubr + 241 53 hstemhm + 39 79 241 64 -93 callsubr + 88 520 rmoveto + hintmask 10101110 + -76 callsubr + endchar + + + -32 callsubr + 209 53 hstemhm + 32 75 235 64 -45 76 hintmask 11111010 + -107 callgsubr + 93 523 rmoveto + hintmask 11111100 + -76 callsubr + endchar + + + 164 callsubr + 647 6 callsubr + 308 503 rmoveto + 117 75 -27 41 -114 -83 rlineto + -506 -801 56 callgsubr + + + -31 callsubr + 269 35 rmoveto + 120 104 -43 39 -108 -111 rlineto + endchar + + + -32 callsubr + 147 51 hstem + 32 75 254 76 -27 callgsubr + 269 35 rmoveto + 120 104 -43 39 -108 -111 rlineto + endchar + + + 164 callsubr + 535 6 callsubr + 80 509 146 callsubr + -213 -855 56 callgsubr + + + -31 callsubr + 1 34 rmoveto + 39 26 -78 121 -53 -31 rlineto + endchar + + + -32 callsubr + 147 51 hstem + 32 75 254 76 -27 callgsubr + 1 34 rmoveto + 39 26 -78 121 -53 -31 rlineto + endchar + + + 8 callsubr + 112 218 callsubr + -53 635 6 callsubr + 307 491 0 callsubr + -525 -789 rmoveto + 86 hlineto + 105 205 109 callsubr + 18 -205 rlineto + 81 hlineto + -76 656 rlineto + -90 hlineto + -45 43 133 callgsubr + endchar + + + -40 callsubr + 179 51 54 41 hstemhm + 39 79 379 61 -51 callgsubr + 13 518 29 callgsubr + hintmask 10101111 + -21 callgsubr + + + -32 callsubr + 147 51 54 41 hstem + 32 75 254 76 42 61 -27 callgsubr + 258 30 rmoveto + -21 callgsubr + + + 8 callsubr + 109 179 callsubr + -53 591 hintmask 11110110 + 227 377 -105 callsubr + -46 15 callsubr + + + -40 callsubr + 175 51 18 51 -47 -20 58 51 hstemhm + 39 79 hintmask 1010001110000000 + -80 callgsubr + hintmask 0101001110000000 + -32 callgsubr + hintmask 1010001110000000 + -106 callgsubr + hintmask 1010100110000000 + 13 518 rmoveto + 118 71 rlineto + 4 hlineto + 89 -71 32 31 -85 91 rlineto + -68 hlineto + -115 -87 rlineto + hintmask 1010010010000000 + 26 callsubr + hintmask 1010001110000000 + 16 callsubr + hintmask 1010010010000000 + 154 callgsubr + + + -32 callsubr + 143 51 18 51 -9 51 hstemhm + 32 75 254 76 hintmask 11110111 + -107 callgsubr + 17 521 rmoveto + 118 71 rlineto + 4 hlineto + 89 -71 32 31 -85 91 rlineto + -68 hlineto + -115 -87 rlineto + hintmask 11111011 + 26 callsubr + hintmask 11110111 + 16 callsubr + hintmask 11111011 + 154 callgsubr + + + 80 -212 103 130 -21 205 134 callgsubr + 136 45 hstem + 136 107 vstem + 227 377 -105 callsubr + -59 119 callsubr + -26 -938 -103 callsubr + + + 107 64 callsubr + 200 -31 callgsubr + 218 56 hstemhm + 39 79 30 107 hintmask 0110101100000000 + -80 callgsubr + hintmask 0101011100000000 + -32 callgsubr + hintmask 0110101100000000 + -106 callgsubr + -1 111 callsubr + hintmask 0110101110000000 + 22 -814 5 callgsubr + hintmask 1010101110000000 + -50 callgsubr + hintmask 0110101110000000 + -3 callsubr + + + 62 -212 103 97 61 201 51 135 62 186 56 hstemhm + 32 75 16 107 131 76 hintmask 11111101 + -107 callgsubr + 3 519 -91 callgsubr + hintmask 11111111 + 15 -814 -103 callsubr + + + 8 callsubr + 49 49 hstem + 235 48 vstem + 227 377 -105 callsubr + 54 49 92 callsubr + 19 115 rmoveto + 125 98 -46 40 -115 -106 rlineto + endchar + + + -40 callsubr + 105 51 100 -20 hstemhm + 39 79 105 49 -53 callsubr + 144 519 18 callsubr + -46 48 callgsubr + -25 47 callsubr + 30 -77 105 hhcurveto + 23 134 rmoveto + 121 96 -44 44 -110 -109 rlineto + endchar + + + -32 callsubr + 73 51 hstem + 32 75 71 49 134 76 vstem + -107 callgsubr + 121 522 18 callsubr + -46 48 callgsubr + -25 47 callsubr + 30 -77 105 hhcurveto + 23 134 rmoveto + 121 96 -44 44 -110 -109 rlineto + endchar + + + 8 callsubr + 49 49 hstem + 235 48 vstem + 227 377 -105 callsubr + 54 49 92 callsubr + 25 109 rmoveto + 43 25 -73 123 -58 -31 rlineto + endchar + + + -40 callsubr + 105 51 100 -20 hstemhm + 39 79 105 49 -53 callsubr + 144 519 18 callsubr + -46 48 callgsubr + -25 47 callsubr + 30 -77 105 hhcurveto + 27 128 rmoveto + 42 24 -71 125 -56 -35 rlineto + endchar + + + -32 callsubr + 73 51 hstem + 32 75 71 49 134 76 vstem + -107 callgsubr + 121 522 18 callsubr + -46 48 callgsubr + -25 47 callsubr + 30 -77 105 hhcurveto + 27 128 rmoveto + 42 24 -71 125 -56 -35 rlineto + endchar + + + 8 callsubr + 49 49 156 42 hstem + 236 47 117 61 vstem + 227 377 -105 callsubr + 54 49 rmoveto + 93 57 59 70 21 59 callsubr + -26 39 49 1 hvcurveto + -47 -8 rlineto + -70 -5 34 -59 92 hhcurveto + -4 95 rmoveto + 49 8 48 20 11 51 8 47 -38 23 -77 3 -16 -42 rcurveline + 48 -3 19 -10 -5 -26 -4 -21 -21 -9 -27 -6 rrcurveto + endchar + + + -40 callsubr + 105 51 96 -20 24 -20 96 50 hstemhm + 39 79 106 49 hintmask 1010101010000000 + -80 callgsubr + hintmask 0101101010000000 + -32 callgsubr + hintmask 1010101010000000 + -106 callgsubr + hintmask 1010101111000000 + 144 519 rmoveto + 108 59 77 74 18 hvcurveto + -47 48 callgsubr + -24 47 callsubr + 29 -77 105 hhcurveto + -5 111 rmoveto + 51 8 55 22 10 54 10 53 -42 27 -81 2 -17 -50 rcurveline + 53 -2 21 -13 -5 -26 rrcurveto + hintmask 1010110010000000 + 166 callsubr + + + -32 callsubr + 73 51 176 50 hstem + 32 75 72 49 133 76 vstem + -107 callgsubr + 121 522 rmoveto + 108 59 77 74 18 hvcurveto + -47 48 callgsubr + -24 47 callsubr + 29 -77 105 hhcurveto + -5 111 rmoveto + 51 8 55 22 10 54 10 53 -42 27 -81 2 -17 -50 rcurveline + 53 -2 21 -13 -5 -26 166 callsubr + + + 8 callsubr + 52 45 90 50 0 50 hstemhm + 235 46 hintmask 11110110 + 227 377 -105 callsubr + 55 52 222 callsubr + hintmask 11111010 + 91 135 rmoveto + 54 29 40 51 12 hvcurveto + -43 5 rlineto + -29 -10 -13 -17 -23 hhcurveto + hintmask 11110110 + -41 -15 50 -64 hhcurveto + -55 -28 -40 -52 -13 hvcurveto + 44 -5 rlineto + 30 9 14 17 23 hhcurveto + hintmask 11111010 + 41 15 -50 64 hhcurveto + endchar + + + -40 callsubr + 105 47 92 50 -46 -20 58 50 hstemhm + 39 79 108 47 hintmask 1010101110000000 + -80 callgsubr + hintmask 0101101110000000 + -32 callgsubr + hintmask 1010101110000000 + -106 callgsubr + hintmask 1010110011000000 + 143 519 rmoveto + 98 50 56 51 16 hvcurveto + -46 8 rlineto + -33 -11 -37 -35 -62 hhcurveto + -61 -24 35 33 hvcurveto + -47 -8 rlineto + -51 -4 30 -56 98 hhcurveto + 80 callgsubr + hintmask 1010101110000000 + 75 callgsubr + hintmask 1010110011000000 + 38 22 -42 58 hhcurveto + endchar + + + -32 callsubr + 73 47 92 50 -8 50 hstemhm + 32 75 75 47 132 76 hintmask 1111011110000000 + -107 callgsubr + 121 522 rmoveto + 98 50 56 51 16 hvcurveto + -46 8 rlineto + -33 -11 -37 -35 -62 hhcurveto + -61 -24 35 33 hvcurveto + -47 -8 rlineto + -51 -4 30 -56 98 hhcurveto + hintmask 1111101110000000 + 80 callgsubr + hintmask 1111011110000000 + 75 callgsubr + hintmask 1111101110000000 + 38 22 -42 58 hhcurveto + endchar + + + 80 -212 103 130 -21 205 134 callgsubr + 49 53 hstemhm + 136 107 -8 52 hintmask 01111010 + 227 377 -105 callsubr + 54 49 -4 callgsubr + hintmask 11111100 + -172 -917 -103 callsubr + + + 107 64 callsubr + 200 -31 callgsubr + 105 55 96 -20 hstemhm + 39 79 30 107 -59 54 hintmask 0110101110000000 + -80 callgsubr + hintmask 0101011110000000 + -32 callgsubr + hintmask 0110101110000000 + -106 callgsubr + hintmask 0110101110100000 + 77 callgsubr + hintmask 0110101111000000 + -128 -783 5 callgsubr + hintmask 1010101111000000 + -50 callgsubr + hintmask 0110101111000000 + -3 callsubr + + + 62 -212 103 97 61 201 51 135 62 73 55 hstemhm + 32 75 16 107 -52 54 129 76 hintmask 1111110110000000 + -107 callgsubr + 122 522 -93 callgsubr + 226 callsubr + -135 -783 -103 callsubr + + + 73 -212 103 109 170 callgsubr + 158 107 -86 callgsubr + 41 -868 -103 callsubr + + + 51 64 callsubr + 200 61 180 52 156 61 hstemhm + 37 74 22 107 142 65 hintmask 01111101 + -107 callsubr + hintmask 01111111 + -195 -493 5 callgsubr + hintmask 10111111 + -50 callgsubr + hintmask 01111111 + -3 callsubr + + + 21 callsubr + 170 46 hstem + 375 64 -86 callgsubr + 146 41 rmoveto + -71 callgsubr + endchar + + + 51 -26 callsubr + 209 53 hstemhm + 37 74 235 64 -28 65 hintmask 11111010 + -107 callsubr + -95 291 rmoveto + hintmask 11111100 + -76 callsubr + endchar + + + 21 callsubr + 53 172 callgsubr + 35 527 hintmask 11110100 + -91 callsubr + 273 53 -58 callsubr + hintmask 11111100 + -50 callsubr + hintmask 11110100 + 66 callgsubr + + + 51 -26 callsubr + 79 147 callgsubr + 37 74 271 65 hintmask 1110100110000000 + -107 callsubr + hintmask 1111010110000000 + 18 296 33 callgsubr + hintmask 1111001110000000 + -52 callgsubr + hintmask 1110100110000000 + -61 callgsubr + hintmask 1111010110000000 + 52 callgsubr + + + 174 callgsubr + hstem + 35 566 -86 callgsubr + 95 43 79 callgsubr + + + 51 -26 callsubr + 147 51 -92 callgsubr + -170 289 78 callgsubr + + + 174 callgsubr + hstem + 35 493 -86 callgsubr + 95 67 callgsubr + 25 49 146 callsubr + endchar + + + 51 -26 callsubr + 147 51 -92 callgsubr + -170 289 -62 callgsubr + 1 34 rmoveto + 39 26 -78 121 -53 -31 rlineto + endchar + + + 174 callgsubr + 50 41 hstem + 35 554 -86 callgsubr + 99 43 133 callgsubr + 248 31 0 callsubr + endchar + + + 51 -26 callsubr + 147 51 54 41 hstem + 37 74 271 65 37 61 vstem + -107 callsubr + -170 289 29 callgsubr + -21 callgsubr + + + 21 callsubr + 109 179 callsubr + 35 510 hintmask 11110110 + -91 callsubr + 98 15 callsubr + + + 51 -26 callsubr + 143 51 18 51 -47 -20 58 51 hstemhm + 37 74 271 65 hintmask 1110011110000000 + -107 callsubr + hintmask 1111001110000000 + -170 289 rmoveto + 118 71 rlineto + 4 hlineto + 89 -71 32 31 -85 91 rlineto + -68 hlineto + -115 -87 rlineto + hintmask 1110100110000000 + 26 callsubr + hintmask 1110011110000000 + 16 callsubr + hintmask 1110100110000000 + 154 callgsubr + + + 73 -212 103 109 49 callgsubr + 136 45 hstem + 158 107 -86 callgsubr + 85 119 callsubr + -11 -938 -103 callsubr + + + 51 64 callsubr + 200 61 180 52 156 61 186 56 hstemhm + 37 74 22 107 142 65 hintmask 0111111010000000 + -107 callsubr + -184 287 -91 callgsubr + hintmask 0111111110000000 + 20 -814 5 callgsubr + hintmask 1011111110000000 + -50 callgsubr + hintmask 0111111110000000 + -3 callsubr + + + 70 callgsubr + 190 46 hstem + 230 64 -13 callgsubr + 1 41 rmoveto + -71 callgsubr + endchar + + + 149 callsubr + 170 46 hstem + 266 64 -75 callsubr + 196 631 rmoveto + -71 callgsubr + endchar + + + 121 callgsubr + 241 53 hstem + 219 64 39 callgsubr + 27 86 rmoveto + -76 callsubr + endchar + + + -178 -217 103 135 115 callsubr + hstem + -3 107 -13 callgsubr + -120 -873 -103 callsubr + + + -106 -218 103 115 150 callgsubr + hstem + 30 107 -75 callsubr + 72 -284 -103 callsubr + + + -193 64 callsubr + 233 19 callsubr + 121 103 hstemhm + -10 107 46 107 hintmask 01111110 + 4 callgsubr + 132 callgsubr + -153 -799 5 callgsubr + hintmask 10111110 + -50 callgsubr + hintmask 01111110 + -3 callsubr + + + 203 -212 103 97 67 546 67 hstem + 60 79 56 107 225 79 vstem + -106 callsubr + -47 -267 -103 callsubr + + + 85 138 callgsubr + hstemhm + 39 77 -4 107 178 78 hintmask 01111010 + -104 callsubr + hintmask 01110110 + -59 -264 5 callgsubr + hintmask 10110110 + -50 callgsubr + hintmask 01110110 + -3 callsubr + + + 22 callgsubr + 158 46 hstem + 60 79 283 64 41 79 vstem + -106 callsubr + 68 642 rmoveto + -71 callgsubr + endchar + + + 71 callgsubr + 209 53 hstemhm + 39 77 245 64 -28 78 hintmask 11010100 + -104 callsubr + 77 520 rmoveto + hintmask 11111000 + -76 callsubr + endchar + + + 22 callgsubr + 100 47 -97 callgsubr + 17 644 79 callgsubr + + + 71 callgsubr + 147 51 37 callgsubr + 2 518 78 callgsubr + + + 22 callgsubr + 100 47 -97 callgsubr + 17 644 -33 callgsubr + 25 49 146 callsubr + endchar + + + 71 callgsubr + 147 51 37 callgsubr + 2 518 -62 callgsubr + 1 34 rmoveto + 39 26 -78 121 -53 -31 rlineto + endchar + + + 22 callgsubr + 100 47 50 41 -97 callgsubr + 21 644 133 callgsubr + 248 31 0 callsubr + endchar + + + 71 callgsubr + 147 51 54 41 hstemhm + 39 77 281 78 24 61 hintmask 11111100 + -104 callsubr + 2 518 29 callgsubr + hintmask 11111110 + -21 callgsubr + + + 22 callgsubr + 97 179 callsubr + 60 79 388 79 hintmask 11101110 + -106 callsubr + 20 644 132 callsubr + hintmask 11110110 + 43 callgsubr + hintmask 11101110 + -41 -15 49 -63 hhcurveto + -55 -29 -40 -51 -11 hvcurveto + 43 -5 rlineto + 29 10 13 17 24 hhcurveto + hintmask 11110110 + 41 14 -50 63 hhcurveto + endchar + + + 71 callgsubr + 143 51 18 51 -47 -20 58 51 hstemhm + 39 77 281 78 hintmask 11001111 + -104 callsubr + hintmask 11100111 + 2 518 rmoveto + 118 71 rlineto + 4 hlineto + 89 -71 32 31 -85 91 rlineto + -68 hlineto + -115 -87 rlineto + hintmask 11010011 + 26 callsubr + hintmask 11001111 + 16 callsubr + hintmask 11010011 + 154 callgsubr + + + 203 -212 103 97 67 546 67 124 45 hstem + 60 79 56 107 225 79 vstem + -106 callsubr + 7 643 -87 callgsubr + -21 -938 -103 callsubr + + + 85 138 callgsubr + 186 56 hstemhm + 39 77 -4 107 178 78 hintmask 01111101 + -104 callsubr + -12 111 callsubr + hintmask 01111011 + -16 -814 5 callgsubr + hintmask 10111011 + -50 callgsubr + hintmask 01111011 + -3 callsubr + + + -28 callgsubr + 88 648 -78 callsubr + + + 87 7 callgsubr + 219 -20 170 callsubr + hintmask 11111000 + 87 callsubr + hintmask 11111100 + -65 callgsubr + hintmask 11111000 + -121 68 -74 105 vhcurveto + -96 callgsubr + 77 527 -81 callgsubr + + + -28 callgsubr + 138 638 -13 callsubr + + + 87 7 callgsubr + 170 callsubr + hintmask 11110000 + 87 callsubr + hintmask 11111000 + -65 callgsubr + hintmask 11110000 + -121 68 -74 105 vhcurveto + -96 callgsubr + 138 518 -28 callsubr + + + 127 callgsubr + 158 46 hstemhm + 60 79 281 64 43 79 -13 65 hintmask 10101010 + 2 callsubr + hintmask 10101001 + 31 callsubr + hintmask 11001001 + 54 callgsubr + hintmask 10101010 + 123 callsubr + 70 709 rmoveto + hintmask 10111110 + -71 callgsubr + -64 -680 rmoveto + -105 -47 86 204 callsubr + 95 178 141 104 48 -85 -129 -153 -95 -179 -141 hvcurveto + endchar + + + 87 7 callgsubr + 209 53 hstemhm + 39 77 238 64 -21 78 14 64 hintmask 11010100 + 87 callsubr + hintmask 11010110 + -65 callgsubr + hintmask 11010100 + -121 68 -74 105 vhcurveto + 78 584 rmoveto + hintmask 11111000 + -76 callsubr + hintmask 11010100 + -68 -559 -96 callsubr + endchar + + + 127 callgsubr + 41 172 callgsubr + 60 79 388 79 -13 65 hintmask 10110110 + 2 callsubr + hintmask 10110101 + 31 callsubr + hintmask 11010101 + 54 callgsubr + hintmask 10110110 + -10 callgsubr + 161 654 -58 callsubr + hintmask 10111110 + -50 callsubr + hintmask 10110110 + 66 callgsubr + + + 87 7 callgsubr + 79 59 26 59 -9 -20 24 -20 170 callsubr + hintmask 1101001100000000 + 87 callsubr + hintmask 1101001110000000 + -65 callgsubr + hintmask 1101001100000000 + -121 68 -74 105 vhcurveto + -96 callgsubr + hintmask 1110101100000000 + 164 525 33 callgsubr + hintmask 1110011100000000 + -52 callgsubr + hintmask 1101001100000000 + -61 callgsubr + hintmask 1110101100000000 + 52 callgsubr + + + 203 -212 103 97 67 546 39 -39 67 hstemhm + 60 79 54 107 227 79 -13 65 hintmask 01011010 + 2 callsubr + hintmask 01011001 + 31 callsubr + hintmask 01101001 + 54 callgsubr + hintmask 01011010 + 123 callsubr + hintmask 11011110 + -45 -200 -102 callgsubr + 49 267 rmoveto + -105 -47 86 204 callsubr + 95 178 141 104 48 -85 -129 -153 -95 -179 -141 hvcurveto + endchar + + + 87 138 callgsubr + hstemhm + 39 77 -7 107 181 78 14 64 hintmask 01111010 + 87 callsubr + hintmask 01111011 + -65 callgsubr + hintmask 01111010 + -121 68 -74 105 vhcurveto + hintmask 01110110 + -54 -200 5 callgsubr + hintmask 10110110 + -50 callgsubr + hintmask 01110110 + -29 23 -16 26 vhcurveto + hintmask 01111010 + 62 264 -96 callsubr + endchar + + + 186 -212 103 97 115 callgsubr + hstemhm + 79 78 24 107 hintmask 11110000 + -105 callgsubr + hintmask 11111000 + -56 -200 -103 callsubr + + + 98 144 callsubr + hintmask 01101100 + -60 callgsubr + hintmask 01011100 + 83 callgsubr + hintmask 01101100 + -104 callgsubr + vhcurveto + hintmask 01101110 + 37 -203 5 callgsubr + hintmask 10101110 + -50 callgsubr + hintmask 01101110 + -3 callsubr + + + 12 callsubr + 190 46 hstem + 79 78 261 64 vstem + -105 callgsubr + 69 709 rmoveto + -71 callgsubr + endchar + + + 45 callgsubr + 241 53 hstemhm + 56 78 221 64 hintmask 10111100 + -60 callgsubr + hintmask 01111100 + 83 callgsubr + hintmask 10111100 + -104 callgsubr + vhcurveto + 120 584 rmoveto + -76 callsubr + endchar + + + -14 callsubr + 90 715 -78 callsubr + + + 113 13 callgsubr + 251 -20 hstemhm + 56 78 404 65 hintmask 10111100 + -60 callgsubr + hintmask 01111100 + -22 callgsubr + hintmask 10111100 + -104 callgsubr + vhcurveto + 127 591 -81 callgsubr + + + -14 callsubr + 140 705 -13 callsubr + + + 113 13 callgsubr + hstemhm + 56 78 404 65 hintmask 10111000 + -60 callgsubr + hintmask 01111000 + -22 callgsubr + hintmask 10111000 + -104 callgsubr + vhcurveto + 188 582 -28 callsubr + + + 189 callsubr + 190 46 hstem + 79 78 260 64 193 66 vstem + -88 callsubr + 68 709 rmoveto + -71 callgsubr + endchar + + + 113 13 callgsubr + 241 53 hstemhm + 56 78 221 64 119 65 hintmask 10111110 + -60 callgsubr + hintmask 01111110 + -8 -74 rlineto + 63 hlineto + 90 452 rlineto + 56 15 59 46 80 vvcurveto + 18 -4 23 -7 20 vhcurveto + -61 -22 5 -14 3 -19 -1 -12 rlinecurve + -2 -60 -42 -36 -48 -5 rrcurveto + -27 -35 callgsubr + 120 584 rmoveto + -76 callsubr + endchar + + + 189 callsubr + 73 172 callgsubr + 79 78 517 66 hintmask 11101100 + -88 callsubr + 195 721 -58 callsubr + hintmask 11111100 + -50 callsubr + hintmask 11101100 + 66 callgsubr + + + 113 13 callgsubr + 111 147 callgsubr + 56 78 404 65 hintmask 1010100110000000 + -60 callgsubr + hintmask 0110100110000000 + -22 callgsubr + hintmask 1010100110000000 + -104 callgsubr + vhcurveto + hintmask 1011010110000000 + 226 589 33 callgsubr + hintmask 1011001110000000 + -52 callgsubr + hintmask 1010100110000000 + -61 callgsubr + hintmask 1011010110000000 + 52 callgsubr + + + 199 -212 103 97 115 callgsubr + hstemhm + 79 78 26 107 384 66 hintmask 11110100 + -88 callsubr + hintmask 11111100 + -54 -200 -103 callsubr + + + 113 144 callsubr + 272 65 hintmask 01101101 + -60 callgsubr + hintmask 01011101 + -22 callgsubr + hintmask 01101101 + -104 callgsubr + vhcurveto + hintmask 01101111 + 37 -203 5 callgsubr + hintmask 10101111 + -50 callgsubr + hintmask 01101111 + -3 callsubr + + + 31 -220 103 138 115 callsubr + hstem + 104 107 -75 callgsubr + -37 -476 -103 callsubr + + + 18 -217 103 -95 62 -49 -21 703 -20 hstemhm + 232 107 hintmask 01011000 + -6 -209 rmoveto + 93 59 73 95 51 hvcurveto + 286 527 rlineto + -76 hlineto + -140 -273 -24 -46 -25 -53 -23 -46 rlinecurve + -4 hlineto + -4 46 -5 55 -7 44 -38 273 rcurveline + -76 hlineto + 83 -487 -18 -35 rlineto + -67 -33 -45 -44 -49 hhcurveto + -13 -11 3 6 -12 hvcurveto + hintmask 00111000 + -25 -57 rlineto + hintmask 01011000 + -10 19 23 -4 14 hhcurveto + hintmask 00111000 + 287 -8 5 callgsubr + hintmask 10011000 + -50 callgsubr + hintmask 00111000 + -3 callsubr + + + 177 callsubr + 190 46 hstem + 333 64 -75 callgsubr + 80 441 rmoveto + -71 callgsubr + endchar + + + 18 -209 62 633 -20 241 53 hstem + 313 64 vstem + -97 callsubr + 255 781 rmoveto + -76 callsubr + endchar + + + 177 callsubr + 73 172 callgsubr + 83 459 hintmask 11101000 + -87 callsubr + 207 453 -5 callsubr + + + 18 -209 62 633 -20 111 147 callgsubr + -62 545 hintmask 11010010 + -97 callsubr + hintmask 11101010 + 368 786 33 callgsubr + hintmask 11100110 + -52 callgsubr + hintmask 11010010 + -61 callgsubr + hintmask 11101010 + 52 callgsubr + + + 50 endchar + + + -330 endchar + + + -410 endchar + + + endchar + + + 114 callgsubr + + + -49 187 callsubr + 97 52 vstem + 95 -250 rmoveto + 52 1000 -52 hlineto + 149 -1000 rmoveto + 52 1000 -52 hlineto + endchar + + + -310 endchar + + + -188 434 256 hstem + 112 150 101 callgsubr + endchar + + + -22 434 256 hstem + 112 315 101 callgsubr + 90 -256 137 callsubr + endchar + + + -188 434.5 255 hstem + 142.5 73 vstem + 164 434 rmoveto + 51 1 1 255 -76 -1 5 -96 rlineto + endchar + + + 108 -12 120 hstemhm + 43 113 -113 474 -218 113 hintmask 10100000 + 102 196 81 callsubr + hintmask 11010000 + 41 callgsubr + 267 208 81 callsubr + 41 callgsubr + endchar + + + -16 -12 120 514 60 hstem + 94 113 145 73 vstem + 204 196 rmoveto + 24 147 197 37 165 vvcurveto + 86 -61 51 -93 -64 -65 -31 -44 -42 vhcurveto + 38 -44 rlineto + 35 35 42 24 47 hhcurveto + 55 35 -34 -58 -88 -82 -45 -45 -68 hvcurveto + 32 140 12 63 rlineto + -62 hlineto + -55 -331 rlineto + -11 -213 rmoveto + 39 27 -49 callgsubr + endchar + + + 53 570 50 hstem + 75 468 vstem + 75 570 222 callgsubr + + + 110 -233 58 hstem + -28 540 vstem + 217 -233 rmoveto + 126 103 55 74 66 hvcurveto + -30 40 rlineto + -67 -60 -97 -44 -99 hhcurveto + -99 -81 41 67 -38 hvcurveto + -36 -37 rlineto + -74 38 85 -55 122 hhcurveto + endchar + + + 369 -12 120 510 64 hstem + 94 190 callsubr + 66 190 callsubr + vstem + 145 201 -64 callgsubr + -17 callgsubr + -29 18 -21 29 hvcurveto + 394 213 -64 callgsubr + -17 callgsubr + -29 18 -21 29 hvcurveto + endchar + + + 242 -12 120 510 64 hstemhm + 94 190 callsubr + 15 113 hintmask 11110000 + 145 201 -64 callgsubr + -17 callgsubr + -29 18 -21 29 hvcurveto + 351 208 81 callsubr + hintmask 11111000 + 41 callgsubr + endchar + + + 229 -12 120 510 64 hstem + 43 113 189 190 callsubr + vstem + 102 196 81 callsubr + 41 callgsubr + 305 213 -64 callgsubr + -17 callgsubr + -29 18 -21 29 hvcurveto + endchar + + + 50 0 80 164 36 -36 38 65 136 callsubr + 174 82 0 -20 hstemhm + 9 479 hintmask 10101101 + 193 559 rmoveto + 2 hlineto + 19 -174 rlineto + -46 hlineto + -134 -385 rmoveto + 61 hlineto + 48 244 rlineto + 90 hlineto + 35 -244 rlineto + 72 hlineto + 49 244 rlineto + 70 220 callgsubr + -70 113 callgsubr + 69 hlineto + 9 38 rlineto + -70 hlineto + 52 256 rlineto + -61 hlineto + -50 -256 rlineto + -87 hlineto + -38 256 rlineto + -72 hlineto + hintmask 10110011 + -51 -256 -73 -5 rlineto + hintmask 11001011 + -8 -33 rlineto + 73 hlineto + -13 -65 -72 -4 rlineto + hintmask 10101011 + -9 -34 rlineto + 74 hlineto + 77 86 rmoveto + 2 17 rlineto + 57 hlineto + 9 -65 -15 callgsubr + 193 26 rmoveto + -4 -26 rlineto + -52 hlineto + -10 65 rlineto + 74 hlineto + -44 -267 rmoveto + -16 164 rlineto + 43 hlineto + -23 -164 rlineto + endchar + + + 47 0 58 248 136 callsubr + 196 58 40 -20 hstemhm + 76.5 257.5 -69.5 45 -30.5 55 hintmask 10111001 + 245 380 rmoveto + 48 160 rlineto + 3 hlineto + -16 -160 -2 -36 rlineto + -45 hlineto + -191 -344 rmoveto + 79 hlineto + hintmask 10111010 + 100 306 rlineto + 54 hlineto + -21 -306 rlineto + 81 hlineto + 99 306 rlineto + 63 220 callgsubr + -59 hlineto + 95 294 rlineto + -65 hlineto + hintmask 10111001 + -87 -294 rlineto + -63 hlineto + 16 254 rlineto + -68 hlineto + -85 -254 rlineto + hintmask 10111100 + -61 hlineto + 30 294 rlineto + -71 hlineto + hintmask 11011100 + -21 -295 -63 -3 rlineto + hintmask 10111010 + -8 -34 rlineto + 69 hlineto + 32 -248 rmoveto + 17 135 11 113 rlineto + 53 hlineto + -38 -113 -39 -135 rlineto + 203 hmoveto + 13 135 7 113 rlineto + 55 hlineto + -34 -113 -37 -135 rlineto + endchar + + + 57 21 -21 576 62 hstem + 43 487 vstem + 152 hmoveto + 77 hlineto + 47 234 157 75 -14 37 -133 -64 16 78 158 75 -15 37 -134 -64 34 168 rlineto + 171 hlineto + 14 62 rlineto + -423 hlineto + -14 -62 rlineto + 175 hlineto + -41 -203 -158 -74 15 -37 133 62 -15 -77 -159 -74 15 -37 134 63 rlineto + endchar + + + 228 callsubr + 245 54 79 136 callsubr + 62 35 -35 38 69 53 hstemhm + 30 487 -140 72 hintmask 1101011100000000 + 30 hmoveto + 74 hlineto + 49 245 rlineto + 40 hlineto + hintmask 1101011010000000 + 104 91 43 90 40 hvcurveto + 60 220 callgsubr + -55 hlineto + 4 19 3 20 1 23 rrcurveto + 60 220 callgsubr + -70 hlineto + 85 -12 -68 37 -94 hhcurveto + -115 hlineto + hintmask 1101101100000000 + -25 -123 -72 -4 rlineto + hintmask 1110011100000000 + -7 -33 rlineto + 72 hlineto + -13 -62 -71 -5 rlineto + hintmask 1101011010000000 + -7 -33 rlineto + 71 hlineto + 115 207 rmoveto + 30 hlineto + 68 41 -21 -48 13 hvcurveto + -166 hlineto + -43 -217 rmoveto + 16 79 217 callsubr + -52 -30 -55 -27 -74 hhcurveto + -8 117 rmoveto + 13 62 rlineto + 177 hlineto + -22 -3 -21 -5 -19 vhcurveto + endchar + + + 50 -11 63 213 64 261 61 -61 161 hstemhm + 48 77 hintmask 11011000 + 180 -110 rmoveto + 56 hlineto + 20 99 65 5 49 32 36 37 rlinecurve + 53 266 rlineto + -165 hlineto + -14 -64 rlineto + 97 hlineto + -35 -173 rlineto + -21 -19 -34 -19 -40 hhcurveto + -79 -45 71 114 200 106 153 125 47 25 -29 -41 20 hvcurveto + hintmask 11101000 + 57 37 -24 47 -36 39 -59 8 rlinecurve + hintmask 11011000 + 20 100 rlineto + -55 hlineto + -21 -100 rlineto + -151 -21 -131 -166 -235 vvcurveto + -132 56 -88 95 -18 vhcurveto + endchar + + + 48 -12 61 188 46 68 46 192 61 hstem + 54 74 239 75 vstem + 206 -12 rmoveto + 63 71 35 43 50 hvcurveto + -24 50 rlineto + -36 -44 -50 -31 -54 hhcurveto + -59 -31 31 45 47 20 35 29 30 hvcurveto + 271 hlineto + 10 46 rlineto + -223 hlineto + 33 23 37 21 33 24 rrcurveto + 133 218 callgsubr + -89 hlineto + 30 34 21 41 56 vvcurveto + 74 -51 48 -82 -71 -50 -33 -38 -46 vhcurveto + 31 -48 rlineto + 36 40 34 22 48 hhcurveto + 46 26 -30 -40 -54 -32 -36 -44 -32 hvcurveto + -175 hlineto + -67 -5 -8 -41 rlineto + 179 hlineto + -32 -20 -33 -22 -28 -26 rrcurveto + -35 hlineto + -66 -5 -8 -41 rlineto + 70 hlineto + -21 -32 -13 -39 -50 vvcurveto + -80 59 -48 93 vhcurveto + endchar + + + 50 -12 65 -44 -21 24 -21 hstemhm + 62 76 hintmask 01010000 + 194 -110 rmoveto + 50 hlineto + 20 98 60 4 51 27 47 43 rlinecurve + hintmask 10010000 + -39 47 -30 -29 -35 -23 -42 -4 rlinecurve + 107 533 32 -10 19 -25 18 -35 rlinecurve + 55 36 -24 46 -34 39 -54 12 rlinecurve + 20 98 rlineto + -49 hlineto + -19 -94 rlineto + -153 -9 -132 -169 -246 vvcurveto + hintmask 00110000 + -132 56 -88 96 -18 vhcurveto + -76 246 rmoveto + 191 87 146 109 15 vhcurveto + -106 -532 rlineto + -58 19 -32 65 96 vvcurveto + endchar + + + 57 21 -21 475 45 72 46 hstem + 74 456 vstem + 153 hmoveto + 76 hlineto + 95 475 rlineto + 172 219 callsubr + -353 hlineto + -71 -4 -9 -41 217 callsubr + -151 117 rmoveto + 422 hlineto + 11 46 rlineto + -422 hlineto + endchar + + + 228 callsubr + 257 63 131 46 81 63 -45 45 hstemhm + 70 440 -173 77 hintmask 11101100 + 70 257 rmoveto + 73 hlineto + 10 10 0 1 10 hvcurveto + 98 -258 rlineto + 82 hlineto + -109 272 rlineto + hintmask 11101010 + 84 25 69 60 14 94 rrcurveto + 61 218 callgsubr + -67 hlineto + -2 44 -20 34 -32 21 rrcurveto + 139 219 callsubr + -363 hlineto + hintmask 11110010 + -13 -63 rlineto + 64 hlineto + 80 52 -21 -60 7 hvcurveto + -152 hlineto + -68 -5 -9 -41 rlineto + 227 hlineto + -87 -15 -79 -44 -105 hhcurveto + -53 hlineto + endchar + + + 50 -12 73 577 -20 hstem + 32 435 vstem + 173 61 rmoveto + 47 236 184 92 -14 38 -161 -83 16 79 185 92 -14 38 -161 -83 33 168 -15 callgsubr + -41 -204 -112 -54 15 -38 87 43 -16 -78 -112 -53 14 -38 89 43 -55 -271 rlineto + 210 181 87 214 -4 hvcurveto + -68 -17 -1 -131 -104 -75 -121 -5 rlinecurve + endchar + + + 57 21 -21 166 197 callsubr + 47 63 45 -45 47 259 56 hstemhm + 378 76 hintmask 10101110 + 30 hmoveto + 74 hlineto + 33 166 rlineto + 200 hlineto + 11 47 rlineto + -202 hlineto + 13 63 rlineto + 38 hlineto + 153 104 80 141 96 -75 45 -108 hvcurveto + -113 hlineto + hintmask 10110110 + -63 -315 -78 -4 rlineto + hintmask 11001110 + -8 -43 rlineto + 76 hlineto + -12 -63 -77 -5 rlineto + hintmask 10101110 + -8 -42 rlineto + 75 hlineto + 106 157 rmoveto + 51 259 rlineto + 30 hlineto + 84 44 -27 -70 -105 -71 -57 -107 hvcurveto + endchar + + + -36 -12 65 608 59 hstem + 83 79 208 66 vstem + 233 517 rmoveto + 99 20 42 45 32 hhcurveto + 27 16 -22 -46 -85 -70 -110 -110 -96 hvcurveto + 20 -314 rmoveto + 58 49 30 32 41 hvcurveto + -22 48 rlineto + -21 -30 -34 -24 -43 hhcurveto + -50 -33 37 106 23 hvcurveto + 4 20 rlineto + 168 123 95 144 120 vvcurveto + 70 -38 47 -64 -77 -72 -64 -154 -31 vhcurveto + -54 -270 -29 -20 -31 -19 -33 -17 rlinecurve + 19 -53 21 11 19 11 20 12 rlinecurve + -110 -16 58 -59 82 hhcurveto + endchar + + + 235 -11 41 223 45 155 47 113 40 hstem + 36 43 379 59 101 25 callgsubr + -105 107 rmoveto + 60 hlineto + 22 116 rlineto + 65 hlineto + 91 83 50 100 64 -53 33 -71 hvcurveto + -125 hlineto + 20 -202 rmoveto + 30 155 rlineto + 61 hlineto + 50 29 -22 -39 -58 -42 -36 -70 hvcurveto + endchar + + + 171 354 45 15 66 138 58 -37 44 hstemhm + 98 53 62 54 hintmask 10011100 + 148 354 rmoveto + 71 48 49 55 35 -19 23 -26 14 hvcurveto + -39 23 rlineto + -16 8 -16 14 21 vvcurveto + 20 22 23 34 21 17 -11 -21 20 vhcurveto + 36 34 rlineto + 24 -25 -28 18 -36 hhcurveto + -65 -49 -41 -58 -37 25 -23 19 -12 hvcurveto + 41 -24 rlineto + 18 -11 12 -10 -20 vvcurveto + -27 -27 -21 -34 -29 -25 16 25 -17 vhcurveto + -38 -31 rlineto + -35 24 34 -20 47 hhcurveto + 162 12 rmoveto + 53 hlineto + 29 140 rlineto + hintmask 11101100 + 11 112 rlineto + 4 hlineto + 38 -204 rlineto + 35 hlineto + 90 callsubr + -23 115 rlineto + -68 hlineto + endchar + + + 348 9 -21 33 -21 339 51 192 164 callgsubr + 109 654 hintmask 01101100 + 58 callsubr + hintmask 01110100 + 32 callsubr + hintmask 10101100 + 101 callsubr + -96 69 callgsubr + hintmask 01101100 + -95 -672 rmoveto + -46 callsubr + endchar + + + 343 -12 138 callsubr + 180 164 callgsubr + 470 56 151 57 hintmask 11101110 + 58 callsubr + hintmask 11110110 + 32 callsubr + hintmask 11101110 + 101 callsubr + -104 69 callgsubr + -59 -413 -79 callsubr + + + 714 -12 50 -17 -21 312 39 -39 78 -38 50 180 164 callgsubr + 748 172 callsubr + hintmask 1000101110000000 + 135 107 callsubr + -453 -402 21 callgsubr + hintmask 1000110110000000 + 32 callsubr + hintmask 0101001110000000 + 101 callsubr + 324 -582 21 callgsubr + hintmask 1010001110000000 + 32 callsubr + hintmask 1001001110000000 + 101 callsubr + 257 -324 rmoveto + 116 66 138 124 hvcurveto + hintmask 1000101110000000 + 87 -46 65 -77 -116 -66 -138 -124 vhcurveto + hintmask 1001001110000000 + -87 46 -65 77 vhcurveto + 5 50 rmoveto + -49 -20 45 61 hvcurveto + hintmask 1000101110000000 + 96 43 112 75 49 20 -45 -61 vhcurveto + hintmask 1001001110000000 + -96 -43 -112 -75 vhcurveto + endchar + + + 348 -12 149 callgsubr + 192 164 callgsubr + 652 60 hintmask 11101100 + 58 callsubr + hintmask 11110100 + 32 callsubr + hintmask 11101100 + 101 callsubr + -96 69 callgsubr + -32 -684 -89 callsubr + endchar + + + 365 -12 49 172 44 17 51 18 51 230 52 hstemhm + 289 61 318 60 hintmask 10101110 + 51 270 rmoveto + -77 callgsubr + 101 -320 -56 callsubr + -66 -684 rmoveto + 79 72 60 91 hvcurveto + hintmask 11111110 + 70 -46 44 -65 -15 -22 -4 -11 -17 vhcurveto + 29 101 rlineto + 158 hlineto + 10 51 rlineto + -207 hlineto + -52 -187 23 -23 rlineto + 18 25 19 11 30 hhcurveto + 42 28 -28 -48 -58 -45 -38 -44 -50 -26 callgsubr + hintmask 10101110 + 176 callgsubr + + + 365 -12 49 172 44 5 49 32 51 60 41 133 48 hstemhm + 266 59 -37 60 320 60 hintmask 1011111010000000 + 184 168 callsubr + hintmask 1011110110000000 + -85 callgsubr + hintmask 1011111010000000 + -60 callsubr + -25 98 callgsubr + -66 -684 rmoveto + 79 72 60 91 hvcurveto + hintmask 1101111010000000 + 70 -46 44 -65 -15 -22 -4 -11 -17 vhcurveto + 29 101 rlineto + 158 hlineto + 10 51 rlineto + -207 hlineto + -52 -187 23 -23 rlineto + 18 25 19 11 30 hhcurveto + 42 28 -28 -48 -58 -45 -38 -44 -50 -26 callgsubr + hintmask 1011111010000000 + 176 callgsubr + + + 393 -12 149 callgsubr + -14 43 184 57 hstemhm + 697 60 hintmask 11011100 + 115 419 -56 callgsubr + -69 -388 -56 callsubr + -31 -684 rmoveto + 79 72 60 91 70 -46 44 -65 -15 -22 -4 -11 -17 hvcurveto + hintmask 11101100 + 29 101 rlineto + 158 hlineto + 10 51 rlineto + -207 hlineto + -52 -187 23 -23 rlineto + 18 25 19 11 30 hhcurveto + 42 28 -28 -48 -58 -45 -38 -44 -50 -26 callgsubr + hintmask 11011100 + 176 callgsubr + + + 343 -12 142 callgsubr + 180 164 callgsubr + 444 58 150 56 hintmask 11101110 + 58 callsubr + hintmask 11110110 + 32 callsubr + hintmask 11101110 + 101 callsubr + -104 69 callgsubr + -83 -529 -88 callgsubr + + + 357 -12 49 161 44 16 49 46 49 77 44 86 51 hstemhm + 272 60 124 58 150 56 hintmask 1011111110000000 + 181 258 -89 callsubr + -40 98 callgsubr + hintmask 1111111110000000 + -111 -529 -88 callgsubr + + + 361 -12 49 143 41 37 50 46 48 220 50 hstemhm + 61 172 callsubr + 292 59 -37 60 hintmask 1111111100000000 + 184 258 -92 callsubr + -54 -320 -56 callsubr + -43 -684 18 callgsubr + 226 callsubr + -85 callgsubr + hintmask 1111111100000000 + -60 callsubr + endchar + + + 196 callgsubr + 281 -16 rmoveto + 39 42 -195 193 rlineto + 449 63 -449 hlineto + 195 193 -39 42 -261 -264 rlineto + -5 vlineto + endchar + + + 196 callgsubr + 312 -16 rmoveto + 262 264 rlineto + 5 vlineto + -262 264 -39 -42 195 -193 rlineto + -448 -63 448 hlineto + -195 -193 rlineto + endchar + + + 370 -53 53 308 53 hstem + 227 60 226 60 vstem + 227 -53 rmoveto + 346 361 190 hlineto + 16 39 -377 361 1 callsubr + -377 -361 16 -39 181 callgsubr + 60 -308 rmoveto + 361 -157 vlineto + -2 4 270 262 rlineto + 4 hlineto + 270 -262 -2 -4 rlineto + -157 -361 hlineto + endchar + + + 52 callsubr + + + -186 268 120 hstem + 79 113 vstem + 126 268 rmoveto + -57 callgsubr + endchar + + + 370 391 332 hstem + 94 612 vstem + 142 391 rmoveto + 258 243 258 -243 48 50 -306 282 -306 -282 rlineto + endchar + + + 570 -178 63 203 66 212 66 203 63 hstem + 50 66 204 79 202 79 204 66 vstem + 208 -178 rmoveto + 136 55 103 125 hvcurveto + 38 202 -38 vlineto + -125 55 -103 136 99 59 68 89 115 -84 60 -136 vhcurveto + -50 212 50 hlineto + 136 84 60 117 88 -59 67 -99 -135 -56 -96 -132 hvcurveto + -38 -202 38 vlineto + 132 -56 96 -135 -99 -59 -67 -88 -117 84 -60 136 vhcurveto + 50 -212 -50 hlineto + -136 -84 -60 -115 -89 59 -68 99 hvcurveto + 63 vmoveto + -64 -28 48 48 64 54 43 77 hvcurveto + 73 -55 hlineto + -102 -41 -46 -71 vhcurveto + 39 547 rmoveto + -77 -54 43 64 48 28 48 64 71 41 -52 -96 hvcurveto + -55 vlineto + 360 55 rmoveto + 96 40 52 72 64 28 -48 -48 -64 -54 -43 -77 vhcurveto + -73 hlineto + -399 vmoveto + 55 73 vlineto + 77 54 -43 -64 -48 -28 -48 -64 -72 -40 46 102 hvcurveto + -281 121 rmoveto + 212 202 -212 vlineto + endchar + + + -138 645 44 hstem + 38 307 vstem + 38 hmoveto + 60 hlineto + 127 645 221 callsubr + 8 44 rlineto + -170 hlineto + endchar + + + -138 645 44 hstem + 93 197 vstem + 93 hmoveto + 58 hlineto + 139 689 219 callgsubr + -9 -44 221 callsubr + endchar + + + -138 -52 45 hstem + 28 197 vstem + 28 -52 rmoveto + 171 hlineto + 9 45 rlineto + -112 hlineto + 129 645 rlineto + -58 hlineto + endchar + + + -138 -52 45 hstem + -28 307 vstem + -28 -52 rmoveto + 170 hlineto + 137 690 rlineto + -59 hlineto + -128 -645 rlineto + -112 hlineto + endchar + + + 570 -5 63 534 62 hstem + 38 924 vstem + 652 -5 rmoveto + 310 63 -266 hlineto + -348 596 rlineto + -310 -62 266 hlineto + 323 hmoveto + 335 62 -335 hlineto + endchar + + + 570 -4 62 534 62 hstem + 841 74 vstem + 293 -4 rmoveto + 622 658 -622 hlineto + -273 -323 rlineto + -4 vlineto + 318 -269 rmoveto + -227 271 227 263 rlineto + 503 -534 hlineto + -411 79 rmoveto + 143 148 143 -148 44 44 -143 148 143 147 -44 45 -143 -149 -143 149 -44 -45 144 -147 -144 -148 rlineto + endchar + + + 465 -60 805 hstem + 63 805 vstem + 63 -60 rmoveto + 805 805 -805 hlineto + endchar + + + 465 -60 58 116 callsubr + 97 56 rmoveto + 300 639 300 -639 rlineto + endchar + + + 177 callgsubr + 63 825 131 callsubr + endchar + + + 177 callgsubr + 63 60 131 callsubr + 60 -696 rmoveto + 599 vlineto + 639 -299 rlineto + endchar + + + 465 687 58 111 callgsubr + -96 -56 rmoveto + -300 -639 -300 639 rlineto + endchar + + + 177 callgsubr + 43 825 124 callgsubr + endchar + + + 177 callgsubr + 809 59 124 callgsubr + -59 696 rmoveto + -599 vlineto + -640 300 rlineto + endchar + + + 465 -80 845 hstem + 43 845 vstem + 466 -80 rmoveto + 422 423 -422 422 -423 -422 rlineto + endchar + + + 465 -75 56 724 55 hstem + 51 63 704 62 vstem + 466 -75 rmoveto + 224 190 158 260 255 -190 162 -224 -225 -190 -162 -255 -260 190 -158 225 hvcurveto + 56 vmoveto + -183 -169 132 230 229 169 133 183 185 167 -133 -229 -230 -167 -132 -185 hvcurveto + 97 vmoveto + 137 120 103 162 158 -120 106 -137 -138 -120 -106 -158 -161 120 -104 138 hvcurveto + endchar + + + 155 -12 73 -46 73 9 74 35 73 37 73 -73 74 7 74 -73 73 -47 74 hstemhm + 46 71 -43 70 8 70 36 70 36 70 8 70 -43 71 hintmask 1000000000001000 + 292 -12 rmoveto + 21 15 13 186 callgsubr + -13 19 hvcurveto + hintmask 0100000000010100 + -106 27 rmoveto + 21 15 13 25 23 -16 12 -20 -19 -15 -12 -23 -25 15 -13 19 hvcurveto + 212 hmoveto + 22 14 13 25 23 -16 12 -20 -18 -16 -12 -23 -25 16 -13 18 hvcurveto + hintmask 0010000000100010 + -290 82 rmoveto + 22 14 14 22 24 -15 14 -21 -18 -16 -14 -24 -22 16 -14 18 hvcurveto + 369 hmoveto + 22 13 14 22 24 -15 14 -20 -19 -16 -14 -24 -22 16 -14 19 hvcurveto + hintmask 0001000001000001 + -397 109 rmoveto + 22 15 14 23 24 -16 12 -21 -18 -16 -12 -24 -23 16 -14 18 hvcurveto + 424 hmoveto + 21 15 14 23 24 -17 12 -19 -20 -15 -12 -24 -23 15 -14 20 hvcurveto + hintmask 0000010000100000 + -396 110 rmoveto + 22 14 14 24 24 -15 12 -21 -18 -16 -12 -24 -24 16 -14 18 hvcurveto + hintmask 0000100000000010 + 369 hmoveto + 22 13 13 24 23 -15 13 -20 -19 -16 -13 -23 -24 16 -13 19 hvcurveto + hintmask 0000000100010000 + -291 82 rmoveto + 21 15 14 22 25 -16 12 -20 -19 -15 -12 -25 -22 15 -14 19 hvcurveto + hintmask 0000001000000100 + 212 -1 rmoveto + 22 14 15 22 24 -16 13 -20 -18 -16 -13 -24 -22 16 -15 18 hvcurveto + hintmask 0000000010001000 + -106 27 rmoveto + 21 15 14 186 callgsubr + -14 19 hvcurveto + endchar + + + 335 -10 41 566 74 hstem + 70 41 513 71 vstem + 70 -10 rmoveto + 575 hlineto + 50 60 rlineto + 621 -565 vlineto + -60 -52 rlineto + 41 -588 rmoveto + 566 513 -566 vlineto + endchar + + + 336 -10 41 77 59 430 74 -36 36 hstemhm + 70 41 513 71 hintmask 10101100 + 70 -10 rmoveto + 575 hlineto + 50 60 rlineto + hintmask 10011100 + 585 vlineto + 41 41 41 38 41 34 -42 45 rcurveline + hintmask 11101100 + -42 -36 -42 -41 -42 -45 rrcurveto + -520 hlineto + -60 -52 rlineto + 41 -588 rmoveto + 566 472 vlineto + -111 -130 -102 -152 -68 -148 rrcurveto + -4 hlineto + -10 85 -25 84 -32 80 -58 -30 rcurveline + 38 -85 27 -94 14 -103 80 8 rcurveline + 76 167 104 153 112 127 rrcurveto + -528 vlineto + endchar + + + 50 -24 191 hstem + 244 51 122 49 vstem + 130 -24 rmoveto + 88 77 55 108 hvcurveto + 412 vlineto + 75 -25 47 -61 -69 vvcurveto + -33 -3 -23 -10 -33 vhcurveto + 30 -12 rlineto + 16 33 16 46 47 vvcurveto + 81 -26 54 -86 64 vhcurveto + -49 38 -8 9 -8 27 rrcurveto + -45 -539 hlineto + 5 -9 -26 7 -25 hhcurveto + -88 -63 -55 -62 -48 46 -26 51 hvcurveto + endchar + + + 112 -15.5 58.5 hstem + -14 661 vstem + 72 -20 rmoveto + 80 9 120 268 189 230 186 150 rlinecurve + -42 45 -186 -157 -190 -245 -108 -237 rlinecurve + -4 hlineto + -12 90 -25 91 -36 84 -58 -30 rcurveline + 42 -90 28 -99 16 -109 rrcurveto + endchar + + + 465 -60 44 683 78 hstem + 63 45 682 78 vstem + 63 -60 rmoveto + 749 hlineto + 56 66 rlineto + 739 -739 vlineto + -66 -56 rlineto + 45 -705 rmoveto + 683 682 -683 vlineto + endchar + + + -67 160 callgsubr + 8 412 vstem + 8 -152 rmoveto + 240 219 callsubr + -108 hlineto + 208 callsubr + 109 hlineto + 7 45 rlineto + -240 hlineto + -115 -815 rmoveto + 208 callsubr + 43 hlineto + -155 -770 rlineto + endchar + + + -67 160 callgsubr + -49 414 vstem + -49 -152 rmoveto + 242 hlineto + 172 860 rlineto + -242 hlineto + -9 -45 212 callsubr + -156 -770 rlineto + -108 hlineto + 152 hmoveto + 155 770 rlineto + 42 hlineto + -155 -770 rlineto + endchar + + + -138 663 45 hstem + 94 257 vstem + 94 278 rmoveto + 60 hlineto + 77 385 rlineto + 111 hlineto + 9 45 219 callgsubr + endchar + + + -138 663 45 hstem + 114 180 vstem + 150 278 rmoveto + 58 hlineto + 86 430 rlineto + -171 hlineto + -9 -45 221 callsubr + endchar + + + -138 -152 45 hstem + 8 180 vstem + 8 -152 rmoveto + 171 hlineto + 9 45 rlineto + -112 hlineto + 76 385 rlineto + -58 hlineto + endchar + + + -138 -152 45 hstem + -49 257 vstem + -49 -152 rmoveto + 171 hlineto + 86 430 rlineto + -60 hlineto + -76 -385 rlineto + -112 hlineto + endchar + + + 1010 225 54 hstem + 35 1370 vstem + 35 225 rmoveto + 1359 hlineto + 11 54 rlineto + -1359 hlineto + endchar + + + 1682 225 54 hstem + 35 2042 vstem + 35 225 rmoveto + 2031 hlineto + 11 54 rlineto + -2031 hlineto + endchar + + + 110 -12 65 295 53 259 64 hstem + 19 527 vstem + 19 -205 rmoveto + 78 hlineto + 32 159 17 103 rlineto + -50 35 58 -19 59 hhcurveto + 113 98 92 121 15 hvcurveto + 18 116 -63 50 -72 14 1 4 rcurveline + 72 28 54 67 10 78 rrcurveto + 112 14 -71 54 -87 hhcurveto + -126 -86 -94 -139 -28 hvcurveto + 134 -438 rmoveto + -49 -51 16 56 -31 hvcurveto + 72 358 rlineto + 119 24 57 58 72 hhcurveto + 52 36 -38 -75 -12 hvcurveto + -82 -12 -55 -64 -89 hhcurveto + -8 hlineto + -11 -53 rlineto + 20 hlineto + 101 49 -52 -96 -14 hvcurveto + -90 -13 -69 -57 -69 hhcurveto + endchar + + + 17 -205 691 hstem + -50 554 vstem + -50 -205 rmoveto + 82 hlineto + 124 198 20 35 29 48 18 33 rlinecurve + 4 hlineto + 5 -33 10 -45 8 -38 44 -198 rcurveline + 86 hlineto + -96 372 220 319 rlineto + -83 hlineto + -100 -154 -18 -29 -31 -46 -18 -29 rlinecurve + -4 hlineto + -6 29 -12 44 -6 31 -40 154 rcurveline + -85 hlineto + 92 -317 rlineto + endchar + + + endchar + + + 98 171 callsubr + 66 -45 -21 498 -20 hstemhm + 56 78 93 61 hintmask 11011100 + 302 -206 -34 callsubr + 44 43 43 67 31 hvcurveto + 97 486 rlineto + -76 hlineto + -104 callgsubr + 24 callgsubr + vhcurveto + 4 hlineto + hintmask 10111100 + -6 -68 rlineto + -52 216 callsubr + hintmask 11011100 + 191 callsubr + endchar + + + 98 171 callsubr + 19 callgsubr + hstemhm + 56 78 -31 61 hintmask 11010100 + 177 -206 rmoveto + 24 -36 callsubr + hvcurveto + hintmask 10110100 + 38 29 44 42 29 vhcurveto + 38 26 31 25 35 30 rrcurveto + 4 hlineto + 83 callgsubr + hintmask 11011000 + -104 callgsubr + 148 callgsubr + hintmask 11010100 + -36 -31 -37 -47 -49 vvcurveto + -44 31 -23 43 vhcurveto + endchar + + + 45 callgsubr + 90 36 121 36 hstemhm + 56 78 98 52 110 52 24 callsubr + 156 568 -59 callsubr + + + 45 callgsubr + 111 147 callgsubr + 56 78 hintmask 10101001 + -60 callgsubr + hintmask 01101001 + 83 callgsubr + hintmask 10101001 + -104 callgsubr + vhcurveto + hintmask 10110101 + 233 589 33 callgsubr + hintmask 10110011 + -52 callgsubr + hintmask 10101001 + -61 callgsubr + hintmask 10110101 + 52 callgsubr + + + 18 0 60 426 -20 hstem + 59 422 vstem + 130 hmoveto + 92 hlineto + 259 486 -15 callgsubr + -143 -281 -25 -48 -24 -49 -23 -48 rlinecurve + -4 hlineto + -5 47 -4 51 -5 47 -36 281 rcurveline + -76 hlineto + endchar + + + -123 395 44 hstem + 101 291 vstem + 149 395 rmoveto + 69 hlineto + 174 321 rlineto + -58 hlineto + -92 -180 -49 -97 rlineto + -3 hlineto + -11 97 -21 180 rlineto + -57 hlineto + endchar + + + 140 callsubr + hstemhm + 378 80 callsubr + hintmask 11100000 + -41 callsubr + hintmask 11010000 + 17 callsubr + hintmask 11100000 + -27 callsubr + endchar + + + 49 395 47 211 63 hstemhm + 320.5 44.5 -36.5 46 hintmask 11100000 + 134 395 rmoveto + 69 hlineto + 76 166 38 92 rlineto + 2 hlineto + 3 -91 rlineto + hintmask 11010000 + 13 -167 rlineto + 71 hlineto + 148 321 rlineto + -54 hlineto + -81 -182 -38 -92 1 callsubr + -5 92 rlineto + hintmask 11100000 + -14 182 rlineto + -54 hlineto + -84 -182 -38 -92 1 callsubr + -2 92 -12 182 rlineto + -56 hlineto + endchar + + + 140 callsubr + 231 -20 hstemhm + 378 80 callsubr + hintmask 11110000 + -41 callsubr + hintmask 11101000 + 17 callsubr + hintmask 11110000 + -27 callsubr + 314 93 -81 callgsubr + + + 140 callsubr + 198 56 hstemhm + 378 80 callsubr + hintmask 11110000 + -41 callsubr + hintmask 11101000 + 17 callsubr + hintmask 11110000 + -27 callsubr + 218 82 -74 callgsubr + + + 140 callsubr + 103 95 hstemhm + 283 92 3 80 callsubr + 17 91 hintmask 11101000 + -41 callsubr + hintmask 11100100 + 17 callsubr + hintmask 11101000 + -27 callsubr + hintmask 11110010 + 253 103 -45 callsubr + + + 140 callsubr + hstemhm + 378 80 callsubr + hintmask 11100000 + -41 callsubr + hintmask 11010000 + 17 callsubr + hintmask 11100000 + -27 callsubr + 375 84 -28 callsubr + + + -1 152 callgsubr + hstem + -44 510 vstem + -44 hmoveto + 84 hlineto + 94 115 25 31 23 28 21 30 rlinecurve + 4 hlineto + 13 -30 11 -31 11 -29 44 -114 rcurveline + 79 hlineto + -99 241 200 245 rlineto + -83 hlineto + -85 -108 -20 -28 -22 -27 -20 -27 rlinecurve + -4 hlineto + -10 28 -8 24 -11 30 -42 108 rcurveline + -78 hlineto + 91 -228 rlineto + endchar + + + -124 395 321 hstem + 33 348 vstem + 33 395 rmoveto + 65 hlineto + 62 76 40 52 rlineto + 4 hlineto + 24 -59 29 -69 rlineto + 58 hlineto + -67 158 133 163 rlineto + -65 hlineto + -53 -71 -37 -48 rlineto + -3 hlineto + -22 54 -26 65 rlineto + -58 hlineto + 62 -151 rlineto + endchar + + + 5 callsubr + endchar + + + -123 250 47 hstem + 20 372 vstem + 67 250 rmoveto + 70 37 57 61 33 hvcurveto + 185 348 rlineto + -56 hlineto + -92 -180 -44 150 callsubr + -10 94 -28 180 rlineto + -56 hlineto + 60 -327 -9 -20 rlineto + -37 -21 -27 -35 -38 hhcurveto + -13 -6 3 4 -9 hvcurveto + -19 -41 rlineto + -10 17 12 -3 18 hhcurveto + endchar + + + 18 -209 62 633 -20 251 15 callgsubr + 262 788 -81 callgsubr + + + 18 -209 62 633 -20 218 56 hstem + -62 545 vstem + -97 callsubr + 166 777 -74 callgsubr + + + 18 -209 62 633 -20 123 95 hstem + 155 92 94 91 vstem + -97 callsubr + 201 798 -45 callsubr + + + 50 0 203 -42 42 69 43 323 -20 hstemhm + 28 499 hintmask 10111000 + 151 hmoveto + 76 hlineto + hintmask 01111000 + 32 161 215 callgsubr + 10 42 rlineto + -156 hlineto + 13 69 rlineto + 155 hlineto + 10 43 rlineto + -136 hlineto + 216 323 -15 callgsubr + -108 -176 -29 -43 -26 -44 117 callgsubr + -9 -43 rlineto + 155 hlineto + -12 -69 rlineto + -156 hlineto + -9 -42 215 callgsubr + endchar + + + 228 callsubr + 272 43 323 -20 hstem + 49 478 vstem + 151 hmoveto + 76 hlineto + 54 272 215 callgsubr + 10 43 rlineto + -137 hlineto + 217 323 -15 callgsubr + -108 -176 -27 -44 -28 -43 117 callgsubr + -10 -43 215 callgsubr + endchar + + + 5 callsubr + 323 779 -28 callsubr + + + -20 0 203 callgsubr + hstem + -10 440 vstem + -45 callgsubr + endchar + + + -151 395 46 229 46 hstem + 51 298 vstem + 51 395 rmoveto + 238 218 callgsubr + -164 hlineto + 209 242 6 33 rlineto + -217 hlineto + -9 -46 rlineto + 142 hlineto + -208 -243 rlineto + endchar + + + -20 0 203 callgsubr + 231 -20 hstem + -10 451 vstem + -45 callgsubr + 263 535 -81 callgsubr + + + -20 0 203 callgsubr + 89 128 callgsubr + -10 477 hintmask 11101100 + -45 callgsubr + 249 531 rmoveto + 82 hlineto + hintmask 11110100 + -5 callgsubr + hintmask 11101100 + 10 callsubr + + + -20 0 203 callgsubr + 101 103 hstem + 244 107 vstem + -45 callgsubr + 295 543 -103 callsubr + + + 50 147 callsubr + 277 71 37 callsubr + 4 61 rmoveto + -62 -28 65 88 180 84 206 103 61 29 -65 -89 -181 -84 -204 -103 hvcurveto + endchar + + + 50 184 callgsubr + 68 83 121 81 67 37 callsubr + 4 61 rmoveto + -66 -28 65 88 180 86 206 105 65 29 -65 -89 -181 -87 -204 -104 hvcurveto + 39 210 145 callgsubr + endchar + + + 74 184 callgsubr + 72 89 121 87 71 vstem + 253 259 145 callgsubr + -43 -271 40 callsubr + + + 74 147 callsubr + 297 71 vstem + 210 -12 rmoveto + 147 125 204 239 122 -59 97 -107 -147 -127 -207 -238 -122 59 -95 109 hvcurveto + 101 600 rmoveto + 68 32 -65 -89 -84 -19 -90 -32 -71 hvcurveto + -163 318 rlineto + 49 32 39 32 43 hhcurveto + -97 -539 rmoveto + -69 -31 65 88 86 20 92 33 73 hvcurveto + 164 -319 rlineto + -52 -33 -40 -33 -44 hhcurveto + endchar + + + 50 147 callsubr + 277 71 37 callsubr + 101 600 rmoveto + 61 29 -65 -89 -83 -18 -88 -29 -71 hvcurveto + -152 315 rlineto + 49 31 38 32 40 hhcurveto + -97 -539 rmoveto + -62 -28 65 88 85 19 90 30 72 hvcurveto + 152 -315 rlineto + -52 -31 -38 -33 -42 hhcurveto + endchar + + + 50 -12 61 558 61 hstem + 42 72 281 71 vstem + 200 -12 rmoveto + 144 122 213 257 126 -57 84 -99 -144 -124 -214 -258 -126 57 -82 101 hvcurveto + 4 61 rmoveto + -61 -29 55 89 198 86 216 105 61 29 -56 -90 -199 -86 -213 -105 hvcurveto + endchar + + + -73 -12 50 314 50 hstem + 15 172 callsubr + vstem + 138 -12 -92 callsubr + endchar + + + -73 254 50 314 50 hstem + 65 172 callsubr + vstem + 188 254 -92 callsubr + endchar + + + 28 callgsubr + + + 74 147 callsubr + 297 71 vstem + 210 -12 40 callsubr + + + -73 -189 50 314 50 hstem + -22 172 callsubr + vstem + 101 -189 -92 callsubr + endchar + + + -73 383 50 314 50 hstem + 92 172 callsubr + vstem + 215 383 -92 callsubr + endchar + + + 28 callgsubr + + + + + + + + 153 -12 rmoveto + 30 callsubr + hvcurveto + 55 callsubr + 165 callsubr + 32 61 -95 callgsubr + return + + + -19 -61 rlineto + -4 hlineto + 44 -23 -42 29 -102 callsubr + -48 -54 -30 -51 hhcurveto + return + + + 286 -12 rmoveto + 117 92 74 189 37 hvcurveto + 82 405 rlineto + 167 callgsubr + -92 -41 53 94 24 3 25 6 30 hvcurveto + 75 375 110 callgsubr + -368 rlineto + -6 -33 -4 -32 -28 vvcurveto + -136 74 -71 133 vhcurveto + return + + + -69 -344 rlineto + -61 -59 -47 -27 -38 -101 callsubr + return + + + 57 286 rlineto + 5 21 3 26 20 vvcurveto + 103 -56 42 -94 -59 -64 -22 -28 -51 vhcurveto + 25 -56 rlineto + 27 47 44 17 44 hhcurveto + 59 29 -24 -66 -14 -1 -12 -5 -19 hvcurveto + return + + + -100 callgsubr + -25 -33 -29 23 -16 26 hvcurveto + return + + + -51 hhcurveto + -131 -126 -144 -178 -113 59 -58 82 62 56 31 51 51 hvcurveto + -25 -104 rlineto + -85 -19 -49 -55 -82 hhcurveto + -54 -46 26 31 -37 hvcurveto + -36 -53 rlineto + -39 47 58 -28 65 hhcurveto + 34 289 rmoveto + -54 -33 39 79 127 87 120 94 37 32 -21 -51 30 hvcurveto + -43 -208 rlineto + -56 -46 -58 -29 -46 hhcurveto + return + + + rmoveto + 31 27 24 33 29 -23 17 -26 -31 -27 return + + + -19 -61 rlineto + -3 hlineto + 44 -23 -43 29 -101 callgsubr + return + + + 31 hmoveto + 76 hlineto + 22 callsubr + 4 callsubr + 68 callgsubr + 62 310 -51 callsubr + return + + + hstem + 60 79 388 79 vstem + -106 callsubr + return + + + 8 64 -96 callsubr + return + + + rmoveto + -45 -33 23 50 81 88 43 151 4 hvcurveto + -27 -135 rlineto + -43 -49 -44 -23 -41 hhcurveto + return + + + 185 -12 rmoveto + 38 32 12 10 22 hvcurveto + -17 55 rlineto + 71 callsubr + -76 -5 128 callsubr + -57 -274 rlineto + -2 -18 -3 -16 -20 vvcurveto + 193 callsubr + vhcurveto + return + + + 18 callsubr + -50 8 rlineto + -51 -18 -41 -53 -64 hhcurveto + -65 -25 53 51 4 hvcurveto + -54 -8 rlineto + -74 -6 30 -77 105 hhcurveto + return + + + hstem + 37 74 271 65 vstem + -107 callsubr + return + + + rmoveto + 142 116 rlineto + 4 hlineto + 94 -116 39 31 -89 141 rlineto + -83 hlineto + -138 -138 rlineto + return + + + 50 -12 57 547 58 hstemhm + 33 70 22 69 172 71 -31 158 callsubr + 115 100 71 115 68 -49 50 -39 26 hvcurveto + 4 vlineto + hintmask 11110100 + 73 41 52 55 85 vvcurveto + 99 -78 48 -82 -101 -88 -65 -109 -52 21 -37 37 -37 vhcurveto + -4 vlineto + hintmask 11101000 + -78 -34 -72 -62 -97 vvcurveto + -112 96 -53 93 vhcurveto + hintmask 11110100 + 87 357 rmoveto + -71 35 -44 33 67 vvcurveto + 70 55 42 59 56 42 -36 -63 -67 -48 -49 -49 -32 vhcurveto + hintmask 11101000 + -83 -300 rmoveto + -67 -56 43 73 74 49 47 67 38 hvcurveto + 78 -42 69 -34 -74 vvcurveto + -80 -69 -45 -71 vhcurveto + endchar + + + 163 -12 rmoveto + -90 callsubr + -51 -44 29 42 -30 vhcurveto + -48 -38 rlineto + -54 33 69 -38 65 hhcurveto + return + + + rmoveto + 7 vlineto + 33 26 34 15 27 hhcurveto + 39 24 -26 -41 -56 -37 -38 -39 -39 -35 30 76 hvcurveto + 69 -155 rmoveto + 69 68 57 91 61 -40 45 -66 -38 -36 -20 -24 -22 hvcurveto + 101 15 56 54 62 hhcurveto + 29 21 -9 -18 19 hvcurveto + 34 38 rlineto + 25 -25 -33 13 -40 hhcurveto + -103 -97 -92 -170 -93 56 -59 71 hvcurveto + endchar + + + rmoveto + 129 94 rlineto + 4 hlineto + 90 -93 39 25 -84 113 rlineto + -87 hlineto + -124 -111 rlineto + return + + + vstem + -91 callsubr + return + + + 58 18 33 42 49 vvcurveto + 59 -45 36 -65 -44 -38 -12 -28 -39 vhcurveto + 27 -41 rlineto + 22 28 27 11 28 hhcurveto + 38 23 -22 -33 -37 -30 -41 -90 hvcurveto + -9 -41 rlineto + return + + + -93 callgsubr + endchar + + + 50 -12 60 281 57 200 64 hstem + 51 72 242 72 vstem + 123 202 rmoveto + 16 0 15 1 15 vhcurveto + 62 48 59 19 33 hhcurveto + 66 35 -47 -73 -81 -58 -80 -75 -67 -42 62 92 hvcurveto + 105 -214 rmoveto + 118 91 107 125 104 -61 62 -95 -44 -62 -24 -50 -44 hvcurveto + 167 27 87 107 100 hhcurveto + 42 30 -20 -38 22 hvcurveto + 52 41 rlineto + 43 -27 -44 38 -71 hhcurveto + -171 -127 -186 -260 -126 68 -90 109 hvcurveto + endchar + + + -98 callgsubr + -61 -54 -37 -48 -54 vhcurveto + -4 hlineto + return + + + rmoveto + 180 138 -47 60 -168 -153 rlineto + endchar + + + 91 callsubr + 61 61 34 50 89 callsubr + return + + + 22 52 23 50 19 52 rrcurveto + 4 hlineto + -2 -52 -1 -54 -48 vvcurveto + 7 -401 rlineto + 99 hlineto + 270 191 callgsubr + -142 -361 -27 -70 -29 -71 -27 -72 rlinecurve + -4 hlineto + 72 0 72 -1 69 vhcurveto + -9 361 rlineto + -71 hlineto + -164 -361 -29 -70 -33 -72 -31 -71 rlinecurve + -4 hlineto + 5 71 1 72 4 70 rrcurveto + return + + + -7 hmoveto + 237 -81 callsubr + return + + + 257 hlineto + 10 51 rlineto + -163 hlineto + 129 97 66 66 83 vvcurveto + 65 -45 40 -71 -50 -38 -27 -36 -37 vhcurveto + 35 -36 rlineto + 27 25 28 20 28 hhcurveto + 43 21 -24 -38 -72 -68 -63 -163 -115 hvcurveto + return + + + -43 callsubr + -47 callgsubr + + + vstem + -87 callsubr + return + + + -91 callgsubr + endchar + + + rmoveto + 255 hlineto + 9 54 14 callsubr + return + + + -73 callgsubr + endchar + + + 73 13 49 33 5 54 4 48 -42 24 -84 3 -18 -46 rcurveline + 52 -3 26 -12 -2 -24 -1 -26 -23 -16 -41 -10 rrcurveto + return + + + vstem + -99 callsubr + return + + + 13 66 10 73 8 68 rrcurveto + 4 hlineto + 43 -141 148 -419 rlineto + 77 62 callsubr + -75 hlineto + -69 -348 rlineto + return + + + 78 hlineto + 55 278 163 callsubr + 108 -278 rlineto + 83 hlineto + -115 285 rlineto + 111 22 82 75 121 vvcurveto + 110 -83 43 -122 vhcurveto + -180 hlineto + return + + + -32 callsubr + -63 callsubr + return + + + -35 50 rlineto + -36 -43 -43 -23 -53 hhcurveto + -118 -49 86 119 159 99 182 156 50 35 -29 -42 26 hvcurveto + 54 41 rlineto + 56 -32 -54 41 -75 hhcurveto + -203 -136 -209 -206 return + + + 65 17 57 47 78 vvcurveto + 18 -3 23 -8 20 vhcurveto + -61 -23 rlineto + 5 -13 3 -19 -12 vvcurveto + -3 -56 -37 -37 -57 -9 rrcurveto + 15 -26 -31 8 -34 hhcurveto + -133 -129 -131 -184 hvcurveto + return + + + rmoveto + 66 -6 rlineto + 13 152 194 35 162 vvcurveto + 86 -59 52 -93 -60 -56 -29 -40 -39 vhcurveto + 41 -46 rlineto + 31 29 38 20 38 hhcurveto + 53 33 -32 -55 -123 -188 -38 -10 -169 hvcurveto + -4 159 callgsubr + return + + + -16 callgsubr + 134 90 124 -17 callsubr + 28 hvcurveto + 27 callsubr + -63 return + + + rmoveto + 120 75 rlineto + 4 hlineto + 87 -75 32 31 -84 95 rlineto + -67 hlineto + -117 -91 rlineto + return + + + -66 -38 -57 -79 -16 hvcurveto + 55 -3 rlineto + 48 10 20 32 30 hhcurveto + return + + + 171 -46 callgsubr + return + + + 79 vstem + 35 hmoveto + 176 hlineto + 222 133 162 238 161 -96 95 -182 hvcurveto + -122 hlineto + -41 -592 rmoveto + 106 529 rlineto + 54 hlineto + 132 70 -74 -124 -195 -106 -136 -170 hvcurveto + return + + + -4 callgsubr + endchar + + + 38 28 -49 callgsubr + return + + + rmoveto + 86 100 67 84 rlineto + 4 hlineto + -26 -108 -15 -76 rlineto + -30 -149 rmoveto + 54 hlineto + 21 106 rlineto + 56 hlineto + 9 43 rlineto + -57 hlineto + 48 241 rlineto + -65 hlineto + -214 -251 -7 -33 rlineto + 176 hlineto + return + + + 43 83 callsubr + 99 129 callsubr + -98 38 callsubr + 55 rlineto + 14 -24 -27 10 -35 hhcurveto + -82 -52 -59 -98 -20 hvcurveto + return + + + -52 -188 rmoveto + -38 -31 26 41 33 26 32 46 22 hvcurveto + 43 -21 37 -15 -46 vvcurveto + -44 -39 -28 -44 vhcurveto + endchar + + + -26 -49 -17 -3 -14 -5 -26 hvcurveto + return + + + -54 4 rlineto + -47 -10 -20 -33 -30 -51 -9 85 -69 hhcurveto + return + + + hintmask 10101110 + -80 callgsubr + hintmask 01011110 + -32 callgsubr + hintmask 10101110 + -106 callgsubr + return + + + -41 callgsubr + vhcurveto + return + + + 35 34 -17 callgsubr + -29 18 -21 29 hvcurveto + return + + + 57 232 rmoveto + -38 14 -29 24 37 vvcurveto + 36 30 26 39 33 25 -22 -37 -28 -22 -28 -38 -22 vhcurveto + return + + + 119 callgsubr + 22 26 28 26 -17 -55 callsubr + endchar + + + -12 rmoveto + 24 callgsubr + 20 callgsubr + return + + + -10 hmoveto + 351 hlineto + 12 62 14 callsubr + 323 379 8 45 rlineto + -317 195 callgsubr + 221 hlineto + -323 -380 rlineto + return + + + 37 20 39 37 51 vvcurveto + 58 -45 39 -63 -70 -58 -45 -65 -31 18 -25 22 -20 vhcurveto + -1 -4 rlineto + return + + + 8 -18 -17 4 -24 hhcurveto + -115 -87 -88 -117 -45 21 -37 29 -25 hvcurveto + -4 vlineto + return + + + rmoveto + 26 21 24 26 24 -15 14 -22 127 callsubr + 184 hmoveto + 25 return + + + 29 -23 17 -26 -31 -27 -25 -33 return + + + 163 -224 rmoveto + 119 116 56 110 64 -42 32 -126 15 hvcurveto + return + + + 71 callgsubr + 37 callgsubr + return + + + 31 hmoveto + 76 hlineto + 26 123 112 114 93 -237 rlineto + 78 hlineto + -117 283 194 203 rlineto + -88 hlineto + -249 -257 rlineto + -2 hlineto + return + + + rmoveto + 39 37 15 16 29 hvcurveto + -19 40 rlineto + -14 -22 -23 -12 -28 hhcurveto + -61 -32 41 69 8 hvcurveto + 209 hlineto + 6 14 7 24 27 vvcurveto + 59 -25 58 -79 -85 -90 -82 -119 -87 51 -49 78 vhcurveto + -65 194 rmoveto + 59 15 48 38 42 hhcurveto + 44 16 -32 -36 -9 0 -9 -3 -11 hvcurveto + endchar + + + hlineto + 97 486 rlineto + return + + + hlineto + hintmask 10111110 + -104 callgsubr + vhcurveto + return + + + 31 hmoveto + 76 hlineto + 61 307 rlineto + 79 41 54 43 48 hhcurveto + 18 14 -3 -5 10 hvcurveto + return + + + -20 callgsubr + -72 hlineto + -110 -90 rlineto + return + + + -8 -72 -68 callsubr + -62 hlineto + return + + + 64 -31 -21 434 64 -12 -20 return + + + 203 -211 54 146 66 546 67 hstem + 60 79 37 64 287 79 vstem + 253 -211 rmoveto + 24 30 9 14 22 hvcurveto + -17 42 rlineto + -8 -12 -11 -3 -12 173 callgsubr + 24 37 32 55 79 22 hvcurveto + 159 46 96 178 175 vvcurveto + 105 callsubr + -155 70 -106 129 -13 vhcurveto + -44 -31 -39 -50 -50 vvcurveto + -45 32 -24 45 vhcurveto + 38 266 rmoveto + -105 -47 86 204 callsubr + 95 178 141 104 48 -85 -129 -153 -95 -179 -141 hvcurveto + return + + + rmoveto + 256 hlineto + 11 54 rlineto + -256 hlineto + return + + + 127 callgsubr + hstemhm + 60 79 388 79 -13 65 hintmask 10111000 + 2 callsubr + hintmask 10110100 + 31 callsubr + hintmask 11010100 + 54 callgsubr + hintmask 10111000 + -10 callgsubr + return + + + vstem + -107 callgsubr + 17 521 -62 callgsubr + return + + + -27 25 35 -19 hvcurveto + -41 -29 rlineto + return + + + 50 -85 64 38 -21 172 57 301 60 hstemhm + 51 71 249 72 hintmask 01111100 + 122 355 rmoveto + 85 63 86 77 67 42 -63 -91 -24 -1 -23 -2 -22 vhcurveto + -62 -53 -54 -16 -34 hhcurveto + -67 -38 50 80 hvcurveto + hintmask 11111100 + 20 -440 rmoveto + 173 128 190 265 126 -67 90 -109 -124 -92 -112 -130 -112 66 -64 92 45 58 22 47 46 hvcurveto + -158 -30 -84 -100 -97 hhcurveto + -42 -28 21 37 -22 hvcurveto + hintmask 01111100 + -52 -41 rlineto + hintmask 11111100 + -43 27 43 -38 69 hhcurveto + endchar + + + -16 callsubr + vhcurveto + 28 64 -63 callgsubr + return + + + hhcurveto + -215 -134 -207 -208 -160 85 -105 158 hvcurveto + return + + + 121 callsubr + 90 452 rlineto + 56 15 59 46 80 vvcurveto + 18 -4 23 -7 20 vhcurveto + -61 -22 5 -14 3 -19 -1 -12 rlinecurve + -2 -60 -42 -36 -48 -5 rrcurveto + -27 hlineto + return + + + 47 10 48 20 10 53 8 47 -41 24 -76 2 -14 -41 rcurveline + 49 -2 18 193 callgsubr + -19 -11 -26 -7 rrcurveto + endchar + + + rmoveto + 108 69 rlineto + 4 hlineto + 79 -69 37 25 -76 91 rlineto + return + + + -55 callgsubr + -16 -81 -65 -5 151 callsubr + return + + + 50 -12 64 200 57 281 60 hstem + 70 71 242 72 vstem + 141 429 rmoveto + 80 59 81 74 67 42 -62 -92 -16 0 -15 -1 -15 vhcurveto + -63 -47 -60 -18 -32 hhcurveto + -67 -35 46 74 hvcurveto + 16 -441 rmoveto + 171 127 186 260 126 -67 90 -110 -118 -90 -107 -125 -104 61 -62 94 44 61 23 49 44 hvcurveto + -165 -27 -86 -107 -99 hhcurveto + -43 -30 20 38 -21 hvcurveto + -52 -41 rlineto + -44 26 45 -37 70 hhcurveto + endchar + + + 29 -17 22 -29 -38 -29 -36 -34 return + + + rmoveto + -54 -35 40 84 return + + + rlineto + -77 hlineto + return + + + 180 0 64 260 42.5 -42.5 44 225 63 hstemhm + 505 79 hintmask 10111000 + 53 hmoveto + 176 hlineto + 222 133 162 238 161 -96 95 -182 hvcurveto + -122 hlineto + hintmask 11011000 + -58 -288 -70 -3 rlineto + hintmask 10111000 + -9 -41 rlineto + 71 hlineto + 25 -260 rmoveto + 52 260 rlineto + 149 hlineto + 10 44 rlineto + -150 hlineto + 45 225 135 callsubr + + + vstem + 35 hmoveto + 78 hlineto + 32 callgsubr + return + + + -8 -72 rlineto + 63 hlineto + 144 144 callgsubr + -38 -190 -16 -95 rlineto + -3 hlineto + 43 -24 -39 28 -52 hhcurveto + -62 callsubr + hvcurveto + return + + + 21 callsubr + hstem + 35 493 -86 callgsubr + return + + + 123 callsubr + 4 67 rmoveto + -105 -47 86 204 callsubr + 95 178 141 104 48 -85 -129 -153 -95 -179 -141 hvcurveto + return + + + 6 -14 -14 3 -18 hhcurveto + -60 -51 -46 -59 -39 hvcurveto + -4 hlineto + return + + + 17 3 14 5 26 return + + + hlineto + 117 589 -23 callsubr + return + + + -26 callgsubr + -43 23 46 -37 return + + + 138 138 -31 34 -141 -116 1 callsubr + return + + + rmoveto + 94 57 59 70 19 hvcurveto + -49 8 rlineto + -47 -17 -37 -37 -56 hhcurveto + -57 -25 37 47 1 hvcurveto + -52 -8 rlineto + -70 -4 35 -59 91 hhcurveto + return + + + 28 64 -16 callgsubr + return + + + hstemhm + 39 79 -93 callsubr + return + + + -12 rmoveto + 134 99 77 122 66 -42 50 -70 23 hvcurveto + 4 vlineto + hintmask 11101000 + 99 28 50 65 81 vvcurveto + 88 -60 58 -107 -61 -61 -22 -41 -54 vhcurveto + 39 -51 rlineto + 31 38 48 20 39 hhcurveto + 68 33 -40 -56 -61 -51 -71 -158 hvcurveto + -12 -58 rlineto + hintmask 11110000 + 135 50 -49 -68 -76 -64 -56 -91 -66 -49 41 45 -31 hvcurveto + -51 -40 rlineto + -60 40 69 -50 87 hhcurveto + endchar + + + 109 callgsubr + 45 220 137 134 126 -354 rlineto + 81 hlineto + -149 404 246 252 rlineto + -88 hlineto + -329 -324 rlineto + -3 hlineto + 65 324 31 callgsubr + return + + + 27 36 44 hhcurveto + 23 17 -8 -9 14 hvcurveto + 27 return + + + -206 17 callgsubr + return + + + 106 2 69 33 5 63 3 33 -15 18 -47 12 return + + + 31 hmoveto + 54 callsubr + return + + + rmoveto + 31 27 24 33 hvcurveto + return + + + hstemhm + 99.5 64.5 -64.5 79.5 257 64.5 return + + + -12 64 383 63 return + + + 59 -76 callgsubr + + + -182 -12 64 -43 -21 724 -20 hstemhm + 44 48 callsubr + hintmask 01101000 + 40 callgsubr + hintmask 10101000 + -1 59 rlineto + hintmask 10110000 + -35 callsubr + hintmask 01101000 + -33 callsubr + return + + + hintmask 10101100 + -80 callgsubr + return + + + 203 -12 67 546 return + + + 227 377 rmoveto + 37 72 33 66 35 76 rrcurveto + 4 hlineto + 5 -75 7 -70 6 -69 10 -112 rcurveline + -195 hlineto + return + + + -12 19 callgsubr + return + + + hlineto + 14 66 rlineto + return + + + -20 hstem + -62 545 vstem + -97 callsubr + return + + + 189 callgsubr + hstem + 57 80 36 callgsubr + return + + + rmoveto + 23 -36 callsubr + return + + + rmoveto + 76 65 45 77 34 -23 38 -45 16 hvcurveto + return + + + 66 -33 19 callsubr + return + + + hvcurveto + 4 hlineto + return + + + rmoveto + 29 callsubr + return + + + 11 callgsubr + 67 return + + + 3 hlineto + -4 -57 rlineto + return + + + 59 56 39 47 53 return + + + 43 vstem + 298 -11 rmoveto + 217 146 191 197 162 -108 114 -155 -217 -145 -190 -197 -162 107 -115 155 hvcurveto + 3 41 rmoveto + -139 -83 100 141 169 129 173 187 140 83 -100 -141 -169 -130 -173 -187 hvcurveto + return + + + 17 83 rlineto + 57 12 11 callsubr + rlineto + -192 hlineto + return + + + 98 486 -15 callgsubr + return + + + 50 -12 61 475 62 hstem + 38 72 270 73 vstem + 201 -12 rmoveto + 154 98 207 185 125 -62 81 -100 -155 -98 -208 -185 -124 61 -81 102 hvcurveto + 6 61 rmoveto + -63 -34 55 97 146 75 177 99 63 33 -54 -97 -146 -74 -178 -99 hvcurveto + endchar + + + -62 callgsubr + 258 30 rmoveto + return + + + -21 -24 -27 -23 15 -14 22 hvcurveto + return + + + rlineto + -78 hlineto + return + + + -8 callsubr + -78 hlineto + return + + + rmoveto + 66 38 58 77 15 hvcurveto + return + + + 32 22 26 31 28 -21 16 -28 hvcurveto + -2 -1 0 -2 hhcurveto + 37 34 51 61 30 vhcurveto + -16 38 rlineto + -75 -32 -57 -65 -92 vvcurveto + -43 22 -25 31 vhcurveto + return + + + rmoveto + 29 23 23 31 22 -16 16 -21 -29 -23 -24 -30 -23 14 -15 23 hvcurveto + return + + + vstem + 290 -12 rmoveto + 79 61 34 42 48 hvcurveto + -66 callgsubr + -157 83 -108 150 hvcurveto + return + + + hstem + 39 77 281 78 vstem + -104 callsubr + return + + + -82 387 47 243 47 hstem + 86 58 181 58 vstem + 204 387 rmoveto + 89 90 82 126 82 -47 47 -71 -89 -90 -82 -126 -82 47 -47 71 hvcurveto + 5 47 rmoveto + -43 -22 31 54 86 54 72 62 43 22 -31 -54 -86 -53 -72 -63 hvcurveto + endchar + + + vstem + 4 callgsubr + return + + + 109 -12 rmoveto + 21 14 3 5 13 hvcurveto + return + + + -93 -683 rmoveto + 38 27 35 34 29 -16 22 -30 -38 -29 -36 -34 -29 19 -21 29 hvcurveto + return + + + 243 -211 rmoveto + 23 30 9 14 23 55 callgsubr + 35 32 51 77 26 hvcurveto + 101 35 62 64 30 159 82 405 rcurveline + 167 callgsubr + return + + + 214 114 rmoveto + 55 29 40 52 12 hvcurveto + -44 5 rlineto + -29 -10 -13 -17 -23 hhcurveto + return + + + 21 callsubr + 73 54 hstem + 35 493 -86 callgsubr + return + + + 98 13 callgsubr + return + + + 35 callgsubr + endchar + + + 101 -102 callgsubr + return + + + 8 rlineto + -53 -18 -43 -55 -67 hhcurveto + -67 return + + + 66 246 134 callsubr + return + + + 189 -203 17 callgsubr + 37 29 43 45 30 hvcurveto + 34 22 34 24 31 31 rrcurveto + 4 hlineto + -32 callgsubr + return + + + 77 109 callgsubr + 52 264 rlineto + 105 hlineto + 167 120 71 161 114 -83 46 -123 hvcurveto + -185 hlineto + 12 -329 rmoveto + 53 267 rlineto + 101 hlineto + 96 52 -32 -76 -105 -72 -54 -135 hvcurveto + return + + + 51 9 -85 69 hhcurveto + endchar + + + 30 9 14 23 hvcurveto + -18 42 rlineto + -8 -12 61 callsubr + return + + + 7 -15 2 -14 -12 vvcurveto + -52 -37 -37 -64 -6 vhcurveto + return + + + hvcurveto + -17 42 rlineto + -8 -13 61 callsubr + return + + + rmoveto + 86 hlineto + 105 205 109 callsubr + 18 -205 rlineto + 81 hlineto + -76 656 rlineto + -90 hlineto + -49 67 callgsubr + endchar + + + -25 -22 -23 -29 -21 14 -15 22 hvcurveto + return + + + 82 122 callsubr + hstem + -1 542 -49 callsubr + return + + + rlineto + -58 -13 -21 -34 -37 hhcurveto + -21 -12 195 callsubr + return + + + 270 21 callgsubr + return + + + 35 hmoveto + 75 hlineto + 70 353 rlineto + return + + + hstem + 35 582 -21 callsubr + return + + + -10 -205 rmoveto + 76 hlineto + 31 159 18 104 rlineto + 2 hlineto + -41 25 41 153 callsubr + -61 -58 -35 -41 -49 hvcurveto + -3 hlineto + return + + + rmoveto + 77 136 158 35 138 hhcurveto + 140 144 -35 -77 107 hvcurveto + 30 39 rlineto + 83 -114 -134 45 -162 hhcurveto + -169 -155 -45 -83 -139 hvcurveto + endchar + + + rmoveto + 60 46 43 56 53 -41 26 -46 -59 -47 -45 -54 -54 41 -25 46 hvcurveto + 2 36 rmoveto + -27 -16 18 28 33 27 27 31 28 15 -19 -28 -33 -27 -26 -31 hvcurveto + endchar + + + 45 18 -72 68 hhcurveto + endchar + + + 43 -33 callgsubr + return + + + 22 -53 callgsubr + -60 -300 rlineto + 76 hlineto + return + + + -594 -56 callsubr + return + + + -178 76 callsubr + return + + + 85 7 callgsubr + return + + + rlineto + -88 59 -42 57 70 vvcurveto + 85 66 68 88 65 43 -33 -38 29 vhcurveto + 48 46 rlineto + 45 -33 -56 43 -92 hhcurveto + -132 -104 -95 -132 -90 52 -60 74 -57 hvcurveto + return + + + 101 -103 callsubr + + + 99 -78 -21 560 96 0 -20 return + + + -38 -21 42 -59 hhcurveto + -48 -29 -37 -51 -14 hvcurveto + 46 -5 rlineto + 29 10 10 14 20 hhcurveto + return + + + rmoveto + 156 148 11 62 -103 158 -36 -22 85 -161 -141 -156 rlineto + return + + + 118 519 -93 callgsubr + return + + + -62 callgsubr + 269 35 rmoveto + 120 104 -43 39 -108 -111 rlineto + endchar + + + -33 callgsubr + 253 43 rmoveto + 117 75 -27 41 -114 -83 rlineto + endchar + + + 90 139 rmoveto + 49 29 37 51 15 hvcurveto + -46 4 rlineto + -28 -11 -11 -14 -20 hhcurveto + return + + + 189 0 74 callgsubr + return + + + 59.5 -59.5 62 return + + + -8 -74 41 callsubr + return + + + -4 -14 130 callgsubr + 23 return + + + 577 rmoveto + 17 38 -24 7 -17 14 6 26 rlinecurve + 5 26 26 14 47 3 7 51 rcurveline + -76 -3 -55 -28 -11 -54 -12 -59 44 -24 43 -11 rrcurveto + return + + + 234 -12 rmoveto + 103 callsubr + 114 -55 62 182 callgsubr + 39 190 -15 callgsubr + return + + + rlineto + 49 88 callgsubr + -135 -89 -124 -97 hvcurveto + return + + + 46 59 30 45 hhcurveto + 55 34 -41 -82 return + + + 7 73 rlineto + -63 hlineto + return + + + 107 39 callgsubr + 132 callgsubr + return + + + rmoveto + 22 37 rlineto + -44 3 -19 13 24 vvcurveto + 29 37 21 80 2 vhcurveto + 40 vlineto + -106 -3 -76 -33 -66 vvcurveto + -37 19 -22 87 -8 vhcurveto + endchar + + + -18 -23 vvcurveto + -74 return + + + rmoveto + 7 34 rlineto + -42 -19 18 29 46 30 31 56 1 hvcurveto + 7 35 rlineto + -86 1 -59 -44 -73 vvcurveto + -48 42 -35 64 5 vhcurveto + endchar + + + hstemhm + 26 358 hintmask 10110000 + 26 hmoveto + 346 hlineto + 12 64 rlineto + -130 hlineto + return + + + rmoveto + 129 98 -46 40 -116 -109 rlineto + endchar + + + 21 78 callsubr + return + + + rmoveto + 51 17 42 53 65 hhcurveto + 65 23 -53 -51 -3 hvcurveto + 54 8 rlineto + 74 7 -29 77 -107 hhcurveto + -107 -58 -77 -74 -19 hvcurveto + endchar + + + -270 -56 callsubr + return + + + 102 509 rlineto + -63 hlineto + return + + + hhcurveto + 25 22 -8 -12 17 hvcurveto + 27 55 rlineto + 17 -27 -29 10 -40 hhcurveto + return + + + vstem + 112 434 137 callsubr + return + + + -61 1 callsubr + return + + + 21 106 rlineto + 56 hlineto + 9 43 rlineto + -57 hlineto + 48 241 rlineto + -65 hlineto + -214 -251 -7 -33 rlineto + 176 hlineto + endchar + + + 660a0e + + + -684 120 callgsubr + return + + + -58 vhcurveto + 39 -48 rlineto + 41 45 43 23 43 hhcurveto + return + + + 118 callgsubr + 88 return + + + 326 0 82 473 101 0 -20 return + + + vstem + 35 hmoveto + 78 hlineto + return + + + 31 callgsubr + -74 return + + + hstem + 69 793 vstem + 862 745 rmoveto + -793 -2 hlineto + 395 -823 rlineto + 4 hlineto + 394 823 rlineto + return + + + rmoveto + 181 callsubr + 22 hvcurveto + -17 55 rlineto + -42 callsubr + return + + + hlineto + 13 65 rlineto + return + + + 339 225 54 hstem + 35 699 vstem + 35 225 rmoveto + 688 hlineto + 11 54 rlineto + -688 hlineto + endchar + + + 67 601 -20 return + + + 135 callgsubr + -16 callsubr + return + + + -31 -49 rlinecurve + -3 hlineto + -11 48 -10 44 -9 44 -41 176 rcurveline + -78 hlineto + 91 -323 rlineto + -136 hlineto + return + + + 45 callgsubr + 123 return + + + 186 hmoveto + 28 return + + + rmoveto + 80 64 49 70 40 -21 26 -28 20 hvcurveto + 4 vlineto + return + + + -193 152 callgsubr + return + + + 66 rlineto + -276 hlineto + return + + + rmoveto + 24 17 27 41 26 26 -11 -21 24 vhcurveto + -34 -16 -26 -25 -43 hhcurveto + -28 -21 16 24 hvcurveto + return + + + vstem + 868 739 rmoveto + -2 hlineto + -823 -394 rlineto + -4 vlineto + 823 -395 rlineto + 2 hlineto + return + + + 119 callgsubr + 23 23 30 26 -16 -66 callsubr + endchar + + + 101 -220 63 162 64 365 64 -12 -20 return + + + 11 callgsubr + 39 -39 67 return + + + 56 82 -20 23 -20 hstemhm + return + + + -221 39 92 37 return + + + hhcurveto + -20 -16 14 return + + + -53 -44 86 -73 hhcurveto + -41 -45 -27 -62 -33 hvcurveto + 43 -28 rlineto + 43 22 23 18 29 hhcurveto + return + + + 64 47 callgsubr + return + + + -20 callgsubr + -73 hlineto + -109 -90 rlineto + return + + + 60 326 65 return + + + 106 callsubr + -62 callsubr + return + + + -263 23 -43 rlineto + 10 24 18 7 26 hhcurveto + return + + + 64 callsubr + 233 -21 432 66 return + + + 64 callsubr + 200 64 383 63 return + + + -12 64 -31 -21 434 64 return + + + 387 48 241 48 hstem + return + + + 66 221 64 262 67 return + + + 49 161 44 111 49 return + + + -88 98 -29 80 vhcurveto + return + + + 712 -15 callgsubr + return + + + rmoveto + 41 30 37 38 31 -17 24 -32 -40 -32 -40 -37 -29 19 -24 31 hvcurveto + return + + + rmoveto + 148 callsubr + -219 vmoveto + 148 callsubr + endchar + + + 59 26 59 -9 -20 24 -20 hstemhm + return + + + vhcurveto + 2 1 0 2 hhcurveto + return + + + 49 172 44 86 51 return + + + 66 525 65 return + + + 72.5 -51.5 51.5 hintmask 11000000 + return + + + 21 19 callsubr + return + + + 311 83 callsubr + 98 hlineto + 13 62 rlineto + -99 hlineto + return + + + 38 23 -42 58 hhcurveto + endchar + + + -63 -36 -55 -73 -18 hvcurveto + 54 -9 rlineto + 46 11 19 32 30 hhcurveto + return + + + 143 94 -68 67 -107 -15 hvcurveto + 238 257 8 45 rlineto + return + + + -362 rlineto + -58 -13 -21 -34 -37 hhcurveto + -22 -11 195 callsubr + return + + + 74 callgsubr + hstemhm + return + + + -213 rmoveto + 39 27 35 34 return + + + -152 45 770 45 hstem + return + + + vvcurveto + 191 callsubr + return + + + 76 -12 66 547 67 return + + + hvcurveto + -54 4 rlineto + return + + + 39 -39 78 hstemhm + return + + + 64 36 57 71 17 hvcurveto + -54 9 rlineto + -45 -11 -18 -33 -30 return + + + rlineto + -4 -17 -2 -14 -11 vvcurveto + -40 22 -23 43 vhcurveto + endchar + + + -76 hlineto + -81 -402 rlineto + -143 -28 -64 -56 -75 hhcurveto + return + + + 33 -17 hvcurveto + 28 144 rlineto + 34 30 36 18 32 hhcurveto + return + + + 56 53 callsubr + return + + + 49 callgsubr + hstem + return + + + 395 rmoveto + 58 hlineto + return + + + 60 12 60 hstemhm + return + + + hhcurveto + -21 -16 14 return + + + 21 callsubr + 112 47 return + + + rmoveto + 11 hlineto + 94 137 rlineto + -143 hlineto + endchar + + + -43 23 46 -37 66 hhcurveto + endchar + + + 465 -54 793 hstem + return + + + 80 21 -21 589 67 return + + + -37 -48 -51 hvcurveto + -4 hlineto + return + + + hstem + -11 84 101 84 vstem + return + + + rlineto + 190 hlineto + return + + + -85 -60 -57 -33 -39 -48 hvcurveto + -2 hlineto + 22 96 return + + + 21 -21 176 62 316 84 0 -20 hstemhm + return + + + -12 61 210 130 199 62 hstem + 42 return + + + rlineto + -7 -23 -2 -20 -18 vvcurveto + -51 33 -21 36 return + + + 24 23 -15 13 -21 -19 -15 -13 -23 -24 15 return + + + -56 -58 -58 vvcurveto + -45 33 -24 45 vhcurveto + endchar + + + -21 312 67 277 -20 return + + + 120 -12 67 546 67 return + + + -8 rrcurveto + hintmask 10110000 + -10 return + + + 656 -15 callgsubr + return + + + 66 590 -20 hstem + return + + + -13 -5 -26 -4 -21 return + + + vstem + 166 hmoveto + return + + + hlineto + -13 -62 rlineto + return + + + 163 219 63 hstem + 20 554 vstem + return + + + -12 50 220 50 44 50 220 50 return + + + 91 86 97 122 77 -37 41 -57 -41 return + + + -13 -26 callsubr + hstemhm + return + + + 61 201 51 135 62 hstemhm + 32 75 return + + + 162 callsubr + 44 222 rlineto + return + + + 125 21 96 callsubr + return + + + 62 362 62 return + + + hlineto + 13 66 rlineto + return + + + vhcurveto + 3 hlineto + hintmask 1101111110000000 + -47 9 return + + + -7 140 52 469 63 hstem + return + + + 91 49 -49 51 -51 143 hstemhm + return + + + 570 213 hstem + return + + + 186 10 50 rcurveline + return + + + hstem + 48 410 vstem + return + + + 53 44 -86 73 hhcurveto + return + + + rlineto + 65 vlineto + -412 return + + + hlineto + 10 45 rlineto + return + + + 165 hintmask 01100000 + return + + + rlineto + 156 hlineto + return + + + 53 112 53 vstem + return + + + ccf73eb9 010b + + + hlineto + 9 46 rlineto + return + + + rlineto + -171 hlineto + return + + + hlineto + 8 38 rlineto + return + + + 62 hstemhm + 69 78 return + + + rmoveto + 458 hlineto + 10 50 rlineto + -457 hlineto + endchar + + + hlineto + 58 185 rlineto + -51 hlineto + -59 -185 rlineto + return + + + -12 64 249 58 228 63 hstemhm + return + + + 0 149 -140 -21 118 43 return + + + -62 -312 -97 -52 20 -50 64 return + + + hhcurveto + hintmask 11010000 + return + + + 545 hstem + return + + + 43 21 -21 297 66 228 65 return + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otc2otf_data/expected_output/SourceSansPro-Regular.ttx b/tests/otc2otf_data/expected_output/SourceSansPro-Regular.ttx new file mode 100644 index 000000000..b501b5ebe --- /dev/null +++ b/tests/otc2otf_data/expected_output/SourceSansPro-Regular.ttx @@ -0,0 +1,158100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + © 2010 - 2018 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’. + + + Source Sans Pro + + + Regular + + + 2.040;ADBO;SourceSansPro-Regular;ADOBE + + + Source Sans Pro + + + Version 2.040;hotconv 1.0.109;makeotfexe 2.5.65596 + + + SourceSansPro-Regular + + + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + + + Adobe Systems Incorporated + + + Paul D. Hunt + + + http://www.adobe.com/type + + + This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an ‘AS IS’ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software. + + + http://scripts.sil.org/OFL + + + Preferred Athabaskan ogoneks + + + Slashed zero + + + Straight l + + + Alternate a + + + Alternate g + + + Serifed I + + + Titling figures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 24 73 21 72 20 76 rrcurveto + 4 hlineto + 21 -76 21 -72 24 -73 31 -100 rcurveline + -197 hlineto + -169 -267 -99 callgsubr + return + + + -105 callgsubr + endchar + + + rmoveto + -106 callsubr + + + 203 -103 callgsubr + return + + + 87 vstem + 332 -12 -106 callgsubr + return + + + 295 -12 rmoveto + 366 callgsubr + 170 -101 100 -142 -142 -101 -100 -170 -168 101 -104 142 hvcurveto + 70 -75 callgsubr + return + + + 92 -28 -62 35 -60 hhcurveto + -112 -101 -97 -167 -159 76 -87 111 hvcurveto + -93 callgsubr + return + + + 180 282 -100 callgsubr + return + + + -162 79 -92 122 vhcurveto + 18 69 131 callsubr + return + + + 233 -12 rmoveto + 63 51 33 66 261 callgsubr + -68 38 -31 58 29 20 7 6 14 vhcurveto + -12 63 167 callgsubr + -11 hhcurveto + -26 -22 18 33 hvcurveto + return + + + 175 -12 rmoveto + 326 callsubr + 15 218 callsubr + -12 -9 -2 -9 hhcurveto + -21 -13 -8 callsubr + -385 hlineto + -72 25 -41 68 vhcurveto + return + + + 249 -12 rmoveto + 122 84 90 165 86 -15 85 -28 84 hvcurveto + -80 -19 rlineto + 30 -89 10 -76 -74 vvcurveto + -126 -52 -58 -70 -58 -50 33 87 vhcurveto + 60 6 82 55 vvcurveto + return + + + -131 4 hlineto + 57 56 61 91 132 vvcurveto + 184 -111 133 -170 -170 -110 -133 -184 -132 60 -91 57 -56 vhcurveto + -4 vlineto + return + + + vstem + -100 callsubr + return + + + -71.5 71.5 return + + + 323 -12 rmoveto + 134 101 72 211 hvcurveto + 311 callsubr + -211 102 -72 134 vhcurveto + return + + + 193 callgsubr + -27 7 -19 14 26 vvcurveto + 26 24 14 49 3 vhcurveto + -4 51 rlineto + -78 -3 -51 -28 -54 vvcurveto + -59 49 -24 48 -11 vhcurveto + return + + + 119 74 65 86 87 -54 29 -76 29 hvcurveto + -85 callsubr + -44 49 69 -31 83 hhcurveto + return + + + rmoveto + 152 115 -47 55 -142 -128 rlineto + endchar + + + 58 11 54 25 58 vvcurveto + 59 -52 33 -91 2 vhcurveto + -5 -54 rlineto + 56 -3 27 -15 -29 vvcurveto + -26 -24 -13 -32 -8 vhcurveto + return + + + 348 -12 rmoveto + 88 72 32 44 42 hvcurveto + 276 -215 -69 139 -171 vlineto + -24 -26 -45 -15 -47 hhcurveto + -140 -78 104 165 163 85 102 132 66 42 -28 -34 33 hvcurveto + 46 54 rlineto + 40 -38 -60 41 -91 hhcurveto + -174 -127 -129 -211 -214 123 -126 173 hvcurveto + return + + + rmoveto + 110 93 31 callgsubr + 110 -93 36 26 -105 113 rlineto + -86 hlineto + -105 -113 rlineto + return + + + -66 26 rlineto + -53 21 -32 19 41 vvcurveto + 46 37 27 59 51 44 -21 -30 35 vhcurveto + 43 54 rlineto + 33 -38 -58 30 -76 hhcurveto + -105 -75 -57 -86 -75 59 -39 71 -27 hvcurveto + 65 -26 rlineto + 48 -20 37 -17 -50 vvcurveto + -47 -38 -32 -68 -61 -55 26 40 -44 vhcurveto + -44 -57 rlineto + return + + + 71 -305 238 249 71 -249 206 117 callsubr + return + + + 85 vstem + 272 -12 rmoveto + 138 85 83 104 97 -59 45 -76 33 hvcurveto + -93 40 rlineto + -52 22 -57 24 63 vvcurveto + 59 49 37 73 61 48 -24 -38 40 vhcurveto + 45 54 rlineto + 48 -47 -69 33 -78 hhcurveto + -119 -87 -74 -100 -96 71 -47 62 -26 hvcurveto + 94 -41 rlineto + 62 -28 47 -21 -67 vvcurveto + -64 -51 -43 -86 -68 -66 33 49 -47 vhcurveto + -50 -58 rlineto + -59 57 81 -38 92 hhcurveto + return + + + -75 59 -58 88 138 vvcurveto + 142 72 107 122 122 73 -107 -142 -138 -59 -88 -75 -59 vhcurveto + return + + + -95 -62 78 124 125 62 75 95 -32 callsubr + return + + + 73 callsubr + 45 -30 22 -87 10 vhcurveto + -18 -38 rlineto + 46 -4 25 -12 -26 vvcurveto + -27 -25 -15 -84 -6 vhcurveto + return + + + hstemhm + 82 -82 callgsubr + return + + + 58 10 53 25 58 vvcurveto + 51 -51 27 -87 3 vhcurveto + -9 -48 rlineto + 56 -2 27 -14 -26 vvcurveto + -25 -24 -12 -32 -9 vhcurveto + return + + + -345 vlineto + 49 callgsubr + return + + + -79 callgsubr + -12 callgsubr + return + + + hmoveto + 388 -84 callsubr + hlineto + return + + + -67 hlineto + -7 -47 rlineto + -2 hlineto + 39 -44 294 callsubr + -112 192 callsubr + return + + + 209 -12 rmoveto + 158 callgsubr + -72 callgsubr + -38 46 66 -29 69 hhcurveto + return + + + -57 callsubr + -70 8 45 -59 93 hhcurveto + return + + + 90 -75 callsubr + return + + + 279 -12 rmoveto + 66 52 23 27 42 hvcurveto + -29 54 rlineto + -23 -36 -39 -15 -46 hhcurveto + return + + + rmoveto + 89 60 75 133 131 -60 75 -89 -90 -59 -75 -131 -133 59 -75 90 hvcurveto + 51 vmoveto + -52 -35 53 104 104 35 51 52 51 35 -51 -104 -104 -35 -53 -51 hvcurveto + return + + + 68 298 hlineto + -97 callgsubr + return + + + 227 -12 66 -66 67 168 55 152 68 -65 65 hstemhm + 58 81 213 77 246 72 hintmask 01101111 + 201 -12 rmoveto + 62 70 32 59 66 hvcurveto + -48 37 53 -43 81 hhcurveto + 66 50 23 27 42 hvcurveto + 481 callgsubr + -35 -17 -47 hhcurveto + -83 -64 67 101 -4 hvcurveto + 315 285 callsubr + -66 90 -119 -66 -56 -40 -63 -38 vhcurveto + 63 -20 -47 40 -72 hhcurveto + -72 -67 -34 -29 -45 hvcurveto + hintmask 01110111 + 33 -57 rlineto + 26 38 50 26 53 hhcurveto + 80 19 -60 -62 hvcurveto + -202 -23 -92 -53 -106 vvcurveto + hintmask 01101111 + -87 61 -51 82 vhcurveto + hintmask 10101111 + 23 66 rmoveto + -48 -37 23 55 62 59 40 154 20 hvcurveto + -25 vlineto + 1 -37 7 -38 11 -25 rrcurveto + -48 -44 -58 -27 -45 hhcurveto + 205 224 rmoveto + 95 9 55 60 67 hhcurveto + 74 41 -55 -100 hvcurveto + return + + + 57 50 29 36 37 hvcurveto + -2 -92 rlineto + -80 -1 -43 -52 -89 hhcurveto + -47 -50 14 31 -47 hvcurveto + -31 -58 rlineto + -34 52 62 -19 61 hhcurveto + 9 293 rmoveto + -85 -49 69 109 104 61 74 79 0 callgsubr + -238 vlineto + -45 -41 -38 -22 -45 hhcurveto + return + + + vstem + 159 hmoveto + 96 hlineto + 68 260 13 46 10 46 11 49 rlinecurve + 4 hlineto + 12 -49 9 -45 12 -46 70 -261 rcurveline + 100 hlineto + 130 486 rlineto + -78 hlineto + -71 -281 -10 -46 -9 -44 339 callsubr + -11 45 -11 44 -12 46 -76 281 rcurveline + -80 hlineto + -75 -281 -12 -45 -10 -45 339 callsubr + -9 45 -9 44 -11 46 -72 281 rcurveline + -84 hlineto + return + + + -91 callsubr + 60 -8 rmoveto + 50 -10 67 197 -74 14 rlineto + endchar + + + 118 113 31 callgsubr + 118 -113 35 32 -114 140 rlineto + -82 hlineto + return + + + 496 482 rmoveto + 61 15 54 33 76 vvcurveto + 30 -10 27 276 callgsubr + 5 -20 -18 vvcurveto + -54 -38 -25 -52 -4 vhcurveto + -31 -303 hlineto + -65 callgsubr + 118 86 58 170 vhcurveto + return + + + -72 callsubr + endchar + + + 398 callsubr + 86 -54 45 -57 33 401 callsubr + 39 30 49 57 67 vvcurveto + 99 -69 71 -111 -103 -78 -66 -98 -67 42 -47 47 -33 434 callsubr + -60 -32 -60 -57 -83 vvcurveto + -101 89 -74 120 vhcurveto + hintmask 11011000 + 45 360 rmoveto + -77 30 -70 32 76 vvcurveto + 62 44 41 59 70 41 -50 -63 -47 -24 -43 -43 -38 vhcurveto + hintmask 11100100 + -43 -299 rmoveto + -78 -59 51 71 58 38 47 51 34 hvcurveto + 92 -37 81 -30 -82 vvcurveto + -66 -51 -46 -74 vhcurveto + endchar + + + -86 callsubr + endchar + + + rmoveto + 35 -32 -63 callsubr + return + + + 93 45 59 70 8 hvcurveto + -50 8 rlineto + -47 -8 -31 -37 -57 hhcurveto + -57 -31 37 47 -8 hvcurveto + -50 -8 rlineto + return + + + -13 callgsubr + -4 rlineto + 28 5 8 14 20 hhcurveto + return + + + -17 -201 55 -55 139 83 -5 callsubr + -79 62 241 77 hintmask 1011001010000000 + -57 callgsubr + hintmask 1011010010000000 + 33 callgsubr + hintmask 1010110010000000 + -7 101 rlineto + hintmask 1010101010000000 + -49 callgsubr + hintmask 1011001010000000 + -76 callgsubr + hintmask 1011000110000000 + -220 -22 -95 callgsubr + hintmask 0111000110000000 + -16 callgsubr + hintmask 1011000110000000 + -3 callgsubr + return + + + 193 callgsubr + -32 8 -24 13 26 vvcurveto + 29 27 15 56 3 vhcurveto + -5 51 rlineto + -91 -3 -52 -31 -57 vvcurveto + -58 54 -24 58 -10 vhcurveto + endchar + + + -69 -29 -58 -78 -3 hvcurveto + 55 -3 rlineto + 47 3 14 32 30 hhcurveto + return + + + 10 41 8 39 9 39 rrcurveto + 4 hlineto + 8 -39 8 -39 10 -41 80 -290 rcurveline + 97 hlineto + 113 518 rlineto + -77 hlineto + -55 -270 -11 -55 -9 -56 -10 -56 rlinecurve + -4 hlineto + -14 56 -14 56 -13 55 -72 270 rcurveline + -72 hlineto + -74 -270 -13 -56 -15 -56 -12 -55 rlinecurve + -3 hlineto + -11 55 -11 56 -10 56 -55 270 rcurveline + -82 hlineto + return + + + 78 vstem + 90 hmoveto + 75 361 hlineto + 58 -6 78 -4 58 vhcurveto + 4 hlineto + 52 -149 124 -340 rlineto + 55 hlineto + 124 340 52 149 31 callgsubr + -4 -58 -7 -78 -58 vvcurveto + -361 78 656 -101 vlineto + -124 -350 -16 -45 -13 -47 -16 367 callgsubr + -16 45 -15 47 -16 45 -126 350 rcurveline + -100 hlineto + return + + + -32 -15 35 -48 hhcurveto + -44 -20 -24 -46 -5 hvcurveto + 42 -6 rlineto + 25 2 12 6 16 hhcurveto + return + + + vstem + 274 -12 rmoveto + 58 55 23 39 44 hvcurveto + -29 callgsubr + -161 99 -93 129 hvcurveto + return + + + 32 27 26 36 38 448 callgsubr + -38 -36 27 -26 33 hvcurveto + return + + + 90 hmoveto + 336 66 -70 callgsubr + return + + + -17 69 callsubr + 224 77 hintmask 11001100 + -57 callgsubr + hintmask 11010100 + 33 callgsubr + hintmask 10110100 + -7 101 rlineto + hintmask 10101100 + -49 callgsubr + hintmask 11001100 + -76 callgsubr + return + + + -46 50 rlineto + -35 -33 -38 -20 -52 hhcurveto + -102 -63 76 126 124 67 76 102 45 33 -18 -29 29 hvcurveto + 47 51 rlineto + 35 -35 -54 31 -66 hhcurveto + -144 -109 -103 -169 return + + + rmoveto + -61 callsubr + + + rmoveto + -87 callgsubr + + + rmoveto + 49 22 37 51 5 hvcurveto + -47 4 rlineto + -28 -5 -8 -14 -20 hhcurveto + return + + + rmoveto + 69 40 38 57 80 vvcurveto + 58 -24 33 -39 -31 -22 -21 -35 -32 25 -18 28 3 2 0 1 3 vhcurveto + -57 -25 -35 -50 -33 vhcurveto + return + + + 14 callgsubr + hstem + 3 538 -96 callgsubr + return + + + 85 vstem + -68 callgsubr + return + + + 233 -219 86 31 102 122 102 -102 233 -99 86 return + + + -24 callgsubr + endchar + + + vstem + -71 callsubr + return + + + 90 hmoveto + 96 callgsubr + 72 20 47 51 78 vvcurveto + 113 -84 38 -115 vhcurveto + -179 hlineto + 83 -250 rmoveto + 184 86 vlineto + 83 47 -24 -66 -61 -43 -33 -86 hvcurveto + return + + + -94 hlineto + -66 -20 22 31 27 14 16 17 15 hvcurveto + -11 22 27 -6 24 hhcurveto + 99 79 65 104 41 -17 37 -23 22 hvcurveto + 100 63 -169 hlineto + return + + + 79 vstem + -91 callgsubr + return + + + 95 62 -75 -125 -124 -62 -78 -95 hvcurveto + return + + + -12 rmoveto + 22 14 3 5 11 233 callgsubr + -2 -9 -4 0 -5 hhcurveto + -12 -11 10 26 hvcurveto + return + + + -14 -12 71 -38 -21 486 -20 81 callgsubr + 196 callgsubr + 486 -82 hlineto + hintmask 10111000 + -77 callsubr + return + + + -67 callgsubr + endchar + + + vstem + -47 callsubr + return + + + vstem + 494 callsubr + 72 56 26 49 45 hvcurveto + -45 callsubr + -173 105 -97 141 hvcurveto + return + + + rmoveto + 42 41 -141 167 -58 -55 rlineto + endchar + + + hmoveto + 82 352 hlineto + -53 callgsubr + return + + + rmoveto + 37 42 -142 128 -47 -55 rlineto + endchar + + + -21 200 67 321 68 return + + + 287 callsubr + hstem + 166 83 vstem + 11 callsubr + return + + + 145 callsubr + hstemhm + 52 86 314 86 -54 73 hintmask 11110000 + 295 58 rmoveto + -81 callsubr + -70 vmoveto + 366 callgsubr + 95 -32 74 -53 46 hvcurveto + hintmask 11101000 + -9 callsubr + hintmask 11110000 + -168 101 -104 142 vhcurveto + return + + + rmoveto + 103 72 381 callgsubr + -72 29 34 -100 92 rlineto + -68 hlineto + -100 -92 rlineto + return + + + 89 0 174 callsubr + 309 79 hintmask 01011100 + 305 callsubr + hintmask 01101100 + -7 callsubr + hintmask 10011100 + 26 callgsubr + hlineto + return + + + vstem + -90 callgsubr + return + + + -20 -79 callsubr + return + + + -12 -1 callsubr + return + + + 27 0 349 callgsubr + 251 77 hintmask 01011100 + 406 callsubr + hintmask 01101100 + -7 callgsubr + hintmask 10011100 + 61 callsubr + return + + + 66 17 41 38 67 vvcurveto + 30 -10 28 -13 22 vhcurveto + -65 -28 rlineto + 8 -16 6 -22 -20 vvcurveto + -46 -26 -25 -55 -11 vhcurveto + 20 -38 -44 11 -48 196 callsubr + return + + + -111 -107 -97 -159 -159 103 -95 130 return + + + -58 callsubr + endchar + + + 283 callgsubr + 447 callgsubr + -51 27 callsubr + return + + + -17 -201 55 -55 139 83 35 callgsubr + -79 62 61 60 120 77 hintmask 1011010101100000 + -57 callgsubr + hintmask 1011011001100000 + 33 callgsubr + hintmask 1010111001100000 + -7 101 rlineto + hintmask 1010110101100000 + -49 callgsubr + hintmask 1011010101100000 + -76 callgsubr + hintmask 1011010011100000 + -220 -22 -95 callgsubr + hintmask 0111010011100000 + -16 callgsubr + hintmask 1011010011100000 + -3 callgsubr + hintmask 1011010101100000 + 9 778 44 callsubr + return + + + 61 17 43 39 64 vvcurveto + 32 -10 24 -13 24 408 callsubr + -19 6 -16 -21 vvcurveto + -44 -27 -28 -54 -10 vhcurveto + 15 -32 -37 8 -39 hhcurveto + -142 -101 -100 -170 hvcurveto + return + + + 12 27 117 4 143 2 131 hvcurveto + -83 return + + + 69 -6 70 -5 66 vhcurveto + 4 hlineto + 71 -135 238 -413 rlineto + 86 656 -79 -339 hlineto + return + + + 44 callgsubr + -57 rlineto + return + + + -21 427 71 -2 callsubr + return + + + 3 callgsubr + 192 hmoveto + 114 callgsubr + + + hstem + 87 83 308 80 vstem + -92 callsubr + return + + + -12 -17 callsubr + return + + + 66 17 callsubr + return + + + -32 0 62 181 56 157 62 hstemhm + 90 83 205 77 -50 80 hintmask 11110100 + 187 callsubr + hintmask 11111000 + 60 16 30 45 50 vvcurveto + 94 -81 34 -114 vhcurveto + -170 hlineto + 83 -219 rmoveto + 157 81 vlineto + 82 42 -22 -53 -53 -36 -29 -91 hvcurveto + -78 -237 rmoveto + 181 90 vlineto + hintmask 11110100 + 92 50 -28 -59 -68 -56 -26 -86 hvcurveto + endchar + + + 5 callsubr + endchar + + + 26 19 19 27 26 -19 19 -26 -26 -20 -19 -26 -27 20 -19 26 hvcurveto + endchar + + + -23 callgsubr + -77 return + + + 71 238 215 callgsubr + return + + + 169 21 -21 66 103 386 101 hstem + 90 75 394 -51 callsubr + return + + + rmoveto + 24 18 17 25 25 -18 17 -24 -23 -18 -17 -25 -25 18 -17 23 hvcurveto + endchar + + + 45 16 46 34 59 vvcurveto + 61 -47 32 -71 2 vhcurveto + return + + + 64 390 -52 hlineto + -27 -20 -26 -12 -44 -8 rrcurveto + -42 85 vlineto + return + + + hstem + 90 83 -28 callsubr + return + + + -31 0 376 callgsubr + -36 callsubr + return + + + 166 hmoveto + 83 196 hlineto + 167 322 rlineto + -86 hlineto + -66 -137 -18 -38 -17 -36 140 callsubr + 36 -17 38 -66 137 rcurveline + -88 hlineto + 167 -322 rlineto + return + + + 136 -12 rmoveto + 83 47 50 81 33 hvcurveto + 215 537 rlineto + -85 hlineto + -113 -292 -46 -129 rlineto + -4 hlineto + -50 129 -122 292 rlineto + -89 hlineto + 224 -502 -14 -35 rlineto + -37 -18 -24 -16 -43 hhcurveto + -19 -12 3 4 -11 hvcurveto + return + + + 266 callsubr + 305 -309 return + + + -3 339 callgsubr + 472 callsubr + 65 61 132 -76 callsubr + hintmask 11111100 + 288 74 callsubr + 34 20 43 32 22 hvcurveto + hintmask 11111010 + 32 20 27 19 26 24 rrcurveto + 292 callgsubr + -111 -101 303 callsubr + 3 hlineto + -32 -33 -22 -33 -43 vvcurveto + hintmask 11111100 + 290 callsubr + -22 263 131 callsubr + return + + + 31 22 21 34 33 -26 18 -27 -3 -3 0 -1 -3 hvcurveto + 56 25 35 51 33 vhcurveto + -24 39 rlineto + -69 -40 -37 -58 -80 vvcurveto + -58 23 -32 40 vhcurveto + return + + + rmoveto + 23 18 17 25 25 -18 17 -23 -24 -18 -17 -25 -25 18 -17 24 hvcurveto + return + + + 169 199 callsubr + return + + + -96 callgsubr + 46 return + + + -105 182 callsubr + hstem + 15 423 vstem + 15 hmoveto + 88 hlineto + 74 128 14 27 14 26 15 32 rlinecurve + 4 hlineto + 17 -32 15 -26 14 -27 76 -128 rcurveline + 92 hlineto + -161 263 150 255 rlineto + -88 hlineto + -67 -122 -12 -23 -12 -23 -15 -31 rlinecurve + -4 hlineto + -17 31 -12 23 -13 23 -70 122 rcurveline + -91 hlineto + 150 -251 rlineto + endchar + + + 90 hmoveto + 46 callsubr + 83 -311 96 callsubr + return + + + 23 235 rmoveto + -47 15 -38 20 40 vvcurveto + 32 28 23 34 36 29 -22 -34 -26 -13 -26 -29 -22 vhcurveto + return + + + 367 rmoveto + hintmask 11101000 + -107 callsubr + return + + + -41 callsubr + endchar + + + 154 0 66 75 62 36 250 callgsubr + -63 63 hstemhm + 342 84 hintmask 11110100 + 252 292 rmoveto + hintmask 11101100 + 29 52 29 57 29 54 rrcurveto + 3 -252 -138 hlineto + -196 -203 rmoveto + 86 hlineto + 76 141 rlineto + 172 -141 321 66 -237 173 190 63 -190 hlineto + hintmask 11110100 + 150 227 66 -359 vlineto + return + + + -56 7 -66 4 -52 vhcurveto + -4 hlineto + -60 111 -191 306 rlineto + -84 return + + + -59 46 -34 45 -16 vhcurveto + 120 hmoveto + 54 36 callgsubr + return + + + -8 rlineto + -74 5 44 -77 107 hhcurveto + return + + + 45 16 46 34 59 vvcurveto + 61 -47 32 -71 2 vhcurveto + 178 callsubr + return + + + 142 callsubr + hintmask 11110000 + -44 callgsubr + hintmask 11101000 + -6 callgsubr + endchar + + + 112 41 75 78 4 hvcurveto + -68 hlineto + -57 -2 -21 -48 -66 hhcurveto + -66 -21 48 57 -2 hvcurveto + -68 hlineto + -78 4 41 -75 112 hhcurveto + endchar + + + -11 69 callsubr + 225 82 hintmask 11001100 + 62 callsubr + hintmask 11010100 + 189 callsubr + hintmask 10110100 + -7 70 rlineto + hintmask 10101100 + -68 hlineto + return + + + 46 hmoveto + 250 71 -83 515 83 70 -250 -70 84 -515 -84 hlineto + return + + + -60 -38 -47 -76 -4 hvcurveto + 70 callgsubr + return + + + 67 43 42 57 56 -43 42 -67 -67 -43 -42 -56 -57 43 -42 67 hvcurveto + 37 vmoveto + -32 -25 24 38 37 25 24 32 32 25 -24 -37 -38 -25 -24 -32 hvcurveto + endchar + + + 27 18 33 31 45 vvcurveto + 63 -55 40 -70 -67 -54 -41 -62 -41 24 -26 34 -22 vhcurveto + -4 vlineto + return + + + 165 callsubr + 144 54 293 callsubr + hintmask 11111000 + 261 callsubr + hintmask 11110100 + -6 callsubr + hintmask 11111000 + 319 callgsubr + hintmask 11110010 + -74 callsubr + hintmask 11111000 + -99 callsubr + -94 513 -20 callsubr + return + + + 85 callgsubr + 144 54 140 callgsubr + hintmask 10111100 + 389 callsubr + hintmask 10111010 + 75 callgsubr + hintmask 01111010 + 7 -58 rlineto + hintmask 01111100 + -68 callsubr + hintmask 10111100 + -89 callgsubr + -56 516 -20 callsubr + return + + + 38 153 -42 callsubr + return + + + 332 -12 -106 callgsubr + -95 638 rmoveto + 93 return + + + -31 10 callgsubr + return + + + -55 155 callgsubr + hstem + 52 85 -27 callsubr + return + + + 169 242 callsubr + return + + + 67 48 35 53 45 hvcurveto + 3 hlineto + return + + + rmoveto + 48 11 49 24 59 vvcurveto + 54 -51 28 -78 3 vhcurveto + -4 -51 rlineto + 49 -3 24 -14 -26 vvcurveto + -26 -20 -14 -27 -7 vhcurveto + return + + + 228 callgsubr + 384 callsubr + hintmask 11111000 + 121 callsubr + hintmask 11110100 + 132 callsubr + hintmask 11111000 + -66 callsubr + return + + + 83 277 119 hlineto + 158 -277 rlineto + 94 hlineto + -167 286 rlineto + 90 22 58 62 102 vvcurveto + 136 -96 48 -134 vhcurveto + -205 hlineto + return + + + 18 callsubr + 49 rmoveto + 93 45 59 70 8 hvcurveto + return + + + 67 hlineto + 8 136 22 97 95 121 rrcurveto + 36 -273 -55 201 vlineto + -80 -109 -32 -91 -8 -135 rrcurveto + return + + + 7 -18 -24 5 -27 hhcurveto + -99 -84 -67 -106 -58 31 -47 32 -26 hvcurveto + -4 vlineto + return + + + 81 346 callsubr + 196 94 hlineto + 122 87 52 113 117 -86 40 -123 hvcurveto + -177 hlineto + 83 -262 rmoveto + 196 86 vlineto + 92 44 -25 -70 -68 -42 -33 -92 hvcurveto + return + + + 90 106 callsubr + hlineto + 83 -453 rmoveto + 387 62 vlineto + 123 59 -70 -121 -128 -59 -68 -123 hvcurveto + return + + + 8 21 -21 260 68 261 67 hstem + 90 83 267 83 vstem + 90 110 callgsubr + endchar + + + 108 callgsubr + 117 84 hstemhm + 64 78 -53 83 144 83 -27 83 hintmask 10111001 + -96 callsubr + hintmask 11011001 + -54 callgsubr + hintmask 10111001 + 336 callsubr + -118 345 callsubr + return + + + -76 callsubr + hintmask 1111001000000000 + 261 callsubr + hintmask 1111000100000000 + -6 callsubr + hintmask 1111001000000000 + 319 callgsubr + hintmask 1111000010000000 + -74 callsubr + hintmask 1111001000000000 + -99 callsubr + hintmask 1110110000000000 + return + + + 31 hmoveto + 368 67 -264 hlineto + 256 375 rlineto + 44 -332 -67 228 vlineto + -256 -375 rlineto + return + + + -14 -12 71 -38 -21 486 -20 81 callgsubr + 23 73 196 callgsubr + 455 hlineto + hintmask 10111010 + 48 callgsubr + hintmask 10111000 + 120 callsubr + return + + + -213 387 49 237 51 hstemhm + 37 61 138 422 callgsubr + 136 387 rmoveto + hintmask 11101000 + 41 33 21 24 27 hvcurveto + 4 hlineto + 7 -37 rlineto + hintmask 11110000 + 50 196 hlineto + 84 -35 49 -80 -52 -48 -22 -20 -33 vhcurveto + 23 -43 rlineto + 17 27 39 17 35 hhcurveto + 47 14 -31 -42 1 hvcurveto + -138 -14 -61 -35 -70 vvcurveto + -57 40 -37 59 vhcurveto + 18 49 rmoveto + -34 -22 16 34 37 35 27 103 11 hvcurveto + -85 vlineto + -27 -29 -26 -13 -27 hhcurveto + endchar + + + 125 callgsubr + -29 -195 rlineto + endchar + + + hintmask 1011110100000000 + 389 callsubr + hintmask 1011110010000000 + 75 callgsubr + hintmask 0111110010000000 + 7 -58 rlineto + hintmask 0111110100000000 + -68 callsubr + hintmask 1011110100000000 + -89 callgsubr + hintmask 1011101001000000 + 303 callgsubr + return + + + 65 callgsubr + hintmask 11010110 + return + + + 25 callsubr + hlineto + return + + + -38 callgsubr + vhcurveto + return + + + -186 518 rlineto + -94 hlineto + return + + + 271 69 callsubr + 213 82 212 82 hintmask 11001110 + 163 callgsubr + hintmask 11010110 + 315 callgsubr + hintmask 10110110 + -7 70 rlineto + hintmask 10101110 + -68 hlineto + return + + + 191 callgsubr + hstemhm + 46 85 280 85 -44 72 hintmask 11110000 + 271 callsubr + hintmask 11101000 + -8 callgsubr + hintmask 11110000 + 262 callsubr + return + + + -61 -86 69 248 64 224 67 hstemhm + 159 149 32 84 -61 83 hintmask 11110100 + 236 -86 rmoveto + 117 93 72 113 89 -61 58 -77 18 477 callsubr + 69 25 47 52 77 vvcurveto + 103 -80 61 -111 -75 -59 -34 -46 -49 vhcurveto + 44 -52 rlineto + 38 38 45 27 53 hhcurveto + 68 42 -41 -62 -67 -45 -54 -136 hvcurveto + -64 vlineto + hintmask 11110100 + 152 52 -53 -75 -72 -55 -48 -77 -75 -50 35 40 -38 hvcurveto + -42 -54 rlineto + -47 43 65 -43 102 hhcurveto + endchar + + + 287 callsubr + 101 98 hstemhm + 56 98 12 83 13 98 hintmask 11101000 + 11 callsubr + hintmask 11111100 + -61 403 -98 callgsubr + + + 100 -12 69 229 64 249 69 hstemhm + 58 85 379 84 -82 82 hintmask 11111000 + 328 -12 rmoveto + 169 109 124 218 218 -104 120 -171 -89 -71 -32 -45 -47 hvcurveto + 41 -57 rlineto + 38 39 55 27 66 hhcurveto + hintmask 11110100 + 125 68 -88 -161 6 hvcurveto + -464 hlineto + -1 -9 -1 -9 -7 vvcurveto + hintmask 11111000 + -206 100 -131 170 vhcurveto + -1 69 rmoveto + -106 -72 84 145 -6 hvcurveto + 379 hlineto + -149 -11 -73 -80 -111 hhcurveto + endchar + + + 21 -5 callsubr + return + + + 0 45 callgsubr + return + + + rmoveto + 72 hlineto + -16 140 161 53 131 vvcurveto + 99 -66 61 -101 -73 -57 -35 -48 -42 vhcurveto + 47 -43 rlineto + 36 31 40 22 44 hhcurveto + 64 33 -44 -53 -106 -159 -57 22 -156 hvcurveto + 38 -210 rmoveto + 33 27 26 36 return + + + 192 hmoveto + 83 449 190 callsubr + hlineto + return + + + 106 5 59 28 58 vvcurveto + return + + + 355 callsubr + 33 206 callgsubr + -15 hhcurveto + -24 -23 15 31 return + + + 328 rmoveto + 79 39 -52 -83 -84 -48 -56 -63 hvcurveto + hintmask 11010110 + -81 -49 67 124 -10 hvcurveto + hintmask 11011010 + 59 40 52 25 41 hhcurveto + 7 -340 rmoveto + 103 86 83 122 131 -72 66 -110 -52 -57 -31 -49 -40 hvcurveto + hintmask 11101010 + 428 callgsubr + hintmask 11011010 + 46 51 rlineto + hintmask 11101010 + 39 -36 -49 29 -69 hhcurveto + -127 -116 -99 -256 hvcurveto + hintmask 11011010 + -205 95 -102 125 vhcurveto + endchar + + + 25 -212 59 142 69 460 -20 hstem + 87 83 39 64 144 79 vstem + 304 72 callgsubr + -24 15 31 40 29 48 43 10 hvcurveto + 93 20 58 66 139 vvcurveto + 308 callsubr + -156 74 -62 104 -9 vhcurveto + -31 -28 -25 -40 -46 vvcurveto + -57 42 -30 53 vhcurveto + return + + + 24 -12 68 166 59 181 68 hstemhm + 58 83 304 85 -84 84 hintmask 11111000 + 290 -12 rmoveto + 140 100 105 167 167 -94 103 -142 -77 -62 -29 -36 -40 hvcurveto + 40 -55 rlineto + 28 33 45 24 52 hhcurveto + hintmask 11110100 + 99 56 -67 -114 6 hvcurveto + -386 hlineto + -1 -10 -1 -7 -8 vvcurveto + hintmask 11111000 + -161 92 -107 140 vhcurveto + 68 vmoveto + -84 -59 62 104 -6 hvcurveto + 304 hlineto + -106 -12 -60 -60 -83 hhcurveto + endchar + + + rmoveto + 93 43 50 56 7 hvcurveto + -46 8 rlineto + -36 -7 -29 -33 -61 hhcurveto + hintmask 1111010010100000 + -61 -29 33 36 -7 hvcurveto + hintmask 1111010100100000 + -46 -8 rlineto + hintmask 1111010101000000 + -56 7 43 -50 93 hhcurveto + hintmask 1111101000100000 + 66 135 rmoveto + 54 22 40 51 3 hvcurveto + -45 5 rlineto + -29 -4 -10 -17 -24 hhcurveto + hintmask 1111011000100000 + -41 -23 50 -64 hhcurveto + -54 -22 -40 -52 -3 hvcurveto + 45 -5 rlineto + 30 410 callgsubr + hintmask 1111101000100000 + 258 callsubr + + + -345 hlineto + 49 callgsubr + return + + + 392 callsubr + 239 51 hstemhm + 41 60 -19 77 hintmask 10110100 + -97 callsubr + hintmask 01111000 + -171 589 44 callsubr + return + + + 707 213 callgsubr + hintmask 10110010 + 171 callgsubr + hintmask 11010010 + 48 20 -49 70 hhcurveto + hintmask 10101100 + -167 -119 -4 callsubr + + + 245 callsubr + 83 518 -83 -211 -248 211 -83 hlineto + return + + + 73 callsubr + 41 -27 19 -46 11 vhcurveto + return + + + -62 -16 callsubr + return + + + 31 -12 67 184 63 161 67 hstemhm + 52 83 -83 84 319 83 hintmask 11101100 + 295 -12 rmoveto + 142 101 100 173 173 -101 96 -142 -143 -100 -96 -173 -173 100 -100 143 hvcurveto + 475 vmoveto + 86 61 -57 -104 12 hvcurveto + -318 hlineto + 104 12 60 57 87 hhcurveto + -408 vmoveto + hintmask 11110100 + -92 -61 66 118 -7 hvcurveto + 320 hlineto + hintmask 11101100 + -118 -7 -62 -66 -91 hhcurveto + endchar + + + -50 0 59 164 59 145 59 hstemhm + 82 81 205 80 -61 82 hintmask 11110100 + 82 hmoveto + 195 hlineto + 112 80 43 96 70 -47 34 -55 13 hvcurveto + 3 vlineto + hintmask 11111000 + 50 15 31 35 54 vvcurveto + 88 -73 35 -106 vhcurveto + -187 hlineto + 81 -204 rmoveto + 145 98 vlineto + 75 32 -27 -45 -45 -32 -28 -81 hvcurveto + -92 -223 rmoveto + 164 100 vlineto + hintmask 11110100 + 82 42 -30 -49 -54 -39 -31 -80 hvcurveto + endchar + + + rmoveto + 59 22 36 49 59 vvcurveto + 48 -20 25 -33 -25 -22 -18 -28 -28 22 -14 23 3 2 0 1 3 vhcurveto + -37 -24 -27 -40 -15 vhcurveto + endchar + + + -25 -17 -28 -32 -41 vvcurveto + -38 19 -26 24 -15 vhcurveto + -4 vlineto + return + + + 83 222 -18 callgsubr + return + + + -303 -12 68 656 -20 hstem + 82 82 vstem + 42 callsubr + return + + + 22 429 callgsubr + 90 83 hintmask 11001100 + 90 hmoveto + 83 304 callsubr + 91 hlineto + -226 349 rlineto + hintmask 11100100 + 384 callgsubr + hintmask 11001100 + 14 77 rlineto + hintmask 11100100 + 338 callsubr + -59 -33 -22 -100 -56 363 callgsubr + hintmask 11010100 + 277 -83 vlineto + return + + + 328 rmoveto + 79 39 -52 -83 -84 -48 -56 -63 hvcurveto + hintmask 11101100 + -81 -49 67 124 -10 hvcurveto + hintmask 11110100 + 59 40 52 25 41 hhcurveto + 7 -340 rmoveto + 103 86 83 122 131 -72 66 -110 -52 -57 -31 -49 -40 hvcurveto + 428 callgsubr + 46 51 rlineto + 39 -36 -49 29 -69 hhcurveto + -127 -116 -99 -256 -205 95 -102 125 hvcurveto + endchar + + + rmoveto + 55 81 31 80 113 vvcurveto + 112 -31 79 -55 81 vhcurveto + -47 -22 rlineto + 51 -78 20 -84 -88 vvcurveto + -89 -20 -83 -51 -80 vhcurveto + endchar + + + -41 -23 49 -64 hhcurveto + -54 -22 -40 -51 -3 hvcurveto + 45 -5 rlineto + 29 410 callgsubr + return + + + -14 -12 172 callsubr + return + + + rmoveto + 244 110 vlineto + 102 57 -31 -86 -85 -57 -42 -102 hvcurveto + return + + + 108 -87 -21 548 108 0 -20 return + + + -21 146 62 243 67 return + + + -39 21 -21 237 68 147 78 -12 457 callgsubr + 90 83 hintmask 11001100 + 90 hmoveto + 83 237 88 hlineto + 164 -237 rlineto + 89 hlineto + -189 275 rlineto + hintmask 11100100 + 71 117 rlineto + 52 32 14 8 24 hhcurveto + 8 6 0 -2 7 hvcurveto + hintmask 11001100 + 15 74 rlineto + hintmask 11100100 + 244 callsubr + hintmask 11010100 + 213 -83 vlineto + return + + + 178 callgsubr + 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + endchar + + + 39 callsubr + 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + return + + + rmoveto + 114 callgsubr + + + -70 8 45 -59 93 hhcurveto + return + + + 393 callgsubr + hstem + 52 85 270 76 vstem + -80 callgsubr + return + + + 445 rmoveto + 84 49 56 62 81 49 -66 -124 11 vhcurveto + -60 -41 -51 -25 -42 hhcurveto + -79 -39 52 83 hvcurveto + 88 -457 rmoveto + 127 116 99 256 205 -94 102 -126 -102 -86 -83 -122 -131 71 -66 110 53 57 31 51 40 hvcurveto + -204 -3 -76 -70 -90 hhcurveto + -40 -39 20 31 -26 hvcurveto + -46 -52 rlineto + -38 35 51 -29 68 hhcurveto + endchar + + + hmoveto + 147 hlineto + 167 99 90 171 170 -99 87 -171 hvcurveto + -143 return + + + vstem + 32 callsubr + return + + + hstem + 90 83 346 callsubr + return + + + 44 callsubr + 192 -56 rmoveto + 66 197 -74 14 -42 -201 rlineto + endchar + + + -112 290 callgsubr + hstem + 14 418 vstem + 14 hmoveto + 86 hlineto + 66 113 16 30 16 29 17 28 rlinecurve + 4 hlineto + 18 -28 18 -30 17 -29 71 -113 rcurveline + 89 hlineto + -158 245 147 241 rlineto + -86 hlineto + -59 -107 -15 -26 -15 -28 -14 -27 rlinecurve + -4 hlineto + -17 27 -16 28 -15 26 -65 107 rcurveline + -89 hlineto + 147 -232 rlineto + endchar + + + 7 -16 -15 3 -21 hhcurveto + -55 -50 -39 -61 -33 hvcurveto + -3 hlineto + return + + + 431 callgsubr + 120 108 hstemhm + 68 110 -95 82 hintmask 11101000 + 241 callgsubr + hintmask 11110000 + 91 803 -105 callsubr + + + -212 rmoveto + 26 35 419 callsubr + 168 callsubr + -15 hhcurveto + -24 -24 15 31 return + + + -309 -1 115 235 126 hstemhm + 65 119 -47 61 hintmask 11100000 + 216 callgsubr + -58 -519 rmoveto + hintmask 11010000 + 81 34 50 67 86 vvcurveto + 60 -26 37 -43 -33 -28 -22 -36 -37 27 -20 32 3 4 0 1 3 vhcurveto + 1 -53 -34 -44 -57 -25 rrcurveto + endchar + + + 160 callsubr + 108 callsubr + 518 -83 hlineto + return + + + 39 20 50 -46 -20 58 50 hstemhm + return + + + 295 70 -378 return + + + rmoveto + 71 197 -85 15 -43 -201 rlineto + endchar + + + vstem + 128 callsubr + return + + + -21 79 callsubr + return + + + 84 callgsubr + 507 vlineto + return + + + -54 hhcurveto + -111 -101 -96 -152 -153 379 callsubr + return + + + -42 6 rlineto + -25 -2 -12 -6 -16 hhcurveto + return + + + -295 161 callgsubr + return + + + -211 21 -21 424 74 -12 -20 22 -17 callsubr + hintmask 11000100 + 62 callgsubr + hintmask 10010100 + 16 72 rlineto + hintmask 11001000 + 111 callsubr + hintmask 10101000 + -7 88 rlineto + hintmask 10100100 + -68 hlineto + return + + + 47 vstem + 372 -11 rmoveto + 174 149 130 204 203 -149 127 -174 -174 -149 -127 -203 -204 149 -130 174 hvcurveto + 42 vmoveto + -151 -125 117 175 174 125 115 151 151 125 -115 -174 -175 -125 -117 -151 hvcurveto + return + + + 36 21 -21 235 72 211 -20 173 callsubr + endchar + + + 90 hmoveto + 83 208 hlineto + 113 133 196 -341 rlineto + 93 hlineto + -237 406 205 250 rlineto + -94 hlineto + -273 -329 rlineto + -3 329 -83 hlineto + return + + + rmoveto + 79 59 49 63 47 -28 31 -45 23 hvcurveto + 4 vlineto + return + + + 103 callsubr + -23 95 rmoveto + 48 8 45 20 51 vvcurveto + 47 -43 23 -78 3 vhcurveto + -8 -42 rlineto + 49 190 callgsubr + -24 -6 vhcurveto + endchar + + + rmoveto + -85 -49 134 callsubr + 62 75 78 0 callgsubr + -254 11 callgsubr + return + + + -69 hlineto + 143 callsubr + return + + + 27 0 349 callgsubr + 251 77 hintmask 01011100 + 90 hmoveto + 83 hlineto + 192 306 rlineto + hintmask 01101100 + 301 callgsubr + hintmask 10011100 + 212 callsubr + return + + + 70 116 111 return + + + -99 callsubr + endchar + + + 82 hmoveto + 81 128 hlineto + 91 106 142 -234 rlineto + 90 hlineto + -185 291 163 195 rlineto + -91 hlineto + -207 -256 rlineto + -3 482 -81 hlineto + return + + + -83 478 callgsubr + hstem + 45 388 80 callgsubr + return + + + -35 21 -21 208 60 184 66 hstem + 90 83 216 79 vstem + -35 callsubr + return + + + 15 callsubr + endchar + + + -18 -39 rlinecurve + -4 hlineto + -19 39 -18 return + + + -103 3 callsubr + 446 callsubr + vlineto + return + + + rmoveto + 76 63 45 72 52 -40 33 -44 11 hvcurveto + return + + + -7 -45 rlineto + -2 hlineto + 37 -42 -40 20 122 callsubr + return + + + -21 586 70 171 callsubr + return + + + 31 155 callgsubr + return + + + vstem + 249 -12 rmoveto + 127 77 119 214 214 -77 115 -127 -128 -77 -115 -214 -214 77 -119 128 hvcurveto + return + + + vstem + 269 -12 rmoveto + 133 81 123 210 210 -81 119 -133 -133 -81 -118 -211 -210 81 -123 133 hvcurveto + return + + + 71 callsubr + 38 -27 26 -33 -33 -26 -26 -38 -36 26 -26 33 hvcurveto + return + + + 183 254 -67 callgsubr + return + + + hmoveto + 168 hlineto + 198 108 122 209 208 -108 117 -202 hvcurveto + -164 return + + + -6 21 23 -2 19 hhcurveto + 84 hlineto + 63 35 -15 -45 hvcurveto + return + + + 60 24 60 -9 389 callgsubr + return + + + 66 -33 -21 430 68 return + + + vmoveto + -60 callgsubr + + + -193 450 callgsubr + hstem + 30 63 177 64 vstem + 182 387 rmoveto + 82 70 62 106 108 -70 61 -82 -83 -69 -61 -108 -106 69 -62 83 hvcurveto + 51 vmoveto + -55 -34 48 69 71 34 47 55 55 33 -47 -71 -69 -33 -48 -55 hvcurveto + endchar + + + 248 callgsubr + 541 -82 -541 95 callgsubr + return + + + 62 vlineto + 64 28 35 48 24 20 -4 -9 21 vhcurveto + 17 62 rlineto + 11 -24 -33 7 -32 hhcurveto + -101 -50 -63 -101 hvcurveto + -64 vlineto + -66 -5 rlineto + return + + + 586 198 70 -480 -70 198 hlineto + return + + + 27 0 207 callgsubr + return + + + -295 182 callsubr + return + + + 33 10 callgsubr + 3 -20 hstemhm + 154 83 hintmask 11101000 + 154 -75 callsubr + -118 -192 rmoveto + hintmask 11011000 + 58 callsubr + + + 12 15 19 hvcurveto + -21 41 rlineto + -8 return + + + hstem + 45 452 79 callgsubr + return + + + 83 -34 -41 21 -53 hhcurveto + -10 -11 -2 -3 -8 hvcurveto + 15 -77 rlineto + 2 6 3 0 7 hhcurveto + 26 22 -10 -56 22 hvcurveto + 39 -97 rlineto + return + + + -3 218 callgsubr + return + + + -12 219 callgsubr + return + + + -12 230 callgsubr + return + + + -23 198 callgsubr + return + + + 16 callsubr + 116 -32 rmoveto + 68 197 -66 14 -45 -201 rlineto + 153 22 6 callsubr + + + -38 -29 42 -59 hhcurveto + -47 -20 -37 -52 -5 hvcurveto + 43 -4 rlineto + 29 5 8 13 20 hhcurveto + return + + + hstem + 226 84 vstem + 122 callgsubr + return + + + 71 -38 260 callsubr + return + + + hstem + 90 83 248 106 callgsubr + return + + + 97 callsubr + hstemhm + 90 79 return + + + 40 callgsubr + 101 57 hstemhm + 90 83 -43 268 298 callsubr + hintmask 11110100 + 40 101 17 callgsubr + return + + + rmoveto + 32 27 26 38 36 448 callgsubr + -36 -38 27 -26 33 hvcurveto + endchar + + + 69 372 69 return + + + -9 -47 rlineto + 45 -3 22 -20 -34 vvcurveto + -28 -19 -20 -24 -14 vhcurveto + 189 -38 rmoveto + 55 36 callgsubr + return + + + -17 -30 -29 -44 -18 -30 rrcurveto + -4 hlineto + 4 62 4 65 52 vvcurveto + 202 -80 vlineto + return + + + -312 290 callgsubr + return + + + 226 callsubr + vhcurveto + return + + + 21 482 callsubr + return + + + -78 249 callsubr + 215 callsubr + endchar + + + 160 rmoveto + 149 225 18 32 18 34 16 32 rlinecurve + 4 hlineto + -2 -34 -3 -52 -34 vvcurveto + -203 vlineto + -234 vmoveto + 78 168 87 66 -87 414 -92 hlineto + -273 -425 rlineto + -55 287 vlineto + endchar + + + 84 hintmask 11101000 + -63 callgsubr + hintmask 11110000 + return + + + -44 182 callsubr + hstem + 90 83 231 callgsubr + endchar + + + 90 hmoveto + 183 hlineto + 124 88 48 103 71 -47 39 -73 14 hvcurveto + 4 vlineto + return + + + 396 213 callsubr + return + + + -67 -50 -36 -46 -46 hvcurveto + -3 hlineto + return + + + 164 69 -411 -69 164 return + + + 139 204 callsubr + return + + + 260 callgsubr + hvcurveto + return + + + 79 hintmask 11110010 + -91 callgsubr + hintmask 11101100 + return + + + 201 callsubr + endchar + + + 43 -59 callsubr + + + hhcurveto + -30 callgsubr + hvcurveto + return + + + 268 callgsubr + 240 47 -12 -20 return + + + -226 40 90 38 return + + + 59 151 65 return + + + vstem + -63 callgsubr + return + + + rmoveto + -33 callgsubr + return + + + -39 -22 -45 hhcurveto + return + + + 14 callgsubr + 112 47 hstem + 3 538 278 callsubr + return + + + 156 callgsubr + hvcurveto + return + + + 143 29 callgsubr + 50 308 callgsubr + return + + + 0 97 callsubr + return + + + -8 rlineto + 103 callsubr + return + + + rmoveto + 69 29 58 77 3 hvcurveto + return + + + hmoveto + 233 61 hlineto + return + + + -77 -106 -117 return + + + rmoveto + 77 127 158 34 145 hhcurveto + 145 158 -34 -77 127 hvcurveto + 24 42 rlineto + 82 -134 -151 45 -169 hhcurveto + -169 -151 -45 -82 -134 hvcurveto + endchar + + + -60 -111 rlineto + -4 hlineto + 4 52 7 66 56 vvcurveto + 243 -77 vlineto + return + + + 328 callgsubr + -24 14 -19 20 28 vvcurveto + 34 22 20 45 3 vhcurveto + return + + + 219 callsubr + -12 -20 return + + + hstem + 309 84 vstem + 212 -12 rmoveto + 128 53 92 113 hvcurveto + 463 -84 -455 vlineto + -100 -35 -40 -70 -47 -37 22 52 -29 vhcurveto + -60 -42 rlineto + -69 38 60 -36 83 hhcurveto + return + + + -110 432 callsubr + vstem + 90 hmoveto + 83 448 245 70 -328 hlineto + return + + + rmoveto + 24 73 21 72 20 76 rrcurveto + 4 hlineto + 21 -76 21 -72 24 -73 31 -100 rcurveline + -197 hlineto + return + + + 233 callgsubr + -4 return + + + -21 427 71 return + + + -17 -201 55 -55 139 83 273 callgsubr + -79 62 3 47 return + + + 95 callgsubr + endchar + + + rmoveto + -29 -23 19 35 34 23 20 29 27 24 -20 -34 -35 -24 -19 -27 hvcurveto + -36 357 callsubr + endchar + + + 396 425 callgsubr + return + + + 59 -12 258 callgsubr + return + + + 457 callgsubr + -24 42 return + + + vvcurveto + -57 43 -30 53 return + + + -12 rmoveto + 165 116 132 211 return + + + 394 callgsubr + 46 return + + + 119 -93.5 68 return + + + -133 0 67 352 67 hstem + 31 368 vstem + 55 callsubr + return + + + -56 -42 84 -79 hhcurveto + -43 -46 -26 -64 -36 hvcurveto + 46 -33 rlineto + 43 23 25 18 29 hhcurveto + return + + + 208 callsubr + -41 callgsubr + return + + + hlineto + -43 -88 425 callsubr + 8 -40 rlineto + 83 callsubr + hintmask 11110000 + 28 64 rlineto + return + + + 245 callgsubr + hvcurveto + return + + + 310 -72 vlineto + -46 -116 -28 -78 rlineto + -4 hlineto + -28 78 return + + + -71 53 -28 58 -14 vhcurveto + return + + + -84 -227 hlineto + -5 -22 -27 -3 -38 hhcurveto + -86 -45 27 82 hvcurveto + 126 -82 -126 vlineto + -130 77 -45 126 42 30 3 5 25 vhcurveto + endchar + + + 64.5 -64.5 67 return + + + 32 15 -35 48 hhcurveto + return + + + 50 20 30 41 47 vvcurveto + 89 -82 42 -95 -70 -54 -21 -33 -47 vhcurveto + 35 -54 rlineto + 28 39 37 15 56 hhcurveto + 59 42 -25 -49 -48 -39 -29 -78 hvcurveto + return + + + 456 callgsubr + 318 callsubr + vhcurveto + -16 62 rlineto + -6 -16 -22 -7 -17 hhcurveto + -56 -20 34 60 hvcurveto + 270 132 67 -132 136 vlineto + return + + + -31 callsubr + 620 -82 -614 225 callgsubr + return + + + vmoveto + -61 callsubr + + + 3 -9 -14 3 -12 hhcurveto + -52 -32 -18 -76 -45 hvcurveto + -77 -131 rlineto + -88 hlineto + return + + + 90 247 callgsubr + return + + + -12 288 callsubr + return + + + -76 -5 rlineto + -62 72 -269 vlineto + return + + + 20 -26 -26 -19 -20 return + + + -12 297 callgsubr + return + + + -17 21 273 callgsubr + -14 47 return + + + 70 402 70 return + + + rmoveto + 36 vlineto + -53 -1 -20 26 37 vvcurveto + 36 20 26 53 -1 vhcurveto + 36 vlineto + -84 3 -44 -40 -60 vvcurveto + -61 44 -40 84 3 vhcurveto + endchar + + + vvcurveto + 272 callgsubr + return + + + -192 rmoveto + 55 419 callgsubr + + + 45 -10 45 -10 225 callsubr + return + + + -12 68 -35 -23 callsubr + return + + + -215 259 callsubr + return + + + 41 23 -50 64 hhcurveto + endchar + + + 0 342 callsubr + return + + + -21 486 -20 return + + + 248 -12 rmoveto + return + + + -161 106 -93 119 vhcurveto + 68 vmoveto + -83 -57 75 111 112 57 76 83 84 56 -76 -112 -111 -56 -75 -84 hvcurveto + return + + + 30 432 callsubr + 242 83 346 callsubr + 448 242 -448 83 518 -408 hlineto + endchar + + + -266 -2 callgsubr + return + + + -69 296 callsubr + return + + + hmoveto + 83 309 return + + + rlineto + -72 hlineto + -93 return + + + 351 callsubr + 97 166 150 -67 97 -126 -54 -54 -29 -39 -44 hvcurveto + 2 88 rlineto + 194 -82 vlineto + return + + + rmoveto + 84 -3 44 40 61 vvcurveto + 60 -44 40 -84 -3 vhcurveto + -36 vlineto + 53 1 20 -26 -36 vvcurveto + -37 -20 -26 -53 1 vhcurveto + endchar + + + 178 callsubr + endchar + + + 262 callgsubr + 119 106 93 161 90 -32 69 -50 43 hvcurveto + return + + + 39 callgsubr + 98 return + + + 214 callsubr + 111 60 24 60 -9 -20 24 -17 callsubr + return + + + 131 callsubr + endchar + + + 79 59 callgsubr + + + -217 248 callgsubr + return + + + 26 315 callsubr + return + + + vstem + 132 callgsubr + return + + + rlineto + -81 hlineto + -91 -265 -14 -48 -17 -48 -14 367 callgsubr + -15 45 -17 48 -14 48 -91 265 rcurveline + -85 hlineto + return + + + -16 558 212 hstem + 238 128 vstem + 295 558 118 callsubr + + + vlineto + 59 14 37 56 14 12 -5 -4 10 vhcurveto + 16 63 rlineto + 7 return + + + 43 46 26 63 36 hvcurveto + -46 34 rlineto + -43 -23 -25 -18 -29 hhcurveto + return + + + 62 -53.5 53.5 return + + + -12 -2 callgsubr + return + + + hlineto + 2 12 1 16 18 vvcurveto + 139 return + + + 82 hmoveto + 82 240 callgsubr + return + + + -143 182 callsubr + return + + + 230 callgsubr + hstem + 46 85 return + + + -84 82 -47 119 vhcurveto + return + + + -56 40 -29 51 vhcurveto + return + + + hintmask 11111000 + 299 callgsubr + return + + + 46 41 50 70 98 vvcurveto + 145 -96 107 -146 -145 -96 -107 -145 -98 50 -70 46 -41 vhcurveto + -3 vlineto + return + + + hstemhm + 47 85 258 -76 callsubr + return + + + -40 20 -54 hhcurveto + return + + + -17 314 callgsubr + return + + + hlineto + -10 -136 rlineto + return + + + 50 hhcurveto + 64 28 return + + + hintmask 11111000 + -47 callsubr + return + + + hstem + 51 793 vstem + 51 -60 rmoveto + 793 2 hlineto + -394 823 rlineto + -4 hlineto + -395 -823 rlineto + return + + + 71 134 31 callgsubr + -4 -66 -6 -70 -69 vvcurveto + -343 82 656 -88 vlineto + -241 -414 rlineto + return + + + -86 callsubr + 148 return + + + 350 callsubr + hintmask 11000000 + 94 return + + + -98 -158 -162 379 callsubr + return + + + 311 112 hlineto + 202 -311 rlineto + return + + + 90 hmoveto + 79 343 hlineto + return + + + 69 -36 -21 429 69 return + + + 224 -12 rmoveto + return + + + 302 -79 -303 vlineto + -42 callgsubr + return + + + 65 -86 callsubr + return + + + 416 callsubr + -13 -5 -16 hhcurveto + -24 -22 15 31 hvcurveto + return + + + 385 -80 -387 vlineto + -64 callgsubr + return + + + 330 callgsubr + endchar + + + 51 312 397 callsubr + vstem + 184 return + + + 67 132 80 -12 -20 27 -20 return + + + hhcurveto + 7 3 0 -2 6 hvcurveto + return + + + hstem + 82 354 callsubr + return + + + -170 57 113 return + + + 30 33 9 9 27 return + + + 277 callsubr + hintmask 11001100 + 14 77 rlineto + hintmask 11100100 + 3 -7 407 callsubr + return + + + 152 callgsubr + 190 116 callsubr + 46 85 12 47 return + + + 605 -35 callgsubr + return + + + -9 -47 rlineto + 45 -3 22 -20 -34 vvcurveto + -28 -19 -20 -24 -14 vhcurveto + 139 -27 452 callgsubr + return + + + 108 callgsubr + 178 116 callsubr + 64 78 -39 47 return + + + 42 100 -105 callsubr + + + 242 223 57 hstem + 41 718 vstem + 41 223 rmoveto + 718 57 -718 hlineto + endchar + + + 27 17 5 7 return + + + 34 vhcurveto + -80 hlineto + return + + + 84 hintmask 11101000 + 122 callgsubr + hintmask 11110000 + 41 return + + + 40 -588 rmoveto + -48 callsubr + return + + + 157.5 -20 hstem + 194.5 65 vstem + 192 -80 rmoveto + 70 hlineto + -5 return + + + 307 callgsubr + vlineto + hintmask 11111000 + -73 585 return + + + 21 -21 311 431 callsubr + return + + + 60 24 60 hstemhm + -173 55 236 55 vstemhm + 72 return + + + 21 -21 219 314 callsubr + return + + + 98 206 callsubr + return + + + 124 callgsubr + hintmask 10110110 + return + + + -172 475 callgsubr + return + + + 4 -10 -14 2 -12 hhcurveto + return + + + -11 367 callgsubr + return + + + vhcurveto + -7 -39 rlineto + 49 return + + + hvcurveto + -43 -33 rlineto + -44 return + + + 71 515 70 return + + + -21 200 67 266 39 16 68 -64 255 callsubr + return + + + 162 callgsubr + 239 454 callgsubr + return + + + 607 16 callsubr + return + + + vstem + 90 hmoveto + 83 return + + + 68 hstemhm + 52 80 25 417 callsubr + return + + + hstem + 82 82 vstem + 286 callsubr + return + + + 46 179 61 hstem + 220 58 vstem + 109 return + + + 47 hstemhm + 94 62 -62 179 return + + + 297 -12 rmoveto + 111 99 return + + + rmoveto + 40 hlineto + 14 155 rlineto + return + + + 29 153 callgsubr + return + + + 82 455 callgsubr + return + + + -206 rmoveto + 25 return + + + -38 callsubr + 136 77 return + + + vmoveto + 55 42 36 54 55 -42 36 -55 -56 -41 -36 -55 -54 41 -36 56 hvcurveto + return + + + 916 -42 callsubr + return + + + -81 -419 -172 419 -79 -419 -171 419 -82 hlineto + endchar + + + rmoveto + 366 callsubr + -221 vmoveto + 366 callsubr + endchar + + + -80 -448 -177 448 -80 -448 -176 448 -80 hlineto + endchar + + + -12 65 275 62 191 69 return + + + 400 callgsubr + 91 return + + + 546 hstem + 65 62 vstem + 153 return + + + 82 hstem + 172 64 vstem + 172 return + + + 307 53 -307 hlineto + return + + + 61 10 61 hstemhm + return + + + 191 callgsubr + 79 152 callsubr + 46 85 return + + + hmoveto + 163 hlineto + 116 77 47 108 106 -77 46 -116 hvcurveto + -81 return + + + rmoveto + 68 hlineto + 94 92 -30 28 -96 -73 rlineto + -4 hlineto + -96 73 -30 -28 rlineto + return + + + 123 callgsubr + endchar + + + 126 0 81 328 109 0 -20 return + + + 55 293 54 hstem + 237 63 vstem + 52 return + + + 62 140 131 -98 54 -144 hvcurveto + return + + + vlineto + 82 39 -27 -61 -61 -39 -28 -82 hvcurveto + return + + + 21 197 callsubr + return + + + 17 456 callsubr + return + + + 74 -12 -20 22 -20 return + + + 79 -92 122 hvcurveto + return + + + 98 108 98 return + + + 56 242 56 return + + + 79 45 -27 -55 -54 -55 -33 -66 -49 -48 12 37 -45 hvcurveto + -35 -53 return + + + 89 51 -30 -63 -61 -55 -34 -68 -63 -47 21 43 -48 hvcurveto + -42 -56 return + + + hstemhm + 47 85 258 83 342 callgsubr + 318 callgsubr + return + + + 43 -2 44 -7 26 vhcurveto + -81 hlineto + 8 -43 1 -52 -38 vvcurveto + endchar + + + 181 callsubr + endchar + + + 74 180 84 return + + + -21 656 -20 return + + + 194 -12 rmoveto + return + + + 77 25 hlineto + 1 64 10 51 29 39 15 21 15 20 15 18 return + + + -38 -59 -53 vhcurveto + 47 -46 rlineto + 43 37 return + + + -296 -12 68 -35 260 callsubr + return + + + 172 callsubr + hstemhm + 75 83 return + + + 259 hstem + 81.5 85 return + + + -40 21 -21 196 60 196 66 return + + + -113 -12 73 -44 -21 522 -20 return + + + 51 hstem + 436 callgsubr + return + + + -12 rmoveto + 124 82 75 95 return + + + -12 306 callsubr + return + + + hstem + -142 91 102 91 vstem + return + + + hvcurveto + 4 vlineto + hintmask 11011000 + return + + + 95 hstem + 43 91 vstem + 89 return + + + 78 -78 80 251 78 return + + + 47 27 51 -1 50 hstemhm + return + + + 67 hstemhm + 96 83 -74 74 return + + + 90 hmoveto + 438 callsubr + return + + + -11 2 -10 hhcurveto + -53 return + + + vhcurveto + -64 -30 rlineto + 8 return + + + -23 45 rlineto + -9 -12 return + + + 70 460 -20 return + + + hlineto + hintmask 11000000 + -178 -47 hlineto + hintmask 10100000 + 116 hlineto + endchar + + + -79 callgsubr + hintmask 1101110100000000 + return + + + -104 -26 -108 -118 -77 -133 rrcurveto + -4 152 hlineto + return + + + 65 26 57 71 4 hvcurveto + -55 9 rlineto + -44 -3 -14 -33 -29 return + + + rmoveto + hintmask 10110000 + 58 callsubr + + + 313 callgsubr + -12 return + + + 61 132 -79 callgsubr + return + + + hlineto + -34 -23 -41 -48 -54 386 callsubr + + + 13 15 19 hvcurveto + return + + + hvcurveto + 46 51 rlineto + return + + + 100 hstemhm + 50 199 -82 82 hintmask 11010000 + 167 hmoveto + 82 return + + + 334 callsubr + hstemhm + return + + + 491 callgsubr + 137 60 return + + + -83 380 callgsubr + 45 callgsubr + return + + + rlineto + 71 callgsubr + return + + + -118 -26 -22 -17 -29 hhcurveto + -8 -6 2 2 -8 hvcurveto + return + + + -303 39 callgsubr + 86 68 -39 -21 716 -20 return + + + 489 callsubr + hstem + 51 79 return + + + -18 callgsubr + 23 73 return + + + 558 rmoveto + 57 11 -39 201 -85 -15 rlineto + endchar + + + 68 209 80 -12 -20 26 -20 return + + + 21 -21 448 70 hstem + 90 83 return + + + -44 -12 78 -47 -21 658 -20 return + + + vhcurveto + -4 vlineto + hintmask 11100100 + return + + + 41 132 51 hstemhm + return + + + 39 91 hvcurveto + 297 return + + + 573 208 hstem + return + + + 77 245 hlineto + return + + + 57 395 rmoveto + return + + + -61 192 62 152 62 hstem + 34 429 vstem + return + + + 37 123 37 hstem + -110 53 114 53 vstem + return + + + 137 -78 85 -112 -111 -78 -84 -138 return + + + 39 25 37 40 29 vhcurveto + 486 -82 -486 vlineto + return + + + vstem + 90 hmoveto + 320 69 -237 449 -83 hlineto + return + + + vlineto + 82 40 -27 -61 -61 -40 -28 -82 hvcurveto + endchar + + + vlineto + -66 -5 rlineto + -62 66 return + + + 337 -54 793 hstem + return + + + 111 99 97 165 return + + + 436 callsubr + -83 return + + + 41 24 34 41 32 vhcurveto + return + + + -212 59 142 72 return + + + 66 410 66 return + + + 50 192 50 return + + + -26 vvcurveto + -21 -20 return + + + 62 173 63 return + + + 25 -6 30 hhcurveto + return + + + rmoveto + hintmask 11010000 + 179 47 hlineto + hintmask 11100000 + -117 return + + + 70 hstemhm + 112 83 hintmask 10111000 + 112 hmoveto + 83 return + + + 3 4 0 5 hhcurveto + -27 -25 -24 -40 -44 vvcurveto + return + + + 45.5 -45.5 48 return + + + 277 -79 -277 -90 vlineto + -76 167 rlineto + return + + + 316 callsubr + 712 -82 hlineto + return + + + 87 56 90 70 -52 37 -56 15 hvcurveto + 4 vlineto + return + + + vstem + 34 299 rmoveto + 338 callgsubr + return + + + 200 -73 -200 -77 vlineto + -44 108 rlineto + return + + + 0 68 252 67 269 -20 hstem + 90 83 return + + + -296 199 callgsubr + 239 51 hstem + return + + + 17 callsubr + hstemhm + 144 172 return + + + -32 vlineto + -87 -5 rlineto + -54 119 vlineto + endchar + + + 56 79 83 80 56 hintmask 11010100 + return + + + 80 vstem + 40 hmoveto + 412 71 return + + + 177 callsubr + hstemhm + 47 85 return + + + 69 155 61 187 70 return + + + -12 68 -56 382 callgsubr + return + + + 83 305 84 170 77 return + + + rmoveto + -32 -43 14 37 -44 hvcurveto + return + + + hvcurveto + 4 vlineto + hintmask 11111000 + return + + + 352 vlineto + 50 45 return + + + -38 47 hstemhm + -13 64 return + + + -255 -152 47 return + + + 72 158 72 return + + + -21 518 -20 return + + + -102 -16 callsubr + hstem + return + + + hstemhm + 87 83 4 420 callgsubr + 8 80 return + + + -25 -144 -23 -131 -27 -137 rrcurveto + return + + + 158 21 268 callgsubr + 275 -20 return + + + rrcurveto + 51 -411 -71 318 vlineto + -126 return + + + 179 -82 hlineto + 82 -420 rmoveto + 177 return + + + 209 callgsubr + 227 51 return + + + 181 callgsubr + 656 -20 return + + + -30 vvcurveto + -27 -13 -18 -35 -43 vhcurveto + endchar + + + 705 51 hstem + return + + + rlineto + 35 -43 -37 return + + + 298 -12 rmoveto + return + + + 187 rlineto + 52 return + + + 53 hstem + 155 56 vstem + 155 return + + + -80 vhcurveto + -44 -47 26 hlineto + 54 14 return + + + -21 -109 -20 -103 -23 -105 rrcurveto + return + + + -152 -11 -240 rrcurveto + endchar + + + 56 42 -84 79 hhcurveto + return + + + -46.5 return + + + -231 55 197 -21 return + + + 66 372 hstem + return + + + 68 178 68 return + + + 43 188 43 return + + + hlineto + hintmask 1101010100000000 + return + + + hlineto + -69 -5 rlineto + -44 return + + + 49 156 42 hstemhm + return + + + 246 -12 51 return + + + -83 vlineto + endchar + + + 63 23 35 56 69 vvcurveto + 105 -85 63 -123 -80 -74 -32 -46 -47 vhcurveto + 45 -56 rlineto + 37 40 53 24 61 hhcurveto + 73 55 -36 -69 -74 -48 -39 -115 hvcurveto + -54 -64 74 hlineto + return + + + rmoveto + 24 17 18 37 25 25 -10 -19 26 vhcurveto + -33 -10 -22 -25 -42 hhcurveto + -33 -23 20 25 hvcurveto + return + + + -65 -26 -56 -72 -4 hvcurveto + 55 -9 rlineto + 46 3 14 31 29 hhcurveto + return + + + -49 -17 -16 5 4 -13 vhcurveto + -16 -66 rlineto + return + + + rmoveto + 43 21 -92 152 -56 -32 rlineto + return + + + hmoveto + 82 136 115 59 -115 return + + + 21 -21 176 66 308 88 hstem + return + + + 98 hstemhm + 18 90 -18 83 -18 90 return + + + 90 82 220 81 220 82 return + + + 62 hstem + 216 65 vstem + 216 return + + + hintmask 1111110100000000 + return + + + hintmask 1111110010000000 + return + + + hhcurveto + hintmask 11011000 + return + + + -61 21 -21 return + + + -61 -12 66 return + + + 47 hstemhm + 120 72 -13 90 hintmask 11110000 + 31 return + + + + + + 95 0 58 542 60 hstem + 89 65 344 67 vstem + 89 hmoveto + 476 660 -476 hlineto + 108 -602 rmoveto + 74 132 54 103 31 callgsubr + 52 -103 73 -132 rlineto + -129 329 rmoveto + -50 94 -66 119 rlineto + 235 hlineto + -66 -119 -49 -94 rlineto + -175 -277 rmoveto + 462 vlineto + 127 -232 rlineto + 217 -230 rmoveto + -126 230 126 232 rlineto + endchar + + + -40 callsubr + endchar + + + -39 callgsubr + endchar + + + -195 522 49 205 51 hstem + -1 366 vstem + 137 633 rmoveto + 15 48 14 46 14 49 rrcurveto + 2 hlineto + 14 -47 14 -48 15 -48 19 -62 rcurveline + -126 hlineto + -119 -176 rmoveto + 64 hlineto + 39 127 rlineto + 157 hlineto + 39 -127 rlineto + 67 hlineto + -147 432 rlineto + -72 hlineto + endchar + + + 23 callgsubr + endchar + + + 24 callsubr + endchar + + + -40 callsubr + 29 41 -89 callsubr + + + -39 callgsubr + 30 63 -89 callsubr + + + 14 callgsubr + 49 53 hstem + 125 453 callsubr + 47 callsubr + -50 8 rlineto + -47 -8 -31 -37 -57 hhcurveto + -57 -31 37 47 -8 hvcurveto + -50 -8 rlineto + -70 8 45 -59 93 hhcurveto + endchar + + + 30 callgsubr + 71 53 hstem + 89 453 callsubr + 18 callgsubr + 242 callgsubr + + + 14 callgsubr + 136 46 hstem + 3 538 -96 callgsubr + -66 195 callsubr + + + 30 callgsubr + 158 46 hstem + 3 465 -94 callsubr + -65 195 callgsubr + + + 14 callgsubr + 59 98 hstem + 119 380 callsubr + -96 callgsubr + -57 59 -98 callgsubr + + + 30 callgsubr + 81 98 hstem + 83 380 callsubr + -94 callsubr + -56 81 -98 callgsubr + + + -40 callsubr + 63 41 -24 callsubr + + + -39 callgsubr + 64 63 -24 callsubr + + + -40 callsubr + endchar + + + -39 callgsubr + endchar + + + 175 21 98 callsubr + hstem + 560 83 -94 callsubr + 372 -518 446 callgsubr + + + 8 27 callgsubr + 3 -20 hstemhm + 6 557 hintmask 11011000 + 225 22 callsubr + -186 -192 rmoveto + hintmask 11011000 + 58 callsubr + + + 14 callgsubr + 79 57 hstemhm + 3 538 -404 268 hintmask 11111000 + -104 callsubr + hintmask 11110100 + -88 275 callsubr + + + 30 callgsubr + 101 57 hstemhm + 3 465 -367 268 hintmask 11111000 + -100 callsubr + hintmask 11110100 + -87 386 callgsubr + + + -14 -212 59 174 -23 callsubr + hstem + 396 65 278 callsubr + 320 -479 43 callgsubr + -17 hhcurveto + -24 -22 15 31 42 33 46 47 19 hvcurveto + -22 callgsubr + -222 -656 rlineto + 85 hlineto + 63 200 rlineto + 239 hlineto + 62 -200 rlineto + 19 418 callsubr + + + -14 -212 59 353 67 321 68 hstem + 188 65 vstem + 284 51 callgsubr + -81 579 -104 callgsubr + endchar + + + -88 -212 59 174 98 callsubr + hstem + 323 65 120 callgsubr + 263 -420 rmoveto + 26 34 419 callsubr + -22 198 callgsubr + -17 hhcurveto + -24 -22 15 31 42 33 46 47 19 hvcurveto + 63 callsubr + -185 -518 rlineto + 84 hlineto + 48 146 rlineto + 197 hlineto + 48 -146 rlineto + 18 418 callsubr + + + -88 -212 59 299 62 243 67 hstem + 153 65 vstem + 249 51 callgsubr + -69 494 -100 callgsubr + endchar + + + 14 callgsubr + 43 36 108 37 hstem + 174 45 103 46 18 callsubr + 79 222 callsubr + + + 30 callgsubr + 65 36 108 37 hstem + 138 45 103 46 18 callgsubr + 101 222 callsubr + + + 14 callgsubr + 53 367 callsubr + 94 381 callsubr + hintmask 11101110 + -104 callsubr + hintmask 11111110 + 121 53 -35 callgsubr + hintmask 11101110 + 33 callsubr + hintmask 11111110 + 136 callgsubr + + + 30 callgsubr + 75 367 callsubr + 58 381 callsubr + hintmask 11101110 + -100 callsubr + hintmask 11111110 + 122 75 -35 callgsubr + hintmask 11101110 + 33 callsubr + hintmask 11111110 + 136 callgsubr + + + -9 callgsubr + + + 0 callsubr + + + -166 395 48 156 45 134 49 hstemhm + 57 63 162 61 -37 61 hintmask 11110100 + 439 callsubr + 144 hlineto + 97 69 41 86 58 -36 34 -64 11 hvcurveto + 2 vlineto + hintmask 11111000 + 51 14 25 38 42 vvcurveto + 77 -63 29 -89 vhcurveto + -134 hlineto + 63 -183 rmoveto + 134 64 vlineto + 65 33 -19 -45 -45 -29 -25 -71 hvcurveto + -62 -201 rmoveto + 156 73 vlineto + hintmask 11110100 + 73 40 -24 -50 -57 -41 -25 -72 hvcurveto + endchar + + + -9 callgsubr + + + 0 callsubr + + + 13 166 callsubr + -10 callgsubr + endchar + + + 41 callsubr + endchar + + + -179 387 54 339 55 hstem + 32 65 vstem + 225 387 rmoveto + 57 44 22 40 34 hvcurveto + -35 38 rlineto + -29 -26 -31 -17 -40 hhcurveto + -80 -51 65 105 103 54 66 80 34 27 -15 -23 24 hvcurveto + 35 39 rlineto + 29 -26 -42 25 -54 hhcurveto + -111 -86 -87 -139 -141 83 -81 110 hvcurveto + endchar + + + 13 166 callsubr + -10 callgsubr + -26 709 -89 callsubr + + + 41 callsubr + -20 593 -89 callsubr + + + 13 166 callsubr + 38 47 -10 callgsubr + -52 718 -83 callgsubr + + + -55 155 callgsubr + 60 47 hstem + 52 85 -27 callsubr + -46 602 -83 callgsubr + + + 13 -226 40 175 72 534 73 hstem + 52 86 219 64 vstem + 256 -226 rmoveto + 424 callgsubr + 54 69 8 54 33 45 52 rlinecurve + -46 52 rlineto + -45 callgsubr + -205 112 -124 153 -10 hvcurveto + -37 -77 425 callsubr + endchar + + + -55 -226 40 175 69 402 70 hstem + 52 85 171 64 vstem + 207 -226 rmoveto + 424 callgsubr + 53 61 5 48 26 40 43 rlinecurve + -45 callsubr + -161 91 -95 125 -13 hvcurveto + -37 -77 425 callsubr + endchar + + + 13 166 callsubr + 124 46 -10 callgsubr + -121 711 -59 callsubr + + + -55 155 callgsubr + 146 46 hstem + 52 85 -27 callsubr + -115 595 -59 callsubr + + + 13 166 callsubr + 46 107 hstem + 52 86 134 114 -34 callgsubr + -9 726 rmoveto + -84 callgsubr + + + -55 155 callgsubr + 68 107 hstem + 52 85 101 114 -27 callsubr + -3 610 rmoveto + -84 callgsubr + + + 20 callgsubr + + + 19 callsubr + + + 57 0 68 520 68 173 callgsubr + endchar + + + -3 0 65 387 66 hstem + 90 83 244 201 callgsubr + endchar + + + -147 395 50 331 51 hstem + 57 63 193 65 340 callgsubr + 115 hlineto + 132 74 78 140 138 -74 76 -135 hvcurveto + -112 hlineto + 63 -382 rmoveto + 331 46 vlineto + 97 50 -55 -108 -109 -49 -59 -96 hvcurveto + endchar + + + 57 0 68 520 68 50 47 173 callgsubr + 17 638 -83 callgsubr + + + -3 0 65 387 66 72 47 hstem + 90 83 244 201 callgsubr + 5 525 -83 callgsubr + + + 92 callgsubr + + + 102 callgsubr + + + 30 0 71 510 75 hstem + 30 528 vstem + 30 hmoveto + 528 50 hlineto + -216 606 rlineto + -96 hlineto + -216 -606 rlineto + 90 21 rmoveto + 102 300 69 210 31 callgsubr + 69 -210 102 -300 rlineto + endchar + + + 10 callsubr + endchar + + + 40 callgsubr + 9 callsubr + endchar + + + -207 395 52 148 52 127 53 hstem + 57 63 340 callgsubr + 262 52 -199 148 164 52 -164 127 193 53 -256 hlineto + endchar + + + 10 callsubr + 183 41 -89 callsubr + + + 40 callgsubr + 9 callsubr + 157 63 -89 callsubr + + + 40 callsubr + 49 53 hstemhm + 90 83 -29 453 callsubr + 291 callsubr + 200 149 callgsubr + + + 40 callgsubr + 71 53 hstemhm + 90 83 -55 453 callsubr + 298 callsubr + hintmask 11110110 + 174 242 callgsubr + + + 40 callsubr + 50 47 hstem + 90 83 -36 callsubr + 157 50 -83 callgsubr + + + 40 callgsubr + 72 47 9 callsubr + 131 72 -83 callgsubr + + + 40 callsubr + 136 46 hstem + 90 83 -36 callsubr + 88 195 callsubr + + + 40 callgsubr + 158 46 9 callsubr + 62 195 callgsubr + + + 40 callsubr + 59 98 hstemhm + 90 83 -35 380 callsubr + hintmask 11101000 + 299 callgsubr + 97 59 -98 callgsubr + + + 40 callgsubr + 81 98 hstemhm + 90 83 -61 380 callsubr + hintmask 11101000 + -47 callsubr + hintmask 11110110 + 71 81 -98 callgsubr + + + 40 callsubr + 58 439 callgsubr + 60 114 -36 callsubr + 200 58 rmoveto + -84 callgsubr + + + 40 callgsubr + 80 439 callgsubr + 34 114 -28 callsubr + 174 80 rmoveto + -84 callgsubr + + + 10 callsubr + 217 41 -24 callsubr + + + 40 callgsubr + 9 callsubr + 191 63 -24 callsubr + + + 40 callsubr + 79 57 hstemhm + 90 83 -17 268 298 callgsubr + hintmask 11110100 + 66 275 callsubr + + + 175 callsubr + endchar + + + -31 380 callgsubr + 376 callgsubr + 145 65 vstem + 414 113 callsubr + 52 46 49 46 6 hvcurveto + 3 -84 callsubr + -656 303 hlineto + -38 -24 -37 -47 -54 386 callsubr + + + 104 callgsubr + endchar + + + 424 callsubr + hstem + 90 83 94 64 vstem + 362 72 callgsubr + -24 15 31 53 46 48 46 6 hvcurveto + 3 66 -253 173 206 63 -206 150 243 66 -326 -518 251 hlineto + -37 -24 -37 -46 -55 vvcurveto + -57 42 -30 53 vhcurveto + endchar + + + 424 callsubr + hstemhm + 90 83 11 65 hintmask 01111000 + 90 hmoveto + hintmask 11111100 + 162 hlineto + -33 -25 -35 -48 -52 226 callsubr + 26 34 13 15 20 vhcurveto + 168 callsubr + -16 hhcurveto + -23 -24 15 31 37 23 39 41 31 hvcurveto + 113 66 hlineto + hintmask 01111000 + -70 callgsubr + endchar + + + 10 callsubr + endchar + + + 40 callgsubr + 9 callsubr + endchar + + + 161 callsubr + + + 127 callgsubr + + + 127 callsubr + + + 299 21 -21 235 72 211 -20 hstem + 90 83 248 83 180 106 callgsubr + 594 -518 446 callgsubr + + + 148 callgsubr + + + 92 callgsubr + + + 102 callgsubr + + + 525 callsubr + 181 45 -45 48 67 46.5 501 callsubr + 49 185 66 hstemhm + 81 85 hintmask 10101110 + 319 -12 rmoveto + 73 55 35 58 44 hvcurveto + -49 44 rlineto + -46 -34 -35 -25 -49 hhcurveto + -82 -53 68 113 -17 hvcurveto + 213 48 -218 hlineto + -1 12 0 13 13 vvcurveto + 10 0 10 1 9 vhcurveto + 258 49 -254 hlineto + 115 17 54 70 88 hhcurveto + 42 33 -24 -35 28 hvcurveto + 49 47 rlineto + 44 -35 -54 34 -60 hhcurveto + hintmask 10110110 + -131 -92 -94 -157 -23 hvcurveto + -64 -5 rlineto + hintmask 11001110 + -44 59 vlineto + -1 -10 0 -11 -11 vvcurveto + -12 0 -12 1 -12 vhcurveto + -59 -4 rlineto + hintmask 10101110 + -43 64 vlineto + -156 23 89 -91 120 hhcurveto + endchar + + + 516 callgsubr + 108 callsubr + 294 250 70 -250 222 117 callsubr + hlineto + endchar + + + 484 callgsubr + 108 callsubr + 223 207 64 -207 163 244 68 -327 hlineto + endchar + + + -228 584 52 138 53 hstem + 57 63 340 callgsubr + 63 189 165 52 -165 138 194 53 -257 hlineto + endchar + + + 100 callgsubr + endchar + + + 104 callsubr + endchar + + + -147 387 54 130 51 159 54 hstem + 32 65 216 57 vstem + 232 387 rmoveto + 59 49 22 28 30 hvcurveto + 185 -146 -51 89 -107 vlineto + -15 -16 -29 -8 -30 hhcurveto + -91 -50 65 106 103 55 66 85 43 27 -17 -22 21 hvcurveto + 36 40 rlineto + 26 -27 -41 27 -59 hhcurveto + -118 -87 -86 -139 -141 85 -82 115 hvcurveto + endchar + + + 312 callsubr + + + 216 callsubr + endchar + + + 224 callsubr + 37 53 hstemhm + 52 86 67 453 callsubr + -23 76 hintmask 11111101 + -87 callsubr + 3 717 rmoveto + hintmask 11111110 + -57 callsubr + hintmask 11111101 + 103 callsubr + endchar + + + 393 callgsubr + 59 53 hstemhm + 52 85 25 453 callsubr + -47 76 hintmask 11111001 + -80 callgsubr + hintmask 11111110 + 1 601 -44 callsubr + + + 224 callsubr + 38 47 hstem + 52 86 336 76 vstem + -87 callsubr + -40 718 -83 callgsubr + + + 393 callgsubr + 60 47 hstem + 52 85 270 76 vstem + -80 callgsubr + -42 602 -83 callgsubr + + + 224 callsubr + 124 46 hstem + 52 86 336 76 vstem + -87 callsubr + -109 711 -59 callsubr + + + 393 callgsubr + 146 46 hstem + 52 85 270 76 vstem + -80 callgsubr + -111 595 -59 callsubr + + + 224 callsubr + 46 107 hstem + 52 86 156 114 66 76 vstem + -87 callsubr + 3 726 rmoveto + -84 callgsubr + + + 393 callgsubr + 68 107 hstem + 52 85 114 114 42 76 vstem + -80 callgsubr + 1 610 rmoveto + -84 callgsubr + + + 127 callgsubr + + + 127 callsubr + + + -124 595 54 hstem + 57 63 195 63 340 callgsubr + 63 200 195 -200 63 432 -63 -178 -195 178 -63 hlineto + endchar + + + 129 21 268 callgsubr + 105 57 -57 59 -59 170 hstemhm + 110 83 305 84 hintmask 11001110 + 110 -5 callgsubr + 486 72 524 callgsubr + 59 -72 vlineto + hintmask 11001110 + 111 -84 vlineto + hintmask 11010110 + -111 -305 vlineto + hintmask 11001110 + 111 -83 vlineto + hintmask 11010110 + -111 vlineto + hintmask 11100110 + -78 -4 rlineto + hintmask 11001110 + -55 78 vlineto + 83 -105 rmoveto + 105 305 -105 vlineto + endchar + + + 72 21 -21 235 65 78 55.5 -55.5 58 -58 140 hstemhm + 110 83 248 83 hintmask 11001110 + 110 247 callgsubr + 83 378 74 524 callgsubr + 58 -74 vlineto + hintmask 11001110 + 82 -83 vlineto + hintmask 11010110 + -82 -248 vlineto + hintmask 11001110 + 82 -83 vlineto + hintmask 11010110 + -82 vlineto + hintmask 11100110 + -78 -5 rlineto + hintmask 11001110 + -53 78 vlineto + 83 -78 rmoveto + 78 248 -78 vlineto + endchar + + + 94 21 268 callgsubr + 275 -20 156 46 hstem + 90 83 305 84 vstem + 57 callgsubr + 123 195 callsubr + + + 36 21 -21 235 72 211 -20 178 46 173 callsubr + 95 195 callgsubr + + + 116 callgsubr + endchar + + + 164 callgsubr + endchar + + + 115 callsubr + endchar + + + -382 395 432 hstem + 57 63 340 callgsubr + 63 432 -63 hlineto + endchar + + + 116 callgsubr + 25 41 -89 callsubr + + + 164 callgsubr + 109 626 -89 callsubr + + + 115 callsubr + 24 63 -89 callsubr + + + 124 callsubr + 156 46 108 callsubr + 656 -83 hlineto + -70 195 callsubr + + + 257 callsubr + 136 46 hstem + 130 83 107 callsubr + 14 628 -59 callsubr + + + 160 callsubr + 178 46 108 callsubr + 518 -83 hlineto + -71 195 callgsubr + + + 124 callsubr + 79 98 hstemhm + -20 98 12 83 13 98 hintmask 11101000 + 90 hmoveto + 83 656 -83 hlineto + hintmask 11111100 + -61 59 -98 callgsubr + + + 257 callsubr + 59 98 hstemhm + 20 98 12 83 13 98 hintmask 11001000 + 32 callsubr + hintmask 11111100 + 23 644 -98 callgsubr + + + 160 callsubr + 101 98 hstemhm + -21 98 13 83 12 98 hintmask 11101000 + 90 hmoveto + 83 518 -83 hlineto + hintmask 11111100 + -62 81 -98 callgsubr + + + 124 callsubr + 78 107 108 callsubr + 656 -83 hlineto + 42 58 rmoveto + -84 callgsubr + + + 257 callsubr + 58 107 hstemhm + 115 114 -99 83 hintmask 11001000 + 32 callsubr + hintmask 11110000 + 126 643 rmoveto + -84 callgsubr + + + 160 callsubr + 100 107 hstemhm + 74 114 -98 421 callgsubr + 80 rmoveto + -84 callgsubr + + + 116 callgsubr + 59 41 -24 callsubr + + + 164 callgsubr + 143 626 -24 callsubr + + + 115 callsubr + 58 63 -24 callsubr + + + 252 callgsubr + + + 257 callsubr + 79 57 hstem + 130 83 107 callsubr + -8 664 59 callgsubr + + + 160 callsubr + 121 57 108 callsubr + 518 -83 hlineto + -93 386 callgsubr + + + -295 451 callgsubr + 656 -20 hstemhm + 43 65 -18 83 hintmask 11110000 + 191 callsubr + hintmask 11101000 + 450 callsubr + 656 -83 -656 vlineto + hintmask 11110000 + 21 hlineto + -34 -30 -34 -40 -55 386 callsubr + + + -215 380 callgsubr + 342 callsubr + hstemhm + 82 64 -16 83 hintmask 11110000 + 177 72 callgsubr + -24 15 31 38 24 38 39 31 hvcurveto + hintmask 01101000 + 87 71 -83 515 83 70 -250 -70 84 -515 hlineto + hintmask 11110000 + -84 -71 104 hlineto + -32 -26 -36 -45 -54 vvcurveto + -57 43 -30 52 vhcurveto + endchar + + + 130 callgsubr + endchar + + + 116 callgsubr + endchar + + + 115 callsubr + endchar + + + 124 callsubr + 79 98 hstemhm + -20 98 12 83 13 98 hintmask 11101000 + 90 hmoveto + 83 656 -83 hlineto + hintmask 11111100 + -61 59 -98 callgsubr + + + 160 callsubr + 101 98 hstemhm + -21 98 13 83 12 98 hintmask 11101000 + 90 hmoveto + 83 518 -83 hlineto + hintmask 11111100 + -62 81 -98 callgsubr + + + 200 callgsubr + + + 124 callsubr + 73 367 callsubr + -45 470 callsubr + 90 hmoveto + 83 656 -83 hlineto + hintmask 11110110 + 117 53 93 callgsubr + + + 257 callsubr + 53 367 callsubr + -5 470 callsubr + 32 callsubr + hintmask 11110110 + 201 638 93 callgsubr + + + 160 callsubr + 95 367 callsubr + -46 56 80 83 79 56 hintmask 11010100 + 90 hmoveto + 83 518 -83 hlineto + hintmask 11110110 + 116 75 93 callgsubr + + + 183 callsubr + + + 184 callgsubr + + + -237 387 54 hstem + 203 63 vstem + 140 387 rmoveto + 89 37 62 76 hvcurveto + 302 -63 -297 vlineto + -64 -23 -25 -45 -30 -24 14 33 -19 vhcurveto + -44 -31 rlineto + -45 26 39 -25 57 hhcurveto + endchar + + + -78 249 callsubr + 156 46 215 callsubr + 24 711 -59 callsubr + + + -120 -12 71 459 -20 178 46 220 callgsubr + 1 595 -59 callsubr + + + 21 161 callgsubr + hstem + 90 83 119 callsubr + endchar + + + 186 callsubr + + + -171 395 432 hstem + 57 63 340 callgsubr + 63 135 hlineto + 72 84 126 -219 rlineto + 69 hlineto + -157 267 136 165 rlineto + -70 hlineto + -174 -210 rlineto + -2 210 -63 hlineto + endchar + + + 21 161 callgsubr + hstem + 90 83 119 callsubr + endchar + + + 186 callsubr + + + -72 0 71 585 -20 hstem + 90 83 336 callgsubr + endchar + + + -121 0 69 449 -20 hstem + 90 83 444 callsubr + endchar + + + -233 395 52 hstem + 57 63 340 callgsubr + 251 52 -188 380 -63 hlineto + endchar + + + -72 0 71 585 -20 hstem + 90 83 336 callgsubr + 26 41 -89 callsubr + + + -121 0 69 449 -20 hstem + 90 83 444 callsubr + 30 63 -89 callsubr + + + -43 21 -21 572 84 hstem + 0 515 vstem + 0 vmoveto + 85 hlineto + 105 355 23 77 16 63 24 77 rlinecurve + 4 hlineto + 25 -77 16 -63 23 -77 106 -355 rcurveline + 88 hlineto + -210 656 rlineto + -96 hlineto + endchar + + + -113 21 -21 438 80 hstem + 0 446 vstem + 0 vmoveto + 83 hlineto + 85 268 18 59 13 52 20 59 rlinecurve + 4 hlineto + 19 -59 14 -52 18 -59 85 -268 rcurveline + 87 hlineto + -175 518 rlineto + -97 hlineto + endchar + + + -72 0 71 585 -20 hstemhm + 90 83 159 49 -49 56.5 hintmask 11110000 + 90 hmoveto + 370 71 379 callgsubr + hlineto + 244 -142 352 callsubr + hintmask 11101000 + 1 57 rlineto + hintmask 11110000 + -59 hlineto + endchar + + + -121 0 69 449 -20 hstemhm + 90 83 137 49 -49 56.5 hintmask 11110000 + 90 hmoveto + 320 69 -237 449 -83 hlineto + 222 -116 352 callsubr + hintmask 11101000 + 1 57 rlineto + hintmask 11110000 + -59 hlineto + endchar + + + -72 0 71 192 126 267 -20 hstem + 90 83 144 119 336 callgsubr + 287 -393 rmoveto + -48 callsubr + endchar + + + -121 0 69 156 126 167 -20 hstem + 90 83 115 119 444 callsubr + 258 -293 rmoveto + -48 callsubr + endchar + + + -69 0 71 585 -20 hstem + 95 83 vstem + 95 hmoveto + 370 71 -287 206 hlineto + 206 110 -30 53 -176 -95 rlineto + 311 -83 -348 vlineto + -101 -55 30 -53 71 40 rlineto + endchar + + + -121 0 69 449 -20 hstem + 95 83 vstem + 95 hmoveto + 320 69 -237 142 hlineto + 176 94 -30 49 -146 -78 rlineto + 242 -83 -279 vlineto + -101 -56 30 -48 71 39 rlineto + endchar + + + 1 callsubr + + + 89 21 337 callgsubr + 317 -55 callgsubr + endchar + + + -72 436 80 233 78 hstem + 57 58 256 59 340 callgsubr + 58 225 hlineto + 38 -5 53 -3 38 vhcurveto + 2 hlineto + 36 -96 82 -217 rlineto + 33 hlineto + 81 217 35 96 rlineto + 3 hlineto + -3 -38 -5 -53 -38 vvcurveto + -225 59 432 -73 vlineto + -80 -225 -30 -86 rlineto + -3 hlineto + -31 86 -83 225 rlineto + -73 hlineto + endchar + + + 1 callsubr + + + 89 21 337 callgsubr + 317 -55 callgsubr + endchar + + + -19 callsubr + endchar + + + -15 callsubr + endchar + + + -127 395 79 hstem + 57 58 201 58 340 callgsubr + 58 215 hlineto + 45 -3 48 -3 44 vhcurveto + 2 hlineto + 47 -89 151 -263 rlineto + 65 432 -58 -212 hlineto + -47 4 -51 3 -43 vhcurveto + -3 hlineto + -46 90 -151 263 rlineto + -66 hlineto + endchar + + + -19 callsubr + 227 41 -89 callsubr + + + -15 callsubr + 194 63 -89 callsubr + + + 441 callgsubr + 70 47 hstemhm + 90 79 309 79 hintmask 01011110 + 305 callsubr + hintmask 01101110 + -7 callsubr + hintmask 10011110 + 26 callgsubr + hlineto + 201 50 -83 callgsubr + + + 159 callsubr + 92 47 hstemhm + 90 77 251 77 hintmask 01011110 + 406 callsubr + hintmask 01101110 + -7 callgsubr + hintmask 10011110 + 61 callsubr + 168 72 -83 callgsubr + + + 441 callgsubr + 73 367 callsubr + 90 79 -12 381 callsubr + -33 79 hintmask 0101011001000000 + 305 callsubr + hintmask 0110011001000000 + -7 callsubr + hintmask 1001111001000000 + 26 callgsubr + hlineto + 319 53 rmoveto + hintmask 0101111010000000 + -66 callgsubr + hintmask 0101010101000000 + 33 callsubr + hintmask 1001111001000000 + 136 callgsubr + + + 159 callsubr + 95 367 callsubr + 90 77 -43 56 238 77 -73 56 hintmask 0101011010000000 + 406 callsubr + hintmask 0110011010000000 + -7 callgsubr + hintmask 1001111010000000 + 61 callsubr + 286 75 rmoveto + hintmask 0101111001000000 + -66 callgsubr + hintmask 0101010110000000 + 33 callsubr + hintmask 1001111010000000 + 136 callgsubr + + + -19 callsubr + endchar + + + -15 callsubr + endchar + + + -73 callgsubr + endchar + + + -58 callgsubr + endchar + + + -115 387 54 340 54 hstem + 32 65 249 65 vstem + 221 387 rmoveto + 112 78 86 140 442 callsubr + -140 78 -86 111 hvcurveto + 54 vmoveto + -75 -49 67 105 498 callgsubr + -105 -49 -67 -76 hvcurveto + endchar + + + 289 0 68 -68 4 callsubr + -68 68 hstemhm + 52 86 289 83 hintmask 01110110 + 369 hmoveto + 429 71 -288 238 232 71 -232 206 278 70 -415 hlineto + -203 -118 -117 -208 -209 118 -122 199 hvcurveto + hintmask 10101110 + 10 68 rmoveto + -158 -83 96 167 166 83 91 158 hvcurveto + 48 -520 hlineto + endchar + + + 177 70 callsubr + -65 65 hstemhm + 52 86 226 83 hintmask 11101100 + 328 hmoveto + 358 66 -239 173 192 63 -192 150 229 66 -352 hlineto + -171 -101 -90 -170 -171 101 -87 175 hvcurveto + -2 66 rmoveto + -128 -60 70 122 hvcurveto + hintmask 11011100 + 127 60 68 128 vhcurveto + 38 -387 hlineto + endchar + + + -73 callgsubr + -17 636 -89 callsubr + + + -58 callgsubr + -18 523 -89 callsubr + + + 165 callgsubr + 124 46 hstem + 52 86 388 -103 callsubr + -112 638 -59 callsubr + + + 145 callsubr + 146 46 hstem + 52 86 314 86 vstem + -102 callsubr + -113 525 -59 callsubr + + + 165 callgsubr + 47 98 hstem + 52 86 42 380 callsubr + 42 -103 callsubr + -103 654 -98 callgsubr + + + 145 callsubr + 69 98 hstemhm + 52 86 4 380 callsubr + 6 86 hintmask 11010010 + -102 callsubr + hintmask 11101100 + -104 541 -98 callgsubr + + + -73 callgsubr + 17 636 -24 callsubr + + + -58 callgsubr + 16 523 -24 callsubr + + + 165 callgsubr + hstemhm + 55 86 388 87 -70 74 hintmask 11110000 + 107 callgsubr + hintmask 11101000 + -14 callsubr + hintmask 11110000 + -211 115 -132 165 vhcurveto + 73 vmoveto + -117 -77 106 164 163 77 101 117 117 77 -101 -163 -164 210 callsubr + hvcurveto + endchar + + + -21 callsubr + endchar + + + -73 callgsubr + -59 642 58 callgsubr + + + -58 callgsubr + -60 529 58 callgsubr + + + 165 callgsubr + 67 57 hstem + 52 86 60 268 60 -103 callsubr + -134 674 59 callgsubr + + + 145 callsubr + 89 57 hstemhm + 52 86 22 268 24 86 hintmask 11110100 + -102 callsubr + hintmask 11111100 + -135 561 59 callgsubr + + + 120 480 callgsubr + hstemhm + 45 -38 callsubr + hintmask 11100001 + 45 209 callsubr + hintmask 11010001 + -82 callsubr + hintmask 11010010 + 210 callgsubr + hintmask 11011101 + -95 callsubr + hintmask 11100001 + -131 hlineto + endchar + + + 297 343 callgsubr + 144 83 hintmask 11100011 + 44 hmoveto + 203 59 hlineto + hintmask 11010011 + -62 47 -46 66 100 vvcurveto + 108 59 81 98 99 59 -81 -108 -100 -46 -66 -63 -47 vhcurveto + hintmask 11010101 + -59 204 66 vlineto + hintmask 11011011 + -107 3 hlineto + hintmask 11010011 + 292 callsubr + hintmask 11100011 + -107 hlineto + 638 -66 446 callgsubr + + + 165 480 callgsubr + -9 -20 hstemhm + 92 -38 callsubr + hintmask 1101000010000000 + 92 209 callsubr + hintmask 1100100010000000 + -82 callsubr + hintmask 1100100100000000 + 210 callgsubr + hintmask 1100111010000000 + -95 callsubr + hintmask 1011000010000000 + -131 hlineto + -60 396 rmoveto + 58 callsubr + + + -73 callgsubr + endchar + + + -58 callgsubr + endchar + + + 153 166 callsubr + -9 -20 hstemhm + 99 86 388 87 hintmask 11011000 + 379 -12 -106 callgsubr + -343 403 rmoveto + hintmask 10111000 + 58 callsubr + + + 106 -12 73 -52 -21 607 73 hstemhm + 55 86 388 87 hintmask 10111000 + 96 -30 rmoveto + 64 83 rlineto + -42 46 60 -23 69 hhcurveto + 165 116 132 211 95 -24 78 -42 58 hvcurveto + 69 89 -46 35 -62 -81 rlineto + 41 -47 -60 22 -69 196 callsubr + hintmask 01111000 + -96 24 -79 41 -59 vhcurveto + -70 -91 rlineto + 91 325 rmoveto + 163 77 101 117 51 43 -19 -35 33 vhcurveto + -288 -373 rlineto + -21 43 -12 56 64 vvcurveto + hintmask 10111000 + 194 -270 rmoveto + -51 -43 20 36 -32 hvcurveto + 287 374 rlineto + 21 -42 12 -54 -64 vvcurveto + -164 210 callsubr + vhcurveto + endchar + + + 31 -12 67 -46 -21 475 67 hstemhm + 52 82 321 83 hintmask 10111000 + 134 260 rmoveto + 127 63 76 98 43 37 -15 -28 27 vhcurveto + -242 -282 rlineto + -17 33 -9 41 48 vvcurveto + -51 -283 rmoveto + 56 66 rlineto + -36 41 54 -19 61 hhcurveto + 142 101 105 167 76 -20 61 -35 46 hvcurveto + 60 70 -37 29 -56 -65 rlineto + 34 -41 -53 19 -61 hhcurveto + -143 -100 -101 -169 523 callgsubr + -75 20 -62 35 -47 vhcurveto + -60 -70 rlineto + hintmask 10111000 + 248 49 rmoveto + -43 -37 16 28 -27 hvcurveto + 242 282 rlineto + 16 -32 9 -41 -48 vvcurveto + -126 -63 -79 -97 vhcurveto + endchar + + + 165 callgsubr + 41 367 callsubr + 52 86 17 381 callsubr + 17 87 hintmask 11011001 + 332 -12 -106 callgsubr + hintmask 11111011 + 75 648 -35 callgsubr + hintmask 11011101 + 33 callsubr + hintmask 11111011 + 136 callgsubr + + + 145 callsubr + 63 367 callsubr + 52 86 -21 381 callsubr + -19 86 hintmask 11011001 + -102 callsubr + hintmask 11111010 + 74 535 -35 callgsubr + hintmask 11010101 + 33 callsubr + hintmask 11111010 + 136 callgsubr + + + 52 callsubr + + + 395 callsubr + hstem + 90 83 222 50 callsubr + endchar + + + -173 562 50 164 51 hstem + 57 63 177 62 340 callgsubr + 63 167 76 hlineto + 95 68 43 93 95 -66 34 -97 hvcurveto + -139 hlineto + 63 -215 rmoveto + 164 69 vlineto + 72 36 -19 -59 -59 -35 -27 -73 hvcurveto + endchar + + + 161 71 65 385 65 hstem + 48 81 193 75 193 81 vstem + 322 -22 rmoveto + 75 93 hlineto + 165 8 109 96 156 vvcurveto + 155 -109 92 -165 8 vhcurveto + 92 -75 -92 vlineto + -165 -8 -109 -92 -155 vvcurveto + -156 109 -96 165 -8 vhcurveto + -193 260 rmoveto + 111 75 72 118 7 vhcurveto + -385 vlineto + -118 7 -75 76 112 vvcurveto + 461 hmoveto + -112 -75 -76 -118 -7 vhcurveto + 385 vlineto + 118 -7 75 -72 -111 vvcurveto + endchar + + + 97 53 64 284 64 hstem + 48 80 162 75 162 80 vstem + 290 -18 rmoveto + 75 71 hlineto + 148 7 94 75 125 vvcurveto + 126 -94 73 -148 6 vhcurveto + 71 -75 -71 vlineto + -148 -6 -94 -73 -126 vvcurveto + -125 94 -75 148 -7 vhcurveto + -162 207 rmoveto + 87 63 49 99 5 vhcurveto + -284 vlineto + -99 5 -63 51 87 vvcurveto + 399 hmoveto + -87 -63 -51 -99 -5 vhcurveto + 284 vlineto + 99 -5 63 -49 -87 vvcurveto + endchar + + + 264 callgsubr + + + 263 callsubr + + + 141 161 callgsubr + hstem + 63 82 165 79 164 83 vstem + 310 hmoveto + 79 245 hlineto + 154 7 93 75 168 vvcurveto + 161 -83 -157 vlineto + -126 -55 -55 -109 -6 vhcurveto + 344 -79 -344 vlineto + -109 5 -56 56 126 vvcurveto + 157 -82 -161 vlineto + -168 92 -75 155 -7 vhcurveto + endchar + + + 67 21 -21 187 64 267 -20 hstem + 63 80 131 77 131 80 vstem + 274 hmoveto + 77 187 hlineto + 133 6 78 60 136 vvcurveto + 129 -80 -124 vlineto + -96 -45 -42 -86 -5 vhcurveto + 267 -77 -267 vlineto + -86 5 -45 42 96 vvcurveto + 124 -80 -129 vlineto + -136 78 -60 133 -6 vhcurveto + endchar + + + 106 -165 70 87 65 538 73 hstem + 52 86 388 87 vstem + 332 57 rmoveto + -117 -77 106 168 163 77 101 117 117 77 -101 -163 -168 210 callsubr + hvcurveto + 201 -222 rmoveto + 39 35 7 8 20 hvcurveto + -16 64 rlineto + -5 -18 -22 -4 -29 hhcurveto + -71 -60 29 58 -30 hvcurveto + 139 24 93 126 189 253 callsubr + -193 96 -127 143 -20 vhcurveto + -90 38 83 -66 121 hhcurveto + endchar + + + 31 -153 68 76 63 406 70 hstem + 51 86 314 86 vstem + 294 54 rmoveto + -96 -61 79 128 124 61 75 96 95 62 -75 -124 -128 -62 -79 -95 hvcurveto + 169 -207 rmoveto + 35 31 6 9 18 hvcurveto + -16 62 rlineto + -5 -16 -19 -4 -24 hhcurveto + -62 -48 21 55 -25 hvcurveto + 119 19 81 100 151 vvcurveto + 168 -101 101 -142 -143 -100 -101 -168 -151 80 -100 120 -19 vhcurveto + -84 33 71 -60 108 hhcurveto + endchar + + + -115 286 51 444 54 hstem + 31 65 249 65 vstem + 220 439 rmoveto + -75 -49 68 106 498 callgsubr + -106 -49 -68 -76 hvcurveto + 136 -153 rmoveto + 28 24 5 5 13 hvcurveto + -12 48 rlineto + -4 -12 -14 -3 -20 hhcurveto + -47 -39 16 37 -20 hvcurveto + 92 18 61 82 123 vvcurveto + 442 callsubr + -126 65 -84 95 -14 vhcurveto + -60 25 57 -43 83 hhcurveto + endchar + + + 135 callgsubr + endchar + + + 138 callsubr + endchar + + + -169 573 50 153 51 hstem + 57 63 171 62 340 callgsubr + 63 178 76 hlineto + 101 -178 rlineto + 71 hlineto + -110 186 rlineto + 57 16 38 41 66 vvcurveto + 91 -66 32 -89 vhcurveto + -141 hlineto + 63 -204 rmoveto + 153 70 vlineto + 66 35 -20 -53 -54 -35 -26 -66 hvcurveto + endchar + + + 135 callgsubr + -5 352 -89 callsubr + + + 138 callsubr + 5 313 -89 callsubr + + + 11 433 callgsubr + 50 47 hstem + 90 83 269 83 vstem + 20 callsubr + -31 361 -83 callgsubr + + + -35 21 -21 208 60 184 66 72 47 hstem + 90 83 216 79 vstem + -35 callsubr + -21 322 -83 callgsubr + + + 52 callsubr + + + 395 callsubr + hstem + 90 83 222 50 callsubr + endchar + + + -4 callgsubr + endchar + + + -84 435 callgsubr + -37 callgsubr + endchar + + + -202 387 54 341 53 hstem + 46 64 159 63 vstem + 181 387 rmoveto + 94 57 55 73 60 -34 28 -55 23 hvcurveto + -63 28 rlineto + -33 14 -37 15 39 vvcurveto + 37 29 23 47 41 31 -16 -24 28 vhcurveto + 33 39 rlineto + 32 -32 -48 22 -51 hhcurveto + -82 -60 -50 -66 -63 46 -30 43 -19 hvcurveto + 63 -28 rlineto + 41 -17 30 -13 -42 vvcurveto + -39 -30 -27 -55 -44 -45 19 33 -32 vhcurveto + -37 -42 rlineto + -40 40 54 -24 61 hhcurveto + endchar + + + -4 callgsubr + -11 709 -89 callsubr + + + -84 435 callgsubr + -37 callgsubr + -6 593 -89 callsubr + + + -24 166 callsubr + 38 47 5 callgsubr + -37 718 -83 callgsubr + + + -84 435 callgsubr + 60 47 -37 callgsubr + -32 602 -83 callgsubr + + + -24 166 callsubr + 124 46 5 callgsubr + -106 711 -59 callsubr + + + -84 435 callgsubr + 146 46 -37 callgsubr + -101 595 -59 callsubr + + + -20 259 callsubr + hstem + 44 457 vstem + 44 hmoveto + 457 71 -351 hlineto + 204 264 -201 251 rlineto + 318 70 -423 -49 hlineto + 222 -274 -226 -283 rlineto + endchar + + + -87 0 66 387 65 hstem + 44 389 vstem + 44 hmoveto + 389 66 -288 hlineto + 169 199 -164 188 rlineto + 262 65 -365 -45 hlineto + 184 -209 -187 -215 rlineto + endchar + + + -22 21 144 callsubr + endchar + + + -91 21 -21 449 69 hstem + 192 83 vstem + 72 callsubr + endchar + + + -202 774 53 hstem + 148 62 vstem + 148 395 rmoveto + 62 379 130 53 -323 -53 131 hlineto + endchar + + + -22 21 144 callsubr + endchar + + + -91 21 -21 449 69 hstem + 192 83 vstem + 72 callsubr + endchar + + + -22 21 -21 586 70 50 47 171 callsubr + -2 120 -83 callgsubr + + + -91 21 -21 449 69 72 47 hstem + 192 83 vstem + 72 callsubr + -1 141 -83 callgsubr + + + 106 -12 73 248 72 214 73 hstem + 52 86 82 224 82 87 vstem + 220 309 rmoveto + 224 72 -224 hlineto + 112 -393 -106 callgsubr + endchar + + + 31 -12 67 184 63 161 67 hstem + 52 83 69 182 68 84 vstem + 295 -12 rmoveto + 142 101 103 170 169 -101 100 -142 -143 -100 -100 -169 -170 100 -103 143 hvcurveto + 67 vmoveto + -98 -62 78 128 128 62 74 98 97 62 -74 -128 -128 -62 -78 -97 hvcurveto + -91 184 rmoveto + 182 63 -182 hlineto + endchar + + + 25 21 -21 150 68 260 68 -68 178 hstemhm + 90 83 277 83 hintmask 11101100 + 90 hmoveto + 83 150 118 hlineto + 144 98 64 139 143 -97 50 -145 hvcurveto + -118 hlineto + hintmask 11011100 + 110 -83 vlineto + 83 -438 rmoveto + hintmask 11101100 + 260 108 vlineto + 113 56 -31 -94 -94 -55 -41 -114 hvcurveto + endchar + + + -33 0 175 -63 63 194 63 -63 149 hstemhm + 90 83 220 83 hintmask 10011100 + 90 hmoveto + 83 hlineto + hintmask 01101100 + 112 94 vlineto + 121 88 51 113 117 -87 39 -122 hvcurveto + -94 hlineto + hintmask 10011100 + 86 -83 vlineto + 83 -343 rmoveto + 194 85 vlineto + 90 45 -23 -70 -70 -43 -31 -92 hvcurveto + endchar + + + 214 callgsubr + -3 callsubr + endchar + + + 21 callgsubr + endchar + + + -127 387 54 hstem + 56 62 198 60 vstem + 217 387 rmoveto + 92 67 50 140 hvcurveto + 250 -60 -253 vlineto + -101 -43 -32 -56 -57 -42 32 101 vhcurveto + 253 -62 -250 vlineto + -140 65 -50 96 vhcurveto + endchar + + + 214 callgsubr + -3 callsubr + -18 709 -89 callsubr + + + 21 callgsubr + -17 593 -89 callsubr + + + 214 callgsubr + 69 53 hstemhm + 87 83 6 453 callsubr + 10 80 hintmask 11110010 + -92 callsubr + hintmask 11101110 + -1 717 -44 callsubr + + + 226 callgsubr + 91 53 hstemhm + 87 83 -24 453 callsubr + -21 193 callsubr + 601 243 callsubr + + + 214 callgsubr + 156 46 -3 callsubr + -113 711 -59 callsubr + + + 226 callgsubr + 178 46 hstem + 87 83 247 -33 callsubr + -112 595 -59 callsubr + + + 399 callgsubr + 98 hstemhm + 87 83 0 380 callsubr + 4 80 hintmask 11110010 + -92 callsubr + hintmask 11101100 + -104 727 -98 callgsubr + + + 400 callgsubr + 98 hstemhm + 87 83 -30 380 callsubr + -27 193 callsubr + -103 611 -98 callgsubr + + + 214 callgsubr + -3 callsubr + 16 709 -24 callsubr + + + 21 callgsubr + 17 593 -24 callsubr + + + 101 249 callsubr + hstem + 87 83 308 -17 callgsubr + endchar + + + 19 callgsubr + endchar + + + 214 callgsubr + -3 callsubr + -60 715 58 callgsubr + + + 21 callgsubr + -59 599 58 callgsubr + + + 214 callgsubr + 99 57 hstemhm + 87 83 18 268 22 80 hintmask 11110100 + -92 callsubr + hintmask 11111100 + -135 747 59 callgsubr + + + 226 callgsubr + 121 57 hstemhm + 87 83 -12 268 -9 79 hintmask 11110100 + -91 callgsubr + hintmask 11101000 + -134 631 59 callgsubr + + + 87 451 callsubr + 595 -20 hstem + 87 83 69 65 174 80 vstem + 335 113 callsubr + 37 28 50 46 11 hvcurveto + 116 28 64 80 172 vvcurveto + 311 callsubr + -196 88 -76 120 -10 vhcurveto + -31 -28 -25 -42 -44 386 callsubr + + + 76 callsubr + endchar + + + -20 callgsubr + endchar + + + -22 callsubr + endchar + + + -82 161 callgsubr + 79 98 hstemhm + 86 98 12 84 12 98 hintmask 11101000 + -63 callgsubr + hintmask 11111100 + -61 461 -98 callgsubr + + + 67 callsubr + + + 42 161 callgsubr + 23 -20 hstemhm + 320 84 hintmask 10110000 + 320 249 callgsubr + hintmask 11010000 + -94 callgsubr + -284 210 415 callsubr + + + 214 callgsubr + 63 36 108 37 hstem + 87 83 55 45 103 46 59 80 vstem + -92 callsubr + -1 711 rmoveto + 131 callgsubr + + + 226 callgsubr + 85 36 108 37 hstemhm + 87 83 25 45 103 46 28 79 hintmask 11111001 + -91 callgsubr + hintmask 11111111 + 595 vmoveto + 131 callgsubr + + + 214 callgsubr + 73 367 callsubr + 87 83 -25 25 -25 381 callsubr + -21 80 hintmask 1101100010000000 + -92 callsubr + hintmask 1111100100000000 + 74 721 -35 callgsubr + hintmask 1101010010000000 + -60 -38 -47 -76 -4 hvcurveto + hintmask 1101001010000000 + 70 callgsubr + hintmask 1111100100000000 + 136 callgsubr + + + 226 callgsubr + 95 367 callsubr + 87 83 -55 55 -55 381 callsubr + -52 79 hintmask 1101100010000000 + -91 callgsubr + hintmask 1111100100000000 + 75 321 callsubr + hintmask 1101010010000000 + -60 -38 -47 -76 -4 hvcurveto + hintmask 1101001010000000 + 70 callgsubr + hintmask 1111100100000000 + 136 callgsubr + + + -43 0 85 571 -20 hstem + 0 515 vstem + 210 hmoveto + 97 hlineto + 208 656 rlineto + -85 hlineto + -105 -354 -23 -78 -16 -62 -24 -77 rlinecurve + -4 hlineto + -25 77 -15 62 -24 78 -105 354 rcurveline + -89 hlineto + endchar + + + -111 0 80 438 -20 hstem + 0 447 vstem + 176 hmoveto + 96 hlineto + 175 518 rlineto + -84 hlineto + -83 -268 -19 -60 -13 -50 -20 -60 rlinecurve + -4 hlineto + -19 60 -14 50 -19 60 -85 268 rcurveline + -87 hlineto + endchar + + + -212 395 62 hstem + -2 350 vstem + 138 395 rmoveto + 72 hlineto + 138 432 rlineto + -64 hlineto + -67 -228 -15 -50 -9 -41 -16 -51 rlinecurve + -3 hlineto + -16 51 -10 41 -15 50 -69 228 rcurveline + -66 hlineto + endchar + + + 228 0 87 457 112 0 -20 hstemhm + 23 739 hintmask 10110000 + 286 callgsubr + hintmask 11010000 + -51 callgsubr + endchar + + + 372 callsubr + hstemhm + 23 637 hintmask 10110000 + 285 callgsubr + hintmask 11010000 + -52 callsubr + endchar + + + -32 395 64 283 85 hstem + 13 500 vstem + 104 395 rmoveto + 76 hlineto + 61 249 7 33 7 32 7 33 rlinecurve + 2 hlineto + 7 -33 6 -32 8 -33 63 -249 rcurveline + 75 hlineto + 90 432 rlineto + -60 hlineto + -44 -229 -9 -46 -7 -47 -8 -46 rlinecurve + -2 hlineto + -11 46 -9 47 -11 46 -59 229 rcurveline + -56 hlineto + -59 -229 -11 -47 -9 -46 -9 -46 rlinecurve + -3 hlineto + -8 46 -8 46 -9 47 -43 229 rcurveline + -65 hlineto + endchar + + + 228 0 87 457 112 0 -20 hstemhm + 23 739 hintmask 10110000 + 286 callgsubr + hintmask 11010000 + -51 callgsubr + 353 41 -89 callsubr + + + 372 callsubr + hstemhm + 23 637 hintmask 10110000 + 285 callgsubr + hintmask 11010000 + -52 callsubr + 302 63 -89 callsubr + + + 228 0 87 457 112 0 -20 156 46 hstemhm + 23 739 hintmask 10111000 + 286 callgsubr + hintmask 11011000 + -51 callgsubr + 258 195 callsubr + + + 372 callsubr + 178 46 hstemhm + 23 637 hintmask 10111000 + 285 callgsubr + hintmask 11011000 + -52 callsubr + 207 195 callgsubr + + + 228 0 87 457 112 0 -20 79 98 hstemhm + 241 380 callsubr + hintmask 10111100 + 286 callgsubr + hintmask 11011100 + -51 callgsubr + 267 59 -98 callgsubr + + + 372 callsubr + 101 98 hstemhm + 190 380 callsubr + hintmask 10111100 + 285 callgsubr + hintmask 11011100 + -52 callsubr + 216 81 -98 callgsubr + + + 228 0 87 457 112 0 -20 hstemhm + 23 739 hintmask 10110000 + 286 callgsubr + hintmask 11010000 + -51 callgsubr + 387 41 -24 callsubr + + + 372 callsubr + hstemhm + 23 637 hintmask 10110000 + 285 callgsubr + hintmask 11010000 + -52 callsubr + 336 63 -24 callsubr + + + 20 callgsubr + + + 19 callsubr + + + -212 395 432 hstem + 8 330 vstem + 8 395 rmoveto + 66 hlineto + 60 112 11 22 12 21 12 26 rlinecurve + 3 hlineto + 14 -26 12 -21 11 -22 60 -112 rcurveline + 69 hlineto + -127 220 119 212 rlineto + -67 hlineto + -54 -106 -10 -20 -9 -18 -12 -26 rlinecurve + -3 hlineto + -13 26 -10 18 -10 20 -56 106 rcurveline + -69 hlineto + 118 -209 rlineto + endchar + + + -25 10 callgsubr + hstemhm + 49 435 -360 285 hintmask 11110000 + 49 hmoveto + 435 71 -435 521 callgsubr + 75 238 rmoveto + 285 71 -285 hlineto + -65 206 rmoveto + 415 70 -415 hlineto + endchar + + + -87 70 callsubr + hstemhm + 49 374 -311 249 hintmask 11110000 + 49 hmoveto + 374 66 -374 521 callgsubr + 63 173 rmoveto + 249 63 -249 hlineto + -55 150 rmoveto + 358 66 -358 hlineto + endchar + + + -20 callgsubr + endchar + + + -22 callsubr + endchar + + + -238 395 432 hstem + 129 63 vstem + 129 395 rmoveto + 63 165 hlineto + 131 267 rlineto + -65 hlineto + -53 -118 -13 -32 -14 -30 -15 -33 rlinecurve + -3 hlineto + -15 33 -13 30 -14 32 -55 118 rcurveline + -66 hlineto + 132 -267 rlineto + endchar + + + -20 callgsubr + 25 443 -89 callsubr + + + -22 callsubr + 25 385 -89 callsubr + + + -82 161 callgsubr + 156 46 hstem + 196 84 200 callsubr + -70 445 -59 callsubr + + + 287 callsubr + 178 46 hstem + 166 83 vstem + 11 callsubr + -70 387 -59 callsubr + + + -82 161 callgsubr + 79 98 hstemhm + 86 98 12 84 12 98 hintmask 11101000 + -63 callgsubr + hintmask 11111100 + -61 461 -98 callgsubr + + + 67 callsubr + + + -20 callgsubr + 59 443 -24 callsubr + + + -22 callsubr + 59 385 -24 callsubr + + + 137 callgsubr + endchar + + + 137 callsubr + endchar + + + -200 395 52 327 53 hstem + 27 305 vstem + 27 395 rmoveto + 305 52 -227 hlineto + 225 342 rlineto + 38 -283 -53 206 vlineto + -226 -342 rlineto + endchar + + + 137 callgsubr + 218 647 -89 callsubr + + + 137 callsubr + 188 532 -89 callsubr + + + -19 259 callsubr + 50 47 163 callsubr + 192 656 -83 callgsubr + + + -83 478 callgsubr + 72 47 hstem + 45 388 80 callgsubr + 162 541 -83 callgsubr + + + -19 259 callsubr + 58 107 hstem + 223 114 79 callgsubr + 235 664 rmoveto + -84 callgsubr + + + -83 478 callgsubr + 80 107 hstem + 193 114 80 callgsubr + 205 549 rmoveto + -84 callgsubr + + + 137 callgsubr + endchar + + + 137 callsubr + endchar + + + 85 callgsubr + 140 callgsubr + hintmask 10111000 + 389 callsubr + hintmask 10110100 + 75 callgsubr + hintmask 01110100 + 7 -58 rlineto + hintmask 01111000 + -68 callsubr + hintmask 10111000 + -89 callgsubr + endchar + + + -27 callgsubr + endchar + + + 60 callgsubr + + + 57 callsubr + + + 85 callgsubr + 140 callgsubr + hintmask 10111000 + 389 callsubr + hintmask 10110100 + 75 callgsubr + hintmask 01110100 + 7 -58 rlineto + hintmask 01111000 + -68 callsubr + hintmask 10111000 + -89 callgsubr + 35 519 -71 callgsubr + + + -27 callgsubr + -3 516 -71 callgsubr + + + 85 callgsubr + 73 55 96 -20 hstemhm + 52 80 -21 51 188 -79 callgsubr + -61 51 59 callsubr + -51 8 rlineto + -51 -8 -32 -53 -65 hhcurveto + 447 callgsubr + -51 -8 rlineto + -74 5 44 -77 107 hhcurveto + endchar + + + 165 callsubr + 73 55 hstemhm + 47 85 -11 494 callgsubr + -43 54 callsubr + 11 514 -31 callgsubr + + + 85 callgsubr + 183 59 140 callgsubr + hintmask 10111100 + 389 callsubr + hintmask 10111010 + 75 callgsubr + hintmask 01111010 + 7 -58 rlineto + hintmask 01111100 + -68 callsubr + hintmask 10111100 + -89 callgsubr + -106 546 -12 callsubr + + + 165 callsubr + 183 59 293 callsubr + hintmask 11111000 + 261 callsubr + hintmask 11110100 + -6 callsubr + hintmask 11111000 + 319 callgsubr + hintmask 11110010 + -74 callsubr + hintmask 11111000 + -99 callsubr + -144 543 -12 callsubr + + + -16 437 callsubr + 215 199 vstem + 257 573 -71 callgsubr + + + 85 callgsubr + 89 100 hstemhm + 52 80 -11 99 94 99 -63 -79 callgsubr + hintmask 1011100100000000 + 389 callsubr + hintmask 1011100010000000 + 75 callgsubr + hintmask 0111100010000000 + 7 -58 rlineto + hintmask 0111100100000000 + -68 callsubr + hintmask 1011100100000000 + -89 callgsubr + hintmask 1011011000000000 + -47 533 -88 callgsubr + + + 165 callsubr + 89 100 hstemhm + 47 85 -1 99 94 99 -33 54 callsubr + -85 530 -88 callgsubr + + + -67 callsubr + endchar + + + 85 callgsubr + 140 callgsubr + hintmask 10111000 + 389 callsubr + hintmask 10110100 + 75 callgsubr + hintmask 01110100 + 7 -58 rlineto + hintmask 01111000 + -68 callsubr + hintmask 10111000 + -89 callgsubr + 63 519 -26 callsubr + + + -27 callgsubr + 25 516 -26 callsubr + + + 152 callgsubr + hstemhm + 46 85 256 65 hintmask 11011000 + -98 callsubr + hintmask 10111000 + -56 callgsubr + hintmask 11011000 + -101 callsubr + endchar + + + 152 callgsubr + hstemhm + 46 85 256 65 hintmask 11011000 + -98 callsubr + hintmask 10111000 + -56 callgsubr + hintmask 11011000 + -101 callsubr + 58 501 118 callsubr + + + 85 callgsubr + 103 57 hstemhm + 52 80 2 266 -50 -79 callgsubr + hintmask 10111010 + 389 callsubr + hintmask 10111001 + 75 callgsubr + hintmask 01111001 + 7 -58 rlineto + hintmask 01111010 + -68 callsubr + hintmask 10111010 + -89 callgsubr + hintmask 10110100 + -84 547 -37 callsubr + + + 165 callsubr + 103 57 hstemhm + 47 85 12 266 -20 -76 callsubr + hintmask 11110100 + 261 callsubr + hintmask 11110010 + -6 callsubr + hintmask 11110100 + 319 callgsubr + hintmask 11110001 + -74 callsubr + hintmask 11110100 + -99 callsubr + hintmask 11111000 + -122 544 -37 callsubr + + + 51 -12 66 555 59 hstemhm + 32 80 6 71 143 67 hintmask 11011000 + 189 514 rmoveto + 54 32 41 49 44 18 -34 -38 -58 -52 -40 -60 -40 vhcurveto + -19 40 -12 39 36 vvcurveto + hintmask 11101000 + 43 -526 rmoveto + 77 62 30 45 50 hvcurveto + 53 -37 52 -25 46 -13 22 68 rcurveline + -36 10 -42 22 -45 31 52 69 37 80 26 86 rrcurveto + -77 hlineto + -20 -75 -32 -65 -40 -54 -62 52 -61 65 -43 67 rrcurveto + 73 53 75 55 86 vvcurveto + 77 -48 53 -81 vhcurveto + hintmask 11011000 + -91 -61 -68 -87 -48 16 -52 27 -54 hvcurveto + hintmask 11101000 + -67 -46 -62 -55 -88 vvcurveto + -106 81 -76 119 vhcurveto + -120 187 rmoveto + 51 36 39 46 37 vhcurveto + 46 -71 62 -68 64 -56 rrcurveto + -33 -38 -42 -20 -45 hhcurveto + -72 -57 48 73 hvcurveto + endchar + + + -24 -12 63 422 57 hstemhm + 32 76 -4 66 117 63 hintmask 11011000 + 170 401 rmoveto + 41 27 31 40 36 14 -26 -29 -44 -41 -30 -50 -29 vhcurveto + -16 30 -10 29 27 vvcurveto + hintmask 11101000 + 34 -413 rmoveto + 67 54 24 36 42 hvcurveto + 46 -30 44 -20 41 -10 21 66 rcurveline + -30 8 -36 15 -37 22 44 54 31 61 22 68 rrcurveto + -75 hlineto + -16 -56 -26 -50 -33 -41 -51 38 -50 48 -37 49 rrcurveto + 62 40 63 43 66 vvcurveto + 64 -42 47 -71 vhcurveto + hintmask 11011000 + -80 -53 -59 -70 -37 14 -41 23 -41 hvcurveto + hintmask 11101000 + -57 -35 -52 -42 -70 vvcurveto + -82 68 -65 104 vhcurveto + -96 152 rmoveto + 37 27 30 37 27 vhcurveto + 38 -53 50 -51 53 -42 rrcurveto + -22 -31 -34 -15 -35 hhcurveto + -59 -46 35 54 hvcurveto + endchar + + + -309 349 126 hstem + 65 119 vstem + 216 callgsubr + endchar + + + -309 542 396 callgsubr + 542 rmoveto + -48 callsubr + endchar + + + -54 339 callgsubr + 153 callsubr + hstemhm + 52 80 153 61 4 -79 callgsubr + hintmask 11011100 + 376 310 callsubr + hintmask 10111010 + 39 31 44 56 22 vhcurveto + 298 vlineto + -97 callgsubr + hintmask 11011001 + -87 61 -51 81 61 54 32 38 46 vhcurveto + 3 hlineto + 7 -54 rlineto + hintmask 11011100 + -38 -25 -42 -46 -54 vvcurveto + 290 callsubr + hintmask 11011010 + -158 295 callgsubr + + + -3 339 callgsubr + 472 callsubr + 193 61 4 -76 callsubr + hintmask 11111000 + 416 310 callsubr + hintmask 11110100 + 39 28 37 59 29 vhcurveto + 486 vlineto + hintmask 11110001 + -67 hlineto + -7 -47 rlineto + -2 hlineto + 39 -44 294 callsubr + -111 -101 303 callsubr + hintmask 11110010 + 44 callgsubr + -53 rlineto + hintmask 11111000 + -42 -31 -38 -40 -54 vvcurveto + 290 callsubr + hintmask 11110100 + -150 263 274 callsubr + + + 14 callsubr + endchar + + + -54 339 callgsubr + 66 -33 -21 430 347 callsubr + hintmask 10111101 + 248 74 callsubr + 37 24 47 33 21 hvcurveto + 25 19 29 20 26 19 rrcurveto + 3 hlineto + 7 -58 rlineto + hintmask 10111010 + -68 callsubr + hintmask 11011010 + -87 60 -51 84 vhcurveto + hintmask 11011110 + 443 callgsubr + hintmask 10111101 + 290 callsubr + hintmask 11011010 + -30 295 callgsubr + + + -61 150 62 22 62 68 62 22 62 hstemhm + 36 425 hintmask 01111000 + 336 364 rmoveto + 282 callsubr + hintmask 01011000 + 231 callsubr + hintmask 01111000 + 500 callsubr + hintmask 11011000 + -214 vmoveto + 282 callsubr + hintmask 01011000 + 231 callsubr + hintmask 11011000 + 500 callsubr + endchar + + + 85 callgsubr + 56 37 123 37 hstemhm + 52 80 25 53 114 53 -27 -79 callgsubr + hintmask 1011110010000000 + 389 callsubr + hintmask 1011110001000000 + 75 callgsubr + hintmask 0111110001000000 + 7 -58 rlineto + hintmask 0111110010000000 + -68 callsubr + hintmask 1011110010000000 + -89 callgsubr + hintmask 1011111100000000 + 49 500 rmoveto + 34 callsubr + + + 165 callsubr + 56 37 123 37 hstemhm + 47 85 35 53 114 53 3 -76 callsubr + 521 callsubr + 261 callsubr + 522 callsubr + -6 callsubr + 521 callsubr + 319 callgsubr + hintmask 1111110001000000 + -74 callsubr + 521 callsubr + -99 callsubr + 11 497 rmoveto + hintmask 1111111000000000 + 67 43 42 57 56 -43 42 -67 -67 -43 -42 -56 hvcurveto + 521 callsubr + -57 43 -42 67 vhcurveto + hintmask 1111111000000000 + 37 vmoveto + -32 -25 24 38 37 25 24 32 32 25 -24 -37 -38 -25 -24 -32 hvcurveto + endchar + + + 61 -25 552 hstem + 275 68 vstem + 307 -25 rmoveto + 4 hlineto + 266 273 -47 42 -187 -201 rlineto + 438 -68 -438 vlineto + -187 201 -46 -42 rlineto + endchar + + + 61 -25 552 hstem + 275 68 vstem + 275 -25 rmoveto + 68 439 hlineto + 187 -201 47 42 -266 272 rlineto + -4 hlineto + -265 -272 46 -42 187 201 rlineto + endchar + + + -61 593 77 hstem + 60 377 vstem + 60 284 rmoveto + 72 hlineto + 65 176 50 133 31 callgsubr + 49 -133 65 -176 rlineto + 72 hlineto + -152 386 rlineto + -73 hlineto + endchar + + + -61 257 62 22 62 hstemhm + 36 425 vstemhm + 336 257 rmoveto + 282 callsubr + hintmask 01100000 + 231 callsubr + hintmask 11100000 + 500 callsubr + endchar + + + -140 420 292 hstem + 179.5 58 vstem + 138 420 rmoveto + 71 86 71 -86 39 29 -56 94 97 40 -15 46 -103 -24 -9 107 rlineto + -49 hlineto + -9 -108 -102 25 -15 -46 97 -40 -57 -94 rlineto + endchar + + + 289 -155 55 149 56 -48 56 260 57 161 55 hstemhm + 51 60 138 66 178 49 196 58 hintmask 1101111110000000 + 403 -155 rmoveto + 69 63 16 35 58 hvcurveto + -22 49 rlineto + -26 -45 -56 -19 -61 hhcurveto + -170 -128 111 195 234 172 151 178 182 95 -118 -161 -130 -71 -77 -63 -55 -19 38 79 20 hvcurveto + 39 200 rlineto + -55 hlineto + -11 -40 rlineto + -2 hlineto + 33 -18 -28 15 -34 hhcurveto + -117 -75 -125 -107 503 callgsubr + -91 52 -50 68 44 45 29 39 33 vhcurveto + 2 hlineto + hintmask 1101111110000000 + -50 7 42 -26 54 hhcurveto + 91 109 91 175 197 -126 134 -202 -224 -193 -175 -268 -233 156 -125 196 503 callgsubr + -18 268 rmoveto + -40 -30 26 64 75 48 95 79 27 18 -11 -31 19 hvcurveto + -29 -159 rlineto + -41 -34 -30 -18 -28 hhcurveto + endchar + + + 224 -24 53 119 56 -48 56 236 56 131 53 hstemhm + 51 59 118 66 164 50 166 58 hintmask 1101111110000000 + 367 -24 rmoveto + 58 52 12 29 50 hvcurveto + -23 46 rlineto + -23 -37 -47 -11 -47 hhcurveto + -146 -117 83 181 208 154 134 163 162 85 -98 -144 -123 -64 -66 -52 -47 -13 34 80 18 hvcurveto + 40 178 rlineto + -56 hlineto + -12 -40 rlineto + -2 hlineto + 33 -17 -27 15 -32 hhcurveto + -113 -69 -117 -102 503 callgsubr + -78 49 -51 59 47 43 30 39 30 vhcurveto + 2 hlineto + hintmask 1101111110000000 + -48 6 34 -29 51 hhcurveto + 92 91 88 161 175 -119 116 -178 -207 -177 -157 -241 -210 144 -104 172 503 callgsubr + -13 236 rmoveto + -34 -26 26 54 69 45 87 71 27 15 -10 -31 18 hvcurveto + -27 -137 rlineto + -40 -34 -29 -18 -26 hhcurveto + endchar + + + 85 callgsubr + 79 152 callsubr + 52 80 -38 55 201 -79 callgsubr + -48 55 hintmask 1010100101000000 + 389 callsubr + hintmask 1010100100100000 + 75 callgsubr + hintmask 0110100100100000 + 7 -58 rlineto + hintmask 0110100101000000 + -68 callsubr + hintmask 1010100101000000 + -89 callgsubr + hintmask 1011010100010000 + 121 523 208 callsubr + hintmask 1011001100010000 + -41 callgsubr + hintmask 1010100011000000 + -53 callsubr + hintmask 1011010100010000 + 119 callgsubr + + + 165 callsubr + 79 60 24 60 hstemhm + 47 85 -28 55 231 83 -78 55 -48.5 71.5 -12 callgsubr + hintmask 1101101000000000 + 261 callsubr + hintmask 1101100010000000 + -6 callsubr + hintmask 1101101000000000 + 319 callgsubr + hintmask 1101100001000000 + -74 callsubr + hintmask 1101101000000000 + -99 callsubr + hintmask 1111100100000000 + 83 520 232 callsubr + hintmask 1101011000000000 + -53 callsubr + hintmask 1111100100000000 + 119 callgsubr + + + -5 399 callsubr + 214 -20 hstemhm + 82 69.5 -69.5 82 258 85 hintmask 10110110 + 268 callsubr + hintmask 01110110 + -712 vlineto + hintmask 01111010 + 66 hlineto + hintmask 10111010 + 7 50 rlineto + 3 hlineto + hintmask 10110110 + 147 callgsubr + endchar + + + -184 450 callgsubr + hstemhm + 52 51 -51 62 163 64 hintmask 11011000 + 201 387 rmoveto + 74 66 64 110 99 -46 64 -84 -37 -33 -20 -25 -30 hvcurveto + 3 58 rlineto + 126 -62 -468 vlineto + hintmask 11101000 + 48 hlineto + 6 32 31 callgsubr + hintmask 11011000 + -26 27 34 -14 30 hhcurveto + -9 51 280 callgsubr + + + -208 -160 870 hstem + 14 326 vstem + 281 -160 rmoveto + 59 hlineto + -267 870 rlineto + -59 hlineto + endchar + + + -317 477 callgsubr + vstem + 92 -250 rmoveto + 58 1000 -58 hlineto + endchar + + + 7 -12 69 600 67 hstemhm + 79 78 -78 80.5 222.5 80 -23 82 hintmask 11010100 + 79 -179 rmoveto + hintmask 11100100 + 83 hlineto + -1 82 -1 77 -3 82 rrcurveto + -55 50 63 -19 61 hhcurveto + 98 92 74 131 102 -60 73 -95 13 401 callsubr + 61 38 35 56 72 vvcurveto + 117 -88 56 -95 -136 -64 -99 -134 vhcurveto + hintmask 11100100 + 233 -434 rmoveto + -51 -57 16 60 -47 hvcurveto + 116 1 114 2 117 vhcurveto + 115 1 45 62 75 523 callsubr + 54 47 -37 -75 -64 -39 -69 -103 -21 hvcurveto + 13 -63 rlineto + 4 16 17 2 17 hhcurveto + hintmask 11010100 + 91 45 -59 -77 hvcurveto + hintmask 11100100 + -89 -57 -52 -70 vhcurveto + endchar + + + 480 callsubr + 357 52 357 514 callgsubr + -152 rmoveto + 45 47 -27 hlineto + -54 -14 26 65 hvcurveto + 61 6 52 68 vvcurveto + 64 -17 33 -43 12 vhcurveto + 4 vlineto + 43 12 17 32 65 68 -6 52 61 vvcurveto + 65 14 26 497 callgsubr + -30 -103 hvcurveto + -73 9 -53 -68 vvcurveto + hintmask 11110000 + -38 -18 -38 -68 -1 vhcurveto + -52 vlineto + hintmask 11101000 + 68 -1 18 -38 -39 -67 -9 -53 -73 vvcurveto + -103 38 -30 79 vhcurveto + endchar + + + -255 -102 47 281 52 280 514 callgsubr + -102 rmoveto + 45 47 -27 hlineto + -54 -14 22 53 hvcurveto + 43 6 36 46 vvcurveto + 61 -17 32 -43 12 vhcurveto + 4 vlineto + 43 11 17 31 63 45 -6 36 44 vvcurveto + 53 14 21 497 callgsubr + -26 -91 hvcurveto + -52 9 -36 -49 vvcurveto + hintmask 11110000 + -36 -18 -37 -68 vhcurveto + -52 vlineto + hintmask 11101000 + 68 -1 18 -37 -37 -48 -9 -37 -51 vvcurveto + -91 38 -26 79 vhcurveto + endchar + + + 480 callsubr + 357 52 357 526 callsubr + -152 rmoveto + 44 hlineto + 80 37 30 103 hvcurveto + 73 -9 53 67 vvcurveto + hintmask 11101000 + 39 19 38 67 1 vhcurveto + 52 vlineto + hintmask 11110000 + -67 1 -19 38 38 68 9 53 73 vvcurveto + 103 -37 30 497 callsubr + -26 -65 hvcurveto + -61 -5 -52 -68 vvcurveto + -65 16 -32 43 -12 vhcurveto + -4 vlineto + -43 -12 -16 -33 -64 -68 5 -52 -61 vvcurveto + -65 -14 -26 -54 vhcurveto + -26 hlineto + endchar + + + -255 -102 47 281 52 280 526 callsubr + -102 rmoveto + 44 hlineto + 80 37 26 91 hvcurveto + 51 -9 37 48 vvcurveto + hintmask 11101000 + 37 19 37 67 1 vhcurveto + 52 vlineto + hintmask 11110000 + -67 -19 37 36 hvcurveto + 49 9 36 52 vvcurveto + 91 -37 26 497 callsubr + -21 -53 hvcurveto + -44 -5 -36 -45 vvcurveto + -63 16 -31 43 -11 vhcurveto + -4 vlineto + -43 -12 -16 -32 -61 -46 5 -36 -43 vvcurveto + -53 -14 -22 -54 vhcurveto + -26 hlineto + endchar + + + 480 callsubr + 766 350 callsubr + hintmask 11100000 + 94 -152 457 callsubr + 766 412 callgsubr + + + -255 -102 47 613 350 callsubr + hintmask 11100000 + 94 -102 457 callsubr + 613 412 callgsubr + + + 480 callsubr + 766 476 callgsubr + hintmask 11100000 + 31 -152 rmoveto + hintmask 11010000 + 178 860 hlineto + hintmask 11100000 + -178 -47 hlineto + hintmask 11010000 + 116 -766 hlineto + hintmask 11100000 + -116 hlineto + endchar + + + -255 -102 47 613 476 callgsubr + hintmask 11100000 + 31 -102 rmoveto + hintmask 11010000 + 178 707 hlineto + hintmask 11100000 + -178 -47 hlineto + hintmask 11010000 + 116 -613 hlineto + hintmask 11100000 + -116 hlineto + endchar + + + -16 571 55 hstem + 115 494 callgsubr + vstem + 271 571 -31 callgsubr + + + -317 477 callgsubr + vstem + 92 291 rmoveto + 58 459 -58 hlineto + -1000 vmoveto + 58 464 -58 hlineto + endchar + + + -254 143 241 hstem + 40 224 vstem + 152 143 rmoveto + 60 52 48 72 72 -52 49 -60 -60 -52 -49 -72 -72 52 -48 60 hvcurveto + endchar + + + 41 callgsubr + endchar + + + -252 450 callgsubr + hstem + 30 63 vstem + 184 387 rmoveto + 50 33 18 20 23 hvcurveto + -26 40 rlineto + -15 -19 -21 -12 -34 hhcurveto + -57 -40 48 69 70 42 48 55 29 16 -8 -16 20 hvcurveto + 30 40 rlineto + 17 -20 -32 18 -47 hhcurveto + -83 -73 -62 -107 -107 65 -61 89 hvcurveto + endchar + + + 41 callgsubr + -14 585 -71 callgsubr + + + -16 574 59 hstem + 116 310 vstem + 230 574 2 callgsubr + + + -102 167 callsubr + 76 59 81 -20 hstem + 46 85 -49 callsubr + -41 586 2 callgsubr + + + -102 -226 40 197 -21 440 68 hstem + 46 85 149 64 vstem + 179 -226 rmoveto + 424 callgsubr + 53 51 5 47 21 39 35 rlinecurve + -29 callgsubr + -147 82 -90 113 -15 hvcurveto + -38 -78 425 callsubr + endchar + + + -102 167 callsubr + 183 59 hstem + 46 85 -49 callsubr + -155 612 -12 callsubr + + + -102 167 callsubr + 88 108 hstem + 46 85 88 110 -49 callsubr + 598 vmoveto + -106 callsubr + + + -16 -226 40 hstem + 291 64 vstem + 190 -226 rmoveto + 83 callsubr + 29 67 rlineto + -53 hlineto + -44 -91 425 callsubr + endchar + + + -61 -33 171 -68 68 344 68 -68 171 hstemhm + 61 82 119 52 hintmask 10101100 + 262 -33 rmoveto + 52 hlineto + hintmask 01101100 + 103 vlineto + 52 4 49 24 39 35 -36 52 rcurveline + -27 -24 -35 -20 -42 -3 rrcurveto + 344 vlineto + 35 -2 29 -16 27 -24 40 52 rcurveline + -31 29 -42 26 -58 3 rrcurveto + hintmask 01011100 + 103 -52 -106 vlineto + -113 -16 -88 -83 -138 vvcurveto + -141 82 -84 119 -14 vhcurveto + -119 239 rmoveto + 88 46 62 73 17 vhcurveto + -335 vlineto + -75 17 -44 62 89 vvcurveto + endchar + + + -77 486 -20 32 -20 hstemhm + 9 479 hintmask 01100000 + 92 -191 rmoveto + 149 287 31 callgsubr + 163 -287 80 21 -204 335 rlineto + hintmask 10100000 + 173 321 rlineto + -87 hlineto + -125 -248 rlineto + -4 hlineto + hintmask 01100000 + -147 260 -82 -21 190 -314 -193 -342 rlineto + endchar + + + -16 681 59 hstem + 116 310 vstem + 116 600 -12 callsubr + + + -309 -12 126 235 126 hstem + 65 119 vstem + 216 callgsubr + -361 vmoveto + -48 callsubr + endchar + + + -381 387 95 130 402 callsubr + 387 rmoveto + 129 callgsubr + 225 vmoveto + 129 callgsubr + endchar + + + -61 -12 67 -46 -21 22 -21 595 66 -7 -20 23 -20 hstemhm + 61 85 120 38 -32 38 hintmask 0011001010000000 + 318 584 rmoveto + 11 9 -2 -2 10 hvcurveto + -62 -524 -21 3 -18 7 -17 12 rlinecurve + 60 504 rlineto + 1 9 9 1 10 hhcurveto + -148 -694 rmoveto + 38 hlineto + 13 113 18 -7 19 -5 20 -2 rlinecurve + hintmask 0100011010000000 + -12 -99 rlineto + 38 hlineto + 12 98 68 4 52 35 42 54 rlinecurve + hintmask 1000011100000000 + -48 44 -31 -41 -33 -24 -42 -5 rlinecurve + 60 506 14 -10 14 -14 12 -15 rlinecurve + 49 46 -21 27 -28 24 -32 15 rlinecurve + 14 114 rlineto + -38 hlineto + -12 -102 rlineto + hintmask 0011001100000000 + 3 -12 -12 1 -12 hhcurveto + -7 -8 0 -1 -7 hvcurveto + 12 99 rlineto + -38 hlineto + hintmask 0010101100000000 + -12 -105 rlineto + -122 -29 -77 -118 -178 vvcurveto + -143 48 -104 77 -50 vhcurveto + -40 300 rmoveto + 125 37 89 68 34 vhcurveto + -54 -456 rlineto + -33 47 -18 71 90 vvcurveto + endchar + + + -309 -1 115 hstem + 137 61 vstem + 67 -170 rmoveto + 81 34 50 67 86 vvcurveto + 60 -26 37 -43 -33 -28 -22 -36 -37 27 -20 32 3 4 0 1 3 vhcurveto + 1 -53 -34 -44 -57 -25 rrcurveto + endchar + + + -381 -1 449 callgsubr + -116 87 callsubr + + + -381 265 449 callgsubr + 150 87 callsubr + + + -381 -178 449 callgsubr + -293 87 callsubr + + + -381 394 449 callgsubr + 279 87 callsubr + + + 186 -11 42 94 55 277 55 100 41 hstem + 49 47 102 66 384 126 callsubr + 8 94 rmoveto + 60 38 25 32 37 hvcurveto + -30 42 rlineto + -25 -29 -31 -19 -42 hhcurveto + -72 -47 55 88 78 49 56 73 35 25 -15 -26 27 hvcurveto + 35 39 rlineto + 32 -32 -37 25 -56 hhcurveto + -97 -88 -73 -116 -124 81 -74 101 hvcurveto + endchar + + + -61 134 61 268 61 hstem + 54 76 237 76 vstem + 70 103 rmoveto + 68 69 rlineto + -25 31 39 -13 41 hhcurveto + 39 40 13 25 31 hvcurveto + 68 -69 44 45 -65 65 rlineto + 23 31 14 39 46 vvcurveto + 46 -14 40 -23 31 vhcurveto + 65 66 -44 45 -68 -70 rlineto + 24 -31 -40 13 -39 hhcurveto + -41 -39 -13 -24 -31 hvcurveto + -68 70 -44 -45 64 -66 rlineto + -23 -31 -13 -40 -46 vvcurveto + -46 13 -39 23 -31 vhcurveto + -64 -65 rlineto + 223 47 rmoveto + -65 -54 54 80 80 54 54 65 64 54 -54 -80 -80 -54 -54 -64 hvcurveto + endchar + + + -3 399 callsubr + 214 -20 hstemhm + 47 85 258 -79 callgsubr + hintmask 10111100 + 261 callsubr + hintmask 10111010 + 13 callgsubr + hintmask 01111010 + 7 -57 rlineto + hintmask 01111100 + 309 callgsubr + hintmask 10111100 + 135 callsubr + + + -184 450 callgsubr + hstemhm + 33 64 163 422 callgsubr + 170 387 rmoveto + hintmask 11101000 + 37 29 19 24 26 hvcurveto + 3 hlineto + 7 -35 rlineto + hintmask 11110000 + 50 468 -62 -119 hlineto + 3 -56 rlineto + 22 -27 -28 14 -35 hhcurveto + -72 -68 -62 -101 -111 52 -63 85 hvcurveto + 14 51 rmoveto + -59 -28 44 79 68 39 44 47 24 26 -9 -23 27 hvcurveto + -162 vlineto + -27 -27 -23 -14 -26 hhcurveto + endchar + + + -104 488.5 66 330 callsubr + 571 143 -5 310 callgsubr + 5 rlineto + endchar + + + -104 77.5 65 347 65 330 callsubr + 160 143 -5 rlineto + 71 vlineto + -143 -7 5 177 -5 177 143 -7 310 callgsubr + 7 -5 -177 5 -177 -143 7 rlineto + -71 vlineto + 143 5 rlineto + endchar + + + 15 399 callsubr + 50 164 0 -20 hstemhm + 47 85 258 -79 callgsubr + 55 49 -49 56.5 hintmask 1010111010000000 + 261 callsubr + hintmask 1010110110000000 + 13 callgsubr + hintmask 0110110110000000 + 7 -57 rlineto + hintmask 0110111010000000 + 309 callgsubr + hintmask 1010111010000000 + -99 callsubr + hintmask 1011011010000000 + 264 491 352 callsubr + hintmask 1010111001000000 + 1 57 rlineto + hintmask 1010111010000000 + -59 hlineto + endchar + + + -3 -12 69 -36 -21 390 69 112 48 -48 141 -138.5 45.5 hstemhm + 47 85 258 83 -73 73 hintmask 1011001100000000 + 261 callsubr + hintmask 1011001010000000 + 58 51 30 37 261 callgsubr + hintmask 0111001010000000 + 6 -55 rlineto + hintmask 0111001100000000 + 70 571 hlineto + hintmask 1010011100000000 + 72 5 rlineto + hintmask 1011001100000000 + 43 -72 vlineto + hintmask 1010101100000000 + 93 -83 vlineto + hintmask 1011001100000000 + -93 -161 -48 161 -85 vlineto + 4 -84 493 callsubr + 22 -56 hhcurveto + -111 -100 -93 -143 -148 79 -87 122 hvcurveto + 18 69 rmoveto + -85 -49 65 102 96 62 70 78 0 callgsubr + -215 11 callgsubr + endchar + + + -227 429 46 164 46 hstem + 41 50 150 50 vstem + 166 429 rmoveto + 67 58 50 77 79 -58 50 -67 -67 -58 -50 -79 -77 58 -50 67 hvcurveto + 46 vmoveto + -44 -31 34 47 49 31 34 44 44 31 -34 -49 -47 -31 -34 -44 hvcurveto + endchar + + + -27 -12 68 604 64 hstemhm + 52 80 -27 78 220 81 hintmask 11101000 + 269 -12 rmoveto + 136 79 93 138 117 -72 63 -83 61 hvcurveto + hintmask 11011000 + -79 58 -67 39 53 vvcurveto + 27 24 23 56 47 60 -11 -30 83 vhcurveto + 20 66 rlineto + 26 -80 -68 13 -61 hhcurveto + -110 -49 -51 -58 -76 64 -53 70 -50 hvcurveto + hintmask 11101000 + -105 -32 -82 -78 -117 vvcurveto + -139 106 -82 111 vhcurveto + -137 223 rmoveto + 94 62 67 102 23 vhcurveto + 59 -45 48 -51 -81 vvcurveto + -97 -45 -65 -88 -72 -66 60 95 vhcurveto + endchar + + + -16 587 100 hstem + 125 99 94 99 vstem + 175 587 -88 callgsubr + + + -16 595 84 hstem + 122 83 144 83 vstem + 164 168 callgsubr + + + -61 96 107 96 62 95 107 hstem + 194 109 464 callsubr + 215 -265 rmoveto + 370 callgsubr + 360 vmoveto + 370 callgsubr + endchar + + + -61 -110 166 -67 67 525 68 -68 167 -101 -20 22 -20 hstemhm + 77 81 64 60 74 81 hintmask 1000011110000000 + 222 -110 rmoveto + 60 hlineto + hintmask 0110001110000000 + 101 vlineto + 95 13 60 66 95 215 -279 -40 145 vvcurveto + 58 39 38 61 54 31 -21 -36 37 vhcurveto + 44 49 -36 38 -42 31 -64 7 rlinecurve + hintmask 0101001110000000 + 99 -60 vlineto + hintmask 0100101110000000 + -101 vlineto + -87 -13 -58 -64 -89 -195 279 35 -162 vvcurveto + -62 -37 -41 -74 -61 -51 30 37 -43 vhcurveto + -38 -57 42 -39 64 -32 64 -6 rlinecurve + endchar + + + -61 0 49 61 59 249 60 71 49 501 callsubr + 46.5 hstemhm + 68 73 195 70 -61 61 hintmask 11110110 + 225 110 rmoveto + hintmask 11110101 + 47 38 23 30 29 hvcurveto + 3 hlineto + 6 -43 rlineto + hintmask 11110110 + 58 429 hlineto + hintmask 11101110 + 78 5 rlineto + hintmask 11110110 + 44 -78 67 -70 -67 -146 -49 146 -34 vlineto + 4 -83 rlineto + 29 -33 -27 17 -49 hhcurveto + -84 -79 -69 -110 -122 61 -67 96 hvcurveto + 14 59 rmoveto + -62 -36 49 82 67 46 51 56 37 23 -12 -29 33 hvcurveto + -155 vlineto + -37 -32 -31 -16 -34 hhcurveto + -160 -169 rmoveto + 359 49 -359 hlineto + endchar + + + -16 586 108 hstem + 216 110 vstem + 271 586 -105 callsubr + + + 359 callgsubr + endchar + + + -62 228 callsubr + 80 -80 81 259 72 hintmask 11110100 + -70 callsubr + hintmask 11101100 + -81 callgsubr + hintmask 11110100 + -86 callgsubr + endchar + + + -222 387 281 callgsubr + 186 387 46 callgsubr + + + -62 228 callsubr + 80 -80 81 259 72 hintmask 11110100 + -70 callsubr + hintmask 11101100 + -81 callgsubr + hintmask 11110100 + -86 callgsubr + -136 291 -71 callgsubr + + + -222 387 281 callgsubr + 171 765 rmoveto + 112 110 -44 40 -103 -119 rlineto + 50 -409 46 callgsubr + + + 84 callsubr + 73 55 96 -20 hstemhm + 46 80 -80 81 -19 494 callgsubr + -34 72 hintmask 1111110001000000 + -70 callsubr + hintmask 1111101001000000 + -81 callgsubr + hintmask 1111110001000000 + -86 callgsubr + hintmask 1111100110000000 + -122 289 -31 callgsubr + + + 84 callsubr + 76 59 81 -20 hstemhm + 46 80 -80 81 259 72 hintmask 11111101 + -70 callsubr + hintmask 11111011 + -81 callgsubr + hintmask 11111101 + -86 callgsubr + -163 292 2 callgsubr + + + 84 callsubr + 183 59 hstemhm + 46 80 -80 81 259 72 hintmask 11101010 + -70 callsubr + hintmask 11100110 + -81 callgsubr + hintmask 11101010 + -86 callgsubr + -277 318 rmoveto + 35 -32 rlineto + hintmask 11111010 + -63 callsubr + endchar + + + 84 callsubr + 89 100 hstemhm + 46 80 -80 81 -9 99 94 99 -24 72 hintmask 1110100010000000 + -70 callsubr + hintmask 1110010010000000 + -81 callgsubr + hintmask 1110100010000000 + -86 callgsubr + hintmask 1111001100000000 + -218 305 -88 callgsubr + + + 84 callsubr + 88 108 hstemhm + 46 80 -80 81 82 110 67 72 hintmask 11101011 + -70 callsubr + hintmask 11100111 + -81 callgsubr + hintmask 11101011 + -86 callgsubr + hintmask 11111011 + -122 304 -105 callsubr + + + -62 228 callsubr + 80 -80 81 259 72 hintmask 11110100 + -70 callsubr + hintmask 11101100 + -81 callgsubr + hintmask 11110100 + -86 callgsubr + -108 291 -26 callsubr + + + -222 386 281 callgsubr + 186 765 rmoveto + 35 31 -102 119 -45 -40 rlineto + 112 -489 46 callgsubr + + + -61 -12 61 540 61 hstemhm + 41 255 callgsubr + 250 -60 callsubr + + + -61 -12 61 556 61 hstemhm + 41 255 callgsubr + 250 398 callsubr + 90 -53 49 -58 34 401 callsubr + 40 30 48 59 69 vvcurveto + 101 -69 72 -111 -103 -78 -67 -100 -69 41 -49 48 -34 434 callsubr + -60 -32 -60 -61 -87 vvcurveto + -101 89 -74 120 vhcurveto + hintmask 11011000 + 45 368 rmoveto + -77 31 -70 34 78 vvcurveto + 64 44 42 59 70 41 -52 -64 -49 -23 -44 -44 -40 vhcurveto + hintmask 11100100 + -43 -307 rmoveto + -78 -59 51 71 62 37 52 52 33 hvcurveto + 93 -37 80 -33 -87 vvcurveto + -66 -51 -46 -74 vhcurveto + endchar + + + -191 -12 244 callgsubr + -12 68 callgsubr + + + -191 254 244 callgsubr + 254 68 callgsubr + + + -39 -12 61 540 61 hstemhm + 49 255 callgsubr + 258 -60 callsubr + + + -33 -12 61 540 61 hstemhm + 55 255 callgsubr + 264 -60 callsubr + + + -69 -12 59 424 59 hstemhm + 54 75 -48 74 190 71 -54 75 hintmask 11100100 + 247 -12 rmoveto + 114 76 61 81 70 -48 36 -53 28 hvcurveto + 3 vlineto + hintmask 11011000 + 37 24 43 45 56 vvcurveto + 80 -64 58 -104 -94 -73 -54 -83 -54 38 -39 44 -27 434 callsubr + -54 -26 -55 -45 -69 vvcurveto + -81 82 -60 111 vhcurveto + hintmask 11011000 + 38 298 rmoveto + -70 23 -60 27 57 vvcurveto + 48 38 30 53 62 37 -37 -49 -35 -22 -35 -38 -29 vhcurveto + hintmask 11100100 + -35 -239 rmoveto + -69 -52 39 54 48 38 35 44 24 hvcurveto + 84 -29 67 -24 -62 vvcurveto + -52 -45 -33 -67 vhcurveto + endchar + + + -191 -189 244 callgsubr + -189 68 callgsubr + + + -191 383 244 callgsubr + 383 68 callgsubr + + + -61 -12 61 540 61 hstemhm + 41 255 callgsubr + 250 -60 callsubr + + + 390 -12 126 hstem + 94 119 216 119 216 119 cntrmask 01110000 + 154 -12 rmoveto + -48 callsubr + 335 hmoveto + -48 callsubr + 335 hmoveto + -48 callsubr + endchar + + + 84 callsubr + 103 57 hstemhm + 46 80 -80 81 4 266 -11 72 hintmask 11111001 + -70 callsubr + hintmask 11110101 + -81 callgsubr + hintmask 11111001 + -86 callgsubr + hintmask 11110010 + -255 319 -37 callsubr + + + 325 callsubr + + + 129 243 57 hstem + 41 605 vstem + 41 243 rmoveto + 605 57 -605 hlineto + endchar + + + 4 551 41 hstem + 41 481 vstem + 41 551 rmoveto + 481 41 -481 hlineto + endchar + + + -78 223 57 hstem + 41 398 vstem + 41 223 rmoveto + 398 57 -398 hlineto + endchar + + + -144 243 57 hstem + 41 330 vstem + 41 243 rmoveto + 330 57 -330 hlineto + endchar + + + -210 551 41 hstem + 41 266 vstem + 41 551 rmoveto + 266 41 -266 hlineto + endchar + + + -62 339 callgsubr + -1 callsubr + hstemhm + 46 80 -80 81 141 60 58 72 hintmask 11111011 + 358 416 callsubr + -12 -5 -16 hhcurveto + -25 -22 15 31 42 24 39 87 62 hvcurveto + -29 54 rlineto + -23 -36 -39 -15 -46 hhcurveto + hintmask 11110111 + -81 callgsubr + hintmask 11111011 + -13 callsubr + 16 16 1 6 17 hvcurveto + -26 -23 -34 -43 -50 vvcurveto + -56 39 -29 51 vhcurveto + -232 416 callgsubr + endchar + + + -62 -206 55 162 -21 233 415 callgsubr + hintmask 11111011 + 272 355 callsubr + 33 12 15 20 hvcurveto + -22 41 rlineto + -8 -12 -12 -5 -15 hhcurveto + -24 -22 15 31 44 28 43 62 12 hvcurveto + 38 7 32 14 36 23 -29 54 rcurveline + -23 -36 -39 -15 -46 hhcurveto + hintmask 11110111 + -81 callgsubr + hintmask 11111011 + -111 -107 -97 -159 -144 85 -92 113 -16 hvcurveto + -37 -27 -25 -41 -43 vvcurveto + -56 40 -29 50 vhcurveto + -146 416 callgsubr + endchar + + + -62 callgsubr + endchar + + + -62 callgsubr + 20 570 118 callsubr + + + 440 callsubr + 34 406 rmoveto + 338 callgsubr + -276 vmoveto + 387 callgsubr + + + -191 -96 53 115 401 callgsubr + 72 360 callsubr + + + -191 483 53 115 401 callgsubr + 651 360 callsubr + + + 242 -12 20 308 18 306 20 hstem + 46 130 450 128 vstem + 400 -12 rmoveto + 114 102 52 80 66 hvcurveto + -52 hlineto + -68 -56 -82 -44 -90 hhcurveto + -86 -78 38 62 -54 hvcurveto + -4 6 -4 6 8 vvcurveto + 184 vlineto + 2 2 2 2 vhcurveto + 574 8 hlineto + 186 -158 150 -196 -196 -158 -150 -186 -186 158 -150 196 vhcurveto + -220 346 rmoveto + -2 -2 2 4 hvcurveto + 180 vlineto + 8 4 8 4 6 vhcurveto + 60 56 76 38 86 hhcurveto + 82 76 -36 -58 56 hvcurveto + 6 -6 4 -8 -8 vvcurveto + -184 vlineto + -4 -2 -2 -4 vhcurveto + endchar + + + -46 callsubr + endchar + + + -46 callsubr + -67 737 118 callsubr + + + -13 -12 68 327 64 265 -20 hstem + 53 78 275 79 vstem + 131 222 rmoveto + 92 51 69 89 45 44 -15 -59 44 vhcurveto + 1 -17 1 -19 -19 vvcurveto + -117 -45 -81 -90 -76 -64 66 100 vhcurveto + 138 -234 rmoveto + 130 86 109 160 158 -56 109 -80 81 hvcurveto + 129 66 -24 41 -142 -73 -43 36 -47 29 -48 26 rlinecurve + -38 -52 41 -22 37 -24 34 -26 rlinecurve + -127 -65 24 -41 141 73 51 -50 38 -60 18 -82 rlinecurve + 45 -34 -49 21 -51 hhcurveto + -116 -90 -89 -136 -145 103 -89 113 hvcurveto + endchar + + + -269 -12 126 -105 -21 hstemhm + 85 229 callsubr + hintmask 01010000 + 116 198 192 callgsubr + hintmask 01100000 + 40 -588 rmoveto + 32 27 26 36 hvcurveto + hintmask 10100000 + 38 448 callgsubr + -38 vhcurveto + hintmask 01100000 + -36 27 -26 33 vhcurveto + endchar + + + -269 -12 126 -105 -21 530 -20 hstemhm + 85 229 callsubr + hintmask 01101000 + 116 198 rmoveto + 57 hlineto + 11 240 2 80 rlineto + -83 hlineto + 2 -80 rlineto + hintmask 01110000 + 40 -450 rmoveto + 32 27 26 36 hvcurveto + hintmask 10110000 + 38 448 callgsubr + -38 vhcurveto + hintmask 01110000 + -36 27 -26 33 vhcurveto + endchar + + + -269 372 126 0 -20 hstemhm + 85 229 callsubr + hintmask 01010000 + 103 -184 rmoveto + 83 hlineto + -2 94 -11 378 rlineto + -57 hlineto + -11 -378 rlineto + hintmask 10100000 + 40 462 176 callsubr + + + -269 21 -21 404 126 0 -20 hstemhm + 85 229 callsubr + hintmask 10101000 + 103 hmoveto + 83 hlineto + -2 80 -11 240 rlineto + -57 hlineto + -11 -240 rlineto + hintmask 11010000 + 40 324 176 callsubr + + + -266 378 callgsubr + 171 67 hstemhm + 96 82 -82 185 hintmask 11110000 + 96 hmoveto + 82 419 521 callgsubr + 526 callgsubr + hintmask 11110000 + 141 callsubr + endchar + + + -357 667 49 108 50 hstem + 64 62 vstem + 64 395 rmoveto + 62 272 68 49 -68 46 hlineto + 38 15 24 29 16 12 -3 -3 9 vhcurveto + 13 46 rlineto + 7 -17 -17 3 -22 hhcurveto + -69 -31 -49 -67 hvcurveto + -42 vlineto + -45 -2 rlineto + -47 45 vlineto + endchar + + + 19 378 callgsubr + 161 67 -57 67 -10 -20 hstemhm + 96 82 203 82 -82 185 hintmask 11100110 + 381 hmoveto + 82 419 hlineto + hintmask 11100101 + 103 67 524 callgsubr + -103 3 callsubr + -203 vlineto + hintmask 11100110 + 62 vlineto + 64 28 35 48 24 20 -4 -9 21 vhcurveto + hintmask 11001110 + 17 62 rlineto + hintmask 11100110 + 11 -24 -33 7 -32 hhcurveto + -101 -50 -63 -101 hvcurveto + -64 vlineto + -66 -5 rlineto + 304 callgsubr + endchar + + + 265 419 238 callsubr + 100 108 -47 67 -57 67 hstemhm + 96 82 203 82 -82 185 80 483 callgsubr + hintmask 0101011001000000 + 381 hmoveto + 82 419 hlineto + hintmask 0101010101000000 + 526 callgsubr + hintmask 0100111001000000 + -103 3 callsubr + -203 vlineto + hintmask 1001011001000000 + 157 callsubr + hintmask 0101011001000000 + 304 callgsubr + 278 -419 rmoveto + 82 240 callgsubr + hintmask 0110011010000000 + 324 callsubr + + + 274 -12 68 363 238 callsubr + 161 67 -57 67 hstemhm + 96 82 203 82 -82 185 93 82 hintmask 1011011010000000 + 746 242 callsubr + -365 12 rmoveto + 82 419 hlineto + hintmask 1011010110000000 + 526 callgsubr + hintmask 1010111010000000 + -103 3 callsubr + -203 vlineto + hintmask 1101011010000000 + 157 callsubr + hintmask 1011011010000000 + 304 callgsubr + endchar + + + 321 -12 67 364 238 callsubr + 161 67 -57 67 hstemhm + 96 82 203 82 174 82 -73 73 hintmask 1011011100000000 + 381 hmoveto + 82 419 174 -269 hlineto + 241 callsubr + hintmask 1010111010000000 + -68 296 callsubr + -178 3 callsubr + -203 vlineto + hintmask 1101011100000000 + 157 callsubr + hintmask 1011011100000000 + 304 callgsubr + endchar + + + 36 -12 67 -34 453 callgsubr + 171 67 hstemhm + 96 82 174 82 -73 73 hintmask 01111100 + 96 hmoveto + 82 419 174 -269 hlineto + hintmask 10111100 + 241 callsubr + hintmask 10111010 + -68 296 callsubr + -178 3 callsubr + 446 callsubr + vlineto + endchar + + + -20 378 callgsubr + 100 108 -37 67 hstemhm + 96 82 -82 185 80 483 callgsubr + hintmask 11011001 + 96 hmoveto + 82 419 hlineto + hintmask 11010101 + 526 callgsubr + hintmask 11011001 + 141 callsubr + 278 -419 rmoveto + 82 240 callgsubr + hintmask 11101010 + 324 callsubr + + + -61 223 57 hstem + 41 416 vstem + 41 223 rmoveto + 416 57 -416 hlineto + endchar + + + 105 callgsubr + + + -61 -12 68 304 63 163 70 hstem + 366 83 vstem + 234 -12 rmoveto + 111 104 82 144 144 -89 65 -109 -39 -29 -10 -17 -30 hvcurveto + 17 190 rlineto + 247 70 -319 hlineto + -21 -307 44 -27 rlineto + 25 38 27 13 44 hhcurveto + 82 54 -55 -94 -95 -62 -60 361 callgsubr + + + -191 -12 423 callgsubr + -12 -29 callsubr + + + -191 254 51 172 43 80 56 hstem + 259 64 vstem + 149 callsubr + endchar + + + 86 callgsubr + + + 105 callgsubr + + + -93 -12 66 217 58 121 68 hstem + 85 72 175 82 vstem + 218 -12 rmoveto + 102 94 64 114 111 -81 52 -97 -33 -27 -10 -12 -25 hvcurveto + 12 143 rlineto + 223 68 -292 hlineto + -18 -255 42 -25 rlineto + 21 33 25 12 41 hhcurveto + 68 47 -41 -66 -68 -52 -42 -67 -67 -43 29 30 -34 hvcurveto + -38 -53 rlineto + -37 40 56 -35 91 hhcurveto + endchar + + + -191 -189 423 callgsubr + -189 -29 callsubr + + + -191 383 423 callgsubr + 383 -29 callsubr + + + 86 callgsubr + + + 263 -12 47 219 51 48 49 75 43 80 56 hstemhm + 259 64 175 229 callgsubr + hintmask 1111110101000000 + 118 callgsubr + hintmask 1111111001000000 + 73 -680 129 callsubr + hintmask 1111110110000000 + 35 callsubr + hintmask 1111111001000000 + 159 callgsubr + hintmask 1111110110000000 + 21 callsubr + hintmask 1111111001000000 + 8 callgsubr + + + -11 -12 68 -35 453 callgsubr + 171 67 -12 -20 hstemhm + 96 82 -82 185 93 82 hintmask 10101101 + 461 242 callsubr + hintmask 01110101 + -365 12 rmoveto + 82 419 hlineto + hintmask 01110011 + 526 callgsubr + hintmask 01110101 + 141 callsubr + endchar + + + -2 419 238 callsubr + 171 67 hstemhm + 96 82 -82 185 111 82 hintmask 01110100 + 96 hmoveto + 82 419 hlineto + hintmask 01101100 + 526 callgsubr + hintmask 01110100 + -103 -23 callgsubr + hintmask 10110100 + -77 vlineto + -66 -5 rlineto + hintmask 01110100 + -62 66 vlineto + 296 -419 rmoveto + 82 712 -82 hlineto + endchar + + + -61 517 callsubr + 304 78 vstem + 104 185 callgsubr + + + 524 callsubr + 181 65 320 90 502 callgsubr + 246 rmoveto + 149 223 18 32 18 33 16 32 rlinecurve + 4 hlineto + -2 -34 -3 -53 -33 vvcurveto + -200 vlineto + -246 vmoveto + 78 181 87 65 -87 410 -92 hlineto + -273 -421 rlineto + -54 287 vlineto + endchar + + + -191 104 349 callsubr + 150 42 callgsubr + endchar + + + -191 370 349 callsubr + 416 42 callgsubr + endchar + + + -40 94 66 323 91 hstem + 312 78 vstem + 112 184 callsubr + + + -39 517 callsubr + 321 78 vstem + 121 185 callgsubr + + + -77 0 201 -63 63 236 81 hstemhm + 293 77 hintmask 01110000 + 120 201 rmoveto + 126 165 19 28 11 16 17 27 rlinecurve + 3 hlineto + -1 -29 -2 -45 -29 vvcurveto + -133 vlineto + hintmask 10110000 + -201 vmoveto + 77 hlineto + hintmask 01110000 + 138 77 63 -77 317 -93 vlineto + -241 -326 rlineto + -54 257 vlineto + endchar + + + -191 -73 349 callsubr + -27 42 callgsubr + endchar + + + -191 499 349 callsubr + 545 42 callgsubr + endchar + + + -61 94 66 323 91 502 callgsubr + 184 callsubr + + + 187 callgsubr + + + -15 callgsubr + endchar + + + 45 callsubr + endchar + + + -181 249 51 102 52 218 52 hstemhm + 34 64 164 61 -52 52 hintmask 11111000 + 173 249 rmoveto + 95 55 51 84 hvcurveto + 332 vlineto + hintmask 11110100 + -49 hlineto + -6 -30 rlineto + -3 hlineto + 25 -26 -29 13 -35 hhcurveto + -73 -68 -63 -100 -95 53 -64 85 hvcurveto + hintmask 11111000 + 35 28 18 24 29 hvcurveto + -2 -44 rlineto + -13 vlineto + -51 -31 -36 -57 -31 -34 9 19 -30 vhcurveto + -23 -43 rlineto + -23 35 43 -13 39 hhcurveto + 12 205 rmoveto + -59 -28 43 66 66 39 43 47 24 28 -9 -23 26 hvcurveto + -145 vlineto + -27 -28 -23 -14 -26 hhcurveto + endchar + + + -215 248 43 96 52 56 42 130 48 -36 45 hstemhm + 30 53 -43 59 -52 52 133 56 -56 95 -55 60 hintmask 1111010000100000 + 164 248 rmoveto + 104 64 52 60 56 -37 23 -78 hvcurveto + hintmask 1111001010000000 + -62 hlineto + -42 -14 11 21 15 8 11 11 8 hvcurveto + -8 16 17 -2 15 hhcurveto + 67 55 42 70 24 -10 23 -13 13 hvcurveto + hintmask 1111001001000000 + 62 48 -110 hlineto + 6 -15 -16 3 -20 hhcurveto + -68 -58 -43 -72 -38 21 -31 22 -17 hvcurveto + -4 vlineto + hintmask 1111000110000000 + -18 -12 -18 -21 -25 vvcurveto + -25 12 -17 17 -11 vhcurveto + -4 vlineto + hintmask 1111010010000000 + -30 -18 -16 -24 -28 vvcurveto + hintmask 1111010000100000 + -56 54 -30 80 vhcurveto + hintmask 1110101010000000 + 2 289 rmoveto + -39 -28 28 44 45 28 25 39 36 30 -26 -44 -44 -30 -28 -36 hvcurveto + hintmask 1111010000100000 + 8 -246 rmoveto + -57 -34 19 33 18 11 16 20 14 hvcurveto + -4 14 17 0 11 hhcurveto + 53 hlineto + 40 23 -9 -27 -31 -40 -29 -58 hvcurveto + endchar + + + -74 486 -20 32 -20 hstemhm + 201 80 hintmask 01100000 + 196 -179 rmoveto + 85 hlineto + 56 -2 70 -8 58 vhcurveto + hintmask 10100000 + 120 195 47 122 26 164 rrcurveto + -83 hlineto + -11 -135 -54 -132 -63 -122 rrcurveto + -4 hlineto + hintmask 01100000 + -28 152 -72 165 -60 84 -83 -21 rcurveline + 98 -129 97 -245 -161 vvcurveto + -54 -1 -23 -4 -44 vhcurveto + endchar + + + 54 callgsubr + 73 55 96 -20 397 callgsubr + -40 51 196 75 -61 51 -2 80 hintmask 1101101110000010 + 63 callgsubr + hintmask 1101101100101000 + -34 callsubr + hintmask 1101011101001000 + 49 callsubr + hintmask 1101101100101000 + 88 callsubr + hintmask 1101101110001000 + 289 callgsubr + hintmask 1101101110000010 + 289 callsubr + hintmask 1101011101001000 + 32 callgsubr + hintmask 1011101110000010 + 89 callgsubr + hintmask 1101101101000010 + 151 callsubr + hintmask 1011101110000010 + 354 callgsubr + hintmask 1101101100010100 + 738 154 callsubr + + + 228 callgsubr + 73 55 hstemhm + 47 85 -6 494 callgsubr + -48 83 342 callgsubr + 318 callgsubr + hintmask 1111100100000000 + 121 callsubr + hintmask 1111100010000000 + 132 callsubr + hintmask 1111100100000000 + -66 callsubr + hintmask 1111011000000000 + 16 498 -31 callgsubr + + + 54 callgsubr + 76 59 81 -20 444 callgsubr + hintmask 1101101110001000 + 63 callgsubr + hintmask 1101101100110000 + -34 callsubr + hintmask 1101011101010000 + 49 callsubr + hintmask 1101101100110000 + 88 callsubr + hintmask 1101101110010000 + 289 callgsubr + hintmask 1101101110001000 + 289 callsubr + hintmask 1101011101010000 + 32 callgsubr + hintmask 1011101110001000 + 89 callgsubr + hintmask 1101101101001000 + 151 callsubr + hintmask 1011101110001000 + 354 callgsubr + hintmask 1101101101010000 + -41 741 2 callgsubr + + + 228 callgsubr + 76 59 384 callsubr + hintmask 11111100 + 121 callsubr + hintmask 11111010 + 132 callsubr + hintmask 11111100 + -66 callsubr + -25 501 2 callgsubr + + + 54 callgsubr + 183 59 444 callgsubr + hintmask 1101101100010000 + 63 callgsubr + hintmask 1101101001100000 + -34 callsubr + hintmask 1101011010100000 + 49 callsubr + hintmask 1101101001100000 + 88 callsubr + hintmask 1101101100100000 + 289 callgsubr + hintmask 1101101100010000 + 289 callsubr + hintmask 1101011010100000 + 32 callgsubr + hintmask 1011101100010000 + 89 callgsubr + hintmask 1101101010010000 + 151 callsubr + hintmask 1011101100010000 + 354 callgsubr + -155 767 rmoveto + 35 -32 rlineto + hintmask 1101101010100000 + -63 callsubr + endchar + + + 228 callgsubr + 183 59 384 callsubr + hintmask 11111100 + 121 callsubr + hintmask 11111010 + 132 callsubr + hintmask 11111100 + -66 callsubr + -139 527 -12 callsubr + + + 54 callgsubr + 88 108 397 callgsubr + 61 110 36 75 -12 80 hintmask 1101100100101000 + 63 callgsubr + hintmask 1101100001110000 + -34 callsubr + hintmask 1101010010110000 + 49 callsubr + hintmask 1101100001110000 + 88 callsubr + hintmask 1101100100110000 + 289 callgsubr + hintmask 1101100100101000 + 289 callsubr + hintmask 1101010010110000 + 32 callgsubr + hintmask 1011100100101000 + 89 callgsubr + hintmask 1101100010101000 + 151 callsubr + hintmask 1011100100101000 + 354 callgsubr + hintmask 1101101010110000 + 753 vmoveto + -106 callsubr + + + 228 callgsubr + 88 108 hstemhm + 47 85 95 110 53 83 342 callgsubr + 318 callgsubr + hintmask 11101010 + 121 callsubr + hintmask 11101001 + 132 callsubr + hintmask 11101010 + -66 callsubr + hintmask 11111110 + 16 513 -105 callsubr + + + 18 -12 64 -31 -21 655 67 hstemhm + 82 82 108 78 10 81 28 78 hintmask 10111010 + 387 -12 rmoveto + 99 61 65 84 hvcurveto + 162 -197 -22 97 69 91 33 100 vvcurveto + hintmask 01111110 + 79 -58 67 -105 -125 -71 -82 -125 vhcurveto + -515 82 500 vlineto + 103 42 52 71 55 28 -37 -50 vhcurveto + -84 -88 -30 -90 vvcurveto + hintmask 10111010 + -139 197 23 -116 vvcurveto + -42 -29 -38 -55 -38 -33 14 29 -35 vhcurveto + -33 -58 rlineto + -30 41 45 -19 55 hhcurveto + endchar + + + 380 435 callgsubr + hstem + 72 83 197 84 100 83 197 84 vstem + -92 callgsubr + 464 hmoveto + -90 callsubr + endchar + + + -16 437 callsubr + 128 199 vstem + 285 573 -26 callsubr + + + -61 131 402 hstem + 379 84 vstem + 34 131 rmoveto + 429 168 rlineto + 66 vlineto + -429 168 rlineto + -71 vlineto + 211 -78 134 -50 rlineto + -4 vlineto + -134 -50 -211 -78 rlineto + endchar + + + -61 0 62 hstem + 379 84 vstem + 34 153 rmoveto + 429 153 rlineto + 74 vlineto + -429 153 rlineto + -71 vlineto + 210 -73 135 -44 rlineto + -4 vlineto + -135 -44 -210 -73 rlineto + -224 vmoveto + 387 callgsubr + + + -129 503 callsubr + 45 54 104 54 vstem + 181 66 232 callgsubr + 294 -155 232 callgsubr + endchar + + + -129 503 callsubr + 172 54 104 54 vstem + 89 66 205 callgsubr + 193 -28 205 callgsubr + endchar + + + -287 503 callsubr + 45 54 vstem + 181 66 232 callgsubr + endchar + + + -287 503 callsubr + 172 54 vstem + 89 66 205 callgsubr + endchar + + + -14 21 219 callsubr + 214 -20 hstem + 82 82 225 82 vstem + -38 callgsubr + -67 -49 -36 -44 -46 vhcurveto + 3 100 rlineto + 194 -82 vlineto + endchar + + + -192 671 53 hstem + 52 62 145 62 vstem + 437 callgsubr + 229 hlineto + 32 32 26 15 26 hhcurveto + 50 11 374 callgsubr + -27 51 -75 -43 -38 -25 -28 -27 vhcurveto + 3 67 rlineto + 125 -62 vlineto + endchar + + + 76 callgsubr + + + -14 21 219 callsubr + 214 -20 148 46 hstem + 82 82 225 82 vstem + -38 callgsubr + -67 -49 -36 -44 -46 vhcurveto + 3 100 rlineto + 194 -82 vlineto + 101 35 -59 callsubr + + + -16 501 callgsubr + 175 295 vstem + 220 568 94 callgsubr + + + -247 219 63 hstem + 41 230 vstem + 41 219 rmoveto + 230 63 -230 hlineto + endchar + + + -247 239 63 hstem + 41 230 vstem + 41 239 rmoveto + 230 63 -230 hlineto + endchar + + + -322 549 45 hstem + 41 156 vstem + 41 549 rmoveto + 156 45 -156 hlineto + endchar + + + 78 callgsubr + + + -392 778 79 hstemhm + 42 84 -74 62 hintmask 10100000 + 437 callgsubr + 321 -62 hlineto + hintmask 11000000 + 32 62 346 callgsubr + + + 78 callgsubr + + + 359 callgsubr + 28 87 -71 callgsubr + + + 180 callsubr + 215 59 348 callsubr + -113 114 -12 callsubr + + + 180 callsubr + 121 100 hstemhm + -22 99 5 82 7 99 hintmask 11101000 + 286 callsubr + hintmask 11110100 + -54 101 -88 callgsubr + + + 359 callgsubr + 56 87 -26 callsubr + + + 180 callsubr + 135 57 348 callsubr + -91 115 -37 callsubr + + + 224 147 78 -59 63 187 79 -48 64 hstemhm + 40 64 573 65 hintmask 10011100 + 570 147 rmoveto + 99 73 75 114 102 -72 73 -99 -85 -62 -58 -63 -47 hvcurveto + -4 hlineto + hintmask 01101100 + 48 -36 -53 57 -81 hhcurveto + -93 -70 -65 -106 -87 68 -71 83 83 55 63 40 35 hvcurveto + 4 hlineto + hintmask 10011100 + -75 60 57 -47 85 hhcurveto + hintmask 01101100 + -371 82 rmoveto + -53 -42 42 56 56 39 33 54 51 43 -38 -57 42 hvcurveto + -51 -34 -45 -41 -55 hhcurveto + hintmask 10011100 + 372 -4 rmoveto + -62 -46 41 74 -56 hvcurveto + 69 49 50 38 57 hhcurveto + 72 42 -47 -67 -58 -39 -50 -67 hvcurveto + endchar + + + -226 -158 65 818 64 hstemhm + 121 76 -34 75 hintmask 11010000 + 100 -158 rmoveto + 114 24 98 131 hvcurveto + hintmask 11100000 + 148 -41 199 145 vvcurveto + 103 10 59 55 14 12 -2 -2 9 vhcurveto + 10 62 rlineto + 3 -8 -19 3 -20 hhcurveto + -115 -24 -99 -129 hvcurveto + hintmask 11010000 + -148 42 -200 -146 vvcurveto + -104 -10 -56 -57 -14 -12 1 3 -8 vhcurveto + -10 -62 rlineto + -4 9 18 -3 21 hhcurveto + endchar + + + -312 -206 55 172 260 callsubr + 120 106 hstemhm + 38 61 -33 113 -97 82 hintmask 11111000 + 129 313 callgsubr + -13 -12 -5 -15 hhcurveto + -25 -22 15 31 hvcurveto + hintmask 11110010 + 443 callsubr + hintmask 11111000 + 20 hlineto + -28 -28 -36 -39 -54 vvcurveto + 290 callsubr + hintmask 11110100 + -6 792 rmoveto + 31 25 22 31 32 -25 21 -31 -32 -25 -21 -32 -31 25 -22 32 hvcurveto + endchar + + + 143 callgsubr + endchar + + + 25 callgsubr + endchar + + + 392 callsubr + 121 100 hstemhm + -22 99 5 77 12 99 hintmask 10110100 + -97 callsubr + hintmask 01111010 + -147 599 -88 callgsubr + + + 9 callgsubr + 116 -32 rmoveto + 68 197 -66 14 -45 -201 rlineto + 153 22 rmoveto + 24 18 17 25 25 -18 17 -24 -23 -18 -17 -25 -25 18 -17 23 hvcurveto + endchar + + + 25 callgsubr + -27 570 118 callsubr + + + 180 callsubr + 111 152 callsubr + -49 55 76 82 78 55 hintmask 1101000100000000 + 286 callsubr + hintmask 1110100110000000 + 114 91 208 callsubr + hintmask 1110010110000000 + -41 callgsubr + hintmask 1101001100000000 + -53 callsubr + hintmask 1110100110000000 + 119 callgsubr + + + 112 callsubr + + + -389 250 51 477 79 hstemhm + 44 84 -74 62 hintmask 11010000 + 23 250 rmoveto + 67 26 43 72 hvcurveto + 351 -62 -355 vlineto + -39 -8 -21 -31 -13 -7 2 4 -8 vhcurveto + -13 -49 rlineto + -5 15 12 -3 22 hhcurveto + hintmask 11100000 + 63 528 346 callgsubr + + + 431 callgsubr + 215 59 hstem + 83 82 vstem + 241 callgsubr + -62 817 -12 callsubr + + + -63 290 callgsubr + 246 -20 hstem + 82 81 134 callgsubr + endchar + + + -221 395 161 hstem + 52 62 vstem + 437 callgsubr + 81 hlineto + 56 67 93 -148 rlineto + 69 hlineto + -126 190 112 131 rlineto + -69 hlineto + -131 -160 rlineto + -4 307 -62 hlineto + endchar + + + -64 13 -21 29 260 callsubr + 32 -20 hstemhm + 82 77 -77 81 hintmask 01010100 + 82 hmoveto + hintmask 01011000 + 390 callsubr + rrcurveto + hintmask 10010100 + 47 -89 63 -98 52 -59 rrcurveto + hintmask 01010100 + 91 8 -73 80 -80 121 -49 96 rlinecurve + 60 65 55 41 54 17 -8 78 rcurveline + 413 callsubr + hintmask 01100100 + 385 callsubr + + + -63 290 callgsubr + 316 callsubr + 125 hlineto + 90 106 142 -231 rlineto + 90 hlineto + -183 291 161 195 rlineto + -91 hlineto + -206 -258 rlineto + -3 258 -82 hlineto + endchar + + + 90 callsubr + endchar + + + -312 0 712 462 callsubr + endchar + + + -392 395 468 hstem + 52 62 vstem + 437 callgsubr + 468 -62 hlineto + endchar + + + -384 387 51 hstem + 52 62 vstem + 117 387 rmoveto + 17 10 2 4 9 hvcurveto + -9 47 rlineto + -2 -6 -4 0 -4 hhcurveto + -10 -6 6 19 hvcurveto + 400 -62 -395 vlineto + -51 17 -30 48 vhcurveto + endchar + + + 90 callsubr + -61 757 -89 callsubr + + + -312 0 919 462 callsubr + 22 37 -89 callsubr + + + -64 13 -21 29 -21 654 70 hstemhm + 16 471 hintmask 10110000 + 103 -8 rmoveto + 159 411 31 callgsubr + hintmask 01110000 + 134 -403 rlineto + 87 hlineto + -184 514 rlineto + 139 -43 -49 71 -96 hhcurveto + -44 -25 -8 -10 -23 hvcurveto + 20 -68 rlineto + 8 18 18 8 27 hhcurveto + 55 33 -47 -89 27 hvcurveto + 6 -21 -211 -497 rlineto + endchar + + + -293 -12 68 -39 -21 552 164 0 -20 hstemhm + 82 82 55 49 -49 56.5 hintmask 10011100 + 42 callsubr + hintmask 01101100 + 52 560 352 callsubr + hintmask 01011010 + 1 57 rlineto + hintmask 01011100 + -59 hlineto + endchar + + + -293 548 164 hstemhm + 82 82 55 49 -49 56.5 hintmask 11100000 + 82 hmoveto + 82 712 -82 hlineto + 139 -164 352 callsubr + hintmask 11010000 + 1 57 rlineto + hintmask 11100000 + -59 hlineto + endchar + + + -196 -12 68 207 126 323 -20 hstem + 82 82 80 119 vstem + 42 callsubr + 135 275 rmoveto + -48 callsubr + endchar + + + -196 263 126 hstem + 82 82 80 119 455 callgsubr + 712 -82 hlineto + 222 -449 rmoveto + -48 callsubr + endchar + + + -61 131 402 hstem + 34 84 vstem + 463 131 rmoveto + 71 vlineto + -211 78 -134 50 rlineto + 4 vlineto + 134 50 211 78 rlineto + 71 vlineto + -429 -168 rlineto + -66 vlineto + endchar + + + -61 0 62 hstem + 34 84 vstem + 463 153 rmoveto + 71 vlineto + -210 73 -135 44 rlineto + 4 vlineto + 135 44 210 73 rlineto + 71 vlineto + -429 -153 rlineto + -74 vlineto + -306 vmoveto + 387 callgsubr + + + -61 0 71 164 49 59 49 189 69 hstemhm + 53 176 -175 118 -61 81 -32 74 hintmask 11110100 + 54 hmoveto + 399 71 -281 4 hlineto + hintmask 11110001 + 40 41 22 43 70 2 0 2 2 vvcurveto + 141 49 hlineto + hintmask 11111000 + -146 hlineto + -3 20 -5 20 -6 19 rrcurveto + 160 49 hlineto + hintmask 11110010 + -173 hlineto + -6 24 -4 23 25 294 callgsubr + -25 5 -24 7 -25 hvcurveto + -9 hlineto + -61 -5 rlineto + -44 84 vlineto + 7 -20 5 -19 5 -20 rrcurveto + hintmask 11111000 + -32 507 callsubr + vlineto + hintmask 11110001 + 107 hlineto + -1 0 -2 -2 vvcurveto + -75 -38 -68 -68 -37 vhcurveto + endchar + + + 508 callgsubr + 397 66 vstem + 397 104 rmoveto + 66 257 -429 -62 363 hlineto + endchar + + + -41 -10 69 542 69 hstem + 56 405 vstem + 221 -10 rmoveto + 75 hlineto + 165 340 -165 340 rlineto + -75 hlineto + -165 -340 rlineto + 201 -271 rmoveto + -63 133 -65 138 65 137 63 134 31 callgsubr + 62 -134 65 -137 -65 -138 -62 -133 rlineto + endchar + + + -279 -12 68 434 -20 242 -20 hstem + 94 82 vstem + 181 -31 callsubr + 283 vlineto + 104 62 -29 53 -75 -47 rlineto + 269 -82 -310 vlineto + -103 -63 30 -53 73 47 rlineto + -235 225 callgsubr + endchar + + + -288 0 712 hstem + 94 82 vstem + 94 hmoveto + 82 374 hlineto + 93 55 -30 53 -63 -39 rlineto + 269 -82 -311 vlineto + -94 -56 29 -53 65 41 rlineto + endchar + + + 64 callsubr + endchar + + + 1 671 53 427 callgsubr + 136 62 137 62 hintmask 10111000 + 437 callgsubr + 229 hlineto + 33 31 23 14 23 hhcurveto + 46 13 -31 -51 hvcurveto + -194 62 229 vlineto + 33 31 23 14 24 hhcurveto + 46 13 374 callgsubr + -29 51 -72 -43 -35 -28 -32 -30 vhcurveto + 40 -15 -31 20 -44 523 callsubr + -44 -30 -24 -29 -27 hvcurveto + -4 hlineto + -5 45 rlineto + hintmask 10111000 + -50 hlineto + endchar + + + -16 601 57 hstem + 138 266 vstem + 138 601 -37 callsubr + + + 508 callgsubr + 34 429 464 callsubr + endchar + + + -191 -12 401 callgsubr + -12 rmoveto + 366 callsubr + endchar + + + -191 567 401 callgsubr + 567 rmoveto + 366 callsubr + endchar + + + 4 -12 68 -66 69 427 -20 hstemhm + 82 76 -76 82 218 77 -70 70 hintmask 01101100 + 82 -179 rmoveto + hintmask 01110010 + 83 hlineto + -5 77 -1 43 -1 96 rrcurveto + -38 23 32 -9 39 hhcurveto + 53 47 30 62 35 hvcurveto + 2 hlineto + hintmask 10101010 + -65 7 26 -29 55 hhcurveto + hintmask 10101100 + 326 callsubr + 14 218 callsubr + -11 -10 -2 -8 hhcurveto + -21 -15 -8 callsubr + hlineto + hintmask 01101100 + -332 vlineto + -80 -45 -40 -15 -44 hhcurveto + -63 -26 44 86 hvcurveto + 297 -82 vlineto + endchar + + + -61 126 407 hstem + 50 397 vstem + 94 126 rmoveto + 155 160 154 -160 44 45 -155 159 155 158 -44 45 -154 -159 -155 159 -44 -45 155 -158 -155 -159 rlineto + endchar + + + 31 callsubr + endchar + + + -189 671 53 hstemhm + 52 52 -52 62 145 62 hintmask 10110000 + 437 callgsubr + 229 hlineto + 32 32 26 15 27 hhcurveto + 49 11 374 callgsubr + -27 51 -75 vhcurveto + hintmask 11010000 + -43 -37 -24 -29 -28 hvcurveto + -4 hlineto + -6 45 rlineto + hintmask 10110000 + -49 hlineto + endchar + + + 31 callsubr + 199 87 -71 callgsubr + + + 211 21 214 callsubr + 127 106 hstemhm + 138 55 111 -82 callgsubr + 225 82 hintmask 11011011 + 304 -25 callsubr + vhcurveto + hintmask 11011101 + 189 callsubr + hintmask 10111101 + -7 70 rlineto + hintmask 10111011 + -68 hlineto + -218 -55 23 callsubr + + + -11 21 214 callsubr + 108 59 81 -17 callsubr + 225 82 hintmask 11011011 + 62 callsubr + hintmask 11011101 + 189 callsubr + hintmask 10111101 + -7 70 rlineto + hintmask 10111011 + -68 hlineto + 172 88 2 callgsubr + + + -61 -12 68 192 62 275 65 hstem + 40 77 254 77 vstem + 117 105 callsubr + + + -61 -12 68 193 61 294 64 hstemhm + 40 77 253 78 -77 77 hintmask 11110100 + 117 455 rmoveto + 89 49 60 62 vhcurveto + hintmask 11111000 + 84 50 -72 -135 8 hvcurveto + -61 -41 -50 -26 -45 hhcurveto + hintmask 11110100 + -78 -39 57 88 hvcurveto + 93 -467 rmoveto + 124 114 102 266 209 -94 103 -126 -102 -86 -85 -128 -136 71 -70 109 55 57 31 49 39 hvcurveto + -203 -6 -74 -70 -84 hhcurveto + -42 -40 20 31 -28 hvcurveto + -46 -52 rlineto + -38 37 51 -29 71 hhcurveto + endchar + + + -191 -12 51 106 47 159 51 hstem + 39 59 161 61 vstem + 98 271 -47 callgsubr + + + -191 254 51 106 47 159 51 hstem + 39 59 161 61 vstem + 98 537 -47 callgsubr + + + -40 -86 69 182 62 294 65 hstemhm + 38 496 callgsubr + 116 90 callgsubr + + + -33 -12 68 192 62 275 65 hstem + 52 77 254 77 vstem + 129 105 callsubr + + + -75 -12 67 144 59 209 63 hstem + 49 77 222 78 vstem + 126 362 rmoveto + 64 44 41 52 71 43 -48 -97 10 vhcurveto + -46 -37 -45 -18 -35 hhcurveto + -68 -35 39 65 hvcurveto + 78 -374 rmoveto + 116 106 82 207 172 -89 81 -115 -94 -79 -67 -102 -108 66 -54 98 49 51 24 39 35 hvcurveto + -154 -4 -66 -53 -77 hhcurveto + -38 -36 16 23 -24 hvcurveto + -44 -50 rlineto + -31 32 48 -25 65 hhcurveto + endchar + + + -191 -189 51 106 47 159 51 hstem + 39 59 161 61 vstem + 98 94 -47 callgsubr + + + -191 383 51 106 47 159 51 hstem + 39 59 161 61 vstem + 98 666 -47 callgsubr + + + -61 -86 69 182 62 294 65 hstemhm + 30 496 callgsubr + 108 90 callgsubr + + + 440 callsubr + 61 65 rmoveto + 60 hlineto + 76 127 rlineto + 266 62 -230 hlineto + 91 152 rlineto + 139 62 -103 hlineto + 76 127 rlineto + -60 hlineto + -76 -127 rlineto + -266 -62 230 hlineto + -91 -152 rlineto + -139 -62 103 hlineto + endchar + + + -11 269 callgsubr + -42 55 212 82 -58 55 hintmask 1100100010100000 + 62 callsubr + hintmask 1100100100100000 + 189 callsubr + hintmask 1010100100100000 + -7 70 rlineto + hintmask 1011010010010000 + -68 hlineto + 285 91 208 callsubr + hintmask 1101001010010000 + -41 callgsubr + hintmask 1100100001100000 + -53 callsubr + hintmask 1011010010010000 + 119 callgsubr + + + -84 0 85 401 -20 32 -20 hstemhm + 6 448 hintmask 10110000 + 193 hmoveto + 81 hlineto + hintmask 11010000 + 99 172 55 145 26 169 rrcurveto + -83 hlineto + -12 -131 -50 -146 -59 -124 rrcurveto + -4 hlineto + hintmask 10110000 + -28 131 -62 178 -67 104 -83 -21 rcurveline + 83 -124 68 -175 36 -178 rrcurveto + endchar + + + 524 callsubr + 204 57 148 58 183 -20 hstem + 35 432 vstem + 90 hmoveto + 54 hlineto + 25 204 rlineto + 132 hlineto + -24 -204 rlineto + 53 hlineto + 25 204 rlineto + 92 57 -85 hlineto + 18 148 rlineto + 87 58 -81 hlineto + 24 183 rlineto + -53 hlineto + -24 -183 rlineto + -133 hlineto + 23 183 rlineto + -53 hlineto + -23 -183 rlineto + -92 -58 85 hlineto + -18 -148 rlineto + -87 -57 80 hlineto + 61 57 rmoveto + 18 148 rlineto + 132 hlineto + -18 -148 rlineto + endchar + + + -36 callgsubr + endchar + + + 155 callsubr + + + -36 callgsubr + -14 517 -71 callgsubr + + + 191 callgsubr + 183 59 -26 callgsubr + -155 544 -12 callsubr + + + 191 callgsubr + 89 100 hstemhm + 46 85 -6 99 94 99 -6 85 hintmask 11010010 + -102 callgsubr + hintmask 11101100 + -96 531 -88 callgsubr + + + 281 -12 67 -67 68 167 55 152 68 -65 65 hstemhm + 46 84 272 77 250 72 hintmask 01110111 + 264 -12 rmoveto + 80 61 41 80 38 hvcurveto + -75 37 66 -46 76 hhcurveto + 66 52 23 27 42 hvcurveto + hintmask 10110111 + 481 callgsubr + -38 -17 -46 hhcurveto + -83 -66 67 101 -4 hvcurveto + 319 285 callsubr + -68 90 -120 -71 -63 -46 -76 -37 vhcurveto + 79 -35 -67 43 -74 hhcurveto + -118 -102 -93 -163 hvcurveto + hintmask 01110111 + -161 101 -93 117 vhcurveto + 2 68 rmoveto + -80 -56 75 111 112 56 76 80 80 56 -76 -112 -111 -56 -75 -80 hvcurveto + 213 222 rmoveto + hintmask 01101111 + 95 9 56 60 67 hhcurveto + 74 44 -55 -100 hvcurveto + endchar + + + -16 -206 55 -55 209 hstemhm + 191 61 hintmask 10100000 + 282 -206 rmoveto + 24 34 12 15 19 hvcurveto + -22 41 rlineto + -8 -11 -13 -5 -15 hhcurveto + -24 -22 15 31 hvcurveto + hintmask 01100000 + 39 23 39 41 30 vhcurveto + -56 hlineto + hintmask 10100000 + -36 -27 -33 -47 -50 vvcurveto + 290 callsubr + endchar + + + -36 callgsubr + 14 517 -26 callsubr + + + 65 callsubr + endchar + + + -36 callgsubr + -51 512 94 callgsubr + + + 191 callgsubr + 103 57 hstemhm + 46 85 7 266 7 85 hintmask 11110100 + -102 callgsubr + hintmask 11101000 + -133 545 -37 callsubr + + + 209 callgsubr + hstem + 51 79 182 387 callsubr + vstem + -107 callgsubr + endchar + + + 209 callgsubr + hstem + 51 79 182 387 callsubr + vstem + -107 callgsubr + 154 570 118 callsubr + + + 146 callgsubr + endchar + + + 146 callgsubr + 26 502 118 callsubr + + + -61 0 68 470 100 271 callgsubr + 570 350 callgsubr + -16 -58 -10 rrcurveto + -53 vlineto + hintmask 11010000 + 116 -470 -146 hlineto + endchar + + + -61 0 68 489 99 271 callgsubr + 588 350 callgsubr + -15 -58 -11 rrcurveto + -52 vlineto + hintmask 11010000 + 116 -489 -146 hlineto + endchar + + + -191 308 365 callsubr + hmoveto + 8 callsubr + endchar + + + -191 574 365 callsubr + 266 22 callgsubr + endchar + + + -189 21 -21 474 421 callsubr + 574 350 callgsubr + -16 -59 -10 rrcurveto + -53 vlineto + hintmask 11010000 + 117 hlineto + endchar + + + -189 21 -21 538 421 callsubr + 638 350 callgsubr + -16 -59 -10 rrcurveto + -53 vlineto + hintmask 11010000 + 117 hlineto + endchar + + + -200 21 -21 425 93 hstemhm + 50 188 -82 82 hintmask 11010000 + 156 hmoveto + 82 518 -63 hlineto + hintmask 11100000 + -34 -18 -37 -13 -54 -9 rrcurveto + -53 vlineto + hintmask 11010000 + 106 hlineto + endchar + + + -191 131 365 callsubr + -177 22 callgsubr + endchar + + + -191 703 365 callsubr + 395 22 callgsubr + endchar + + + -61 0 68 406 100 271 callgsubr + 506 350 callgsubr + -16 -58 -10 rrcurveto + -53 vlineto + hintmask 11010000 + 116 -406 -146 hlineto + endchar + + + 246 -12 47 318 49 172 438 callgsubr + 270 229 callgsubr + hintmask 11110101 + 148 266 22 callgsubr + 16 -586 -2 callgsubr + hintmask 11111001 + 93 -680 129 callsubr + hintmask 11110110 + 35 callsubr + hintmask 11111001 + 159 callgsubr + hintmask 11110110 + 21 callsubr + hintmask 11111001 + 8 callgsubr + + + 250 0 55 -46 -21 360 54 172 438 callgsubr + 466 63 hintmask 10111100 + 148 266 22 callgsubr + hintmask 01111100 + 12 -586 -2 callgsubr + hintmask 10111100 + -29 -668 194 callsubr + + + 223 517 callgsubr + 179 61 184 438 callgsubr + 421 58 hintmask 01111110 + 148 266 22 callgsubr + 32 -586 -2 callgsubr + -20 -518 rmoveto + 61 98 50 81 31 callgsubr + -4 -109 rlineto + -70 vlineto + hintmask 10011110 + -150 vmoveto + 58 hlineto + hintmask 01111110 + 348 callgsubr + + + 509 callsubr + 139 41 132 51 172 438 callgsubr + 465 63 -48 64 hintmask 11111010 + 148 266 22 callgsubr + 6 -586 -2 callgsubr + 101 426 callgsubr + hintmask 11111100 + -44 callgsubr + hintmask 11111010 + -6 callgsubr + endchar + + + 57 callsubr + + + 60 callgsubr + + + 155 callsubr + + + -16 -12 66 -45 -21 444 66 0 -20 hstemhm + 46 81 288 81 hintmask 10101100 + 127 246 rmoveto + 110 61 76 83 37 32 -14 -26 24 vhcurveto + -214 -259 rlineto + -15 30 -8 38 45 vvcurveto + -44 -269 rmoveto + 49 60 rlineto + -32 39 49 -17 51 hhcurveto + 119 106 93 161 hvcurveto + hintmask 10011100 + 72 -21 58 -33 43 vhcurveto + 54 65 rlineto + hintmask 01101100 + -36 29 -50 -61 rlineto + 33 -39 -49 17 -51 287 callgsubr + -71 21 -57 33 -43 hvcurveto + -54 -65 rlineto + hintmask 10101100 + 225 48 rmoveto + -36 -32 14 25 -25 hvcurveto + 213 260 rlineto + 16 -31 8 -38 -45 vvcurveto + -110 -60 -75 -84 vhcurveto + endchar + + + 368 callsubr + -33 55 236 55 -33 85 hintmask 1101001001000000 + -102 callgsubr + hintmask 1110101010000000 + 72 521 208 callsubr + hintmask 1110011010000000 + -41 callgsubr + hintmask 1101000101000000 + -53 callsubr + hintmask 1110101010000000 + 119 callgsubr + + + 53 callgsubr + + + -184 450 callgsubr + 427 callgsubr + 163 64 hintmask 11011000 + 52 257 rmoveto + 62 104 hlineto + -4 63 rlineto + -24 27 35 -13 29 hhcurveto + 74 66 64 110 99 -46 64 -84 hvcurveto + hintmask 11101000 + -39 -35 -21 -24 -26 hvcurveto + -3 hlineto + -7 37 rlineto + hintmask 11011000 + -49 hlineto + 140 -278 280 callgsubr + + + 2 656 -20 hstem + 41 285 54 84 vstem + 380 -80 rmoveto + 84 736 -84 hlineto + -87 -430 rmoveto + 33 430 -44 hlineto + -138 -103 -56 -157 -151 107 -66 145 hvcurveto + endchar + + + -255 -176 908 hstem + 82 68 vstem + 214 -176 rmoveto + 51 24 rlineto + -77 127 -38 151 152 vvcurveto + 152 38 151 77 127 vhcurveto + -51 24 rlineto + -83 -134 -49 -144 -176 vvcurveto + -176 49 -144 83 -134 vhcurveto + endchar + + + -321 -79 364 callsubr + -79 77 callgsubr + + + -321 187 364 callsubr + 187 77 callgsubr + + + -255 -126 756 hstem + 82 68 vstem + 214 -126 rmoveto + 51 24 rlineto + -77 104 -38 126 124 vvcurveto + 124 38 125 77 105 vhcurveto + -51 24 rlineto + -83 -112 -49 -121 -145 vvcurveto + -146 49 -121 83 -111 vhcurveto + endchar + + + -321 -256 364 callsubr + -256 77 callgsubr + + + -321 316 364 callsubr + 316 77 callgsubr + + + -255 -176 908 hstem + 153 68 vstem + 89 -176 rmoveto + 83 134 49 144 176 vvcurveto + 176 -49 144 -83 134 vhcurveto + -51 -24 rlineto + 77 -127 38 -151 -152 vvcurveto + -152 -38 -151 -77 -127 vhcurveto + endchar + + + -321 -79 365 callgsubr + -79 93 callsubr + + + -321 187 365 callgsubr + 187 93 callsubr + + + -255 -126 756 hstem + 153 68 vstem + 89 -126 rmoveto + 83 111 49 121 146 vvcurveto + 145 -49 121 -83 112 vhcurveto + -51 -24 rlineto + 77 -105 38 -125 -124 vvcurveto + -124 -38 -126 -77 -104 vhcurveto + endchar + + + -321 -256 365 callgsubr + -256 93 callsubr + + + -321 316 365 callgsubr + 316 93 callsubr + + + -30 -12 68 283 65 196 68 hstem + 40 78 289 80 vstem + 118 185 rmoveto + 88 47 66 99 44 47 -20 -56 44 vhcurveto + -131 -20 -63 -76 -86 hhcurveto + -60 -52 50 79 hvcurveto + 104 -197 rmoveto + 158 107 153 228 204 -83 95 -129 -62 -54 -25 -42 -42 hvcurveto + 38 -51 rlineto + 32 31 39 18 42 hhcurveto + 86 54 -66 -167 -12 0 -11 -1 -11 hvcurveto + 44 -39 -56 27 -54 hhcurveto + -135 -82 -92 -132 -119 86 -73 96 hvcurveto + endchar + + + 266 -12 51 215 51 46 51 215 397 callsubr + 159 455 callsubr + vstem + 184 254 -69 callsubr + 19 -317 -2 callgsubr + 76 -680 -14 callgsubr + + + -309 -12 396 callgsubr + -12 rmoveto + -48 callsubr + endchar + + + -381 -8 402 callsubr + -8 rmoveto + 129 callgsubr + endchar + + + -381 258 402 callsubr + 258 rmoveto + 129 callgsubr + endchar + + + -381 -185 402 callsubr + -185 rmoveto + 129 callgsubr + endchar + + + -381 387 402 callsubr + 387 rmoveto + 129 callgsubr + endchar + + + -309 259 396 callgsubr + 259 rmoveto + -48 callsubr + endchar + + + 636 -12 51 215 51 46 51 215 51 hstemhm + 436 callgsubr + 159 455 callsubr + 72 455 callsubr + hintmask 0101110000000000 + 184 254 -69 callsubr + hintmask 1000000100000000 + 19 -317 -2 callgsubr + hintmask 1010001100000000 + 76 -680 -69 callsubr + hintmask 1010000011000000 + 370 -51 -14 callgsubr + + + 524 callsubr + 244 57 116 53.5 -53.5 56 108 57 hstemhm + 83 79 181 141 hintmask 11011110 + 83 hmoveto + 79 244 42 hlineto + 116 90 56 117 12 hvcurveto + 62 56 -62 hlineto + 120 -13 -88 45 -117 hhcurveto + -121 -165 hlineto + hintmask 11101110 + -73 -5 rlineto + hintmask 11011110 + -51 73 vlineto + 79 164 rmoveto + 32 hlineto + 87 52 -30 -78 10 hvcurveto + -181 hlineto + -172 vmoveto + 116 181 vlineto + -76 -9 -53 -40 -87 hhcurveto + endchar + + + 347 callgsubr + -179 rmoveto + 76 170 513 callgsubr + 127 -76 -127 150 callgsubr + + + 122 -9 63 375 69 hstemhm + 46 84 173 73 -73 75 171 85 hintmask 11110100 + 376 299 rmoveto + 89 31 41 40 58 44 -69 -110 -120 -73 -71 -98 -5 vhcurveto + -1 82 -1 82 81 vvcurveto + -73 -478 rmoveto + hintmask 11101100 + 79 hlineto + -1 56 -2 57 -1 57 rrcurveto + 135 4 121 95 164 vvcurveto + 151 -73 93 -110 vhcurveto + hintmask 11110100 + -86 -62 -64 -138 hvcurveto + -242 vlineto + -100 5 -73 63 112 vvcurveto + 91 32 60 58 69 vhcurveto + -67 48 rlineto + -61 -72 -46 -87 -100 vvcurveto + -166 122 -82 135 -4 vhcurveto + endchar + + + 28 -12 68 -40 -21 26 -21 418 68 hstemhm + 135 77 167 77 hintmask 10011100 + 485 -12 rmoveto + 28 22 5 6 17 hvcurveto + -11 63 rlineto + -4 -18 -13 -2 -8 hhcurveto + -31 -15 14 34 47 2 157 6 110 hvcurveto + 97 68 -469 hlineto + -70 -5 rlineto + -63 113 vlineto + hintmask 00111100 + -131 -13 -150 -22 -137 vhcurveto + hintmask 01011100 + 83 -5 rlineto + 14 136 15 151 136 vvcurveto + 172 hlineto + -1 -106 -4 -152 -50 vvcurveto + hintmask 10011100 + -79 29 -43 77 vhcurveto + endchar + + + -61 299 520 callsubr + 104 rmoveto + 65 195 182 62 -182 195 -65 -195 -182 -62 182 hlineto + endchar + + + -191 -12 496 callsubr + -149 325 callgsubr + + + -191 567 496 callsubr + 430 325 callgsubr + + + -61 0 62 242 520 callsubr + 127 rmoveto + 65 177 182 62 -182 190 -65 -190 -182 -62 182 hlineto + -182 -304 rmoveto + 387 callgsubr + + + 115 565 73 hstem + 89 83 328 85 vstem + 89 -120 rmoveto + 83 685 328 -685 85 758 -496 hlineto + endchar + + + 131 -12 67 431 -20 32 -20 hstemhm + 68 79 157 77 168 84 hintmask 10111100 + 304 -179 rmoveto + 77 167 hlineto + 159 4 93 100 174 vvcurveto + 84 -14 67 -30 81 vhcurveto + -80 -19 rlineto + 31 -86 9 -57 -73 vvcurveto + -138 -61 -66 -107 -4 vhcurveto + 567 -77 -567 vlineto + -107 -52 65 98 hvcurveto + 31 2 70 54 vvcurveto + hintmask 11011100 + 43 -1 36 -5 327 callsubr + 6 -51 1 -44 -38 vvcurveto + -130 vlineto + -138 72 -95 164 -2 vhcurveto + endchar + + + -3 -184 -21 193 154 callgsubr + hstemhm + 47 85 258 83 -70 70 hintmask 11101100 + 390 -205 rmoveto + 83 hlineto + hintmask 11011100 + 691 vlineto + hintmask 11011010 + -66 hlineto + hintmask 11101010 + -8 -46 rlineto + -2 hlineto + 38 -44 -39 20 -56 hhcurveto + -111 -100 303 callsubr + hintmask 11101100 + 56 51 30 38 39 hvcurveto + -4 -88 rlineto + -124 89 274 callsubr + + + -184 450 callgsubr + hstemhm + 33 64 163 62 -51 51 hintmask 11110000 + 260 257 rmoveto + 62 459 521 callgsubr + -48 hlineto + -6 -32 rlineto + -4 hlineto + 26 -25 -30 14 -35 hhcurveto + -73 -68 -63 -106 -105 53 -63 85 hvcurveto + hintmask 11110000 + 35 33 16 24 24 hvcurveto + -3 -58 rlineto + -76 69 rmoveto + -59 -28 45 73 73 40 44 46 24 27 -10 -23 26 hvcurveto + -165 vlineto + -25 -26 -24 -12 -26 hhcurveto + endchar + + + -133 -12 126 -105 -21 626 68 hstemhm + 139 119 39 80 hintmask 01111000 + 160 198 71 callsubr + hvcurveto + hintmask 10111000 + 38 -27 26 -33 -33 -26 -26 -38 vhcurveto + hintmask 01111000 + -36 26 -26 33 vhcurveto + endchar + + + -133 -12 126 -105 -21 497 65 hstemhm + 139 119 29 80 hintmask 01101000 + 160 198 rmoveto + 72 hlineto + -15 96 150 7 123 vvcurveto + 77 -62 49 -95 -69 -52 -28 -38 -41 vhcurveto + 40 -48 rlineto + 33 34 37 16 41 hhcurveto + 58 29 -32 -39 -93 -147 -16 20 -107 523 callgsubr + 38 -210 rmoveto + 33 27 26 36 hvcurveto + hintmask 10111000 + 38 -27 26 -33 -33 -26 -26 -38 vhcurveto + hintmask 01111000 + -36 26 -26 33 vhcurveto + endchar + + + -133 -196 69 499 126 0 -20 hstemhm + 48 80 39 119 hintmask 10111000 + 215 -196 rmoveto + 73 56 36 47 43 hvcurveto + -48 43 rlineto + -36 -31 -39 -21 -44 hhcurveto + -65 -32 43 53 106 159 57 -22 156 hvcurveto + -73 hlineto + 17 -140 -161 -53 -131 vvcurveto + -99 66 -61 101 vhcurveto + hintmask 11011000 + 12 568 176 callsubr + + + -133 -32 65 371 126 0 -20 hstemhm + 58 80 29 119 hintmask 10110000 + 215 -32 rmoveto + 69 52 28 38 41 hvcurveto + -40 48 rlineto + -33 -34 -37 -16 -41 hhcurveto + -58 -29 32 39 93 147 16 -20 107 hvcurveto + -73 hlineto + 16 -96 -150 -7 -123 vvcurveto + -77 62 -49 95 vhcurveto + hintmask 11011000 + 12 436 176 callsubr + + + -132 431 394 callsubr + 92 85 vstem + 99 431 235 callgsubr + 193 -167 385 callgsubr + + + -132 346 394 callsubr + 92 85 vstem + 99 346 235 callgsubr + 193 -167 385 callgsubr + + + -132 17 106 hstem + 138 55 122 55 vstem + 86 -145 -41 callsubr + 200 -38 23 callsubr + + + -132 428 106 hstem + 57 54 123 54 vstem + 120 428 237 callgsubr + 177 hmoveto + 139 callsubr + + + -162 343 106 hstem + 57 54 123 54 vstem + 120 343 237 callgsubr + 177 hmoveto + 139 callsubr + + + -132 593 106 hstem + 138 55 122 55 vstem + 86 431 -41 callsubr + 200 -38 23 callsubr + + + -162 508 106 hstem + 138 55 122 55 vstem + 86 346 -41 callsubr + 200 -38 23 callsubr + + + -309 428 106 hstem + 57 54 vstem + 120 428 rmoveto + 139 callsubr + + + -309 343 106 hstem + 57 54 vstem + 120 343 rmoveto + 139 callsubr + + + -309 593 106 hstem + 138 55 vstem + 86 431 23 callsubr + + + -309 508 106 hstem + 138 55 vstem + 86 346 23 callsubr + + + -309 17 106 hstem + 138 55 vstem + 86 -145 23 callsubr + + + -309 431 394 callsubr + vstem + 99 431 385 callgsubr + + + -309 346 394 callsubr + vstem + 99 346 385 callgsubr + + + 125 callsubr + endchar + + + -318 667 49 -49 57 hstemhm + 52 53.5 -53.5 63 hintmask 01010000 + 52 395 rmoveto + 63 203 hlineto + 51 22 32 18 28 hhcurveto + 11 13 -3 -2 8 hvcurveto + 12 56 rlineto + 4 -8 -14 2 -16 hhcurveto + hintmask 01100000 + -35 -31 -22 -42 -25 hvcurveto + -3 hlineto + hintmask 10100000 + -7 56 rlineto + hintmask 10010000 + -50 hlineto + endchar + + + 125 callsubr + 126 87 -71 callgsubr + + + -1 -95 90 hstem + 41 520 vstem + 281 -95 rmoveto + 63 hlineto + 217 915 rlineto + -60 hlineto + -178 -761 -4 -21 -4 -22 -4 -21 rlinecurve + -4 hlineto + -5 21 -5 22 -7 21 -116 346 rcurveline + -133 -59 19 -45 71 32 rlineto + endchar + + + 461 callgsubr + 106 59 81 -17 callsubr + hintmask 11001101 + 62 callgsubr + hintmask 10011101 + 16 72 rlineto + hintmask 11001110 + 111 callsubr + hintmask 10101110 + -7 88 rlineto + hintmask 10101101 + -68 hlineto + 99 88 2 callgsubr + + + -135 319 37 131 32 67 34 57 36 hstem + 23 40 76 41 69 44 67 40 vstem + 211 319 rmoveto + 104 85 80 117 117 -85 80 -104 -103 -85 -80 -117 -117 85 -80 103 hvcurveto + 37 vmoveto + -84 -64 65 95 94 64 67 84 84 65 -67 -94 -95 -65 -65 -84 hvcurveto + -72 61 rmoveto + 41 70 41 hlineto + 35 -70 rlineto + 46 hlineto + -46 83 rlineto + 22 8 15 23 24 vvcurveto + 48 -36 17 -42 vhcurveto + -76 hlineto + 41 -101 rmoveto + 67 28 vlineto + 30 11 -13 -20 -22 -16 -12 -27 hvcurveto + endchar + + + -9 218 callgsubr + 509 callgsubr + 260 85 hintmask 11101000 + 211 callgsubr + hintmask 11011000 + -42 -43 11 55 -45 hvcurveto + 124 vlineto + 122 61 60 71 90 38 -72 -107 vhcurveto + hintmask 11101000 + -120 -58 -73 -72 vhcurveto + endchar + + + -16 554 37 123 37 hstem + 161 53 114 53 vstem + 271 554 rmoveto + 34 callsubr + + + 87 callgsubr + + + -275 387 48 241 48 hstem + 35 59 109 60 vstem + 144 387 rmoveto + 73 46 41 58 59 -51 19 -46 17 hvcurveto + -37 15 -35 10 30 vvcurveto + 20 18 20 36 30 20 -10 -18 24 vhcurveto + 31 40 rlineto + 19 -27 -34 17 -46 hhcurveto + -70 -41 -42 -50 -55 50 -23 45 -17 hvcurveto + 37 -14 36 -13 -30 vvcurveto + -25 -21 -20 -37 -36 -31 15 22 -29 vhcurveto + -30 -41 rlineto + -25 32 45 -19 48 hhcurveto + endchar + + + 317 callgsubr + hstem + 55 79 174 79 vstem + -73 callsubr + -8 585 -71 callgsubr + + + 317 callgsubr + 76 59 81 -20 hstem + 55 79 174 79 vstem + -73 callsubr + -35 586 2 callgsubr + + + 317 callgsubr + 183 59 hstem + 55 79 174 79 vstem + -73 callsubr + -149 612 -12 callsubr + + + -61 -64 64 620 64 hstemhm + 45 72 -18 76 146 76 -17 72 hintmask 11100100 + 236 -64 rmoveto + hintmask 11101000 + 94 67 58 79 34 -11 26 -19 22 hvcurveto + hintmask 11010100 + 51 29 34 37 63 184 -277 -19 108 vvcurveto + 34 23 29 56 44 35 -20 -26 32 vhcurveto + 40 53 rlineto + 31 -38 -53 26 -63 hhcurveto + -100 -52 -61 -69 -35 12 -26 20 -21 hvcurveto + hintmask 11101000 + -50 -28 -36 -43 -58 -185 276 25 -114 vvcurveto + -38 -32 -31 -53 -53 -37 20 32 -33 vhcurveto + -50 -45 rlineto + hintmask 11100100 + -44 41 61 -27 71 hhcurveto + -119 412 rmoveto + 41 23 25 38 21 vhcurveto + 83 -48 119 -19 -90 vvcurveto + -44 -21 -23 -39 -18 vhcurveto + -83 49 -120 18 88 vvcurveto + endchar + + + 114 callsubr + + + 524 callsubr + 567 71 hstem + 177 85 vstem + 177 hmoveto + 85 hlineto + 11 249 31 145 151 193 487 callsubr + -175 -48 499 callsubr + + + 524 callsubr + 586 70 hstem + 177 85 vstem + 177 hmoveto + 85 hlineto + 11 257 28 152 154 197 rrcurveto + 50 -411 -70 318 vlineto + -129 -179 -45 -158 -11 -249 rrcurveto + endchar + + + -191 335 362 callgsubr + hmoveto + 48 callsubr + endchar + + + -191 601 362 callgsubr + 266 rmoveto + 48 callsubr + endchar + + + -69 503 71 hstem + 165 85 vstem + 165 -74 rmoveto + 85 hlineto + 10 253 32 149 149 195 487 callgsubr + -177 -48 -156 -11 -244 rrcurveto + endchar + + + -67 21 -21 567 71 hstem + 167 85 vstem + 167 hmoveto + 85 hlineto + 11 249 29 145 149 193 487 callgsubr + -175 -46 499 callsubr + + + -127 21 -21 450 68 hstem + 142 83 vstem + 142 hmoveto + 83 hlineto + 11 202 25 113 135 154 rrcurveto + 49 -363 -68 270 vlineto + -111 -141 -40 -119 -10 -190 rrcurveto + endchar + + + -191 158 362 callgsubr + -177 rmoveto + 48 callsubr + endchar + + + -191 730 362 callgsubr + 395 rmoveto + 48 callsubr + endchar + + + -61 503 71 hstem + 177 85 vstem + 177 -74 rmoveto + 85 hlineto + 11 251 31 152 151 194 487 callsubr + -176 -48 -159 -11 -242 rrcurveto + endchar + + + 243 -12 47 318 49 199 55 hstemhm + 111 67 300 229 callgsubr + hintmask 11110101 + 111 266 rmoveto + 48 callsubr + 39 -278 -2 callgsubr + hintmask 11111001 + 103 -680 129 callsubr + hintmask 11110110 + 35 callsubr + hintmask 11111001 + 159 callgsubr + hintmask 11110110 + 21 callsubr + hintmask 11111001 + 8 callgsubr + + + -12 -12 68 362 68 -66 66 -62 62 hstemhm + 46 85 265 80 hintmask 10101100 + 264 -12 rmoveto + 119 93 88 151 hvcurveto + hintmask 10011100 + 91 -36 68 -60 34 vhcurveto + 4 vlineto + hintmask 10101100 + 55 -1 44 -3 55 -4 rrcurveto + 70 -266 vlineto + -115 -107 -78 -170 -161 100 -89 118 hvcurveto + 1 68 rmoveto + -77 -57 70 112 hvcurveto + hintmask 11001100 + 121 58 59 77 83 47 -87 -97 vhcurveto + hintmask 10101100 + -109 -55 -69 -76 vhcurveto + endchar + + + -61 362 callsubr + hstemhm + 48 403 callsubr + hintmask 11110100 + 261 92 callsubr + + + -61 -12 65 293 62 192 68 hstemhm + 49 403 callsubr + hintmask 11110100 + 262 346 rmoveto + 79 39 -56 -89 -89 -48 -59 -63 hvcurveto + hintmask 11101100 + -81 -50 73 135 -9 hvcurveto + hintmask 11110100 + 60 40 52 25 41 hhcurveto + 8 -358 rmoveto + 102 86 86 127 138 -71 69 -111 -52 -57 -31 -49 -40 hvcurveto + 202 4 75 70 90 hhcurveto + 39 40 -20 -30 25 420 callsubr + 38 -36 -49 29 -69 hhcurveto + -127 -116 -98 -257 -217 95 -108 126 hvcurveto + endchar + + + -191 -12 51 159 47 106 51 hstem + 45 61 160 60 vstem + 191 198 34 callgsubr + + + -191 254 51 159 47 106 51 hstem + 45 61 160 60 vstem + 191 464 34 callgsubr + + + -40 362 callsubr + -68 -20 hstemhm + 57 403 callsubr + hintmask 11011010 + 270 75 callsubr + + + -33 362 callsubr + hstemhm + 61 403 callsubr + hintmask 11110100 + 274 92 callsubr + + + -70 -12 63 208 60 144 67 hstem + 62 77 226 77 vstem + 259 259 rmoveto + 70 36 -42 -62 -62 -44 -42 -54 -71 -45 46 98 -10 hvcurveto + 45 35 47 19 36 hhcurveto + 7 -271 rmoveto + 96 80 67 102 108 -65 54 -99 -50 -53 -25 -39 -36 hvcurveto + 155 4 66 53 79 hhcurveto + 38 36 -16 -24 24 hvcurveto + 45 50 rlineto + 32 -34 -46 25 -64 hhcurveto + -119 -106 -83 -206 -172 88 -81 116 hvcurveto + endchar + + + -191 -189 51 159 47 106 51 hstem + 45 61 160 60 vstem + 191 21 34 callgsubr + + + -191 383 51 159 47 106 51 hstem + 45 61 160 60 vstem + 191 593 34 callgsubr + + + -61 362 callsubr + -68 -20 hstemhm + 49 403 callsubr + hintmask 11011010 + 262 75 callsubr + + + -208 -160 870 hstem + 10 327 vstem + 10 -160 rmoveto + 60 hlineto + 267 870 rlineto + -60 hlineto + endchar + + + 187 callgsubr + + + -358 endchar + + + -424 endchar + + + -61 0 71 214 56 240 69 hstemhm + 54 118 -61 81 -32 74 hintmask 11110000 + 54 hmoveto + 399 71 -281 4 hlineto + hintmask 11100100 + 40 41 22 43 70 vvcurveto + 20 -2 18 -3 18 vhcurveto + 146 56 521 callgsubr + -159 hlineto + -12 42 -12 39 42 294 callgsubr + -42 14 -41 13 -42 hvcurveto + -18 hlineto + -67 -4 rlineto + -52 vlineto + hintmask 11100100 + 100 hlineto + 4 -18 3 -18 -19 vvcurveto + -75 -38 -68 -68 -37 vhcurveto + endchar + + + -54 -120 71 616 71 hstemhm + 22 104 -93 103 hintmask 11100000 + 22 -120 rmoveto + 479 71 -375 4 hlineto + 222 305 rlineto + hintmask 11010000 + -212 303 rlineto + 4 337 71 -440 -53 vlineto + 227 -326 rlineto + hintmask 11100000 + -238 -326 rlineto + endchar + + + 398 callgsubr + hstemhm + 96 83 -74 74 hintmask 11100000 + 15 callgsubr + hintmask 11010000 + 265 callsubr + hintmask 11100000 + 174 callgsubr + endchar + + + -326 387 50 229 49 -49 50 hstemhm + 64 62 -56 56 hintmask 10110000 + 160 387 rmoveto + 23 24 6 6 18 hvcurveto + -13 46 rlineto + -6 -12 -12 -2 -13 hhcurveto + -34 -15 22 40 hvcurveto + 167 88 50 -88 vlineto + hintmask 11010000 + 91 vlineto + hintmask 11001000 + -52 hlineto + -8 -91 rlineto + hintmask 11010000 + -50 -2 rlineto + hintmask 10110000 + -48 48 -167 vlineto + -67 25 -45 71 vhcurveto + endchar + + + -98 -12 68 363 67 hstem + 189 77 vstem + 288 -12 rmoveto + 31 28 7 6 19 hvcurveto + -12 63 rlineto + -4 -16 -16 -4 -15 hhcurveto + -27 -14 14 34 98 1 108 3 109 hvcurveto + 164 67 -338 hlineto + -70 -5 rlineto + -62 163 -309 vlineto + -79 25 -43 74 vhcurveto + endchar + + + 398 callgsubr + 62 74 hstemhm + 96 83 -74 74 75 49 -49 56.5 hintmask 11110100 + 15 callgsubr + hintmask 11101100 + 265 callsubr + hintmask 11110100 + 174 callgsubr + 21 560 352 callsubr + hintmask 11110010 + 1 57 rlineto + hintmask 11110100 + -59 hlineto + endchar + + + -36 -12 68 275 59 266 68 hstem + 59 81 242 81 vstem + 261 -12 rmoveto + 125 77 114 257 238 -77 127 -125 -125 -77 -127 -238 -257 77 -114 125 hvcurveto + 668 vmoveto + 66 50 -77 -189 5 hvcurveto + -242 hlineto + 189 5 50 77 66 hhcurveto + -600 vmoveto + -67 -50 70 205 -4 hvcurveto + 242 hlineto + -205 -4 -50 -70 -67 hhcurveto + endchar + + + -3 -184 -21 193 177 callsubr + 214 -20 hstem + 82 82 258 85 vstem + 82 -205 rmoveto + 82 164 hlineto + -1 83 rlineto + -34 44 43 -20 47 hhcurveto + 448 callsubr + 151 -68 97 -128 -53 -52 -29 -34 -43 hvcurveto + 1 84 rlineto + 193 -82 vlineto + 201 -655 476 callsubr + 245 callgsubr + -120 -59 -73 -80 hvcurveto + endchar + + + 67 callgsubr + + + -61 -12 68 253 63 229 67 hstemhm + 159 149 32 84 -61 83 hintmask 11110100 + 236 -12 rmoveto + 117 93 71 116 90 -61 58 -77 19 477 callsubr + 70 25 46 52 80 vvcurveto + 105 -80 60 -111 -75 -59 -33 -46 -49 vhcurveto + 44 -52 rlineto + 37 38 45 27 53 hhcurveto + 68 42 -41 -63 -70 -45 -55 -136 hvcurveto + -63 vlineto + hintmask 11110100 + 152 52 -52 -78 -76 -55 -47 -77 -75 -50 36 40 -38 hvcurveto + -42 -54 rlineto + -47 43 65 -43 102 hhcurveto + endchar + + + -191 -12 253 callgsubr + -12 29 callsubr + + + -191 254 253 callgsubr + 254 29 callsubr + + + 66 callsubr + + + 67 callgsubr + + + -99 -12 66 184 60 168 64 hstemhm + 144 140 20 83 -63 83 hintmask 11110100 + 213 -12 rmoveto + 108 86 56 94 71 -54 45 -69 15 hvcurveto + 3 vlineto + hintmask 11111000 + 61 22 42 40 60 vvcurveto + 86 -74 50 -102 -68 -54 -27 -39 -45 vhcurveto + 42 -51 rlineto + 33 35 42 20 46 hhcurveto + 59 36 -30 -48 -51 -41 -39 -119 hvcurveto + hintmask 11110100 + -60 vlineto + 136 44 -38 -58 -53 -47 -35 -64 -70 -45 28 32 -35 hvcurveto + -40 -52 rlineto + -40 39 63 -34 88 hhcurveto + endchar + + + -191 -189 253 callgsubr + -189 29 callsubr + + + -191 383 253 callgsubr + 383 29 callsubr + + + 66 callsubr + + + 263 -12 47 219 51 48 49 42 256 callgsubr + 179 229 callgsubr + hintmask 1111101010100000 + 391 callgsubr + hintmask 1111110010100000 + -44 callgsubr + hintmask 1111101010100000 + -6 callgsubr + 20 264 callsubr + hintmask 1111101100100000 + 73 -680 129 callsubr + hintmask 1111101011000000 + 35 callsubr + hintmask 1111101100100000 + 159 callgsubr + hintmask 1111101011000000 + 21 callsubr + hintmask 1111101100100000 + 8 callgsubr + + + 238 517 callgsubr + 104 51 24 61 54 435 callsubr + 239 63 -48 64 330 58 hintmask 0111011011000000 + 179 254 142 callsubr + hintmask 0111011101000000 + -44 callgsubr + hintmask 0111011011000000 + -6 callgsubr + 39 264 callsubr + -43 -518 rmoveto + hintmask 0111111011000000 + 61 98 50 81 31 callgsubr + -4 -109 rlineto + -70 vlineto + hintmask 1001011011000000 + -150 vmoveto + 58 hlineto + hintmask 0111111011000000 + 348 callgsubr + + + -16 577 60 24 60 hstemhm + 98 55 236 55 vstemhm + 343 38 callgsubr + + + 280 callsubr + + + -494 659 -20 hstem + -19 105 vstem + 36 464 rmoveto + 58 callsubr + + + 79 366 310 -262 504 callgsubr + -54 54 hstemhm + 102 60 148 505 callgsubr + hintmask 01011110 + 102 366 rmoveto + 60 256 100 54 -259 -54 99 hlineto + 208 -256 rmoveto + 56 137 hlineto + hintmask 01101110 + -7 105 31 callgsubr + 224 callgsubr + hintmask 10001110 + -137 55 vlineto + hintmask 01101110 + 235 callsubr + rlineto + hintmask 01011110 + -47 116 rlineto + -73 hlineto + endchar + + + 337 -80 825 293 callgsubr + endchar + + + 337 -60 825 299 callsubr + endchar + + + -61 0 71 512 67 hstem + 340 471 callsubr + -185 473 callgsubr + 151 158 109 119 120 vvcurveto + 113 -73 75 -118 -83 -57 -39 -58 -53 vhcurveto + 47 -47 rlineto + 43 37 46 34 53 hhcurveto + 81 40 -52 -73 -103 -108 -115 -192 -191 hvcurveto + endchar + + + -61 0 71 530 67 hstem + 340 471 callsubr + -181 hlineto + -33 -40 -3 -3 -34 hvcurveto + 153 145 103 134 130 vvcurveto + 117 -73 77 -118 -83 -57 391 callsubr + 46 33 53 hhcurveto + 81 40 -54 -76 -112 -95 -131 -205 -179 hvcurveto + endchar + + + -191 0 373 callsubr + hmoveto + -33 callgsubr + endchar + + + -191 266 373 callsubr + 91 callgsubr + endchar + + + -61 0 71 446 67 hstem + 335 80 vstem + 48 hmoveto + 396 71 -163 473 callgsubr + 144 134 97 92 108 vvcurveto + 111 -69 74 -117 -82 -53 391 callsubr + 41 33 54 hhcurveto + 80 35 -51 -70 -93 -97 -96 -190 -158 hvcurveto + endchar + + + -57 0 71 512 67 hstem + 340 80 vstem + 43 hmoveto + 405 71 -177 hlineto + -33 -40 -3 -3 -34 hvcurveto + 148 158 108 119 120 vvcurveto + 113 -71 75 -118 -81 -57 -36 -61 -56 vhcurveto + 48 -47 rlineto + 43 36 47 34 53 hhcurveto + 82 37 -52 -73 -103 -106 -115 -191 -191 hvcurveto + endchar + + + -105 0 70 394 66 hstem + 305 79 vstem + 40 hmoveto + 368 70 -147 hlineto + -36 -37 -2 -3 -29 hvcurveto + 127 118 98 95 98 vvcurveto + 92 -67 62 -107 -70 -57 -29 -51 -49 vhcurveto + 46 -45 rlineto + 32 32 41 27 49 hhcurveto + 69 34 -37 -58 -81 -96 -93 -169 -147 hvcurveto + endchar + + + -191 -177 373 callsubr + -177 194 callsubr + + + -191 395 373 callsubr + 395 194 callsubr + + + -61 0 71 446 67 hstem + 338 471 callsubr + -176 473 callgsubr + 144 134 105 92 108 vvcurveto + 111 -73 74 -116 -83 -57 391 callsubr + 46 33 54 hhcurveto + 79 39 -51 -70 -93 -108 -96 -190 -158 hvcurveto + endchar + + + 263 -12 51 139 41 47 55 30 51 212 54 hstemhm + 238 63 392 63 -48 64 hintmask 11101101 + 53 91 callgsubr + 151 -315 -2 callgsubr + 67 426 callgsubr + hintmask 11111110 + -44 callgsubr + hintmask 11101101 + -6 callgsubr + endchar + + + -30 callsubr + endchar + + + -188 387 53 hstemhm + 50 62 145 62 -52.5 52.5 hintmask 11100000 + 153 387 rmoveto + hintmask 11010000 + 43 37 24 29 27 hvcurveto + 3 hlineto + 7 -45 rlineto + hintmask 11100000 + 49 321 -62 -229 hlineto + -33 -31 -27 -14 -26 hhcurveto + -50 -11 30 51 hvcurveto + 195 -62 -204 vlineto + -74 28 -51 75 vhcurveto + endchar + + + 79 354 49 11 504 callgsubr + -42 49 hstemhm + 28 505 callgsubr + 65 61 hintmask 01101110 + 28 366 rmoveto + 56 137 hlineto + -7 105 31 callgsubr + 227 callgsubr + hintmask 11011110 + 508 -322 rmoveto + 42 34 18 29 26 hvcurveto + -33 34 rlineto + -21 -19 -18 -11 -28 hhcurveto + -48 -40 41 76 74 42 40 47 25 16 -10 -17 17 hvcurveto + 32 37 rlineto + 21 -19 -33 18 -40 hhcurveto + -82 -66 -63 -102 -103 63 -61 82 hvcurveto + endchar + + + 95 366 47 1 504 callgsubr + -47 47 hstemhm + 28 505 callgsubr + 76 60 123 61 hintmask 10101111 + 28 366 rmoveto + 56 137 hlineto + -7 105 31 callgsubr + hintmask 01101111 + 227 callgsubr + hintmask 10011111 + 374 -310 rmoveto + 94 hlineto + 96 54 59 99 97 -54 55 -98 hvcurveto + -92 hlineto + 60 -263 rmoveto + 216 30 vlineto + 62 31 -37 -68 -70 -31 -41 -61 hvcurveto + endchar + + + -30 callsubr + 33 585 -71 callgsubr + + + 95 callsubr + 105 55 96 -20 hstemhm + 75 83 -43 494 callgsubr + -47 -21 callgsubr + hintmask 1011101100000000 + 47 583 -31 callgsubr + + + 95 callsubr + 215 59 81 callgsubr + hintmask 10111100 + 307 callsubr + hintmask 10111010 + 43 callsubr + hintmask 01111010 + 7 -76 rlineto + hintmask 01111100 + 408 callgsubr + hintmask 10111100 + -77 callsubr + -108 612 -12 callsubr + + + 95 callsubr + 121 100 hstemhm + 75 83 -33 99 94 99 -37 28 callgsubr + 599 -88 callgsubr + + + -30 callsubr + 61 585 -26 callsubr + + + 56 callsubr + endchar + + + -30 callsubr + -4 580 94 callgsubr + + + 95 callsubr + 135 57 hstemhm + 75 83 -20 266 -24 -18 callgsubr + hintmask 10111010 + 307 callsubr + hintmask 10111001 + 43 callsubr + hintmask 01111001 + 7 -76 rlineto + hintmask 01111010 + 408 callgsubr + hintmask 10111010 + -77 callsubr + hintmask 10110100 + -86 613 -37 callsubr + + + -58 -126 55 hstem + 12 476 vstem + 12 -126 rmoveto + 476 55 -476 hlineto + endchar + + + 224 callsubr + 41 367 callsubr + 52 86 36 381 callsubr + -54 76 522 callgsubr + -87 callsubr + 521 callsubr + 78 721 -35 callgsubr + hintmask 1110111010000000 + 33 callsubr + 521 callsubr + 136 callgsubr + + + 393 callgsubr + 63 367 callsubr + 52 85 -6 56 220 76 -54 56 hintmask 1110110100000000 + -80 callgsubr + 522 callsubr + 76 321 callsubr + hintmask 1110101100000000 + 33 callsubr + 522 callsubr + 136 callgsubr + + + 54 callgsubr + 79 152 callsubr + 45 72 -54 80 -70 69 -57 55 209 75 -48 55 -19 80 hintmask 110110010010000010000000 + 63 callgsubr + hintmask 110110010000101000000000 + -34 callsubr + hintmask 110101010001001000000000 + 49 callsubr + hintmask 110110010000101000000000 + 88 callsubr + hintmask 110110010010001000000000 + 289 callgsubr + hintmask 110110010010000010000000 + 289 callsubr + hintmask 110101010001001000000000 + 32 callgsubr + hintmask 101110010010000010000000 + 89 callgsubr + hintmask 110110010001000010000000 + 151 callsubr + hintmask 101110010010000010000000 + 354 callgsubr + hintmask 110110101001000100000000 + 72 744 208 callsubr + hintmask 110110100101000100000000 + -41 callgsubr + hintmask 110110010000011000000000 + -53 callsubr + hintmask 110110101001000100000000 + 119 callgsubr + + + 228 callgsubr + 79 60 24 60 hstemhm + 47 85 -23 55 226 83 -73 55 -54.5 318 callgsubr + hintmask 1110110100000000 + 121 callsubr + hintmask 1110110001000000 + 132 callsubr + hintmask 1110110100000000 + -66 callsubr + 522 callsubr + 88 504 232 callsubr + hintmask 1110101100000000 + -53 callsubr + 522 callsubr + 119 callgsubr + + + -14 -212 59 353 67 321 68 hstem + 188 65 vstem + 284 51 callgsubr + -81 579 -104 callgsubr + 29 41 -89 callsubr + + + -88 -212 59 174 98 callsubr + hstem + 153 65 vstem + 249 51 callgsubr + -69 494 -100 callgsubr + 30 63 -89 callsubr + + + -54 339 callgsubr + 66 376 347 callsubr + hintmask 11111010 + 248 74 callsubr + 37 24 47 33 21 hvcurveto + 25 19 29 20 26 19 rrcurveto + 3 hlineto + 7 -58 rlineto + hintmask 11110100 + -68 callsubr + -87 60 -51 84 vhcurveto + hintmask 11111100 + 443 callgsubr + hintmask 11111010 + 290 callsubr + hintmask 11110100 + -30 312 callgsubr + 35 519 -71 callgsubr + + + 14 callsubr + 3 516 -71 callgsubr + + + 104 callgsubr + -32 909 -89 callsubr + + + 424 callsubr + hstemhm + 90 83 11 65 hintmask 01111000 + 90 hmoveto + hintmask 11111100 + 162 hlineto + -33 -25 -35 -48 -52 226 callsubr + 26 34 13 15 20 vhcurveto + 168 callsubr + -16 hhcurveto + -23 -24 15 31 37 23 39 41 31 hvcurveto + 113 66 hlineto + hintmask 01111000 + -70 callgsubr + 157 63 -89 callsubr + + + -62 -206 55 374 415 callgsubr + hintmask 11110110 + 272 355 callsubr + 33 12 15 20 hvcurveto + -22 41 rlineto + -8 -12 -12 -5 -15 hhcurveto + -24 -22 15 31 44 28 43 62 12 hvcurveto + 38 7 32 14 36 23 -29 54 rcurveline + -23 -36 -39 -15 -46 hhcurveto + hintmask 11101110 + -81 callgsubr + hintmask 11110110 + -111 -107 -97 -159 -144 85 -92 113 -16 hvcurveto + -37 -27 -25 -41 -43 vvcurveto + -56 40 -29 50 vhcurveto + -146 416 callgsubr + -136 291 -71 callgsubr + + + 59 198 callsubr + 46 258 callgsubr + hstem + 52 86 227 64 45 76 vstem + -87 callsubr + -84 -214 -32 callgsubr + + + -9 198 callsubr + 46 473 callsubr + hstemhm + 52 85 182 64 24 76 hintmask 10111101 + -80 callgsubr + -89 -214 rmoveto + hintmask 11111111 + -77 callgsubr + + + 54 callgsubr + 77 38 90 41 397 callgsubr + 38 64 105 75 -12 80 hintmask 1101100110010100 + 63 callgsubr + hintmask 1101100100111000 + -34 callsubr + hintmask 1101010101011000 + 49 callsubr + hintmask 1101100100111000 + 88 callsubr + hintmask 1101100110011000 + 289 callgsubr + hintmask 1101100110010100 + 289 callsubr + hintmask 1101010101011000 + 32 callgsubr + hintmask 1011100110010100 + 89 callgsubr + hintmask 1101100101010100 + 151 callsubr + hintmask 1011100110010100 + 354 callgsubr + hintmask 1101101101011000 + 39 742 243 callgsubr + + + 228 callgsubr + 77 38 90 41 hstemhm + 47 85 72 64 122 83 342 callgsubr + 318 callgsubr + hintmask 1110111100000000 + 121 callsubr + hintmask 1110111010000000 + 132 callsubr + hintmask 1110111100000000 + -66 callsubr + hintmask 1111111100000000 + 55 502 243 callgsubr + + + 124 callsubr + 69 53 hstem + -14 50 54 83 55 50 346 callsubr + 656 -83 hlineto + 42 149 callgsubr + + + 257 callsubr + 49 53 hstem + 26 50 54 83 55 50 107 callsubr + 126 634 -44 callsubr + + + 160 callsubr + 91 53 hstem + -15 50 55 83 54 50 346 callsubr + 518 -83 hlineto + 41 242 callgsubr + + + 180 callsubr + 105 55 96 -20 hstem + -32 51 63 82 65 51 vstem + 286 callsubr + 42 85 -31 callgsubr + + + -295 -212 59 hstemhm + 43 65 -18 83 hintmask 11000000 + 191 callsubr + hintmask 10100000 + 450 callsubr + 656 -83 -656 vlineto + hintmask 11000000 + 21 hlineto + -34 -30 -34 -40 -55 181 callsubr + -24 909 -89 callsubr + + + -215 380 callgsubr + 342 callsubr + hstemhm + 82 64 -16 83 hintmask 11110000 + 177 72 callgsubr + -24 15 31 38 24 38 39 31 hvcurveto + hintmask 01101000 + 87 71 -83 515 83 70 -250 -70 84 -515 hlineto + hintmask 11110000 + -84 -71 104 hlineto + -32 -26 -36 -45 -54 vvcurveto + -57 43 -30 52 vhcurveto + -22 909 -89 callsubr + + + 130 callgsubr + -25 793 -89 callsubr + + + 143 callgsubr + -19 779 -71 callgsubr + + + -32 -165 69 117 388 callsubr + hstem + 90 83 180 83 346 callsubr + 656 -83 hlineto + 212 -821 rmoveto + 96 38 63 99 hvcurveto + 659 -83 -656 vlineto + -59 -12 -37 514 callsubr + -6 377 callsubr + endchar + + + -32 -152 70 103 482 callsubr + hstem + 90 83 180 83 346 callsubr + 518 -83 hlineto + 212 -670 rmoveto + 96 38 63 99 hvcurveto + 508 -83 -505 vlineto + -59 -12 -36 -49 -17 -16 4 4 -13 vhcurveto + -16 -65 288 callgsubr + endchar + + + -65 -217 67 736 108 hstemhm + 69 483 callgsubr + 150 110 -95 82 hintmask 11010100 + 286 callsubr + hintmask 11100100 + 42 100 188 callgsubr + 154 -803 156 callsubr + hintmask 11011000 + 91 803 -105 callsubr + + + 21 352 callgsubr + 656 -20 hstem + 90 83 169 64 119 callsubr + 151 -882 -32 callgsubr + + + -44 352 callgsubr + 518 -20 hstem + 90 83 140 64 231 callgsubr + 122 -744 -32 callgsubr + + + -63 352 callgsubr + 486 -20 246 -20 hstem + 82 81 126 64 134 callgsubr + 106 -938 -32 callgsubr + + + -72 198 callsubr + 58 71 585 -20 hstem + 90 83 130 64 336 callgsubr + 112 -882 -32 callgsubr + + + -121 198 callsubr + 58 69 449 -20 hstem + 90 83 101 64 444 callsubr + 83 -744 -32 callgsubr + + + -303 198 callsubr + 46 68 -39 -21 716 -20 hstemhm + 82 82 -5 64 hintmask 10101100 + 42 callsubr + -111 -214 rmoveto + hintmask 11011010 + -77 callgsubr + + + -312 198 callsubr + hstemhm + 82 82 -27 64 hintmask 10100000 + 82 hmoveto + 82 712 -82 hlineto + -46 -938 rmoveto + hintmask 11010000 + -77 callgsubr + + + 89 198 callsubr + 58 174 callsubr + 176 64 69 79 hintmask 1001011010000000 + 305 callsubr + hintmask 1001101010000000 + -7 callsubr + hintmask 1110011110000000 + 26 callgsubr + hlineto + 154 -882 -32 callgsubr + + + 27 198 callsubr + 58 349 callgsubr + 146 64 41 77 hintmask 1001011010000000 + 406 callsubr + hintmask 1001101010000000 + -7 callgsubr + hintmask 1110011110000000 + 61 callsubr + 122 -744 -32 callgsubr + + + -11 -226 40 90 38 79 -5 callsubr + 127 64 34 82 hintmask 1011001010000000 + 62 callsubr + hintmask 1011010010000000 + 189 callsubr + hintmask 1010110010000000 + -7 70 rlineto + hintmask 1110101110000000 + -68 hlineto + 108 -712 -32 callgsubr + + + 77 -12 79 -46 -21 595 73 -12 -20 hstemhm + 90 81 -81 83 324 86 hintmask 10100110 + 406 -12 rmoveto + 107 70 95 252 245 -97 88 -130 hvcurveto + hintmask 10101010 + -69 -69 -40 -53 -47 hvcurveto + hintmask 10011010 + 81 vlineto + hintmask 01010110 + -81 -656 83 hlineto + hintmask 10100110 + 497 vlineto + 57 40 70 41 52 hhcurveto + 97 65 -63 -197 -208 -45 -60 -54 -21 -15 4 7 -14 hvcurveto + -20 -75 rlineto + -10 18 34 -5 26 hhcurveto + endchar + + + 89 -165 69 644 108 hstemhm + 90 79 307 81 -79 79 hintmask 11101000 + 425 -165 rmoveto + 94 38 62 100 hvcurveto + 659 -79 -339 vlineto + 26 callgsubr + -656 79 343 hlineto + 69 -6 70 -5 66 vhcurveto + 4 hlineto + 71 -135 rlineto + hintmask 11110000 + 238 -413 rlineto + 5 hlineto + -58 -11 -38 514 callsubr + hintmask 11101000 + -6 17 25 -6 29 hhcurveto + endchar + + + 10 -12 70 -37 -21 460 70 -12 -20 hstemhm + 90 81 -81 83 260 86 hintmask 10100110 + 361 -12 rmoveto + 97 61 81 194 193 -83 74 -110 hvcurveto + hintmask 10101010 + -59 -55 -33 -42 -41 hvcurveto + hintmask 10011010 + 63 vlineto + hintmask 01010110 + -81 -518 83 hlineto + hintmask 10100110 + 382 vlineto + 46 32 57 32 42 hhcurveto + 78 51 -50 -147 -160 -37 -45 -43 -17 -12 3 5 -12 hvcurveto + -20 -65 rlineto + -9 17 29 -4 23 hhcurveto + endchar + + + 27 -152 66 503 101 hstemhm + 90 77 248 80 -77 77 hintmask 11101000 + 376 -152 rmoveto + 85 34 59 90 hvcurveto + 521 -77 -243 vlineto + 25 callsubr + -518 438 callsubr + 56 -7 62 -4 54 vhcurveto + 4 hlineto + 60 -111 rlineto + hintmask 11110000 + 192 -306 rlineto + 3 hlineto + -54 -10 -32 -39 -14 -13 4 3 -11 vhcurveto + -15 -62 rlineto + hintmask 11101000 + -6 15 21 -5 27 hhcurveto + endchar + + + -11 -217 67 171 -5 callsubr + 225 82 hintmask 11100110 + 338 276 callsubr + 363 406 callgsubr + vhcurveto + hintmask 11101010 + 189 callsubr + hintmask 11011010 + -7 70 rlineto + hintmask 11010110 + -68 -486 82 hlineto + hintmask 11100110 + 352 vlineto + 467 callgsubr + -352 142 callgsubr + -16 -62 rlineto + -7 16 456 callsubr + endchar + + + 165 callgsubr + 37 53 hstem + 52 86 48 453 callsubr + 48 -103 callsubr + 644 243 callsubr + + + 145 callsubr + 59 53 hstemhm + 52 86 10 453 callsubr + 12 86 hintmask 11110010 + -102 callsubr + hintmask 11111110 + -1 531 -44 callsubr + + + 191 callgsubr + 73 55 96 -20 hstemhm + 46 85 -16 494 callgsubr + -16 85 hintmask 11111001 + -102 callgsubr + hintmask 11110110 + 515 154 callsubr + + + 11 -226 40 90 38 79 351 callgsubr + hstem + 90 83 151 64 54 83 vstem + 173 345 96 callsubr + -60 -571 rmoveto + -80 callsubr + -125 186 rmoveto + 46 callsubr + endchar + + + -35 352 callgsubr + 208 60 184 66 hstemhm + 90 83 126 64 26 79 hintmask 10111101 + 173 268 rmoveto + 184 86 vlineto + 83 47 -24 -66 -61 -43 -33 -86 hvcurveto + -62 -494 rmoveto + hintmask 11111111 + -80 callsubr + -100 186 rmoveto + 96 callgsubr + hintmask 10111101 + 72 20 47 51 78 vvcurveto + 113 -84 38 -115 vhcurveto + -179 hlineto + endchar + + + -211 352 callgsubr + 424 74 -12 -20 22 -17 callsubr + -29 64 hintmask 1011000100000000 + 62 callgsubr + hintmask 1010010100000000 + 16 72 rlineto + hintmask 1011001000000000 + 111 callsubr + hintmask 1010101000000000 + -7 88 rlineto + hintmask 1010100100000000 + -68 hlineto + -48 -712 rmoveto + hintmask 1011000010000000 + 73 callsubr + hintmask 1111000100000000 + 45 -30 22 -87 10 vhcurveto + hintmask 1111000010000000 + -18 -38 rlineto + 46 -4 25 -12 -26 vvcurveto + -27 -25 -15 -84 -6 vhcurveto + endchar + + + -24 -226 40 175 72 534 73 hstem + 74 84 129 64 59 85 vstem + 186 -226 rmoveto + 424 callgsubr + 53 rlineto + 121 11 73 79 96 vvcurveto + 97 -59 45 -76 33 vhcurveto + -93 40 rlineto + -52 22 -57 24 63 vvcurveto + 59 49 37 73 61 48 -24 -38 40 vhcurveto + 45 54 rlineto + 48 -47 -69 33 -78 hhcurveto + -119 -87 -74 -100 -96 71 -47 62 -26 hvcurveto + 94 -41 rlineto + 62 -28 47 -21 -67 vvcurveto + -64 -51 -43 -86 -68 -66 33 49 -47 vhcurveto + -50 -58 52 -54 71 -36 82 -6 rlinecurve + -37 -77 425 callsubr + endchar + + + -84 -226 40 175 65 410 66 hstemhm + 72 83 103 64 30 84 hintmask 11110100 + 157 -226 rmoveto + hintmask 11111100 + 424 callgsubr + 53 rlineto + hintmask 11110100 + 102 10 62 61 79 vvcurveto + 87 -54 29 -76 29 vhcurveto + -85 callsubr + hintmask 11111100 + 44 -40 60 -29 72 -5 -37 -77 rcurveline + 71 callgsubr + endchar + + + -139 -226 40 175 63 489 callgsubr + hintmask 11110100 + 127 -226 rmoveto + hintmask 11111100 + 424 callgsubr + 54 rlineto + hintmask 11110100 + 94 12 51 60 71 vvcurveto + 92 -78 29 -70 26 vhcurveto + -72 callgsubr + hintmask 11111100 + 41 -34 58 -27 61 -5 -37 -77 rcurveline + 71 callgsubr + endchar + + + -22 -226 40 207 -21 586 70 hstemhm + 226 84 -34 64 hintmask 11110000 + 226 hmoveto + hintmask 11101000 + 16 233 callsubr + 15 158 callsubr + endchar + + + -91 -226 40 207 -21 449 69 hstemhm + 192 83 -32 64 hintmask 11110000 + 192 hmoveto + hintmask 11101000 + 17 233 callsubr + 13 449 190 callsubr + hlineto + endchar + + + -220 -226 40 174 67 -41 -21 426 405 callsubr + 50 64 hintmask 10111010 + 128 -226 rmoveto + 73 callsubr + hintmask 11011010 + 41 -27 19 -46 11 vhcurveto + 23 52 27 2 30 8 25 8 rlinecurve + -16 62 rlineto + -6 -16 -22 -7 -17 hhcurveto + -56 -19 34 60 hvcurveto + 270 208 callgsubr + hintmask 10110110 + 265 callsubr + hintmask 10111010 + 247 callsubr + -81 25 -60 70 -16 vhcurveto + -39 -81 425 callsubr + endchar + + + -22 21 -21 305 59 222 70 hstem + 226 84 vstem + 226 hmoveto + 84 305 123 59 -123 222 198 70 -480 -70 198 -222 -35 hlineto + -88 -3 rlineto + -56 123 vlineto + endchar + + + -91 21 -21 229 58 162 69 hstem + 192 83 vstem + 192 hmoveto + 83 229 124 58 -124 162 190 callsubr + -162 -35 hlineto + -89 -4 rlineto + -54 124 vlineto + endchar + + + -220 -12 67 166 59 139 405 callsubr + hintmask 11110000 + 235 -12 rmoveto + 318 callsubr + hvcurveto + -16 62 rlineto + -6 -16 -22 -7 -17 hhcurveto + -56 -19 34 60 hvcurveto + 72 131 59 -131 139 208 callgsubr + hintmask 11101000 + 265 callsubr + hintmask 11110000 + -76 -5 rlineto + -62 72 -139 vlineto + -72 -5 rlineto + -54 72 -71 vlineto + 456 callgsubr + vhcurveto + endchar + + + 87 451 callsubr + hstem + 87 83 69 65 174 80 vstem + 335 113 callsubr + 37 28 50 46 11 hvcurveto + 116 28 64 80 172 vvcurveto + 311 callsubr + -196 88 -76 120 -10 vhcurveto + -31 -28 -25 -42 -44 181 callsubr + -30 909 -89 callsubr + + + 76 callsubr + -29 793 -89 callsubr + + + -14 339 callgsubr + 71 hstemhm + 75 83 27 60 135 -18 callgsubr + hintmask 11110100 + 275 74 callsubr + 36 20 39 36 28 hvcurveto + 21 18 31 27 31 32 rrcurveto + 3 hlineto + 7 -75 rlineto + hintmask 11101000 + 68 486 -82 79 callsubr + hintmask 11111000 + 459 callsubr + hintmask 11110100 + -56 39 -29 51 vhcurveto + -18 779 -71 callgsubr + + + -14 -12 69 -36 -21 390 69 101 177 callgsubr + 59 -59 152 hstemhm + 82 69.5 -69.5 82 258 85 hintmask 1010010110000000 + 351 callsubr + 91 153 136 -67 91 -126 -54 -54 -30 -38 -44 hvcurveto + 2 87 rlineto + 82 182 vlineto + hintmask 1010100110000000 + 59 -182 vlineto + hintmask 1010010110000000 + 93 -82 vlineto + hintmask 1010100110000000 + -93 vlineto + hintmask 1011000110000000 + -74 -5 rlineto + hintmask 0110010110000000 + -54 74 -560 vlineto + hintmask 0110011010000000 + 66 hlineto + hintmask 1010011010000000 + 7 50 rlineto + 3 hlineto + hintmask 1010010110000000 + -39 43 51 -23 45 hhcurveto + -14 69 rmoveto + -32 -44 14 37 -43 hvcurveto + 215 vlineto + 44 46 43 23 41 hhcurveto + 92 36 -67 -92 -105 -59 -69 -80 hvcurveto + endchar + + + 68 callsubr + + + 77 callsubr + + + -61 -97 67 375 63 193 67 -18 -20 hstemhm + 213 79.5 hintmask 11011000 + 91 -97 rmoveto + 111 40 83 122 14 hvcurveto + 26 237 rlineto + 133 63 -126 hlineto + 7 63 rlineto + hintmask 11101000 + 68 8 24 62 60 hhcurveto + 25 17 -8 -6 14 hvcurveto + hintmask 11011000 + 18 63 rlineto + hintmask 11101000 + 9 -19 -30 9 -29 hhcurveto + -107 -46 -71 -133 -15 hvcurveto + -6 -56 rlineto + -25 hlineto + -69 -4 rlineto + -59 87 vlineto + -24 -219 rlineto + -102 -11 -23 -54 -62 hhcurveto + -18 -16 3 7 -16 hvcurveto + -15 -62 rlineto + hintmask 11011000 + -9 16 26 -6 31 hhcurveto + endchar + + + 224 callsubr + 69 67 hstemhm + 52 86 300 72 -36 76 hintmask 11101010 + 348 -12 rmoveto + 88 72 32 44 42 hvcurveto + 276 -215 -69 139 -171 vlineto + -24 -26 -45 -15 -47 hhcurveto + -140 -78 104 165 163 85 102 132 hvcurveto + hintmask 11111100 + 66 42 -21 -25 33 hvcurveto + 46 55 rlineto + -22 31 -10 18 30 vvcurveto + 30 19 24 34 14 9 -5 -4 11 vhcurveto + 16 63 rlineto + 6 -16 -19 7 -27 hhcurveto + -68 -45 -45 -64 -14 2 -13 4 -13 hvcurveto + 8 -26 -30 5 -35 hhcurveto + -174 -127 -129 -211 hvcurveto + hintmask 11101010 + -214 123 -126 173 vhcurveto + endchar + + + 393 callgsubr + -9 -20 76 64 hstemhm + 52 85 240 71 -41 76 hintmask 11100101 + 307 -12 rmoveto + 75 63 25 34 38 hvcurveto + 226 -188 -61 112 -127 vlineto + -18 -21 -34 -10 -38 hhcurveto + -115 -62 77 124 127 69 75 108 hvcurveto + hintmask 11101110 + 53 33 -17 -21 355 callgsubr + -17 21 -9 20 22 vvcurveto + 24 16 17 28 12 7 -3 -3 9 vhcurveto + 16 59 rlineto + 6 -16 -17 5 -25 hhcurveto + -61 -40 -40 -53 hvcurveto + hintmask 11010110 + -9 1 -9 3 -9 vhcurveto + hintmask 11100101 + 6 -20 -23 3 -25 73 callgsubr + endchar + + + -173 245 59 103 59 hstemhm + 157 82 -82 199 hintmask 11100000 + 157 hmoveto + 82 245 hlineto + hintmask 11010000 + 117 59 hlineto + hintmask 11100000 + -117 103 hlineto + hintmask 11010000 + 117 59 hlineto + hintmask 11100000 + -117 246 -82 -246 -50 hlineto + -78 -5 rlineto + -54 128 -103 -50 vlineto + -78 -5 rlineto + -54 128 vlineto + endchar + + + -310 -12 126 hstemhm + 64 120 -94 68 hintmask 10100000 + 96 198 rmoveto + 56 hlineto + 12 378 2 136 rlineto + -84 hlineto + 2 -136 rlineto + hintmask 11000000 + 40 -588 rmoveto + 33 27 26 36 38 -27 26 -33 -33 -27 -26 -38 -36 27 -26 33 hvcurveto + endchar + + + 14 callgsubr + 50 47 hstem + 3 538 -96 callgsubr + 3 50 -83 callgsubr + + + 30 callgsubr + 72 47 hstem + 3 465 -94 callsubr + 4 72 -83 callgsubr + + + 85 callgsubr + 76 59 81 -20 140 callgsubr + hintmask 10111110 + 389 callsubr + hintmask 10111101 + 75 callgsubr + hintmask 01111101 + 7 -58 rlineto + hintmask 01111110 + -68 callsubr + hintmask 10111110 + -89 callgsubr + 8 520 2 callgsubr + + + 165 callsubr + 76 59 293 callsubr + hintmask 11111000 + 261 callsubr + hintmask 11110100 + -6 callsubr + hintmask 11111000 + 319 callgsubr + hintmask 11110010 + -74 callsubr + hintmask 11111000 + -99 callsubr + -30 517 2 callgsubr + + + 124 callsubr + 70 47 108 callsubr + 656 -83 hlineto + -1 50 -83 callgsubr + + + 257 callsubr + 50 47 hstem + 130 83 107 callsubr + 83 635 -83 callgsubr + + + 160 callsubr + 92 47 108 callsubr + 518 -83 hlineto + -2 72 -83 callgsubr + + + 180 callsubr + 108 59 81 -20 348 callsubr + 1 88 2 callgsubr + + + 165 callgsubr + 38 47 hstem + 52 86 388 -103 callsubr + -43 645 -83 callgsubr + + + 145 callsubr + 60 47 hstem + 52 86 314 86 vstem + -102 callsubr + -44 532 -83 callgsubr + + + 191 callgsubr + 76 59 81 -20 -26 callgsubr + -41 518 2 callgsubr + + + 214 callgsubr + 70 47 -3 callsubr + -44 718 -83 callgsubr + + + 226 callgsubr + 92 47 hstem + 87 83 247 -33 callsubr + -43 602 -83 callgsubr + + + 95 callsubr + 108 59 81 -20 81 callgsubr + hintmask 10111110 + 307 callsubr + hintmask 10111101 + 43 callsubr + hintmask 01111101 + 7 -76 rlineto + hintmask 01111110 + 408 callgsubr + hintmask 10111110 + -77 callsubr + 6 586 2 callgsubr + + + 399 callgsubr + 91 55 46 484 callsubr + hintmask 11111001 + -92 callsubr + hintmask 11110111 + -104 727 83 callgsubr + -31 146 rmoveto + 268 46 -268 hlineto + 237 -192 rmoveto + 2 callsubr + + + 363 callsubr + 55 46 hstemhm + 87 83 -26 420 callgsubr + -23 79 hintmask 11111001 + -91 callgsubr + hintmask 11110110 + -103 611 83 callgsubr + -31 146 rmoveto + 268 46 -268 hlineto + 237 -192 rmoveto + 2 callsubr + + + 95 callsubr + 122 91 71 47 hstemhm + 75 83 -29 91 102 91 -33 -21 callgsubr + hintmask 1011101100000000 + -49 600 3 callgsubr + -38 162 rmoveto + 267 47 -267 hlineto + 230 -209 102 callsubr + + + 399 callgsubr + 91 484 callsubr + hintmask 11110010 + -92 callsubr + hintmask 11101110 + -104 727 61 callgsubr + + + 363 callsubr + hstemhm + 87 83 -26 420 callgsubr + -23 193 callsubr + -103 611 61 callgsubr + + + 95 callsubr + 122 91 hstemhm + 75 83 -29 91 102 91 -33 28 callgsubr + 600 3 callgsubr + 89 117 rmoveto + 96 105 -49 34 -82 -115 rlineto + 138 -141 102 callsubr + + + 399 callgsubr + 91 33 48 484 callsubr + hintmask 11111001 + -92 callsubr + -37 851 254 callgsubr + hintmask 11110111 + 32 -220 83 callgsubr + 206 hmoveto + 2 callsubr + + + 363 callsubr + 33 48 hstemhm + 87 83 -26 420 callgsubr + -23 79 hintmask 11111001 + -91 callgsubr + -36 735 254 callgsubr + hintmask 11110110 + 32 -220 83 callgsubr + 206 hmoveto + 2 callsubr + + + 95 callsubr + 122 91 41 47 hstemhm + 75 83 -29 91 102 91 -33 -21 callgsubr + 13 732 370 callsubr + hintmask 1011101100000000 + 32 -224 -4 callsubr + + + 399 callgsubr + 91 484 callsubr + hintmask 11110010 + -92 callsubr + hintmask 11101110 + -104 727 83 callgsubr + 104 108 rmoveto + 37 26 -95 119 -53 -36 rlineto + 213 -217 rmoveto + 2 callsubr + + + 363 callsubr + hstemhm + 87 83 -26 420 callgsubr + -23 193 callsubr + -103 611 83 callgsubr + 104 108 rmoveto + 37 26 -95 119 -53 -36 rlineto + 213 -217 rmoveto + 2 callsubr + + + 95 callsubr + 122 91 hstemhm + 75 83 -29 91 102 91 -33 28 callgsubr + 600 3 callgsubr + 103 117 rmoveto + 35 24 -82 115 -49 -34 rlineto + 185 -222 102 callsubr + + + 264 0 71 120 67 51 215 callgsubr + -66 66 87 57 hstemhm + 401 84 -54 268 hintmask 11110110 + 290 376 rmoveto + hintmask 11101110 + 113 callgsubr + hintmask 11110110 + 206 278 70 -411 vlineto + hintmask 11110101 + 79 87 59 callgsubr + + + 154 0 66 75 62 36 250 callgsubr + -63 63 101 57 hstemhm + 332 268 -258 84 hintmask 11110101 + 252 292 rmoveto + hintmask 11101101 + 29 52 29 57 29 54 rrcurveto + 3 -252 -138 hlineto + -196 -203 rmoveto + 86 hlineto + 76 141 rlineto + 172 -141 321 66 -237 173 190 63 -190 hlineto + hintmask 11110101 + 150 227 66 -359 vlineto + hintmask 11110110 + 38 386 callgsubr + + + 227 -12 66 -66 67 168 55 152 68 -65 65 103 57 hstemhm + 58 81 141 266 -194 77 246 72 hintmask 0110111011000000 + 201 -12 rmoveto + 62 70 32 59 66 hvcurveto + -48 37 53 -43 81 hhcurveto + 66 50 23 27 42 hvcurveto + 481 callgsubr + -35 -17 -47 hhcurveto + -83 -64 67 101 -4 hvcurveto + 315 285 callsubr + -66 90 -119 -66 -56 -40 -63 -38 vhcurveto + 63 -20 -47 40 -72 hhcurveto + -72 -67 -34 -29 -45 hvcurveto + hintmask 0111011011000000 + 33 -57 rlineto + 26 38 50 26 53 hhcurveto + 80 19 -60 -62 hvcurveto + -202 -23 -92 -53 -106 vvcurveto + hintmask 0110111011000000 + -87 61 -51 82 vhcurveto + hintmask 1010111011000000 + 23 66 rmoveto + -48 -37 23 55 62 59 40 154 20 hvcurveto + -25 vlineto + 1 -37 7 -38 11 -25 rrcurveto + -48 -44 -58 -27 -45 hhcurveto + 205 224 rmoveto + 95 9 55 60 67 hhcurveto + 74 41 -55 -100 hvcurveto + hintmask 0110111101000000 + -395 323 -37 callsubr + + + 106 451 callsubr + 534 73 hstem + 52 86 111 65 212 87 vstem + 345 113 callsubr + 33 24 49 74 24 hvcurveto + 112 36 89 106 190 253 callsubr + -203 106 -130 155 -9 vhcurveto + -42 -31 -22 -45 -38 181 callsubr + -13 273 275 callgsubr + + + 31 -212 59 142 69 402 70 hstem + 52 86 74 65 175 86 vstem + 308 156 callgsubr + 31 22 49 75 26 hvcurveto + 91 31 73 86 144 vvcurveto + 170 -101 100 -142 -144 -99 -100 -170 -160 92 -103 132 -8 vhcurveto + -42 -31 -22 -46 -37 181 callsubr + -13 270 rmoveto + -97 -60 78 124 125 60 75 97 -32 callsubr + endchar + + + 106 451 callsubr + 534 73 hstem + 52 86 111 65 212 87 vstem + 345 113 callsubr + 33 24 49 74 24 hvcurveto + 112 36 89 106 190 253 callsubr + -203 106 -130 155 -9 vhcurveto + -42 -31 -22 -45 -38 181 callsubr + -13 273 rmoveto + -117 -77 106 164 163 77 101 117 117 77 -101 -163 -164 210 callsubr + hvcurveto + -17 636 -89 callsubr + + + 31 -212 59 142 69 402 70 hstem + 52 86 74 65 175 86 vstem + 308 156 callgsubr + 31 22 49 75 26 hvcurveto + 91 31 73 86 144 vvcurveto + 170 -101 100 -142 -144 -99 -100 -170 -160 92 -103 132 -8 vhcurveto + -42 -31 -22 -46 -37 181 callsubr + -13 270 rmoveto + -97 -60 78 124 125 60 75 97 -32 callsubr + -18 523 -89 callsubr + + + -16 -206 55 140 67 374 68 hstem + 46 85 60 61 159 85 vstem + 282 355 callsubr + 33 12 15 19 hvcurveto + -22 41 rlineto + -8 -12 -11 -5 -16 hhcurveto + -23 -23 15 31 38 23 40 65 25 hvcurveto + 83 32 73 80 132 vvcurveto + 445 callgsubr + -151 94 -92 110 -10 vhcurveto + -38 -29 -21 -44 -37 vvcurveto + 290 callsubr + -11 300 callgsubr + endchar + + + -16 -206 55 140 67 374 68 hstem + 46 85 60 61 159 85 vstem + 282 355 callsubr + 33 12 15 19 hvcurveto + -22 41 rlineto + -8 -12 -11 -5 -16 hhcurveto + -23 -23 15 31 38 23 40 65 25 hvcurveto + 83 32 73 80 132 vvcurveto + 445 callgsubr + -151 94 -92 110 -10 vhcurveto + -38 -29 -21 -44 -37 vvcurveto + 290 callsubr + -11 300 callgsubr + -14 517 -71 callgsubr + + + 100 callgsubr + -14 709 -89 callsubr + + + 104 callsubr + -16 593 -89 callsubr + + + -15 callgsubr + -14 740 -71 callgsubr + + + 45 callsubr + 1 500 -71 callgsubr + + + -19 callsubr + 261 41 -24 callsubr + + + -15 callsubr + 228 63 -24 callsubr + + + 31 callsubr + 227 87 -26 callsubr + + + 23 callgsubr + 196 49 -89 callsubr + + + 24 callsubr + 155 63 -89 callsubr + + + -67 callsubr + -276 295 -71 callgsubr + + + -24 198 callsubr + 46 219 callgsubr + hstem + 74 84 129 64 59 -83 callsubr + -86 -214 -32 callgsubr + + + -84 198 callsubr + 46 452 callsubr + hstemhm + 72 83 118 64 15 84 hintmask 10111010 + -92 callgsubr + -71 -214 rmoveto + hintmask 11111110 + -77 callgsubr + + + -139 198 callsubr + 46 64 489 callgsubr + hintmask 10111010 + -73 callsubr + -82 -214 rmoveto + hintmask 11111110 + -77 callgsubr + + + -22 352 callgsubr + 586 70 hstemhm + 226 84 -29 64 hintmask 10111000 + 122 callgsubr + -46 -812 rmoveto + hintmask 11110100 + -77 callgsubr + + + -91 352 callgsubr + 449 69 hstemhm + 192 83 -27 64 hintmask 10111000 + 72 callsubr + -45 -675 rmoveto + hintmask 11110100 + -77 callgsubr + + + -220 198 callsubr + 46 67 364 405 callsubr + 50 64 hintmask 10111000 + 15 callgsubr + hintmask 10110100 + 265 callsubr + hintmask 10111000 + 174 callgsubr + -107 -214 rmoveto + hintmask 11111010 + -77 callgsubr + + + 431 callgsubr + hstem + 83 82 vstem + 241 callgsubr + endchar + + + 45 0 63 108 57 -57 59 95 55 214 62 hstemhm + 107 83 257 80 -43 81 hintmask 10111101 + 107 hmoveto + 210 hlineto + 146 102 64 132 92 -56 53 -96 15 hvcurveto + 4 vlineto + hintmask 10111110 + 77 20 37 54 64 vvcurveto + 112 -92 46 -133 vhcurveto + -195 -426 hlineto + hintmask 11011101 + -77 -4 rlineto + hintmask 10111110 + -55 77 vlineto + 83 209 rmoveto + 214 101 vlineto + 102 54 -30 -72 -73 -48 -39 -111 hvcurveto + -98 -317 rmoveto + 108 152 59 -152 95 115 vlineto + hintmask 10111101 + 114 65 -39 -86 -93 -67 -44 -112 hvcurveto + endchar + + + -13 0 51 76 177 callgsubr + 58 71 49 162 51 hstemhm + 109 84 205 77 -46 76 hintmask 10111101 + 109 hmoveto + 184 hlineto + 124 88 48 103 75 -47 43 -74 13 hvcurveto + 4 vlineto + hintmask 10111110 + 61 16 30 44 47 vvcurveto + 92 -81 33 -115 vhcurveto + -170 -333 hlineto + hintmask 11011101 + -76 -3 rlineto + hintmask 10111110 + -55 76 vlineto + 84 178 rmoveto + 162 81 vlineto + 82 42 -23 -55 -53 -36 -31 -91 hvcurveto + -78 -254 rmoveto + 76 128 58 -128 71 87 vlineto + hintmask 10111101 + 97 52 -31 -68 -76 -58 -30 -91 hvcurveto + endchar + + + -46 -12 68 376 66 hstemhm + 75 -82 callgsubr + 218 81 hintmask 11011000 + 270 -12 rmoveto + 73 65 34 29 43 hvcurveto + -32 57 rlineto + -26 -37 -47 -26 -54 hhcurveto + -97 -26 63 59 -1 hvcurveto + 207 23 92 60 110 vvcurveto + 82 -55 45 -76 vhcurveto + hintmask 11101000 + -65 -61 -32 -48 -47 hvcurveto + -2 hlineto + -7 68 rlineto + hintmask 11011000 + -68 -290 hlineto + -125 57 -83 138 vhcurveto + -113 244 rmoveto + 124 vlineto + 53 50 46 23 45 hhcurveto + 43 34 -21 -51 -65 -55 -42 -163 -21 hvcurveto + endchar + + + 2 -12 68 -68 472 callsubr + 258 83 -12 callgsubr + hintmask 01111000 + 261 callsubr + 60 52 34 38 261 callgsubr + hintmask 10111000 + -53 8 26 -19 43 hhcurveto + 20 12 4 4 12 233 callgsubr + -2 -9 -3 0 -4 hhcurveto + -13 -8 10 26 hvcurveto + 394 vlineto + hintmask 10110100 + -74 callsubr + hintmask 01111000 + 135 callsubr + + + 2 218 callgsubr + -68 68 hstemhm + 87 70 -70 82 258 85 hintmask 10101100 + 302 -12 rmoveto + 448 callsubr + hvcurveto + hintmask 11001100 + 151 -67 97 -125 -58 -56 -33 -38 -44 vhcurveto + -2 hlineto + hintmask 10101100 + 52 -8 -26 19 -44 hhcurveto + -19 -13 -4 -4 -11 hvcurveto + 11 -62 rlineto + 2 8 4 0 4 hhcurveto + 12 9 -10 -26 hvcurveto + -394 vlineto + hintmask 10110100 + 67 hlineto + 6 47 rlineto + 3 hlineto + hintmask 10101100 + -38 46 48 -21 45 hhcurveto + -14 69 476 callsubr + hintmask 11001100 + 234 callsubr + hintmask 10101100 + -120 -59 -73 -80 vhcurveto + endchar + + + -3 -12 69 -36 -21 422 69 166 67 hstemhm + 82 69.5 -69.5 82 258 85 hintmask 10110110 + 351 callsubr + 95 164 148 -67 96 -126 -54 -54 -30 -38 -44 hvcurveto + 2 113 323 callgsubr + -114 -55 -76 -111 hvcurveto + hintmask 01110110 + -537 vlineto + hintmask 01111010 + 66 hlineto + hintmask 10111010 + 7 48 rlineto + 3 hlineto + hintmask 10110110 + -38 43 51 -22 45 hhcurveto + -14 69 rmoveto + -32 -44 14 37 -43 hvcurveto + 247 vlineto + 44 46 43 23 41 hhcurveto + 92 36 -71 -105 -117 -59 -72 -80 hvcurveto + endchar + + + -102 167 callsubr + hstem + 325 85 vstem + 182 -12 rmoveto + 127 101 93 161 165 -103 91 -116 -73 -48 -26 -31 -36 hvcurveto + 42 -54 rlineto + 27 29 30 16 47 hhcurveto + 81 62 -75 -113 -111 -63 -75 -88 -44 -39 22 27 -31 hvcurveto + -35 -55 rlineto + -39 43 55 -23 59 hhcurveto + endchar + + + -99 -12 66 98 59 222 65 hstem + 46 81 252 65 vstem + 334 152 rmoveto + 29 16 -16 -22 -36 -45 -24 -43 -33 -30 9 17 -25 hvcurveto + 46 41 48 26 42 hhcurveto + -215 -221 rmoveto + 11 33 13 30 16 27 rrcurveto + -22 37 44 -11 47 hhcurveto + 90 67 54 74 55 -36 40 -67 -62 -62 -33 -60 -53 hvcurveto + -23 31 -14 43 50 vvcurveto + 114 66 77 90 39 32 -18 -25 28 vhcurveto + 40 51 112 callgsubr + -81 27 -64 44 -44 hvcurveto + -18 -30 -17 -34 -14 -38 rrcurveto + endchar + + + -3 -217 67 138 177 callsubr + 226 -20 hstemhm + 47 85 258 83 -80 80 hintmask 11111010 + 514 -217 rmoveto + 25 22 6 7 14 hvcurveto + hintmask 11111100 + -16 62 167 callgsubr + -13 hhcurveto + -38 -12 33 55 hvcurveto + 786 -83 -199 vlineto + 151 callgsubr + -162 79 -92 122 hvcurveto + hintmask 11111010 + 57 49 30 38 40 hvcurveto + -1 -136 rlineto + -86 38 -51 83 vhcurveto + hintmask 11111100 + -248 274 274 callsubr + + + -3 399 callsubr + 161 67 -10 -20 hstemhm + 47 85 258 83 -79.5 79.5 -93 callsubr + hintmask 1010111000000000 + 261 callsubr + hintmask 1010110010000000 + 13 callgsubr + hintmask 0110110010000000 + 7 -57 rlineto + hintmask 0111011000000000 + 68 567 hlineto + 56 15 36 44 12 10 -3 -3 9 vhcurveto + hintmask 1010110100000000 + 16 63 rlineto + 6 -15 -18 4 -23 hhcurveto + -89 -42 -58 -93 1 hvcurveto + 1 -133 493 callsubr + 21 -56 hhcurveto + -111 192 callsubr + hintmask 1010111000000000 + 135 callsubr + + + -62 -12 66 169 59 151 458 callgsubr + 221 -12 rmoveto + 132 97 95 159 159 -92 97 -117 -124 -80 -89 -139 -17 2 -18 2 -12 hvcurveto + 327 hlineto + -103 -5 -57 -66 -95 hhcurveto + -47 -42 15 23 -36 hvcurveto + -29 -54 rlineto + -27 42 56 -23 66 hhcurveto + -111 294 rmoveto + 98 53 53 76 vhcurveto + hintmask 11110100 + 73 48 -55 -96 9 hvcurveto + endchar + + + 82 callgsubr + + + -222 387 49 97 41 101 49 hstem + 25 55 166 61 vstem + 160 387 rmoveto + 82 65 65 103 107 -59 62 -92 -43 -35 -15 -20 -30 hvcurveto + 23 -40 rlineto + 16 24 25 10 32 hhcurveto + 60 31 -41 -60 3 hvcurveto + -217 hlineto + -3 -16 -1 -6 -14 vvcurveto + -67 33 -84 102 vhcurveto + -1 49 rmoveto + -57 -22 44 53 hvcurveto + 166 hlineto + -65 -4 -34 -32 -49 hhcurveto + endchar + + + 110 -12 65 141 53 186 65 hstem + 371 79 72 49 vstem + 242 -12 rmoveto + 127 81 113 139 20 -1 19 -3 17 hvcurveto + 76 30 rlineto + -18 vlineto + -84 42 -30 49 33 21 12 11 17 vhcurveto + -22 44 rlineto + -7 -9 -13 -7 -17 hhcurveto + -33 -19 499 callgsubr + -139 -54 rlineto + 94 -32 -73 52 -97 hhcurveto + -63 -56 -19 -31 -45 hvcurveto + 29 -57 rlineto + 25 37 40 17 49 hhcurveto + 65 51 -34 -76 21 hvcurveto + -323 -126 rlineto + -115 10 63 -94 132 hhcurveto + -129 178 rmoveto + 257 100 rlineto + 1 -10 0 -12 -12 vvcurveto + -99 -49 -80 -80 -72 -44 42 71 -13 vhcurveto + endchar + + + -118 394 callgsubr + 50 82 -56 82 0 168 hintmask 11110000 + 249 -12 rmoveto + 66 48 15 40 56 hvcurveto + -35 55 rlineto + -31 -43 -39 -13 -44 hhcurveto + -74 -52 33 54 53 45 29 79 hvcurveto + hintmask 11110100 + 70 59 -55 521 callgsubr + -78 -35 31 44 50 43 26 54 43 33 -15 -23 36 hvcurveto + 33 55 rlineto + 30 -42 -47 18 -58 hhcurveto + -95 -82 -42 -89 -45 29 -44 53 -18 hvcurveto + -4 vlineto + hintmask 11110000 + -56 -15 -52 -37 -70 vvcurveto + -90 89 -56 110 vhcurveto + endchar + + + -102 394 callgsubr + 131 167 0 82 -56 82 hintmask 11100100 + 210 -12 rmoveto + 109 463 callsubr + hintmask 11101000 + 53 18 29 44 45 vvcurveto + 89 -77 42 -92 -60 -51 -18 -30 -44 vhcurveto + 33 -55 rlineto + 23 36 37 15 43 hhcurveto + 54 39 -26 -50 -44 -35 -31 -78 hvcurveto + hintmask 11110100 + -54 -59 69 hlineto + hintmask 11100100 + 80 44 -29 -53 -54 -52 -33 -74 -44 -38 13 31 -44 hvcurveto + -35 -55 rlineto + -40 57 50 -15 66 hhcurveto + endchar + + + -12 228 callsubr + 85 122 136 0 82 -56 82 hintmask 11110010 + 494 callsubr + 112 463 callsubr + hintmask 11110100 + 53 18 29 44 45 vvcurveto + 89 -79 42 -97 -137 -112 -90 -172 vhcurveto + hintmask 11110010 + -162 111 -86 141 vhcurveto + -1 66 rmoveto + -101 -65 66 116 124 64 73 98 hvcurveto + hintmask 11110100 + 55 41 -26 -50 -44 -34 -31 -75 hvcurveto + hintmask 11111010 + -27 -59 42 hlineto + hintmask 11110010 + 76 44 -29 -53 -54 -47 -33 -71 hvcurveto + endchar + + + -273 -217 67 373 177 callgsubr + 59 204 -20 hstemhm + 102 82 hintmask 10111000 + 51 276 callsubr + 278 88 59 -88 204 -82 -204 -1 vlineto + hintmask 11011000 + -92 -5 rlineto + hintmask 10111000 + -54 93 -278 221 callsubr + + + 228 callgsubr + 103 67 hstemhm + 47 85 258 83 -81 81 hintmask 11111100 + 84 callgsubr + 531 vlineto + 55 13 36 40 16 11 -3 -4 10 vhcurveto + 16 63 rlineto + 6 -15 -20 5 -21 hhcurveto + hintmask 11111010 + -90 -41 -59 -87 hvcurveto + 1 -80 rlineto + 35 -42 -38 21 122 callsubr + hintmask 11111100 + -66 callsubr + endchar + + + 228 callgsubr + -12 -20 384 callsubr + hintmask 11101100 + 84 callgsubr + hintmask 11011100 + 507 vlineto + hintmask 11011010 + -69 hlineto + hintmask 11101010 + 143 callsubr + hintmask 11101100 + -66 callsubr + endchar + + + 525 callsubr + 149 59 171 65 hstemhm + 46 83 138 181 -73 73 hintmask 11110100 + 280 -12 rmoveto + 72 60 27 34 36 hvcurveto + 213 vlineto + hintmask 11111000 + -181 -59 hlineto + hintmask 11110100 + 108 -119 hlineto + -18 -20 -32 -12 -36 hhcurveto + -95 -63 71 119 120 71 69 89 52 31 -22 -24 28 hvcurveto + 40 51 rlineto + 31 -34 -46 29 -75 hhcurveto + -133 -106 -96 -158 -166 103 -90 131 hvcurveto + endchar + + + -91 -224 57 hstem + 121 71 87 71 vstem + 236 -224 rmoveto + 72 42 47 67 46 -22 47 -39 73 hvcurveto + 166 430 rlineto + -81 hlineto + -92 -259 -14 -45 -16 -34 -14 367 callgsubr + -15 45 -16 34 -14 45 -92 259 rcurveline + -85 hlineto + 170 -430 rlineto + -39 -73 -22 -47 -46 vvcurveto + -67 42 -47 73 vhcurveto + 57 vmoveto + -30 -14 23 30 36 14 42 27 48 hvcurveto + 4 hlineto + 28 -48 14 -42 -36 vvcurveto + -30 -14 -23 -29 vhcurveto + endchar + + + -47 -12 66 376 68 hstem + 82 80 188 79 vstem + 256 -12 rmoveto + 112 61 65 98 70 -51 77 -70 65 hvcurveto + 41 38 36 26 40 hhcurveto + 18 16 -4 -10 13 hvcurveto + 26 60 rlineto + 13 -19 -29 9 -28 hhcurveto + -53 -56 -32 -55 -54 hvcurveto + 55 -56 -55 32 -52 hhcurveto + -29 -29 -9 -13 -19 hvcurveto + 26 -60 rlineto + 10 13 16 4 18 hhcurveto + 39 37 -26 -41 38 hvcurveto + -72 -65 -49 -77 -70 vvcurveto + -98 61 -65 113 vhcurveto + 66 vmoveto + -64 -30 44 56 59 41 62 53 49 hvcurveto + 52 -49 42 -62 -59 vvcurveto + -56 -31 -44 -63 vhcurveto + endchar + + + -11 -12 71 hstem + 75 83 224 83 vstem + 382 -205 rmoveto + 83 691 -83 -345 hlineto + -58 -47 -36 -24 -50 hhcurveto + -64 -27 449 callsubr + 175 callgsubr + 46 -66 103 67 49 35 52 47 vhcurveto + -5 -106 rlineto + endchar + + + -14 21 -21 419 320 callgsubr + 82 hmoveto + 82 345 hlineto + 49 49 34 25 297 callsubr + -38 -91 hvcurveto + -290 82 301 406 callgsubr + vhcurveto + hintmask 11110100 + -67 -49 -37 -44 -46 hvcurveto + 3 126 323 callgsubr + hintmask 11101100 + -114 -55 -76 -111 hvcurveto + endchar + + + -14 -217 67 569 320 callgsubr + 338 276 callsubr + 356 406 callgsubr + vhcurveto + hintmask 11110100 + -67 -49 -37 -44 -46 hvcurveto + 3 126 323 callgsubr + hintmask 11101100 + -114 -55 -76 -111 hvcurveto + -537 82 345 vlineto + 49 49 34 25 297 callsubr + -38 -91 hvcurveto + -345 142 callgsubr + -16 -62 rlineto + -7 16 456 callsubr + endchar + + + -273 21 -21 223 177 callgsubr + 59 204 -20 120 108 hstemhm + 88 483 callgsubr + hintmask 10110010 + 413 callgsubr + hintmask 11010010 + -92 -5 rlineto + hintmask 10110010 + -54 92 vlineto + hintmask 10111100 + 42 363 -105 callsubr + + + -273 223 177 callgsubr + 59 hstemhm + 101 82 hintmask 01100000 + 413 callgsubr + hintmask 10100000 + -92 -5 rlineto + hintmask 01100000 + -54 92 vlineto + endchar + + + -303 -12 68 hstem + 82 82 vstem + 169 -31 callsubr + 394 -82 -388 225 callgsubr + endchar + + + -217 0 67 352 67 hstem + 130 82 vstem + 46 hmoveto + 249 67 -83 352 83 67 -249 -67 84 -352 -84 hlineto + endchar + + + -206 -12 68 257 60 24 60 hstemhm + -13 55 91 82 95 55 hintmask 10101000 + 220 -31 callsubr + hintmask 11101100 + 233 vlineto + -7 16 18 -5 21 hhcurveto + 414 callsubr + hhcurveto + -18 -15 8 11 -16 hvcurveto + 320 -82 vlineto + hintmask 10111000 + -265 vlineto + 6 -15 -17 4 -19 hhcurveto + 513 callsubr + 16 15 -6 -10 14 hvcurveto + -283 vlineto + hintmask 10101000 + -71 25 -39 62 vhcurveto + endchar + + + -223 314 59 73 47 hstem + -3 57 84 82 vstem + 117 373 rmoveto + -43 -20 16 22 20 11 15 24 34 15 -31 -36 hvcurveto + -6 vlineto + -373 vmoveto + 82 314 109 59 -109 339 -82 -243 hlineto + 14 -14 -18 10 -26 hhcurveto + -50 -33 -36 -47 -54 40 -42 89 hvcurveto + 12 hlineto + endchar + + + -303 -217 67 hstem + 82 82 vstem + 205 -217 rmoveto + 26 22 6 7 14 hvcurveto + 295 callsubr + 774 -82 -774 vlineto + 492 callgsubr + + + 11 -217 68 281 63 224 67 hstem + 82 82 304 83 455 callgsubr + 419 265 hlineto + -184 460 callgsubr + 82 45 -50 -82 -90 -57 -59 -70 -64 -41 31 31 -30 hvcurveto + -40 -52 rlineto + -38 37 56 -40 89 hhcurveto + 105 98 79 140 108 -60 88 -137 -3 hvcurveto + 176 247 rlineto + 44 -366 226 -82 vlineto + endchar + + + 271 -12 71 hstemhm + 77 82 212 83 212 -18 callgsubr + hintmask 11110000 + 225 -12 rmoveto + 59 51 38 55 50 hvcurveto + -57 20 40 -36 74 hhcurveto + hintmask 11101000 + 58 51 37 45 43 hvcurveto + 2 hlineto + 7 -70 rlineto + hintmask 11110000 + 68 486 -82 -352 hlineto + -50 -45 -40 -25 -37 hhcurveto + -62 -28 449 callsubr + -352 vlineto + -50 -44 -40 -25 -37 hhcurveto + -62 -29 436 callsubr + -82 175 callgsubr + 48 -66 100 vhcurveto + endchar + + + 271 -12 71 hstem + 77 82 212 83 212 82 vstem + 666 -205 rmoveto + 82 691 -82 -352 hlineto + -50 -45 -40 -25 -37 hhcurveto + -62 -28 449 callsubr + -352 vlineto + -50 -44 -40 -25 -37 hhcurveto + -62 -29 436 callsubr + -82 175 callgsubr + 48 -66 100 59 51 38 55 50 vhcurveto + -57 20 40 -36 74 hhcurveto + 55 50 32 51 46 hvcurveto + -4 -103 rlineto + endchar + + + 271 -217 67 171 -5 callsubr + 213 82 212 82 hintmask 11100111 + 624 -217 rmoveto + 94 35 63 99 hvcurveto + 363 vlineto + 124 -48 66 -100 -59 -50 -38 -55 -51 vhcurveto + 58 -20 -40 35 -74 hhcurveto + hintmask 11101011 + 315 callgsubr + hintmask 11011011 + -7 70 rlineto + hintmask 11010111 + -68 -486 82 hlineto + hintmask 11100111 + 478 callsubr + 41 25 36 hhcurveto + 62 353 callsubr + 478 callsubr + 39 25 38 hhcurveto + 61 29 -39 -91 hvcurveto + -352 vlineto + -59 -10 -36 -46 -16 -16 4 4 -11 vhcurveto + -16 -62 rlineto + -7 16 24 -6 28 hhcurveto + endchar + + + -11 -217 67 577 71 hstemhm + 82 318 callgsubr + 342 callgsubr + 82 225 82 hintmask 11011000 + 41 -217 rmoveto + 90 33 58 97 hvcurveto + 414 vlineto + -53 callgsubr + vhcurveto + hintmask 11101000 + 189 callsubr + -5 70 rlineto + hintmask 11011000 + -70 -548 hlineto + -55 -12 -33 -38 -14 -12 4 4 -10 vhcurveto + -16 -62 rlineto + -7 13 23 -6 25 hhcurveto + endchar + + + -11 -217 67 577 71 -79 callsubr + 225 82 hintmask 11011000 + 512 -217 rmoveto + 25 23 6 7 13 hvcurveto + -16 314 callgsubr + 370 406 callgsubr + vhcurveto + hintmask 11101000 + 189 callsubr + -7 70 rlineto + hintmask 11011000 + -68 -486 82 352 hlineto + 467 callgsubr + -359 vlineto + 492 callgsubr + + + -15 0 107 272 107 hstem + 82 78 223 78 vstem + 82 hmoveto + 78 202 hlineto + 51 -4 63 -4 63 vhcurveto + 4 hlineto + 17 -30 22 -45 18 -29 171 -275 rcurveline + 77 486 -78 -202 hlineto + -51 4 -63 4 -63 vhcurveto + -4 hlineto + -18 30 -22 44 -18 30 -169 275 rcurveline + -78 hlineto + endchar + + + 1 callgsubr + + + 141 -12 67 -55 63 160 59 141 63 -56 68 hstemhm + 46 86 226 82 hintmask 10101110 + 287 -12 rmoveto + hintmask 01110110 + 33 30 2 10 39 hvcurveto + 290 63 -239 160 192 59 -192 141 229 63 -280 hlineto + hintmask 01101110 + 10 -40 -29 2 -33 hhcurveto + -132 -109 -88 -167 hvcurveto + hintmask 10101110 + -167 109 -88 132 vhcurveto + 5 67 rmoveto + -89 -71 60 128 126 71 61 89 20 25 -5 -7 21 hvcurveto + -351 vlineto + -6 -21 -25 -6 -20 hhcurveto + endchar + + + 147 -12 66 379 65 hstem + 51 79 183 77 184 79 vstem + 221 -12 rmoveto + 56 49 27 61 25 hvcurveto + 4 hlineto + -61 24 52 -27 55 hhcurveto + 101 66 76 154 145 -100 135 -200 -196 -106 -138 -143 -160 73 -69 97 hvcurveto + 6 66 rmoveto + -55 -42 53 107 115 74 104 147 145 78 -95 -119 -115 -41 -50 -58 -43 -42 29 95 hvcurveto + 104 -77 -104 vlineto + -92 -40 -32 -46 vhcurveto + endchar + + + 347 callgsubr + -205 rmoveto + 76 196 513 callgsubr + 217 -76 -217 150 callgsubr + + + -211 -12 74 -62 62 hstemhm + 183 -18 callgsubr + hintmask 10100000 + 49 -12 rmoveto + hintmask 10010000 + 471 callgsubr + hlineto + hintmask 01010000 + 7 -89 rlineto + hintmask 01100000 + 68 486 -82 -312 hlineto + hintmask 10100000 + 223 callgsubr + endchar + + + -211 -12 74 -62 62 hstemhm + 183 -18 callgsubr + hintmask 10100000 + 49 -12 rmoveto + hintmask 10010000 + 471 callgsubr + hlineto + hintmask 01010000 + 7 -89 rlineto + hintmask 01100000 + 68 712 -82 -538 hlineto + hintmask 10100000 + 223 callgsubr + endchar + + + -211 -217 67 138 74 hstemhm + 183 82 -75 75 hintmask 11010000 + 306 -217 rmoveto + 25 23 6 7 14 hvcurveto + hintmask 11100000 + 295 callsubr + 548 -82 -312 vlineto + 223 callgsubr + hintmask 11010000 + 471 callgsubr + -161 hlineto + -91 32 -54 84 vhcurveto + endchar + + + -211 -217 67 574 74 -12 -20 22 -17 callsubr + hintmask 11000100 + 205 -217 rmoveto + 26 22 6 7 14 hvcurveto + 295 callsubr + 374 vlineto + 82 33 49 30 41 hhcurveto + 20 11 -3 -5 16 hvcurveto + hintmask 10010100 + 16 72 rlineto + hintmask 11001000 + 111 callsubr + hintmask 10101000 + -7 88 rlineto + hintmask 10100100 + -68 -548 hlineto + hintmask 11000100 + 492 callgsubr + + + -226 426 72 hstem + 81 82 vstem + 81 hmoveto + 82 297 hlineto + 86 45 43 50 26 14 -2 -9 22 vhcurveto + 15 69 rlineto + 9 -21 -28 5 -37 hhcurveto + -106 -62 -70 -114 hvcurveto + endchar + + + -63 192 59 171 64 hstem + 82 82 192 354 callsubr + 192 91 hlineto + 117 -192 rlineto + 91 hlineto + -131 202 rlineto + 60 19 46 44 77 vvcurveto + 107 -79 37 -105 vhcurveto + -172 hlineto + 82 -235 rmoveto + 171 77 vlineto + 72 43 -25 -57 -57 -43 -32 -72 hvcurveto + endchar + + + -63 0 64 173 59 hstem + 82 82 192 82 vstem + 254 hmoveto + 105 79 38 107 78 -46 44 -60 19 hvcurveto + 131 200 rlineto + -91 hlineto + -117 -190 rlineto + -91 190 -82 -486 hlineto + 159 64 rmoveto + -77 173 77 hlineto + 72 43 -33 -56 -58 -43 -26 -72 hvcurveto + endchar + + + -139 -217 65 140 495 callgsubr + hstemhm + 28 71 -44 79 174 79 hintmask 11110100 + 154 -217 rmoveto + 28 23 6 7 17 hvcurveto + -16 61 rlineto + -4 -13 -17 -5 -17 hhcurveto + -46 -14 34 65 hvcurveto + 59 vlineto + -14 40 37 -4 33 hhcurveto + 158 callgsubr + hintmask 11101100 + -74 callgsubr + -66 vhcurveto + hintmask 11110100 + -55 -55 11 37 -68 hvcurveto + -4 -2 rlineto + -153 vlineto + -99 35 -63 91 vhcurveto + endchar + + + -311 -217 67 809 67 hstem + 83 82 vstem + 32 276 callsubr + 618 281 callsubr + -15 -20 432 callgsubr + -619 221 callsubr + + + -273 -217 67 373 177 callgsubr + 59 377 67 hstemhm + 102 82 hintmask 10111000 + 51 276 callsubr + 278 88 59 -88 281 281 callsubr + -15 -20 432 callgsubr + -282 -1 vlineto + hintmask 11011000 + -92 -5 rlineto + hintmask 10111000 + -54 93 -278 221 callsubr + + + -220 -217 67 569 238 callsubr + hstemhm + 96 83 -74 74 hintmask 10110000 + 235 -217 rmoveto + 318 callsubr + hvcurveto + -16 62 rlineto + -7 -16 -22 -6 -17 hhcurveto + -56 -19 34 60 hvcurveto + 475 208 callgsubr + hintmask 11001000 + 265 callsubr + hintmask 11010000 + -76 -5 rlineto + hintmask 10110000 + -62 72 -474 vlineto + -97 35 -65 104 vhcurveto + endchar + + + 31 -12 71 -38 -21 257 56 -56 58 -58 229 hstemhm + 101 89 callsubr + hintmask 10010110 + 250 -12 rmoveto + hintmask 10010101 + 43 callsubr + hintmask 01010101 + 7 -76 rlineto + hintmask 01010110 + 68 257 88 58 -88 hlineto + hintmask 10001110 + 171 -82 vlineto + hintmask 10010110 + -171 -222 vlineto + hintmask 10001110 + 171 -83 vlineto + hintmask 10010110 + -171 vlineto + hintmask 10100110 + -92 -4 rlineto + hintmask 10010110 + -54 92 -79 64 callgsubr + -66 201 rmoveto + 68 222 -116 vlineto + -57 -46 -35 -25 -50 hhcurveto + -64 -27 39 91 hvcurveto + endchar + + + -12 -12 68 363 67 -53 53 hstemhm + 51 83 187 88 2 84 hintmask 11010100 + 273 -12 rmoveto + 141 81 108 113 99 -45 69 -41 40 hvcurveto + 2 97 67 vlineto + hintmask 11011000 + -185 hlineto + hintmask 10111000 + -53 vlineto + hintmask 10110100 + 53 -45 37 -65 -96 vvcurveto + -92 -47 -79 -91 -91 -48 79 92 96 38 65 53 45 vhcurveto + hintmask 11010100 + 53 -185 -67 97 -2 vlineto + -42 -40 -44 -69 -99 vvcurveto + -113 81 -108 141 vhcurveto + endchar + + + -28 -12 68 376 66 -12 -20 hstemhm + 75 83 237 85 hintmask 11011000 + 262 -12 rmoveto + 143 75 127 171 145 -57 67 -90 -24 -17 -2 -6 -17 hvcurveto + 13 -64 rlineto + 4 10 9 2 9 hhcurveto + 54 25 -55 -103 -124 -47 -94 -83 -60 -47 43 110 hvcurveto + hintmask 10111000 + 277 -83 -284 vlineto + hintmask 11011000 + -148 79 -66 108 vhcurveto + endchar + + + -91 420 66 hstem + 12 443 vstem + 12 hmoveto + 81 hlineto + 91 276 15 48 16 49 14 47 rlinecurve + 4 hlineto + 15 -47 16 -49 14 -48 92 -276 rcurveline + 85 hlineto + -175 486 rlineto + -96 hlineto + endchar + + + 160 0 85 331 70 hstem + 24 670 vstem + 24 hmoveto + 78 hlineto + 71 281 11 46 9 44 10 45 rlinecurve + 4 hlineto + 12 -45 10 -44 12 -46 76 -281 rcurveline + 80 hlineto + 75 281 12 45 11 45 10 45 rlinecurve + 4 hlineto + 10 -45 9 -44 10 -46 72 -281 rcurveline + 84 hlineto + -135 486 rlineto + -96 hlineto + -68 -260 -13 -46 -10 -46 -10 -49 rlinecurve + -4 hlineto + -12 49 -10 45 -11 46 -70 261 rcurveline + -101 hlineto + endchar + + + -91 656 68 hstem + 12 443 vstem + 12 hmoveto + 81 hlineto + 86 269 13 43 14 50 14 44 rlinecurve + 4 hlineto + 16 -45 16 -50 15 -42 100 -269 rcurveline + 84 hlineto + -195 487 22 65 rlineto + 60 20 35 44 55 hhcurveto + 12 15 -4 -3 10 hvcurveto + 16 65 rlineto + 6 -16 -19 4 -22 hhcurveto + -98 -50 -73 -96 -34 hvcurveto + endchar + + + -143 0 486 hstem + 167 82 vstem + 167 hmoveto + 82 164 hlineto + 167 322 rlineto + -87 hlineto + -66 -138 -17 -38 -17 -35 140 callsubr + 35 -17 38 -66 138 rcurveline + -88 hlineto + 168 -322 rlineto + endchar + + + -133 -217 67 150 67 352 67 hstem + 314 75 vstem + 432 -217 rmoveto + 24 22 6 7 14 hvcurveto + -16 62 167 callgsubr + -13 hhcurveto + -39 -12 33 55 hvcurveto + 129 -254 vlineto + 256 375 rlineto + 44 -332 -67 228 vlineto + -256 -375 rlineto + -44 283 -70 vlineto + -88 33 -59 85 vhcurveto + endchar + + + -101 -4 67 -67 68 98 50 207 67 hstemhm + 411 58 hintmask 01111000 + 372 162 rmoveto + 28 11 -16 -24 hvcurveto + hintmask 10111000 + -30 -29 -29 -53 vhcurveto + -15 -15 0 -15 hhcurveto + hintmask 01111000 + 68 27 31 31 30 hhcurveto + -128 -243 rmoveto + 6 28 5 26 7 23 rrcurveto + 16 16 0 14 hhcurveto + 110 51 57 69 55 -35 35 -56 -65 -47 -54 -94 -36 hvcurveto + -33 -33 1 2 -33 hvcurveto + 255 375 rlineto + 44 -327 -67 228 vlineto + -256 -375 rlineto + -44 vlineto + 50 -2 66 -1 61 -1 -5 -21 -6 -22 -5 -24 rrcurveto + endchar + + + -133 -217 68 568 67 hstem + 323 83 vstem + 200 -217 rmoveto + 107 99 79 140 118 -80 83 -129 -14 hvcurveto + 188 253 rlineto + 44 -341 -67 241 vlineto + -192 460 callgsubr + 86 48 -50 -82 -90 -59 -59 -71 -71 -43 30 32 -35 hvcurveto + -41 -52 rlineto + -40 42 58 -38 97 hhcurveto + endchar + + + -141 656 68 hstem + 146 82 86 83 vstem + 146 hmoveto + 82 293 221 callgsubr + endchar + + + -141 656 463 callgsubr + 328 511 callgsubr + endchar + + + -33 -12 68 256 95 249 68 hstem + 59 78 78 95 78 78 vstem + 263 -12 rmoveto + 124 79 114 257 238 -79 127 -124 -125 -79 -127 -238 -257 79 -114 125 hvcurveto + 68 vmoveto + -71 -55 80 223 204 55 93 71 70 55 -93 -204 -223 -55 -80 -70 hvcurveto + 256 vmoveto + 26 21 21 27 27 -21 20 -26 -27 -21 -20 -27 -27 21 -21 27 hvcurveto + endchar + + + 86 callsubr + + + 4 216 73 hstem + 82 82 234 354 callsubr + 216 234 -216 82 486 -82 -197 -234 197 -82 hlineto + endchar + + + -216 -217 65 87 59 592 108 hstemhm + -26 66 123 110 -96 83 hintmask 11110100 + 300 -263 183 callgsubr + -260 156 512 callsubr + hintmask 11111000 + 178 693 -105 callsubr + + + -216 -217 65 87 59 hstem + -26 66 137 83 vstem + 40 -107 512 callsubr + 260 -156 183 callgsubr + endchar + + + -147 0 67 hstem + 82 82 vstem + 82 hmoveto + 303 67 -221 419 -82 hlineto + endchar + + + -131 136 59 461 68 hstem + 156 82 86 83 vstem + 156 516 callsubr + 98 221 callgsubr + -133 469 callsubr + + + -131 136 59 461 463 callgsubr + 136 115 59 -115 133 511 callgsubr + -98 469 callsubr + + + 287 -217 68 137 69 -57 57 75 63 224 67 -57 69 hstemhm + 47 85 238 -79 callgsubr + 290 84 hintmask 1101101101000000 + 238 -12 rmoveto + hintmask 1101101011000000 + 54 46 33 36 261 callgsubr + hintmask 1011101011000000 + 7 -57 rlineto + hintmask 1011101101000000 + 68 419 252 hlineto + -171 -258 32 -45 rlineto + 10 23 12 6 29 hhcurveto + 73 40 -50 -82 -90 -54 -59 -66 -60 -39 32 30 -29 hvcurveto + -41 -52 rlineto + -38 37 53 -40 86 hhcurveto + 102 95 79 140 108 -56 86 -130 -1 hvcurveto + 165 247 rlineto + 44 -353 226 -83 vlineto + hintmask 1101011101000000 + -187 vlineto + 4 -83 rlineto + 33 -41 -33 23 -52 hhcurveto + -106 -95 -98 -158 hvcurveto + hintmask 1101101101000000 + -162 75 -92 116 vhcurveto + 18 69 rmoveto + -79 -45 70 116 hvcurveto + hintmask 1101011101000000 + 111 57 75 73 37 32 -15 -36 39 vhcurveto + -254 vlineto + hintmask 1101101101000000 + -43 -39 -34 -24 -41 hhcurveto + endchar + + + -6 -217 67 138 71 360 238 callsubr + 173 405 callsubr + 209 82 hintmask 11011101 + 337 276 callsubr + 618 281 callsubr + -14 -21 432 callgsubr + -78 -209 136 vlineto + hintmask 11101011 + 265 callsubr + hintmask 11101101 + -76 -5 rlineto + hintmask 11011101 + -62 72 -241 vlineto + -124 1 44 -66 98 hhcurveto + 60 48 24 44 38 hvcurveto + 3 -111 hlineto + 145 callgsubr + -16 -62 rlineto + -7 17 24 -6 30 hhcurveto + -73 276 rmoveto + -60 -25 39 91 hvcurveto + 230 209 -290 vlineto + -52 -42 -34 -18 -48 hhcurveto + endchar + + + 270 callgsubr + + + -385 548 36 123 36 hstem + 103 55 vstem + 30 548 269 callsubr + + + -385 548 36 123 36 hstem + 16 55 vstem + 144 548 252 callsubr + + + -256 821 51 hstem + 22 62 50 61 vstem + 134 395 rmoveto + 61 213 hlineto + -78 45 -33 35 54 vvcurveto + 48 32 31 55 41 28 -22 -25 20 vhcurveto + 32 40 rlineto + 29 -26 -40 29 -60 hhcurveto + -80 -64 -44 -85 -75 46 -42 66 -44 hvcurveto + endchar + + + -444 533 199 hstem + 25 64 vstem + 28 533 rmoveto + 58 hlineto + 6 199 rlineto + -70 hlineto + endchar + + + -281 601 57 hstem + 6 266 vstem + 6 601 -37 callsubr + + + -333 437 callsubr + 55 199 vstem + 97 573 -71 callgsubr + + + -333 437 callsubr + -32 199 vstem + 125 573 -26 callsubr + + + -444 -270 199 hstem + 25 64 vstem + 22 430 callgsubr + + + -359 0 142 204 140 hstem + 25 149 vstem + 25 hmoveto + 149 hlineto + -69 142 rlineto + -11 hlineto + 204 vmoveto + 470 callgsubr + + + -359 346 140 hstem + 25 149 vstem + 94 346 rmoveto + 470 callgsubr + + + -386 194 53 hstem + 26 49 vstem + -100 275 rmoveto + 126 51 rlineto + -18 vlineto + -84 42 -30 49 32 22 12 11 17 vhcurveto + -23 44 rlineto + -7 -8 -14 -7 -16 hhcurveto + -34 -18 499 callgsubr + -177 -70 rlineto + endchar + + + -240 248 41 hstem + 79 53 57 53 vstem + 160 248 rmoveto + 52 30 32 47 31 -15 28 -26 47 hvcurveto + 109 283 rlineto + -60 hlineto + -58 -166 -10 -29 -11 -23 -9 -29 rlinecurve + -3 hlineto + -9 29 -11 23 -9 29 -59 166 rcurveline + -63 hlineto + 112 -282 rlineto + -26 -47 -15 -28 -32 vvcurveto + -47 30 -32 51 vhcurveto + 41 vmoveto + -19 -9 14 20 21 11 28 16 31 hvcurveto + 3 hlineto + 18 -31 9 -27 -22 vvcurveto + -20 -9 -14 -20 vhcurveto + endchar + + + 437 callsubr + -143 199 vstem + 14 573 -26 callsubr + + + 697 170 hstem + -135 189 vstem + 17 697 -24 callsubr + + + 558 212 hstem + -91 124 vstem + -24 430 callsubr + + + 437 callsubr + -56 199 vstem + -14 573 -71 callgsubr + + + 697 170 hstem + -54 189 vstem + -17 697 -89 callsubr + + + 558 212 hstem + -33 128 vstem + 24 558 118 callsubr + + + 681 472 callgsubr + -155 600 -12 callsubr + + + 792 46 hstem + -148 296 vstem + -112 699 -59 callsubr + + + 642 54 hstem + -247 381 vstem + -105 570 -20 callsubr + 33 vmoveto + 35 31 -100 117 -48 -36 rlineto + endchar + + + 768 47 hstem + -211 340 vstem + -95 699 rmoveto + 93 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + 8 38 277 callgsubr + endchar + + + 642 54 hstem + -134 369 vstem + -105 570 -20 callsubr + 268 33 rmoveto + 101 114 -49 34 -87 -120 rlineto + endchar + + + 768 47 hstem + -129 352 vstem + -95 699 56 callgsubr + + + 639 53 18 51 -9 51 hstemhm + -137 505 callsubr + hintmask 10111000 + -105 570 rmoveto + 103 69 381 callgsubr + -69 29 34 -100 88 rlineto + -68 hlineto + -100 -88 rlineto + hintmask 11011000 + 238 callgsubr + hintmask 10111000 + 170 callsubr + hintmask 11011000 + 222 callgsubr + + + 765 404 callsubr + -145 45 200 45 hintmask 10111000 + -95 699 357 callgsubr + hintmask 11011000 + 69 callgsubr + hintmask 10111000 + 94 callsubr + hintmask 11011000 + 258 callsubr + + + 632 45 28 45 hstemhm + -129 258 vstemhm + -98 570 rmoveto + 96 62 31 callgsubr + 96 -62 31 24 -95 83 rlineto + -68 hlineto + -95 -83 rlineto + hintmask 01100000 + 129 111 rmoveto + 83 36 45 44 7 hvcurveto + -38 10 rlineto + -29 -8 -24 -25 -56 hhcurveto + -56 -24 25 29 -8 hvcurveto + -38 -10 rlineto + -44 7 36 -45 83 hhcurveto + endchar + + + 768 44 29 46 hstemhm + -137 274 vstemhm + -95 699 rmoveto + 93 327 callgsubr + 93 -69 33 26 -92 87 rlineto + -72 hlineto + -92 -87 rlineto + hintmask 01100000 + 128 116 rmoveto + 88 43 44 50 6 hvcurveto + -46 8 rlineto + -30 -7 -26 -26 -58 hhcurveto + -58 -26 26 30 -7 hvcurveto + -46 -8 rlineto + -50 6 43 -44 88 hhcurveto + endchar + + + 642 54 54 41 hstem + 149 60 vstem + -105 570 -20 callsubr + 88 callgsubr + + + 768 47 49 42 hstem + 149 58 vstem + -95 699 rmoveto + 93 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + 52 callgsubr + + + 577 333 callsubr + 38 callgsubr + + + 709 367 callsubr + -177 381 callsubr + vstemhm + 75 709 -35 callgsubr + hintmask 01110000 + 33 callsubr + hintmask 11110000 + 136 callgsubr + + + 601 57 hstem + -133 266 vstem + -133 601 -37 callsubr + + + 326 callgsubr + + + 601 57 hstem + -133 266 vstem + -133 601 -37 callsubr + + + 326 callgsubr + + + 571 55 hstem + -156 494 callgsubr + vstem + 571 154 callsubr + + + 705 46 hstem + -151 481 callsubr + vstem + 705 vmoveto + -50 callgsubr + + + 705 53 hstem + -146 453 callsubr + vstem + 705 243 callsubr + + + 572 48 hstem + -157 504 callsubr + vstem + 572 vmoveto + 30 callsubr + + + 571 51 hstem + -156 48 216 48 vstem + 571 vmoveto + 103 callgsubr + -48 8 rlineto + -53 -7 -34 -55 -67 hhcurveto + -67 -34 55 53 -7 hvcurveto + -48 27 callsubr + 5 108 rmoveto + 39 29 -88 124 -52 -40 rlineto + endchar + + + 705 49 hstem + -146 47 198 47 vstem + 705 vmoveto + 93 45 59 70 8 hvcurveto + -47 8 rlineto + -49 -8 -32 -39 -59 hhcurveto + -59 -32 39 49 -8 hvcurveto + -47 207 callsubr + -3 98 rmoveto + 41 29 -95 116 -53 -36 rlineto + endchar + + + 571 51 hstem + -156 48 216 48 vstem + 571 vmoveto + 103 callgsubr + -48 8 rlineto + -53 -7 -34 -55 -67 hhcurveto + -67 -34 55 53 -7 hvcurveto + -48 27 callsubr + -5 108 rmoveto + 101 113 -52 40 -88 -124 rlineto + endchar + + + 705 49 hstem + -146 47 198 47 vstem + 705 vmoveto + 93 45 59 70 8 hvcurveto + -47 8 rlineto + -49 -8 -32 -39 -59 hhcurveto + -59 -32 39 49 -8 hvcurveto + -47 207 callsubr + 3 98 rmoveto + 107 109 -53 36 -95 -116 rlineto + endchar + + + 571 47 92 50 -8 50 hstemhm + -144 488 callgsubr + hintmask 10101001 + 571 vmoveto + 282 callgsubr + hintmask 10110010 + -62 -30 35 33 -5 hvcurveto + hintmask 10101010 + -47 -8 rlineto + hintmask 10101001 + -51 6 40 -56 98 hhcurveto + hintmask 11000110 + 65 139 -42 callsubr + hintmask 10100110 + -13 callgsubr + -5 rlineto + 29 5 8 14 20 hhcurveto + hintmask 11000110 + 222 callgsubr + + + 708 45 90 50 0 50 hstemhm + -145 375 callgsubr + hintmask 10101010 + 708 vmoveto + 93 43 50 56 7 hvcurveto + -46 8 rlineto + -36 -7 -29 -33 -61 hhcurveto + hintmask 10100101 + -61 -29 33 36 -7 hvcurveto + hintmask 10101001 + -46 -8 rlineto + hintmask 10101010 + -56 7 43 -50 93 hhcurveto + hintmask 11010001 + 66 135 rmoveto + 54 22 40 51 3 hvcurveto + -45 5 rlineto + -29 -4 -10 -17 -24 hhcurveto + hintmask 10110001 + -41 -23 50 -64 hhcurveto + -54 -22 -40 -52 -3 hvcurveto + 45 -5 rlineto + 30 410 callgsubr + hintmask 11010001 + 258 callsubr + + + 571 51 176 50 hstem + -156 48 121 60 35 48 vstem + 571 vmoveto + 103 callgsubr + -48 8 rlineto + -53 -7 -34 -55 -67 hhcurveto + -67 -34 55 53 -7 hvcurveto + -48 27 callsubr + -27 111 rmoveto + 50 8 50 22 54 vvcurveto + 53 -48 27 -81 2 vhcurveto + -7 -50 rlineto + 54 -2 22 -13 454 callsubr + -12 -28 -6 vhcurveto + endchar + + + 705 508 callsubr + -146 47 110 59 29 47 hintmask 11110000 + 705 vmoveto + hintmask 11111000 + 93 45 59 70 8 hvcurveto + -47 8 rlineto + -49 -8 -32 -39 -59 hhcurveto + -59 -32 39 49 -8 hvcurveto + -47 -8 rlineto + hintmask 11110000 + 130 callsubr + + + 586 108 hstem + -55 110 vstem + 586 vmoveto + -106 callsubr + + + 714 107 hstem + -57 114 vstem + 714 vmoveto + -84 callgsubr + + + 587 100 hstem + -146 99 94 99 vstem + -96 587 -88 callgsubr + + + 715 98 hstem + -152 380 callsubr + vstem + -103 715 -98 callgsubr + + + 588 91 400 callsubr + -96 588 3 callgsubr + 103 117 rmoveto + 35 24 -82 115 -49 -34 rlineto + 185 -222 102 callsubr + + + 715 91 hstem + -148 420 callgsubr + vstem + -103 715 83 callgsubr + 104 108 rmoveto + 37 26 -95 119 -53 -36 rlineto + 213 -217 rmoveto + 2 callsubr + + + 595 84 hstem + -155 83 144 83 vstem + -113 595 170 callgsubr + + + 588 91 400 callsubr + -96 588 3 callgsubr + 89 117 rmoveto + 96 105 -49 34 -82 -115 rlineto + 138 -141 102 callsubr + + + 715 91 hstem + -148 420 callgsubr + vstem + -103 715 61 callgsubr + + + 588 91 28 50 -1 50 hstemhm + -153 474 callgsubr + hintmask 11010010 + 71 81 callsubr + + + 588 91 71 47 400 callsubr + -96 588 3 callgsubr + -38 162 rmoveto + 267 47 -267 hlineto + 230 -209 102 callsubr + + + 715 91 55 46 hstem + -148 420 callgsubr + vstem + -103 715 83 callgsubr + -31 146 rmoveto + 268 46 -268 hlineto + 237 -192 rmoveto + 2 callsubr + + + 588 91 41 47 400 callsubr + -34 720 370 callsubr + 32 -224 -4 callsubr + + + 715 91 33 48 hstem + -148 420 callgsubr + vstem + -36 839 254 callgsubr + 32 -220 83 callgsubr + 206 hmoveto + 2 callsubr + + + 706 54 hstem + 15 65 vstem + -32 572 -43 callsubr + + + 824 48 hstem + 15 64 vstem + -32 698 rmoveto + -78 callsubr + endchar + + + 554 441 callsubr + 554 vmoveto + 34 callsubr + + + 699 36 108 37 hstem + -97 45 103 46 vstem + 699 vmoveto + 131 callgsubr + + + 501 callgsubr + -96 295 vstem + -51 568 94 callgsubr + + + 703 173 hstem + -102 308 vstem + -59 703 58 callgsubr + + + 574 472 callgsubr + -41 574 2 callgsubr + + + 706 47 hstem + -148 296 vstem + -43 706 -83 callgsubr + + + 501 callgsubr + -199 295 vstem + -100 568 rmoveto + 46 21 -87 172 -58 -28 rlineto + 250 -165 rmoveto + 45 21 -86 172 -59 -28 rlineto + endchar + + + 703 173 hstem + -206 308 vstem + -101 703 515 callsubr + 265 -141 515 callsubr + endchar + + + 672 55 hstem + -156 51 vstem + -105 568 263 callgsubr + + + 788 53 hstem + -146 50 vstem + -96 704 rmoveto + 47 8 31 37 57 hhcurveto + 57 31 -37 -47 8 hvcurveto + 50 8 rlineto + 70 -8 -45 59 -93 hhcurveto + -93 -45 -59 -70 -8 hvcurveto + endchar + + + 564 84 hstem + -53 42 vstem + -2 564 rmoveto + 22 18 15 29 26 -21 14 -20 -3 -2 0 -1 -3 hvcurveto + 2 30 17 23 38 18 -18 32 rcurveline + -57 -26 -24 -44 -47 vvcurveto + -45 18 -24 33 vhcurveto + endchar + + + 706 51 hstem + -80 65 vstem + 32 574 -54 callsubr + + + 492 callsubr + -162 60 vstem + -65 577 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + 492 callsubr + -152 60 vstem + -55 577 -64 callsubr + + + 364 callgsubr + -141 47 27 60 101 47 hintmask 10101100 + 27 562 -40 callgsubr + hintmask 11001100 + 38 callsubr + hintmask 10111100 + -56 callsubr + hintmask 11001100 + 222 callgsubr + + + 202 callgsubr + + + 706 54 hstem + 15 65 vstem + -32 572 -43 callsubr + + + 492 callsubr + -83 60 vstem + -120 577 -11 callgsubr + + + 492 callsubr + -83 60 vstem + -120 577 109 callsubr + + + 364 callgsubr + -141 47 101 60 27 47 hintmask 11011100 + 65 715 -42 callsubr + hintmask 10111000 + -56 callsubr + hintmask 11011100 + 166 callgsubr + hintmask 10111000 + -43 callgsubr + + + -177 47 hstemhm + -76 161 -50 50 hintmask 10100000 + 35 510 callgsubr + 191 -50 -72 hlineto + hintmask 11000000 + -111 -47 hlineto + hintmask 10100000 + 111 hlineto + endchar + + + -177 47 hstemhm + -85 50 -50 161 hintmask 11000000 + -85 510 callgsubr + 72 hlineto + hintmask 10100000 + 111 47 hlineto + hintmask 11000000 + -111 72 -50 hlineto + endchar + + + 667 47 hstem + 35 50 vstem + 35 573 rmoveto + 50 141 -161 -47 111 hlineto + endchar + + + 434 209 hstem + 75 73 vstem + -1 434 rmoveto + 84 10 65 40 79 vvcurveto + 32 -10 24 -13 24 408 callsubr + -19 6 -16 -21 vvcurveto + -45 -28 -28 -56 -9 vhcurveto + endchar + + + -255 36 123 36 hstem + -73 55 vstem + 55 -255 252 callsubr + + + -211 47 -47 153 hstemhm + -25 50 hintmask 10100000 + -96 -211 rmoveto + 192 47 -71 hlineto + hintmask 01100000 + 106 -50 vlineto + hintmask 10100000 + -106 -71 vlineto + endchar + + + -249 153 -47 47 hstemhm + -25 50 hintmask 10100000 + -25 510 callgsubr + hlineto + hintmask 01100000 + 106 71 47 -192 -47 71 vlineto + endchar + + + -177 47 hstem + -25 50 vstem + -25 510 callgsubr + 72 71 47 -71 72 -50 -72 -71 -47 71 hlineto + endchar + + + -177 47 hstem + -96 192 vstem + -96 -177 rmoveto + 192 47 -192 hlineto + endchar + + + 39 callgsubr + hstem + -55 110 vstem + -206 vmoveto + -106 callsubr + + + -202 100 hstem + -146 99 94 99 vstem + -96 -202 -88 callgsubr + + + -256 441 callsubr + -256 vmoveto + 34 callsubr + + + 198 callsubr + hstem + 14 64 vstem + -87 -226 -32 callgsubr + + + -226 40 hstem + 14 64 vstem + -87 -226 rmoveto + 83 callsubr + 29 67 rlineto + -53 hlineto + -44 -91 425 callsubr + endchar + + + -226 40 hstem + 14 64 vstem + -87 -226 rmoveto + 83 callsubr + 29 67 rlineto + -53 hlineto + -44 -91 425 callsubr + endchar + + + -206 55 -55 209 hstemhm + -80 61 hintmask 10100000 + 11 -206 rmoveto + 24 34 12 15 19 hvcurveto + -22 41 rlineto + -8 -11 -13 -5 -15 hhcurveto + -24 -22 15 31 hvcurveto + hintmask 01100000 + 39 23 39 41 30 vhcurveto + -56 hlineto + hintmask 10100000 + -36 -27 -33 -47 -50 vvcurveto + 290 callsubr + endchar + + + -212 59 -59 215 hstemhm + -83 65 hintmask 10100000 + 13 204 callsubr + hintmask 01100000 + 38 25 40 43 32 vhcurveto + -61 hlineto + hintmask 10100000 + -37 -28 -35 -48 -52 386 callsubr + + + -270 199 hstem + -32 64 vstem + -35 430 callgsubr + + + -129 47 373 callgsubr + -226 rmoveto + 46 97 150 -97 46 144 -242 hlineto + endchar + + + -224 472 callgsubr + -41 -224 2 callgsubr + + + -231 55 hstem + -156 494 callgsubr + vstem + -231 154 callsubr + + + -133 55 hstem + -156 51 vstem + -105 -237 263 callgsubr + + + -223 333 callsubr + -223 232 callsubr + hintmask 01110000 + -53 callsubr + hintmask 11110000 + 119 callgsubr + + + -170 57 hstem + -133 266 vstem + -133 -170 -37 callsubr + + + 184 60 24 60 hstemhm + -189 55 268 55 vstemhm + 94 184 rmoveto + 414 callsubr + -58 -36 84 -88 hhcurveto + hintmask 01110000 + 513 callsubr + hintmask 11110000 + 58 37 -84 87 hhcurveto + endchar + + + -255 36 123 36 hstem + 18 55 vstem + -55 -255 269 callsubr + + + -225 47 373 callgsubr + -225 rmoveto + 242 143 -46 -96 -150 96 -46 hlineto + endchar + + + -240 40 84 39 373 callgsubr + -240 rmoveto + 242 163 -242 hlineto + 46 -123 rmoveto + 84 150 -84 vlineto + endchar + + + -233 95 4 54 hstemhm + -168 48 96 48 96 48 hintmask 01111000 + -168 -228 rmoveto + 48 -6 rlineto + 80 19 20 30 32 15 -29 -51 vhcurveto + hintmask 10111000 + -19 48 vlineto + hintmask 01111000 + 19 vlineto + 51 15 29 31 31 19 -20 -80 vhcurveto + 48 6 rlineto + 104 -33 44 -61 -34 -29 -16 -42 -10 vhcurveto + -2 hlineto + 42 -10 -29 16 -34 hhcurveto + -61 -33 -44 -104 hvcurveto + endchar + + + 555 169 hstem + -84 168 vstem + -51 555 rmoveto + 51 51 51 -51 33 33 -51 51 51 51 -33 34 -51 -51 -51 51 -33 -34 51 -51 -51 -51 rlineto + endchar + + + 577 333 callsubr + 38 callgsubr + + + 709 367 callsubr + -177 381 callsubr + vstemhm + 75 709 -35 callgsubr + hintmask 01110000 + 33 callsubr + hintmask 11110000 + 136 callgsubr + + + 202 callgsubr + + + 595 84 hstem + -155 83 144 83 vstem + -113 168 callgsubr + + + 29 callgsubr + hstemhm + -33 62 hintmask 10100000 + 44 -201 -95 callgsubr + hintmask 01100000 + -16 callgsubr + hintmask 10100000 + -3 callgsubr + endchar + + + endchar + + + 661 58 hstem + -454 908 vstem + -430 550 211 callsubr + + + 808 58 hstem + -454 908 vstem + -430 697 211 callsubr + + + -309 449 241 hstem + 82 103 vstem + 82 449 rmoveto + 54 hlineto + 34 149 15 92 rlineto + -81 hlineto + endchar + + + -309 0 242 hstem + 64 103 vstem + 64 hmoveto + 81 hlineto + 22 242 rlineto + -54 hlineto + -34 -150 rlineto + endchar + + + -16 29 callgsubr + hstemhm + 244 62 hintmask 10100000 + 321 -201 -95 callgsubr + hintmask 01100000 + -16 callgsubr + hintmask 10100000 + -3 callgsubr + endchar + + + 114 callsubr + + + -44 478 callgsubr + hstem + 30 455 vstem + 30 hmoveto + 455 49 hlineto + -180 469 rlineto + -95 hlineto + -180 -469 rlineto + 88 20 rmoveto + 81 216 56 165 rlineto + 3 hlineto + 56 -165 81 -216 rlineto + endchar + + + 34 343 callgsubr + hintmask 11100010 + 44 hmoveto + 203 59 hlineto + hintmask 11010010 + -62 47 -46 66 100 vvcurveto + 108 59 81 98 99 59 -81 -108 -100 -46 -66 -63 -47 vhcurveto + hintmask 11010100 + -59 204 66 vlineto + hintmask 11011010 + -107 3 hlineto + hintmask 11010010 + 292 callsubr + hintmask 11100010 + -107 hlineto + endchar + + + -126 430 68 hstem + 46 85 172 74 vstem + 316 -180 rmoveto + 41 55 20 54 34 vvcurveto + 67 -28 25 -80 26 vhcurveto + -74 25 -64 34 114 vvcurveto + 106 56 70 81 38 27 -18 -25 28 vhcurveto + 42 54 rlineto + 31 -33 -42 26 -65 hhcurveto + -116 -101 -88 -156 -159 95 -50 91 -31 hvcurveto + 57 -17 14 -20 -32 vvcurveto + -29 -18 -26 -35 -44 vhcurveto + endchar + + + 2 -12 72 594 68 hstemhm + 78 78 -78 80 218 80 -22 82 hintmask 11010100 + 305 -12 rmoveto + 118 93 75 126 105 -64 77 -108 10 401 callsubr + 75 36 37 58 72 vvcurveto + 117 -90 54 -92 -133 -63 -97 -134 vhcurveto + -265 vlineto + hintmask 11010100 + -177 123 -61 104 vhcurveto + -2 72 rmoveto + hintmask 11100100 + -55 -92 35 143 hvcurveto + 25 0 22 22 vvcurveto + 22 78 38 6 21 hhcurveto + 99 42 -66 -75 hvcurveto + hintmask 11010100 + -82 -55 -52 -76 vhcurveto + -145 420 rmoveto + 115 2 44 59 75 523 callsubr + 53 44 -34 -76 -80 -55 -62 -164 -32 hvcurveto + hintmask 11010100 + 32 1 35 43 vvcurveto + endchar + + + -36 -12 68 280 55 265 68 hstemhm + 66 79 -57 77 217 81 hintmask 11110100 + 145 541 rmoveto + 69 41 46 55 vhcurveto + 81 1 54 -70 6 -191 rrcurveto + -190 -26 -47 87 84 vvcurveto + hintmask 11101100 + 114 -553 rmoveto + 123 81 95 279 238 -77 124 -148 hvcurveto + hintmask 11110100 + -95 -77 -74 -108 -102 70 -132 246 33 hvcurveto + -229 -3 -50 -56 -67 hhcurveto + hintmask 11101100 + -54 -43 30 93 53 1 37 -8 22 hvcurveto + -78 hlineto + 8 -35 0 -29 -58 vvcurveto + -121 63 -60 108 vhcurveto + endchar + + + -64 -187 685 hstemhm + 82 77 -77 81 hintmask 10100000 + 82 hmoveto + hintmask 11000000 + 390 callsubr + 46 -88 63 -97 52 -59 -38 -57 -49 -62 -52 -54 96 -8 rcurveline + 39 46 52 71 44 70 -73 80 -80 121 -49 96 60 65 55 41 54 17 -8 78 rcurveline + hintmask 10100000 + 413 callsubr + 385 callsubr + + + -23 -179 233 -62 62 -42 -21 22 -21 438 68 hstemhm + 46 85 99 83 91 85 hintmask 01001111 + 267 54 rmoveto + -86 -50 74 114 113 50 75 86 86 51 -75 -113 -114 482 callgsubr + hintmask 10001111 + -37 -233 rmoveto + 83 hlineto + hintmask 00011111 + -1 70 -1 39 -2 62 rrcurveto + 102 19 78 88 143 vvcurveto + 164 -100 92 -122 -121 -100 -92 -164 vhcurveto + hintmask 00101111 + -145 80 -89 104 -17 vhcurveto + endchar + + + -92 418 68 hstem + 46 85 203 74 vstem + 351 -184 rmoveto + 37 51 20 53 30 vvcurveto + 61 -30 30 -93 23 vhcurveto + -91 22 -63 46 106 vvcurveto + 121 64 59 100 54 52 0 -2 39 vhcurveto + 70 -151 vlineto + -137 -106 -78 -170 -152 93 -64 106 -26 hvcurveto + 77 -19 12 -20 -27 vvcurveto + -24 -13 -20 -36 -43 vhcurveto + endchar + + + -145 143 59 217 67 hstem + 82 79 vstem + 82 -179 rmoveto + 83 hlineto + -2 117 -2 97 108 vvcurveto + 206 59 -206 hlineto + -2 217 rlineto + 228 67 -305 hlineto + endchar + + + -60 -179 869 hstem + 394 80 vstem + 456 -179 rmoveto + 13 65 5 63 67 vvcurveto + 277 -129 256 -232 141 vhcurveto + -51 -61 99 -58 78 -81 56 -95 rlinecurve + -278 -125 34 -69 100 50 84 40 92 41 rlinecurve + 18 -38 14 -40 10 -41 -272 -122 rcurveline + 34 -69 91 46 78 37 84 38 rlinecurve + 7 -41 3 -42 -43 vvcurveto + -61 -5 -61 -13 -64 vhcurveto + endchar + + + 10 callsubr + 217 41 -24 callsubr + + + 40 callgsubr + 9 callsubr + 191 63 -24 callsubr + + + 40 callsubr + 59 98 hstemhm + 90 83 -35 380 callsubr + hintmask 11101000 + 299 callgsubr + 97 59 -98 callgsubr + + + 40 callgsubr + 81 98 hstemhm + 90 83 -61 380 callsubr + hintmask 11101000 + -47 callsubr + hintmask 11110110 + 71 81 -98 callgsubr + + + 129 -12 69 -38 -21 23 -21 332 69 185 70 hstemhm + 206 84 265 83 hintmask 10011110 + 458 -12 rmoveto + 92 88 53 151 148 -100 61 -133 -45 -38 -4 -6 -32 hvcurveto + 195 229 70 -491 -70 178 vlineto + hintmask 00111110 + -586 84 322 vlineto + 6 28 37 4 39 hhcurveto + 102 59 -43 -98 hvcurveto + hintmask 10011110 + -100 -59 -34 -48 -13 -17 4 4 -9 vhcurveto + hintmask 01011110 + -15 -67 rlineto + hintmask 10011110 + -5 15 26 -5 23 hhcurveto + endchar + + + 39 -10 66 -38 -21 24 -21 252 59 138 69 hstemhm + 175 84 209 82 hintmask 10011110 + 395 -10 rmoveto + 81 74 42 115 117 -89 47 -111 -38 -28 -3 -5 -25 hvcurveto + 465 callgsubr + hintmask 00111110 + -449 84 244 vlineto + 5 22 24 3 37 hhcurveto + 81 45 -32 -70 hvcurveto + hintmask 10011110 + -69 -45 -25 -38 -9 -14 3 3 -8 vhcurveto + hintmask 01011110 + -13 -65 rlineto + hintmask 10011110 + -4 13 21 -3 20 hhcurveto + endchar + + + 330 callgsubr + 183 41 -89 callsubr + + + 216 callsubr + 163 41 -89 callsubr + + + 13 -12 73 248 71 215 73 hstemhm + 52 83 -83 84 hintmask 11110000 + 338 -12 rmoveto + 85 64 35 60 52 hvcurveto + -46 52 rlineto + -46 -42 -47 -28 -63 hhcurveto + -124 -76 83 165 -6 hvcurveto + 276 71 521 callgsubr + -275 hlineto + 139 14 77 76 116 hhcurveto + 55 45 -25 -37 35 hvcurveto + 45 54 rlineto + 43 -38 -64 38 -79 hhcurveto + hintmask 11110000 + -170 -120 -118 -222 -223 118 -117 168 hvcurveto + endchar + + + -57 515 callgsubr + 52 84 vstem + 494 callsubr + 72 56 26 49 45 hvcurveto + -46 50 rlineto + -35 -33 -38 -20 -52 hhcurveto + -98 -61 64 117 -7 hvcurveto + 223 63 -222 hlineto + 103 13 62 55 90 hhcurveto + 48 34 -18 -29 29 hvcurveto + 47 51 rlineto + 35 -35 -54 31 -67 hhcurveto + -144 -108 -96 -175 -177 105 -94 141 hvcurveto + endchar + + + -4 callgsubr + endchar + + + -84 435 callgsubr + -37 callgsubr + endchar + + + 116 callgsubr + endchar + + + 115 callsubr + endchar + + + 124 callsubr + 79 98 hstemhm + -20 98 12 83 13 98 hintmask 11101000 + 90 hmoveto + 83 656 -83 hlineto + hintmask 11111100 + -61 59 -98 callgsubr + + + 124 callsubr + 79 518 callsubr + hintmask 11110100 + 63 715 rmoveto + 26 19 21 28 29 -19 248 callsubr + -29 -28 19 -21 26 hvcurveto + 137 hmoveto + 26 19 21 28 29 -19 248 callsubr + -29 -28 19 -21 26 hvcurveto + hintmask 11101000 + -110 -715 rmoveto + 83 656 -83 hlineto + endchar + + + 160 callsubr + 101 98 hstemhm + -21 98 13 83 12 98 hintmask 11101000 + 90 hmoveto + 83 518 -83 hlineto + hintmask 11111100 + -62 81 -98 callgsubr + + + -295 600 518 callsubr + hintmask 11010000 + 63 600 rmoveto + 26 19 20 29 29 -19 248 callsubr + -29 -29 19 -20 26 hvcurveto + 137 hmoveto + 26 19 20 29 29 -19 248 callsubr + -29 -29 19 -20 26 hvcurveto + hintmask 10100000 + -110 -600 rmoveto + 83 518 -83 hlineto + endchar + + + 183 callsubr + + + 184 callgsubr + + + 345 -12 80 -68 68 -50 -21 323 67 199 70 hstemhm + 443 83 251 82 hintmask 10011110 + 62 -12 rmoveto + 79 43 45 201 38 hvcurveto + 21 116 19 116 21 120 rrcurveto + 160 hlineto + hintmask 01011110 + -586 175 vlineto + 146 95 374 callsubr + -91 269 -308 hlineto + 485 callsubr + -155 -32 -25 -21 -35 hhcurveto + -11 -8 2 4 -9 hvcurveto + hintmask 00111110 + -17 -77 rlineto + hintmask 10011110 + -7 18 17 -2 21 hhcurveto + hintmask 01011110 + 464 80 rmoveto + 252 79 302 callgsubr + + + 207 -12 78 -66 67 -51 -21 259 60 136 68 hstemhm + 365 83 195 81 hintmask 10011110 + 368 callgsubr + 122 hlineto + hintmask 01011110 + -450 150 vlineto + 123 86 47 116 108 -86 43 -123 hvcurveto + -67 204 -268 hlineto + 498 callsubr + hintmask 10011110 + 426 callsubr + hintmask 00111110 + -17 -75 rlineto + hintmask 10011110 + -5 14 18 -2 18 hhcurveto + hintmask 01011110 + 398 79 rmoveto + 187 57 vlineto + 92 46 -27 -64 -67 -49 -29 -88 hvcurveto + endchar + + + 371 0 68 241 72 -61 67 269 -20 hstemhm + 90 83 295 84 251 82 hintmask 11011110 + 90 266 callsubr + 295 -309 176 hlineto + 146 95 62 140 hvcurveto + hintmask 10111110 + 131 -98 54 -144 vhcurveto + -91 269 -84 hlineto + hintmask 11011110 + -275 -295 275 -83 vlineto + 462 -588 rmoveto + hintmask 10111110 + 252 79 302 callgsubr + + + 250 0 67 168 72 -53 60 204 -20 hstemhm + 90 83 234 84 195 81 hintmask 11011110 + 90 hmoveto + 83 235 234 -235 150 hlineto + 124 86 47 116 hvcurveto + hintmask 10111110 + 108 -86 43 -123 vhcurveto + -67 204 -84 hlineto + hintmask 11011110 + -211 -234 211 -83 vlineto + 401 -451 rmoveto + hintmask 10111110 + 187 57 vlineto + 91 47 -27 -64 -67 -49 -29 -88 hvcurveto + endchar + + + 138 21 -21 332 69 185 70 hstem + 206 84 257 82 vstem + 206 hmoveto + 84 322 hlineto + 6 28 40 4 35 hhcurveto + 103 51 -39 -98 hvcurveto + -195 82 195 vlineto + 146 -86 60 -142 -38 -41 -4 -6 -32 vhcurveto + 195 229 70 -491 -70 178 vlineto + endchar + + + 53 21 -21 252 59 138 69 hstem + 175 84 203 82 vstem + 175 hmoveto + 84 244 hlineto + 5 22 24 3 37 hhcurveto + 79 41 -27 -82 hvcurveto + -143 82 143 vlineto + 124 -72 44 -122 -38 -28 -3 -5 -25 vhcurveto + 465 callgsubr + endchar + + + 91 callsubr + 216 45 -89 callsubr + + + 99 callsubr + 184 41 -89 callsubr + + + 128 callgsubr + 259 45 -24 callsubr + + + 133 callsubr + 225 41 -24 callsubr + + + 433 callsubr + 69 46 hstemhm + 106 481 callsubr + hintmask 10111100 + 12 callsubr + hintmask 01111100 + -17 -75 rlineto + hintmask 10111100 + -7 18 18 -3 29 hhcurveto + 121 717 rmoveto + -50 callgsubr + + + 396 callsubr + 69 46 hstemhm + 76 481 callsubr + hintmask 10111100 + 169 callgsubr + hintmask 01111100 + -17 -71 rlineto + hintmask 10111100 + -5 14 19 -3 25 hhcurveto + 107 579 rmoveto + -50 callgsubr + + + 87 0 71 585 -20 hstem + 90 83 114 77 108 83 vstem + 287 -188 rmoveto + 73 hlineto + 8 188 rlineto + 187 656 -83 -585 -299 585 -83 -656 197 hlineto + endchar + + + 23 0 70 448 -20 hstem + 90 83 81 76 80 84 vstem + 256 525 callgsubr + 69 hlineto + 10 172 rlineto + 159 518 -84 -448 -237 448 -83 -518 162 hlineto + endchar + + + -40 callsubr + endchar + + + -39 callgsubr + endchar + + + 22 0 66 250 64 206 70 hstem + 90 83 284 82 vstem + 90 hmoveto + 213 hlineto + 144 92 62 137 131 -101 50 -139 hvcurveto + -126 206 322 70 -405 hlineto + 83 -590 rmoveto + 250 114 vlineto + 112 58 -35 -84 -90 -56 -41 -112 hvcurveto + endchar + + + -39 0 62 181 56 150 69 hstem + 90 83 225 81 vstem + 90 hmoveto + 185 hlineto + 121 83 47 109 108 -89 35 -118 hvcurveto + -99 150 269 69 -352 hlineto + 83 -456 rmoveto + 181 88 vlineto + 90 47 -24 -61 -65 -45 -31 -89 hvcurveto + endchar + + + -9 callgsubr + + + 0 callsubr + + + 312 callsubr + + + 216 callsubr + endchar + + + 80 259 callsubr + hstemhm + 26 82 347 84 -9 82 hintmask 11110000 + 223 293 rmoveto + 20 111 9 70 20 112 rrcurveto + 183 -515 -305 hlineto + 29 41 23 70 21 111 rrcurveto + -115 -293 rmoveto + hintmask 11101000 + 422 395 callgsubr + vlineto + hintmask 11110000 + -73 585 -332 hlineto + -23 -140 -13 -79 -24 -130 -32 -174 -32 -51 -27 -11 rrcurveto + -30 -50 hlineto + 9 -209 rlineto + 73 hlineto + endchar + + + 4 0 70 380 68 hstemhm + 26 79 283 84 -9 79 hintmask 11110000 + 203 240 rmoveto + 16 80 8 50 15 80 rrcurveto + 146 -380 -243 hlineto + 23 35 19 55 16 80 rrcurveto + -98 -412 rmoveto + 172 vlineto + hintmask 11101000 + 358 337 callsubr + vlineto + hintmask 11110000 + -70 448 -294 hlineto + -19 -107 -10 -60 -21 -98 -26 -130 -25 -42 -24 -11 rrcurveto + -27 -54 hlineto + 8 -188 rlineto + endchar + + + 10 callsubr + endchar + + + 40 callgsubr + 9 callsubr + endchar + + + 247 429 callgsubr + 363 79 hintmask 11100100 + 217 callgsubr + 91 hlineto + -200 348 70 157 rlineto + 73 33 24 10 29 hhcurveto + 6 9 -1 -3 9 hvcurveto + hintmask 11001100 + 14 78 rlineto + hintmask 11100100 + 338 callsubr + -60 -42 -23 -99 -46 hvcurveto + -77 -167 rlineto + -89 hlineto + hintmask 11010100 + 461 callsubr + hintmask 11100100 + 157 callgsubr + endchar + + + 414 callgsubr + hstemhm + 310 78 hintmask 11100100 + 6 hmoveto + 89 hlineto + 139 237 rlineto + 76 -237 78 237 75 hlineto + 139 -237 rlineto + 89 hlineto + -169 275 383 callgsubr + hintmask 11001100 + 13 75 rlineto + hintmask 11100100 + 3 -8 -13 2 -13 hhcurveto + -52 -40 -20 -76 -38 hvcurveto + -62 -130 rlineto + -70 hlineto + hintmask 11010100 + 500 callgsubr + hintmask 11100100 + 141 callgsubr + endchar + + + -4 -12 73 252 64 218 73 hstemhm + 398 82 -48 82 hintmask 11101000 + 278 -12 rmoveto + 131 105 72 126 90 -56 57 -76 15 hvcurveto + 4 vlineto + hintmask 11110000 + 511 callsubr + hintmask 11101000 + 371 callgsubr + rlineto + -68 66 75 -28 95 hhcurveto + endchar + + + -72 -12 67 188 56 164 67 hstemhm + 338 81 -53 81 hintmask 11101000 + 243 -12 rmoveto + 114 90 59 101 68 -47 45 -63 12 hvcurveto + 4 vlineto + hintmask 11110000 + 512 callgsubr + hintmask 11101000 + 383 callsubr + rlineto + -52 57 64 -23 79 hhcurveto + endchar + + + 128 callgsubr + endchar + + + 133 callsubr + endchar + + + 335 callsubr + 73 46 hstemhm + 90 82 9 481 callsubr + 1 82 hintmask 0101110010000000 + 90 hmoveto + 88 hlineto + 241 414 rlineto + hintmask 0110110010000000 + 300 callsubr + hintmask 1001110010000000 + 212 callgsubr + hintmask 0101111100000000 + 242 53 rmoveto + -50 callgsubr + + + 159 callsubr + 69 46 hstemhm + 90 77 -20 481 callsubr + -31 77 hintmask 0101110010000000 + 90 hmoveto + 83 hlineto + 192 306 rlineto + hintmask 0110110010000000 + 301 callgsubr + hintmask 1001110010000000 + 212 callsubr + hintmask 0101101100000000 + 208 49 rmoveto + -50 callgsubr + + + 91 callsubr + endchar + + + 99 callsubr + endchar + + + 72 -12 80 -50 -21 24 -21 586 70 hstemhm + 457 83 hintmask 10011000 + 56 -12 rmoveto + 79 43 46 201 37 hvcurveto + 22 116 19 115 21 120 rrcurveto + 180 hlineto + hintmask 00111000 + -586 83 656 -328 vlineto + 485 callsubr + hintmask 10011000 + -155 -31 -26 -21 -35 hhcurveto + -10 -8 2 4 -10 hvcurveto + hintmask 01011000 + -17 -77 rlineto + hintmask 10011000 + -7 18 17 -2 21 hhcurveto + endchar + + + 0 -12 78 -50 -21 26 -21 450 68 hstemhm + 385 83 hintmask 10011000 + 368 callgsubr + 142 hlineto + hintmask 00111000 + -450 83 518 -288 vlineto + 498 callsubr + hintmask 10011000 + 426 callsubr + hintmask 01011000 + -17 -75 rlineto + hintmask 10011000 + -5 14 18 -2 18 hhcurveto + endchar + + + 1 callsubr + + + 89 21 337 callgsubr + 317 -55 callgsubr + endchar + + + 127 callgsubr + + + 127 callsubr + + + -73 callgsubr + endchar + + + -58 callgsubr + endchar + + + 264 callgsubr + + + 263 callsubr + + + 52 callsubr + + + 395 callsubr + hstem + 90 83 222 50 callsubr + endchar + + + 13 166 callsubr + -10 callgsubr + endchar + + + 41 callsubr + endchar + + + -22 21 144 callsubr + endchar + + + -91 21 -21 449 69 hstem + 192 83 vstem + 72 callsubr + endchar + + + 433 callsubr + hstemhm + 5 509 hintmask 10110000 + 12 callsubr + hintmask 01110000 + -17 -75 rlineto + hintmask 10110000 + -7 18 18 -3 29 hhcurveto + endchar + + + 109 callgsubr + endchar + + + 174 -12 158 -64 64 365 64 -64 157 hstemhm + 47 80 202 74 202 80 hintmask 10011110 + 329 -12 rmoveto + 74 hlineto + hintmask 01101110 + 94 vlineto + 177 6 105 89 154 vvcurveto + 153 -105 86 -177 5 vhcurveto + hintmask 10011110 + 93 -74 vlineto + hintmask 01101110 + -93 vlineto + -178 -5 -104 -86 -153 vvcurveto + -154 104 -89 178 -6 vhcurveto + hintmask 10011110 + -202 249 rmoveto + 113 72 63 130 4 vhcurveto + -365 vlineto + -130 4 -72 68 113 vvcurveto + 478 hmoveto + -113 -72 -68 -130 -4 vhcurveto + 365 vlineto + 130 -4 72 -63 -113 vvcurveto + endchar + + + 82 -12 141 -62 62 265 63 -63 136 hstemhm + 47 78 160 71 160 79 hintmask 10011110 + 285 -12 rmoveto + 71 hlineto + hintmask 01101110 + 79 vlineto + 149 5 90 67 123 vvcurveto + 123 -90 67 -149 5 vhcurveto + hintmask 10011110 + 73 -71 vlineto + hintmask 01101110 + -73 vlineto + -149 -5 -89 -67 -123 vvcurveto + -123 89 -67 149 -5 vhcurveto + hintmask 10011110 + -160 195 rmoveto + 84 58 45 102 3 vhcurveto + -265 vlineto + -102 3 -58 46 84 vvcurveto + 391 hmoveto + -84 -58 -46 -102 -3 vhcurveto + 265 vlineto + 102 -3 58 -45 -84 vvcurveto + endchar + + + 20 callgsubr + + + 19 callsubr + + + 84 0 71 585 -20 hstemhm + 90 83 287 83 -9 82 hintmask 11101000 + 534 -188 rmoveto + 73 307 callgsubr + vlineto + hintmask 11110000 + -73 585 -83 -585 379 callgsubr + -656 521 callgsubr + 444 hlineto + endchar + + + 21 0 70 448 -20 hstemhm + 90 83 226 84 -9 79 hintmask 11101000 + 474 525 callgsubr + 475 callgsubr + vlineto + hintmask 11110000 + -70 448 -84 -448 -226 448 -83 -518 521 callgsubr + 384 hlineto + endchar + + + 40 21 -21 284 69 303 -20 hstem + 67 82 276 83 vstem + 425 hmoveto + 83 656 -83 -293 hlineto + -6 -27 -36 -4 -49 hhcurveto + -106 -58 35 110 hvcurveto + 158 -82 -158 vlineto + -158 90 -56 148 52 36 4 6 32 vhcurveto + endchar + + + -17 21 -21 217 66 235 -20 hstem + 67 82 218 84 vstem + 367 hmoveto + 84 518 237 callsubr + + + 307 0 71 585 -20 hstem + 519 callsubr + vstem + 90 hmoveto + 685 656 360 callgsubr + + + 214 0 70 448 -20 hstem + 520 callgsubr + vstem + 90 hmoveto + 593 518 361 callsubr + + + 316 0 71 585 -20 hstemhm + 519 callsubr + -9 82 hintmask 11111000 + 90 hmoveto + hintmask 11110100 + 676 -188 73 331 callsubr + 360 callgsubr + + + 221 0 70 448 -20 hstemhm + 520 callgsubr + -9 79 hintmask 11111000 + 90 hmoveto + hintmask 11110100 + 584 440 callgsubr + -70 448 361 callsubr + + + 162 0 68 252 67 199 70 hstem + 238 84 272 82 vstem + 238 hmoveto + 198 hlineto + 145 95 62 140 129 -106 56 -140 hvcurveto + -108 269 -294 -70 210 hlineto + 84 -518 rmoveto + 252 97 vlineto + 114 61 -40 -80 -93 -58 -39 -110 hvcurveto + endchar + + + 64 0 67 187 60 134 70 hstem + 202 83 214 81 vstem + 202 hmoveto + 169 296 callgsubr + -86 204 -257 -70 174 hlineto + 83 -381 rmoveto + 187 76 377 callgsubr + endchar + + + 240 466 callsubr + 262 82 108 83 vstem + 90 hmoveto + 186 hlineto + 147 94 374 callsubr + -102 269 -83 409 callgsubr + 252 90 vlineto + 114 58 -37 -83 -93 -59 -39 -110 hvcurveto + 359 -68 rmoveto + 83 656 -83 hlineto + endchar + + + 162 459 callgsubr + 204 81 89 83 vstem + 90 hmoveto + 159 296 callgsubr + -76 486 callgsubr + 66 377 callgsubr + 306 -67 rmoveto + 83 518 -83 hlineto + endchar + + + 22 466 callsubr + 281 82 vstem + 90 hmoveto + 205 hlineto + 146 95 374 callsubr + -121 269 -83 409 callgsubr + 252 109 302 callgsubr + + + -38 459 callgsubr + 224 81 vstem + 90 hmoveto + 179 296 callgsubr + -96 486 callgsubr + 86 377 callgsubr + endchar + + + 13 -12 73 248 71 215 73 hstem + 435 84 vstem + 243 -12 rmoveto + 160 116 117 223 222 -111 118 -165 -81 -73 -38 -43 -42 hvcurveto + 46 -54 rlineto + 38 38 51 24 58 hhcurveto + 114 68 -76 -139 12 hvcurveto + -274 -71 275 hlineto + -165 -6 -73 -83 -115 hhcurveto + -68 -51 28 46 -44 hvcurveto + -46 -52 rlineto + -60 55 67 -35 89 hhcurveto + endchar + + + -56 515 callgsubr + 366 84 vstem + 205 -12 rmoveto + 139 106 89 186 170 -101 97 -136 -71 -53 -24 -44 -46 hvcurveto + 44 -52 rlineto + 31 34 38 19 51 hhcurveto + 87 56 -58 -100 12 hvcurveto + -222 -63 223 hlineto + -125 -6 -61 -56 -93 hhcurveto + -53 -42 22 33 -33 hvcurveto + -46 -52 rlineto + -38 38 60 -35 75 hhcurveto + endchar + + + 350 -12 73 -40 268 callgsubr + 214 73 -12 -20 hstemhm + 90 83 146 84 367 86 hintmask 10110111 + 586 61 rmoveto + -113 -70 106 164 163 70 101 113 114 70 -101 -163 -164 -70 -106 -114 hvcurveto + -73 vmoveto + 161 109 132 211 209 -109 128 -161 -148 -101 -107 -180 -16 hvcurveto + -148 hlineto + hintmask 01101111 + 275 -83 -656 83 309 146 vlineto + hintmask 10110111 + -198 8 104 -123 155 hhcurveto + endchar + + + 243 -12 70 -37 -21 235 72 153 70 -12 -20 hstemhm + 90 83 115 83 308 86 hintmask 10110111 + 525 58 rmoveto + -94 -60 77 126 126 60 73 94 93 61 -73 -126 -126 -61 -77 -93 hvcurveto + 1 -70 rmoveto + 140 99 104 169 169 -99 100 -140 -130 -91 -82 -141 -16 hvcurveto + -116 hlineto + hintmask 01101111 + 211 -83 -518 83 235 115 vlineto + hintmask 10110111 + -154 10 93 -93 135 hhcurveto + endchar + + + 24 433 callgsubr + hstem + 57 83 269 83 vstem + 409 hmoveto + 83 656 -205 hlineto + -134 -96 -48 -136 -105 62 -59 86 -22 hvcurveto + -183 -286 rlineto + 96 hlineto + 170 277 rlineto + 121 hlineto + -110 68 rmoveto + -102 -57 42 85 86 57 31 102 hvcurveto + 110 -244 hlineto + endchar + + + -36 21 -21 209 59 184 66 hstem + 54 80 214 84 vstem + 348 hmoveto + 84 518 -180 hlineto + -115 -83 -37 -114 -80 48 -50 72 -19 hvcurveto + -152 -218 rlineto + 94 hlineto + 137 209 rlineto + 95 hlineto + -87 59 rmoveto + -86 -41 33 62 66 44 23 84 hvcurveto + 86 -184 hlineto + endchar + + + 85 callgsubr + 140 callgsubr + hintmask 10111000 + 389 callsubr + hintmask 10110100 + 75 callgsubr + hintmask 01110100 + 7 -58 rlineto + hintmask 01111000 + -68 callsubr + hintmask 10111000 + -89 callgsubr + endchar + + + -14 -12 68 349 63 hstemhm + 53 79 -79 83 275 85 hintmask 11101000 + 132 279 rmoveto + 13 0 13 12 vvcurveto + 66 49 52 22 47 hhcurveto + 84 47 -64 -100 -110 -54 -75 -75 -99 -51 82 141 hvcurveto + 150 -291 rmoveto + 118 96 98 155 142 -80 85 -115 hvcurveto + hintmask 11011000 + -61 -61 -28 -53 -43 hvcurveto + 15 200 68 14 156 23 41 6 33 8 26 17 -16 75 rcurveline + -30 -14 -17 -5 -54 -8 rrcurveto + hintmask 11101000 + -185 -28 -120 -52 -328 vvcurveto + -196 84 -111 145 vhcurveto + endchar + + + -32 -12 68 hstemhm + 47 78 -22 81 216 79 hintmask 11010000 + 258 -12 rmoveto + 135 86 96 137 117 -65 60 -89 63 hvcurveto + hintmask 10110000 + -74 52 -67 20 35 vvcurveto + 46 51 -4 141 17 vhcurveto + 41 5 37 8 28 15 -17 75 rcurveline + -30 -14 -18 -5 -80 -7 rrcurveto + -145 -18 -89 -9 -99 vvcurveto + -56 69 -43 68 -47 vhcurveto + hintmask 11010000 + -116 -36 -77 -70 -123 vvcurveto + -133 100 -82 111 vhcurveto + -133 218 rmoveto + 95 64 67 104 26 vhcurveto + 61 -46 46 -46 -80 vvcurveto + -97 -52 -69 -88 -70 -65 60 90 vhcurveto + endchar + + + 86 callsubr + + + 324 callgsubr + endchar + + + -26 0 67 352 67 hstemhm + 19 80 258 82 -8 79 hintmask 11110000 + 183 255 rmoveto + 19 164 rlineto + 155 -352 -226 hlineto + 23 35 18 57 11 96 rrcurveto + -84 -255 rmoveto + hintmask 11101000 + 332 -172 71 hlineto + 8 495 callsubr + vlineto + hintmask 11110000 + -71 419 -302 hlineto + -26 -215 -19 -157 -22 -32 -27 -15 rlinecurve + -24 -52 hlineto + 9 -187 rlineto + 71 hlineto + endchar + + + -62 228 callsubr + 80 -80 81 259 72 hintmask 11110100 + -70 callsubr + hintmask 11101100 + -81 callgsubr + hintmask 11110100 + -86 callgsubr + endchar + + + 123 422 callsubr + 304 73 hintmask 11100100 + 204 callgsubr + hintmask 11001100 + 14 77 rlineto + hintmask 11100100 + 3 -7 -11 2 -10 hhcurveto + -53 -41 -21 -83 -34 hvcurveto + -44 -108 rlineto + -77 hlineto + hintmask 11010100 + 465 callsubr + hintmask 11100100 + 164 callsubr + endchar + + + -102 -12 66 468 callsubr + 0 80 -61 82 hintmask 11100100 + 221 -12 rmoveto + 104 92 56 90 70 -45 36 -56 15 hvcurveto + 4 vlineto + hintmask 11101000 + 240 callsubr + hintmask 11110100 + -55 -59 67 hlineto + hintmask 11100100 + 382 callsubr + rlineto + -47 57 60 -15 67 hhcurveto + endchar + + + 117 callgsubr + endchar + + + 485 callgsubr + 107 48 hstemhm + 82 80 -34 504 callsubr + -39 80 hintmask 0101110010000000 + 82 hmoveto + 76 hlineto + 185 278 rlineto + hintmask 0110110010000000 + 121 callgsubr + hintmask 1001110010000000 + 179 callsubr + hintmask 0101101100000000 + 203 87 rmoveto + 30 callsubr + + + -60 422 callsubr + 82 82 hintmask 11001100 + 335 callgsubr + 90 hlineto + -165 256 rlineto + hintmask 11100100 + 41 96 rlineto + 58 26 19 8 319 callsubr + -36 -16 -88 -39 hvcurveto + -48 -108 rlineto + -94 hlineto + hintmask 11010100 + 200 -82 vlineto + endchar + + + -27 -12 80 -51 -21 25 453 callgsubr + hstemhm + 150 65 151 83 hintmask 10011100 + 54 -12 rmoveto + 72 43 54 108 14 hvcurveto + 11 89 11 91 10 89 rrcurveto + 151 hlineto + hintmask 00111100 + -419 83 486 -299 vlineto + -12 -105 -12 -105 -13 -105 rrcurveto + hintmask 10010100 + -72 -9 -22 -31 -34 hhcurveto + -9 -7 2 2 -6 hvcurveto + hintmask 01010100 + -16 -76 rlineto + hintmask 10011100 + -5 14 12 -3 18 hhcurveto + endchar + + + 75 21 -21 46 94 246 100 hstem + 82 74 320 75 vstem + 82 hmoveto + 74 218 hlineto + 43 -6 75 -3 50 vhcurveto + 4 hlineto + 14 -38 17 -41 14 -36 94 -225 rcurveline + 55 hlineto + 92 225 14 36 17 41 14 38 rlinecurve + 4 hlineto + -4 -50 -6 -75 -43 vvcurveto + -218 75 486 -94 vlineto + -93 -228 -13 -40 -16 -39 -15 -39 rlinecurve + -4 hlineto + -14 39 -15 39 -15 40 -95 228 rcurveline + -95 hlineto + endchar + + + 4 21 -21 216 73 197 -20 hstem + 82 82 234 354 callsubr + 216 234 -216 82 486 -82 -197 -234 197 -82 hlineto + endchar + + + -36 callgsubr + endchar + + + -5 378 callgsubr + hstem + 82 82 225 354 callsubr + 419 225 -419 82 486 -389 hlineto + endchar + + + 53 callgsubr + + + 41 callgsubr + endchar + + + -98 378 callgsubr + hstem + 189 82 vstem + 189 hmoveto + 82 419 163 67 -408 -67 163 hlineto + endchar + + + -59 callgsubr + endchar + + + 176 -184 -21 193 177 callsubr + 214 -20 hstemhm + 47 85 195 80 -78 76 197 85 hintmask 11111101 + 327 -205 rmoveto + 80 156 hlineto + -2 72 rlineto + -22 32 33 -13 31 hhcurveto + 100 86 97 165 151 -63 97 -114 -36 -38 -15 -22 -31 hvcurveto + 2 74 rlineto + 177 -80 -177 vlineto + 2 -72 rlineto + 20 -29 -31 15 -38 hhcurveto + -98 -86 -98 -158 -162 73 -92 111 38 33 16 20 27 hvcurveto + -2 -73 rlineto + -78 106 rmoveto + -74 -43 134 callsubr + 49 75 64 hvcurveto + hintmask 11111011 + 28 29 -9 -24 27 hvcurveto + -304 vlineto + hintmask 11111101 + -26 -27 -24 -9 -29 hhcurveto + hintmask 11111011 + 238 hmoveto + -22 -31 7 26 -29 hvcurveto + 305 vlineto + 26 30 28 8 27 hhcurveto + 79 33 -72 -107 -120 -47 -73 -68 hvcurveto + endchar + + + 110 callsubr + + + -4 0 67 419 -20 hstemhm + 82 82 218 82 -8 79 hintmask 11101000 + 456 525 callgsubr + 71 hlineto + 8 495 callsubr + vlineto + hintmask 11110000 + -71 419 -82 -419 -218 419 -82 -486 521 callgsubr + 374 hlineto + endchar + + + -46 21 -21 184 67 235 -20 hstem + 59 82 207 82 vstem + 348 hmoveto + 82 486 527 callgsubr + + + 191 0 67 419 -20 hstem + 519 callgsubr + vstem + 82 hmoveto + 585 486 359 callsubr + + + 199 0 67 419 -20 hstemhm + 519 callgsubr + -8 79 hintmask 11111000 + 82 hmoveto + hintmask 11110100 + 577 -172 71 hlineto + 8 495 callsubr + vlineto + hintmask 11111000 + -71 419 359 callsubr + + + 38 0 66 177 64 112 67 hstem + 198 82 194 80 vstem + 198 369 callsubr + 179 -254 -67 172 hlineto + 82 -353 rmoveto + 177 73 vlineto + 81 40 -27 -61 -61 -40 -28 -81 hvcurveto + endchar + + + 116 0 66 177 64 179 -20 hstem + 82 82 181 81 84 82 vstem + 82 hmoveto + 151 hlineto + 334 callgsubr + -69 488 callsubr + 60 375 callsubr + 286 -66 rmoveto + 82 240 callgsubr + endchar + + + -67 0 66 177 64 179 -20 hstem + 82 82 204 81 vstem + 82 hmoveto + 174 hlineto + 334 callgsubr + -92 488 callsubr + 83 375 callsubr + endchar + + + 483 callsubr + 331 79 vstem + 183 -12 rmoveto + 130 97 84 170 174 -101 82 -121 -72 -49 -27 -31 -33 hvcurveto + 39 -50 rlineto + 24 28 34 19 48 hhcurveto + 77 57 -50 -101 12 hvcurveto + -213 -59 215 hlineto + -113 -6 -60 -56 -89 hhcurveto + -48 -40 19 27 -30 hvcurveto + -34 -50 rlineto + -39 41 56 -23 62 hhcurveto + endchar + + + 180 -12 68 -35 -21 213 73 144 68 -12 -20 hstemhm + 82 82 105 77 261 85 hintmask 10110111 + 478 56 rmoveto + -79 -53 75 111 112 53 76 79 80 49 -76 -112 -111 -49 -75 -80 hvcurveto + 4 -68 rmoveto + 116 94 93 161 163 -94 93 -116 -110 -86 -78 -134 -16 hvcurveto + -106 hlineto + hintmask 01101111 + 200 -82 -486 82 213 105 vlineto + hintmask 10110111 + -142 11 88 -83 114 hhcurveto + endchar + + + -44 21 -21 192 60 170 64 hstem + 69 83 198 82 vstem + 350 hmoveto + 82 486 -172 hlineto + -109 -82 -37 -107 -77 49 -43 62 -19 hvcurveto + -148 -203 rlineto + 93 hlineto + 134 192 rlineto + 1 hlineto + 90 hlineto + -76 60 rmoveto + -76 -46 31 57 57 46 25 76 hvcurveto + 76 -170 hlineto + endchar + + + -62 228 callsubr + 80 -80 81 259 72 hintmask 11110100 + -70 callsubr + hintmask 11101100 + -81 callgsubr + hintmask 11110100 + -86 callgsubr + -108 291 -26 callsubr + + + 84 callsubr + 89 100 hstemhm + 46 80 -80 81 -9 99 94 99 -24 72 hintmask 1110100010000000 + -70 callsubr + hintmask 1110010010000000 + -81 callgsubr + hintmask 1110100010000000 + -86 callgsubr + hintmask 1111001100000000 + -218 305 -88 callgsubr + + + -10 -217 67 171 -21 387 72 112 460 callsubr + -48 141 hstemhm + 82 82 250 85 hintmask 11100111 + 295 -217 rmoveto + 126 78 87 301 199 -64 89 -116 -65 -49 -34 -44 -45 hvcurveto + 4 97 rlineto + 93 182 vlineto + hintmask 11101011 + 48 -182 vlineto + hintmask 11100111 + 93 -82 vlineto + hintmask 11101011 + -93 vlineto + hintmask 11110011 + -74 -5 rlineto + hintmask 11100111 + -43 74 -571 82 315 vlineto + 49 48 36 23 45 hhcurveto + 80 41 -54 -171 -248 -54 -64 -70 -15 -14 4 4 -11 hvcurveto + -16 -62 rlineto + -7 14 22 -6 25 hhcurveto + endchar + + + 324 callgsubr + 150 88 -71 callgsubr + + + 483 callsubr + 46 79 vstem + 274 -12 rmoveto + 58 55 23 39 44 hvcurveto + -33 52 rlineto + -26 -30 -41 -22 -46 hhcurveto + -91 -59 57 112 -6 hvcurveto + 228 59 -226 hlineto + 99 13 59 52 80 hhcurveto + 42 33 -19 -25 29 hvcurveto + 39 52 rlineto + 31 -34 -45 26 -64 hhcurveto + -126 -107 -84 -172 -170 97 -84 131 hvcurveto + endchar + + + 87 callgsubr + + + 78 callgsubr + + + 180 callsubr + 121 100 hstemhm + -22 99 5 82 7 99 hintmask 11101000 + 286 callsubr + hintmask 11110100 + -54 101 -88 callgsubr + + + -301 290 callgsubr + 122 98 hstemhm + 17 92 -22 82 -21 92 hintmask 11110100 + 63 588 rmoveto + 26 20 21 28 28 -20 21 -26 -26 -20 -21 -28 -28 20 -21 26 hvcurveto + 131 hmoveto + 26 20 21 28 28 -20 21 -26 -26 -20 -21 -28 -28 20 -21 26 hvcurveto + hintmask 11101000 + -107 -588 rmoveto + 82 240 callgsubr + endchar + + + 112 callsubr + + + 177 -12 80 -68 66 -49 -21 247 64 112 67 hstemhm + 144 72 137 83 177 80 hintmask 10011111 + 56 -12 rmoveto + 66 50 48 102 17 hvcurveto + 16 95 5 97 6 89 rrcurveto + 137 hlineto + hintmask 01011111 + -419 147 vlineto + 334 callgsubr + -64 179 -292 hlineto + -5 -110 -6 -105 -15 -100 rrcurveto + hintmask 10011111 + -74 -12 -27 -29 -30 hhcurveto + -9 -6 2 2 -7 hvcurveto + hintmask 00111111 + -15 -76 rlineto + hintmask 10011111 + -5 13 13 -3 18 hhcurveto + hintmask 01011111 + 380 78 rmoveto + 177 55 445 callsubr + + + 200 0 66 150 73 -46 64 179 -20 hstemhm + 82 82 213 82 177 81 hintmask 11011110 + 82 hmoveto + 82 216 213 -216 146 hlineto + 116 78 47 108 hvcurveto + hintmask 10111110 + 106 -78 46 -116 vhcurveto + -64 179 -82 hlineto + hintmask 11011110 + -197 -213 197 -82 vlineto + 377 -420 rmoveto + hintmask 10111110 + 177 56 375 callsubr + endchar + + + 76 callgsubr + + + -60 422 callsubr + 82 82 hintmask 11001100 + 335 callgsubr + 90 hlineto + -165 256 rlineto + hintmask 11100100 + 41 96 rlineto + 58 26 19 8 319 callsubr + -36 -16 -88 -39 hvcurveto + -48 -108 rlineto + -94 hlineto + hintmask 11010100 + 200 -82 vlineto + 180 88 -71 callgsubr + + + 117 callgsubr + 217 88 -26 callsubr + + + 316 callgsubr + 106 48 hstem + 86 504 callsubr + -18 callsubr + 153 781 rmoveto + 30 callsubr + + + 0 0 67 419 -20 hstem + 82 82 77.5 76 76.5 82 vstem + 243 525 callgsubr + 70 hlineto + 9 172 rlineto + 154 486 -82 -419 -230 419 -82 -486 158 hlineto + endchar + + + 56 0 66 243 62 136 68 hstem + 166 84 238 82 vstem + 166 hmoveto + 168 hlineto + 146 90 58 140 125 -99 48 -143 hvcurveto + -78 136 234 68 -234 125 -84 -125 -138 -68 138 hlineto + 84 -441 rmoveto + 243 67 vlineto + 117 54 -33 -82 -92 -54 -36 -110 hvcurveto + endchar + + + -16 0 63 183 61 94 59 hstem + 141 84 193 82 vstem + 141 hmoveto + 149 hlineto + 124 86 46 113 106 -86 42 -123 hvcurveto + -66 94 194 59 -194 98 -84 -98 -113 -59 113 hlineto + 84 -338 rmoveto + 183 56 vlineto + 91 46 -25 -63 -67 -48 -28 -88 hvcurveto + endchar + + + 18 0 66 177 64 132 67 -67 183 hstemhm + 178 82 194 80 hintmask 11101100 + 178 369 callsubr + 132 188 67 -188 hlineto + hintmask 11011100 + 116 -82 vlineto + hintmask 11101100 + -116 -152 -67 152 vlineto + 82 -373 rmoveto + 177 72 445 callsubr + + + 66 callgsubr + + + 85 callsubr + + + 1 callgsubr + + + -29 0 85 503 80 -12 -20 23 -20 20 9 hstemhm + 0 561 hintmask 10010100 + 210 hmoveto + 102 hlineto + hintmask 11000100 + 147 514 rlineto + 49 15 15 25 29 hhcurveto + 11 8 -3 -3 7 hvcurveto + hintmask 10001100 + 17 77 rlineto + hintmask 11000100 + 7 -16 -12 2 -20 hhcurveto + -70 -34 -42 -97 -26 hvcurveto + -64 -227 -22 -78 -14 -62 -21 -77 rlinecurve + -4 hlineto + -25 77 -16 62 -23 78 rrcurveto + hintmask 10100100 + -105 354 rlineto + -89 hlineto + endchar + + + -102 0 79 373 78 -12 -20 25 7 hstemhm + 0 485 hintmask 11001000 + 175 hmoveto + 103 hlineto + 120 394 rlineto + 36 11 12 22 25 hhcurveto + 9 5 0 -4 8 hvcurveto + hintmask 10011000 + 17 75 rlineto + hintmask 11001000 + 5 -14 -11 2 -20 hhcurveto + -64 -28 -33 -88 -24 hvcurveto + -48 -160 -17 -59 -13 -44 -17 -67 rlinecurve + -5 hlineto + -19 60 -14 52 -19 58 rrcurveto + hintmask 10101000 + -85 269 rlineto + -87 hlineto + endchar + + + -81 0 67 354 77 -12 -20 23 -20 hstemhm + 12 486 hintmask 10011000 + 187 hmoveto + 101 hlineto + hintmask 11001000 + 109 348 rlineto + 49 16 15 24 29 hhcurveto + 10 8 -2 -4 7 hvcurveto + hintmask 10011000 + 16 74 rlineto + hintmask 11001000 + 6 -16 -12 3 -20 hhcurveto + -67 -31 -44 -96 -27 hvcurveto + -48 -148 -14 -48 -12 -49 -12 -46 rlinecurve + -4 hlineto + -15 46 -17 49 -14 48 rrcurveto + hintmask 10101000 + -92 276 rlineto + -85 hlineto + endchar + + + -60 434 callgsubr + 225.5 74 346 callsubr + 586 295 hlineto + 9 242 rlineto + -71 hlineto + -15 -172 rlineto + -301 hlineto + endchar + + + -110 432 callsubr + 177.5 71.5 346 callsubr + 448 245 hlineto + 8 239 rlineto + -68 hlineto + -15 -169 rlineto + -253 hlineto + endchar + + + -142 378 callgsubr + hstem + 82 82 160 70.5 455 callgsubr + 419 226 hlineto + 9 239 rlineto + -67 hlineto + -16 -172 rlineto + -234 hlineto + endchar + + + -37 21 -21 299 57 -57 59 228 458 callsubr + 299 149 59 -149 228 117 callsubr + -298 hlineto + hintmask 11011000 + -79 -4 rlineto + hintmask 10111000 + -55 79 vlineto + endchar + + + -88 21 -21 224 56 -56 58 166 458 callsubr + 224 149 58 -149 166 245 70 -328 -236 hlineto + hintmask 11011000 + -79 -4 rlineto + hintmask 10111000 + -54 79 vlineto + endchar + + + -128 21 -21 207 59 153 67 hstem + 101 82 vstem + 101 hmoveto + 82 207 134 59 -134 153 221 67 -303 -220 hlineto + -73 -5 rlineto + -54 73 vlineto + endchar + + + 289 0 71 240 431 callsubr + hstemhm + 363 79 297 82 hintmask 11100110 + 217 callgsubr + 32 395 callgsubr + -64 vlineto + -159 277 70 157 rlineto + 73 33 24 10 29 hhcurveto + 6 9 -1 -3 9 hvcurveto + hintmask 11001110 + 14 78 rlineto + hintmask 11100110 + 338 callsubr + -60 -42 -23 -99 -46 hvcurveto + -77 -167 rlineto + -89 524 callgsubr + 461 callsubr + hintmask 11100110 + 157 callgsubr + endchar + + + 185 0 70 167 67 148 78 -12 -20 27 -20 hstemhm + 310 78 250 79 hintmask 11100110 + 6 hmoveto + 89 hlineto + 139 237 rlineto + 76 -237 78 237 75 hlineto + 139 -237 rlineto + 36 337 callsubr + -69 vlineto + -126 205 383 callgsubr + hintmask 11001110 + 13 75 rlineto + hintmask 11100110 + 3 -8 -13 2 -13 hhcurveto + -52 -40 -20 -76 -38 hvcurveto + -62 -130 rlineto + -70 524 callgsubr + 500 callgsubr + hintmask 11100110 + 141 callgsubr + endchar + + + 160 0 67 152 314 callsubr + hstemhm + 304 73 243 79 hintmask 11100110 + 13 hmoveto + 89 hlineto + 122 219 rlineto + 80 -219 73 219 80 hlineto + 122 -219 rlineto + 41 -172 71 hlineto + 8 495 callsubr + -71 vlineto + -113 188 38 97 rlineto + 56 23 22 10 277 callsubr + hintmask 11001110 + 14 77 rlineto + hintmask 11100110 + 3 -7 407 callsubr + -41 -21 -83 -34 hvcurveto + -44 -108 rlineto + -77 524 callgsubr + 465 callsubr + hintmask 11100110 + 164 callsubr + endchar + + + -4 -188 249 -71 71 252 64 218 73 hstemhm + 241 77 80 82 -48 82 hintmask 10111010 + 241 -188 rmoveto + 73 hlineto + hintmask 01111010 + 8 179 rlineto + 110 14 82 69 112 vvcurveto + 90 -56 57 -76 15 vhcurveto + 4 vlineto + hintmask 01111100 + 511 callsubr + hintmask 01111010 + 371 callgsubr + 57 -59 64 -29 78 -6 rlinecurve + endchar + + + -72 -172 227 -65 65 188 56 164 67 hstemhm + 206.5 76 55.5 81 -53 81 hintmask 10111010 + 208 525 callgsubr + 70 hlineto + hintmask 01111010 + 9 163 rlineto + 92 13 68 56 88 vvcurveto + 68 -47 45 -63 12 vhcurveto + 4 vlineto + hintmask 01111100 + 512 callgsubr + hintmask 01111010 + 383 callsubr + 48 -43 52 -24 62 -6 rlinecurve + endchar + + + -102 -172 226 -64 64 468 callsubr + -132 74.5 57.5 80 -61 82 hintmask 10110101 + 186 525 callgsubr + 68 hlineto + hintmask 01110101 + 9 163 rlineto + 86 13 68 52 78 vvcurveto + 70 -45 36 -56 15 vhcurveto + 4 vlineto + hintmask 01110110 + 240 callsubr + hintmask 01111001 + -55 -59 67 hlineto + hintmask 01110101 + 382 callsubr + 46 -38 48 -17 51 -5 rlinecurve + endchar + + + 70 0 71 240 431 callsubr + hstemhm + 90 83 347 82 hintmask 11001110 + 90 hmoveto + 83 304 callsubr + 33 395 callgsubr + -70 vlineto + -180 278 rlineto + hintmask 11100110 + 384 callgsubr + hintmask 11001110 + 14 77 rlineto + hintmask 11100110 + 338 callsubr + -59 -33 -22 -100 -56 363 callgsubr + hintmask 11010110 + 277 510 callsubr + + + 9 0 70 167 68 147 78 -12 457 callgsubr + 90 83 289 79 hintmask 11001110 + 90 hmoveto + 83 237 88 hlineto + 164 -237 rlineto + 37 337 callsubr + -75 vlineto + -141 205 rlineto + hintmask 11100110 + 71 117 rlineto + 52 32 14 8 24 hhcurveto + 8 6 0 -2 7 hvcurveto + hintmask 11001110 + 15 74 rlineto + hintmask 11100110 + 244 callsubr + hintmask 11010110 + 213 510 callsubr + + + -22 0 67 152 314 callsubr + hstemhm + 82 82 274 79 hintmask 11001110 + 335 callgsubr + 43 -172 70 hlineto + 9 495 callsubr + -75 vlineto + -122 189 rlineto + hintmask 11100110 + 41 96 rlineto + 58 26 19 8 277 callsubr + hintmask 11001110 + 14 77 rlineto + hintmask 11100110 + 3 -7 407 callsubr + -36 -16 -88 -39 hvcurveto + -48 -108 rlineto + -94 524 callgsubr + 200 -82 vlineto + endchar + + + 158 21 -21 311 68 207 70 -68 80 -6 -20 hstemhm + 226 84 hintmask 11100100 + 226 hmoveto + 84 304 callsubr + 90 hlineto + -226 349 rlineto + hintmask 11010100 + 87 156 rlineto + 72 40 17 11 29 hhcurveto + 6 8 0 -3 10 hvcurveto + hintmask 11001100 + 14 77 rlineto + hintmask 11010100 + 338 callsubr + -59 -34 -22 -100 -55 363 callgsubr + hintmask 11100100 + 277 -282 -70 198 vlineto + endchar + + + 79 21 -21 237 68 143 70 -66 78 -6 -20 hstemhm + 202 83 hintmask 11100100 + 202 hmoveto + 83 237 88 hlineto + 164 -237 rlineto + 89 hlineto + -189 275 rlineto + hintmask 11010100 + 71 117 rlineto + 52 32 14 8 25 hhcurveto + 7 6 0 -2 7 hvcurveto + hintmask 11001100 + 15 74 rlineto + hintmask 11010100 + 244 callsubr + hintmask 11100100 + 213 -257 -70 174 vlineto + endchar + + + 56 21 -21 219 67 132 80 -79 67 7 -20 hstemhm + 198 82 hintmask 11010100 + 198 hmoveto + 82 219 95 hlineto + 135 -219 rlineto + 91 hlineto + -165 256 rlineto + hintmask 11100100 + 41 96 rlineto + 58 25 20 8 25 315 callsubr + hintmask 11001100 + 15 77 rlineto + hintmask 11100100 + 3 -8 407 callsubr + -35 -16 -88 -39 hvcurveto + -49 -108 rlineto + -93 hlineto + hintmask 11010100 + 200 -254 -67 172 vlineto + endchar + + + 103 0 71 238 72 275 -20 hstemhm + 90 83 305 84 -9 82 hintmask 11111000 + 90 13 callsubr + hlineto + hintmask 11110100 + 75 -188 73 331 callsubr + -84 -275 -305 275 -83 hlineto + endchar + + + 43 0 70 165 72 211 -20 hstemhm + 90 83 248 83 -8 79 hintmask 11111000 + 245 callsubr + hlineto + hintmask 11110100 + 75 440 callgsubr + -71 448 -83 -211 -248 211 -83 hlineto + endchar + + + 12 0 67 149 73 197 -20 hstemhm + 83 82 234 82 -10 80 hintmask 11111000 + 83 hmoveto + 82 216 234 -216 hlineto + hintmask 11110100 + 72 -172 71 hlineto + 9 495 callsubr + vlineto + hintmask 11111000 + -70 419 -82 -197 -234 197 -82 hlineto + endchar + + + 13 -188 249 -71 71 -49 -21 604 73 hstemhm + 52 86 161 77 hintmask 10011100 + 299 -188 rmoveto + 73 hlineto + hintmask 00111100 + 8 179 rlineto + hintmask 01011100 + 65 10 51 32 43 50 -46 52 rcurveline + -45 callgsubr + -197 103 -122 144 -19 hvcurveto + endchar + + + -55 -172 230 -69 69 -44 -21 467 70 hstemhm + 52 85 108 75.5 hintmask 10011100 + 247 525 callgsubr + 69 hlineto + hintmask 01011100 + 9 161 59 6 48 25 39 43 rlinecurve + -45 callsubr + hvcurveto + hintmask 00111100 + -150 79 -93 112 -22 vhcurveto + endchar + + + -102 -172 228 -44 -21 22 -21 438 68 hstemhm + 46 85 101 74.5 hintmask 10011100 + 234 525 callgsubr + 68 hlineto + hintmask 01011100 + 9 163 44 8 41 20 35 31 rlinecurve + hintmask 10011100 + -29 callgsubr + hvcurveto + hintmask 00111100 + -142 77 -89 107 -19 vhcurveto + endchar + + + -20 callgsubr + endchar + + + -22 callsubr + endchar + + + -91 -184 -21 691 417 callgsubr + hlineto + 178 486 279 callsubr + 183 -486 rlineto + endchar + + + -82 21 -21 240 58 358 -20 hstem + 196 84 vstem + 196 hmoveto + 84 240 139 58 -117 hlineto + 175 358 rlineto + -87 hlineto + -84 -185 -20 -48 -23 -46 -23 -49 rlinecurve + -4 hlineto + -22 49 -20 46 -21 48 -85 185 rcurveline + -89 hlineto + 175 -358 rlineto + -29 hlineto + -88 -3 rlineto + -55 139 vlineto + endchar + + + -143 21 -21 170 59 289 -20 hstem + 166 83 vstem + 166 hmoveto + 83 170 113 59 -96 hlineto + 150 289 rlineto + -86 hlineto + -66 -137 -18 -38 -17 -36 140 callsubr + 36 -17 38 -66 137 rcurveline + -88 hlineto + 150 -289 rlineto + -7 hlineto + -89 -4 rlineto + -55 113 vlineto + endchar + + + -91 -184 -21 205 59 427 417 callgsubr + 142 59 -120 hlineto + 156 427 279 callsubr + 161 -427 rlineto + -48 hlineto + -78 -5 rlineto + -54 148 vlineto + endchar + + + -7 0 71 585 -20 hstem + 445 81 vstem + 15 hmoveto + 88 hlineto + 95 177 16 32 17 33 19 40 rlinecurve + 4 hlineto + 21 -40 18 -33 17 -32 96 -177 rcurveline + 39 -188 72 307 callgsubr + -68 vlineto + -151 264 179 321 rlineto + -88 hlineto + -87 -168 -16 -30 -13 -27 -18 -38 rlinecurve + -4 hlineto + -20 38 -14 27 -17 30 -89 168 rcurveline + -92 hlineto + 178 -317 rlineto + endchar + + + -67 0 70 448 -20 hstem + 386 79 vstem + 15 hmoveto + 88 hlineto + 74 128 14 27 14 26 15 32 rlinecurve + 4 hlineto + 17 -32 15 -26 14 -27 76 -128 rcurveline + 40 337 callsubr + -70 vlineto + -118 193 150 255 rlineto + -88 hlineto + -67 -122 -12 -23 -12 -23 -15 -31 rlinecurve + -4 hlineto + -17 31 -12 23 -13 23 -70 122 rcurveline + -91 hlineto + 150 -251 rlineto + endchar + + + -76 0 67 419 -20 hstem + 384 78 vstem + 14 hmoveto + 86 hlineto + 66 113 16 30 16 29 17 28 rlinecurve + 4 hlineto + 18 -28 18 -30 17 -29 71 -113 rcurveline + 41 -172 70 hlineto + 8 495 callsubr + -73 vlineto + -115 178 147 241 rlineto + -86 hlineto + -59 -107 -15 -26 -15 -28 -14 -27 rlinecurve + -4 hlineto + -17 27 -16 28 -15 26 -65 107 rcurveline + -89 hlineto + 147 -232 rlineto + endchar + + + 49 0 71 213 69 303 -20 hstemhm + 67 82 276 83 -7 80 hintmask 11111000 + 425 hmoveto + hintmask 11110100 + 76 -188 71 331 callsubr + -83 -293 hlineto + -6 -27 -36 -4 -49 hhcurveto + -106 -58 35 110 hvcurveto + 158 -82 -158 vlineto + -158 90 -56 148 52 36 4 6 32 vhcurveto + endchar + + + -11 0 70 147 66 235 -20 hstemhm + 67 82 218 84 -9 80 hintmask 11111000 + 367 hmoveto + hintmask 11110100 + 75 -172 71 hlineto + 9 188 rlineto + 54 vlineto + hintmask 11111000 + -71 448 237 callsubr + + + -38 0 67 117 67 235 -20 hstemhm + 59 82 207 82 -8 79 hintmask 11111000 + 348 hmoveto + hintmask 11110100 + 74 -172 70 hlineto + 9 495 callsubr + vlineto + hintmask 11111000 + -71 419 527 callgsubr + + + 40 21 -21 339 69 248 -20 hstem + 90 83 276 82 346 callsubr + 329 hlineto + 5 27 36 5 48 hhcurveto + 107 58 -35 -110 hvcurveto + -194 82 194 vlineto + 158 -90 56 -149 -51 -36 -5 -5 -32 vhcurveto + 258 510 callsubr + + + -17 21 -21 260 66 192 -20 hstem + 90 83 219 82 346 callsubr + 252 hlineto + 5 23 26 3 39 hhcurveto + 86 45 -27 -82 hvcurveto + -151 82 151 vlineto + 130 -77 45 -127 -42 -29 -3 -5 -26 vhcurveto + 200 510 callsubr + + + -14 21 219 callsubr + 214 -20 hstem + 82 82 225 82 vstem + -38 callgsubr + -67 -49 -36 -44 -46 vhcurveto + 3 100 rlineto + 194 -82 vlineto + endchar + + + 116 callgsubr + endchar + + + 115 callsubr + endchar + + + 247 332 callsubr + 63 46 hstemhm + 251 72 40 79 39 72 hintmask 1110010100000000 + 217 callgsubr + 91 hlineto + -200 348 70 157 rlineto + 73 33 24 10 29 hhcurveto + 6 9 -1 -3 9 hvcurveto + hintmask 1100110100000000 + 14 78 rlineto + hintmask 1110010100000000 + 338 callsubr + -60 -42 -23 -99 -46 hvcurveto + -77 -167 rlineto + -89 506 callsubr + 461 callsubr + hintmask 1110011110000000 + 157 callgsubr + 195 357 rmoveto + -50 callgsubr + + + 414 callgsubr + 65 46 hstemhm + 195 72 43 78 37 72 hintmask 1110010100000000 + 6 hmoveto + 89 hlineto + 139 237 rlineto + 76 -237 78 237 75 hlineto + 139 -237 rlineto + 89 hlineto + -169 275 383 callgsubr + hintmask 1100110100000000 + 13 75 rlineto + hintmask 1110010100000000 + 3 -8 -13 2 -13 hhcurveto + -52 -40 -20 -76 -38 hvcurveto + -62 -130 rlineto + -70 506 callsubr + 500 callgsubr + hintmask 1110011110000000 + 141 callgsubr + 171 295 rmoveto + -50 callgsubr + + + 123 334 callsubr + 99 48 hstemhm + 184 68 52 73 53 68 hintmask 1110010100000000 + 204 callgsubr + hintmask 1100110100000000 + 14 77 rlineto + hintmask 1110010100000000 + 3 -7 407 callsubr + -41 -21 -83 -34 hvcurveto + -44 -108 rlineto + -77 506 callsubr + 465 callsubr + hintmask 1110011110000000 + 164 callsubr + 175 317 rmoveto + 30 callsubr + + + 90 callsubr + endchar + + + 14 callgsubr + 49 46 hstem + 121 481 callsubr + -96 callgsubr + 47 49 rmoveto + -50 callgsubr + + + 30 callgsubr + 52 46 hstem + 83 481 callsubr + -94 callsubr + 46 52 rmoveto + -50 callgsubr + + + 85 callgsubr + 74 48 hstemhm + 52 80 -27 68 177 83 -82 68 -57.5 71.5 hintmask 1011101000000000 + 389 callsubr + hintmask 1011100010000000 + 75 callgsubr + hintmask 0111100010000000 + 7 -58 rlineto + hintmask 0111101000000000 + -68 callsubr + hintmask 1011101000000000 + -89 callgsubr + hintmask 1011010100000000 + 44 518 rmoveto + 30 callsubr + + + 23 callgsubr + endchar + + + 24 callsubr + endchar + + + -67 callsubr + endchar + + + 40 callsubr + 49 46 hstemhm + 90 83 -40 481 callsubr + 291 callsubr + 194 49 rmoveto + -50 callgsubr + + + 40 callgsubr + 71 46 hstemhm + 90 83 -59 481 callsubr + 298 callsubr + hintmask 11110110 + 175 71 rmoveto + -50 callgsubr + + + 84 callsubr + 74 48 hstemhm + 46 80 -80 81 -20 504 callsubr + -35 72 hintmask 1111100010000000 + -70 callsubr + hintmask 1111010010000000 + -81 callgsubr + hintmask 1111100010000000 + -86 callgsubr + hintmask 1111001100000000 + -122 290 rmoveto + 30 callsubr + + + 68 callsubr + + + 77 callsubr + + + 82 callgsubr + + + 335 callsubr + 103 57 hstemhm + 90 82 26 268 18 82 507 callgsubr + 88 hlineto + 241 414 rlineto + hintmask 01101101 + 300 callsubr + hintmask 10011101 + 212 callgsubr + hintmask 01011111 + 108 83 59 callgsubr + + + 159 callsubr + 99 57 hstemhm + 90 77 -3 268 -14 77 507 callgsubr + 83 hlineto + 192 306 rlineto + hintmask 01101101 + 301 callgsubr + hintmask 10011101 + 212 callsubr + hintmask 01011010 + 74 275 callsubr + + + 485 callgsubr + 136 57 hstemhm + 82 80 -10 266 -15 80 hintmask 01011101 + 82 hmoveto + 76 hlineto + 185 278 rlineto + hintmask 01101101 + 121 callgsubr + hintmask 10011101 + 179 callsubr + hintmask 01011010 + 70 116 -37 callsubr + + + 165 callgsubr + 47 98 hstem + 52 86 42 380 callsubr + 42 -103 callsubr + -103 654 -98 callgsubr + + + 145 callsubr + 50 98 hstemhm + 52 86 5 380 callsubr + 5 86 hintmask 11010010 + -102 callsubr + hintmask 11101100 + -103 522 -98 callgsubr + + + 191 callgsubr + 89 100 hstemhm + 46 85 -6 99 94 99 -6 85 hintmask 11010010 + -102 callgsubr + hintmask 11101100 + -96 531 -88 callgsubr + + + 66 callgsubr + + + 85 callsubr + + + 1 callgsubr + + + 433 callsubr + 99 57 hstemhm + 5 509 -396 268 hintmask 10111000 + 12 callsubr + hintmask 01111000 + -17 -75 rlineto + hintmask 10111000 + -7 18 18 -3 29 hhcurveto + hintmask 10110100 + -18 747 59 callgsubr + + + 396 callsubr + 99 57 hstemhm + 5 439 -351 268 hintmask 10111000 + 169 callgsubr + hintmask 01111000 + -17 -71 rlineto + hintmask 10111000 + -5 14 19 -3 25 hhcurveto + hintmask 10110100 + -27 609 59 callgsubr + + + 316 callgsubr + 135 57 hstemhm + 12 443 -345 266 hintmask 11110000 + -90 callgsubr + hintmask 11101000 + 20 810 -37 callsubr + + + 433 callsubr + hstemhm + 5 509 hintmask 10110000 + 12 callsubr + hintmask 01110000 + -17 -75 rlineto + hintmask 10110000 + -7 18 18 -3 29 hhcurveto + 57 715 58 callgsubr + + + 109 callgsubr + 48 577 58 callgsubr + + + -59 callgsubr + 102 777 94 callgsubr + + + -47 -12 68 hstem + 16 479 vstem + 93 -12 rmoveto + 52 55 32 55 56 hvcurveto + -55 54 56 -32 53 hhcurveto + 28 29 9 13 19 hvcurveto + -26 60 rlineto + -10 -13 -16 -4 -18 hhcurveto + -40 -36 26 41 -38 hvcurveto + 70 65 51 77 70 vvcurveto + 98 -61 65 -112 -113 -61 -65 -98 -70 49 -77 72 -65 vhcurveto + -41 -38 -37 -26 -39 hhcurveto + -18 -16 4 10 -13 hvcurveto + -26 -60 rlineto + -13 19 29 -9 29 hhcurveto + endchar + + + 30 0 66 247 64 213 66 58 107 hstemhm + 90 83 57 114 84 82 -44 82 hintmask 11101001 + 179 callgsubr + hintmask 11101010 + 62 20 34 58 65 vvcurveto + 115 -92 45 -133 vhcurveto + -195 hlineto + 83 -279 rmoveto + 213 101 vlineto + 102 52 -29 -76 -67 -46 -41 -112 hvcurveto + -97 -311 rmoveto + 247 114 vlineto + hintmask 11111101 + 115 64 -37 -81 -88 -66 -41 -113 hvcurveto + 648 vmoveto + -84 callgsubr + + + -32 0 62 181 56 157 62 80 107 hstemhm + 90 83 46 114 45 77 -50 80 hintmask 11101001 + 187 callsubr + hintmask 11101010 + 60 16 30 45 50 vvcurveto + 94 -81 34 -114 vhcurveto + -170 hlineto + 83 -219 rmoveto + 157 81 vlineto + 82 42 -22 -53 -53 -36 -29 -91 hvcurveto + -78 -237 rmoveto + 181 90 vlineto + hintmask 11111101 + 92 50 -28 -59 -68 -56 -26 -86 hvcurveto + 13 536 rmoveto + -84 callgsubr + + + -5 399 callsubr + 88 108 18 -20 hstemhm + 82 69.5 -69.5 82 107 110 41 85 hintmask 1010101010000000 + 268 callsubr + hintmask 0110101010000000 + -712 vlineto + hintmask 0110110010000000 + 66 hlineto + hintmask 1010110010000000 + 7 50 rlineto + 3 hlineto + hintmask 1010101010000000 + 147 callgsubr + hintmask 1011001110000000 + 43 529 -105 callsubr + + + 30 317 callsubr + 66 247 64 213 66 hstemhm + 90 83 -4 266 -7 82 -44 82 hintmask 11111001 + 179 callgsubr + hintmask 11111010 + 62 20 34 58 65 vvcurveto + 115 -92 45 -133 vhcurveto + -195 hlineto + 83 -279 rmoveto + 213 101 vlineto + 102 52 -29 -76 -67 -46 -41 -112 hvcurveto + -97 -311 rmoveto + 247 114 vlineto + hintmask 11110101 + 115 64 -37 -81 -88 -66 -41 -113 hvcurveto + -118 -236 -37 callsubr + + + -32 317 callsubr + 62 181 56 157 62 hstemhm + 90 83 -20 266 -41 77 -50 80 hintmask 11111001 + 187 callsubr + hintmask 11111010 + 60 16 30 45 50 vvcurveto + 94 -81 34 -114 vhcurveto + -170 hlineto + 83 -219 rmoveto + 157 81 vlineto + 82 42 -22 -53 -53 -36 -29 -91 hvcurveto + -78 -237 rmoveto + 181 90 vlineto + hintmask 11111001 + 92 50 -28 -59 -68 -56 -26 -86 hvcurveto + hintmask 11110100 + -110 -232 -37 callsubr + + + -5 -170 57 101 306 callsubr + 214 -20 hstemhm + 82 69.5 -69.5 82 -1 266 -7 85 hintmask 1101101010000000 + 268 callsubr + hintmask 1011101010000000 + -712 vlineto + hintmask 1011110010000000 + 66 hlineto + hintmask 1101110010000000 + 7 50 rlineto + 3 hlineto + hintmask 1101101010000000 + 147 callgsubr + hintmask 1101100100000000 + -120 -227 -37 callsubr + + + 57 0 68 520 68 58 439 callgsubr + 78 114 113 186 callgsubr + 60 646 rmoveto + -84 callgsubr + + + -3 0 65 387 66 80 439 callgsubr + 53 114 77 201 callgsubr + 48 533 rmoveto + -84 callgsubr + + + -3 399 callsubr + 88 108 18 -20 hstemhm + 47 85 45 110 103 -79 callgsubr + hintmask 1010110100000000 + 261 callsubr + hintmask 1010110010000000 + 13 callgsubr + hintmask 0110110010000000 + 7 -57 rlineto + hintmask 0110110100000000 + 309 callgsubr + hintmask 1010110100000000 + -99 callsubr + hintmask 1011011100000000 + -34 529 -105 callsubr + + + 57 272 callsubr + 68 520 68 hstem + 90 83 77 110 118 186 callgsubr + 57 -274 -105 callsubr + + + -3 272 callsubr + 65 387 66 hstem + 90 83 53 110 81 201 callgsubr + 46 -271 -105 callsubr + + + -3 39 callgsubr + 86 306 callsubr + 214 -20 hstemhm + 47 85 90 110 58 412 callsubr + 261 callsubr + hintmask 1101110010000000 + 13 callgsubr + hintmask 1011110010000000 + 7 -57 rlineto + hintmask 1011110100000000 + 309 callgsubr + hintmask 1101110100000000 + -99 callsubr + hintmask 1101111100000000 + 11 -263 -105 callsubr + + + 57 317 callsubr + 68 520 68 hstemhm + 90 83 -1 266 40 86 hintmask 11110100 + 194 callgsubr + hintmask 11101100 + -76 -238 -37 callsubr + + + -3 317 callsubr + 65 387 66 hstemhm + 90 83 -25 266 3 86 hintmask 11110100 + 51 callsubr + hintmask 11101000 + -87 -235 -37 callsubr + + + -3 -170 57 101 306 callsubr + 214 -20 hstemhm + 47 85 12 266 -20 412 callsubr + 261 callsubr + hintmask 1101110010000000 + 13 callgsubr + hintmask 1011110010000000 + 7 -57 rlineto + hintmask 1011110100000000 + 309 callgsubr + hintmask 1101110100000000 + -99 callsubr + hintmask 1101111000000000 + -122 -227 -37 callsubr + + + 40 callsubr + 79 57 hstemhm + 90 83 -17 268 298 callgsubr + hintmask 11110100 + 66 79 17 callgsubr + 116 35 rmoveto + 129 93 -39 48 -121 -103 rlineto + endchar + + + 175 callsubr + 116 35 rmoveto + 129 93 -39 48 -121 -103 rlineto + endchar + + + 84 callsubr + 103 57 hstemhm + 46 80 -80 81 4 266 -11 72 hintmask 11111001 + -70 callsubr + hintmask 11110101 + -81 callgsubr + hintmask 11111001 + -86 callgsubr + hintmask 11110010 + -255 319 -24 callgsubr + 99 47 rmoveto + 141 89 -38 49 -135 -99 rlineto + endchar + + + 516 callgsubr + 58 439 callgsubr + 56 114 346 callsubr + 294 250 70 -250 222 117 callsubr + hlineto + 196 58 rmoveto + -84 callgsubr + + + 484 callgsubr + 80 439 callgsubr + 36 114 346 callsubr + 223 207 64 -207 163 244 68 -327 hlineto + 176 80 rmoveto + -84 callgsubr + + + -266 378 callgsubr + 171 67 38 107 hstemhm + 96 82 -82 185 -120 114 hintmask 11111000 + 96 hmoveto + 82 419 hlineto + hintmask 11110100 + 526 callgsubr + hintmask 11111000 + 141 callsubr + hintmask 11110010 + 122 343 rmoveto + -84 callgsubr + + + 224 callsubr + 67 57 hstemhm + 52 86 79 268 -11 76 hintmask 11111010 + -87 callsubr + hintmask 11111100 + -131 747 59 callgsubr + + + 393 callgsubr + 89 57 hstemhm + 52 85 37 268 -35 76 hintmask 11111010 + -80 callgsubr + hintmask 11111100 + -133 631 59 callgsubr + + + 54 callgsubr + 103 57 397 callgsubr + -17 266 -42 75 -12 80 hintmask 1101101100001000 + 63 callgsubr + hintmask 1101101001010000 + -34 callsubr + hintmask 1101011010010000 + 49 callsubr + hintmask 1101101001010000 + 88 callsubr + hintmask 1101101100010000 + 289 callgsubr + hintmask 1101101100001000 + 289 callsubr + hintmask 1101011010010000 + 32 callgsubr + hintmask 1011101100001000 + 89 callgsubr + hintmask 1101101010001000 + 151 callsubr + hintmask 1011101100001000 + 354 callgsubr + hintmask 1101101000100000 + -133 768 -37 callsubr + + + 228 callgsubr + 103 57 hstemhm + 47 85 17 266 -25 83 342 callgsubr + 318 callgsubr + hintmask 11111010 + 121 callsubr + hintmask 11111001 + 132 callsubr + hintmask 11111010 + -66 callsubr + hintmask 11111100 + -117 528 -37 callsubr + + + 94 181 callgsubr + 309 72 275 -20 hstem + 90 83 97 110 98 84 vstem + 57 callgsubr + 235 -862 -105 callsubr + + + 36 181 callgsubr + 235 72 211 -20 hstem + 90 83 69 110 69 106 callgsubr + 207 -724 -105 callsubr + + + -14 181 callgsubr + 427 71 214 -20 hstem + 82 82 68 110 47 82 vstem + -38 callgsubr + -67 -49 -36 -44 -46 vhcurveto + 3 100 rlineto + 194 -82 vlineto + 205 -918 -105 callsubr + + + 94 502 callsubr + 309 72 275 -20 hstemhm + 90 83 -4 494 callgsubr + -3 84 hintmask 11111001 + 57 callgsubr + hintmask 11110110 + 235 -887 -31 callgsubr + + + 36 502 callsubr + 235 72 211 -20 hstemhm + 90 83 -32 32 -32 494 callgsubr + -32 83 hintmask 1111100010000000 + 82 callsubr + hintmask 1111010100000000 + 207 -749 rmoveto + 283 callgsubr + hintmask 1111001010000000 + 447 callgsubr + hintmask 1111010010000000 + -51 -8 rlineto + hintmask 1111010100000000 + -74 5 44 -77 107 hhcurveto + endchar + + + -14 502 callsubr + 427 71 214 -20 hstemhm + 82 82 -33 33 -33 51 207 82 -79 51 hintmask 1111100100000000 + -38 callgsubr + -67 -49 -36 -44 -46 vhcurveto + 3 100 rlineto + 194 -82 vlineto + hintmask 1111010010000000 + 205 -943 rmoveto + 283 callgsubr + hintmask 1111001100000000 + 447 callgsubr + hintmask 1111010100000000 + -51 -8 rlineto + hintmask 1111010010000000 + -74 5 44 -77 107 hhcurveto + endchar + + + 21 490 callsubr + hstem + 90 83 100 110 119 callsubr + 238 -862 -105 callsubr + + + -44 181 callgsubr + 518 -20 hstem + 90 83 71 110 231 callgsubr + 209 -724 -105 callsubr + + + -63 181 callgsubr + 486 -20 246 -20 hstem + 82 81 57 110 134 callgsubr + 193 -918 -105 callsubr + + + 21 -170 57 134 388 callsubr + hstemhm + 90 83 22 266 hintmask 11110000 + 128 callsubr + hintmask 11111000 + 105 -826 -37 callsubr + + + -44 -170 57 134 482 callsubr + hstemhm + 90 83 -7 266 hintmask 11110000 + 234 callgsubr + hintmask 11101000 + 76 -688 -37 callsubr + + + -63 -170 57 134 260 callsubr + 246 -20 hstemhm + 82 81 -21 266 hintmask 11111000 + 136 callsubr + hintmask 11110100 + 60 -882 -37 callsubr + + + -72 272 callsubr + 71 585 -20 hstem + 90 83 61 110 336 callgsubr + 199 -862 -105 callsubr + + + -121 272 callsubr + 69 449 -20 hstem + 90 83 32 110 444 callsubr + 170 -724 -105 callsubr + + + 427 callsubr + hstemhm + 82 82 -74 110 hintmask 11011000 + 42 callsubr + hintmask 10110100 + -24 344 callgsubr + endchar + + + -312 39 callgsubr + hstemhm + 68 110 -96 82 hintmask 10100000 + 82 hmoveto + 82 712 -82 hlineto + hintmask 11000000 + 41 -918 -105 callsubr + + + -72 272 callsubr + 71 585 -20 99 57 hstem + 90 83 61 110 336 callgsubr + -91 79 17 callgsubr + 290 -998 -105 callsubr + + + -121 272 callsubr + 69 449 -20 121 57 hstem + 90 83 32 110 444 callsubr + -87 101 17 callgsubr + 257 -882 -105 callsubr + + + 427 callsubr + 91 57 hstemhm + 82 82 -74 110 hintmask 11011100 + 42 callsubr + -178 795 17 callgsubr + hintmask 10111010 + 154 -1046 -105 callsubr + + + -312 39 callgsubr + 881 57 hstemhm + 69 483 callgsubr + hintmask 01010000 + 82 hmoveto + 82 712 -82 hlineto + -92 71 17 callgsubr + hintmask 11100000 + 134 -1046 -105 callsubr + + + -72 317 callsubr + 71 585 -20 hstemhm + 90 83 -17 266 hintmask 11110000 + 90 hmoveto + 370 71 379 callgsubr + 521 callgsubr + 66 -826 -37 callsubr + + + -121 317 callsubr + 69 449 -20 hstemhm + 90 83 -46 266 hintmask 11110000 + 90 hmoveto + 320 69 -237 449 -83 521 callgsubr + 37 -688 -37 callsubr + + + -303 -170 57 101 68 -39 -21 716 -20 hstemhm + 12 266 -196 82 hintmask 11010100 + 42 callsubr + hintmask 10111000 + -157 -158 -37 callsubr + + + -312 -170 57 462 callsubr + -92 -882 -37 callsubr + + + 5 callsubr + 256 41 -89 callsubr + + + 89 21 337 callgsubr + 317 -55 callgsubr + 216 63 -89 callsubr + + + 64 callsubr + 329 87 -71 callgsubr + + + 169 21 -21 66 103 386 101 58 107 hstem + 90 75 141 114 139 -51 callsubr + 273 58 rmoveto + -84 callgsubr + + + 89 21 402 callgsubr + 80 107 hstem + 90 75 101 114 102 -55 callgsubr + 233 80 rmoveto + -84 callgsubr + + + 271 21 214 callsubr + 120 108 -79 callsubr + 206 110 -103 82 212 82 hintmask 1101010110000000 + 163 callgsubr + hintmask 1101100110000000 + 315 callgsubr + hintmask 1011100110000000 + -7 70 rlineto + hintmask 1011011010000000 + -68 hlineto + 343 100 -105 callsubr + + + 169 181 callgsubr + 66 103 386 101 hstem + 90 75 145 110 139 -51 callsubr + 275 -862 -105 callsubr + + + 89 -206 108 119 337 callgsubr + 103 110 104 -55 callgsubr + 233 -724 -105 callsubr + + + 271 -206 108 119 -5 callsubr + 202 110 -99 82 212 82 hintmask 1110010110000000 + 163 callgsubr + hintmask 1110100110000000 + 315 callgsubr + hintmask 1101100110000000 + -7 70 rlineto + hintmask 1101011010000000 + -68 hlineto + 339 -692 -105 callsubr + + + 441 callgsubr + 78 107 hstemhm + 90 79 108 114 87 79 hintmask 01011101 + 305 callsubr + hintmask 01101101 + -7 callsubr + hintmask 10011111 + 26 callgsubr + hlineto + 244 58 rmoveto + -84 callgsubr + + + 159 callsubr + 100 107 hstemhm + 90 77 77 114 60 77 hintmask 01011101 + 406 callsubr + hintmask 01101101 + -7 callgsubr + hintmask 10011111 + 61 callsubr + 211 80 rmoveto + -84 callgsubr + + + -11 21 214 callsubr + 120 108 -79 callsubr + 76 110 39 82 hintmask 11010101 + 62 callsubr + hintmask 11011001 + 189 callsubr + hintmask 10111001 + -7 70 rlineto + hintmask 10110111 + -68 hlineto + 213 100 -105 callsubr + + + 89 272 callsubr + 174 callsubr + 107 110 92 79 hintmask 10101101 + 305 callsubr + hintmask 10110101 + -7 callsubr + hintmask 11001111 + 26 callgsubr + hlineto + 241 -862 -105 callsubr + + + 27 272 callsubr + 349 callgsubr + 77 110 64 77 hintmask 10101101 + 406 callsubr + hintmask 10110101 + -7 callgsubr + hintmask 11001111 + 61 callsubr + 209 -724 -105 callsubr + + + -11 -206 108 119 -5 callsubr + 58 110 57 82 hintmask 11100101 + 62 callsubr + hintmask 11101001 + 189 callsubr + hintmask 11011001 + -7 70 rlineto + hintmask 11010111 + -68 hlineto + 195 -692 -105 callsubr + + + 89 317 callsubr + 174 callsubr + 29 266 14 79 hintmask 10101101 + 305 callsubr + hintmask 10110101 + -7 callsubr + hintmask 11001101 + 26 callgsubr + hlineto + hintmask 10101111 + 108 -826 -37 callsubr + + + 27 317 callsubr + 349 callgsubr + -1 266 -14 77 hintmask 10101101 + 406 callsubr + hintmask 10110101 + -7 callgsubr + hintmask 11001101 + 61 callsubr + hintmask 10101010 + 76 -688 -37 callsubr + + + -11 -170 57 134 -5 callsubr + -20 266 -21 82 hintmask 11100101 + 62 callsubr + hintmask 11101001 + 189 callsubr + hintmask 11011001 + -7 70 rlineto + hintmask 11010101 + -68 hlineto + hintmask 11100010 + 62 -656 -37 callsubr + + + 165 callgsubr + 67 57 hstem + 52 86 60 268 60 -103 callsubr + -134 674 17 callgsubr + 116 35 rmoveto + 129 93 -39 48 -121 -103 rlineto + endchar + + + 145 callsubr + 89 57 hstemhm + 52 86 22 268 24 86 hintmask 11110100 + -102 callsubr + hintmask 11111100 + -135 561 17 callgsubr + 116 35 rmoveto + 129 93 -39 48 -121 -103 rlineto + endchar + + + 191 callgsubr + 103 57 hstemhm + 46 85 7 266 7 85 hintmask 11110100 + -102 callgsubr + hintmask 11101000 + -133 545 -24 callgsubr + 99 47 rmoveto + 141 89 -38 49 -135 -99 rlineto + endchar + + + 8 21 -21 260 68 261 67 58 439 callgsubr + 73 114 80 83 vstem + 90 110 callgsubr + 32 386 rmoveto + -84 callgsubr + + + 395 callsubr + 80 439 callgsubr + 56 114 52 50 callsubr + 25 342 rmoveto + -84 callgsubr + + + -3 -184 -21 193 154 callgsubr + 120 108 -79 callsubr + 76 110 72 85 hintmask 1110101010000000 + 82 -205 rmoveto + 82 164 hlineto + -2 85 rlineto + -35 45 45 -21 45 hhcurveto + 448 callsubr + 151 -67 97 -125 hvcurveto + 522 callgsubr + -57 -54 -31 -37 -44 hvcurveto + -3 hlineto + hintmask 1101110010000000 + -7 56 rlineto + hintmask 1101101010000000 + -68 hlineto + 201 -429 476 callsubr + hintmask 1110101010000000 + 234 callsubr + hintmask 1101101010000000 + -120 -59 -73 -80 vhcurveto + hintmask 1110101110000000 + 12 529 -105 callsubr + + + 11 433 callgsubr + 58 439 callgsubr + 65 114 90 83 vstem + 20 callsubr + 12 369 rmoveto + -84 callgsubr + + + -35 21 -21 208 60 184 66 80 439 callgsubr + 52 114 50 79 vstem + -35 callsubr + 22 330 rmoveto + -84 callgsubr + + + 461 callgsubr + 118 108 -79 callsubr + 3 110 hintmask 11001010 + 62 callgsubr + hintmask 10011010 + 16 72 rlineto + hintmask 11001100 + 111 callsubr + hintmask 10101100 + -7 88 rlineto + hintmask 10101010 + -68 hlineto + hintmask 11001001 + 140 100 -105 callsubr + + + 11 -206 108 119 351 callgsubr + hstem + 90 83 82 110 77 83 vstem + 20 callsubr + 27 -551 -105 callsubr + + + -35 181 callgsubr + 208 60 184 66 hstem + 90 83 57 110 49 79 vstem + -35 callsubr + 25 -474 -105 callsubr + + + -211 181 callgsubr + 424 378 callsubr + hstemhm + 66 110 -94 -82 callgsubr + hintmask 11100001 + 62 callgsubr + hintmask 11001001 + 16 72 rlineto + hintmask 11100010 + 111 callsubr + hintmask 11010010 + -7 88 rlineto + hintmask 11010001 + -68 hlineto + hintmask 11100100 + 39 -692 -105 callsubr + + + 11 -206 108 119 351 callgsubr + 79 57 hstemhm + 90 83 -12 268 -174 110 77 83 522 callsubr + 20 callsubr + hintmask 1111101010000000 + -122 390 17 callgsubr + hintmask 1111110110000000 + 149 -998 -105 callsubr + + + -35 181 callgsubr + 208 60 184 66 101 57 hstemhm + 90 83 -25 268 -186 110 49 79 hintmask 0111110010000000 + -35 callsubr + hintmask 0111101000000000 + -112 351 17 callgsubr + hintmask 1111110110000000 + 137 -882 -105 callsubr + + + -211 181 callgsubr + 424 378 callsubr + 133 57 hstemhm + 66 110 -94 -82 callgsubr + -75 266 hintmask 1110010010000000 + 62 callgsubr + hintmask 1100110010000000 + 16 72 rlineto + hintmask 1110010100000000 + 111 callsubr + hintmask 1101010100000000 + -7 88 rlineto + hintmask 1101010010000000 + -68 hlineto + hintmask 1110010001000000 + 7 115 -24 callgsubr + hintmask 1110011000000000 + 32 -864 -105 callsubr + + + 11 -170 57 134 351 callgsubr + hstemhm + 90 83 4 266 -1 83 hintmask 11111010 + 20 callsubr + hintmask 11110100 + -106 -515 -37 callsubr + + + -35 -170 57 134 -21 208 60 184 66 hstemhm + 90 83 -21 266 -29 79 hintmask 11111010 + -35 callsubr + hintmask 11110100 + -108 -438 -37 callsubr + + + -211 -170 57 134 -21 424 74 -12 -20 22 -17 callsubr + hintmask 11100010 + 62 callgsubr + hintmask 11001010 + 16 72 rlineto + hintmask 11100100 + 111 callsubr + hintmask 11010100 + -7 88 rlineto + hintmask 11010010 + -68 hlineto + -94 -656 -37 callsubr + + + -24 166 callsubr + 46 107 hstem + 74 84 63 114 75 -83 callsubr + 6 726 rmoveto + -84 callgsubr + + + -84 435 callgsubr + 68 107 hstem + 72 83 42 114 41 84 vstem + -92 callgsubr + 11 610 rmoveto + -84 callgsubr + + + 317 callgsubr + 88 108 hstemhm + 55 79 26 110 38 79 hintmask 11010100 + -73 callsubr + hintmask 11111100 + 6 598 -105 callsubr + + + -24 39 callgsubr + 86 219 callgsubr + hstem + 74 84 60 110 82 -83 callsubr + 1 344 callgsubr + endchar + + + -84 39 callgsubr + 86 452 callsubr + hstem + 72 83 49 110 38 84 vstem + -92 callgsubr + 16 344 callgsubr + endchar + + + -139 39 callgsubr + 86 495 callgsubr + hstemhm + 55 79 25 110 39 79 hintmask 11110100 + -73 callsubr + hintmask 11111100 + 5 344 callgsubr + endchar + + + -22 21 -21 586 70 58 107 hstemhm + 210 114 -98 328 callsubr + 128 rmoveto + -84 callgsubr + + + -91 21 -21 449 69 80 107 hstemhm + 177 114 -99 329 callgsubr + 149 rmoveto + -84 callgsubr + + + 398 callgsubr + 233 108 hstemhm + 93 110 -107 83 -74 74 hintmask 11101000 + 15 callgsubr + hintmask 11100100 + 265 callsubr + hintmask 11101000 + 174 callgsubr + hintmask 11110000 + -87 731 -105 callsubr + + + -22 181 callgsubr + 586 70 hstemhm + 212 110 -96 328 callsubr + -792 -105 callsubr + + + -91 181 callgsubr + 449 69 hstemhm + 179 110 -97 329 callgsubr + -655 -105 callsubr + + + -220 39 callgsubr + 86 67 364 405 callsubr + -19 110 hintmask 11110000 + 15 callgsubr + hintmask 11101000 + 265 callsubr + hintmask 11110000 + 174 callgsubr + hintmask 11100100 + -20 344 callgsubr + endchar + + + -22 -170 57 134 144 callsubr + -92 -756 -37 callsubr + + + -91 -170 57 134 -21 449 69 hstem + 192 83 vstem + 72 callsubr + -91 -619 -37 callsubr + + + -220 -170 57 101 67 364 67 hstemhm + 82 266 -252 83 -74 74 hintmask 11101000 + 15 callgsubr + hintmask 11100100 + 265 callsubr + hintmask 11101000 + 174 callgsubr + hintmask 11110000 + -153 -158 -37 callsubr + + + -82 161 callgsubr + 78 107 hstemhm + 181 114 -99 185 callsubr + 42 460 rmoveto + -84 callgsubr + + + 287 callsubr + 100 107 hstemhm + 151 114 -99 83 hintmask 11101000 + 11 callsubr + hintmask 11110000 + 42 402 rmoveto + -84 callgsubr + + + 316 callgsubr + 120 108 hstem + 188 110 -18 callsubr + 153 795 -105 callsubr + + + -19 272 callsubr + 342 callsubr + hstem + 227 110 79 callgsubr + 237 -256 -105 callsubr + + + -83 272 callsubr + 493 callgsubr + hstem + 198 110 80 callgsubr + 208 -255 -105 callsubr + + + -133 272 callsubr + 67 352 67 hstem + 170 110 vstem + 55 callsubr + 194 -250 -105 callsubr + + + -19 317 callsubr + 342 callsubr + hstemhm + 45 452 -348 266 hintmask 11110000 + 37 callgsubr + hintmask 11101000 + 104 -220 -37 callsubr + + + -83 317 callsubr + 493 callgsubr + hstemhm + 45 388 -313 266 hintmask 11110000 + 55 callgsubr + hintmask 11101000 + 75 -219 -37 callsubr + + + -133 317 callsubr + 67 352 67 hstemhm + 31 368 -307 266 hintmask 11110000 + 55 callsubr + hintmask 11101000 + 61 -214 -37 callsubr + + + -14 -170 57 134 219 callsubr + 214 -20 hstemhm + 82 82 -10 266 -31 82 hintmask 11111010 + -38 callgsubr + -67 -49 -36 -44 -46 vhcurveto + 3 100 rlineto + 194 -82 vlineto + hintmask 11110100 + 72 -882 -37 callsubr + + + 94 -170 57 134 268 callgsubr + 275 -20 hstemhm + 90 83 19 266 20 84 hintmask 11111010 + 57 callgsubr + hintmask 11111110 + 102 -826 -37 callsubr + + + 36 -170 57 134 -21 235 72 211 -20 hstemhm + 90 83 -9 266 -9 83 hintmask 11111010 + 82 callsubr + hintmask 11110100 + 74 -688 -37 callsubr + + + 398 callgsubr + 234 100 hstemhm + 2 99 -5 83 -74 74 16 99 hintmask 11101000 + 15 callgsubr + hintmask 11100100 + 265 callsubr + hintmask 11101000 + 174 callgsubr + hintmask 11110010 + -183 732 -88 callgsubr + + + -22 21 -21 586 70 59 98 hstemhm + 115 98 13 84 11 98 hintmask 11101000 + 122 callgsubr + hintmask 11111100 + -62 129 -98 callgsubr + + + -91 21 -21 449 69 81 98 hstemhm + 82 98 12 83 13 98 hintmask 11101000 + 72 callsubr + hintmask 11111100 + -61 150 -98 callgsubr + + + 109 -12 70 -37 -21 599 69 hstemhm + 91 84 363 86 hintmask 10111000 + 434 -12 rmoveto + 115 75 79 104 95 -59 68 -139 28 hvcurveto + 138 152 rlineto + 93 -36 -70 61 -111 hhcurveto + -162 -94 -95 -156 523 callgsubr + -417 84 402 vlineto + 135 63 62 106 68 43 -37 -45 22 vhcurveto + -137 -153 5 -54 rlineto + 153 -26 40 -51 -62 vvcurveto + hintmask 10111000 + -66 -41 -47 -70 -49 -39 18 42 -38 vhcurveto + -48 -54 rlineto + -45 41 63 -31 77 hhcurveto + endchar + + + 36 -12 67 -34 -21 463 67 hstemhm + 91 84 291 85 hintmask 10111000 + 388 -12 rmoveto + 101 62 67 81 77 -51 49 -111 22 hvcurveto + 113 113 rlineto + 78 -29 -63 55 -97 hhcurveto + -141 -81 -81 -122 523 callgsubr + -327 84 313 vlineto + 100 50 50 84 56 35 -28 -35 19 vhcurveto + -113 -114 6 -46 rlineto + hintmask 10111000 + 121 -17 33 -37 -49 vvcurveto + -48 -31 -34 -54 -38 -34 13 31 -32 vhcurveto + -43 -50 rlineto + -34 34 54 -27 66 hhcurveto + endchar + + + -14 -206 108 119 -23 callsubr + hstem + 216 110 18 callsubr + -862 -105 callsubr + + + -88 -206 108 119 98 callsubr + hstem + 180 110 18 callgsubr + -724 -105 callsubr + + + -54 39 callgsubr + 86 153 callsubr + hstemhm + 52 80 62 110 46 -79 callgsubr + hintmask 11011010 + 389 callsubr + hintmask 11011001 + 75 callgsubr + hintmask 10111001 + 7 -58 rlineto + hintmask 10111010 + -68 callsubr + hintmask 11011010 + -89 callgsubr + hintmask 11011110 + 31 -260 -105 callsubr + + + -3 39 callgsubr + 86 472 callsubr + 90 110 58 -76 callsubr + hintmask 01110100 + 261 callsubr + hintmask 01110010 + -6 callsubr + hintmask 01110100 + 319 callgsubr + hintmask 01110001 + -74 callsubr + hintmask 01110100 + -99 callsubr + hintmask 11111100 + 11 -263 -105 callsubr + + + 14 callgsubr + 168 48 hstem + 286 64 -96 callgsubr + 14 42 rmoveto + -78 callsubr + endchar + + + 30 callgsubr + 190 48 hstem + 250 64 -94 callsubr + 15 64 rmoveto + -78 callsubr + endchar + + + 85 callgsubr + 208 54 hstemhm + 52 80 150 65 3 -79 callgsubr + hintmask 10111010 + 389 callsubr + hintmask 10111001 + 75 callgsubr + hintmask 01111001 + 7 -58 rlineto + hintmask 01111010 + -68 callsubr + hintmask 10111010 + -89 callgsubr + 17 518 rmoveto + hintmask 10111100 + -87 callgsubr + + + 165 callsubr + 208 54 hstemhm + 47 85 160 65 33 -76 callsubr + hintmask 11111100 + 261 callsubr + hintmask 11111010 + 57 52 32 37 38 hvcurveto + 292 callgsubr + -112 260 callgsubr + hvcurveto + hintmask 11111100 + -99 callsubr + -21 515 -43 callsubr + + + 203 callsubr + 220 496 278 callgsubr + -359 -795 100 callsubr + + + 203 callgsubr + 200 439 278 callgsubr + -323 -679 101 callgsubr + + + 37 callsubr + 268 33 rmoveto + 101 114 -49 34 -87 -120 rlineto + endchar + + + 36 callsubr + 268 33 rmoveto + 101 114 -49 34 -87 -120 rlineto + endchar + + + 203 callsubr + -22 496 277 callgsubr + -57 -851 100 callsubr + + + 203 callgsubr + -42 439 277 callgsubr + -21 -735 101 callgsubr + + + 37 callsubr + 33 vmoveto + 35 31 -100 117 -48 -36 rlineto + endchar + + + 36 callsubr + 33 vmoveto + 35 31 -100 117 -48 -36 rlineto + endchar + + + 14 callgsubr + 112 47 49 42 hstem + 420 58 278 callsubr + 214 487 274 callgsubr + -372 -789 100 callsubr + + + 30 callgsubr + 134 47 49 42 hstem + 384 58 120 callgsubr + 194 430 274 callgsubr + -336 -673 101 callgsubr + + + 85 callgsubr + 144 54 54 41 140 callgsubr + -17 60 hintmask 1011111000000000 + 389 callsubr + hintmask 1011110100000000 + 75 callgsubr + hintmask 0111110100000000 + 7 -58 rlineto + hintmask 0111111000000000 + -68 callsubr + hintmask 1011111000000000 + -89 callgsubr + -56 516 -20 callsubr + hintmask 1011110010000000 + 88 callgsubr + + + 165 callsubr + 144 54 54 41 293 callsubr + -47 60 hintmask 1111110000000000 + 261 callsubr + hintmask 1111101000000000 + -6 callsubr + hintmask 1111110000000000 + 319 callgsubr + hintmask 1111100100000000 + -74 callsubr + hintmask 1111110000000000 + -99 callsubr + -94 513 -20 callsubr + hintmask 1111100010000000 + 88 callgsubr + + + 14 callgsubr + 109 404 callsubr + 126 45 200 45 hintmask 11110111 + -104 callsubr + -49 43 357 callgsubr + hintmask 11111011 + 69 callgsubr + hintmask 11110111 + 94 callsubr + hintmask 11111011 + 258 callsubr + + + 30 callgsubr + 131 404 callsubr + 90 45 200 45 hintmask 11110111 + -100 callsubr + -48 65 357 callgsubr + hintmask 11111011 + 69 callgsubr + hintmask 11110111 + 94 callsubr + hintmask 11111011 + 258 callsubr + + + 85 callgsubr + 141 53 18 51 -47 -20 58 51 hstemhm + 52 80 -2 43 177 83 -72 43 -42.5 71.5 hintmask 1010011101000000 + 389 callsubr + hintmask 1010011100010000 + 75 callgsubr + hintmask 0110011100010000 + 7 -58 rlineto + hintmask 0110011101000000 + -68 callsubr + hintmask 1010011101000000 + -89 callgsubr + hintmask 1011001101000000 + -56 516 rmoveto + 103 69 381 callgsubr + -69 29 34 -100 88 rlineto + -68 hlineto + -100 -88 rlineto + hintmask 1010100100100000 + 238 callgsubr + hintmask 1010011011000000 + 170 callsubr + hintmask 1010100100100000 + 222 callgsubr + + + 165 callsubr + 141 53 18 51 -9 51 hstemhm + 47 85 8 505 callsubr + -24 -76 callsubr + 522 callgsubr + 261 callsubr + hintmask 1110110001000000 + -6 callsubr + 522 callgsubr + 319 callgsubr + hintmask 1110110000100000 + -74 callsubr + 522 callgsubr + -99 callsubr + -94 513 rmoveto + 103 69 381 callgsubr + -69 29 34 -100 88 rlineto + -68 hlineto + -100 -88 rlineto + hintmask 1111010100000000 + 238 callgsubr + hintmask 1110111010000000 + 170 callsubr + hintmask 1111010100000000 + 222 callgsubr + + + -14 -206 108 119 -23 callsubr + 136 46 hstem + 216 110 -96 callgsubr + -66 43 301 callsubr + -931 -105 callsubr + + + -88 -206 108 119 98 callsubr + 158 46 hstem + 180 110 -94 callsubr + -65 65 301 callsubr + -815 -105 callsubr + + + -54 39 callgsubr + 86 153 callsubr + 183 59 hstemhm + 52 80 62 110 46 412 callsubr + 389 callsubr + hintmask 1101110010000000 + 75 callgsubr + hintmask 1011110010000000 + 7 -58 rlineto + hintmask 1011110100000000 + -68 callsubr + hintmask 1101110100000000 + -89 callgsubr + -106 546 -58 callsubr + hintmask 1101111100000000 + 23 -946 -105 callsubr + + + -3 39 callgsubr + 86 177 callsubr + 183 59 hstemhm + 47 85 90 110 58 -76 callsubr + hintmask 1111101000000000 + 261 callsubr + hintmask 1111100100000000 + -6 callsubr + hintmask 1111101000000000 + 319 callgsubr + hintmask 1111100010000000 + -74 callsubr + hintmask 1111101000000000 + -99 callsubr + -144 543 -58 callsubr + hintmask 1111111000000000 + 41 -946 -105 callsubr + + + 14 callgsubr + 49 49 hstem + 125 47 198 47 47 callsubr + -47 8 rlineto + -49 -8 -32 -39 -59 hhcurveto + -59 -32 39 49 -8 hvcurveto + -47 207 callsubr + 3 98 rmoveto + 107 109 -53 36 -95 -116 rlineto + endchar + + + 466 callgsubr + hstem + 89 47 198 47 18 callgsubr + 71 rmoveto + 93 45 59 70 8 hvcurveto + -47 8 rlineto + -49 -8 -32 -39 -59 hhcurveto + -59 -32 39 49 -8 hvcurveto + -47 207 callsubr + 3 98 rmoveto + 107 109 -53 36 -95 -116 rlineto + endchar + + + 12 callgsubr + -5 108 rmoveto + 101 113 -52 40 -88 -124 rlineto + endchar + + + 165 callsubr + 73 51 hstemhm + 47 85 -11 48 216 48 -43 54 callsubr + 11 514 rmoveto + 103 callgsubr + -48 8 rlineto + -53 -7 -34 -55 -67 hhcurveto + -67 -34 55 53 -7 hvcurveto + -48 27 callsubr + -5 108 rmoveto + 101 113 -52 40 -88 -124 rlineto + endchar + + + 14 callgsubr + 49 49 hstem + 125 47 198 47 47 callsubr + -47 8 rlineto + -49 -8 -32 -39 -59 hhcurveto + -59 -32 39 49 -8 hvcurveto + -47 207 callsubr + -3 98 rmoveto + 41 29 -95 116 -53 -36 rlineto + endchar + + + 466 callgsubr + hstem + 89 47 198 47 18 callgsubr + 71 rmoveto + 93 45 59 70 8 hvcurveto + -47 8 rlineto + -49 -8 -32 -39 -59 hhcurveto + -59 -32 39 49 -8 hvcurveto + -47 207 callsubr + -3 98 rmoveto + 41 29 -95 116 -53 -36 rlineto + endchar + + + 12 callgsubr + 5 108 rmoveto + 39 29 -88 124 -52 -40 rlineto + endchar + + + 165 callsubr + 73 51 hstemhm + 47 85 -11 48 216 48 -43 54 callsubr + 11 514 rmoveto + 103 callgsubr + -48 8 rlineto + -53 -7 -34 -55 -67 hhcurveto + -67 -34 55 53 -7 hvcurveto + -48 27 callsubr + 5 108 rmoveto + 39 29 -88 124 -52 -40 rlineto + endchar + + + 14 callgsubr + 49 508 callsubr + 125 47 110 59 29 47 hintmask 11111110 + -104 callsubr + 46 49 rmoveto + hintmask 11111111 + 93 45 59 70 8 hvcurveto + -47 8 rlineto + -49 -8 -32 -39 -59 hhcurveto + -59 -32 39 49 -8 hvcurveto + -47 -8 rlineto + hintmask 11111110 + 130 callsubr + + + 466 callgsubr + 156 42 hstemhm + 89 47 110 59 29 47 hintmask 11111110 + -100 callsubr + 47 71 rmoveto + hintmask 11111111 + 93 45 59 70 8 hvcurveto + -47 8 rlineto + -49 -8 -32 -39 -59 hhcurveto + -59 -32 39 49 -8 hvcurveto + -47 -8 rlineto + hintmask 11111110 + 130 callsubr + + + 85 callgsubr + 73 51 96 -20 24 -20 96 50 hstemhm + 52 80 -21 48 121 60 10 -79 callgsubr + -58 48 hintmask 1011011100100000 + 389 callsubr + hintmask 1011011100010000 + 75 callgsubr + hintmask 0111011100010000 + 7 -58 rlineto + hintmask 0111011100100000 + -68 callsubr + hintmask 1011011100100000 + -89 callgsubr + hintmask 1011011011001000 + 303 callgsubr + -48 8 rlineto + -53 -7 -34 -55 -67 hhcurveto + -67 -34 55 53 -7 hvcurveto + -48 27 callsubr + -27 111 rmoveto + 50 8 50 22 54 vvcurveto + 53 -48 27 -81 2 vhcurveto + -7 -50 rlineto + 54 -2 22 -13 -26 vvcurveto + hintmask 1011101101100000 + -21 -20 -12 -28 -6 vhcurveto + endchar + + + 165 callsubr + 73 51 176 50 hstemhm + 47 85 -11 48 121 60 35 48 322 callgsubr + hintmask 1111101010000000 + 261 callsubr + hintmask 1111101001000000 + -6 callsubr + hintmask 1111101010000000 + 319 callgsubr + hintmask 1111101000100000 + -74 callsubr + hintmask 1111101010000000 + -99 callsubr + hintmask 1111011100000000 + 11 514 rmoveto + 103 callgsubr + -48 8 rlineto + -53 -7 -34 -55 -67 hhcurveto + -67 -34 55 53 -7 hvcurveto + -48 27 callsubr + -27 111 rmoveto + 50 8 50 22 54 vvcurveto + 53 -48 27 -81 2 vhcurveto + -7 -50 rlineto + 54 -2 22 -13 454 callsubr + -12 -28 -6 vhcurveto + endchar + + + 14 callgsubr + 52 45 90 50 0 50 hstemhm + 126 375 callgsubr + hintmask 1111011000100000 + -104 callsubr + hintmask 1111010101000000 + 46 52 78 callsubr + + + 30 callgsubr + 74 45 90 50 0 50 hstemhm + 90 375 callgsubr + hintmask 1111011000100000 + -100 callsubr + hintmask 1111010101000000 + 47 74 78 callsubr + + + 85 callgsubr + 73 47 92 50 -46 -20 58 50 hstemhm + 52 80 -9 47 -47 50 -47 47 177 83 -72 47 501 callsubr + 71.5 -69 47 hintmask 1011011100010000 + 389 callsubr + hintmask 1011011100000100 + 75 callgsubr + hintmask 0111011100000100 + 7 -58 rlineto + hintmask 0111011100010000 + -68 callsubr + hintmask 1011011100010000 + -89 callgsubr + hintmask 1011011001000010 + 49 517 rmoveto + 282 callgsubr + hintmask 1011011010010000 + -62 -30 35 33 -5 hvcurveto + hintmask 1011011001010000 + -47 -8 rlineto + hintmask 1011011001000010 + -51 6 40 -56 98 hhcurveto + hintmask 1011100100001000 + 65 139 -42 callsubr + hintmask 1011011000110000 + -13 callgsubr + -5 rlineto + 29 5 8 14 20 hhcurveto + hintmask 1011100100001000 + 222 callgsubr + + + 165 callsubr + 73 47 92 50 -8 50 hstemhm + 47 85 1 488 callgsubr + -31 -76 callsubr + hintmask 1110110000010000 + 261 callsubr + hintmask 1110110000001000 + -6 callsubr + hintmask 1110110000010000 + 319 callgsubr + hintmask 1110110000000100 + -74 callsubr + hintmask 1110110000010000 + -99 callsubr + hintmask 1110100100100000 + 11 514 rmoveto + 282 callgsubr + hintmask 1110101000010000 + -62 -30 35 33 -5 hvcurveto + hintmask 1110100100010000 + -47 -8 rlineto + hintmask 1110100100100000 + -51 6 40 -56 98 hhcurveto + hintmask 1111010001000000 + 65 139 -42 callsubr + hintmask 1110100010010000 + -13 callgsubr + -5 rlineto + 29 5 8 14 20 hhcurveto + hintmask 1111010001000000 + 222 callgsubr + + + -14 -206 108 119 -23 callsubr + 49 53 hstem + 125 50 41 110 41 50 47 callsubr + -50 8 rlineto + -47 -8 -31 -37 -57 hhcurveto + -57 -31 37 47 -8 hvcurveto + -50 -8 rlineto + -70 8 45 -59 93 hhcurveto + -911 vmoveto + -106 callsubr + + + -88 -206 108 119 98 callsubr + 71 53 hstem + 89 50 41 110 41 50 18 callgsubr + 71 rmoveto + -72 callsubr + -795 vmoveto + -106 callsubr + + + -54 39 callgsubr + 86 153 callsubr + 73 55 96 -20 hstemhm + 52 80 -21 51 32 110 46 -79 callgsubr + -61 51 hintmask 1101111001000000 + 389 callsubr + hintmask 1101111000100000 + 75 callgsubr + hintmask 1011111000100000 + 7 -58 rlineto + hintmask 1011111001000000 + -68 callsubr + hintmask 1101111001000000 + -89 callgsubr + hintmask 1101110110010000 + 49 517 rmoveto + -11 callsubr + -18 -777 -105 callsubr + + + -3 39 callgsubr + 86 177 callsubr + 73 55 hstemhm + 47 85 -11 51 50 110 50 51 322 callgsubr + hintmask 0111100010000000 + 261 callsubr + hintmask 0111100001000000 + -6 callsubr + hintmask 0111100010000000 + 319 callgsubr + hintmask 0111100000100000 + -74 callsubr + hintmask 0111100010000000 + -99 callsubr + hintmask 1111011100000000 + 11 514 rmoveto + -11 callsubr + -777 vmoveto + -106 callsubr + + + -31 272 callsubr + 376 callgsubr + 70 110 -36 callsubr + 208 -862 -105 callsubr + + + -83 272 callsubr + 45 callgsubr + hstem + 90 83 46 110 -28 callsubr + 184 -724 -105 callsubr + + + -62 39 callgsubr + 86 -1 callsubr + hstemhm + 46 80 -80 81 82 110 67 72 hintmask 11111011 + -70 callsubr + hintmask 11110111 + -81 callgsubr + hintmask 11111011 + -86 callgsubr + -122 -488 -105 callsubr + + + 40 callsubr + 168 48 hstem + 90 83 132 64 -36 callsubr + 168 42 rmoveto + -78 callsubr + endchar + + + 40 callgsubr + 190 48 hstem + 90 83 106 64 -28 callsubr + 142 64 rmoveto + -78 callsubr + endchar + + + 84 callsubr + 208 54 hstemhm + 46 80 -80 81 152 65 42 72 hintmask 11101011 + -70 callsubr + hintmask 11100111 + -81 callgsubr + hintmask 11101011 + -86 callgsubr + -154 290 rmoveto + hintmask 11111011 + -87 callgsubr + + + 40 callsubr + 53 367 callsubr + 90 79 -79 83 -60 381 callsubr + hintmask 1110101000000000 + -71 callsubr + hintmask 1111101010000000 + 275 53 -35 callgsubr + hintmask 1110100100000000 + -60 -38 -47 -76 -4 hvcurveto + hintmask 1110110000000000 + 70 callgsubr + hintmask 1111101010000000 + 136 callgsubr + + + 40 callgsubr + 75 367 callsubr + 87 56 -53 53 -53 83 212 56 hintmask 1110100100000000 + -47 callsubr + hintmask 1111100110000000 + 249 75 -35 callgsubr + hintmask 1110110000000000 + -60 -38 -47 -76 -4 hvcurveto + hintmask 1110101000000000 + 70 callgsubr + hintmask 1111100110000000 + 136 callgsubr + + + 84 callsubr + 79 152 callsubr + 46 80 -80 81 -36 55 236 55 -51 72 hintmask 1110100100010000 + -70 callsubr + hintmask 1110100010010000 + -81 callgsubr + hintmask 1110100100010000 + -86 callgsubr + hintmask 1111010100100000 + -50 295 208 callsubr + hintmask 1111001100100000 + -41 callgsubr + hintmask 1110100001010000 + -53 callsubr + hintmask 1111010100100000 + 119 callgsubr + + + 40 callsubr + 112 47 hstem + 90 83 -36 callsubr + 105 43 56 callgsubr + + + 40 callgsubr + 134 47 9 callsubr + 79 65 56 callgsubr + + + 50 callgsubr + 268 33 rmoveto + 101 114 -49 34 -87 -120 rlineto + endchar + + + 40 callsubr + 112 47 hstem + 90 83 -36 callsubr + 105 43 rmoveto + 93 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + 8 38 277 callgsubr + endchar + + + 40 callgsubr + 134 47 9 callsubr + 79 65 rmoveto + 93 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + 8 38 277 callgsubr + endchar + + + 50 callgsubr + 33 vmoveto + 35 31 -100 117 -48 -36 rlineto + endchar + + + 40 callsubr + 112 47 49 42 hstem + 90 83 266 58 -36 callsubr + 105 43 rmoveto + 93 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + 52 callgsubr + + + 40 callgsubr + 134 47 49 42 hstem + 90 83 240 58 -28 callsubr + 79 65 rmoveto + 93 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + 52 callgsubr + + + 84 callsubr + 144 54 54 41 hstemhm + 46 80 -80 81 259 72 -45 60 521 callsubr + -70 callsubr + hintmask 1111101100000000 + -81 callgsubr + 521 callsubr + -86 callgsubr + -227 288 -20 callsubr + 522 callsubr + 88 callgsubr + + + 40 callsubr + 109 404 callsubr + 90 83 -28 45 200 45 hintmask 1111011000000000 + -71 callsubr + 105 43 357 callgsubr + hintmask 1111101010000000 + 69 callgsubr + hintmask 1111010100000000 + 94 callsubr + hintmask 1111101010000000 + 258 callsubr + + + 40 callgsubr + 131 404 callsubr + 90 83 -54 45 200 45 hintmask 1111011000000000 + -47 callsubr + 79 65 357 callgsubr + hintmask 1111101010000000 + 69 callgsubr + hintmask 1111010100000000 + 94 callsubr + hintmask 1111101010000000 + 258 callsubr + + + 84 callsubr + 141 53 18 51 -47 -20 58 51 hstemhm + 46 80 -80 81 0 505 callsubr + -15 72 hintmask 1110011100010000 + -70 callsubr + hintmask 1110011010010000 + -81 callgsubr + hintmask 1110011100010000 + -86 callgsubr + hintmask 1111001100010000 + -227 288 rmoveto + 103 69 381 callgsubr + -69 29 34 -100 88 rlineto + -68 hlineto + -100 -88 rlineto + hintmask 1110100100100000 + 238 callgsubr + hintmask 1110011001010000 + 170 callsubr + hintmask 1110100100100000 + 222 callgsubr + + + -31 272 callsubr + 4 callsubr + 136 46 hstem + 90 83 70 110 -36 callsubr + 88 311 callgsubr + 156 -931 -105 callsubr + + + -83 272 callsubr + 45 callgsubr + 158 46 hstem + 90 83 46 110 -28 callsubr + 62 309 callsubr + 158 -815 -105 callsubr + + + -62 39 callgsubr + 86 -1 callsubr + 183 59 hstemhm + 46 80 -80 81 82 110 67 72 hintmask 1111110110000000 + -70 callsubr + hintmask 1111101110000000 + -81 callgsubr + hintmask 1111110110000000 + -86 callgsubr + -277 318 -58 callsubr + 41 -946 -105 callsubr + + + 124 callsubr + 188 48 hstemhm + 90 83 -26 64 hintmask 11110000 + 90 hmoveto + 83 656 -83 hlineto + 10 42 rmoveto + hintmask 11101000 + -78 callsubr + endchar + + + 257 callsubr + 168 48 hstemhm + 130 83 -26 64 hintmask 11010000 + 32 callsubr + 94 627 rmoveto + hintmask 11101000 + -78 callsubr + endchar + + + 160 callsubr + 210 48 hstemhm + 90 83 -27 64 hintmask 11110000 + 90 hmoveto + 83 518 -83 hlineto + 9 64 rmoveto + hintmask 11101000 + -78 callsubr + endchar + + + 180 callsubr + 240 54 hstemhm + 82 82 -25 65 hintmask 11110000 + 286 callsubr + 10 86 rmoveto + hintmask 11101000 + -87 callgsubr + + + -295 462 callgsubr + 77 110 -97 83 hintmask 11101000 + 90 hmoveto + 83 656 -83 hlineto + hintmask 11110000 + 42 -862 -105 callsubr + + + -215 272 callsubr + 342 callsubr + hstemhm + 118 110 -98 83 hintmask 01101000 + 32 callsubr + hintmask 11110000 + 127 -277 -105 callsubr + + + -295 181 callgsubr + 518 -20 hstemhm + 76 110 -96 421 callgsubr + -724 -105 callsubr + + + -312 181 callgsubr + 486 -20 120 108 hstemhm + 68 110 -109 483 callgsubr + hintmask 11110010 + 286 callsubr + hintmask 11110100 + 42 100 188 callgsubr + hintmask 11111000 + -1 -792 -105 callsubr + + + 106 39 callgsubr + 86 219 callgsubr + hstem + 52 86 139 110 139 -103 callsubr + -267 vmoveto + -106 callsubr + + + 31 39 callgsubr + 86 251 callsubr + hstem + 52 86 101 110 103 86 vstem + -102 callsubr + -1 -264 -105 callsubr + + + -16 39 callgsubr + 86 288 callsubr + 85 110 85 85 vstem + -102 callgsubr + -262 vmoveto + -106 callsubr + + + 165 callgsubr + 156 48 hstem + 52 86 209 64 115 -103 callsubr + -32 637 rmoveto + -78 callsubr + endchar + + + 145 callsubr + 178 48 hstem + 52 86 171 64 79 86 vstem + -102 callsubr + -33 524 rmoveto + -78 callsubr + endchar + + + 191 callgsubr + 208 54 hstem + 46 85 155 65 60 85 vstem + -102 callgsubr + -32 516 -43 callsubr + + + 165 callgsubr + 100 47 hstem + 52 86 388 87 vstem + 101 callsubr + 250 38 278 callgsubr + endchar + + + 145 callsubr + 122 47 hstem + 52 86 314 86 vstem + -102 callsubr + -96 525 56 callgsubr + + + 191 callgsubr + 144 54 -26 callgsubr + -105 514 -20 callsubr + 268 33 rmoveto + 101 114 -49 34 -87 -120 rlineto + endchar + + + 165 callgsubr + 100 47 hstem + 52 86 388 87 vstem + 101 callsubr + 8 38 277 callgsubr + endchar + + + 145 callsubr + 122 47 hstem + 52 86 314 86 vstem + -102 callsubr + -96 525 rmoveto + 93 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + 8 38 277 callgsubr + endchar + + + 191 callgsubr + 144 54 -26 callgsubr + -105 514 -20 callsubr + 33 vmoveto + 35 31 -100 117 -48 -36 rlineto + endchar + + + 165 callgsubr + 100 47 49 42 hstemhm + 52 86 343 58 -13 87 hintmask 11101010 + 101 callsubr + hintmask 11111100 + 52 callgsubr + + + 145 callsubr + 122 47 49 42 hstemhm + 52 86 305 58 -49 86 hintmask 11101010 + -102 callsubr + -96 525 rmoveto + 93 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + hintmask 11111100 + 52 callgsubr + + + 191 callgsubr + 144 54 54 41 hstemhm + 46 85 280 85 -76 60 hintmask 11111100 + -102 callgsubr + -105 514 -20 callsubr + hintmask 11111010 + 88 callgsubr + + + 165 callgsubr + 97 404 callsubr + 52 86 49 45 200 45 49 87 522 callgsubr + 39 callsubr + 66 31 callgsubr + 93 -66 34 26 -93 87 267 callsubr + -87 rlineto + hintmask 1111010110000000 + 69 callgsubr + hintmask 1110111010000000 + 94 callsubr + hintmask 1111010110000000 + 258 callsubr + + + 145 callsubr + 119 404 callsubr + 52 86 11 45 200 45 13 86 522 callgsubr + -102 callsubr + -96 525 357 callgsubr + hintmask 1111010110000000 + 69 callgsubr + hintmask 1110111010000000 + 94 callsubr + hintmask 1111010110000000 + 258 callsubr + + + 191 callgsubr + 141 53 18 51 -47 -20 58 454 callgsubr + 3 505 callsubr + 3 85 hintmask 1100111001000000 + -102 callgsubr + hintmask 1110011001000000 + -105 514 rmoveto + 103 69 381 callgsubr + -69 29 34 -100 88 rlineto + -68 hlineto + -100 -88 rlineto + hintmask 1101001010000000 + 238 callgsubr + hintmask 1100110101000000 + 170 callsubr + hintmask 1101001010000000 + 222 callgsubr + + + 106 39 callgsubr + 86 219 callgsubr + 124 46 hstem + 52 86 139 110 139 -103 callsubr + -112 638 301 callsubr + -931 -105 callsubr + + + 31 39 callgsubr + 86 251 callsubr + 146 46 hstem + 52 86 101 110 103 86 vstem + -102 callsubr + -113 525 301 callsubr + -815 -105 callsubr + + + -16 39 callgsubr + 86 230 callgsubr + 183 59 hstem + 46 85 85 110 85 85 vstem + -102 callgsubr + -155 544 -58 callsubr + 41 -946 -105 callsubr + + + 165 callgsubr + hstemhm + 55 86 388 87 -70 74 hintmask 11110000 + 107 callgsubr + hintmask 11101000 + -14 callsubr + hintmask 11110000 + -211 115 -132 165 vhcurveto + 73 vmoveto + -117 -77 106 164 163 77 101 117 117 77 -101 -163 -164 210 callsubr + hvcurveto + -17 636 -89 callsubr + + + -21 callsubr + -18 593 -89 callsubr + + + 65 callsubr + -12 517 -71 callgsubr + + + 165 callgsubr + hstemhm + 55 86 388 87 -70 74 hintmask 11110000 + 107 callgsubr + hintmask 11101000 + -14 callsubr + hintmask 11110000 + -211 115 -132 165 vhcurveto + 73 vmoveto + -117 -77 106 164 163 77 101 117 117 77 -101 -163 -164 210 callsubr + hvcurveto + 17 636 -24 callsubr + + + -21 callsubr + 16 593 -24 callsubr + + + 65 callsubr + 16 517 -26 callsubr + + + 165 callgsubr + 156 48 hstemhm + 55 86 209 64 115 87 -70 74 hintmask 11111100 + 107 callgsubr + hintmask 11111010 + -14 callsubr + hintmask 11111100 + -211 115 -132 165 vhcurveto + -32 710 rmoveto + -78 callsubr + 41 -675 275 callgsubr + + + 145 callsubr + 178 48 hstemhm + 52 86 171 64 79 86 -54 73 hintmask 11111100 + 295 58 rmoveto + -81 callsubr + -70 vmoveto + 366 callgsubr + 95 -32 74 -53 46 hvcurveto + hintmask 11111010 + -9 callsubr + hintmask 11111100 + -168 101 -104 142 vhcurveto + -33 594 rmoveto + -78 callsubr + endchar + + + 191 callgsubr + 208 54 hstemhm + 46 85 157 65 58 85 -44 72 hintmask 11111100 + 271 callsubr + hintmask 11111010 + -8 callgsubr + hintmask 11111100 + -161 106 -93 119 vhcurveto + -30 584 rmoveto + -88 callsubr + 39 -556 rmoveto + -83 -57 75 111 112 57 76 83 84 56 -76 -112 -111 -56 -75 -84 hvcurveto + endchar + + + 165 callgsubr + 41 367 callsubr + 55 86 9 381 callsubr + 25 87 -70 74 hintmask 1101100100000000 + 107 callgsubr + hintmask 1101100010000000 + -14 callsubr + hintmask 1101100100000000 + -211 115 -132 165 vhcurveto + 73 vmoveto + -117 -77 106 164 163 77 101 117 117 77 -101 -163 -164 210 callsubr + hvcurveto + hintmask 1111101100000000 + 67 648 -35 callgsubr + hintmask 1101110100000000 + 33 callsubr + hintmask 1111101100000000 + 136 callgsubr + + + 145 callsubr + 63 367 callsubr + 52 86 -31 381 callsubr + -9 86 -54 73 hintmask 1101100100000000 + 295 58 rmoveto + -81 callsubr + -70 vmoveto + 366 callgsubr + 95 -32 74 -53 46 hvcurveto + hintmask 1101100010000000 + -9 callsubr + hintmask 1101100100000000 + -168 101 -104 142 vhcurveto + hintmask 1111101000000000 + 64 321 callsubr + hintmask 1101010100000000 + 33 callsubr + hintmask 1111101000000000 + 136 callgsubr + + + 368 callsubr + -48 55 236 55 -18 85 -44 72 hintmask 1101001001000000 + 271 callsubr + hintmask 1101001000100000 + -8 callgsubr + hintmask 1101001001000000 + 262 callsubr + hintmask 1110101010000000 + 57 521 208 callsubr + hintmask 1110011010000000 + -41 callgsubr + hintmask 1101000101000000 + -53 callsubr + hintmask 1110101010000000 + 119 callgsubr + + + 106 39 callgsubr + 86 219 callgsubr + hstemhm + 55 86 135 110 143 87 -70 74 hintmask 01110100 + 107 callgsubr + hintmask 01110010 + -14 callsubr + hintmask 01110100 + -211 115 -132 165 vhcurveto + hintmask 11111100 + -4 344 callgsubr + 4 267 275 callgsubr + + + 31 39 callgsubr + 86 251 callsubr + hstemhm + 52 86 102 110 102 86 -54 73 hintmask 11111100 + 295 -206 188 callgsubr + 264 -75 callgsubr + -70 vmoveto + 366 callgsubr + 95 -32 74 -53 46 hvcurveto + hintmask 11111010 + -9 callsubr + hintmask 11111100 + -168 101 -104 142 vhcurveto + endchar + + + -16 39 callgsubr + 86 230 callgsubr + hstemhm + 46 85 87 110 83 85 -44 72 hintmask 11110100 + 271 callsubr + hintmask 11110010 + -8 callgsubr + hintmask 11110100 + -161 106 -93 119 vhcurveto + hintmask 11111100 + 2 344 callgsubr + -2 300 callgsubr + endchar + + + 87 39 callgsubr + 86 297 callgsubr + hstem + 87 83 97 110 101 80 vstem + -92 callsubr + -1 344 callgsubr + endchar + + + 25 39 callgsubr + 86 410 callsubr + hstem + 87 83 67 110 70 -33 callsubr + -194 vmoveto + -106 callsubr + + + -14 39 callgsubr + 86 393 callsubr + 61 110 51 -18 callgsubr + hintmask 11011010 + 307 callsubr + hintmask 11011001 + 43 callsubr + hintmask 10111001 + 7 -76 rlineto + hintmask 10111010 + 408 callgsubr + hintmask 11011010 + -77 callsubr + hintmask 11011110 + 50 344 callgsubr + endchar + + + 214 callgsubr + 188 48 hstem + 87 83 167 64 77 80 vstem + -92 callsubr + -33 710 rmoveto + -78 callsubr + endchar + + + 226 callgsubr + 210 48 hstem + 87 83 137 64 46 -33 callsubr + -32 594 rmoveto + -78 callsubr + endchar + + + 95 callsubr + 240 54 hstemhm + 75 83 128 65 29 -18 callgsubr + hintmask 10111010 + 307 callsubr + hintmask 10111001 + 43 callsubr + hintmask 01111001 + 7 -76 rlineto + hintmask 01111010 + 408 callgsubr + hintmask 10111010 + -77 callsubr + 15 584 rmoveto + hintmask 10111110 + -87 callgsubr + + + 101 249 callsubr + hstem + 87 83 308 -17 callgsubr + -252 426 -89 callsubr + + + 19 callgsubr + -221 365 -89 callsubr + + + 56 callsubr + 32 585 -71 callgsubr + + + 101 249 callsubr + hstem + 87 83 308 -17 callgsubr + -218 426 -24 callsubr + + + 19 callgsubr + -187 365 -24 callsubr + + + 56 callsubr + 60 585 -26 callsubr + + + 101 249 callsubr + 188 48 hstem + 87 83 168 64 76 -17 callgsubr + -267 427 rmoveto + -78 callsubr + endchar + + + 39 -12 70 424 36 190 48 hstem + 87 83 137 64 46 79 42 73 vstem + -62 callsubr + -236 366 rmoveto + -78 callsubr + endchar + + + 95 callsubr + 240 54 hstemhm + 75 83 127 65 30 429 callsubr + hintmask 1011101000000000 + 307 callsubr + hintmask 1011100100000000 + 43 callsubr + hintmask 0111100100000000 + 7 -76 rlineto + hintmask 0111101000000000 + 68 455 hlineto + hintmask 1011101010000000 + 48 callgsubr + hintmask 1011101000000000 + 120 callsubr + 14 584 rmoveto + hintmask 1011111000000000 + -87 callgsubr + + + 101 249 callsubr + 73 367 callsubr + 87 83 -24 24 -24 381 callsubr + -22 80 43 73 hintmask 1101100011000000 + -61 callgsubr + hintmask 1111100101000000 + -160 438 -35 callgsubr + hintmask 1101010011000000 + -60 -38 -47 -76 -4 hvcurveto + hintmask 1101001011000000 + 70 callgsubr + hintmask 1111100101000000 + 136 callgsubr + + + 39 -12 70 424 36 0 -20 95 367 callsubr + 87 83 -55 55 -55 381 callsubr + -52 79 42 73 hintmask 1101110001100000 + -62 callsubr + -129 377 rmoveto + hintmask 1011110010100000 + -66 callgsubr + hintmask 1010101001100000 + -60 -38 -47 -76 -4 hvcurveto + hintmask 1010100101100000 + 70 callgsubr + hintmask 1101110001100000 + 136 callgsubr + + + 95 callsubr + 111 152 callsubr + 75 83 -65 55 232 82 -78 55 -48.5 71.5 23 73 hintmask 1010100101000000 + 307 callsubr + hintmask 1010100100010000 + 43 callsubr + hintmask 0110100100010000 + 7 -76 rlineto + hintmask 0110100101000000 + 68 455 hlineto + hintmask 1010100101001000 + 48 callgsubr + hintmask 1010100101000000 + 120 callsubr + hintmask 1011010100100000 + 114 589 208 callsubr + hintmask 1011001100100000 + -41 callgsubr + hintmask 1010100011000000 + -53 callsubr + hintmask 1011010100100000 + 119 callgsubr + + + 101 39 callgsubr + 86 297 callgsubr + hstem + 87 83 97 110 101 -17 callgsubr + -236 -477 -105 callsubr + + + 39 39 callgsubr + 86 70 424 36 hstem + 87 83 67 110 70 79 42 73 vstem + -62 callsubr + -204 -422 -105 callsubr + + + -14 39 callgsubr + 86 393 callsubr + 70 110 42 429 callsubr + hintmask 1101101000000000 + 307 callsubr + hintmask 1101100100000000 + 43 callsubr + hintmask 1011100100000000 + 7 -76 rlineto + hintmask 1011101000000000 + 68 455 hlineto + hintmask 1101101010000000 + 48 callgsubr + hintmask 1101101000000000 + 120 callsubr + hintmask 1101111000000000 + 59 344 callgsubr + endchar + + + -82 462 callgsubr + 185 110 -99 185 callsubr + 44 -460 -105 callsubr + + + -143 181 callgsubr + 518 -20 hstemhm + 151 110 -95 83 hintmask 11101000 + 11 callsubr + hintmask 11110000 + 40 -402 -105 callsubr + + + -91 -209 68 -61 108 580 -20 hstemhm + 337 110 hintmask 10110000 + -90 callgsubr + hintmask 01110000 + 302 7 -105 callsubr + + + -82 161 callgsubr + 188 48 hstemhm + 196 84 -27 64 hintmask 11110000 + -63 callgsubr + 10 444 rmoveto + hintmask 11101000 + -78 callsubr + endchar + + + 287 callsubr + 210 48 hstemhm + 166 83 -26 64 hintmask 11110000 + 11 callsubr + 10 386 rmoveto + hintmask 11101000 + -78 callsubr + endchar + + + 316 callgsubr + 240 54 hstem + 258 65 -18 callsubr + 121 781 -43 callsubr + + + -82 161 callgsubr + 73 367 callsubr + 61 56 79 84 79 56 hintmask 11010100 + -63 callgsubr + hintmask 11110110 + 117 455 93 callgsubr + + + 287 callsubr + 95 367 callsubr + 31 470 callsubr + 11 callsubr + hintmask 11110110 + 117 397 93 callgsubr + + + 316 callgsubr + 111 152 callsubr + 70 55 236 55 hintmask 11010011 + -90 callgsubr + hintmask 11101011 + 225 786 208 callsubr + hintmask 11100111 + -41 callgsubr + hintmask 11010011 + -53 callsubr + hintmask 11101011 + 119 callgsubr + + + 152 callgsubr + 250 54 hstemhm + 46 85 168 65 23 65 hintmask 11011100 + 233 -12 rmoveto + hintmask 10111110 + 63 51 33 66 261 callgsubr + -68 38 -31 58 29 20 7 6 14 vhcurveto + -12 63 167 callgsubr + -11 hhcurveto + -26 -22 18 33 89 35 162 26 128 hvcurveto + -81 hlineto + -21 -115 rlineto + -2 hlineto + hintmask 11011110 + 92 -28 -62 35 -60 hhcurveto + -112 -101 -97 -167 hvcurveto + hintmask 11011100 + -159 76 -87 111 vhcurveto + -93 callgsubr + 2 525 -43 callsubr + + + 152 callgsubr + 240 454 callgsubr + 73 65 118 65 hintmask 11011110 + -98 callsubr + hintmask 10111110 + -56 callgsubr + hintmask 11011110 + -101 callsubr + 66 517 -54 callsubr + + + 152 callgsubr + 239 454 callgsubr + 70 60 126 65 hintmask 11011110 + -98 callsubr + hintmask 10111110 + -56 callgsubr + hintmask 11011110 + -101 callsubr + -86 520 -11 callgsubr + + + 152 callgsubr + 239 454 callgsubr + -9 60 205 60 callsubr + -31 520 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + 152 callgsubr + 239 454 callgsubr + 70 60 126 65 hintmask 11011110 + -98 callsubr + hintmask 10111110 + -56 callgsubr + hintmask 11011110 + -101 callsubr + -86 520 109 callsubr + + + 152 callgsubr + 239 454 callgsubr + 1 60 195 60 callsubr + -21 520 -64 callsubr + + + 320 callsubr + 101 60 27 47 -38 65 hintmask 1100011100010000 + -98 callsubr + hintmask 1010011100010000 + -56 callgsubr + hintmask 1100011100010000 + -101 callsubr + hintmask 1100100100100000 + 99 658 -42 callsubr + hintmask 1100011110010000 + -56 callsubr + hintmask 1100100100100000 + 166 callgsubr + hintmask 1101001101010000 + -43 callgsubr + + + 320 callsubr + 27 60 101 47 -38 65 hintmask 1100011100010000 + -98 callsubr + hintmask 1010011100010000 + -56 callgsubr + hintmask 1100011100010000 + -101 callsubr + hintmask 1101001101010000 + 61 505 -40 callgsubr + hintmask 1100100100100000 + 38 callsubr + hintmask 1100011110010000 + -56 callsubr + hintmask 1100100100100000 + 222 callgsubr + + + 22 27 callgsubr + -38 47 hstemhm + 77 64 hintmask 11011000 + 240 22 callsubr + -232 -195 rmoveto + hintmask 11011000 + -25 callgsubr + endchar + + + 15 27 callgsubr + 479 callsubr + hintmask 11011000 + 232 22 callsubr + -156 403 callgsubr + hintmask 11011000 + 6 callgsubr + hintmask 11101000 + 305 callgsubr + + + 156 490 callgsubr + hstemhm + 55 60 hintmask 11011000 + 373 22 callsubr + -371 -192 rmoveto + hintmask 11011000 + 115 callgsubr + + + 152 490 callgsubr + hstemhm + -13 60 hintmask 11011000 + 369 22 callsubr + -313 266 callgsubr + hintmask 11011000 + -48 callgsubr + hintmask 11101000 + 26 callsubr + endchar + + + 151 490 callgsubr + -9 -20 hstemhm + 55 60 hintmask 11001100 + 369 367 rmoveto + hintmask 11100100 + -107 callsubr + -367 -192 rmoveto + hintmask 11010100 + 16 callgsubr + hintmask 11001100 + 125 callgsubr + rlineto + endchar + + + 147 490 callgsubr + -9 -20 hstemhm + -13 60 hintmask 11001100 + 365 367 rmoveto + hintmask 11100100 + -107 callsubr + -309 266 callgsubr + hintmask 11010100 + -48 callgsubr + hintmask 11100100 + 265 callgsubr + hintmask 11001100 + 125 callgsubr + rlineto + endchar + + + 55 21 343 callsubr + 83 59 10 42 hintmask 1100100111000000 + 67 439 rmoveto + hintmask 1110100111000000 + 4 callgsubr + 213 -105 rmoveto + hintmask 1101000011000000 + -107 callsubr + hintmask 1100100111100000 + 506 callgsubr + hintmask 1100001011100000 + 182 callgsubr + hintmask 1100100111100000 + 123 callsubr + hintmask 1100010011000000 + -50 callsubr + hintmask 1100100111100000 + 239 callsubr + endchar + + + 55 21 343 callsubr + 9 60 83 42 hintmask 1110100101100000 + 121 439 -28 callgsubr + 151 -72 rmoveto + hintmask 1101000001100000 + -107 callsubr + hintmask 1100100101100000 + 506 callgsubr + hintmask 1100001001100000 + 182 callgsubr + hintmask 1100100101100000 + 123 callsubr + hintmask 1100010011100000 + -50 callsubr + hintmask 1100100101100000 + 239 callsubr + endchar + + + 160 callgsubr + 208 54 479 callgsubr + 110 65 hintmask 11111010 + -69 callgsubr + hintmask 11110110 + -52 callgsubr + hintmask 11111010 + 189 callgsubr + -36 584 -43 callsubr + + + 160 callgsubr + 208 51 479 callgsubr + 15 65 hintmask 11111010 + -69 callgsubr + hintmask 11110110 + -52 callgsubr + hintmask 11111010 + 189 callgsubr + 28 586 -54 callsubr + + + 160 callgsubr + 207 51 479 callgsubr + 12 60 hintmask 11111010 + -69 callgsubr + hintmask 11110110 + -52 callgsubr + hintmask 11111010 + 189 callgsubr + -124 589 -11 callgsubr + + + 160 callgsubr + 207 51 479 callgsubr + -67 60 hintmask 11111000 + -69 callgsubr + hintmask 11110100 + -52 callgsubr + hintmask 11111000 + 189 callgsubr + hintmask 11110010 + -69 589 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + 160 callgsubr + 207 51 479 callgsubr + 12 60 hintmask 11111010 + -69 callgsubr + hintmask 11110110 + -52 callgsubr + hintmask 11111010 + 189 callgsubr + -124 589 109 callsubr + + + 160 callgsubr + 207 51 479 callgsubr + -57 60 hintmask 11111000 + -69 callgsubr + hintmask 11110100 + -52 callgsubr + hintmask 11111000 + 189 callgsubr + hintmask 11110010 + -59 589 -64 callsubr + + + 87 10 callgsubr + -38 47 hstemhm + 71 64 73 83 hintmask 11101100 + 208 -75 callsubr + -184 -195 rmoveto + hintmask 11011100 + -25 callgsubr + endchar + + + 87 10 callgsubr + -38 407 callgsubr + 157 83 hintmask 11100110 + 208 -75 callsubr + -110 403 callgsubr + hintmask 11010110 + -31 12 -25 18 36 vvcurveto + 31 27 20 56 2 vhcurveto + hintmask 11001110 + -9 47 rlineto + -87 -2 -51 -31 -58 vvcurveto + hintmask 11100110 + 305 callgsubr + + + 206 10 callgsubr + -35 47 hstemhm + 55 60 212 83 hintmask 11101100 + 327 -75 callsubr + -303 -192 rmoveto + hintmask 11011100 + 115 callgsubr + + + 203 10 callgsubr + -35 47 hstemhm + -13 60 277 83 hintmask 11101100 + 324 -75 callsubr + -246 266 callgsubr + hintmask 11011100 + -48 callgsubr + hintmask 11101100 + 26 callsubr + endchar + + + 202 10 callgsubr + -35 47 -9 -20 hstemhm + 55 60 208 83 hintmask 11100110 + 323 -75 callsubr + -299 -192 rmoveto + hintmask 11010110 + 16 callgsubr + hintmask 11001110 + 125 callgsubr + rlineto + endchar + + + 198 10 callgsubr + -35 47 -9 -20 hstemhm + -13 60 272 83 hintmask 11100110 + 319 -75 callsubr + -241 266 callgsubr + hintmask 11010110 + -48 callgsubr + hintmask 11100110 + 265 callgsubr + hintmask 11001110 + 125 callgsubr + rlineto + endchar + + + -17 21 214 callsubr + 240 54 -79 callsubr + 142 65 17 77 hintmask 11010101 + -57 callgsubr + hintmask 11011001 + 33 callgsubr + hintmask 10111001 + -7 101 rlineto + hintmask 10110101 + -49 callgsubr + hintmask 11010101 + -76 callgsubr + -123 751 rmoveto + hintmask 11010111 + -87 callgsubr + + + -17 21 214 callsubr + 240 111 callgsubr + 47 65 112 77 hintmask 11010111 + -57 callgsubr + hintmask 11011011 + 33 callgsubr + hintmask 10111011 + -7 101 rlineto + hintmask 10110111 + -49 callgsubr + hintmask 11010111 + -76 callgsubr + -59 753 -54 callsubr + + + -17 21 35 callgsubr + 44 60 120 77 hintmask 11010111 + -57 callgsubr + hintmask 11011011 + 33 callgsubr + hintmask 10111011 + -7 101 rlineto + hintmask 10110111 + -49 callgsubr + hintmask 11010111 + -76 callgsubr + -211 756 -11 callgsubr + + + -17 21 35 callgsubr + -35 60 199 77 hintmask 11010101 + -57 callgsubr + hintmask 11011001 + 33 callgsubr + hintmask 10111001 + -7 101 rlineto + hintmask 10110101 + -49 callgsubr + hintmask 11010101 + -76 callgsubr + hintmask 11010011 + -156 756 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + -17 21 35 callgsubr + 44 60 120 77 hintmask 11010111 + -57 callgsubr + hintmask 11011011 + 33 callgsubr + hintmask 10111011 + -7 101 rlineto + hintmask 10110111 + -49 callgsubr + hintmask 11010111 + -76 callgsubr + -211 756 109 callsubr + + + -17 21 35 callgsubr + -25 60 189 77 hintmask 11010101 + -57 callgsubr + hintmask 11011001 + 33 callgsubr + hintmask 10111001 + -7 101 rlineto + hintmask 10110101 + -49 callgsubr + hintmask 11010101 + -76 callgsubr + hintmask 11010011 + -146 756 -64 callsubr + + + 250 callsubr + 101 60 27 47 -44 77 hintmask 1100011010001000 + -57 callgsubr + hintmask 1100011100001000 + 33 callgsubr + hintmask 1010011100001000 + -7 101 rlineto + hintmask 1010011010001000 + -49 callgsubr + hintmask 1100011010001000 + -76 callgsubr + hintmask 1100100010010000 + -26 894 -42 callsubr + hintmask 1100011001001000 + -56 callsubr + hintmask 1100100010010000 + 166 callgsubr + hintmask 1101001010101000 + -43 callgsubr + + + 250 callsubr + 27 60 101 47 -44 77 hintmask 1100011010001000 + -57 callgsubr + hintmask 1100011100001000 + 33 callgsubr + hintmask 1010011100001000 + -7 101 rlineto + hintmask 1010011010001000 + -49 callgsubr + hintmask 1100011010001000 + -76 callgsubr + hintmask 1101001010101000 + -64 741 -40 callgsubr + hintmask 1100100010010000 + 38 callsubr + hintmask 1100011001001000 + -56 callsubr + hintmask 1100100010010000 + 222 callgsubr + + + 212 21 268 callgsubr + 237 47 -9 -20 hstemhm + 71 64 73 83 305 84 hintmask 11101110 + 332 callgsubr + hintmask 11011110 + -19 callgsubr + vlineto + -184 -195 rmoveto + hintmask 11101110 + -25 callgsubr + endchar + + + 212 21 268 callgsubr + 237 407 callgsubr + 157 83 305 84 hintmask 11011110 + 332 callgsubr + hintmask 11101110 + -19 callgsubr + vlineto + -110 403 callgsubr + hintmask 11011110 + 6 callgsubr + hintmask 11101110 + 305 callgsubr + + + 331 376 callsubr + hstemhm + 55 60 212 83 305 84 hintmask 11011110 + 327 -1 callgsubr + -303 -192 rmoveto + hintmask 11101110 + 115 callgsubr + + + 327 376 callsubr + hstemhm + -13 60 277 83 305 84 hintmask 11011110 + 324 -1 callgsubr + -246 266 callgsubr + hintmask 11101110 + -48 callgsubr + hintmask 11011110 + 26 callsubr + endchar + + + 327 376 callsubr + 23 -20 hstemhm + 55 60 208 83 305 84 hintmask 11001111 + 323 98 callgsubr + hintmask 11010111 + -19 callgsubr + vlineto + -299 -192 rmoveto + hintmask 11100111 + 16 callgsubr + hintmask 11001111 + 125 callgsubr + rlineto + endchar + + + 323 376 callsubr + 23 -20 hstemhm + -13 60 272 83 305 84 hintmask 11001111 + 319 98 callgsubr + hintmask 11010111 + -19 callgsubr + vlineto + -241 266 callgsubr + hintmask 11100111 + -48 callgsubr + hintmask 11010111 + 265 callgsubr + hintmask 11001111 + 125 callgsubr + rlineto + endchar + + + 282 21 172 callgsubr + 83 59 10 42 66 83 305 84 hintmask 1101000100011000 + 278 98 callgsubr + hintmask 1100010000011000 + -19 callgsubr + vlineto + hintmask 1101000100111000 + -135 -64 rmoveto + hintmask 1100001000111000 + 182 callgsubr + hintmask 1101000100111000 + 123 callsubr + hintmask 1100100010011000 + -50 callsubr + hintmask 1101000100111000 + 239 callsubr + hintmask 1111000101011000 + -76 -153 rmoveto + 4 callgsubr + endchar + + + 282 21 172 callgsubr + 9 60 83 42 66 83 305 84 hintmask 1101000100011000 + 278 98 callgsubr + hintmask 1100010000011000 + -19 callgsubr + vlineto + hintmask 1101000100111000 + -135 -64 rmoveto + hintmask 1100001000111000 + 182 callgsubr + hintmask 1101000100111000 + 123 callsubr + hintmask 1100100010011000 + -50 callsubr + hintmask 1101000100111000 + 239 callsubr + hintmask 1111000101011000 + -22 -153 -28 callgsubr + endchar + + + 392 callsubr + 250 54 hstemhm + 82 77 -20 65 hintmask 10111000 + -97 callsubr + -83 594 rmoveto + hintmask 01110100 + -87 callgsubr + + + 392 callsubr + 240 51 hstemhm + 44 65 -27 77 hintmask 10110100 + -97 callsubr + hintmask 01111000 + -19 586 -54 callsubr + + + 80 callsubr + 195 -56 rmoveto + 50 10 -39 201 -74 -14 rlineto + endchar + + + 467 callsubr + -38 60 60 77 vstem + -97 callsubr + -116 589 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + 80 callsubr + 192 -56 rmoveto + 66 197 -74 14 -42 -201 rlineto + endchar + + + 467 callsubr + -28 60 50 77 vstem + -97 callsubr + -106 589 -64 callsubr + + + 392 callsubr + 190 116 callsubr + -17 47 52 77 -28 60 27 47 hintmask 1010100010100000 + -97 callsubr + 14 358 callgsubr + hintmask 0110011110000000 + -56 callsubr + hintmask 1010100010100000 + 166 callgsubr + hintmask 0111001001000000 + -43 callgsubr + + + 392 callsubr + 190 116 callsubr + -17 47 27 60 -35 77 59 47 hintmask 1010011001000000 + -97 callsubr + hintmask 0111001010000000 + -24 574 -40 callgsubr + hintmask 0110100001100000 + 38 callsubr + hintmask 0110011101000000 + -56 callsubr + hintmask 0110100001100000 + 222 callgsubr + + + -177 21 -21 618 47 -9 -20 hstemhm + 71 64 73 83 hintmask 11011000 + 208 hmoveto + 83 hlineto + hintmask 10111000 + 656 -83 vlineto + -184 -195 rmoveto + hintmask 11011000 + -25 callgsubr + endchar + + + -177 21 -21 618 407 callgsubr + 157 83 hintmask 10111000 + 208 hmoveto + 83 hlineto + hintmask 11011000 + 656 -83 vlineto + -110 403 callgsubr + hintmask 10111000 + 6 callgsubr + hintmask 11011000 + 305 callgsubr + + + -58 21 -21 621 47 -12 -20 hstemhm + 55 60 212 83 hintmask 10111000 + 327 hmoveto + 83 656 -83 hlineto + -303 -192 rmoveto + hintmask 11011000 + 115 callgsubr + + + 524 callsubr + 621 47 -12 -20 hstemhm + -13 60 277 83 hintmask 10111000 + 324 hmoveto + 83 656 -83 hlineto + -246 266 callgsubr + hintmask 11011000 + -48 callgsubr + hintmask 10111000 + 26 callsubr + endchar + + + -62 21 -21 621 47 -12 -20 23 -20 hstemhm + 55 60 208 83 hintmask 10011100 + 323 hmoveto + 83 hlineto + hintmask 10101100 + 656 -83 vlineto + -299 -192 rmoveto + hintmask 11001100 + 16 callgsubr + hintmask 10011100 + 125 callgsubr + rlineto + endchar + + + -66 21 -21 621 47 -12 -20 23 -20 hstemhm + -13 60 272 83 hintmask 10011100 + 319 hmoveto + 83 hlineto + hintmask 10101100 + 656 -83 vlineto + -241 266 callgsubr + hintmask 11001100 + -48 callgsubr + hintmask 10101100 + 265 callgsubr + hintmask 10011100 + 125 callgsubr + rlineto + endchar + + + -107 21 -21 533 236 callgsubr + 83 59 10 42 66 83 hintmask 1010001000100000 + 278 hmoveto + 83 hlineto + hintmask 1000100000100000 + 656 -83 vlineto + hintmask 1010001001100000 + -135 -64 rmoveto + hintmask 1000010001100000 + 182 callgsubr + hintmask 1010001001100000 + 123 callsubr + hintmask 1001000100100000 + -50 callsubr + hintmask 1010001001100000 + 239 callsubr + hintmask 1110001010100000 + -76 -153 rmoveto + 4 callgsubr + endchar + + + -107 21 -21 533 236 callgsubr + 9 60 83 42 66 83 hintmask 1010001000100000 + 278 hmoveto + 83 hlineto + hintmask 1000100000100000 + 656 -83 vlineto + hintmask 1010001001100000 + -135 -64 rmoveto + hintmask 1000010001100000 + 182 callgsubr + hintmask 1010001001100000 + 123 callsubr + hintmask 1001000100100000 + -50 callsubr + hintmask 1010001001100000 + 239 callsubr + hintmask 1110001010100000 + -22 -153 -28 callgsubr + endchar + + + 405 callgsubr + 218 54 hstem + 46 85 153 65 55 -39 callsubr + -30 526 -43 callsubr + + + 405 callgsubr + 208 51 hstem + 46 85 58 65 150 -39 callsubr + 34 518 -54 callsubr + + + 405 callgsubr + 207 51 hstem + 46 85 55 60 158 -39 callsubr + -118 521 -11 callgsubr + + + 405 callgsubr + 207 454 callgsubr + -24 60 237 85 hintmask 11010100 + -68 callgsubr + hintmask 11101100 + -63 521 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + 405 callgsubr + 207 51 hstem + 46 85 55 60 158 -39 callsubr + -118 521 109 callsubr + + + 405 callgsubr + 207 454 callgsubr + -14 60 227 85 hintmask 11010100 + -68 callgsubr + hintmask 11101100 + -53 521 -64 callsubr + + + 203 166 callsubr + -50 47 hstemhm + 71 64 14 86 388 87 hintmask 11001100 + 429 -12 -106 callgsubr + -405 400 rmoveto + hintmask 10111100 + -25 callgsubr + endchar + + + 189 166 callsubr + -50 47 hstemhm + -13 64 84 86 388 87 hintmask 11011100 + 415 -12 -106 callgsubr + -317 400 193 callgsubr + hintmask 10111100 + 6 callgsubr + hintmask 11011100 + 305 callgsubr + + + 326 166 callsubr + -47 47 hstemhm + 55 60 163 86 388 87 hintmask 11011100 + 558 -12 -106 callgsubr + -534 390 callgsubr + hintmask 10111100 + 270 callsubr + + + 328 166 callsubr + -47 47 hstemhm + -13 60 227 86 388 87 hintmask 11011100 + 554 -12 -106 callgsubr + -476 403 328 callgsubr + hintmask 10111100 + -24 14 -19 20 28 vvcurveto + 34 22 20 45 3 vhcurveto + hintmask 11011100 + 246 callgsubr + 26 callsubr + endchar + + + 322 166 callsubr + -47 47 -9 -20 hstemhm + 55 60 153 86 388 87 hintmask 11001110 + 548 -12 -106 callgsubr + -524 390 callgsubr + hintmask 10101110 + 322 callsubr + hintmask 10011110 + 125 callgsubr + rlineto + endchar + + + 318 166 callsubr + -47 47 -9 -20 hstemhm + -13 60 217 86 388 87 hintmask 11001110 + 544 -12 -106 callgsubr + -466 403 328 callgsubr + hintmask 10101110 + -24 14 -19 20 28 vvcurveto + 34 22 20 45 3 vhcurveto + hintmask 11001110 + 246 callgsubr + 265 callgsubr + hintmask 10011110 + 125 callgsubr + rlineto + endchar + + + 108 callgsubr + 238 54 hstemhm + 64 78 117 65 48 83 hintmask 10111110 + -96 callsubr + hintmask 11011110 + -54 callgsubr + hintmask 10111110 + 124 callgsubr + -37 594 -43 callsubr + + + 108 callgsubr + 228 51 hstemhm + 64 78 22 65 143 83 hintmask 10111010 + -96 callsubr + hintmask 11011010 + -54 callgsubr + hintmask 10111010 + 124 callgsubr + hintmask 10111110 + 27 586 -54 callsubr + + + 47 callgsubr + 195 -56 rmoveto + 50 10 -39 201 -74 -14 rlineto + endchar + + + 108 callgsubr + 227 51 hstemhm + 64 78 -60 60 230 83 hintmask 10111010 + -96 callsubr + hintmask 11011010 + -54 callgsubr + hintmask 10111010 + 336 callsubr + -70 589 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + 47 callgsubr + 192 -56 rmoveto + 66 197 -74 14 -42 -201 rlineto + endchar + + + 108 callgsubr + 227 51 hstemhm + 64 78 -50 60 220 83 hintmask 10111010 + -96 callsubr + hintmask 11011010 + -54 callgsubr + hintmask 10111010 + 336 callsubr + -60 589 -64 callsubr + + + 323 callsubr + 101 60 27 47 -13 83 hintmask 1010011100010000 + -96 callsubr + hintmask 1100011100010000 + -54 callgsubr + hintmask 1010011100010000 + 124 callgsubr + hintmask 1010100100100000 + 60 358 callgsubr + hintmask 1010011010010000 + -56 callsubr + hintmask 1010100100100000 + 166 callgsubr + hintmask 1011001101010000 + -43 callgsubr + + + 323 callsubr + 27 60 101 47 -13 83 hintmask 1010011100010000 + -96 callsubr + hintmask 1100011100010000 + -54 callgsubr + hintmask 1010011100010000 + 124 callgsubr + hintmask 1011001101010000 + 22 574 -40 callgsubr + hintmask 1010100100100000 + 38 callsubr + hintmask 1010011010010000 + -56 callsubr + hintmask 1010100100100000 + 222 callgsubr + + + 87 21 -21 618 407 callgsubr + 314 84 hintmask 11011000 + 365 -78 callgsubr + -267 207 193 callgsubr + -31 12 -25 18 36 vvcurveto + 31 27 20 56 2 vhcurveto + hintmask 10111000 + -9 47 rlineto + -87 -2 -51 -31 -58 vvcurveto + hintmask 11011000 + 305 callgsubr + + + 211 21 -21 621 47 -12 -20 hstemhm + -13 60 443 84 hintmask 10111000 + 490 -78 callgsubr + -412 210 328 callgsubr + hintmask 11011000 + -48 callgsubr + hintmask 10111000 + 26 callsubr + endchar + + + 207 21 -21 621 47 -12 -20 23 -20 hstemhm + -13 60 438 84 hintmask 10011100 + 485 249 callgsubr + hintmask 10101100 + -94 callgsubr + -407 210 328 callgsubr + hintmask 11001100 + -48 callgsubr + hintmask 10101100 + 265 callgsubr + hintmask 10011100 + 125 callgsubr + rlineto + endchar + + + 160 21 -21 533 39 20 45 -45 64 -29 45 -10 225 callsubr + 9 60 83 42 226 84 hintmask 1010001000100000 + 438 249 callgsubr + hintmask 1001000000100000 + -94 callgsubr + hintmask 1000100001100000 + -295 338 rmoveto + hintmask 1000010001100000 + 182 callgsubr + hintmask 1010001001100000 + 123 callsubr + hintmask 1000100100100000 + -50 callsubr + hintmask 1000100001100000 + 239 callsubr + hintmask 1110001010100000 + -22 -153 -28 callgsubr + endchar + + + 209 callgsubr + 238 54 hstemhm + 51 79 182 74 -21 65 136 84 hintmask 11111010 + -107 callgsubr + 98 594 rmoveto + hintmask 11110110 + -87 callgsubr + + + 209 callgsubr + 228 51 hstemhm + 51 79 140 65 -23 387 callsubr + hintmask 11110110 + -107 callgsubr + hintmask 11111010 + 162 586 -54 callsubr + + + 143 -12 423 callsubr + -15 387 callsubr + hintmask 11110110 + -107 callgsubr + hintmask 11111010 + 10 589 -11 callgsubr + + + 428 callsubr + 58 60 64 387 callsubr + vstem + -107 callgsubr + 65 589 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + 143 -12 423 callsubr + -15 387 callsubr + hintmask 11110110 + -107 callgsubr + hintmask 11111010 + 10 589 109 callsubr + + + 428 callsubr + 68 60 54 387 callsubr + vstem + -107 callgsubr + 75 589 -64 callsubr + + + 331 callgsubr + 56 74 -29 60 27 47 75 84 hintmask 1100111010010000 + -107 callgsubr + hintmask 1101001010110000 + 195 358 callgsubr + hintmask 1100111110010000 + -56 callsubr + hintmask 1101001010110000 + 166 callgsubr + hintmask 1110011001010000 + -43 callgsubr + + + 331 callgsubr + 27 60 -31 74 58 47 75 84 hintmask 1100111001010000 + -107 callgsubr + hintmask 1110011010010000 + 157 574 -40 callgsubr + hintmask 1101001001110000 + 38 callsubr + hintmask 1100111101010000 + -56 callsubr + hintmask 1101001001110000 + 222 callgsubr + + + 215 480 callgsubr + -50 47 hstemhm + 71 64 7 -38 callsubr + hintmask 1100100001000000 + 142 209 callsubr + hintmask 1100010001000000 + -82 callsubr + hintmask 1100010010000000 + 210 callgsubr + hintmask 1100011101000000 + -95 callsubr + hintmask 1100100001000000 + -131 hlineto + -118 393 rmoveto + hintmask 1011010001000000 + -25 callgsubr + endchar + + + 201 480 callgsubr + -50 47 hstemhm + -13 64 77 -38 callsubr + hintmask 1101100001000000 + 128 209 callsubr + hintmask 1101010001000000 + -82 callsubr + hintmask 1101010010000000 + 210 callgsubr + hintmask 1101011101000000 + -95 callsubr + hintmask 1011100001000000 + -131 hlineto + -30 393 193 callgsubr + 6 callgsubr + 305 callgsubr + + + 342 480 callgsubr + -47 47 hstemhm + 55 60 154 -38 callsubr + hintmask 1101100001000000 + 269 209 callsubr + hintmask 1101010001000000 + -82 callsubr + hintmask 1101010010000000 + 210 callgsubr + hintmask 1101011101000000 + -95 callsubr + hintmask 1101100001000000 + -131 hlineto + -245 223 callsubr + hintmask 1011010001000000 + 270 callsubr + + + 338 480 callgsubr + -47 47 hstemhm + -13 60 218 -38 callsubr + hintmask 1101100001000000 + 265 209 callsubr + hintmask 1101010001000000 + -82 callsubr + hintmask 1101010010000000 + 210 callgsubr + hintmask 1101011101000000 + -95 callsubr + hintmask 1011100001000000 + -131 hlineto + -187 188 callsubr + hintmask 1101010001000000 + 246 callgsubr + hintmask 1011100001000000 + 26 callsubr + endchar + + + 337 480 callgsubr + -47 47 -9 -20 hstemhm + 55 60 149 -38 callsubr + hintmask 1100110000100000 + 264 209 callsubr + hintmask 1100101000100000 + -82 callsubr + hintmask 1100101001000000 + 210 callgsubr + hintmask 1100101110100000 + -95 callsubr + hintmask 1100110000100000 + -131 hlineto + -240 223 callsubr + hintmask 1010101000100000 + 322 callsubr + hintmask 1001101000100000 + 125 callgsubr + rlineto + endchar + + + 333 480 callgsubr + -47 47 -9 -20 hstemhm + -13 60 214 -38 callsubr + hintmask 1100110000100000 + 261 209 callsubr + hintmask 1100101000100000 + -82 callsubr + hintmask 1100101001000000 + 210 callgsubr + hintmask 1100101110100000 + -95 callsubr + hintmask 1010110000100000 + -131 hlineto + -183 188 callsubr + hintmask 1100101000100000 + 246 callgsubr + hintmask 1010110000100000 + 265 callgsubr + hintmask 1001110000100000 + 125 callgsubr + rlineto + endchar + + + 259 0 68 465 39 20 45 -42 73 -41 45 -10 -20 hstemhm + -24 42 83 59 10 42 -26 -38 callsubr + hintmask 1001000001000010 + 186 209 callsubr + hintmask 1001000000100010 + -82 callsubr + hintmask 1001000000100100 + 210 callgsubr + hintmask 1001000000111010 + -95 callsubr + hintmask 1001000001000010 + -131 hlineto + hintmask 1010000010000010 + -43 524 rmoveto + hintmask 1000010010000010 + 182 callgsubr + hintmask 1001000010000010 + -42 6 rlineto + hintmask 1010000010000010 + -25 -2 -12 -6 -16 hhcurveto + hintmask 1000101000100010 + -50 callsubr + hintmask 1010000010000010 + 239 callsubr + hintmask 1101000100100010 + -76 -153 rmoveto + 4 callgsubr + endchar + + + 259 0 68 465 39 20 45 -42 73 -41 45 -10 -20 hstemhm + -24 42 9 60 83 42 -26 -38 callsubr + hintmask 1001000001000010 + 186 209 callsubr + hintmask 1001000000100010 + -82 callsubr + hintmask 1001000000100100 + 210 callgsubr + hintmask 1001000000111010 + -95 callsubr + hintmask 1001000001000010 + -131 hlineto + hintmask 1010000010000010 + -43 524 rmoveto + hintmask 1000010010000010 + 182 callgsubr + hintmask 1001000010000010 + -42 6 rlineto + hintmask 1010000010000010 + -25 -2 -12 -6 -16 hhcurveto + hintmask 1000101000100010 + -50 callsubr + hintmask 1010000010000010 + 239 callsubr + hintmask 1101000100100010 + -22 -153 -28 callgsubr + endchar + + + 152 callgsubr + hstemhm + 46 85 256 65 hintmask 11011000 + -98 callsubr + hintmask 10111000 + -56 callgsubr + hintmask 11011000 + -101 callsubr + 48 516 -26 callsubr + + + 152 callgsubr + hstemhm + 46 85 256 65 hintmask 11011000 + -98 callsubr + hintmask 10111000 + -56 callgsubr + hintmask 11011000 + -101 callsubr + 20 516 -71 callgsubr + + + -62 callgsubr + 10 585 -26 callsubr + + + -62 callgsubr + -18 585 -71 callgsubr + + + -46 callsubr + -77 752 -26 callsubr + + + -46 callsubr + -105 752 -71 callgsubr + + + 25 callgsubr + -37 585 -26 callsubr + + + 25 callgsubr + -65 585 -71 callgsubr + + + 146 callgsubr + 16 517 -26 callsubr + + + 146 callgsubr + -12 517 -71 callgsubr + + + 108 callgsubr + hstemhm + 64 78 230 83 hintmask 10111000 + -96 callsubr + hintmask 11011000 + -54 callgsubr + hintmask 10111000 + 124 callgsubr + 9 585 -26 callsubr + + + 108 callgsubr + hstemhm + 64 78 230 83 hintmask 10111000 + -96 callsubr + hintmask 11011000 + -54 callgsubr + hintmask 10111000 + 124 callgsubr + -19 585 -71 callgsubr + + + 209 callgsubr + hstem + 51 79 182 387 callsubr + vstem + -107 callgsubr + 144 585 -26 callsubr + + + 209 callgsubr + hstem + 51 79 182 387 callsubr + vstem + -107 callgsubr + 116 585 -71 callgsubr + + + 162 callgsubr + 250 54 hstemhm + 46 85 123 62 -17 65 23 65 hintmask 1011011101000000 + -98 callsubr + hintmask 1010111101000000 + -56 callgsubr + hintmask 1011011101000000 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 0111011101000000 + -16 callgsubr + hintmask 1011011101000000 + -3 callgsubr + -79 783 rmoveto + hintmask 1011011011000000 + -87 callgsubr + + + 162 callgsubr + 240 454 callgsubr + 73 65 -15 62 71 65 hintmask 1011011011000000 + -98 callsubr + hintmask 1010111011000000 + -56 callgsubr + hintmask 1011011011000000 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 0111011011000000 + -16 callgsubr + hintmask 1011011011000000 + -3 callgsubr + hintmask 1011011101000000 + -15 775 -54 callsubr + + + 344 callsubr + 70 60 -7 62 71 65 hintmask 1011011011000000 + -98 callsubr + hintmask 1010111011000000 + -56 callgsubr + hintmask 1011011011000000 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 0111011011000000 + -16 callgsubr + hintmask 1011011011000000 + -3 callgsubr + hintmask 1011011101000000 + -167 778 -11 callgsubr + + + 344 callsubr + -9 60 72 62 71 65 hintmask 1011011011000000 + -98 callsubr + hintmask 1010111011000000 + -56 callgsubr + hintmask 1011011011000000 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 0111011011000000 + -16 callgsubr + hintmask 1011011011000000 + -3 callgsubr + hintmask 1011010111000000 + -112 778 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + 344 callsubr + 70 60 -7 62 71 65 hintmask 1011011011000000 + -98 callsubr + hintmask 1010111011000000 + -56 callgsubr + hintmask 1011011011000000 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 0111011011000000 + -16 callgsubr + hintmask 1011011011000000 + -3 callgsubr + hintmask 1011011101000000 + -167 778 109 callsubr + + + 344 callsubr + 1 60 62 62 71 65 hintmask 1011011011000000 + -98 callsubr + hintmask 1010111011000000 + -56 callgsubr + hintmask 1011011011000000 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 0111011011000000 + -16 callgsubr + hintmask 1011011011000000 + -3 callgsubr + hintmask 1011010111000000 + -102 778 -64 callsubr + + + 162 callgsubr + 190 116 callsubr + 46 85 12 47 64 62 -25 60 27 47 -38 65 hintmask 1011000111010010 + -98 callsubr + hintmask 1010100111010010 + -56 callgsubr + hintmask 1011000111010010 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 0111000111010010 + -16 callgsubr + hintmask 1011000111010010 + -3 callgsubr + hintmask 1011001001010100 + 18 358 callsubr + hintmask 1011000111110010 + -56 callsubr + hintmask 1011001001010100 + 166 callgsubr + hintmask 1011010011001010 + -43 callgsubr + + + 162 callgsubr + 190 116 callsubr + 46 85 12 47 27 60 -23 62 62 47 -38 65 hintmask 1011000111001010 + -98 callsubr + hintmask 1010100111001010 + -56 callgsubr + hintmask 1011000111001010 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 0111000111001010 + -16 callgsubr + hintmask 1011000111001010 + -3 callgsubr + hintmask 1011010011010010 + -20 763 -40 callgsubr + hintmask 1011001001001100 + 38 callsubr + hintmask 1011000111101010 + -56 callsubr + hintmask 1011001001001100 + 222 callgsubr + + + 281 256 callsubr + -38 47 hstemhm + 77 64 520 77 hintmask 01101110 + 240 367 rmoveto + hintmask 01110110 + -107 callsubr + -232 -195 rmoveto + hintmask 10101110 + -25 callgsubr + 734 -511 -101 callgsubr + + + 274 256 callsubr + 479 callsubr + 603 77 hintmask 01101110 + 232 367 rmoveto + hintmask 01110110 + -107 callsubr + -156 403 callgsubr + hintmask 01101110 + 6 callgsubr + hintmask 01110110 + 236 callsubr + hintmask 10101110 + 650 -473 -101 callgsubr + + + 414 333 callgsubr + hstemhm + 55 60 679 77 hintmask 01101110 + 373 367 rmoveto + hintmask 01110110 + -107 callsubr + -371 -192 rmoveto + hintmask 10101110 + 28 callsubr + 737 -671 -101 callgsubr + + + 410 333 callgsubr + hstemhm + -13 60 743 77 hintmask 01101110 + 369 367 rmoveto + hintmask 01110110 + -107 callsubr + -313 266 callgsubr + hintmask 01101110 + -48 callgsubr + hintmask 01110110 + 26 callsubr + hintmask 10101110 + 737 -671 -101 callgsubr + + + 410 333 callgsubr + -9 -20 hstemhm + 55 60 675 77 hintmask 01100111 + 369 367 rmoveto + hintmask 01110011 + -107 callsubr + -367 -192 rmoveto + hintmask 01101011 + 16 callgsubr + hintmask 10100111 + 125 callgsubr + rlineto + 704 -682 -101 callgsubr + + + 406 333 callgsubr + -9 -20 hstemhm + -13 60 739 77 hintmask 01100111 + 365 367 rmoveto + hintmask 01110011 + -107 callsubr + -309 266 callgsubr + hintmask 01101011 + -48 callgsubr + hintmask 01110011 + 265 callgsubr + hintmask 10100111 + 125 callgsubr + rlineto + 704 -682 -101 callgsubr + + + 314 -12 68 -35 343 callsubr + 83 59 10 42 482 77 hintmask 0110010010101000 + 67 439 rmoveto + hintmask 0111010010101000 + 4 callgsubr + 213 -105 rmoveto + hintmask 0110100000101000 + -107 callsubr + hintmask 0110010010111000 + 506 callgsubr + hintmask 0110000100111000 + 182 callgsubr + hintmask 0110010010111000 + 123 callsubr + hintmask 0110001001101000 + -50 callsubr + hintmask 0110010010111000 + 239 callsubr + hintmask 1010010010101000 + 645 -604 -101 callgsubr + + + 314 -12 68 -35 343 callsubr + 9 60 83 42 482 77 hintmask 0111010010101000 + 121 439 -28 callgsubr + 151 -72 rmoveto + hintmask 0110100000001000 + -107 callsubr + hintmask 0110010010011000 + 506 callgsubr + hintmask 0110000100011000 + 182 callgsubr + hintmask 0110010010011000 + 123 callsubr + hintmask 0110001001001000 + -50 callsubr + hintmask 0110010010011000 + 239 callsubr + hintmask 1010010010001000 + 645 -604 -101 callgsubr + + + 418 callgsubr + 250 54 -79 callsubr + -79 62 159 65 17 77 hintmask 1011010100100000 + -57 callgsubr + hintmask 1011011000100000 + 33 callgsubr + hintmask 1010111000100000 + -7 101 rlineto + hintmask 1010110100100000 + -49 callgsubr + hintmask 1011010100100000 + -76 callgsubr + hintmask 1011010010100000 + -220 -22 -95 callgsubr + hintmask 0111010010100000 + -16 callgsubr + hintmask 1011010010100000 + -3 callgsubr + 97 783 rmoveto + hintmask 1011010101100000 + -87 callgsubr + + + 418 callgsubr + 240 111 callgsubr + -79 62 64 65 112 77 hintmask 1011010101100000 + -57 callgsubr + hintmask 1011011001100000 + 33 callgsubr + hintmask 1010111001100000 + -7 101 rlineto + hintmask 1010110101100000 + -49 callgsubr + hintmask 1011010101100000 + -76 callgsubr + hintmask 1011010011100000 + -220 -22 -95 callgsubr + hintmask 0111010011100000 + -16 callgsubr + hintmask 1011010011100000 + -3 callgsubr + hintmask 1011010101100000 + 161 775 -54 callsubr + + + -10 callsubr + 195 -56 rmoveto + 50 10 -39 201 -74 -14 rlineto + endchar + + + -17 -201 55 -55 139 83 35 callgsubr + -79 62 -18 60 199 77 hintmask 1011010100100000 + -57 callgsubr + hintmask 1011011000100000 + 33 callgsubr + hintmask 1010111000100000 + -7 101 rlineto + hintmask 1010110100100000 + -49 callgsubr + hintmask 1011010100100000 + -76 callgsubr + hintmask 1011010010100000 + -220 -22 -95 callgsubr + hintmask 0111010010100000 + -16 callgsubr + hintmask 1011010010100000 + -3 callgsubr + hintmask 1011010001100000 + 64 778 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + -10 callsubr + 192 -56 rmoveto + 66 197 -74 14 -42 -201 rlineto + endchar + + + -17 -201 55 -55 139 83 35 callgsubr + -79 62 -8 60 189 77 hintmask 1011010100100000 + -57 callgsubr + hintmask 1011011000100000 + 33 callgsubr + hintmask 1010111000100000 + -7 101 rlineto + hintmask 1010110100100000 + -49 callgsubr + hintmask 1011010100100000 + -76 callgsubr + hintmask 1011010010100000 + -220 -22 -95 callgsubr + hintmask 0111010010100000 + -16 callgsubr + hintmask 1011010010100000 + -3 callgsubr + hintmask 1011010001100000 + 74 778 -64 callsubr + + + 220 callsubr + 101 60 27 47 -44 77 hintmask 1011000110100001 + -57 callgsubr + hintmask 1011000111000001 + 33 callgsubr + hintmask 1010100111000001 + -7 101 rlineto + hintmask 1010100110100001 + -49 callgsubr + hintmask 1011000110100001 + -76 callgsubr + hintmask 1011000110010001 + -220 -22 -95 callgsubr + hintmask 0111000110010001 + -16 callgsubr + hintmask 1011000110010001 + -3 callgsubr + hintmask 1011001000100010 + 194 358 callsubr + hintmask 1011000110001001 + -56 callsubr + hintmask 1011001000100010 + 166 callgsubr + hintmask 1011010010100101 + -43 callgsubr + + + 220 callsubr + 27 60 101 47 -44 77 hintmask 1011000110100001 + -57 callgsubr + hintmask 1011000111000001 + 33 callgsubr + hintmask 1010100111000001 + -7 101 rlineto + hintmask 1010100110100001 + -49 callgsubr + hintmask 1011000110100001 + -76 callgsubr + hintmask 1011000110010001 + -220 -22 -95 callgsubr + hintmask 0111000110010001 + -16 callgsubr + hintmask 1011000110010001 + -3 callgsubr + hintmask 1011010010100101 + 156 763 -40 callgsubr + hintmask 1011001000100010 + 38 callsubr + hintmask 1011000110001001 + -56 callsubr + hintmask 1011001000100010 + 222 callgsubr + + + 470 -12 68 -35 268 callgsubr + 237 47 -9 -20 hstemhm + 71 64 73 475 callsubr + hintmask 0111011110000000 + 332 callgsubr + hintmask 0110111110000000 + -19 callgsubr + vlineto + -184 -195 rmoveto + hintmask 1011011110000000 + -25 callgsubr + 929 -511 -101 callgsubr + + + 470 -12 68 -35 268 callgsubr + 237 407 callgsubr + 157 475 callsubr + hintmask 0110111110000000 + 332 callgsubr + hintmask 0111011110000000 + -19 callgsubr + vlineto + -110 403 callgsubr + hintmask 0110111110000000 + 6 callgsubr + hintmask 0111011110000000 + 236 callsubr + hintmask 1010111110000000 + 846 -473 -101 callgsubr + + + 590 442 callgsubr + hstemhm + 55 60 212 83 305 84 171 77 hintmask 0110111110000000 + 327 -1 callgsubr + -303 -192 rmoveto + hintmask 1011011110000000 + 28 callsubr + 913 -671 -101 callgsubr + + + 586 442 callgsubr + hstemhm + -13 60 277 475 callsubr + hintmask 0110111110000000 + 324 -1 callgsubr + -246 266 callgsubr + hintmask 0111011110000000 + -48 callgsubr + hintmask 0110111110000000 + 26 callsubr + hintmask 1010111110000000 + 913 -671 -101 callgsubr + + + 585 442 callgsubr + 23 -20 hstemhm + 55 60 208 475 callsubr + hintmask 0110011111000000 + 323 98 callgsubr + hintmask 0110101111000000 + -19 callgsubr + vlineto + -299 -192 rmoveto + hintmask 0111001111000000 + 16 callgsubr + hintmask 1010011111000000 + 125 callgsubr + rlineto + 879 -682 -101 callgsubr + + + 582 442 callgsubr + 23 -20 hstemhm + -13 60 272 475 callsubr + hintmask 0110011111000000 + 319 98 callgsubr + hintmask 0110101111000000 + -19 callgsubr + vlineto + -241 266 callgsubr + hintmask 0111001111000000 + -48 callgsubr + hintmask 0110101111000000 + 265 callgsubr + hintmask 1010011111000000 + 125 callgsubr + rlineto + 879 -682 -101 callgsubr + + + 540 -12 68 -35 172 callgsubr + 83 59 10 42 66 475 callsubr + hintmask 0110100010001110 + 278 98 callgsubr + hintmask 0110001000001110 + -19 callgsubr + vlineto + hintmask 0110100010011110 + -135 -64 rmoveto + hintmask 0110000100011110 + 182 callgsubr + hintmask 0110100010011110 + 123 callsubr + hintmask 0110010001001110 + -50 callsubr + hintmask 0110100010011110 + 239 callsubr + hintmask 1011100010101110 + -76 -153 rmoveto + 4 callgsubr + 955 -484 -101 callgsubr + + + 540 -12 68 -35 172 callgsubr + 9 60 83 42 66 475 callsubr + hintmask 0110100010001110 + 278 98 callgsubr + hintmask 0110001000001110 + -19 callgsubr + vlineto + hintmask 0110100010011110 + -135 -64 rmoveto + hintmask 0110000100011110 + 182 callgsubr + hintmask 0110100010011110 + 123 callsubr + hintmask 0110010001001110 + -50 callsubr + hintmask 0110100010011110 + 239 callsubr + hintmask 1011100010101110 + -22 -153 -28 callgsubr + 893 -451 -101 callgsubr + + + 205 callsubr + 238 54 hstemhm + 51 79 181 62 -61 74 -21 65 136 84 hintmask 1011110101000000 + -107 callgsubr + hintmask 1011111001000000 + 168 -189 -95 callgsubr + hintmask 0111111001000000 + -16 callgsubr + hintmask 1011111001000000 + -3 callgsubr + -70 783 rmoveto + hintmask 1011110011000000 + -87 callgsubr + + + 205 callsubr + 228 51 hstemhm + 51 79 140 65 -24 404 callgsubr + hintmask 1011110011000000 + -107 callgsubr + hintmask 1011110101000000 + 168 -189 -95 callgsubr + hintmask 0111110101000000 + -16 callgsubr + hintmask 1011110101000000 + -3 callgsubr + hintmask 1011111001000000 + -6 775 -54 callsubr + + + 180 callgsubr + 137 60 -16 404 callgsubr + hintmask 1011110011000000 + -107 callgsubr + hintmask 1011110101000000 + 168 -189 -95 callgsubr + hintmask 0111110101000000 + -16 callgsubr + hintmask 1011110101000000 + -3 callgsubr + hintmask 1011111001000000 + -158 778 -11 callgsubr + + + 180 callgsubr + 58 60 63 404 callgsubr + hintmask 1011111011000000 + -107 callgsubr + hintmask 1011111101000000 + 168 -189 -95 callgsubr + hintmask 0111111101000000 + -16 callgsubr + hintmask 1011111101000000 + -3 callgsubr + hintmask 1011111011000000 + -103 778 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + 180 callgsubr + 137 60 -16 404 callgsubr + hintmask 1011110011000000 + -107 callgsubr + hintmask 1011110101000000 + 168 -189 -95 callgsubr + hintmask 0111110101000000 + -16 callgsubr + hintmask 1011110101000000 + -3 callgsubr + hintmask 1011111001000000 + -158 778 109 callsubr + + + 180 callgsubr + 68 60 53 404 callgsubr + hintmask 1011111011000000 + -107 callgsubr + hintmask 1011111101000000 + 168 -189 -95 callgsubr + hintmask 0111111101000000 + -16 callgsubr + hintmask 1011111101000000 + -3 callgsubr + hintmask 1011111011000000 + -93 778 -64 callsubr + + + 205 callsubr + 178 116 callsubr + 51 79 79 47 55 62 -61 74 -29 60 27 47 75 84 hintmask 1011001110010010 + -107 callgsubr + hintmask 1011001110100010 + 168 -189 -95 callgsubr + hintmask 0111001110100010 + -16 callgsubr + hintmask 1011001110100010 + -3 callgsubr + hintmask 1011010010010110 + 27 358 callsubr + hintmask 1011001111010010 + -56 callsubr + hintmask 1011010010010110 + 166 callgsubr + hintmask 1011100110001010 + -43 callgsubr + + + 205 callsubr + 178 116 callsubr + 51 79 79 47 27 60 -32 62 -61 74 58 47 75 84 hintmask 1011001110001010 + -107 callgsubr + hintmask 1011001110010010 + 168 -189 -95 callgsubr + hintmask 0111001110010010 + -16 callgsubr + hintmask 1011001110010010 + -3 callgsubr + hintmask 1011100110100010 + -11 763 -40 callgsubr + hintmask 1011010010001110 + 38 callsubr + hintmask 1011001111001010 + -56 callsubr + hintmask 1011010010001110 + 222 callgsubr + + + 473 474 callsubr + -50 47 hstemhm + 71 64 7 356 callsubr + hintmask 0110010000110000 + 142 209 callsubr + hintmask 0110001000110000 + -82 callsubr + hintmask 0110001001010000 + 210 callgsubr + hintmask 0110001110110000 + -95 callsubr + hintmask 0110010000110000 + -131 hlineto + -118 393 rmoveto + hintmask 1001101000110000 + -25 callgsubr + 932 -511 -101 callgsubr + + + 460 474 callsubr + -50 47 hstemhm + -13 64 77 -38 callsubr + 137 77 hintmask 0110110000110000 + 128 209 callsubr + hintmask 0110101000110000 + -82 callsubr + hintmask 0110101001010000 + 210 callgsubr + hintmask 0110101110110000 + -95 callsubr + hintmask 0101110000110000 + -131 hlineto + -30 393 193 callgsubr + 6 callgsubr + 236 callsubr + hintmask 1010101000110000 + 836 -473 -101 callgsubr + + + 600 474 callsubr + -47 47 hstemhm + 55 60 154 356 callsubr + hintmask 0110110000110000 + 269 209 callsubr + hintmask 0110101000110000 + -82 callsubr + hintmask 0110101001010000 + 210 callgsubr + hintmask 0110101110110000 + -95 callsubr + hintmask 0110110000110000 + -131 hlineto + -245 223 callsubr + hintmask 1001101000110000 + 178 callsubr + 923 -671 -101 callgsubr + + + 597 474 callsubr + -47 47 hstemhm + -13 60 218 356 callsubr + hintmask 0110110000110000 + 265 209 callsubr + hintmask 0110101000110000 + -82 callsubr + hintmask 0110101001010000 + 210 callgsubr + hintmask 0110101110110000 + -95 callsubr + hintmask 0101110000110000 + -131 hlineto + -187 188 callsubr + hintmask 0110101000110000 + 246 callgsubr + hintmask 0101110000110000 + 26 callsubr + hintmask 1010101000110000 + 923 -671 -101 callgsubr + + + 596 474 callsubr + -47 47 -9 -20 hstemhm + 55 60 149 -38 callsubr + 137 77 hintmask 0110011000011000 + 264 209 callsubr + hintmask 0110010100011000 + -82 callsubr + hintmask 0110010100101000 + 210 callgsubr + hintmask 0110010111011000 + -95 callsubr + hintmask 0110011000011000 + -131 hlineto + -240 223 callsubr + hintmask 0101010100011000 + 322 callsubr + hintmask 1000110100011000 + 125 callgsubr + rlineto + 890 -682 -101 callgsubr + + + 592 474 callsubr + -47 47 -9 -20 hstemhm + -13 60 214 356 callsubr + hintmask 0110011000011000 + 261 209 callsubr + hintmask 0110010100011000 + -82 callsubr + hintmask 0110010100101000 + 210 callgsubr + hintmask 0110010111011000 + -95 callsubr + hintmask 0101011000011000 + -131 hlineto + -183 188 callsubr + hintmask 0110010100011000 + 246 callgsubr + hintmask 0101011000011000 + 265 callgsubr + hintmask 1000111000011000 + 125 callgsubr + rlineto + 890 -682 -101 callgsubr + + + 520 -12 68 -56 68 465 39 20 45 -42 73 -41 45 -10 -20 hstemhm + -24 42 83 59 10 42 -26 -38 callsubr + 139 77 hintmask 010010000010000110000000 + 186 209 callsubr + hintmask 010010000001000110000000 + -82 callsubr + hintmask 010010000001001010000000 + 210 callgsubr + hintmask 010010000001110110000000 + -95 callsubr + hintmask 010010000010000110000000 + -131 hlineto + hintmask 010100000100000110000000 + -43 524 rmoveto + hintmask 010000100100000110000000 + 182 callgsubr + hintmask 010010000100000110000000 + -42 6 rlineto + hintmask 010100000100000110000000 + -25 -2 -12 -6 -16 hhcurveto + hintmask 010001010001000110000000 + -50 callsubr + hintmask 010100000100000110000000 + 239 callsubr + hintmask 101010001001000110000000 + -76 -153 rmoveto + 4 callgsubr + 935 -484 -101 callgsubr + + + 520 -12 68 -56 68 465 39 20 45 -42 73 -41 45 -10 -20 hstemhm + -24 42 9 60 83 42 -26 -38 callsubr + 139 77 hintmask 010010000010000110000000 + 186 209 callsubr + hintmask 010010000001000110000000 + -82 callsubr + hintmask 010010000001001010000000 + 210 callgsubr + hintmask 010010000001110110000000 + -95 callsubr + hintmask 010010000010000110000000 + -131 hlineto + hintmask 010100000100000110000000 + -43 524 rmoveto + hintmask 010000100100000110000000 + 182 callgsubr + hintmask 010010000100000110000000 + -42 6 rlineto + hintmask 010100000100000110000000 + -25 -2 -12 -6 -16 hhcurveto + hintmask 010001010001000110000000 + -50 callsubr + hintmask 010100000100000110000000 + 239 callsubr + hintmask 101010001001000110000000 + -22 -153 -28 callgsubr + 873 -451 -101 callgsubr + + + 152 callgsubr + 105 55 96 -20 hstemhm + 46 85 -3 51 208 65 -63 51 hintmask 1101110100000000 + -98 callsubr + hintmask 1011110100000000 + -56 callgsubr + hintmask 1101110100000000 + -101 callsubr + hintmask 1101101010000000 + 34 514 -31 callgsubr + + + 152 callgsubr + 135 57 hstemhm + 46 85 20 266 -30 65 callgsubr + hintmask 11011100 + -99 544 -37 callsubr + + + 162 callgsubr + hstemhm + 46 85 123 62 71 65 hintmask 10110111 + -98 callsubr + hintmask 10101111 + -56 callgsubr + hintmask 10110111 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 01110111 + -16 callgsubr + hintmask 10110111 + -3 callgsubr + -33 774 -26 callsubr + + + 162 callgsubr + hstemhm + 46 85 123 62 71 65 hintmask 10110111 + -98 callsubr + hintmask 10101111 + -56 callgsubr + hintmask 10110111 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 01110111 + -16 callgsubr + hintmask 10110111 + -3 callgsubr + endchar + + + 162 callgsubr + hstemhm + 46 85 123 62 71 65 hintmask 10110111 + -98 callsubr + hintmask 10101111 + -56 callgsubr + hintmask 10110111 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 01110111 + -16 callgsubr + hintmask 10110111 + -3 callgsubr + -61 774 -71 callgsubr + + + 152 callgsubr + 111 152 callsubr + 46 85 -20 55 221 65 -50 55 hintmask 1100100101000000 + -98 callsubr + hintmask 1010100101000000 + -56 callgsubr + hintmask 1100100101000000 + -101 callsubr + hintmask 1101010100100000 + 106 520 208 callsubr + hintmask 1101001100100000 + -41 callgsubr + hintmask 1100100011000000 + -53 callsubr + hintmask 1101010100100000 + 119 callgsubr + + + 162 callgsubr + 111 152 callsubr + 46 85 -20 55 88 62 71 65 -50 55 hintmask 1011001001011000 + -98 callsubr + hintmask 1010101001011000 + -56 callgsubr + hintmask 1011001001011000 + -101 callsubr + 81 -258 -95 callgsubr + hintmask 0111001001011000 + -16 callgsubr + hintmask 1011001001011000 + -3 callgsubr + hintmask 1011010101010100 + 25 778 208 callsubr + hintmask 1011010011010100 + -41 callgsubr + hintmask 1011001000111000 + -53 callsubr + hintmask 1011010101010100 + 119 callgsubr + + + 14 callgsubr + 49 53 hstem + 125 453 callsubr + 47 callsubr + -50 8 rlineto + -47 -8 -31 -37 -57 hhcurveto + -57 -31 37 47 -8 hvcurveto + -50 -8 rlineto + -70 8 45 -59 93 hhcurveto + endchar + + + 14 callgsubr + 79 57 hstemhm + 3 538 -404 268 hintmask 11111000 + -104 callsubr + hintmask 11110100 + -88 275 callsubr + + + 8 27 callgsubr + hstem + 3 560 vstem + 225 -103 callgsubr + -194 254 callsubr + + + 8 27 callgsubr + 3 -20 hstemhm + 6 557 hintmask 11011000 + 225 22 callsubr + -186 -192 rmoveto + hintmask 11011000 + 58 callsubr + + + 244 256 callsubr + hstemhm + 624 77 hintmask 01111000 + -104 callsubr + hintmask 10111000 + 493 -668 -101 callgsubr + + + -16 706 54 hstem + 286 65 vstem + 239 572 -43 callsubr + + + -439 618 47 hstem + 71 64 vstem + 24 461 rmoveto + -25 callgsubr + endchar + + + -296 -12 68 hstem + 82 77 vstem + 176 -12 -101 callgsubr + + + -16 706 54 hstem + 286 65 vstem + 239 572 -43 callsubr + + + -16 577 60 24 60 hstemhm + 98 55 236 55 vstemhm + 343 38 callgsubr + + + -16 588 91 28 50 -1 50 hstemhm + 118 474 callgsubr + hintmask 11010010 + 342 81 callsubr + + + -55 callsubr + 143 774 -26 callsubr + + + -55 callsubr + endchar + + + -55 callsubr + 115 774 -71 callgsubr + + + -17 269 callgsubr + -46 55 215 77 -56 55 hintmask 1100100010100000 + -57 callgsubr + hintmask 1100100100100000 + 33 callgsubr + hintmask 1010100100100000 + -7 101 rlineto + hintmask 1010100010100000 + -49 callgsubr + hintmask 1100100010100000 + -76 callgsubr + hintmask 1101010010010000 + -19 756 208 callsubr + hintmask 1101001010010000 + -41 callgsubr + hintmask 1100100001100000 + -53 callsubr + hintmask 1101010010010000 + 119 callgsubr + + + -17 -201 55 -55 139 83 273 callsubr + -79 62 -29 55 215 77 -56 55 hintmask 1011001000100100 + -57 callgsubr + hintmask 1011001001000100 + 33 callgsubr + hintmask 1010101001000100 + -7 101 rlineto + hintmask 1010101000100100 + -49 callgsubr + hintmask 1011001000100100 + -76 callgsubr + hintmask 1011001000010100 + -220 -22 -95 callgsubr + hintmask 0111001000010100 + -16 callgsubr + hintmask 1011001000010100 + -3 callgsubr + hintmask 1011010100100010 + 201 778 208 callsubr + hintmask 1011010010100010 + -41 callgsubr + hintmask 1011001000001100 + -53 callsubr + hintmask 1011010100100010 + 119 callgsubr + + + 33 10 callgsubr + hstem + 154 83 vstem + 154 -75 callsubr + -126 254 callsubr + + + 161 callsubr + + + 486 callsubr + hstem + 154 83 305 84 vstem + 154 -1 callgsubr + -126 254 callsubr + + + 148 callgsubr + + + 352 -12 68 -35 268 callgsubr + 275 -20 hstemhm + 90 475 callsubr + hintmask 01111110 + 57 callgsubr + hintmask 10111110 + 736 -668 -101 callgsubr + + + -16 492 callsubr + 188 60 vstem + 151 577 -11 callgsubr + + + -321 621 47 hstem + 55 60 vstem + 24 464 rmoveto + 115 callgsubr + + + -16 492 callsubr + 188 60 vstem + 151 577 109 callsubr + + + -321 621 47 -9 -20 hstemhm + 55 60 hintmask 01100000 + 24 464 rmoveto + hintmask 10100000 + 16 callgsubr + hintmask 01100000 + 125 callgsubr + rlineto + endchar + + + -16 364 callgsubr + 130 47 101 60 27 47 hintmask 11011100 + 336 715 -42 callsubr + hintmask 10111000 + -56 callsubr + hintmask 11011100 + 166 callgsubr + hintmask 10111000 + -43 callgsubr + + + -370 533 39 20 255 callsubr + 83 59 10 42 hintmask 01001111 + 143 592 rmoveto + hintmask 00010111 + 182 callgsubr + hintmask 01001111 + 123 callsubr + hintmask 00100110 + -50 callsubr + hintmask 01001111 + 239 callsubr + hintmask 11001110 + -76 -153 rmoveto + 4 callgsubr + endchar + + + -296 199 callgsubr + 105 55 96 -20 hstem + -32 51 63 77 70 51 vstem + -97 callsubr + -51 583 -31 callgsubr + + + -296 199 callgsubr + 135 57 hstem + 82 77 vstem + -97 callsubr + -184 613 -37 callsubr + + + 9 callgsubr + 110 -32 rmoveto + 43 10 -41 201 -66 -14 rlineto + 180 -165 rmoveto + 24 18 17 25 25 -18 17 -24 -23 -18 -17 -25 -25 18 -17 23 hvcurveto + endchar + + + 9 callgsubr + 116 -32 rmoveto + 68 197 -66 14 -45 -201 rlineto + 153 22 rmoveto + 24 18 17 25 25 -18 17 -24 -23 -18 -17 -25 -25 18 -17 23 hvcurveto + endchar + + + 392 callsubr + 111 152 callsubr + -49 55 76 77 83 55 hintmask 1011010011000000 + -97 callsubr + 21 589 208 callsubr + hintmask 0111001011000000 + -41 callgsubr + hintmask 0110100110000000 + -53 callsubr + hintmask 1011010011000000 + 119 callgsubr + + + 392 callsubr + 122 518 callgsubr + -29 42 -31 91 9 77 16 91 -31 42 hintmask 1011100001010000 + -97 callsubr + 20 719 213 callgsubr + hintmask 0111011101000000 + 171 callgsubr + hintmask 1011100001010000 + 48 20 -49 70 hhcurveto + hintmask 0111011011100000 + -167 -119 -4 callsubr + + + 124 callsubr + 69 53 hstem + -14 50 54 83 55 50 346 callsubr + 656 -83 hlineto + 42 149 callgsubr + + + 252 callgsubr + + + -231 161 callgsubr + hstem + 154 83 vstem + 154 hmoveto + 83 656 -83 hlineto + -126 254 callsubr + + + 200 callgsubr + + + -16 492 callsubr + 109 60 vstem + 206 577 -91 callsubr + 124 -18 rmoveto + 49 10 -38 201 -75 -14 rlineto + endchar + + + -324 621 47 hstem + -13 60 vstem + 78 464 rmoveto + 12 38 rlineto + -48 callgsubr + 26 callsubr + endchar + + + -16 492 callsubr + 119 60 vstem + 216 577 -64 callsubr + + + -328 621 47 -9 -20 hstemhm + -13 60 hintmask 01100000 + 78 464 328 callgsubr + hintmask 10100000 + -48 callgsubr + hintmask 01100000 + 239 callgsubr + 125 callgsubr + rlineto + endchar + + + -16 364 callgsubr + 130 47 27 60 101 47 hintmask 10101100 + 298 562 -40 callgsubr + hintmask 11001100 + 38 callsubr + hintmask 10111100 + -56 callsubr + hintmask 11001100 + 222 callgsubr + + + -370 533 39 20 255 callsubr + 9 60 83 42 hintmask 01001011 + 143 592 rmoveto + hintmask 00010011 + 182 callgsubr + hintmask 01001011 + 123 callsubr + hintmask 00100111 + -50 callsubr + hintmask 01001011 + 239 callsubr + hintmask 11001011 + -22 -153 -28 callgsubr + endchar + + + 108 callgsubr + 93 55 96 -20 hstemhm + 64 78 -54 494 callgsubr + -28 83 hintmask 1011110010000000 + -96 callsubr + hintmask 1101110010000000 + -54 callgsubr + hintmask 1011110010000000 + 124 callgsubr + hintmask 1011101100000000 + -5 583 -31 callgsubr + + + 108 callgsubr + 123 57 hstemhm + 64 78 -31 266 -5 83 hintmask 10111010 + -96 callsubr + hintmask 11011010 + -54 callgsubr + hintmask 10111010 + 124 callgsubr + hintmask 10110100 + -138 613 -37 callsubr + + + 53 callsubr + 110 -32 rmoveto + 43 10 -41 201 -66 -14 rlineto + 180 -165 rmoveto + 24 18 17 25 25 -18 17 -24 -23 -18 -17 -25 -25 18 -17 23 hvcurveto + endchar + + + 24 callgsubr + + + -9 218 callgsubr + 218 54 509 callgsubr + 151 65 44 126 callgsubr + -26 525 -43 callsubr + + + -9 218 callgsubr + 208 51 509 callgsubr + 56 65 139 126 callgsubr + 38 517 -54 callsubr + + + 108 callgsubr + 99 152 callsubr + 64 78 -71 55 236 55 -45 83 hintmask 1010100100100000 + -96 callsubr + hintmask 1100100100100000 + -54 callgsubr + hintmask 1010100100100000 + 124 callgsubr + hintmask 1011010101000000 + 67 589 208 callsubr + hintmask 1011001101000000 + -41 callgsubr + hintmask 1010100010100000 + -53 callsubr + hintmask 1011010101000000 + 119 callgsubr + + + 108 callgsubr + 110 518 callgsubr + 64 78 -51 474 callgsubr + -25 83 hintmask 1011011100001000 + -96 callsubr + hintmask 1101011100001000 + -54 callgsubr + hintmask 1011011100001000 + 124 callgsubr + hintmask 1011100100010000 + 66 719 213 callgsubr + hintmask 1011011010001000 + 171 callgsubr + hintmask 1011100100010000 + 48 20 -49 70 hhcurveto + hintmask 1011011001100000 + -167 -119 -4 callsubr + + + -82 161 callgsubr + 69 53 hstem + 92 50 54 84 54 50 200 callsubr + 42 451 -44 callsubr + + + -82 161 callgsubr + 99 57 hstemhm + 104 268 -176 185 callsubr + -92 481 59 callgsubr + + + 42 161 callgsubr + hstem + 320 84 vstem + 320 -78 callgsubr + -292 210 rmoveto + 55 419 callgsubr + + + 42 161 callgsubr + 23 -20 hstemhm + 320 84 hintmask 10110000 + 320 249 callgsubr + hintmask 11010000 + -94 callgsubr + -284 210 415 callsubr + + + 126 21 -21 260 68 261 67 479 callsubr + 157 83 267 83 hintmask 11101110 + 208 110 callgsubr + -291 133 193 callgsubr + hintmask 11011110 + 6 callgsubr + hintmask 11101110 + 305 callgsubr + + + -16 595 84 hstem + 116 83 144 83 vstem + 158 595 170 callgsubr + + + -16 595 84 hstem + 116 83 144 83 vstem + 158 168 callgsubr + + + -16 558 212 hstem + 180 124 vstem + 247 430 callsubr + + + -494 464 206 hstem + -22 105 vstem + 28 464 rmoveto + 55 419 callgsubr + + + 205 callsubr + hstemhm + 51 79 181 404 callgsubr + hintmask 10111011 + -107 callgsubr + hintmask 10111101 + 168 -189 -95 callgsubr + hintmask 01111101 + -16 callgsubr + hintmask 10111101 + -3 callgsubr + -24 774 -26 callsubr + + + 205 callsubr + hstemhm + 51 79 181 404 callgsubr + hintmask 10111011 + -107 callgsubr + hintmask 10111101 + 168 -189 -95 callgsubr + hintmask 01111101 + -16 callgsubr + hintmask 10111101 + -3 callgsubr + endchar + + + 205 callsubr + hstemhm + 51 79 181 404 callgsubr + hintmask 10111011 + -107 callgsubr + hintmask 10111101 + 168 -189 -95 callgsubr + hintmask 01111101 + -16 callgsubr + hintmask 10111101 + -3 callgsubr + -52 774 -71 callgsubr + + + 209 callgsubr + 99 152 callsubr + 51 79 47 55 80 74 82 55 43 84 hintmask 1101001111100000 + -107 callgsubr + hintmask 1110101111100000 + 202 589 208 callsubr + hintmask 1110011111100000 + -41 callgsubr + hintmask 1101001111100000 + -53 callsubr + hintmask 1110101111100000 + 119 callgsubr + + + 205 callsubr + 99 152 callsubr + 51 79 47 55 79 62 -61 74 82 55 43 84 hintmask 1011010011011100 + -107 callgsubr + hintmask 1011010011101100 + 168 -189 -95 callgsubr + hintmask 0111010011101100 + -16 callgsubr + hintmask 1011010011101100 + -3 callgsubr + hintmask 1011101011011100 + 34 778 208 callsubr + hintmask 1011100111011100 + -41 callgsubr + hintmask 1011010011011100 + -53 callsubr + hintmask 1011101011011100 + 119 callgsubr + + + 159 166 callsubr + hstem + 105 86 388 87 vstem + 385 -12 -106 callgsubr + -357 403 rmoveto + 55 419 callgsubr + + + 153 166 callsubr + -9 -20 hstemhm + 99 86 388 87 hintmask 11011000 + 379 -12 -106 callgsubr + -343 403 rmoveto + hintmask 10111000 + 58 callsubr + + + 168 480 callgsubr + hstemhm + 95 -38 callsubr + hintmask 11100001 + 95 209 callsubr + hintmask 11010001 + -82 callsubr + hintmask 11010010 + 210 callgsubr + hintmask 11011101 + -95 callsubr + hintmask 11100001 + -131 hlineto + -66 396 rmoveto + 55 419 callgsubr + + + 165 480 callgsubr + -9 -20 hstemhm + 92 -38 callsubr + hintmask 1101000010000000 + 92 209 callsubr + hintmask 1100100010000000 + -82 callsubr + hintmask 1100100100000000 + 210 callgsubr + hintmask 1100111010000000 + -95 callsubr + hintmask 1011000010000000 + -131 hlineto + -60 396 rmoveto + 58 callsubr + + + 377 474 callsubr + hstemhm + 45 -38 callsubr + 138 77 hintmask 0111000011000000 + 45 209 callsubr + hintmask 0110100011000000 + -82 callsubr + hintmask 0110100101000000 + 210 callgsubr + hintmask 0110111011000000 + -95 callsubr + hintmask 0111000011000000 + -131 hlineto + hintmask 1010100011000000 + 807 -80 -101 callgsubr + + + 280 callsubr + + + -494 659 -20 hstem + -19 105 vstem + 36 464 rmoveto + 58 callsubr + + + -16 706 51 hstem + 191 65 vstem + 303 574 -54 callsubr + + + -441 618 47 hstem + -13 64 vstem + 98 461 193 callgsubr + 6 callgsubr + 305 callgsubr + + + -61 endchar + + + -458 endchar + + + -538 endchar + + + endchar + + + 325 callsubr + + + -167 477 callgsubr + 91 58 vstem + 92 -250 rmoveto + 58 1000 -58 hlineto + 149 -1000 rmoveto + 58 1000 -58 hlineto + endchar + + + -438 endchar + + + 270 callgsubr + + + -132 449.5 240 hstem + 82 280 vstem + 82 450 284 callgsubr + 155 -240 284 callgsubr + endchar + + + -309 449.5 240 hstem + 64 103 vstem + 113 449 rmoveto + 54 1 -22 240 -81 -1 15 -91 rlineto + endchar + + + -9 -12 126 hstemhm + 85 229 callsubr + 166.5 229 callsubr + hintmask 10101000 + 116 198 192 callgsubr + hintmask 11001000 + 329 callsubr + 231 210 192 callgsubr + hintmask 10110000 + 329 callsubr + endchar + + + -126 -12 126 503 65 hstemhm + 139 119 -92 59 -59 60 82 77 hintmask 01001100 + 171 198 rmoveto + hintmask 01010100 + 54 hlineto + 147 160 29 151 vvcurveto + 91 -71 66 -108 -72 -61 -32 -54 -46 vhcurveto + 47 -43 rlineto + 44 36 42 20 48 hhcurveto + 70 38 -47 -58 -75 -53 -39 -35 -70 hvcurveto + hintmask 01001100 + 6 139 rlineto + 65 -70 vlineto + 5 -83 rlineto + hintmask 11100100 + 37 -461 rmoveto + 33 27 26 36 38 -27 26 -33 -33 -26 -26 -38 -36 26 -26 33 hvcurveto + endchar + + + -58 568 55 hstem + 12 476 vstem + 12 568 rmoveto + 476 55 -476 hlineto + endchar + + + 5 -233 58 hstem + 0 563 vstem + 282 -233 rmoveto + 129 95 55 74 57 hvcurveto + -35 39 rlineto + -66 -54 -90 -44 -102 hhcurveto + -103 -90 43 67 -54 hvcurveto + -35 -39 rlineto + -74 57 95 -55 130 hhcurveto + endchar + + + 257 -12 126 500 68 hstem + 139 119 39 80 152 119 39 80 vstem + 138 callgsubr + 352 139 callgsubr + + + 121 -12 126 500 68 hstemhm + 139 119 39 80 98 229 callsubr + hintmask 11110100 + 138 callgsubr + 308 210 192 callgsubr + hintmask 11111000 + 329 callsubr + endchar + + + 121 -12 126 500 68 hstemhm + 85 229 callsubr + 214.5 119 39 80 hintmask 11010100 + 116 198 192 callgsubr + hintmask 11101100 + 329 callsubr + 269 139 callgsubr + + + -61 0 74 166 40.5 -40.5 43 60 39.5 -39.5 42 178 75 hstemhm + 86 55 -55 65 195 65 -54.5 54.5 hintmask 1010111010000000 + 135 563 rmoveto + 4 hlineto + 55 -178 rlineto + -47 hlineto + hintmask 1010110110000000 + -61 -385 rmoveto + 65 240 92 hlineto + 84 -240 rlineto + 84 240 72 43 -72 60 72 42 -72 253 -65 -253 -87 hlineto + -89 253 rlineto + -84 -253 hlineto + hintmask 1011010110000000 + -75 -5 rlineto + hintmask 1010110110000000 + -37 75 -60 vlineto + hintmask 1100110110000000 + -75 -5 rlineto + hintmask 1010110101000000 + -38 75 vlineto + 272 -166 rmoveto + -51 166 rlineto + 44 hlineto + 11 -166 rlineto + -211 247 rmoveto + -1 22 rlineto + 57 -1 hlineto + 21 -59 rlineto + -77 hlineto + hintmask 1010110110000000 + 139 14 rmoveto + -16 46 rlineto + 72 -26 hlineto + 2 -34 rlineto + -54 hlineto + endchar + + + -61 0 62 241 40 -40 43 189 63 40 -20 hstemhm + -15 141 -141 524 -131 131 hintmask 10111010 + 230 372 rmoveto + 17 163 31 callgsubr + 15 -162 4 -27 rlineto + -43 hlineto + -131 -346 rmoveto + 85 hlineto + 40 303 rlineto + 55 hlineto + 41 -303 rlineto + 89 hlineto + hintmask 10111101 + 38 303 rlineto + 65 43 -59 hlineto + 37 292 rlineto + -71 hlineto + -29 -292 rlineto + -65 hlineto + -35 252 rlineto + -72 hlineto + -35 -252 rlineto + -63 hlineto + -29 292 rlineto + -77 hlineto + hintmask 11011100 + 39 -293 -65 -4 rlineto + hintmask 10111101 + -38 71 vlineto + 86 -241 rmoveto + -11 136 -10 105 rlineto + 53 hlineto + -15 -105 -13 -136 rlineto + 212 hmoveto + -15 136 -15 105 rlineto + 55 hlineto + -10 -105 -11 -136 rlineto + endchar + + + 524 callsubr + 574 64 392 callgsubr + 233 hlineto + 129 68 rlineto + 53 vlineto + -129 -69 rlineto + 72 vlineto + 129 69 rlineto + 53 vlineto + -129 -69 rlineto + 164 172 64 -428 -64 174 -203 464 callgsubr + -72 464 callgsubr + endchar + + + 524 callsubr + 244 57 76 38.5 -38.5 41 59 39 -39 41 63 57 hstemhm + 83 79 183 78 hintmask 1101011110000000 + 83 hmoveto + 79 244 42 hlineto + 102 82 43 90 26 hvcurveto + 70 41 -62 hlineto + 1 8 0 9 9 vvcurveto + 12 -1 11 -1 10 vhcurveto + 63 41 -71 hlineto + 87 -28 -80 33 -101 hhcurveto + -121 -120 hlineto + hintmask 1101101110000000 + -73 -4 rlineto + hintmask 1101011110000000 + -37 73 -59 vlineto + hintmask 1110011110000000 + -73 -5 rlineto + hintmask 1101011110000000 + -36 73 vlineto + 262 67 rmoveto + -9 -1 -9 -1 -8 vhcurveto + -181 59 181 hlineto + 1 -10 1 -11 -12 vvcurveto + -183 137 rmoveto + 32 hlineto + 68 47 -18 -45 22 hvcurveto + -169 hlineto + -217 vmoveto + 76 171 vlineto + -50 -21 -48 -26 -70 hhcurveto + endchar + + + -61 -110 166 -66 66 206 69 253 65 -65 164 hstemhm + 47 84 128 60 -35 176 -75 75 hintmask 1011011010000000 + 259 -110 rmoveto + 60 hlineto + hintmask 0111011010000000 + 100 vlineto + 54 6 49 25 38 40 rrcurveto + 270 vlineto + hintmask 0111010100000000 + -176 -69 hlineto + hintmask 0111011010000000 + 101 -169 hlineto + -20 -18 -36 -17 -38 hhcurveto + -102 -60 101 164 161 60 102 109 45 33 -24 -36 30 hvcurveto + 49 46 -34 41 -48 33 -56 5 rlinecurve + hintmask 0110111010000000 + 99 -60 vlineto + hintmask 0111011010000000 + -101 vlineto + -130 -22 -82 -121 -186 vvcurveto + -192 86 -120 126 -16 vhcurveto + endchar + + + 525 callsubr + 181 48 67 49 185 66 hstem + 83 80 164 81 vstem + 262 callgsubr + 66 67 34 44 44 hvcurveto + -37 54 rlineto + -36 -39 -46 -30 -55 hhcurveto + -70 -38 38 52 37 14 29 20 25 hvcurveto + 276 48 -225 hlineto + 28 22 30 21 27 24 rrcurveto + 140 49 -96 hlineto + 19 27 12 32 39 vvcurveto + 93 -68 60 -100 -74 -46 -34 -43 -39 vhcurveto + 43 -46 rlineto + 35 34 31 22 49 hhcurveto + 55 34 -36 -48 -42 -24 -31 -32 -28 hvcurveto + -179 507 callsubr + 184 vlineto + -26 -20 -27 -21 -21 -26 rrcurveto + -42 hlineto + -68 -5 rlineto + -43 78 vlineto + -11 -25 -7 -28 -33 vvcurveto + -101 75 -60 113 vhcurveto + endchar + + + -61 10 -21 22 -21 593 67 -3 -20 23 -20 hstemhm + 61 85 133 52 hintmask 01001110 + 279 -110 rmoveto + 52 100 hlineto + 61 8 47 33 39 50 -48 44 rcurveline + -29 -38 -31 -24 -39 -7 rrcurveto + hintmask 01100110 + 527 vlineto + 37 -4 28 -22 24 -32 49 47 rcurveline + -33 41 -49 33 -56 4 rrcurveto + hintmask 10010110 + 95 -52 -98 vlineto + -133 -20 -85 -122 -187 vvcurveto + -195 88 -121 130 -13 vhcurveto + -133 332 rmoveto + 141 47 96 86 21 vhcurveto + -522 vlineto + -85 17 -48 99 148 vvcurveto + endchar + + + 524 callsubr + 474 48 67 49 392 callgsubr + 474 172 48 -358 hlineto + -70 -4 rlineto + -44 174 vlineto + -174 115 rmoveto + 428 49 -428 hlineto + endchar + + + 524 callsubr + 252 67 118 49 84 68 -49 49 hstemhm + 303 82 hintmask 11101100 + 72 252 rmoveto + 77 hlineto + 178 -252 rlineto + 94 hlineto + -188 260 86 20 60 57 6 100 rlinecurve + 66 49 -68 hlineto + -9 46 -27 37 -38 20 rrcurveto + 142 49 -379 hlineto + hintmask 11110100 + -68 71 vlineto + 88 56 -23 -61 14 hvcurveto + -160 507 callsubr + 231 vlineto + -80 -6 -58 -38 -96 hhcurveto + -71 hlineto + endchar + + + -61 -12 78 572 -20 hstem + 115 84 194 72 vstem + 115 -12 rmoveto + 200 -4 150 81 169 vvcurveto + 17 -2 17 -5 23 vhcurveto + -70 -18 rlineto + 5 -19 0 -13 -11 vvcurveto + -105 -106 -56 -88 -3 vhcurveto + 230 vlineto + 176 92 -19 44 -157 -84 rlineto + 72 vlineto + 176 93 -19 43 -157 -83 rlineto + 165 -84 -206 vlineto + -100 -51 19 -44 81 42 rlineto + -72 vlineto + -100 -51 19 -43 81 42 rlineto + endchar + + + 524 callsubr + 166 460 callsubr + 61 46 -46 48 258 57 hstemhm + 83 79 183 78 hintmask 10101111 + 83 hmoveto + 79 166 202 48 -202 61 41 hlineto + 124 96 57 128 126 -94 52 -126 hvcurveto + -120 -315 hlineto + hintmask 10110111 + -73 -4 rlineto + hintmask 10101111 + -44 73 -61 vlineto + hintmask 11001111 + -73 -5 rlineto + hintmask 10101111 + -43 73 vlineto + 79 157 rmoveto + 258 32 vlineto + 96 55 -33 -92 -87 -55 -46 -96 hvcurveto + endchar + + + -149 -12 70 603 63 hstem + 107 81 125 71 vstem + 188 522 rmoveto + 97 31 42 36 33 25 -25 -67 -93 -47 -88 -78 -79 vhcurveto + 78 -321 rmoveto + 58 44 32 31 34 hvcurveto + -33 51 rlineto + -23 -24 -27 -21 -41 hhcurveto + -49 -40 35 93 hvcurveto + 35 vlineto + 122 105 74 118 127 vvcurveto + 99 -55 54 -76 -83 -63 -62 -155 vhcurveto + -271 vlineto + -27 -21 -29 -20 -30 -20 33 -52 rcurveline + 18 12 18 12 17 12 rrcurveto + -113 6 70 -58 83 hhcurveto + endchar + + + 335 -12 68 -56 98 -89 -21 24 -21 159 50 76 55 209 98 -94 54 -17 69 -4 389 callgsubr + 93 75 243 75 86 68 -41 253 -40 67 hintmask 0010111000011101 + 91 -12 rmoveto + 54 23 33 65 hvcurveto + 159 vlineto + 95 -1 74 -10 126 vhcurveto + 4 hlineto + 56 -128 rlineto + hintmask 0100110010011101 + 58 -139 59 -136 60 -137 rrcurveto + 92 540 hlineto + 32 12 9 23 vhcurveto + hintmask 0001110101011101 + -7 65 rlineto + hintmask 0100110100111101 + 3 -10 -4 1 -11 hhcurveto + -54 -24 -33 -66 hvcurveto + -158 vlineto + -95 2 -74 10 -126 vhcurveto + -4 hlineto + -57 129 rlineto + hintmask 1000111000011101 + -57 138 -59 136 -61 137 rrcurveto + -92 -540 hlineto + -32 -11 -10 -23 vhcurveto + hintmask 0001110100111101 + 7 -65 rlineto + hintmask 0010111000011101 + -2 10 3 -1 12 hhcurveto + hintmask 0001110100111101 + 635 288 rmoveto + 84 69 59 102 103 -69 58 -84 -84 -70 -58 -103 -102 70 -59 84 hvcurveto + 55 vmoveto + -52 -34 40 66 67 34 40 52 52 34 -40 -67 -66 -34 -40 -52 hvcurveto + hintmask 0001110100111010 + -127 -181 rmoveto + 253 50 -253 hlineto + endchar + + + 185 -11 42 221 50 147 51 112 41 hstem + 49 47 157 65 156 65 109 126 callsubr + -119 106 rmoveto + 65 115 73 hlineto + 82 66 43 88 81 -65 36 -83 hvcurveto + -138 hlineto + 65 -198 rmoveto + 147 62 vlineto + 59 35 -20 -48 -55 -34 -24 -60 hvcurveto + endchar + + + 79 354 47 13 504 callgsubr + -40 47 hstemhm + 43 55 95 56 61 505 callgsubr + hintmask 11011111 + 140 354 rmoveto + 67 42 44 47 46 -24 24 -39 17 hvcurveto + -46 23 rlineto + -26 12 -16 11 20 vvcurveto + 20 16 18 31 23 25 -14 -16 21 vhcurveto + 29 39 rlineto + 21 -23 -35 17 -37 hhcurveto + -62 -43 -36 -52 -47 30 -24 30 -15 hvcurveto + 47 -23 rlineto + 29 -14 14 -6 -26 vvcurveto + -24 -18 -15 -31 -33 -27 15 23 -24 vhcurveto + -33 -37 rlineto + -30 30 39 -18 44 hhcurveto + 170 12 rmoveto + 56 137 hlineto + hintmask 01101111 + -7 105 31 callgsubr + 227 callgsubr + endchar + + + 246 9 -21 33 -21 335 55 184 438 callgsubr + 356 67 hintmask 01111100 + 148 266 22 callgsubr + hintmask 10111100 + 6 -586 -2 callgsubr + hintmask 01111100 + 52 -668 rmoveto + 48 callsubr + endchar + + + 509 callsubr + 106 47 159 51 172 82 hstem + 148 64 270 59 161 61 vstem + 148 266 22 callgsubr + 16 -586 -2 callgsubr + 15 -397 -47 callgsubr + + + 534 -12 51 -18 -21 308 82 -39 51 172 438 callgsubr + 382 64 101 455 callsubr + hintmask 1001111110000000 + 164 284 callsubr + -378 -402 22 callgsubr + hintmask 0110111110000000 + 446 -574 22 callgsubr + hintmask 1001111110000000 + 314 -320 -14 callgsubr + + + 509 callsubr + 172 43 80 56 184 82 hstem + 148 64 484 64 vstem + 148 266 22 callgsubr + 6 -586 -2 callgsubr + 104 -680 -29 callsubr + + + 263 -12 51 172 43 12 55 13 56 224 54 hstemhm + 238 63 411 64 hintmask 10101110 + 53 91 callgsubr + 151 -315 -2 callgsubr + 70 -680 rmoveto + 79 61 55 80 hvcurveto + hintmask 11111110 + 84 -58 47 -70 -23 -21 -7 -8 -19 vhcurveto + 11 95 rlineto + 160 56 -213 hlineto + -18 -188 31 -23 rlineto + 18 21 22 14 31 hhcurveto + 48 34 -33 -53 -50 -34 -36 -46 -45 -31 22 36 -25 hvcurveto + -43 -33 rlineto + hintmask 10101110 + 306 callgsubr + endchar + + + 263 -12 51 172 43 0 51 29 56 54 256 callgsubr + 393 64 hintmask 1011110110000000 + 391 callgsubr + hintmask 1101111010000000 + -44 callgsubr + hintmask 1011110110000000 + -6 callgsubr + hintmask 1101110110000000 + 20 264 callsubr + 74 -680 -29 callsubr + + + 288 -12 51 172 43 80 56 -20 46 179 61 hstemhm + 220 58 459 64 hintmask 11011110 + 109 416 42 callgsubr + 5 -382 -2 callgsubr + 74 -680 rmoveto + 79 61 55 80 84 -58 47 -70 -23 -21 -7 -8 -19 hvcurveto + hintmask 11101110 + 11 95 rlineto + 160 56 -213 hlineto + -18 -188 31 -23 rlineto + 18 21 22 14 31 hhcurveto + 48 34 -33 -53 -50 -34 -36 -46 -45 -31 22 36 -25 hvcurveto + -43 -33 rlineto + hintmask 11011110 + 306 callgsubr + endchar + + + 509 callsubr + 159 47 106 51 172 82 hstem + 148 64 260 61 160 60 vstem + 148 266 22 callgsubr + 16 -586 -2 callgsubr + 92 -470 34 callgsubr + + + 263 -12 51 159 47 9 51 46 51 75 43 80 56 hstemhm + 259 64 165 61 160 60 hintmask 1011111110000000 + 118 callgsubr + hintmask 1111111110000000 + 72 -470 34 callgsubr + + + 263 -12 51 139 41 35 51 46 51 215 51 hstemhm + 436 callgsubr + 360 63 -48 64 hintmask 1111111010000000 + 184 254 -69 callsubr + 16 -317 -2 callgsubr + 71 426 callgsubr + hintmask 1111111100000000 + -44 callgsubr + hintmask 1111111010000000 + -6 callgsubr + endchar + + + 61 218 68 hstem + 26 553 vstem + 299 -15 rmoveto + 42 46 -201 187 rlineto + 439 68 -439 hlineto + 201 187 -42 46 -273 -265 rlineto + -4 vlineto + endchar + + + 61 218 68 hstem + 39 552 vstem + 319 -15 rmoveto + 272 265 rlineto + 4 vlineto + -272 265 -43 -46 201 -187 rlineto + -438 -68 438 hlineto + -201 -187 rlineto + endchar + + + 242 -53 53 308 53 hstem + 227 60 226 60 vstem + 227 -53 rmoveto + 346 361 190 hlineto + 16 39 -377 361 rlineto + -4 hlineto + -377 -361 16 -39 rlineto + 190 hlineto + 60 -308 rmoveto + 361 -157 vlineto + -2 4 270 262 31 callgsubr + 270 -262 -2 -4 rlineto + -157 -361 hlineto + endchar + + + 187 callgsubr + + + -56 263 126 hstem + 188 119 vstem + 248 263 rmoveto + -48 callsubr + endchar + + + 242 391 332 hstem + 94 612 vstem + 142 391 rmoveto + 258 243 258 -243 48 50 -306 282 -306 -282 rlineto + endchar + + + 442 -178 63 203 66 212 66 203 63 hstem + 50 66 204 79 202 79 204 66 vstem + 208 -178 rmoveto + 136 55 103 125 hvcurveto + 38 202 -38 vlineto + -125 55 -103 136 99 59 68 89 115 -84 60 -136 vhcurveto + -50 212 50 hlineto + 136 84 60 117 88 -59 67 -99 -135 -56 -96 -132 hvcurveto + -38 -202 38 vlineto + 132 -56 96 -135 -99 -59 -67 -88 -117 84 -60 136 vhcurveto + 50 -212 -50 hlineto + -136 -84 -60 -115 -89 59 -68 99 hvcurveto + 63 vmoveto + -64 -28 48 48 64 54 43 77 hvcurveto + 73 -55 hlineto + -102 -41 -46 -71 vhcurveto + 39 547 rmoveto + -77 -54 43 64 48 28 48 64 71 41 -52 -96 hvcurveto + -55 vlineto + 360 55 rmoveto + 96 40 52 72 64 28 -48 -48 -64 -54 -43 -77 vhcurveto + -73 hlineto + -399 vmoveto + 55 73 vlineto + 77 54 -43 -64 -48 -28 -48 -64 -72 -40 46 102 hvcurveto + -281 121 rmoveto + 212 202 -212 vlineto + endchar + + + -255 642 302 callsubr + hmoveto + 62 642 411 callgsubr + + + -255 642 476 callgsubr + hintmask 10100000 + 147 hmoveto + 62 689 411 callsubr + + + -255 -52 302 callsubr + -52 rmoveto + hintmask 10100000 + 179 47 hlineto + hintmask 11000000 + -117 643 -62 hlineto + endchar + + + -255 -52 476 callgsubr + hintmask 11000000 + 31 -52 rmoveto + hintmask 10100000 + 178 690 -62 -643 hlineto + hintmask 11000000 + -116 hlineto + endchar + + + 442 -12 70 534 70 hstem + 38 924 vstem + 650 -12 rmoveto + 312 70 -265 hlineto + -347 604 rlineto + -312 -70 265 hlineto + 324 hmoveto + 335 70 -335 hlineto + endchar + + + 442 -4 62 534 62 hstem + 841 74 vstem + 293 -4 rmoveto + 622 658 -622 hlineto + -273 -323 rlineto + -4 vlineto + 318 -269 rmoveto + -227 271 227 263 rlineto + 503 -534 hlineto + -411 79 rmoveto + 143 148 143 -148 44 44 -143 148 143 147 -44 45 -143 -149 -143 149 -44 -45 144 -147 -144 -148 rlineto + endchar + + + 337 -60 805 hstem + 45 805 vstem + 45 -60 rmoveto + 805 805 -805 hlineto + endchar + + + 337 -60 58 299 callsubr + 97 56 rmoveto + 300 639 299 -639 rlineto + endchar + + + 447 callsubr + 45 825 345 callgsubr + endchar + + + 447 callsubr + 45 59 345 callgsubr + 59 -696 rmoveto + 599 vlineto + 640 -299 rlineto + endchar + + + 337 687 58 293 callgsubr + -97 -56 rmoveto + -299 -639 -300 639 rlineto + endchar + + + 447 callsubr + 25 825 321 callgsubr + endchar + + + 447 callsubr + 791 59 321 callgsubr + -59 696 rmoveto + -599 vlineto + -640 300 rlineto + endchar + + + 337 -80 845 hstem + 25 845 vstem + 448 -80 rmoveto + 422 423 -422 422 -423 -422 rlineto + endchar + + + 337 -75 56 724 55 hstem + 33 63 704 62 vstem + 448 -75 rmoveto + 224 190 158 260 255 -190 162 -224 -225 -190 -162 -255 -260 190 -158 225 hvcurveto + 56 vmoveto + -184 -168 132 230 229 168 133 184 185 167 -133 -229 -230 -167 -132 -185 hvcurveto + 97 vmoveto + 137 120 103 162 158 -120 106 -137 -138 -120 -106 -158 -161 120 -104 138 hvcurveto + endchar + + + 27 -12 73 -46 73 9 74 35 73 37 73 -73 74 7 74 -73 73 -47 74 hstemhm + 46 71 -43 70 8 70 36 70 36 70 8 70 -43 71 hintmask 0010000000100000 + 108 97 rmoveto + 22 14 14 22 24 -15 14 -21 -18 -16 -14 -24 -22 16 -14 18 hvcurveto + hintmask 0001000001000000 + -28 109 rmoveto + 22 15 14 23 24 -16 12 -21 -18 -16 -12 -24 -23 16 -14 18 hvcurveto + hintmask 0000010000100000 + 28 110 rmoveto + 22 14 14 24 24 -15 12 -21 -18 -16 -12 -24 -24 16 -14 18 hvcurveto + hintmask 0100000100010000 + 78 -301 rmoveto + 21 15 13 25 23 -16 12 -20 -19 -15 -12 -23 -25 15 -13 19 hvcurveto + 383 vmoveto + 21 15 14 22 25 -16 12 -20 -19 -15 -12 -25 -22 15 -14 19 hvcurveto + hintmask 1000000010001000 + 106 -410 rmoveto + 21 15 13 468 callgsubr + -13 19 hvcurveto + 436 vmoveto + 21 15 14 468 callgsubr + -14 19 hvcurveto + hintmask 0100001000000100 + 106 -409 rmoveto + 22 14 13 25 23 -16 12 -20 -18 -16 -12 -23 -25 16 -13 18 hvcurveto + 382 vmoveto + 22 14 15 22 24 -16 13 -20 -18 -16 -13 -24 -22 16 -15 18 hvcurveto + hintmask 0010000000000010 + 79 -300 rmoveto + 22 13 14 22 24 -15 14 -20 -19 -16 -14 -24 -22 16 -14 19 hvcurveto + hintmask 0001000000000001 + 27 109 rmoveto + 21 15 14 23 24 -17 12 -19 -20 -15 -12 -24 -23 15 -14 20 hvcurveto + hintmask 0000100000000010 + -27 110 rmoveto + 22 13 13 24 23 -15 13 -20 -19 -16 -13 -23 -24 16 -13 19 hvcurveto + endchar + + + 241 -10 43 564 369 callgsubr + 620 -590 vlineto + -61 -51 rlineto + 43 -587 rmoveto + 564 533 -564 vlineto + endchar + + + 241 -10 43 76 63 425 369 callgsubr + 611 vlineto + 26 30 27 28 27 25 -53 50 rcurveline + -37 -37 -37 -41 -35 -46 rrcurveto + -508 hlineto + -61 -51 rlineto + 43 -587 rmoveto + 564 473 vlineto + -87 -129 -73 -150 -43 -146 rrcurveto + -4 hlineto + -27 84 -42 86 -49 77 -56 -38 rcurveline + 57 -85 47 -90 36 -102 86 10 rcurveline + 48 172 77 154 90 126 rrcurveto + -533 vlineto + endchar + + + -55 -24 193 hstem + 247 55 125 54 vstem + 130 -24 rmoveto + 92 80 57 110 hvcurveto + 407 vlineto + 80 -25 45 -62 -63 vvcurveto + -36 -3 -24 -10 -32 vhcurveto + 35 -13 rlineto + 15 31 17 48 52 vvcurveto + 76 -24 56 -90 64 vhcurveto + -50 36 -10 9 -10 27 rrcurveto + -50 -537 hlineto + 6 -9 -25 6 -26 hhcurveto + -93 -65 -56 -61 -50 47 -26 54 hvcurveto + endchar + + + 54 -15 63 hstem + 0 616 vstem + 151 -20 rmoveto + 86 10 76 270 145 227 158 147 rlinecurve + -54 50 -157 -154 -142 -245 -71 -237 rlinecurve + -4 hlineto + -31 89 -46 93 -55 83 -56 -38 rcurveline + 63 -91 48 -94 40 -110 rrcurveto + endchar + + + 337 -60 44 683 78 hstem + 45 45 682 78 vstem + 45 -60 rmoveto + 749 hlineto + 56 66 rlineto + 739 -739 vlineto + -66 -56 rlineto + 45 -705 rmoveto + 683 682 -683 vlineto + endchar + + + -180 -152 47 766 47 hstemhm + 94 51 45 47 -47 157 hintmask 11110000 + 94 -152 rmoveto + hintmask 11101000 + 253 47 hlineto + hintmask 11110000 + -110 766 521 callgsubr + 110 47 -253 hlineto + 51 -813 rmoveto + 766 vlineto + hintmask 11110000 + 45 -766 hlineto + endchar + + + -180 -152 47 766 47 hstemhm + 31 157 -47 47 44 52 hintmask 11101000 + 31 -152 rmoveto + 253 860 -253 -47 hlineto + hintmask 11011000 + 110 -766 521 callgsubr + -110 hlineto + hintmask 11011000 + 157 hmoveto + 766 44 -766 vlineto + endchar + + + -255 661 302 callsubr + 278 rmoveto + 62 383 411 callgsubr + + + -255 661 476 callgsubr + hintmask 10100000 + 147 278 rmoveto + 62 430 411 callsubr + + + -255 -152 302 callsubr + -152 rmoveto + hintmask 10100000 + 179 47 hlineto + hintmask 11000000 + -117 383 -62 hlineto + endchar + + + -255 -152 476 callgsubr + hintmask 11000000 + 31 -152 rmoveto + hintmask 10100000 + 178 430 -62 -383 hlineto + hintmask 11000000 + -116 hlineto + endchar + + + 942 223 57 hstem + 41 1418 vstem + 41 223 rmoveto + 1418 57 -1418 hlineto + endchar + + + 1642 223 57 hstem + 41 2118 vstem + 2159 280 rmoveto + -2118 -57 2118 hlineto + endchar + + + 7 -12 69 289 58 253 67 hstemhm + 82 82 85 116 24 82 -29 82 hintmask 11111010 + 82 -205 rmoveto + 82 164 hlineto + -3 98 rlineto + -50 48 64 -19 60 hhcurveto + 109 82 81 124 120 -77 55 -82 13 hvcurveto + 4 vlineto + hintmask 11111100 + 66 26 40 63 78 vvcurveto + 116 -91 56 -97 -132 -69 -94 -139 vhcurveto + hintmask 11111010 + 232 -434 rmoveto + -49 -56 14 58 -45 hvcurveto + 351 vlineto + 119 46 58 77 vhcurveto + hintmask 11111100 + 57 45 -38 -76 -83 -44 -56 -89 hvcurveto + -7 hlineto + hintmask 11111010 + -58 22 vlineto + 109 62 -55 -93 -87 -55 -54 -73 hvcurveto + endchar + + + -92 -205 691 hstem + 9 448 vstem + 9 -205 rmoveto + 86 hlineto + 87 198 13 32 21 51 12 33 rlinecurve + 4 hlineto + 13 -33 24 -53 12 -30 87 -198 rcurveline + 89 hlineto + -178 372 162 319 rlineto + -86 hlineto + -73 -154 -12 -31 -22 -44 -13 -29 rlinecurve + -4 hlineto + -12 29 -24 47 -12 28 -73 154 rcurveline + -89 hlineto + 163 -317 rlineto + endchar + + + endchar + + + -14 339 callgsubr + 393 callsubr + 156 61 5 82 -71 71 hintmask 11011010 + 405 355 callsubr + 34 12 15 19 hvcurveto + -21 41 rlineto + hintmask 11011100 + -8 -12 -13 -5 -16 hhcurveto + -23 -23 15 31 hvcurveto + hintmask 10111010 + 39 28 37 59 29 vhcurveto + 486 -82 vlineto + hintmask 11011010 + -345 vlineto + -57 -46 -35 -25 -50 hhcurveto + -65 -26 449 callsubr + -308 64 callgsubr + hintmask 11011001 + 43 callsubr + 8 -72 rlineto + hintmask 11011100 + -43 -31 -38 -40 -54 vvcurveto + hintmask 11011010 + 290 callsubr + endchar + + + -14 339 callgsubr + 393 callsubr + 27 60 135 -18 callgsubr + hintmask 10111101 + 275 74 callsubr + 36 20 39 36 28 hvcurveto + 21 18 31 27 31 32 rrcurveto + 3 hlineto + 7 -75 rlineto + hintmask 10111010 + 408 callgsubr + hintmask 11011010 + -77 callsubr + hintmask 11011110 + 459 callsubr + hintmask 10111101 + -56 39 -29 51 vhcurveto + endchar + + + 108 callgsubr + hstemhm + 64 78 230 83 hintmask 10111000 + -96 callsubr + hintmask 11011000 + -54 callgsubr + hintmask 10111000 + 124 callgsubr + endchar + + + 108 callgsubr + 109 100 hstemhm + 64 78 -44 99 94 99 -18 83 hintmask 10111001 + -96 callsubr + hintmask 11011001 + -54 callgsubr + hintmask 10111001 + 336 callsubr + -101 599 -88 callgsubr + + + 24 callgsubr + + + 108 callgsubr + hstemhm + 64 78 230 83 hintmask 10111000 + -96 callsubr + hintmask 11011000 + -54 callgsubr + hintmask 10111000 + 124 callgsubr + 19 570 118 callsubr + + + 95 callsubr + 88 37 123 37 hstemhm + 75 83 3 53 114 53 -1 -21 callgsubr + hintmask 1011101100000000 + 47 566 rmoveto + 34 callsubr + + + 95 callsubr + 111 152 callsubr + 75 83 -60 55 227 82 -73 55 -53.5 71.5 hintmask 1010100101000000 + 307 callsubr + hintmask 1010100100010000 + 43 callsubr + hintmask 0110100100010000 + 7 -76 rlineto + hintmask 0110100101000000 + 408 callgsubr + hintmask 1010100101000000 + -77 callsubr + hintmask 1011010100100000 + 119 589 208 callsubr + hintmask 1011001100100000 + -41 callgsubr + hintmask 1010100011000000 + -53 callsubr + hintmask 1011010100100000 + 119 callgsubr + + + -91 0 67 419 -20 hstem + 12 443 vstem + 187 hmoveto + 96 hlineto + 172 486 rlineto + -81 hlineto + -92 -276 -14 -48 -16 -49 -14 -46 rlinecurve + -4 hlineto + -15 46 -16 49 -14 48 -92 276 rcurveline + -85 hlineto + endchar + + + -237 395 49 hstem + 8 305 vstem + 124 395 rmoveto + 73 hlineto + 116 321 rlineto + -61 hlineto + -58 -176 -31 -96 rlineto + -4 hlineto + -31 96 -58 176 rlineto + -62 hlineto + endchar + + + 353 callgsubr + hstem + 24 670 -65 callsubr + endchar + + + -71 395 51 204 66 hstem + 16 455 vstem + 105 395 rmoveto + 74 hlineto + 43 163 21 92 rlineto + 2 hlineto + 21 -92 43 -163 rlineto + 75 hlineto + 87 321 rlineto + -59 hlineto + -43 -179 -21 -91 rlineto + -4 hlineto + -22 91 -50 179 rlineto + -56 hlineto + -47 -179 -22 -91 rlineto + -4 hlineto + -19 91 -44 179 rlineto + -64 hlineto + endchar + + + 353 callgsubr + hstem + 24 670 -65 callsubr + 322 87 -71 callgsubr + + + 353 callgsubr + 195 59 hstem + 24 670 -65 callsubr + 181 114 -12 callsubr + + + 353 callgsubr + 101 100 hstem + 214 99 94 99 -65 callsubr + 240 101 -88 callgsubr + + + 353 callgsubr + hstem + 24 670 -65 callsubr + 350 87 -26 callsubr + + + 110 callsubr + + + -251 395 321 hstem + 8 290 vstem + 8 395 rmoveto + 66 hlineto + 41 69 33 55 31 callgsubr + 35 -55 43 -69 rlineto + 68 hlineto + -105 161 98 160 rlineto + -66 hlineto + -37 -66 -27 -51 rlineto + -4 hlineto + -31 51 -41 66 rlineto + -68 hlineto + 99 -153 rlineto + endchar + + + -127 345 58 242 67 -62 62 hstemhm + 49 85 -37 83 18 171 -20 75 hintmask 11010010 + 367 -184 rmoveto + 40 55 17 49 30 vvcurveto + 66 -38 24 -96 18 vhcurveto + -90 16 -66 26 96 vvcurveto + 94 82 55 83 vhcurveto + hintmask 11010100 + 26 18 0 -6 26 hvcurveto + 70 vlineto + -5 -26 -13 -1 -26 hhcurveto + hintmask 11001010 + -59 -65 52 70 77 58 43 64 hvcurveto + 114 67 -388 -67 hlineto + hintmask 10101010 + 4 61 27 1 53 hhcurveto + -45 -23 -27 -45 -55 vvcurveto + -70 42 -50 59 -24 vhcurveto + -4 vlineto + hintmask 11010010 + -80 -24 -69 -74 -96 vvcurveto + -128 86 -45 103 -20 vhcurveto + 89 -17 22 -14 491 callsubr + + + -59 callgsubr + endchar + + + -239 261 50 hstem + 8 303 vstem + 65 261 rmoveto + 68 35 48 67 24 hvcurveto + 119 340 rlineto + -61 hlineto + -52 -169 -10 -31 -10 -30 -9 -32 rlinecurve + -4 hlineto + -10 33 -11 31 -10 29 -63 169 rcurveline + -63 hlineto + 131 -319 -7 -21 rlineto + -38 -12 -24 -27 -35 hhcurveto + -8 -7 2 4 -9 hvcurveto + -13 -50 rlineto + -4 12 13 -2 16 hhcurveto + endchar + + + -59 callgsubr + 139 782 -71 callgsubr + + + 316 callgsubr + 215 59 hstem + 12 443 -18 callsubr + -2 809 -12 callsubr + + + 316 callgsubr + 121 100 hstem + 97 99 94 99 -18 callsubr + 57 796 -88 callgsubr + + + -61 0 206 -48 48 65 47 320 -20 hstemhm + 207 82 hintmask 10111000 + 207 hmoveto + 82 hlineto + hintmask 01111000 + 158 163 48 -163 65 163 47 -142 vlineto + 164 320 279 callgsubr + 163 -320 rlineto + -141 -47 162 -65 -162 -48 162 hlineto + endchar + + + 524 callsubr + 257 48 333 -20 392 callgsubr + 257 163 48 -149 hlineto + 171 333 279 callgsubr + 170 -333 rlineto + -148 -48 162 hlineto + endchar + + + -59 callgsubr + 167 782 -26 callsubr + + + 230 callsubr + endchar + + + -268 395 50 221 50 hstemhm + 21 251 -231 226 hintmask 11100000 + 21 395 rmoveto + 251 50 -172 hlineto + hintmask 11010000 + 167 237 rlineto + 34 -226 -50 148 vlineto + -168 -238 rlineto + endchar + + + 230 callsubr + 186 529 -71 callgsubr + + + -133 0 67 352 67 88 59 81 -20 hstem + 31 368 vstem + 55 callsubr + 159 530 2 callgsubr + + + -133 0 67 352 67 100 108 hstem + 176 110 vstem + 55 callsubr + 200 542 -105 callsubr + + + 525 callsubr + 530 66 hstem + 44 80 249 80 146 callsubr + 66 vmoveto + -75 -50 80 187 187 50 76 75 74 50 -76 -187 -187 -50 -80 -74 hvcurveto + endchar + + + 525 callsubr + 205 132 193 66 hstem + 44 76 68 121 68 76 146 callsubr + 66 vmoveto + -76 -53 84 183 184 53 79 76 75 53 -79 -184 -183 -53 -84 -75 hvcurveto + 205 vmoveto + 33 27 24 42 42 -27 24 -33 -34 -27 -24 -42 -42 27 -24 34 hvcurveto + endchar + + + -20 -12 68 203 132 190 69 hstem + 55 79 74 122 74 79 147 callsubr + 68 vmoveto + -82 -53 85 180 181 53 79 82 82 53 -79 -181 -180 -53 -85 -82 hvcurveto + 203 vmoveto + 33 28 24 42 42 -28 24 -33 -33 -28 -24 -42 -42 28 -24 33 hvcurveto + endchar + + + -20 -12 63 536 63 hstem + 55 76 276 76 147 callsubr + 599 vmoveto + 81 57 -80 -186 -50 -4 -42 -8 -36 hvcurveto + -234 314 rlineto + 55 25 38 25 45 hhcurveto + -536 vmoveto + -81 -57 84 186 50 4 42 8 36 hvcurveto + 234 -315 rlineto + -56 -24 -38 -27 -46 hhcurveto + endchar + + + -61 -12 63 536 63 hstem + 44 76 257 76 146 callsubr + 599 vmoveto + 75 53 -80 -186 -49 -4 -41 -6 -35 hvcurveto + -219 312 rlineto + 54 23 36 25 42 hhcurveto + -536 vmoveto + -76 -53 84 186 49 4 41 6 35 hvcurveto + 219 -312 rlineto + -57 -23 -35 -26 -42 hhcurveto + endchar + + + 525 callsubr + 548 66 hstem + 44 80 249 80 vstem + 249 -12 rmoveto + 124 80 114 229 227 -80 110 -124 -125 -80 -110 -227 -229 80 -114 125 hvcurveto + 66 vmoveto + -75 -50 83 194 190 50 81 75 74 50 -81 -190 -194 -50 -83 -74 hvcurveto + endchar + + + -191 -12 313 callsubr + -12 -14 callgsubr + + + -191 254 313 callsubr + 254 -14 callgsubr + + + -40 -12 66 465 67 hstem + 52 80 249 80 vstem + 257 176 callgsubr + + + -20 -12 68 525 69 hstem + 55 83 262 83 147 callsubr + 68 vmoveto + -79 -52 81 184 184 52 76 79 79 52 -76 -184 -184 -52 -81 -79 hvcurveto + endchar + + + -53 435 callgsubr + hstem + 55 82 230 83 vstem + 252 -12 rmoveto + 121 77 104 169 169 -77 100 -121 -121 -76 -100 -169 -169 77 -104 120 hvcurveto + 66 vmoveto + -67 -48 66 141 142 48 61 67 68 47 -61 -142 -141 -47 -66 -68 hvcurveto + endchar + + + -191 -189 313 callsubr + -189 -14 callgsubr + + + -191 383 313 callsubr + 383 -14 callgsubr + + + 525 callsubr + 465 67 hstem + 44 80 249 80 vstem + 249 176 callgsubr + + + -134 645 67 -62 62 hstemhm + 48 85 209 74 hintmask 01110000 + 360 -184 rmoveto + 40 55 16 49 30 vvcurveto + 66 -43 24 -94 18 vhcurveto + -90 16 -56 37 115 vvcurveto + hintmask 10110000 + 137 147 195 124 87 vhcurveto + 5 hlineto + hintmask 01110000 + 67 -330 -67 vlineto + 4 64 118 1 55 hhcurveto + -122 -93 -146 -185 -150 vvcurveto + -159 85 -51 98 -20 vhcurveto + 91 -19 20 -12 491 callsubr + + + + + + + + 291 callgsubr + 55 48 27 61 25 hvcurveto + 4 hlineto + -61 24 52 -27 55 hhcurveto + 101 66 81 163 113 -35 76 -53 77 hvcurveto + -74 -31 rlineto + 55 -82 23 -59 -99 vvcurveto + -116 -39 -55 -54 -46 -41 29 93 40 3 38 5 52 vhcurveto + -90 hlineto + 5 -52 3 -38 -40 vvcurveto + -90 -41 -32 -47 -54 -40 57 101 102 31 69 55 80 vhcurveto + -75 33 rlineto + -51 -76 -39 -90 -103 vvcurveto + -161 72 -80 97 vhcurveto + return + + + rmoveto + 165 116 132 211 272 callgsubr + -211 115 -132 165 hvcurveto + 73 vmoveto + -117 -77 106 164 163 77 101 117 117 77 -101 -163 -164 210 callsubr + hvcurveto + return + + + 32 23 21 33 32 -23 22 -32 -32 -23 -22 -32 -33 23 -21 32 hvcurveto + return + + + rmoveto + -107 callsubr + return + + + 367 -104 callgsubr + return + + + 262 callgsubr + 119 106 93 161 445 callgsubr + -161 106 -93 119 hvcurveto + 68 vmoveto + -83 -57 75 111 112 57 76 83 84 56 -76 -112 -111 -56 -75 -84 hvcurveto + return + + + rmoveto + 28 17 5 7 14 218 callsubr + -11 -10 -2 -8 hhcurveto + -21 -15 12 27 96 3 108 3 107 hvcurveto + -83 -305 hlineto + -72 27 -41 67 vhcurveto + endchar + + + rmoveto + 19 57 15 54 18 58 rrcurveto + 4 hlineto + 18 -57 15 -55 19 -57 24 -74 rcurveline + -156 hlineto + -153 -208 -85 callgsubr + return + + + rmoveto + 85 hlineto + 63 200 rlineto + 239 hlineto + 62 -200 rlineto + 89 hlineto + -22 callgsubr + return + + + rmoveto + 29 20 21 28 29 -20 20 -29 -28 -21 -20 -29 -28 21 -21 28 267 callgsubr + 28 21 21 28 29 -21 20 -28 -29 -20 -20 -29 -28 20 -21 29 hvcurveto + endchar + + + 121 -50 79 -119 -78 -68 -34 -29 -45 vhcurveto + 32 -57 rlineto + 26 38 51 26 56 hhcurveto + 80 20 -60 -62 hvcurveto + -207 -23 -91 -53 -106 vvcurveto + return + + + vstem + -104 callsubr + return + + + rmoveto + 22 11 4 5 13 hvcurveto + -9 49 rlineto + -3 -13 -4 0 -5 hhcurveto + -16 -14 9 22 hvcurveto + return + + + 197 402 rlineto + -87 hlineto + -84 -185 -20 -48 -23 -46 -23 -49 rlinecurve + -4 hlineto + -22 49 -20 46 -21 48 -85 185 rcurveline + -89 hlineto + 197 -402 rlineto + return + + + 17 69 rmoveto + -75 -44 65 113 128 67 66 70 45 50 -24 -106 27 hvcurveto + -8 -91 rlineto + -82 -6 -62 -69 -64 hhcurveto + return + + + 243 -12 rmoveto + -90 callsubr + return + + + 292 -12 rmoveto + 118 86 58 170 hvcurveto + 302 -79 -303 vlineto + -65 callgsubr + vhcurveto + return + + + 90 -209 rmoveto + 98 50 73 96 34 hvcurveto + 183 526 rlineto + -80 hlineto + -87 -269 -13 -43 -14 -50 -14 -44 rlinecurve + -4 hlineto + -15 45 -17 50 -15 42 -99 269 rcurveline + -85 hlineto + 195 -487 -11 -36 rlineto + -60 -20 -35 -44 -55 hhcurveto + -12 -15 4 3 -10 hvcurveto + -16 -65 rlineto + -6 16 19 -4 22 hhcurveto + return + + + -87 61 -51 81 vhcurveto + 24 66 rmoveto + -48 -38 23 55 62 56 40 162 20 hvcurveto + -135 vlineto + -42 -47 -38 -23 -47 hhcurveto + return + + + rmoveto + 28 21 22 28 28 -21 22 -28 -29 -21 -22 -28 -28 21 -22 29 356 callgsubr + 29 21 22 28 28 -21 22 -29 -28 -21 -22 -28 -28 21 -22 28 hvcurveto + endchar + + + -88 callsubr + endchar + + + -13 callsubr + hvcurveto + -153 294 rmoveto + 96 10 62 55 68 hhcurveto + 76 44 -53 -98 hvcurveto + return + + + rmoveto + 84 hlineto + 48 146 rlineto + 197 hlineto + 48 -146 rlineto + 88 hlineto + 63 callsubr + return + + + 32 25 22 32 31 -25 22 -32 -32 -25 -22 -31 -32 25 -22 32 hvcurveto + endchar + + + rmoveto + 86 hlineto + 105 113 -36 26 -110 -92 rlineto + -4 hlineto + -110 92 -36 -26 rlineto + endchar + + + 71.5 -71.5 82 return + + + -93 -63 66 103 -6 hvcurveto + 328 hlineto + 2 12 1 18 17 vvcurveto + 139 -70 89 -124 vhcurveto + return + + + 307 -12 rmoveto + 75 63 25 34 38 hvcurveto + 226 -188 -61 112 -127 vlineto + -18 -21 -34 -10 -38 hhcurveto + -115 -62 77 124 127 69 75 108 53 33 -19 -27 355 callgsubr + 32 -34 -51 33 -76 73 callgsubr + return + + + 83 -93 callsubr + return + + + 249 callgsubr + -94 callgsubr + return + + + -80 callsubr + endchar + + + 82 55 37 27 53 hhcurveto + 57 22 -39 -91 -140 -2 -177 -4 -159 hvcurveto + return + + + vmoveto + -81 callsubr + return + + + -55 21 -50 17 46 vvcurveto + 37 28 33 61 43 35 -18 -25 33 vhcurveto + 40 52 rlineto + 30 -38 -53 25 -60 hhcurveto + -106 -62 -60 -78 -82 73 -33 69 -25 hvcurveto + 53 -20 58 -22 -50 vvcurveto + -42 -32 -34 return + + + 165 callgsubr + hstem + 52 86 388 -103 callsubr + return + + + -74 callgsubr + -64 -58 -43 24 34 -42 vhcurveto + -41 -55 rlineto + return + + + rmoveto + 157 153 -58 55 -141 -167 rlineto + endchar + + + -253 173 206 63 -206 150 243 66 -326 hlineto + return + + + 251 -12 rmoveto + 68 50 15 45 59 hvcurveto + -35 55 rlineto + -36 -46 -40 -13 -47 hhcurveto + -83 -49 33 54 53 40 29 80 24 23 0 -2 29 hvcurveto + 64 vlineto + -2 -25 -17 -1 -19 hhcurveto + return + + + 267 -12 rmoveto + 122 100 92 162 164 -100 92 -122 -121 -100 -92 -164 -162 100 -92 121 hvcurveto + 68 vmoveto + -86 -50 74 112 113 50 75 86 86 51 -75 -113 -112 482 callgsubr + return + + + rmoveto + 79 61 55 80 84 -58 47 -70 -23 -21 -7 -8 -19 hvcurveto + 11 95 rlineto + 160 56 -213 hlineto + -18 -188 31 -23 rlineto + 18 21 22 14 31 hhcurveto + 48 34 -33 -53 -50 -34 -36 -46 -45 -31 22 36 -25 hvcurveto + -43 -33 rlineto + 306 callgsubr + return + + + 60 38 46 77 4 hvcurveto + -56 4 rlineto + -43 -5 -18 -23 -25 -47 -26 71 -75 hhcurveto + return + + + -42 callgsubr + -170 88 -58 117 return + + + -158 -68 -50 -87 -86 -67 50 158 vhcurveto + 387 -83 -385 vlineto + return + + + 196 -78 callgsubr + return + + + -110 228 callsubr + 82 -58 82 hintmask 11110000 + -69 callgsubr + hintmask 11101000 + -52 callgsubr + hintmask 11110000 + 189 callgsubr + return + + + 558 620 rmoveto + 65 15 51 33 77 vvcurveto + 30 -9 28 -14 22 vhcurveto + -65 -28 rlineto + 9 -16 6 -22 -20 vvcurveto + -56 -35 -20 -55 -7 vhcurveto + -33 -387 hlineto + -64 callgsubr + -211 102 -72 134 134 101 72 211 vhcurveto + return + + + -11 callsubr + endchar + + + 316 callgsubr + hstem + 12 443 -18 callsubr + return + + + 145 callsubr + hstem + 52 86 314 86 vstem + -102 callsubr + return + + + 382 -179 rmoveto + 83 487 hlineto + 124 -38 66 -94 vhcurveto + return + + + 89 35 162 26 128 vhcurveto + -81 hlineto + -21 -115 rlineto + -2 hlineto + return + + + 75 vstem + 90 hmoveto + 75 256 hlineto + 47 -6 70 -4 47 vhcurveto + 4 hlineto + 45 -117 99 -253 rlineto + 40 hlineto + 99 253 45 117 31 callgsubr + -4 -48 -5 -69 -47 vvcurveto + -256 75 518 -93 vlineto + -100 -264 -38 -103 rlineto + -4 hlineto + -37 103 -102 264 rlineto + -93 hlineto + return + + + 43 -1 36 -7 327 callsubr + 7 -51 1 -44 -38 -58 -4 -57 -58 vvcurveto + return + + + 49 49 34 26 50 hhcurveto + 64 28 7 callgsubr + -46 66 -102 return + + + -78 -33 31 44 50 46 26 60 45 39 -15 -28 38 hvcurveto + 33 55 rlineto + 33 -45 -54 20 -58 hhcurveto + -100 -86 -42 -89 -45 26 -45 51 -18 hvcurveto + -4 vlineto + return + + + 11 51 12 47 10 51 rrcurveto + 4 hlineto + 10 -51 10 -47 12 -51 99 -395 rcurveline + 100 hlineto + 136 656 rlineto + -80 hlineto + -69 -357 -13 -70 -12 -71 -12 -71 rlinecurve + -4 hlineto + -16 71 -16 72 -16 69 -91 357 rcurveline + -76 hlineto + -91 -357 -15 -70 -16 -71 -15 -71 rlinecurve + -4 hlineto + -12 71 -14 70 -12 71 -69 357 rcurveline + -86 hlineto + return + + + 111 36 65 67 4 hvcurveto + -72 hlineto + -47 -2 -21 -39 -56 hhcurveto + -56 -21 39 47 -2 hvcurveto + -72 hlineto + -67 4 36 -65 111 hhcurveto + endchar + + + -75 hlineto + 6 -51 1 -44 -38 vvcurveto + -353 82 318 vlineto + return + + + -24 14 -19 20 28 vvcurveto + 34 22 20 45 3 vhcurveto + 246 callgsubr + return + + + rmoveto + 47 30 33 41 49 35 -39 -77 6 vhcurveto + -32 -30 -26 -11 -30 hhcurveto + -48 -27 33 46 hvcurveto + 52 -283 rmoveto + 96 74 70 147 123 -59 74 -93 -73 -56 -57 -75 -74 44 -51 78 37 33 14 27 28 hvcurveto + -100 -6 -47 -47 -58 hhcurveto + -27 -21 11 13 -19 hvcurveto + -27 -45 rlineto + -16 23 28 -14 45 hhcurveto + endchar + + + 7 callsubr + -9 -47 rlineto + 45 -3 22 -20 -34 vvcurveto + -28 -19 -20 -24 -14 vhcurveto + return + + + -46 -42 -47 -28 -63 hhcurveto + -124 -79 104 165 163 82 102 124 56 43 -25 -37 35 hvcurveto + 45 54 rlineto + 43 -38 -62 38 -80 hhcurveto + -167 -124 -129 -211 return + + + 40 19 28 31 46 vvcurveto + 66 -57 39 -67 -54 -40 -25 -39 -34 vhcurveto + 39 -34 rlineto + 27 22 28 20 29 hhcurveto + 43 28 -25 -37 -40 -39 -30 -67 hvcurveto + -41 vlineto + return + + + -92 341 callgsubr + 46 22 41 vvcurveto + 40 -44 19 -78 2 340 callsubr + -2 20 -11 -18 vvcurveto + -14 259 callgsubr + + + -119 -53 -38 -71 -71 -52 38 119 vhcurveto + 303 -83 -302 vlineto + return + + + -55 4 rlineto + -46 -3 -14 -33 -29 -47 -26 84 -71 hhcurveto + return + + + rmoveto + 8 33 rlineto + -24 6 -18 10 14 vvcurveto + 18 20 11 49 2 vhcurveto + -7 39 rlineto + -78 -2 -44 -19 -40 vvcurveto + -41 46 -22 48 -9 vhcurveto + return + + + 30 callgsubr + hstem + 3 465 -94 callsubr + return + + + 82 -25 callsubr + return + + + hstem + 72 83 197 84 vstem + -92 callgsubr + return + + + -16 -12 68 374 68 -26 callgsubr + return + + + rmoveto + -66 callgsubr + return + + + vstem + 338 -12 rmoveto + 85 64 35 60 52 hvcurveto + -46 52 rlineto + -45 callgsubr + -214 122 -126 164 hvcurveto + return + + + 268 55 -165 hlineto + 83 85 62 61 75 vvcurveto + 82 -52 44 -78 -53 -47 -31 -45 -30 vhcurveto + 38 -35 rlineto + 32 22 29 25 33 hhcurveto + 46 29 -31 -51 -59 -64 -61 -121 -109 hvcurveto + return + + + rmoveto + -77 callgsubr + + + rmoveto + -60 callgsubr + + + -165 -115 -127 -210 return + + + -36 55 rlineto + -27 -30 202 callsubr + -89 -61 75 111 112 64 76 88 39 30 -18 -25 28 hvcurveto + 42 54 112 callgsubr + return + + + rmoveto + 8 33 rlineto + -25 6 -17 10 13 vvcurveto + 19 20 10 49 3 vhcurveto + -7 39 rlineto + -78 -3 -44 -18 -41 vvcurveto + -41 46 -21 48 -9 vhcurveto + return + + + -3 -12 69 372 69 293 callsubr + hintmask 11110000 + 261 callsubr + hintmask 11101000 + -6 callsubr + hintmask 11110000 + 319 callgsubr + hintmask 11100100 + -74 callsubr + hintmask 11110000 + -99 callsubr + return + + + hstem + 46 85 280 85 vstem + -102 callgsubr + return + + + 58 14 53 28 71 vvcurveto + 58 -51 31 -87 2 vhcurveto + -9 -47 rlineto + 56 -2 27 -20 -31 vvcurveto + -36 -25 -18 -31 -12 vhcurveto + return + + + rmoveto + 266 57 -266 hlineto + return + + + 77 hlineto + 62 22 32 46 18 19 -4 -8 18 vhcurveto + 18 63 rlineto + 9 -22 -29 7 -30 hhcurveto + -97 -45 -62 -99 hvcurveto + return + + + -222 656 rlineto + -94 hlineto + return + + + -18 callgsubr + hintmask 1011110010000000 + 307 callsubr + hintmask 1011110001000000 + 43 callsubr + hintmask 0111110001000000 + 7 -76 rlineto + hintmask 0111110010000000 + 408 callgsubr + hintmask 1011110010000000 + -77 callsubr + return + + + -82 161 callgsubr + hstem + 196 84 200 callsubr + return + + + 656 -84 -275 -305 275 -83 return + + + 82 -93 callsubr + return + + + 80 43 73 vstem + -61 callgsubr + return + + + 15 0 21 2 17 vhcurveto + -64 hlineto + return + + + 54 callgsubr + 444 callgsubr + hintmask 1101101000100000 + 63 callgsubr + hintmask 1101100011000000 + -34 callsubr + hintmask 1101010101000000 + 49 callsubr + hintmask 1101100011000000 + 88 callsubr + hintmask 1101101001000000 + 289 callgsubr + hintmask 1101101000100000 + 289 callsubr + hintmask 1101010101000000 + 32 callgsubr + hintmask 1011101000100000 + 89 callgsubr + hintmask 1101100100100000 + 151 callsubr + hintmask 1011101000100000 + 354 callgsubr + return + + + -69 callsubr + endchar + + + -38 -29 42 -59 hhcurveto + -49 -22 -37 -51 -5 hvcurveto + 47 return + + + -70.5 70.5 return + + + 44 callsubr + 195 -56 rmoveto + 50 10 -39 201 -74 -14 rlineto + endchar + + + hstem + 52 86 -34 callgsubr + return + + + 30 0 66 247 64 213 66 hstemhm + 90 83 255 82 -44 82 hintmask 11110100 + 179 callgsubr + hintmask 11111000 + 62 20 34 58 65 vvcurveto + 115 -92 45 -133 vhcurveto + -195 hlineto + 83 -279 rmoveto + 213 101 vlineto + 102 52 -29 -76 -67 -46 -41 -112 hvcurveto + -97 -311 rmoveto + 247 114 vlineto + hintmask 11110100 + 115 64 -37 -81 -88 -66 -41 -113 hvcurveto + endchar + + + 55 16 55 39 79 vvcurveto + 29 -10 28 276 callgsubr + 6 -20 -19 vvcurveto + -55 -31 -29 -55 -11 vhcurveto + 14 -30 -32 7 -33 287 callgsubr + hvcurveto + return + + + 56 -7 62 -4 54 vhcurveto + 4 hlineto + 60 -111 192 -306 rlineto + 83 518 -77 -243 hlineto + return + + + 76 45 -24 -45 -45 -36 -25 -42 -41 -34 22 36 -24 341 callsubr + 30 52 -32 63 hhcurveto + return + + + 13 callsubr + 84 return + + + -24 166 callsubr + 5 callgsubr + return + + + -46 vlineto + -60 24 -33 53 vhcurveto + return + + + rmoveto + 56 hlineto + 362 680 rlineto + -56 hlineto + return + + + -5 callgsubr + -19 callgsubr + hlineto + return + + + 40 37 -14 -37 41 hvcurveto + return + + + -16 -12 65 170 59 152 64 hstemhm + 46 79 -79 80 292 78 hintmask 11101100 + 262 callgsubr + 121 104 87 167 169 -104 87 -121 -121 -104 -87 -169 -167 104 -87 121 hvcurveto + 446 vmoveto + 78 56 -56 -96 12 hvcurveto + -291 hlineto + 96 12 56 56 77 hhcurveto + -381 vmoveto + hintmask 11110100 + -82 -58 63 107 -6 hvcurveto + 293 hlineto + hintmask 11101100 + -108 -6 -58 -62 -83 hhcurveto + endchar + + + rmoveto + 82 hlineto + 114 140 -35 32 -118 -113 rlineto + -4 hlineto + -118 113 -35 -32 rlineto + endchar + + + rmoveto + 26 19 20 25 26 388 callgsubr + -20 -20 -26 -25 20 -20 26 hvcurveto + return + + + 48 9 45 21 41 vvcurveto + 41 -43 18 -78 3 340 callsubr + -3 20 -10 -19 vvcurveto + -13 -18 -10 -24 -6 vhcurveto + return + + + hstem + 74 84 252 -83 callsubr + return + + + -31 12 -25 18 36 vvcurveto + 31 27 20 56 2 vhcurveto + -9 47 rlineto + -87 -2 -51 -31 -58 vvcurveto + return + + + 153 callgsubr + 308 vlineto + 124 return + + + -23 -188 rmoveto + -46 -31 33 35 32 19 28 35 21 hvcurveto + 53 -22 48 -12 -48 vvcurveto + -37 -35 -30 -43 vhcurveto + endchar + + + 392 callsubr + 129 84 hstemhm + -31 83 30 77 37 83 hintmask 10110100 + -97 callsubr + hintmask 01111110 + -164 345 callsubr + return + + + 0 4 callsubr + return + + + vlineto + -45 -40 202 callsubr + return + + + 85 callgsubr + 73 51 100 -20 hstemhm + 52 80 -21 48 191 -79 callgsubr + -58 48 59 callsubr + -48 8 rlineto + -53 -7 -34 -55 -67 hhcurveto + -67 -34 55 53 -7 hvcurveto + -48 27 callsubr + return + + + 57 52 32 37 38 hvcurveto + 3 hlineto + return + + + -14 27 callgsubr + return + + + 235 -12 rmoveto + 318 callsubr + hvcurveto + -16 62 rlineto + -6 -16 -22 -7 -17 hhcurveto + -56 -19 34 60 hvcurveto + 270 208 callgsubr + return + + + -46 callgsubr + 139 -27 rmoveto + 55 -11 rlineto + return + + + rmoveto + 268 57 -268 hlineto + return + + + -94 callsubr + 47 return + + + 39 -12 70 424 36 hstem + 87 83 247 79 42 73 vstem + -62 callsubr + return + + + -45 161 callgsubr + hstem + 15 483 vstem + 15 hmoveto + 88 hlineto + 95 177 16 32 17 33 19 40 rlinecurve + 4 hlineto + 21 -40 18 -33 17 -32 96 -177 rcurveline + 92 hlineto + -191 335 179 321 rlineto + -88 hlineto + -87 -168 -16 -30 -13 -27 -18 -38 rlinecurve + -4 hlineto + -20 38 -14 27 -17 30 -89 168 rcurveline + -92 hlineto + 178 -317 rlineto + endchar + + + 226 callgsubr + hstem + 87 83 247 -33 callsubr + return + + + rmoveto + 8 callsubr + return + + + 264 0 71 120 67 51 215 callgsubr + -66 66 hstemhm + 401 84 hintmask 11110100 + 290 376 rmoveto + hintmask 11101100 + 113 callgsubr + hintmask 11110100 + 206 278 70 -411 vlineto + return + + + 53 callsubr + 116 -32 rmoveto + 68 197 -66 14 -45 -201 rlineto + 153 22 rmoveto + 24 18 17 25 25 -18 17 -24 -23 -18 -17 -25 -25 18 -17 23 hvcurveto + endchar + + + -296 199 callgsubr + hstem + 82 77 vstem + -97 callsubr + return + + + -69 6 -74 4 -66 vhcurveto + -4 hlineto + -71 136 -237 412 rlineto + -86 return + + + 21 -23 callsubr + return + + + -18 callgsubr + hintmask 1011100100000000 + 307 callsubr + hintmask 1011100010000000 + 43 callsubr + hintmask 0111100010000000 + 7 -76 rlineto + hintmask 0111100100000000 + 408 callgsubr + hintmask 1011100100000000 + -77 callsubr + hintmask 1011011000000000 + -49 return + + + -201 55 -55 139 return + + + -88 21 98 callsubr + return + + + rlineto + 4 hlineto + return + + + 433 vmoveto + -56 -47 45 71 71 46 42 57 57 46 -42 -71 -71 -47 -45 -56 hvcurveto + return + + + -72 -51 -38 -75 -50 hvcurveto + -3 hlineto + return + + + rmoveto + 49 26 -33 -46 -47 -29 -33 -42 -48 -35 39 77 -6 hvcurveto + 32 30 26 11 29 hhcurveto + 5 -210 rmoveto + 74 56 57 75 74 -44 51 -78 -37 -33 -14 -26 -28 hvcurveto + 99 7 46 47 58 hhcurveto + 27 21 -11 -13 19 hvcurveto + 26 45 rlineto + 16 -22 -28 14 -45 hhcurveto + -96 -74 -70 -147 -123 59 -74 92 hvcurveto + endchar + + + 214 callsubr + 239 111 callgsubr + return + + + 11 -29 195 -76 -11 rlineto + return + + + 45 hmoveto + 452 71 -349 hlineto + 346 536 rlineto + 49 -418 -70 314 vlineto + -345 -536 rlineto + return + + + 577 232 callsubr + hintmask 01110000 + -53 callsubr + hintmask 11110000 + 119 callgsubr + + + -206 108 return + + + -83 70 callsubr + return + + + -102 246 callsubr + -49 callsubr + return + + + rmoveto + 61 98 50 81 31 callgsubr + -4 -109 rlineto + -70 vlineto + -150 vmoveto + 58 104 58 46 -58 240 -72 hlineto + -164 -253 rlineto + -33 178 vlineto + return + + + rmoveto + 26 34 13 15 20 hvcurveto + 168 callsubr + return + + + 13 callgsubr + 7 return + + + 66 173 250 callgsubr + return + + + rmoveto + 44 38 15 20 31 hvcurveto + -24 40 rlineto + -16 -23 -28 -10 -31 hhcurveto + hintmask 11101100 + -60 -40 39 66 -4 hvcurveto + 217 hlineto + 3 15 1 7 13 vvcurveto + 64 -32 84 -100 vhcurveto + hintmask 11110100 + -81 -69 -65 -104 -108 70 -60 88 hvcurveto + -98 195 rmoveto + 59 8 34 34 48 hhcurveto + 58 19 -49 -44 hvcurveto + endchar + + + 108 callgsubr + 227 51 hstemhm + 64 78 19 60 151 83 hintmask 10111010 + -96 callsubr + hintmask 11011010 + -54 callgsubr + hintmask 10111010 + 124 callgsubr + hintmask 10111110 + -125 589 44 callsubr + return + + + 46 15 50 37 81 vvcurveto + 29 -10 28 -13 22 408 callsubr + -16 6 -20 -19 vvcurveto + -66 -37 -23 -47 -7 vhcurveto + return + + + -57 -46 -35 -25 -50 hhcurveto + -64 -27 449 callsubr + -308 64 callgsubr + return + + + 84 callsubr + 144 54 hstemhm + 46 80 -80 81 259 72 hintmask 11101010 + -70 callsubr + hintmask 11100110 + -81 callgsubr + hintmask 11101010 + -86 callgsubr + hintmask 11111010 + -227 288 -20 callsubr + return + + + 156 callgsubr + 33 20 33 35 26 hvcurveto + -33 31 rlineto + -48 -35 -39 -48 -58 181 callsubr + return + + + 244 29 274 callgsubr + endchar + + + -3 -184 -21 193 69 372 69 -2 callsubr + 258 85 hintmask 11100110 + 82 -205 rmoveto + 82 164 hlineto + -2 85 rlineto + -35 45 45 -21 45 hhcurveto + 448 callsubr + 151 -67 97 -125 hvcurveto + hintmask 11101010 + -57 -54 -31 -37 -44 hvcurveto + -3 hlineto + hintmask 11011010 + -7 56 rlineto + hintmask 11010110 + -68 hlineto + 201 -429 476 callsubr + hintmask 11100110 + 234 callsubr + hintmask 11010110 + -120 -59 -73 -80 vhcurveto + endchar + + + -54 -224 57 159 68 -39 -21 154 55 214 63 -48 60 return + + + 45 hmoveto + 388 69 -287 hlineto + 283 400 rlineto + 49 -359 -68 258 vlineto + -283 -401 rlineto + return + + + rmoveto + 93 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + 250 38 278 callgsubr + endchar + + + 90 -1 callgsubr + return + + + 97 callgsubr + 203 -21 97 callgsubr + endchar + + + 17 callgsubr + endchar + + + -184 387 52 234 51 hstemhm + 33 64 163 283 callsubr + -51 51 hintmask 11110000 + 170 387 rmoveto + hintmask 11101000 + 37 29 19 24 26 hvcurveto + 4 hlineto + 5 -35 rlineto + hintmask 11110000 + 51 321 hlineto + hintmask 11100100 + -48 hlineto + -6 -31 rlineto + -4 hlineto + 25 -27 -29 14 -34 hhcurveto + -73 -68 -62 -103 hvcurveto + hintmask 11110000 + -109 52 -63 85 vhcurveto + 14 52 rmoveto + -59 -28 43 79 68 39 44 47 24 26 -9 -23 27 hvcurveto + -162 vlineto + -27 -27 -23 -13 -26 hhcurveto + endchar + + + 83 callgsubr + 102 108 rmoveto + 111 109 -53 36 -95 -119 rlineto + 141 -134 rmoveto + 2 callsubr + + + 82 hmoveto + 82 312 hlineto + 82 33 49 30 41 hhcurveto + 20 11 -3 -5 16 hvcurveto + return + + + 246 -224 rmoveto + 151 95 78 90 81 -57 35 -113 hvcurveto + return + + + vlineto + -124 46 -66 103 vhcurveto + return + + + 65 hintmask 11011010 + -98 callsubr + hintmask 10111010 + -56 callgsubr + hintmask 11011010 + -101 callsubr + return + + + 106 -12 70 253 68 219 70 hstemhm + 52 82 -82 84 394 83 hintmask 11101100 + 332 -12 rmoveto + 165 116 124 219 217 -116 120 74 callgsubr + -119 -218 -219 115 -124 165 hvcurveto + 610 vmoveto + 109 74 -79 -140 13 hvcurveto + -392 hlineto + 140 13 74 79 109 hhcurveto + -540 vmoveto + hintmask 11110100 + -115 -76 90 163 -7 hvcurveto + 396 hlineto + hintmask 11101100 + -163 -7 -76 -90 -115 hhcurveto + endchar + + + -61 -12 68 244 63 220 67 hstemhm + 159 149 32 84 -61 83 hintmask 11110100 + 236 -12 rmoveto + 117 93 69 113 88 -61 56 -77 18 477 callsubr + 69 26 47 49 77 vvcurveto + 103 -80 59 -111 -75 -59 -34 -46 -49 vhcurveto + 44 -52 rlineto + 38 38 45 27 53 hhcurveto + 68 42 -39 -62 -67 -45 -52 -136 hvcurveto + -63 vlineto + hintmask 11110100 + 152 52 -51 -76 -71 -55 -46 -77 -75 -50 36 40 -38 hvcurveto + -42 -54 rlineto + -47 43 65 -43 102 hhcurveto + endchar + + + 129 callsubr + hintmask 11011000 + 35 callsubr + hintmask 11100100 + 159 callgsubr + hintmask 11011000 + 21 callsubr + hintmask 11100100 + 8 callgsubr + + + 195 114 rmoveto + 54 22 40 52 3 hvcurveto + -45 5 rlineto + -29 -4 -10 -17 -24 hhcurveto + return + + + 56 -4 rlineto + 43 4 19 23 25 hhcurveto + return + + + 57 -8 20 -14 -26 vvcurveto + -29 -25 -15 -84 -6 vhcurveto + return + + + -212 rmoveto + 27 34 419 callsubr + 409 callsubr + -12 -5 -16 hhcurveto + -24 return + + + hhcurveto + -150 -111 -102 -170 -173 107 -97 148 hvcurveto + return + + + -165 -165 -115 return + + + 61 54 32 38 46 hvcurveto + 3 hlineto + return + + + -14 21 -21 387 72 101 177 callgsubr + 59 -59 152 hstemhm + 82 82 225 82 hintmask 11001110 + 82 hmoveto + 82 313 hlineto + 49 49 34 25 297 callsubr + -38 -91 hvcurveto + -258 82 269 406 callgsubr + -67 -49 -37 -44 -46 vhcurveto + 3 100 rlineto + 82 182 vlineto + hintmask 11010110 + 59 -182 vlineto + hintmask 11001110 + 93 -82 vlineto + hintmask 11010110 + -93 vlineto + hintmask 11100110 + -74 -5 rlineto + hintmask 11001110 + -54 74 vlineto + endchar + + + rmoveto + 45 22 rlineto + -51 80 -20 83 89 vvcurveto + 88 20 84 51 78 vhcurveto + -45 22 rlineto + -57 -81 -31 -79 -112 vvcurveto + -113 31 -80 57 -81 vhcurveto + endchar + + + 180 callsubr + 120 108 hstemhm + 69 483 callgsubr + hintmask 11101000 + 286 callsubr + hintmask 11110000 + 324 callsubr + + + vstem + 37 callgsubr + return + + + vstem + 55 callgsubr + return + + + hstemhm + 75 89 callsubr + return + + + -62 -12 66 157 59 163 458 callgsubr + 238 -12 rmoveto + 118 94 97 159 160 -92 94 -122 -68 -55 -19 -31 -45 hvcurveto + 29 -57 rlineto + 25 37 40 17 49 hhcurveto + 88 52 -66 -97 5 hvcurveto + -327 hlineto + -2 -12 -2 -18 -18 vvcurveto + -145 78 -89 123 vhcurveto + hintmask 11110100 + -2 66 rmoveto + -77 -49 52 105 hvcurveto + 259 hlineto + -100 -9 -49 -57 -75 hhcurveto + endchar + + + rmoveto + 26 20 19 27 26 -20 19 -26 -26 -19 -19 -26 -27 19 -19 26 hvcurveto + return + + + 257 -220 rmoveto + 137 79 75 124 hvcurveto + return + + + -54 -12 153 callsubr + return + + + -61 -86 69 290 63 167 71 hstem + 87.5 74 204.5 83 vstem + 234 -86 rmoveto + 111 104 79 141 138 -89 64 -109 -39 -29 -11 -16 -30 hvcurveto + 17 194 rlineto + 247 71 -319 hlineto + -21 -312 44 -28 rlineto + 26 38 27 13 44 hhcurveto + 82 54 -53 -89 -90 -62 -58 -78 -75 -48 35 37 -38 hvcurveto + -40 -52 rlineto + -45 44 63 -44 102 hhcurveto + endchar + + + 317 callgsubr + hstem + 55 79 174 79 vstem + -73 callsubr + endchar + + + 250 31 rmoveto + 47 11 46 19 53 vvcurveto + 47 -44 24 -78 2 vhcurveto + -7 -41 rlineto + 49 -2 20 -13 -26 vvcurveto + -21 -17 -11 -25 -7 vhcurveto + endchar + + + 12 -376 rmoveto + -88 -53 33 52 28 15 29 35 25 hvcurveto + return + + + 373 rmoveto + 88 51 60 66 vhcurveto + hintmask 11111000 + 86 51 -71 -137 8 hvcurveto + -61 -42 -53 -25 -46 hhcurveto + hintmask 11110100 + -84 -37 56 90 hvcurveto + 96 -459 rmoveto + 146 100 116 244 194 -85 118 -140 -106 -89 -87 -126 -133 67 -75 118 56 59 30 50 41 hvcurveto + -196 -7 -71 -66 -93 hhcurveto + -43 -36 16 30 -32 hvcurveto + -35 -58 rlineto + -36 43 43 -21 64 hhcurveto + endchar + + + 266 201 callsubr + return + + + 80 0 68 253 45 -45 47 220 68 hstemhm + 112 83 305 86 hintmask 10111100 + 112 150 callsubr + -288 hlineto + hintmask 11011100 + -79 -4 rlineto + hintmask 10111100 + -43 79 vlineto + 83 -253 rmoveto + 253 149 47 -149 220 371 callsubr + + + -35 callgsubr + hintmask 11011100 + 33 callsubr + hintmask 11110110 + 136 callgsubr + + + rmoveto + 100 165 -59 28 -86 -172 rlineto + 196 -21 rmoveto + 99 165 -58 28 -87 -172 rlineto + endchar + + + 142 callgsubr + -17 -62 288 callgsubr + return + + + 83 208 96 hlineto + 129 -208 rlineto + 89 hlineto + -138 218 rlineto + return + + + rmoveto + 105 141 -56 32 -92 -152 rlineto + return + + + -5 callgsubr + hlineto + return + + + -119 -106 -93 -163 return + + + 224 callsubr + hstem + 52 86 336 76 vstem + -87 callsubr + return + + + -85 callgsubr + -48 65 rmoveto + 93 327 callgsubr + 93 -69 34 26 -93 90 267 callsubr + -90 rlineto + endchar + + + 16 0 65 183 45 -45 47 157 66 hstemhm + 110 83 244 86 hintmask 10111100 + 110 106 callsubr + -223 hlineto + hintmask 11011100 + -77 -4 rlineto + hintmask 10111100 + -43 77 vlineto + 83 -183 rmoveto + 183 126 47 -126 157 372 callgsubr + + + 107 44 77 74 5 hvcurveto + return + + + -31 380 callgsubr + 376 callgsubr + 37 65 vstem + 305 72 callgsubr + -23 15 31 48 43 59 49 hvcurveto + 111 -84 callsubr + -656 192 hlineto + -35 -24 -37 -47 -54 vvcurveto + -57 43 -30 52 vhcurveto + return + + + -61 -12 68 286 62 163 71 hstem + 366 83 vstem + 234 -12 rmoveto + 111 104 78 138 138 -89 62 -109 -39 -29 -10 -16 -30 hvcurveto + 17 189 rlineto + 247 71 -319 hlineto + -21 -307 44 -28 rlineto + 25 38 27 14 44 hhcurveto + 82 54 -52 -88 -89 -62 -57 361 callgsubr + + + 83 vstem + 82 callsubr + return + + + 335 227 callsubr + 121 -39 93 -64 58 hvcurveto + return + + + -48 199 callgsubr + 32 -20 return + + + 396 callsubr + hstemhm + 5 439 hintmask 10110000 + 169 callgsubr + hintmask 01110000 + -17 -71 rlineto + hintmask 10110000 + -5 14 19 -3 25 hhcurveto + return + + + hmoveto + 83 260 108 hlineto + 144 98 65 138 144 -99 49 -147 hvcurveto + -187 hlineto + 83 -328 rmoveto + 261 94 vlineto + 115 58 -31 -95 -93 -55 -42 -114 hvcurveto + return + + + 51 -79 callsubr + return + + + rlineto + 31 -34 -44 26 -64 hhcurveto + -125 -109 -93 -163 return + + + 36 71 36 72 35 71 rrcurveto + 4 -332 -172 hlineto + -221 -258 rmoveto + 88 hlineto + 99 191 rlineto + 206 -191 372 71 -288 238 232 71 -232 hlineto + return + + + 26 20 20 25 26 -20 248 callsubr + -26 -25 19 -20 26 hvcurveto + endchar + + + 28 callsubr + endchar + + + 124 callsubr + 108 callsubr + 656 -83 hlineto + return + + + 485 callgsubr + hstemhm + 82 80 241 80 hintmask 01011100 + 82 hmoveto + 76 hlineto + 185 278 rlineto + hintmask 01101100 + 121 callgsubr + hintmask 10011100 + 179 callsubr + return + + + 149 callsubr + 17 264 callsubr + return + + + 46 26 -84 71 hhcurveto + endchar + + + vstem + 133 callgsubr + return + + + 17 29 29 45 18 30 rrcurveto + 4 hlineto + -4 -63 -4 -65 -52 vvcurveto + -202 80 486 -77 vlineto + -184 -277 rlineto + return + + + 226 hmoveto + 84 158 callsubr + return + + + 75 vlineto + 153 77 -92 -165 -166 -77 -97 -153 hvcurveto + return + + + -128 69 -64 116 vhcurveto + return + + + 50 195 -76 11 return + + + 85 hintmask 11110110 + 211 callgsubr + hintmask 11101110 + -42 -43 11 55 -45 hvcurveto + 124 vlineto + 122 61 60 71 90 38 -72 -107 vhcurveto + hintmask 11110110 + -120 -58 -73 -72 vhcurveto + return + + + 94 21 268 callgsubr + 275 -20 hstem + 90 83 305 84 vstem + 57 callgsubr + endchar + + + 335 callsubr + hstemhm + 90 82 312 82 hintmask 01011100 + 90 hmoveto + 88 hlineto + 241 414 rlineto + hintmask 01101100 + 300 callsubr + hintmask 10011100 + 212 callgsubr + return + + + 26 19 19 28 29 -19 19 -26 -27 -19 -19 -29 -28 19 -19 27 hvcurveto + return + + + -295 451 callgsubr + 518 -20 hstemhm + 43 65 -18 83 hintmask 11110000 + 191 callsubr + hintmask 11101000 + 450 callsubr + 518 -83 -518 vlineto + hintmask 11110000 + 20 hlineto + -32 -29 -35 -39 -57 181 callsubr + return + + + 55 42 36 54 55 -42 36 -55 -56 -41 -36 -55 -54 41 -36 56 hvcurveto + 36 vmoveto + -29 -23 19 35 34 23 20 29 27 24 -20 -34 -35 -24 -19 -27 hvcurveto + endchar + + + 203 144 callgsubr + return + + + 180 282 rmoveto + 19 57 15 54 18 58 rrcurveto + 4 hlineto + 18 -57 15 -55 19 -57 24 -74 rcurveline + -156 hlineto + return + + + vstem + 136 callsubr + return + + + 11 433 callgsubr + hstem + 90 83 269 83 vstem + 20 callsubr + return + + + 47 26 -71 75 hhcurveto + endchar + + + -19 259 callsubr + 163 callsubr + return + + + 160 198 148 callsubr + return + + + 210 148 callsubr + endchar + + + hstemhm + 52 80 218 -79 callgsubr + return + + + -62 130 rlineto + 76 -38 -39 20 -53 hhcurveto + -13 -13 -2 -3 -8 hvcurveto + 14 -75 rlineto + 2 7 7 0 7 hhcurveto + 26 19 -10 -50 25 hvcurveto + 57 -117 rlineto + return + + + vlineto + 145 callgsubr + return + + + -312 -206 55 hstemhm + 38 61 -17 82 hintmask 11000000 + 129 313 callgsubr + -13 -12 -5 -15 hhcurveto + -25 -22 15 31 hvcurveto + hintmask 10100000 + 443 callsubr + hintmask 11000000 + 20 hlineto + -28 -28 -36 -39 -54 vvcurveto + 290 callsubr + return + + + 367 217 callsubr + return + + + -59 -12 -36 -48 -17 -17 4 4 -12 vhcurveto + return + + + -23 246 callsubr + 273 -39 callsubr + return + + + -39 43 51 -23 45 hhcurveto + -14 69 rmoveto + -32 -44 14 37 -43 hvcurveto + 255 vlineto + 43 46 43 257 callgsubr + -120 -59 -73 -80 hvcurveto + return + + + 486 callsubr + 23 -20 hstemhm + 154 83 305 84 hintmask 11011100 + 154 98 callgsubr + hintmask 11101100 + -19 callgsubr + vlineto + -118 -192 rmoveto + hintmask 11011100 + 58 callsubr + + + 49 -44 callsubr + + + vlineto + -132 -4 -124 -89 -158 vvcurveto + -159 124 -90 132 -4 vhcurveto + -171 253 rmoveto + 115 77 69 94 4 vhcurveto + -378 vlineto + -94 4 -77 70 116 vvcurveto + 418 hmoveto + -116 -76 -70 -95 -4 vhcurveto + 378 vlineto + 101 -4 70 -69 -115 vvcurveto + endchar + + + 4 -83 493 callsubr + 21 -56 hhcurveto + -111 260 callgsubr + return + + + 2 -12 154 callgsubr + return + + + -39 -91 hvcurveto + -297 82 return + + + 177 callsubr + -12 -20 return + + + -12 251 callsubr + return + + + -212 43 callgsubr + -16 hhcurveto + -23 -24 15 31 return + + + 99 -46 -42 23 -60 hhcurveto + -12 -14 -2 -4 -10 hvcurveto + 14 -78 rlineto + 3 8 10 1 6 hhcurveto + 29 24 -10 -73 33 hvcurveto + 70 -157 rlineto + return + + + 115 63 66 79 92 -78 29 -70 26 hvcurveto + return + + + -38 -22 -36 -38 -49 vvcurveto + -59 55 -50 82 vhcurveto + return + + + -110 -16 callsubr + return + + + 21 388 callsubr + return + + + 2 29 callgsubr + 50 154 callgsubr + return + + + 82 hmoveto + 82 352 hlineto + 50 45 41 25 36 hhcurveto + 62 353 callsubr + 478 callsubr + 39 25 38 hhcurveto + 61 29 7 callgsubr + -48 66 -100 -59 -50 -38 -55 -51 vhcurveto + 58 -20 -40 35 -74 hhcurveto + return + + + 257 callsubr + hstem + 130 83 107 callsubr + return + + + 106 166 callsubr + return + + + 38 30 -42 58 hhcurveto + return + + + rlineto + -4 -10 -13 -4 return + + + 595 169 callsubr + + + 120 -12 rmoveto + 74 41 42 69 30 hvcurveto + 179 419 rlineto + -82 hlineto + -88 -208 -39 -108 rlineto + -4 hlineto + -44 108 -95 208 rlineto + -87 hlineto + 189 -394 -12 -25 rlineto + -25 -13 -21 -13 -32 hhcurveto + -15 -11 2 4 -11 hvcurveto + return + + + 16 callsubr + 110 -32 rmoveto + 43 10 -41 201 -66 -14 rlineto + 180 -165 6 callsubr + + + -48 -20 49 -70 hhcurveto + -51 -28 -40 -52 -3 hvcurveto + 42 -4 rlineto + 31 4 17 15 23 hhcurveto + return + + + 268 callgsubr + 152 236 callgsubr + return + + + hstem + 90 83 305 186 callgsubr + return + + + 247 callsubr + 456 callgsubr + vhcurveto + return + + + -308 vlineto + -124 return + + + -12 rmoveto + 124 80 101 198 198 -80 101 -124 -125 -80 -101 -198 -198 80 -101 125 hvcurveto + 66 vmoveto + -79 -46 87 146 146 46 86 79 78 46 -86 -146 -146 -46 -87 -78 hvcurveto + endchar + + + 56.5 -56.5 return + + + -99 callgsubr + -49 43 rmoveto + 93 return + + + 90 hmoveto + 209 hlineto + 147 102 63 129 90 -55 52 -79 15 hvcurveto + 4 vlineto + return + + + 205 callsubr + 227 51 hstemhm + 51 79 return + + + 39 callgsubr + 119 -21 return + + + 44 20 23 47 5 hvcurveto + return + + + rmoveto + 48 23 -31 60 -32 50 -33 38 rlinecurve + 5 21 3 23 25 vvcurveto + 509 -83 -514 vlineto + 14 -27 -28 8 -31 hhcurveto + -74 -43 -41 -60 -60 47 -50 76 61 43 25 41 27 hvcurveto + 24 -31 24 -37 24 -44 rrcurveto + return + + + -120 -12 71 459 -20 220 callgsubr + endchar + + + 242 rmoveto + 149 218 18 31 18 28 16 31 rlinecurve + 4 hlineto + -2 -34 -3 -55 -34 vvcurveto + -185 vlineto + -242 vmoveto + 78 176 87 66 -87 396 -92 hlineto + -273 -408 rlineto + -54 287 vlineto + endchar + + + 86 vstem + 194 callgsubr + return + + + -472 -12 680 hstem + -167 418 vstem + -167 284 callsubr + endchar + + + rmoveto + -105 callgsubr + return + + + -56 -15 -45 -36 -70 vvcurveto + -91 85 -55 120 vhcurveto + return + + + -3 21 -10 454 callsubr + -9 return + + + -16 167 callsubr + return + + + rmoveto + 57 hlineto + 11 378 2 94 rlineto + -83 hlineto + 2 -94 rlineto + return + + + rmoveto + 9 38 rlineto + return + + + 90 150 callsubr + 409 callgsubr + 520 123 callgsubr + return + + + 65 -59 callsubr + + + hintmask 10111000 + 307 callsubr + hintmask 10110100 + 43 callsubr + hintmask 01110100 + 7 -76 rlineto + hintmask 01111000 + 68 return + + + 162 callsubr + -12 return + + + 45 rlineto + -9 -12 -13 -5 return + + + -12 68 430 -20 return + + + -231 161 callgsubr + 23 -20 hstemhm + 154 83 hintmask 10110000 + 154 hmoveto + 83 hlineto + hintmask 11010000 + 656 -83 vlineto + -118 -192 415 callsubr + + + 86 vstem + 51 callsubr + return + + + 665 84 hstem + 10 41 vstem + -30 562 rmoveto + 57 26 24 45 47 vvcurveto + 45 -18 24 -32 -22 -19 -15 -30 -26 21 -13 20 3 3 0 1 3 vhcurveto + -2 -30 -18 -23 -37 -19 rrcurveto + endchar + + + 30 callgsubr + 134 47 hstem + 3 465 120 callgsubr + return + + + 13 hmoveto + 89 hlineto + 122 219 rlineto + 80 -219 73 219 80 hlineto + 122 -219 rlineto + 89 hlineto + -153 255 38 97 rlineto + 56 23 22 10 277 callsubr + return + + + rmoveto + 137 155 rlineto + 62 vlineto + -137 155 -35 -30 118 -156 -118 -158 rlineto + return + + + 197 callgsubr + -12 -5 return + + + 101 -80 -21 417 101 0 -20 return + + + 131 67 -131 136 vlineto + return + + + 143 -12 308 callgsubr + return + + + -61 233 68 vlineto + return + + + 78 -179 rmoveto + 83 hlineto + -1 86 -2 63 -3 87 rrcurveto + -52 45 50 -17 52 hhcurveto + 102 98 97 165 154 -74 94 -136 -118 -96 -81 -169 hvcurveto + 209 -191 rmoveto + return + + + -71 -134 rlineto + -4 hlineto + 4 66 6 74 69 vvcurveto + 339 -82 vlineto + return + + + rmoveto + 51 28 40 52 3 hvcurveto + -42 4 rlineto + -31 -4 -17 -15 -23 hhcurveto + return + + + 87 249 callsubr + return + + + 71 206 70 return + + + 125 349 rmoveto + -48 callsubr + return + + + 6 hmoveto + 92 hlineto + 170 311 rlineto + 95 -311 79 311 95 hlineto + 170 -311 rlineto + return + + + -12 177 callsubr + return + + + 73 534 73 return + + + hstem + 267 84 vstem + 190 -12 rmoveto + 112 49 76 93 hvcurveto + 361 -84 -355 vlineto + -76 -29 -28 -56 -38 -31 19 39 -24 vhcurveto + -58 -41 rlineto + -57 34 52 -31 73 hhcurveto + return + + + hlineto + 98 62 71 65 112 vvcurveto + 127 -90 65 -113 -94 -61 -43 -44 -41 vhcurveto + 44 -54 rlineto + 38 33 45 35 68 hhcurveto + 80 46 -49 -77 -83 -53 -54 -115 -65 hvcurveto + return + + + 166 callgsubr + endchar + + + -82 -33 -49 -30 -41 hhcurveto + -19 -11 3 5 -17 hvcurveto + -16 -72 rlineto + -7 16 15 -3 21 hhcurveto + return + + + 73 -194 rlineto + 47 hlineto + 73 194 31 callgsubr + -7 -105 rlineto + return + + + vlineto + -71 25 -39 62 vhcurveto + return + + + 25 -12 410 callsubr + return + + + 224 callgsubr + -137 55 235 callsubr + -47 116 rlineto + -73 hlineto + return + + + -3 -220 66 159 68 356 69 return + + + 60 -44 59 127 60 -47 60 return + + + 68 374 68 return + + + vstem + 234 callgsubr + return + + + rmoveto + 36 28 -118 158 118 156 -36 30 -136 -155 rlineto + -62 vlineto + return + + + hvcurveto + -11 62 rlineto + return + + + 90 hmoveto + 83 165 hlineto + 90 95 158 -260 rlineto + 89 hlineto + -197 318 173 200 rlineto + -92 hlineto + -218 -246 rlineto + -3 246 -83 hlineto + return + + + rmoveto + 50 hlineto + 16 167 3 92 rlineto + -88 hlineto + 3 -92 rlineto + return + + + 39 20 45 -10 45 -16 -20 26 225 callsubr + return + + + rmoveto + 15 callsubr + return + + + 199 106 rmoveto + 47 20 38 51 5 hvcurveto + -43 4 rlineto + -29 -5 -8 -13 -20 hhcurveto + return + + + -59 46 -34 45 -16 vhcurveto + 69 11 rmoveto + 55 -11 return + + + 486 -82 hlineto + return + + + 32 -217 156 callsubr + return + + + 71 -44 callsubr + + + rmoveto + 18 38 rlineto + -46 4 -25 12 26 vvcurveto + 28 25 15 84 5 vhcurveto + -8 41 rlineto + -106 -6 -59 -28 -58 vvcurveto + -45 30 -22 87 -10 vhcurveto + endchar + + + 47 318 49 hstemhm + 45 229 callgsubr + hintmask 11100100 + 182 return + + + 255 vlineto + 43 48 41 257 callgsubr + return + + + -9 47 rlineto + -72 -2 -46 -32 -61 vvcurveto + return + + + hmoveto + 83 235 248 -235 return + + + rmoveto + 97 36 63 99 hvcurveto + return + + + hmoveto + 84 254 hlineto + return + + + 63 150 66 return + + + bc15430a 0b + + + 124 callsubr + 99 57 108 callsubr + 656 -83 hlineto + -92 275 callsubr + + + 51 139 256 callgsubr + hintmask 11101000 + 180 return + + + rmoveto + 72 hlineto + 99 96 -33 27 -100 -75 rlineto + -4 hlineto + -100 75 -33 -27 rlineto + return + + + 74 -43 76 214 71 -56 79 hintmask 11100100 + return + + + 435 callsubr + 240 63 -48 64 return + + + 23 41 hhcurveto + 92 36 -72 -107 return + + + 73 210 69 255 73 return + + + -18 -10 -24 -6 vhcurveto + endchar + + + -100 -98 -158 return + + + 37 hvcurveto + 3 hlineto + return + + + 271 -12 rmoveto + return + + + rmoveto + 51 8 32 53 65 hhcurveto + 65 32 -53 -51 8 hvcurveto + 51 8 rlineto + 74 -5 -44 77 -107 hhcurveto + -107 -44 -77 -74 -5 hvcurveto + endchar + + + 87 434 callgsubr + 299 83 346 callsubr + 586 299 -586 83 656 -465 hlineto + endchar + + + 239 callgsubr + rlineto + return + + + -192 328 callgsubr + return + + + hvcurveto + 206 hmoveto + return + + + -21 309 72 return + + + 21 273 callsubr + return + + + -309 449.5 240 hstem + 82 103 vstem + 82 450 284 callgsubr + endchar + + + hstemhm + 109 198 -82 82 hintmask 11010000 + 79 hmoveto + 360 68 -132 return + + + 209 -116 128 -165 -30 callgsubr + return + + + 214 callsubr + 190 39 20 50 -46 -20 58 50 -79 callsubr + return + + + rmoveto + 48 8 44 20 51 vvcurveto + 46 -42 24 -78 3 vhcurveto + -9 -42 rlineto + 50 190 callgsubr + -25 -6 vhcurveto + return + + + rmoveto + -117 -77 106 164 163 77 101 117 117 77 -101 -163 -164 210 callsubr + hvcurveto + endchar + + + -13 22 vhcurveto + -64 -30 rlineto + 9 -16 return + + + rmoveto + 30 30 -85 95 -35 -37 rlineto + return + + + rmoveto + 102 86 -35 39 -97 -93 rlineto + return + + + rlineto + -84 hlineto + -78 -171 -20 -44 -19 -44 -22 -47 rlinecurve + -4 hlineto + -21 47 -19 44 -20 44 -78 171 rcurveline + -86 hlineto + return + + + rmoveto + -23 -29 9 22 -26 hvcurveto + 161 vlineto + 28 28 28 15 26 hhcurveto + 56 25 -43 -69 -79 -37 -44 -48 hvcurveto + endchar + + + 49 105 41 93 49 hstemhm + 28 60 -60 61 166 55 hintmask 11110100 + return + + + 98 40 56 51 6 hvcurveto + -47 8 rlineto + -33 -5 -30 -35 -62 hhcurveto + return + + + 103 callgsubr + -51 8 rlineto + -51 -8 -32 -53 -65 hhcurveto + return + + + rmoveto + 54 -1 34 149 15 91 -81 1 rlineto + return + + + 139 hmoveto + 96 hlineto + 78 290 rlineto + return + + + 162 hmoveto + 99 hlineto + 97 395 rlineto + return + + + hhcurveto + 99 callgsubr + return + + + rlineto + -7 377 callsubr + return + + + -44 -30 -27 -39 -41 vvcurveto + return + + + 21 260 callsubr + return + + + 220 -12 rmoveto + return + + + 3 hlineto + 7 -57 rlineto + hintmask 11111100 + 319 callgsubr + hintmask 11111001 + -67 hlineto + -7 -47 rlineto + -2 hlineto + 39 -44 294 callsubr + return + + + hstem + 51 793 vstem + 844 745 rmoveto + -793 -2 hlineto + 395 -823 31 callgsubr + 394 823 rlineto + return + + + vvcurveto + 69 39 48 72 45 31 -22 -31 25 vhcurveto + 48 47 rlineto + 43 -35 -49 32 -71 hhcurveto + -111 -75 -71 -113 return + + + 312 callgsubr + endchar + + + hlineto + 124 85 47 116 108 -85 43 -124 hvcurveto + return + + + 73 595 -20 return + + + hintmask 11111000 + -71 callsubr + return + + + -71 callsubr + hintmask 11110110 + return + + + 262 rmoveto + -83 -57 75 111 112 57 76 83 84 56 -76 -112 -111 -56 -75 -84 hvcurveto + return + + + 60 111 31 callgsubr + -4 -54 -7 -62 -56 vvcurveto + -245 77 518 -85 vlineto + -190 -306 rlineto + return + + + vlineto + 114 58 -37 -83 -93 -59 -39 -111 hvcurveto + endchar + + + 49 517 rmoveto + 103 callgsubr + return + + + -62 66 -419 82 419 203 vlineto + return + + + 236 callsubr + endchar + + + -44 31 48 -32 69 hhcurveto + return + + + hlineto + 9 209 rlineto + 50 return + + + 68 442 -20 return + + + 68 712 -83 -187 hlineto + 151 callgsubr + hvcurveto + return + + + rlineto + 71 vlineto + -143 -5 5 160 rlineto + -70 hlineto + 5 -160 -143 5 rlineto + -71 vlineto + 143 return + + + 43 -86 callsubr + return + + + 260 rmoveto + -48 -38 23 55 62 56 40 162 20 hvcurveto + -135 vlineto + -42 -47 -38 -23 -47 hhcurveto + return + + + 355 callsubr + 34 162 callsubr + return + + + 62 rlineto + -4 -10 -12 -4 -14 hhcurveto + -38 -12 33 55 hvcurveto + return + + + -58 -51 -36 -46 -42 hvcurveto + -3 hlineto + return + + + -91 -209 68 627 -20 return + + + -139 -12 495 callgsubr + return + + + 72.5 return + + + 68 486 hlineto + return + + + 72 166 67 hstemhm + 82 80.5 -80.5 82 225 82 hintmask 11101100 + return + + + vstem + 850 739 rmoveto + -2 hlineto + -823 -394 rlineto + -4 vlineto + 823 -395 rlineto + 2 hlineto + return + + + -43 -76 callsubr + return + + + rlineto + 76 2 29 45 64 hhcurveto + 17 20 -4 -8 18 hvcurveto + 19 63 rlineto + 9 -22 -31 7 -29 hhcurveto + return + + + -147 378 callgsubr + 316 callsubr + 419 221 67 -303 hlineto + return + + + rmoveto + 56 137 126 53 -126 136 -56 -136 -125 -53 125 hlineto + endchar + + + 735 57 hstem + -134 268 vstem + -134 735 59 callgsubr + + + 69 31 callgsubr + return + + + rmoveto + 12 38 rlineto + return + + + 83 hintmask 11101000 + 72 callsubr + hintmask 11110000 + 42 return + + + -60 434 callgsubr + vstem + 90 hmoveto + 83 586 117 callsubr + hlineto + return + + + 209 callgsubr + 178 116 callsubr + 51 79 79 47 return + + + 208 98 callgsubr + return + + + 256 callsubr + -35 47 return + + + 115 78 47 108 106 -78 46 -115 hvcurveto + return + + + 82 hmoveto + 82 219 96 hlineto + 135 -219 rlineto + return + + + vstem + 90 hmoveto + 370 71 379 callgsubr + hlineto + return + + + 402 callgsubr + hstem + 90 75 return + + + 429 62 -429 hlineto + return + + + -206 55 139 return + + + vstem + 439 callsubr + return + + + -153 rmoveto + 48 9 return + + + -72.5 return + + + 0 66 395 69 hstemhm + 44 203 -192 84 206 97 -97 204 -95 84 return + + + -194 188 callgsubr + return + + + vstem + 45 -54 rmoveto + 2 hlineto + 823 395 rlineto + 4 vlineto + -823 394 rlineto + -2 hlineto + return + + + rmoveto + 24 18 17 22 23 -18 17 -24 -24 -18 -17 -23 -22 18 -17 24 hvcurveto + endchar + + + 122 -9 63 378 63 hstem + 46 85 171 76 171 85 vstem + 302 return + + + 104 58 46 -58 240 -72 vlineto + 469 callgsubr + + + 207 callgsubr + hstemhm + 90 77 return + + + -63 hlineto + hintmask 11100000 + -35 -21 -42 return + + + -21 277 68 244 67 return + + + 198 callsubr + 79 -21 return + + + 160 0 70 331 85 return + + + -51 -61 -48 -93 vhcurveto + return + + + 28 420 callsubr + return + + + hvcurveto + 192 hmoveto + return + + + rmoveto + 93 66 31 callgsubr + 93 -66 34 26 -93 87 267 callsubr + -87 rlineto + return + + + 727 -42 callsubr + return + + + 180 callsubr + 348 callsubr + return + + + -82 -585 -220 585 -81 -585 -220 585 -82 hlineto + endchar + + + -78 -75 -48 35 38 -38 hvcurveto + -40 -54 rlineto + -44 44 63 -43 102 hhcurveto + endchar + + + 55 hstem + 131 67 vstem + 131 return + + + hvcurveto + -92 -167 rlineto + -113 hlineto + return + + + 656 39 20 50 -8 50 hstemhm + return + + + 546 hstem + 110 62 vstem + 86 return + + + 142 101 104 168 return + + + -45 rlinecurve + -4 hlineto + return + + + 50 -12 rmoveto + 71 38 43 162 34 hvcurveto + 18 84 15 86 17 87 rrcurveto + return + + + 74 hstem + 74 43 533 75 vstem + 74 -10 rmoveto + 598 hlineto + 53 61 rlineto + return + + + 30 24 22 32 31 -24 22 -30 -31 -24 -22 -31 -32 24 -22 31 hvcurveto + return + + + 112 65 -39 -84 -83 -70 -46 -85 -76 -54 22 58 -58 hvcurveto + -47 -57 return + + + 62 vlineto + 123 59 -70 -121 -128 -59 -68 -123 hvcurveto + endchar + + + hstem + -121 46 150 46 vstem + -121 return + + + -31 -51 hvcurveto + -194 62 203 vlineto + 75 return + + + 45 -43 43 -43 46 194 46 -43 45 return + + + 4 callsubr + hstem + 90 83 return + + + vlineto + 92 46 -27 -64 -67 -48 -29 -88 hvcurveto + return + + + 21 453 callgsubr + return + + + -287 585 -83 return + + + -212 59 153 return + + + 31 callgsubr + 103 return + + + 68 527 73 return + + + 57 117 rlineto + 50 25 19 10 27 hhcurveto + 6 7 0 -2 8 hvcurveto + return + + + 87 156 rlineto + 72 39 18 11 28 hhcurveto + 6 8 0 -3 10 hvcurveto + return + + + 235 callgsubr + endchar + + + 101 59 callgsubr + + + 338 callgsubr + endchar + + + -19 20 -26 -26 return + + + -20 24 -20 hstemhm + return + + + 403 425 callgsubr + return + + + 180 254 142 callsubr + return + + + hstem + 207 82 vstem + 207 hmoveto + 82 return + + + -9 -12 473 callsubr + return + + + -16 callsubr + hstemhm + return + + + -188 73 307 callgsubr + return + + + 126 hstem + 65 119 vstem + 125 return + + + hstemhm + 45 72 -54 80 -70 69 return + + + -220 -12 67 364 67 return + + + 214 callgsubr + 79 return + + + 226 callgsubr + 101 return + + + 53 hstem + 30 307 vstem + 30 return + + + -21 50 101 269 98 return + + + -195 193 callgsubr + return + + + 62 -61 387 callsubr + return + + + -23 167 callsubr + return + + + vlineto + 124 -46 66 -102 return + + + 38 479 callsubr + return + + + 68 240 callgsubr + return + + + hlineto + 83 -588 rmoveto + return + + + 4 10 17 24 hhcurveto + return + + + hlineto + hintmask 10100000 + 117 47 hlineto + hintmask 11000000 + -179 hlineto + endchar + + + hlineto + hintmask 11010000 + 117 47 hlineto + hintmask 11100000 + -179 hlineto + endchar + + + 101 hmoveto + 82 223 89 59 -89 204 -82 -204 hlineto + return + + + 139 21 -21 237 67 148 78 -12 -20 27 -20 return + + + 199 callsubr + hstemhm + 46 80 -80 81 55 61 143 72 return + + + 488 rmoveto + 96 10 62 55 68 hhcurveto + 76 44 -53 -98 hvcurveto + return + + + -20 hstem + 195 82 vstem + 195 -205 rmoveto + 82 205 return + + + -17 29 callgsubr + 83 214 callsubr + return + + + 36 callgsubr + endchar + + + 91 114 91 return + + + 83 hintmask 11101000 + 90 hmoveto + 83 518 -83 hlineto + hintmask 11110000 + 41 return + + + 283 callsubr + hintmask 11110000 + return + + + 51 172 43 80 56 hstem + 259 64 vstem + 183 return + + + 83 callsubr + 23 return + + + rmoveto + 7 callsubr + return + + + -680 142 callsubr + return + + + hstemhm + 52 52.5 -52.5 62 return + + + 202 4 75 69 89 hhcurveto + 40 39 -19 -31 26 hvcurveto + return + + + 332 callsubr + hstemhm + return + + + -270 rmoveto + 70 hlineto + -6 199 rlineto + -58 hlineto + endchar + + + -311 -217 67 636 -20 return + + + 6 -26 hhcurveto + -104 -39 -63 -99 hvcurveto + return + + + 21 351 callgsubr + return + + + 21 -21 586 70 hstem + 90 83 return + + + -12 452 callsubr + return + + + 35 455 callsubr + return + + + 52 395 rmoveto + 62 return + + + 82 hstemhm + 148 64 return + + + 107 hstem + 90 83 return + + + 337 callsubr + vlineto + hintmask 11111000 + return + + + 89 206 callsubr + return + + + -12 68 -35 197 callsubr + return + + + 4 4 0 1 6 hvcurveto + -27 -26 -26 -39 -45 vvcurveto + return + + + 397 callgsubr + 207 75 -12 80 return + + + 163 -106 93 -119 99 callgsubr + return + + + rmoveto + 83 414 -83 hlineto + endchar + + + -65 -32 53 51 -8 hvcurveto + return + + + -27 26 -32 -33 -27 -26 return + + + 88 hstem + 97 47 vstem + 49 return + + + 387 51 235 51 return + + + -212 59 174 -21 return + + + rmoveto + 55 -11 rlineto + return + + + -21 419 67 return + + + 51 hstemhm + 46 85 return + + + vstem + 82 hmoveto + 82 return + + + -96 35 -66 104 return + + + -20 26 -20 hstemhm + return + + + 65 hstemhm + 37 73 258 82 -81 81 hintmask 11111000 + return + + + 0 67 187 60 204 -20 hstem + 90 83 return + + + -258 33 -45 rlineto + 10 23 12 6 28 hhcurveto + return + + + -211 21 -21 424 378 callsubr + return + + + 490 callsubr + hstemhm + return + + + 68 hstem + 20 83 86 82 vstem + 189 hmoveto + 82 return + + + vlineto + -130 -68 rlineto + -53 vlineto + 130 68 rlineto + return + + + 146 189 69 -420 -69 147 vlineto + return + + + 30 callgsubr + 71 49 return + + + 49 49 34 26 297 callsubr + -39 -91 hvcurveto + return + + + 24 23 -15 13 -21 -19 -15 -13 -23 -24 15 return + + + -164 -253 rlineto + -33 178 vlineto + endchar + + + 11 hlineto + 69 140 rlineto + -149 hlineto + endchar + + + 55 50 39 62 34 hvcurveto + 2 return + + + 59 hstem + -155 310 vstem + return + + + hlineto + -33 -39 -3 -3 -35 hvcurveto + return + + + 42 -31 91 102 91 -31 42 return + + + 71 hlineto + 8 188 rlineto + 54 return + + + 47 hstemhm + 31 178 -62 62 return + + + -250 1000 hstem + 92 58 return + + + 0 493 callgsubr + return + + + hstemhm + 46 82 -58 82 return + + + 0 382 callgsubr + return + + + -30 57 rlineto + -23 -36 return + + + -51 -74 -86 hvcurveto + return + + + 110 -97 82 return + + + -115 21 -21 223 64 163 68 return + + + 7 0 105 -84 -21 382 104 0 -20 return + + + 204 -83 hlineto + 83 -451 rmoveto + 187 return + + + rrcurveto + 51 -397 -71 304 vlineto + -124 return + + + 47 -47 50 -47 47 188 47 -44 47 return + + + 382 64 hstemhm + 55 79 94 64 16 79 return + + + 27 callgsubr + -35 47 return + + + 308 callgsubr + 227 51 hstemhm + 51 79 return + + + -97 33 -58 90 vhcurveto + endchar + + + 69 381 68 return + + + 51 210 51 return + + + 64 382 64 return + + + 78 262 80 -79 79 hintmask 11110100 + return + + + 54 vhcurveto + 27 47 -45 hlineto + -79 -38 return + + + 103 49 65 75 76 49 -65 -103 return + + + 22 75 19 0 16 2 27 hvcurveto + return + + + 214 -78 -214 -71 vlineto + return + + + 568 193 hstem + return + + + hstem + 304 78 vstem + 104 return + + + hvcurveto + hintmask 1011111110000000 + return + + + 68 126 68 return + + + 56 187 55 return + + + -151 -64 rmoveto + return + + + hintmask 01011101 + 90 hmoveto + return + + + -61 299 62 hstem + return + + + hstemhm + 78 77 -77 79 return + + + -249 rmoveto + 50 return + + + hlineto + -115 65 -53 54 83 vvcurveto + 77 49 49 83 65 43 -35 -38 32 vhcurveto + 44 54 rlineto + 44 -40 -59 43 -91 hhcurveto + -116 -93 -65 -127 -112 71 -65 98 -62 hvcurveto + return + + + 53 18 29 43 54 vvcurveto + 83 -72 55 -110 -66 -64 -26 -37 -42 vhcurveto + 43 -55 rlineto + 33 35 45 18 47 hhcurveto + 59 44 -31 -49 -56 -38 -28 -90 hvcurveto + -49 -56 65 hlineto + return + + + hlineto + 132 4 124 90 159 vvcurveto + 158 -121 89 -135 4 vhcurveto + return + + + 47 hstemhm + 34 90 -13 73 hintmask 11101000 + 228 return + + + -12 70 181 63 158 70 hstem + return + + + -64 21 -21 294 70 222 70 return + + + 0 150 -141 -21 116 46 return + + + 91 28 50 -43 -20 62 50 hstemhm + return + + + 82 82 171 79 172 81 return + + + 90 80 176 80 177 80 return + + + hlineto + hintmask 11101000 + return + + + hintmask 1110110010000000 + return + + + hvcurveto + hintmask 01111000 + return + + + hlineto + hintmask 11010110 + return + + + -172 rmoveto + return + + + 103 67 hlineto + return + + + -82 -226 hlineto + -6 -28 -22 -3 -29 hhcurveto + -89 -39 30 72 hvcurveto + 133 -82 -133 vlineto + -121 71 -48 123 43 18 3 7 34 vhcurveto + endchar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otc2otf_data/input/RgBd.ttc b/tests/otc2otf_data/input/RgBd.ttc new file mode 100644 index 000000000..6ddeed284 Binary files /dev/null and b/tests/otc2otf_data/input/RgBd.ttc differ diff --git a/tests/otc2otf_data/input/RgIt.ttc b/tests/otc2otf_data/input/RgIt.ttc new file mode 100644 index 000000000..eed36d5a9 Binary files /dev/null and b/tests/otc2otf_data/input/RgIt.ttc differ diff --git a/tests/otc2otf_data/input/RgItBd.ttc b/tests/otc2otf_data/input/RgItBd.ttc new file mode 100644 index 000000000..4dc7968ee Binary files /dev/null and b/tests/otc2otf_data/input/RgItBd.ttc differ diff --git a/tests/otc2otf_test.py b/tests/otc2otf_test.py new file mode 100644 index 000000000..5404defd6 --- /dev/null +++ b/tests/otc2otf_test.py @@ -0,0 +1,70 @@ +from __future__ import print_function, division, absolute_import + +import os +import pytest +from shutil import copy2, rmtree + +from fontTools.misc.py23 import tobytes + +from runner import main as runner +from differ import main as differ +from test_utils import get_input_path, get_expected_path, generate_ttx_dump + +TOOL = 'otc2otf' +CMD = ['-t', TOOL] + +REGULAR = 'SourceSansPro-Regular.otf' +ITALIC = 'SourceSansPro-It.otf' +BOLD = 'SourceSansPro-Bold.otf' + +DATA_DIR = os.path.join(os.path.split(__file__)[0], TOOL + '_data') +TEMP_DIR = os.path.join(DATA_DIR, 'temp_output') + + +def setup_module(): + """ + Create the temporary output directory + """ + os.mkdir(TEMP_DIR) + + +def teardown_module(): + """ + teardown the temporary output directory + """ + rmtree(TEMP_DIR) + + +# ----- +# Tests +# ----- + +@pytest.mark.parametrize('ttc_filename, otf_filenames, diff_index', [ + ('RgBd.ttc', [REGULAR, BOLD], 0), + ('RgIt.ttc', [REGULAR, ITALIC], 1), + ('RgItBd.ttc', [REGULAR, ITALIC, BOLD], 2), +]) +def test_convert(ttc_filename, otf_filenames, diff_index): + # 'otc2otf' doesn't have an output option. The test makes a temporary + # directory and copies the input TTC font there. The output OTFs will + # be saved to that directory as well. + input_ttc_path = get_input_path(ttc_filename) + temp_ttc_path = os.path.join(TEMP_DIR, ttc_filename) + copy2(input_ttc_path, temp_ttc_path) + + fonts_msg = os.linesep.join( + ['Output font: {}'.format(fname) for fname in otf_filenames]) + + stdout_path = runner(CMD + ['-s', '-a', '-f', temp_ttc_path]) + + with open(stdout_path, 'rb') as f: + output = f.read() + assert tobytes(fonts_msg) in output + + # diff only one of the OTFs + otf_filename = otf_filenames[diff_index] + actual_path = os.path.join(TEMP_DIR, otf_filename) + assert os.path.isfile(actual_path) + actual_ttx = generate_ttx_dump(actual_path) + expected_ttx = get_expected_path(otf_filename.replace('.otf', '.ttx')) + assert differ([expected_ttx, actual_ttx, '-s', ' - + - + - - + + @@ -16,7 +16,7 @@ - + @@ -106,6 +106,11 @@ + + + + + diff --git a/tests/ttfcomponentizer_data/input/ttfcomponentizer.ttf b/tests/ttfcomponentizer_data/input/ttfcomponentizer.ttf index 33fe19577..a92dd9ff5 100644 Binary files a/tests/ttfcomponentizer_data/input/ttfcomponentizer.ttf and b/tests/ttfcomponentizer_data/input/ttfcomponentizer.ttf differ diff --git a/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/glyphs/aa.glif b/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/glyphs/aa.glif new file mode 100644 index 000000000..25e50c022 --- /dev/null +++ b/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/glyphs/aa.glif @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/glyphs/contents.plist b/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/glyphs/contents.plist index 72ef25ebb..59c97ed09 100644 --- a/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/glyphs/contents.plist +++ b/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/glyphs/contents.plist @@ -6,6 +6,8 @@ _notdef.glif a a.glif + aa + aa.glif aacute aacute.glif acaron diff --git a/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/lib.plist b/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/lib.plist index 00e1289d3..ad186c345 100644 --- a/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/lib.plist +++ b/tests/ttfcomponentizer_data/input/ttfcomponentizer.ufo/lib.plist @@ -18,6 +18,7 @@ tildecmb caroncmb dieresiscmb + aa public.postscriptNames diff --git a/tests/ttfcomponentizer_test.py b/tests/ttfcomponentizer_test.py index a15c51078..b716b7321 100644 --- a/tests/ttfcomponentizer_test.py +++ b/tests/ttfcomponentizer_test.py @@ -99,7 +99,7 @@ def test_run_with_output_path(): gtable = TTFont(save_path)['glyf'] composites = [gname for gname in gtable.glyphs if ( gtable[gname].isComposite())] - assert sorted(composites) == ['aacute', 'uni01CE'] + assert sorted(composites) == ['aa', 'aacute', 'uni01CE'] def test_run_cli_with_output_path(): @@ -216,23 +216,33 @@ def test_get_glyph_names_mapping_names_from_goadb(): assert sorted(result[1].values()) == PRODCT_NAMES_LIST -def test_get_composites_data(): +def test_componentize(): + ttf_path = _get_test_ttf_path() + save_path = get_temp_file_path() + opts = Object() + setattr(opts, 'font_path', ttf_path) + setattr(opts, 'output_path', save_path) ufo, ps_names = ttfcomp.get_glyph_names_mapping(_get_test_ufo_path()) - comps_data = ttfcomp.get_composites_data(ufo, ps_names) - comps_name_list = sorted(list(comps_data.keys())) + ttcomp_obj = ttfcomp.TTComponentizer(ufo, ps_names, opts) + ttcomp_obj.componentize() + + # 'get_composites_data' method + comps_data = ttcomp_obj.composites_data + comps_name_list = sorted(comps_data.keys()) comps_comp_list = [comps_data[gname] for gname in comps_name_list] - assert comps_name_list == ['aacute', 'adieresis', 'atilde', 'uni01CE'] - assert comps_comp_list[0].names == ('a', 'uni0301') - assert comps_comp_list[3].names == ('a', 'uni030C') - assert comps_comp_list[0].positions == ((0, 0), (263.35, 0)) - assert comps_comp_list[3].positions == ((0, 0), (263, 0)) - - -def test_assemble_components(): - comps_data = Object() - setattr(comps_data, 'names', ('a', 'uni01CE')) - setattr(comps_data, 'positions', ((0, 0), (263, 0))) - comp_one, comp_two = ttfcomp.assemble_components(comps_data) + assert comps_name_list == ['aa', 'aacute', 'adieresis', 'atilde', + 'uni01CE'] + assert comps_comp_list[1].names == ('a', 'uni0301') + assert comps_comp_list[4].names == ('a', 'uni030C') + assert comps_comp_list[1].positions == ((0, 0), (263.35, 0)) + assert comps_comp_list[4].positions == ((0, 0), (263, 0)) + + # 'assemble_components' method + comps_data = ttfcomp.ComponentsData() + comps_data.names = ('a', 'uni01CE') + comps_data.positions = ((0, 0), (263, 0)) + comps_data.same_advwidth = True + comp_one, comp_two = ttcomp_obj.assemble_components(comps_data) assert comp_one.glyphName == 'a' assert comp_two.glyphName == 'uni01CE' assert (comp_one.x, comp_one.y) == (0, 0) diff --git a/tests/ttxn_data/input/SourceSansPro-ExtraLightIt.otf b/tests/ttxn_data/input/SourceSansPro-ExtraLightIt.otf old mode 100755 new mode 100644 diff --git a/tests/ttxn_data/input/SourceSansPro-Light.otf b/tests/ttxn_data/input/SourceSansPro-Light.otf old mode 100755 new mode 100644 diff --git a/tests/ttxn_test.py b/tests/ttxn_test.py old mode 100755 new mode 100644 diff --git a/tests/tx_data/expected_output/SHSVF_9b3b_opt.cff2 b/tests/tx_data/expected_output/SHSVF_9b3b_opt.cff2 new file mode 100644 index 000000000..90377edab Binary files /dev/null and b/tests/tx_data/expected_output/SHSVF_9b3b_opt.cff2 differ diff --git a/tests/tx_data/expected_output/cff2_vf.dcf.txt b/tests/tx_data/expected_output/cff2_vf.dcf.txt index 7aff83186..234037d8e 100644 --- a/tests/tx_data/expected_output/cff2_vf.dcf.txt +++ b/tests/tx_data/expected_output/cff2_vf.dcf.txt @@ -9,6 +9,8 @@ offSize=0 18 VarStore 1336 FDArray } +### GlobalSubrINDEX (0000000e-00000011) +empty ### VarStore (00000012-00000039) length =38 format = 1 diff --git a/tests/tx_data/input/SHSVF_9b3b.otf b/tests/tx_data/input/SHSVF_9b3b.otf new file mode 100644 index 000000000..9f057d7d4 Binary files /dev/null and b/tests/tx_data/input/SHSVF_9b3b.otf differ diff --git a/tests/tx_test.py b/tests/tx_test.py old mode 100755 new mode 100644 index 9a48e103d..3db78b023 --- a/tests/tx_test.py +++ b/tests/tx_test.py @@ -73,7 +73,7 @@ def test_exit_unknown_option(arg): 'afm', 'pdf', 'ps', - 'cff', + # 'cff', ]) @pytest.mark.parametrize('from_format', [ 'ufo2', @@ -106,7 +106,7 @@ def test_convert(from_format, to_format): regex_skip = [] skip = [] if to_format == 'afm': - skip = ['Comment Creation Date:'] + skip = ['Comment Creation Date:' + SPLIT_MARKER + 'Comment Copyright'] elif to_format == 'pdf': skip = PDF_SKIP[:] regex_skip = PDF_SKIP_REGEX[:] @@ -327,7 +327,8 @@ def test_recalculate_font_bbox_bug618(to_format, args, exp_filename): skip = [] if to_format == 'afm': - skip = ['-s', 'Comment Creation Date:'] + skip = ['-s', 'Comment Creation Date:' + SPLIT_MARKER + + 'Comment Copyright'] assert differ([expected_path, save_path] + diff_mode + skip) @@ -338,3 +339,16 @@ def test_glyph_bboxes_bug655(): result_path = get_temp_file_path() runner(CMD + ['-o', 'mtx', '2', '-f', font_path, result_path]) assert differ([expected_path, result_path]) + + +def test_cs_opt_bug684(): + """ The input CFF2 variable font contains a long single charstring + making the maximum use of the operand stack. + tx was generating a bad CFF2 charstring that would overflow + the operand stack of the standard size (513) after re-converted + to CFF2 unless -no_opt option is specified.""" + font_path = get_input_path('SHSVF_9b3b.otf') + result_path = get_temp_file_path() + runner(CMD + ['-a', '-o', 'cff2', '-f', font_path, result_path]) + expected_path = get_expected_path('SHSVF_9b3b_opt.cff2') + assert differ([expected_path, result_path, '-m', 'bin']) diff --git a/tests/type1_test.py b/tests/type1_test.py old mode 100755 new mode 100644