diff options
author | Karl Berry <karl@freefriends.org> | 2010-05-28 15:52:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-05-28 15:52:45 +0000 |
commit | 2da77d0cc0ada0dede0a76ef2823d3ad34db2fa7 (patch) | |
tree | 9a93a2bddbc18388c99cdab50c88e17ae82048de /Master | |
parent | 881ee118259a2f9961f7cef4e1b26bcf65488346 (diff) |
fontspec beta 1 (27may10)
git-svn-id: svn://tug.org/texlive/trunk@18558 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
18 files changed, 18229 insertions, 6115 deletions
diff --git a/Master/texmf-dist/doc/latex/fontspec/README b/Master/texmf-dist/doc/latex/fontspec/README new file mode 100644 index 00000000000..2ea58b73e4e --- /dev/null +++ b/Master/texmf-dist/doc/latex/fontspec/README @@ -0,0 +1,128 @@ +--------------------------- +THE FONTSPEC PACKAGE v2.0b1 + +This is the initial release of the fontspec package with support for LuaTeX. +(Previously, fontspec was XeTeX-only.) + +The fontspec package provides an automatic and unified interface for loading +fonts in LaTeX. XeTeX and LuaTeX (the latter through the luaotfload package) +allows a direct interface to fonts which may be loaded by their name rather +than filename, so no manual font installation is required. + +This package also provides access to the large number of font features +available with AAT and OpenType fonts, including upper and lower case numbers, +proportional and monospaced numbers, swash letters, ligature control, and many +others. + +This package is developed at GitHub: <http://github.com/wspr/fontspec> +Please offer suggestions and file bug reports in the issue tracker: + <http://github.com/wspr/fontspec/issues> + + +LuaTeX requirements +------------------- + +TeXLive 2010 is recommended for running this package under LuaTeX. + +This package requires the luaotfload package in order to load fonts in LuaTeX. +Version 1.08 or greater is recommended for this release. Please see +instructions in that package for font setup. That package, in turn, requires +a version of LuaTeX greater than that shipped with TeX Live 2009. + + +Summary of user commands +------------------------ + +Font families may be selected individually with the command + + \fontspec[<font options>]{<font name>} + +Commands for selecting fonts efficiently can be created with + + \newfontfamily\myfamily[<font options>]{<font name>} + \newfontface\myfont[<font options>]{<font name>} + +Default document fonts are selected with + + \setmainfont[<font options>]{<font name>} + \setsansfont[<font options>]{<font name>} + \setmonofont[<font options>]{<font name>} + +Fonts to be used in maths are defined with + + \setmathrm[<font options>]{<font name>} + \setmathsf[<font options>]{<font name>} + \setmathtt[<font options>]{<font name>} + \setboldmathrm[<font options>]{<font name>} + +Features to be used for every subsequently defined font are specified with + + \defaultfontfeatures{<default font options>} + +Features may be added to the font currently in use with + + \addfontfeatures{<font options to add>} + \addfontfeature{<...>} does the same thing + +Features not provided for out of the box may be defined with + + \newAATfeature{<feature tag>}{<feature code>}{<selector code>} + \newICUfeature{<feature tag>}{[+|-]<4 letter feature string>} + \newfontfeature{<feature tag>}{<arbitrary XeTeX font options>} + +Features can be renamed and feature options can be renamed with + + \aliasfontfeature{<current feature>}{<new feature>} + \aliasfontfeatureoption{<feature>}{<current option>}{<new option>} + + + +Installation +------------ + +Here are the recommended installation methods (preferred first). + +1. If you are using TeX Live 2008 or later, use 'tlmgr install fontspec'. +Alternatively, try your (TeX or Linux) distribution's package management system. + +2. a. Grab euenc.tds.zip on the CTAN. + b. Unzip it at the root of one or your TDS trees. + c. You may need to update some filename database after, see your TeX + distribution's manual for details. + +3. a. Grab the sources from CTAN or github. + b. Run 'make install TEXMFROOT=/path/to/texmf'. + c. See 2c. + +4. Try to figure it out by looking at the Makefile and comments in the sources. + +5. For LuaTeX support you need luaotfload, it can be installed the same way. + + +Manifest +-------- + +Source files: + fontspec.dtx single file source & doc for the package + +Derived files: + fontspec.pdf. documentation + fontspec.sty LaTeX style file + fontspec.lua Lua functions for LuaTeX + fontspec.cfg default configuration file + fontspec-example.ltx LaTeX example document + + +License +------- + +Copyright 2004--2010 Will Robertson <wspr81@gmail.com> +Copyright 2009--2010 Khaled Hosny <khaledhosny@eglug.org> + +Distributable under the LaTeX Project Public License, +version 1.3c or higher (your choice). The latest version of +this license is at: http://www.latex-project.org/lppl.txt + +This work is "maintained" (as per LPPL maintenance status) +by Will Robertson. + diff --git a/Master/texmf-dist/doc/latex/fontspec/fontspec-luatex.tex b/Master/texmf-dist/doc/latex/fontspec/fontspec-luatex.tex new file mode 100644 index 00000000000..1c8f3dcd63a --- /dev/null +++ b/Master/texmf-dist/doc/latex/fontspec/fontspec-luatex.tex @@ -0,0 +1,50 @@ +% !TEX TS-program = LuaLaTeX + +\documentclass{article} + +\usepackage{fontspec} + +\setmainfont[Ligatures=TeX]{TeX Gyre Pagella} +\setsansfont[Ligatures=TeX,Scale=MatchLowercase]{TeX Gyre Heros} +\setmonofont[Scale=MatchLowercase]{Inconsolata} + +\frenchspacing % TeX's default is a little old-fashioned... + +\begin{document} +\pagestyle{empty} + +\section*{The basics of the \textsf{fontspec} package} + +The \textsf{fontspec} package enables automatic font selection +for \LaTeX{} documents typeset with Xe\TeX{} or \LuaTeX. +The basic command is + +{\centering \verb|\fontspec[font features]{font display name}|.\par} + +The default, sans serif, and typewriter fonts may be set with the +\verb|\setmainfont|, \verb|\setsansfont| and \verb|\setmonofont| +commands, respectively, as shown in the preamble. They take the +same syntax as the \verb|\fontspec| package. All expected font +shapes are available: + +\begin{center} + {\itshape Italics and \scshape small caps\dots}\\ + {\sffamily\bfseries Bold sans serif and \itshape bold italic sans serif\dots} +\end{center} + +Text fonts in maths mode are also changed (e.g., notice the cosine function in +`$\cos(n\pi)=\pm 1$') but only if the roman and sans serif fonts are set in +the preamble; \verb|\setmainfont| will not affect these maths mode fonts when +called mid-document. +Maths symbols themselves are not affected. + +Notice the font features used to load the default fonts in the preamble. +The first, \verb|Ligatures=TeX|, enables regular \TeX{} ligatures like +\verb|``---''| for ``---''. +The second, \verb|Scale=MatchLowercase|, automatically scales the fonts to +the same x-height. + +Please see the complete \textsf{fontspec} documentation for further +information. + +\end{document} diff --git a/Master/texmf-dist/doc/latex/fontspec/fontspec-xetex.tex b/Master/texmf-dist/doc/latex/fontspec/fontspec-xetex.tex new file mode 100644 index 00000000000..9bec0583744 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fontspec/fontspec-xetex.tex @@ -0,0 +1,50 @@ +% !TEX TS-program = XeLaTeX + +\documentclass{article} + +\usepackage{xltxtra} + +\setmainfont[Ligatures=TeX]{TeX Gyre Pagella} +\setsansfont[Ligatures=TeX,Scale=MatchLowercase]{TeX Gyre Heros} +\setmonofont[Scale=MatchLowercase]{Inconsolata} + +\frenchspacing % TeX's default is a little old-fashioned... + +\begin{document} +\pagestyle{empty} + +\section*{The basics of the \textsf{fontspec} package} + +The \textsf{fontspec} package enables automatic font selection +for \LaTeX{} documents typeset with Xe\TeX{} or \LuaTeX. +The basic command is + +{\centering \verb|\fontspec[font features]{font display name}|.\par} + +The default, sans serif, and typewriter fonts may be set with the +\verb|\setmainfont|, \verb|\setsansfont| and \verb|\setmonofont| +commands, respectively, as shown in the preamble. They take the +same syntax as the \verb|\fontspec| package. All expected font +shapes are available: + +\begin{center} + {\itshape Italics and \scshape small caps\dots}\\ + {\sffamily\bfseries Bold sans serif and \itshape bold italic sans serif\dots} +\end{center} + +Text fonts in maths mode are also changed (e.g., notice the cosine function in +`$\cos(n\pi)=\pm 1$') but only if the roman and sans serif fonts are set in +the preamble; \verb|\setmainfont| will not affect these maths mode fonts when +called mid-document. +Maths symbols themselves are not affected. + +Notice the font features used to load the default fonts in the preamble. +The first, \verb|Ligatures=TeX|, enables regular \TeX{} ligatures like +\verb|``---''| for ``---''. +The second, \verb|Scale=MatchLowercase|, automatically scales the fonts to +the same x-height. + +Please see the complete \textsf{fontspec} documentation for further +information. + +\end{document} diff --git a/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf b/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf new file mode 100644 index 00000000000..6c45bfc03bb --- /dev/null +++ b/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf @@ -0,0 +1,9572 @@ +%PDF-1.4 +% +1 0 obj +<< /S /GoTo /D (section.1) >> +endobj +4 0 obj +(History) +endobj +5 0 obj +<< /S /GoTo /D (section.2) >> +endobj +8 0 obj +(Introduction) +endobj +9 0 obj +<< /S /GoTo /D (subsection.2.1) >> +endobj +12 0 obj +(About this manual) +endobj +13 0 obj +<< /S /GoTo /D (section.3) >> +endobj +16 0 obj +(Package loading and options) +endobj +17 0 obj +<< /S /GoTo /D (subsection.3.1) >> +endobj +20 0 obj +(Maths fonts adjustments) +endobj +21 0 obj +<< /S /GoTo /D (subsection.3.2) >> +endobj +24 0 obj +(Configuration) +endobj +25 0 obj +<< /S /GoTo /D (subsection.3.3) >> +endobj +28 0 obj +(Warnings) +endobj +29 0 obj +<< /S /GoTo /D (part.1) >> +endobj +32 0 obj +(I General font selection) +endobj +33 0 obj +<< /S /GoTo /D (section.4) >> +endobj +36 0 obj +(Font selection) +endobj +37 0 obj +<< /S /GoTo /D (subsection.4.1) >> +endobj +40 0 obj +(By font name) +endobj +41 0 obj +<< /S /GoTo /D (subsection.4.2) >> +endobj +44 0 obj +(By file name) +endobj +45 0 obj +<< /S /GoTo /D (section.5) >> +endobj +48 0 obj +(Default font families) +endobj +49 0 obj +<< /S /GoTo /D (section.6) >> +endobj +52 0 obj +(New commands to select font families) +endobj +53 0 obj +<< /S /GoTo /D (subsection.6.1) >> +endobj +56 0 obj +(More control over font shape selection) +endobj +57 0 obj +<< /S /GoTo /D (subsection.6.2) >> +endobj +60 0 obj +(Math\(s\) fonts) +endobj +61 0 obj +<< /S /GoTo /D (subsection.6.3) >> +endobj +64 0 obj +(Miscellaneous font selecting details) +endobj +65 0 obj +<< /S /GoTo /D (section.7) >> +endobj +68 0 obj +(Selecting font features) +endobj +69 0 obj +<< /S /GoTo /D (subsection.7.1) >> +endobj +72 0 obj +(Default settings) +endobj +73 0 obj +<< /S /GoTo /D (subsection.7.2) >> +endobj +76 0 obj +(Changing the currently selected features) +endobj +77 0 obj +<< /S /GoTo /D (subsection.7.3) >> +endobj +80 0 obj +(Priority of feature selection) +endobj +81 0 obj +<< /S /GoTo /D (subsection.7.4) >> +endobj +84 0 obj +(Different features for different font shapes) +endobj +85 0 obj +<< /S /GoTo /D (subsection.7.5) >> +endobj +88 0 obj +(Different features for different font sizes) +endobj +89 0 obj +<< /S /GoTo /D (section.8) >> +endobj +92 0 obj +(Font independent options) +endobj +93 0 obj +<< /S /GoTo /D (subsection.8.1) >> +endobj +96 0 obj +(Color) +endobj +97 0 obj +<< /S /GoTo /D (subsection.8.2) >> +endobj +100 0 obj +(Scale) +endobj +101 0 obj +<< /S /GoTo /D (subsection.8.3) >> +endobj +104 0 obj +(Interword space) +endobj +105 0 obj +<< /S /GoTo /D (subsection.8.4) >> +endobj +108 0 obj +(Post-punctuation space) +endobj +109 0 obj +<< /S /GoTo /D (subsection.8.5) >> +endobj +112 0 obj +(The hyphenation character) +endobj +113 0 obj +<< /S /GoTo /D (subsection.8.6) >> +endobj +116 0 obj +(Optical font sizes) +endobj +117 0 obj +<< /S /GoTo /D (part.2) >> +endobj +120 0 obj +(II OpenType) +endobj +121 0 obj +<< /S /GoTo /D (section.9) >> +endobj +124 0 obj +(Introduction) +endobj +125 0 obj +<< /S /GoTo /D (section.10) >> +endobj +128 0 obj +(Complete listing of OpenType font features) +endobj +129 0 obj +<< /S /GoTo /D (subsection.10.1) >> +endobj +132 0 obj +(Ligatures) +endobj +133 0 obj +<< /S /GoTo /D (subsection.10.2) >> +endobj +136 0 obj +(Letters) +endobj +137 0 obj +<< /S /GoTo /D (subsection.10.3) >> +endobj +140 0 obj +(Numbers) +endobj +141 0 obj +<< /S /GoTo /D (subsection.10.4) >> +endobj +144 0 obj +(Contextuals) +endobj +145 0 obj +<< /S /GoTo /D (subsection.10.5) >> +endobj +148 0 obj +(Vertical Position) +endobj +149 0 obj +<< /S /GoTo /D (subsection.10.6) >> +endobj +152 0 obj +(Fractions) +endobj +153 0 obj +<< /S /GoTo /D (subsection.10.7) >> +endobj +156 0 obj +(StylisticSet) +endobj +157 0 obj +<< /S /GoTo /D (subsection.10.8) >> +endobj +160 0 obj +(Alternates) +endobj +161 0 obj +<< /S /GoTo /D (subsection.10.9) >> +endobj +164 0 obj +(Style) +endobj +165 0 obj +<< /S /GoTo /D (subsection.10.10) >> +endobj +168 0 obj +(Diacritics) +endobj +169 0 obj +<< /S /GoTo /D (subsection.10.11) >> +endobj +172 0 obj +(Kerning) +endobj +173 0 obj +<< /S /GoTo /D (subsection.10.12) >> +endobj +176 0 obj +(CJK shape) +endobj +177 0 obj +<< /S /GoTo /D (subsection.10.13) >> +endobj +180 0 obj +(Character width) +endobj +181 0 obj +<< /S /GoTo /D (subsection.10.14) >> +endobj +184 0 obj +(Vertical typesetting) +endobj +185 0 obj +<< /S /GoTo /D (subsection.10.15) >> +endobj +188 0 obj +(OpenType scripts and languages) +endobj +189 0 obj +<< /S /GoTo /D (part.3) >> +endobj +192 0 obj +(III Fonts and features with XeTeX) +endobj +193 0 obj +<< /S /GoTo /D (section.11) >> +endobj +196 0 obj +(XeTeX-only font features) +endobj +197 0 obj +<< /S /GoTo /D (subsection.11.1) >> +endobj +200 0 obj +(Mapping) +endobj +201 0 obj +<< /S /GoTo /D (subsection.11.2) >> +endobj +204 0 obj +(Letter spacing) +endobj +205 0 obj +<< /S /GoTo /D (subsection.11.3) >> +endobj +208 0 obj +(Font transformations) +endobj +209 0 obj +<< /S /GoTo /D (subsection.11.4) >> +endobj +212 0 obj +(Different font technologies: aat and ICU) +endobj +213 0 obj +<< /S /GoTo /D (subsection.11.5) >> +endobj +216 0 obj +(Optical font sizes) +endobj +217 0 obj +<< /S /GoTo /D (section.12) >> +endobj +220 0 obj +(Mac OS X's aat fonts) +endobj +221 0 obj +<< /S /GoTo /D (subsection.12.1) >> +endobj +224 0 obj +(Ligatures) +endobj +225 0 obj +<< /S /GoTo /D (subsection.12.2) >> +endobj +228 0 obj +(Letters) +endobj +229 0 obj +<< /S /GoTo /D (subsection.12.3) >> +endobj +232 0 obj +(Numbers) +endobj +233 0 obj +<< /S /GoTo /D (subsection.12.4) >> +endobj +236 0 obj +(Contextuals) +endobj +237 0 obj +<< /S /GoTo /D (subsection.12.5) >> +endobj +240 0 obj +(Vertical position) +endobj +241 0 obj +<< /S /GoTo /D (subsection.12.6) >> +endobj +244 0 obj +(Fractions) +endobj +245 0 obj +<< /S /GoTo /D (subsection.12.7) >> +endobj +248 0 obj +(Variants) +endobj +249 0 obj +<< /S /GoTo /D (subsection.12.8) >> +endobj +252 0 obj +(Alternates) +endobj +253 0 obj +<< /S /GoTo /D (subsection.12.9) >> +endobj +256 0 obj +(Style) +endobj +257 0 obj +<< /S /GoTo /D (subsection.12.10) >> +endobj +260 0 obj +(CJK shape) +endobj +261 0 obj +<< /S /GoTo /D (subsection.12.11) >> +endobj +264 0 obj +(Character width) +endobj +265 0 obj +<< /S /GoTo /D (subsection.12.12) >> +endobj +268 0 obj +(Annotation) +endobj +269 0 obj +<< /S /GoTo /D (subsection.12.13) >> +endobj +272 0 obj +(Vertical typesetting) +endobj +273 0 obj +<< /S /GoTo /D (subsection.12.14) >> +endobj +276 0 obj +(Diacritics) +endobj +277 0 obj +<< /S /GoTo /D (subsection.12.15) >> +endobj +280 0 obj +(Annotation) +endobj +281 0 obj +<< /S /GoTo /D (section.13) >> +endobj +284 0 obj +(aat \046 Multiple Master font axes) +endobj +285 0 obj +<< /S /GoTo /D (part.4) >> +endobj +288 0 obj +(IV Programming interface) +endobj +289 0 obj +<< /S /GoTo /D (section.14) >> +endobj +292 0 obj +(Defining new features) +endobj +293 0 obj +<< /S /GoTo /D (section.15) >> +endobj +296 0 obj +(Going behind fontspec's back) +endobj +297 0 obj +<< /S /GoTo /D (section.16) >> +endobj +300 0 obj +(Renaming existing features \046 options) +endobj +301 0 obj +<< /S /GoTo /D (section.17) >> +endobj +304 0 obj +(Programming details) +endobj +305 0 obj +<< /S /GoTo /D (part.5) >> +endobj +308 0 obj +(V The patching/improvement of LaTeX2e and other packages) +endobj +309 0 obj +<< /S /GoTo /D (section.18) >> +endobj +312 0 obj +(Inner emphasis) +endobj +313 0 obj +<< /S /GoTo /D (section.19) >> +endobj +316 0 obj +(Unicode footnote symbols) +endobj +317 0 obj +<< /S /GoTo /D (section.20) >> +endobj +320 0 obj +(Verbatim) +endobj +321 0 obj +<< /S /GoTo /D (section.21) >> +endobj +324 0 obj +(Discrectionary hyphenation: `45) +endobj +325 0 obj +<< /S /GoTo /D (part.6) >> +endobj +328 0 obj +(VI fontspec.sty) +endobj +329 0 obj +<< /S /GoTo /D (section.22) >> +endobj +332 0 obj +(Implementation) +endobj +333 0 obj +<< /S /GoTo /D (subsection.22.1) >> +endobj +336 0 obj +(Bits and pieces) +endobj +337 0 obj +<< /S /GoTo /D (subsection.22.2) >> +endobj +340 0 obj +(Error/warning messages) +endobj +341 0 obj +<< /S /GoTo /D (subsection.22.3) >> +endobj +344 0 obj +(Option processing) +endobj +345 0 obj +<< /S /GoTo /D (subsection.22.4) >> +endobj +348 0 obj +(Packages) +endobj +349 0 obj +<< /S /GoTo /D (subsection.22.5) >> +endobj +352 0 obj +(Encodings) +endobj +353 0 obj +<< /S /GoTo /D (subsection.22.6) >> +endobj +356 0 obj +(User commands) +endobj +357 0 obj +<< /S /GoTo /D (subsection.22.7) >> +endobj +360 0 obj +(Programmer's interface) +endobj +361 0 obj +<< /S /GoTo /D (subsection.22.8) >> +endobj +364 0 obj +(Internal macros) +endobj +365 0 obj +<< /S /GoTo /D (subsection.22.9) >> +endobj +368 0 obj +(keyval definitions) +endobj +369 0 obj +<< /S /GoTo /D (subsection.22.10) >> +endobj +372 0 obj +(Italic small caps) +endobj +373 0 obj +<< /S /GoTo /D (subsection.22.11) >> +endobj +376 0 obj +(Selecting maths fonts) +endobj +377 0 obj +<< /S /GoTo /D (subsection.22.12) >> +endobj +380 0 obj +(Finishing up) +endobj +381 0 obj +<< /S /GoTo /D (part.7) >> +endobj +384 0 obj +(VII fontspec.lua) +endobj +385 0 obj +<< /S /GoTo /D (part.8) >> +endobj +388 0 obj +(VIII fontspec-patches.sty) +endobj +389 0 obj +<< /S /GoTo /D (subsection.22.13) >> +endobj +392 0 obj +(Unicode footnote symbols) +endobj +393 0 obj +<< /S /GoTo /D (subsection.22.14) >> +endobj +396 0 obj +(Emph) +endobj +397 0 obj +<< /S /GoTo /D (subsection.22.15) >> +endobj +400 0 obj +(`45) +endobj +401 0 obj +<< /S /GoTo /D (subsection.22.16) >> +endobj +404 0 obj +(Verbatims) +endobj +405 0 obj +<< /S /GoTo /D (part.9) >> +endobj +408 0 obj +(IX fontspec.cfg) +endobj +409 0 obj +<< /S /GoTo /D (part.10) >> +endobj +412 0 obj +(X Example documents) +endobj +413 0 obj +<< /S /GoTo /D [414 0 R /Fit ] >> +endobj +465 0 obj << +/Length 1677 +/Filter /FlateDecode +>> +stream +xYrF+pg_qX` +8@1_ϯ
uv?0odU](6|R␜Nc:-u9ߤu!=P74Ҍ>p&yyyx[njw<EV2)6Id AZFs$ԆRP/ŧ302O^&w{?U +1"'=NKtg0l*Vn_:Y Co6sBNQD֍ɨJ(taIKz/ym +N(= +LnJⲌ`g)҈7_<n{[ҌD"crs4OO !opYD¡:'m{W[0CGi9Juu~b$,NbH;,V8' h1h&rd7!;E2`'>gd71Unc1K*5y20ZBӮ*3QnsS'Y>N"b<!W$C_-.B$f=]\ n4h}<!HFd!J75x\4r-~C!;uV۔UXW=.<:=U֞j+`o+ӿcmgw>ګMfUq?\u(0@1hOd(w`/*xhn]/#0 ~;Qvv23NNB?Hs_PLt}vXY17+7M!Td%J^99"֢<=:,oڴs< 83M
0u?[fɪZ%(NDgn>EٍNզH덛ey +EPLCWShMYUl4t>̩t0L1|ɋǼMo#a$@H[n ecA]:g''<QZS}3lT/m _妆JyVN\7<1utL{1)V_{$Xa/R +<niF]bBGd!¦هq48s`!i0_{?hOVR +4OJ +endstream +endobj +414 0 obj << +/Type /Page +/Contents 465 0 R +/Resources 464 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 481 0 R +/Annots [ 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 473 0 R 428 0 R 474 0 R 429 0 R 430 0 R 475 0 R 431 0 R 432 0 R 433 0 R 476 0 R 434 0 R 435 0 R 477 0 R 436 0 R 478 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 479 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 480 0 R ] +>> endobj +415 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 530.497 195.328 542.019] +/A << /S /GoTo /D (section.1) >> +>> endobj +416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 509.429 218.222 518.649] +/A << /S /GoTo /D (section.2) >> +>> endobj +417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 496.154 266.152 505.405] +/A << /S /GoTo /D (subsection.2.1) >> +>> endobj +418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 469.786 291.108 481.656] +/A << /S /GoTo /D (section.3) >> +>> endobj +419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 456.352 291.836 468.412] +/A << /S /GoTo /D (subsection.3.1) >> +>> endobj +420 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 443.077 245.609 455.137] +/A << /S /GoTo /D (subsection.3.2) >> +>> endobj +421 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 429.802 226.122 441.578] +/A << /S /GoTo /D (subsection.3.3) >> +>> endobj +422 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 396.404 283.064 407.106] +/A << /S /GoTo /D (part.1) >> +>> endobj +423 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 372.722 223.88 381.942] +/A << /S /GoTo /D (section.4) >> +>> endobj +424 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 356.638 242.192 368.697] +/A << /S /GoTo /D (subsection.4.1) >> +>> endobj +425 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 343.363 238.237 355.423] +/A << /S /GoTo /D (subsection.4.2) >> +>> endobj +426 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 322.424 256 331.674] +/A << /S /GoTo /D (section.5) >> +>> endobj +427 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 298.705 317.579 307.956] +/A << /S /GoTo /D (section.6) >> +>> endobj +473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 286.153 197.589 295.403] +/A << /S /GoTo /D (section.6) >> +>> endobj +428 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 272.873 317.579 282.158] +/A << /S /GoTo /D (subsection.6.1) >> +>> endobj +474 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 257.545 250.311 269.605] +/A << /S /GoTo /D (subsection.6.1) >> +>> endobj +429 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 244.938 242.411 256.33] +/A << /S /GoTo /D (subsection.6.2) >> +>> endobj +430 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 233.771 317.579 243.056] +/A << /S /GoTo /D (subsection.6.3) >> +>> endobj +475 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 218.443 244.762 230.503] +/A << /S /GoTo /D (subsection.6.3) >> +>> endobj +431 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 194.884 262.795 206.754] +/A << /S /GoTo /D (section.7) >> +>> endobj +432 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 181.45 252.862 193.51] +/A << /S /GoTo /D (subsection.7.1) >> +>> endobj +433 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 168.175 317.579 180.235] +/A << /S /GoTo /D (subsection.7.2) >> +>> endobj +476 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 158.397 256.378 167.682] +/A << /S /GoTo /D (subsection.7.2) >> +>> endobj +434 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 142.348 302.137 154.407] +/A << /S /GoTo /D (subsection.7.3) >> +>> endobj +435 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 131.847 317.579 141.133] +/A << /S /GoTo /D (subsection.7.4) >> +>> endobj +477 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 116.52 261.898 128.58] +/A << /S /GoTo /D (subsection.7.4) >> +>> endobj +436 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 533.113 499.397 542.398] +/A << /S /GoTo /D (subsection.7.5) >> +>> endobj +478 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 520.56 434.829 529.845] +/A << /S /GoTo /D (subsection.7.5) >> +>> endobj +437 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 494.904 460.214 506.695] +/A << /S /GoTo /D (section.8) >> +>> endobj +438 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 484.559 390.177 493.809] +/A << /S /GoTo /D (subsection.8.1) >> +>> endobj +439 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 471.644 387.706 480.894] +/A << /S /GoTo /D (subsection.8.2) >> +>> endobj +440 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 455.919 436.812 467.978] +/A << /S /GoTo /D (subsection.8.3) >> +>> endobj +441 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 443.003 467.666 454.779] +/A << /S /GoTo /D (subsection.8.4) >> +>> endobj +442 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 430.087 483.118 442.147] +/A << /S /GoTo /D (subsection.8.5) >> +>> endobj +443 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 417.172 441.205 429.232] +/A << /S /GoTo /D (subsection.8.6) >> +>> endobj +444 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 381.228 405.394 394.656] +/A << /S /GoTo /D (part.2) >> +>> endobj +445 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 361.288 400.04 370.509] +/A << /S /GoTo /D (section.9) >> +>> endobj +446 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 335.518 499.397 347.389] +/A << /S /GoTo /D (section.10) >> +>> endobj +479 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 325.586 400.07 334.836] +/A << /S /GoTo /D (section.10) >> +>> endobj +447 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 309.89 406.944 321.666] +/A << /S /GoTo /D (subsection.10.1) >> +>> endobj +448 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 299.784 395.686 308.751] +/A << /S /GoTo /D (subsection.10.2) >> +>> endobj +449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 286.869 406.525 296.119] +/A << /S /GoTo /D (subsection.10.3) >> +>> endobj +450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 273.953 418.222 283.204] +/A << /S /GoTo /D (subsection.10.4) >> +>> endobj +451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 261.038 436.762 270.288] +/A << /S /GoTo /D (subsection.10.5) >> +>> endobj +452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 248.122 405.539 257.089] +/A << /S /GoTo /D (subsection.10.6) >> +>> endobj +453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 232.397 412.662 244.457] +/A << /S /GoTo /D (subsection.10.7) >> +>> endobj +454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 222.291 411.178 231.541] +/A << /S /GoTo /D (subsection.10.8) >> +>> endobj +455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 206.566 386.64 218.626] +/A << /S /GoTo /D (subsection.10.9) >> +>> endobj +456 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 196.46 407.044 205.426] +/A << /S /GoTo /D (subsection.10.10) >> +>> endobj +457 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 180.735 401.325 192.511] +/A << /S /GoTo /D (subsection.10.11) >> +>> endobj +458 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 167.819 411.268 179.879] +/A << /S /GoTo /D (subsection.10.12) >> +>> endobj +459 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 157.713 437.37 166.964] +/A << /S /GoTo /D (subsection.10.13) >> +>> endobj +460 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 141.988 450.62 154.048] +/A << /S /GoTo /D (subsection.10.14) >> +>> endobj +461 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 129.073 499.397 141.133] +/A << /S /GoTo /D (subsection.10.15) >> +>> endobj +480 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 116.52 409.943 128.58] +/A << /S /GoTo /D (subsection.10.15) >> +>> endobj +466 0 obj << +/D [414 0 R /XYZ 143.727 753.953 null] +>> endobj +467 0 obj << +/D [414 0 R /XYZ 144.727 716.092 null] +>> endobj +471 0 obj << +/D [414 0 R /XYZ 144.727 577.481 null] +>> endobj +464 0 obj << +/Font << /F16 468 0 R /F17 469 0 R /F30 470 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +538 0 obj << +/Length 2365 +/Filter /FlateDecode +>> +stream +xڭZYsF~ׯ@CV37ǖtM.U9y!HD +teNH +x?lkQ~ + +
ږճ7&&e:IC0!!ckJؚ cV76~r3-ZVL4ien7ic8[O9fCvІڔ@ +%;%({m-'+XMh@Kbm +i2LR*%Ce! +4̔ck7i@I23|7-XZ[ari`ᬦ[.@ql4ofR[9Cp_VUYxXP@w}TW !@˂T>#B$мBU=Q挟@;M" ->wbŴN$#8ߞѳ8sݦ٤sy#L[a8mՏ:5>b;0p^W9y>f*Qܿ>BMDGtX/vC.~4Sv +luƪux3;t$7uSp<?GJ)OZVd~3D G.zg39;>K+"ֻJ3"j|duDvF{(\vMU'^`'6v@,=]wP6@imP)/Rq'F,J(4pY-Z$w,,wBr{7 L;1nɢ^iπOgC(XOV7eX@Ly"`e/zRܨיJ؋Tl߾ʒ*/ +ЧhaDMj3&pV!0R5ƞrm +]jy%4O6O/\63a{r +L+;\1KXՂD-;'_ BBbnO_hwf1d +endstream +endobj +537 0 obj << +/Type /Page +/Contents 538 0 R +/Resources 536 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 481 0 R +/Annots [ 462 0 R 540 0 R 463 0 R 482 0 R 483 0 R 484 0 R 485 0 R 541 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 543 0 R 504 0 R 505 0 R 506 0 R 507 0 R 545 0 R 508 0 R 509 0 R 546 0 R 548 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R ] +>> endobj +462 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 705.097 317.579 715.799] +/A << /S /GoTo /D (part.3) >> +>> endobj +540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 689.866 177.779 702.827] +/A << /S /GoTo /D (part.3) >> +>> endobj +463 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 666.418 271.057 678.288] +/A << /S /GoTo /D (section.11) >> +>> endobj +482 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 653.108 224.199 664.883] +/A << /S /GoTo /D (subsection.11.1) >> +>> endobj +483 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 639.957 245.987 651.733] +/A << /S /GoTo /D (subsection.11.2) >> +>> endobj +484 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 629.581 275.915 638.866] +/A << /S /GoTo /D (subsection.11.3) >> +>> endobj +485 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 616.43 317.579 625.715] +/A << /S /GoTo /D (subsection.11.4) >> +>> endobj +541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 601.102 261.589 613.162] +/A << /S /GoTo /D (subsection.11.4) >> +>> endobj +486 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 587.952 259.387 600.011] +/A << /S /GoTo /D (subsection.11.5) >> +>> endobj +487 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 567.219 257.843 576.47] +/A << /S /GoTo /D (section.12) >> +>> endobj +488 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 551.289 225.126 563.065] +/A << /S /GoTo /D (subsection.12.1) >> +>> endobj +489 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 540.948 213.868 549.914] +/A << /S /GoTo /D (subsection.12.2) >> +>> endobj +490 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 527.797 224.707 537.047] +/A << /S /GoTo /D (subsection.12.3) >> +>> endobj +491 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 514.646 236.403 523.897] +/A << /S /GoTo /D (subsection.12.4) >> +>> endobj +492 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 498.686 255.462 510.746] +/A << /S /GoTo /D (subsection.12.5) >> +>> endobj +493 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 488.345 223.721 497.311] +/A << /S /GoTo /D (subsection.12.6) >> +>> endobj +494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 475.194 219.895 484.161] +/A << /S /GoTo /D (subsection.12.7) >> +>> endobj +495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 462.044 229.36 471.294] +/A << /S /GoTo /D (subsection.12.8) >> +>> endobj +496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 446.083 204.822 458.143] +/A << /S /GoTo /D (subsection.12.9) >> +>> endobj +497 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 432.933 229.45 444.992] +/A << /S /GoTo /D (subsection.12.10) >> +>> endobj +498 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 422.591 255.552 431.842] +/A << /S /GoTo /D (subsection.12.11) >> +>> endobj +499 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 409.441 233.833 418.407] +/A << /S /GoTo /D (subsection.12.12) >> +>> endobj +500 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 393.481 268.802 405.54] +/A << /S /GoTo /D (subsection.12.13) >> +>> endobj +501 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 383.139 225.225 392.106] +/A << /S /GoTo /D (subsection.12.14) >> +>> endobj +502 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.675 369.989 233.833 378.955] +/A << /S /GoTo /D (subsection.12.15) >> +>> endobj +503 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 343.906 317.579 355.697] +/A << /S /GoTo /D (section.13) >> +>> endobj +543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 333.924 179.885 342.795] +/A << /S /GoTo /D (section.13) >> +>> endobj +504 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 294.778 297.733 308.625] +/A << /S /GoTo /D (part.4) >> +>> endobj +505 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 271.797 261.788 283.667] +/A << /S /GoTo /D (section.14) >> +>> endobj +506 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 248.285 293.211 260.155] +/A << /S /GoTo /D (section.15) >> +>> endobj +507 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 224.773 317.579 236.643] +/A << /S /GoTo /D (section.16) >> +>> endobj +545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 212.3 194.979 223.742] +/A << /S /GoTo /D (section.16) >> +>> endobj +508 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 188.708 256.389 200.579] +/A << /S /GoTo /D (section.17) >> +>> endobj +509 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 701.953 499.397 715.799] +/A << /S /GoTo /D (part.5) >> +>> endobj +546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 689.495 499.397 703.246] +/A << /S /GoTo /D (part.5) >> +>> endobj +548 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 676.847 351.273 690.274] +/A << /S /GoTo /D (part.5) >> +>> endobj +510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 654.92 412.792 666.711] +/A << /S /GoTo /D (section.18) >> +>> endobj +511 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 632.305 461.738 644.175] +/A << /S /GoTo /D (section.19) >> +>> endobj +512 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 612.419 384.807 621.639] +/A << /S /GoTo /D (section.20) >> +>> endobj +513 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 587.233 483.955 599.103] +/A << /S /GoTo /D (section.21) >> +>> endobj +514 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 551.714 418.736 565.56] +/A << /S /GoTo /D (part.6) >> +>> endobj +515 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 529.787 415.94 541.578] +/A << /S /GoTo /D (section.22) >> +>> endobj +516 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 516.983 430.785 529.043] +/A << /S /GoTo /D (subsection.22.1) >> +>> endobj +517 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 504.418 475.706 516.478] +/A << /S /GoTo /D (subsection.22.2) >> +>> endobj +518 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 491.853 446.137 503.629] +/A << /S /GoTo /D (subsection.22.3) >> +>> endobj +519 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 479.288 405.28 491.347] +/A << /S /GoTo /D (subsection.22.4) >> +>> endobj +520 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 466.722 411.696 478.782] +/A << /S /GoTo /D (subsection.22.5) >> +>> endobj +521 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 456.967 437.121 466.217] +/A << /S /GoTo /D (subsection.22.6) >> +>> endobj +522 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 441.592 468.832 453.652] +/A << /S /GoTo /D (subsection.22.7) >> +>> endobj +523 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 431.836 434.63 441.087] +/A << /S /GoTo /D (subsection.22.8) >> +>> endobj +524 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 417.334 440.461 428.522] +/A << /S /GoTo /D (subsection.22.9) >> +>> endobj +525 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 403.897 435.606 415.956] +/A << /S /GoTo /D (subsection.22.10) >> +>> endobj +526 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 391.331 459.039 403.391] +/A << /S /GoTo /D (subsection.22.11) >> +>> endobj +527 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 378.766 421.081 390.826] +/A << /S /GoTo /D (subsection.22.12) >> +>> endobj +528 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 343.502 424.713 357.252] +/A << /S /GoTo /D (part.7) >> +>> endobj +529 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 308.417 473.18 322.263] +/A << /S /GoTo /D (part.8) >> +>> endobj +530 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 296.223 480.09 308.282] +/A << /S /GoTo /D (subsection.22.13) >> +>> endobj +531 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 283.657 391.871 295.717] +/A << /S /GoTo /D (subsection.22.14) >> +>> endobj +532 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 273.453 375.362 282.868] +/A << /S /GoTo /D (subsection.22.15) >> +>> endobj +533 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.493 261.337 410.062 270.587] +/A << /S /GoTo /D (subsection.22.16) >> +>> endobj +534 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 223.167 418.078 237.013] +/A << /S /GoTo /D (part.9) >> +>> endobj +535 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.549 188.274 457.076 202.024] +/A << /S /GoTo /D (part.10) >> +>> endobj +539 0 obj << +/D [537 0 R /XYZ 144.724 753.953 null] +>> endobj +2 0 obj << +/D [537 0 R /XYZ 144.727 176.698 null] +>> endobj +536 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F30 470 0 R /F47 542 0 R /F48 544 0 R /F58 547 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +552 0 obj << +/Length 2916 +/Filter /FlateDecode +>> +stream +xڽ]s۸=B}:iwt&Mi=u&!c#]")'> +ƝV# +b#w +v4scPT4r7@#L%2zn-*C;ֻ%ʹF{sf;giH-)>Ґ$UǪwBO5?h1@] +CeN_
U]2"NE꤉ԬaHQeeZV;D3P CvhJs@';W$7pwp;jQ7 5na\`Yg]]"R۷.9k:VmxB]`AgIZhnIud +fCyUyuE]-(~ʗ͙/ /V1vG
Br!\E] +dO@Y +U7d)ގ9|aO/ u07B#"c -U +B%NKN8̚Pb5G6H3~<| +rsO9t +?>量$m[jgSAI5\G}0458rKӎ9&T^LDGPwn +N[rZa7fzwzL㤇8'3o\Ib5kJkۅĦ
()]rxٵ[eIC0}a-
ǖ^Vङ +%i
i&Bo+ʄ/B01VSCZ=" T4\jz(:1q!.mS)K>O*!|8Y{,QC-hT sԤ>Z?҈놱F$G1d_TXꖍ%]ʖ +_a h7HPa"coG';" +HIMAZQ`Lfƌ,5JĂ~y&y;#)W|aCjӓ&=6ufE_r> cY]@ 3Md}Ӝ٩OCoPtAzLo`Q/08)P7:㒤y` +b`wz}D"gκg,~[wB~Oj̘#D!~WޔxU`D9nX(g5k +
5lwpU'`WLF,^S)8U2d\!I_{rj_3B鰬~1^F"Ͷvk{(ΤWY*Eo鱭Ã'kO='tFϤ،归uH8M,` +endstream +endobj +551 0 obj << +/Type /Page +/Contents 552 0 R +/Resources 550 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 481 0 R +>> endobj +553 0 obj << +/D [551 0 R /XYZ 143.727 753.953 null] +>> endobj +6 0 obj << +/D [551 0 R /XYZ 144.727 575.315 null] +>> endobj +10 0 obj << +/D [551 0 R /XYZ 144.727 318.887 null] +>> endobj +14 0 obj << +/D [551 0 R /XYZ 144.727 244.846 null] +>> endobj +550 0 obj << +/Font << /F16 468 0 R /F48 544 0 R /F32 472 0 R /F30 470 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +559 0 obj << +/Length 3369 +/Filter /FlateDecode +>> +stream +xڽZYܸ~ Vi%ev#xw615ӭX-ud<Aߞ*u6g<A2KUdnpݳ~}ŷRlRj77ECH7ͻ?>{yWoxVIx}lY#Cw;Ζ{8hZ/9)h3^#
L$jLh1'JlfoAߚ +-몼apW0TOW" +}J__!/?UW[{#Sa>g{2Īp,קfa\1fMGoy"Iċ +*8ZB?Z-4%I;A/!yёd:Lo62,vAl<
O+S%/I@K7+ۚ4nҜkcjff\+G=eyS'}Φ5cj.nOE@\<翺oZDő<P3l%x4AR +d6aw۾> (aY,Ϫ5%$!rUVҐ8Y5b%[:K^r&Ԩ/ +w_W44B8\hA.i"M &eh +j a"&N1jVmʠ-ZjǾh(oAn8쌩Tdٹq0mDʙbobfhjoTyp pԺ(o;WC2xTGBpK
O tHw6Ljv)}~"#0?)>ԄbZεwn٣~GM*Or_\gЂJi e{6y$lCޚ4]cxc&@>XWm!n( h +#[+L?ZHiOmF=| 0MG=<J4TmX[Ʀ{$銵fj0=}*k I8<|4srߏJ1E +CYM@&ݟ,i2xb.s̖q=xp(i"=>e<q[൵08X[XqG冃jGklr}=TH2{)-2$Vʸ:3
-?c6Yօ ׀aZsx߸m
f;T+#}mP|EFI0p]t +):Mg9-ߖڌaU&{3 +zBE,Hh +YVOpp6t> t,4ͼw6 +O`QV)bQ'c"^T=^\WΌ8sكE +yc09"ӕUlة|% X^Y~sE%bf#HZ衊YqwDrWOÓQd8i?&ldh+7Q3P.;\$Ds -V{%{2oFÌ`>)e|~2b%pzjw +[YL*W2w[yL1=ducx>`=0=Zh$Mѭ62l#׳>F!-E3{I<'!W0ZXY@ǗhIh"\@ƚ[@pC:wnGvkW`gVOݿE,%3eb|Tbr:|UѦgNҠ˷LM~:o=ہ$ +endstream +endobj +558 0 obj << +/Type /Page +/Contents 559 0 R +/Resources 557 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 481 0 R +/Annots [ 554 0 R 555 0 R 556 0 R ] +>> endobj +554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.63 287.637 268.761 299.697] +/A << /S /GoTo /D (section.14) >> +>> endobj +555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.678 287.637 340.964 299.697] +/A << /S /GoTo /D (section.16) >> +>> endobj +556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.473 275.084 276.451 288.385] +/A << /S /GoTo /D (Hfootnote.1) >> +>> endobj +560 0 obj << +/D [558 0 R /XYZ 144.724 753.953 null] +>> endobj +561 0 obj << +/D [558 0 R /XYZ 144.727 718.682 null] +>> endobj +562 0 obj << +/D [558 0 R /XYZ 144.727 641.379 null] +>> endobj +564 0 obj << +/D [558 0 R /XYZ 144.727 551.523 null] +>> endobj +18 0 obj << +/D [558 0 R /XYZ 144.727 458.858 null] +>> endobj +22 0 obj << +/D [558 0 R /XYZ 144.727 337.869 null] +>> endobj +26 0 obj << +/D [558 0 R /XYZ 144.727 214.14 null] +>> endobj +566 0 obj << +/D [558 0 R /XYZ 159.073 146.211 null] +>> endobj +557 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F48 544 0 R /F57 549 0 R /F62 563 0 R /F63 565 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +569 0 obj << +/Length 287 +/Filter /FlateDecode +>> +stream +x}QN0+}w+EN(qCD<@{:x35(<4b4P)Ct 0nl^'3V4лŧePA!&^'Sa>%dA ߀?sV c2wn"zM+tIi~ӴM$o,(kuvuԾ`[S%@8QJ$MpV/,mH1T +cEn7dos/lGۤt$4'i*E"Pwrke~ +endstream +endobj +568 0 obj << +/Type /Page +/Contents 569 0 R +/Resources 567 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 481 0 R +>> endobj +570 0 obj << +/D [568 0 R /XYZ 143.727 753.953 null] +>> endobj +567 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +577 0 obj << +/Length 2491 +/Filter /FlateDecode +>> +stream +xZ[o8~ϯ[mbxեyiv
i*ee7 ߾78IyCk:<<UUWGrvtшpxBKx(iGgUt>sc*f[??S +G1eed+7Ec\ Z,5lH(Ohp9[ԝ[dAjK ["b[=ZH3b6]X]eVn,,fQO&:s_GN#ҫ3)prytG=YtIes=:0Ɂ@ՄGI8N,}"KR0%Q$bT0~N9ӹ-1,fOP +G)If #嵡6h=P;dzmSÈz_AbؒlNnE^b4 +f`1 8-Q<<iN)|%)D#[YTg`Z?3۬2^#vz]93P+Ayhgg(1K;3(̏ԝkc^Zo4#*+(j-V +د>#J~<V 8dT
a[ۄ0?ժ-eEf
m}]7M>W+7c[ Ou. +L9ؾ{G1S3xxvwfĬ(KVPZ}汓kߣ* OZךr 0L<If郝ja/ +HMͦ`O4WSXu
a`B=W9p ;@ AqPoBsF=w8F(ˢ
}uk~r{)@lSM]oֲ'`s&sY?92ɽjͧ~k *". QA/iߩa
cG17AXob}q K<0"7>^Zēq/<h xnFF +6}ߛC 'E1*&<]GdX]Yq$K Q7C蜐|xI1AGrʇM
B!BIMv>Ɔ {15Amquco'Tۢfp{].LL1Wynh V{Gf]aDjc)G=yN#lB%A҈ey|nT٤~ubj/TZEʺ-[Ka +gq1j7VP~00<wp_ԡ ,#bT+O&wCd]ke58jYf
nh +uYo}:#q+&Dw7H_+@Bc4d6TDa@q 2ıG=HFbO-!*(Ѡ>pry3a@IME]7PjLG.]*,0[뎡b|zb s3}aO!RG=KyKZ%p)ɹҜ/*+ +endstream +endobj +576 0 obj << +/Type /Page +/Contents 577 0 R +/Resources 575 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 481 0 R +/Annots [ 571 0 R 572 0 R 573 0 R 574 0 R ] +>> endobj +571 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.126 495.455 388.154 507.515] +/A << /S /GoTo /D (section.8) >> +>> endobj +572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [296.777 475.343 355.238 487.403] +/A << /S /GoTo /D (part.2) >> +>> endobj +573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.81 455.231 430.628 467.29] +/A << /S /GoTo /D (part.3) >> +>> endobj +574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.803 435.118 455.813 447.178] +/A << /S /GoTo /D (section.12) >> +>> endobj +578 0 obj << +/D [576 0 R /XYZ 144.724 753.953 null] +>> endobj +30 0 obj << +/D [576 0 R /XYZ 144.727 716.092 null] +>> endobj +34 0 obj << +/D [576 0 R /XYZ 144.727 420.643 null] +>> endobj +38 0 obj << +/D [576 0 R /XYZ 144.727 354.875 null] +>> endobj +42 0 obj << +/D [576 0 R /XYZ 144.727 201.636 null] +>> endobj +575 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R /F14 579 0 R /F62 563 0 R /F65 580 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +583 0 obj << +/Length 1613 +/Filter /FlateDecode +>> +stream +xXݏ6oMN-^h*$JΘcs}(;rhbKEQ%lxPA2`D$L+&,4,qa]aԜ_O/eIK&bnVn`8\4SʬOh +bw#VVaӝBA +++n;#
+cj1^xӘBÔ*Hl<,cXƓ{汏 +Y2SH_CwZh<^fҹ|0<1&vpyǶKG{^V^Q6M2k2*9:l> +Œ<x-T 7)Fh{V\ƺL!n碿=aƮ &3v2Wf ֲVU|߹3<fMNkcG0g?UK]%:*.kxTjm@
u+zu=yXe|4%A`䗿%s +endstream +endobj +582 0 obj << +/Type /Page +/Contents 583 0 R +/Resources 581 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 585 0 R +>> endobj +584 0 obj << +/D [582 0 R /XYZ 143.727 753.953 null] +>> endobj +581 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F48 544 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +590 0 obj << +/Length 2273 +/Filter /FlateDecode +>> +stream +xYK6QlE=%LEM7CmkGGh*%K0$HbW%m<pۻވKYw0dq{1Rnw_/VA,ۺ2B([.DE"M,nK&¸#2Йuf&90m:(-V ֍CM:\J$q)%iGZޘ +0nnRФ/MCaUM~rTh;
}9ʴ)Enn;<c%@./m +vAH2JB* wro˼Az7qO6ɀ%Ie0Za2MZ5F`h]w{&)0Q`0qOpjaP^#ۃ.dؚy8ޙ8~x1oʽ:qd u'kNHW'Cxa/g^1~*j^R4985gD<cVWAZYuU_¯VIp>"%r9R NY-@l1V겄`RB}kDvk +u=}K0mlDpGʦh-ox: +4o3]o~]>&ӭyx}K{G_Jg ;]m]RyqǫVD]wtѬ$QDO*r0ZIKɌI['I'mc>o͔}hQE,G{'l,t,T"\(\ϥ510Mf:&@8Rˢ\Jf7۹1O>ԍ#wɗ XKLuWY_ՆEidzk+!g˜k0~0m><֎k 䂥< c*8`z% 5HAtetaѐ<bI{骅$/RT]B +\Ǝ +8&ѬAoHbMdz8@"PɌ>BFw4hӻK\N&?{ں}례Ӆjlbr&;[Cz[CEQH*'$g N⣊~zp SaIM7feX\@$'sRlW)}\8-[cm (-+T41Iyχ()DWldhNQZFBAk{@;tYw)cw[Zْ[TK}%8-/[q8#N5Xq<lƺcZ!ws?ʼn{!*`guƑ*, +oC|RL_a?oOUXbM^]
`;j<y#>ZKӐ0>$&g`ۺfcʼ3ā#B?И,zmmk[5=)N[lJ@!fI<́|߆: +endstream +endobj +589 0 obj << +/Type /Page +/Contents 590 0 R +/Resources 588 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 585 0 R +/Annots [ 586 0 R 587 0 R ] +>> endobj +586 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [405.235 458.787 496.907 470.847] +/A << /S /GoTo /D (section.8) >> +>> endobj +587 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [266.74 116.52 370.221 128.58] +/A << /S /GoTo /D (subsection.12.4) >> +>> endobj +591 0 obj << +/D [589 0 R /XYZ 144.724 753.953 null] +>> endobj +46 0 obj << +/D [589 0 R /XYZ 144.727 662.967 null] +>> endobj +50 0 obj << +/D [589 0 R /XYZ 144.727 431.984 null] +>> endobj +588 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F14 579 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +594 0 obj << +/Length 2051 +/Filter /FlateDecode +>> +stream +xYm6Bj,$JrHlImz-D\I^wwCZp1_FCp<3n"x^) 8:Z3#Mdx̢U~~;1-k:\ij۹g\pQ;]kK슺6#ѯd8Zn/ +~8SY$o4ſP,9%<2)؝y2%2qHAG$Lg1E]^a^d %S7z XA`C(8ѫ|k'T'DfA#+ +,IX>`Hp_<kNGH&e]˱1o˼C&Y!bykX#aM]ۼ,lImƌU +*;DIK.mzԐYklX蒚#fy: +=pzi(ʒT"lce8DPq4z`:
~
=AtVYji^ӯEn;r;
Jzki0xUsg?}0X"M>WJ{|l|l筥~OSs\~}mqSY?͡"h\EWaɃ3,v
%Z.\.w~g$-I"yYP.Jl7s$V4ђ%͎f)g
*+Z0["`#?Qޏ~D%#WڊSDZ0t>Jpk4y,qÞ +̈́ ĐZ#$'#qw/a8@ge.t.? +!|:' +1=$;nzBd>\E649rOA3#dLa\SS(ẉL!I<(`Hl]
x&u߿Dӡ@k.Ld +7hDN UKTލ^nAIb=\v$ +;pK|jU/TKhP5i8&O(M~Bj`3gNISi/iRkw&NsfESEP=4E1T֑P"o?L~~\mUKD_lS/?B$Jqy=vϮ>uNxLZ6Cե ʈԿ6nSDNЅ2qTY5~ +saBL%[]Cz*b:Qgrwdt]ИJmN~h@r2_cS3l2>$㞇BlBV>Zz{aIdF$ºisXDŽ-l>W2`bOq2f5<Ã;x76cp]XO2L0srrQg(o*/zJPnNOJ)ڣBj<OX͓S.RJ~CsCBPc6.ŢS=gOXfTJm$ +84LнRI%<닿 +endstream +endobj +593 0 obj << +/Type /Page +/Contents 594 0 R +/Resources 592 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 585 0 R +>> endobj +595 0 obj << +/D [593 0 R /XYZ 143.727 753.953 null] +>> endobj +54 0 obj << +/D [593 0 R /XYZ 144.727 716.092 null] +>> endobj +596 0 obj << +/D [593 0 R /XYZ 144.727 399.117 null] +>> endobj +597 0 obj << +/D [593 0 R /XYZ 144.727 198.775 null] +>> endobj +592 0 obj << +/Font << /F32 472 0 R /F57 549 0 R /F16 468 0 R /F14 579 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +601 0 obj << +/Length 2987 +/Filter /FlateDecode +>> +stream +x]oݿb5`3()E%wI\]4Z-+V#]gҷ<p877X,'<-%ZfÄ/@3.zq|_7<X6J>=B/a(\VepI +GnOUYt:
q" +CMW&u2zv]Z>{ܱʅ^k&rUfn4/knWX:}UUϨ +V1^Nap.KJfMJ C
-B ՎZ҆hVaeԽ0N?:<[KKΰs&e܃ZHצMafMB
TL(|wb@⒢A4tcR$LhǖnM9 Sɠ(Li1yEa61d*:DؤeB-Xt!UY=gm,p[yI__6nURs[MkXhM=+iUqOd0dv90ZCʥUje7ވ3:w3\sVˁG!-x()KBAϥۼVULḊ1OR`u~,@`"Z$N]^͝ <ҞD14iA_Mm蓮#ܿ#<xѣ^>ҍ@1"@aG7D1 +LyBLӀgd4pK}_A!5xi9EL>>NHuDƭHoq;(q#P,QGmR|*JQ+z44Π'ƚF6͙k .7>fց@$1]A9DM1'2SrcMmxU1gAXs +
q_m<Ad/ hc6Jb0W =~
gvwB$~ąD.$\rtP[8k +Xn%,iۭZ|`,ۦt\d` ) BHsptP5#@(S+Ǹq9Sww`_ pNMilTsFUߩZ 37;KٚJ,A,Z;0*>Vti"osC9QO~]S>oUIPre0 +]n!1N4fC.@آl9d"9AGUuWq:XaP2 yk!w62\W,.@80fVSHEDk)!Bɢ <H0PǺr&Tyۏy٪pۛfJXLf0Mg0eP~R=Oiug#<O? u,o?Y`8cZq0eخP@8242,$^b[I%7cIELЦ>%*ֆj]ѺisZ~l +i$61`ȣ XSxd܈^bfQfnqЋ' +~'Z3-|ņ#~zi2U|!#6»K$d4\Cc`*,s \. XvDL67' +endstream +endobj +600 0 obj << +/Type /Page +/Contents 601 0 R +/Resources 599 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 585 0 R +/Annots [ 598 0 R ] +>> endobj +598 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.634 462.798 215.611 476.098] +/A << /S /GoTo /D (Hfootnote.2) >> +>> endobj +602 0 obj << +/D [600 0 R /XYZ 144.724 753.953 null] +>> endobj +58 0 obj << +/D [600 0 R /XYZ 144.727 563.241 null] +>> endobj +603 0 obj << +/D [600 0 R /XYZ 159.073 140.201 null] +>> endobj +599 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F48 544 0 R /F62 563 0 R /F14 579 0 R /F71 604 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +607 0 obj << +/Length 2050 +/Filter /FlateDecode +>> +stream +xێ۸}Bb"6ɢEw!XFId09<,t2Yhs?]q02" T%" Pd2~*/Dg|Fm~>nWe=,\F۟ԍ5MzgzՆ#K/~Yp&
1q( RTPP2bY0cI~vu=wN_P y +>t5sbŀ~V +bҌ`YeV2Sj*_zgjE8=7ge>d2kwwh{)) +Փv.\ u9:t7b)Gx*kr2=q.0XGc/vJ }ӕkW-$SpxRT.ZMsOzCܑ:VE} 3f췺38>:Ӣy\0E/3T($lŋʼn&_hhug+L
@A$XfzޘĉW{$:zwD58`bJEL<Oe\|1;¼YG})i(Q[]{X2FSTQ:bі:4i|dPuVnnh<Qz`h*\RK0%gjE@cVzyD*?$15a '4a`=Q㰰o2XUn9=q}!)Hc +LqV颇^=- Nrg x3Љ6+T:> +JE21vZsOrK +ORCCX{:Hˣ5@BZh0`ʎ͗x ?KmhvIm:]8}Ywzc>z{awu +\af>Kn#ql"nTw Fd4^[.'w0iyx`^,!y_IαUɽo!ڶ!Z`*r\*Fic-\q +0M7dJVC/^%KUuS,gzg)c4䡐*4/$8K氻we~=.=]zT~&C71?XF.Zbt]Ș0c|SngiCB@5G
+endstream +endobj +606 0 obj << +/Type /Page +/Contents 607 0 R +/Resources 605 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 585 0 R +>> endobj +608 0 obj << +/D [606 0 R /XYZ 143.727 753.953 null] +>> endobj +62 0 obj << +/D [606 0 R /XYZ 144.727 614.731 null] +>> endobj +609 0 obj << +/D [606 0 R /XYZ 144.727 596.185 null] +>> endobj +610 0 obj << +/D [606 0 R /XYZ 144.727 543.988 null] +>> endobj +611 0 obj << +/D [606 0 R /XYZ 144.727 504.344 null] +>> endobj +66 0 obj << +/D [606 0 R /XYZ 144.727 398.008 null] +>> endobj +70 0 obj << +/D [606 0 R /XYZ 144.727 316.693 null] +>> endobj +605 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F62 563 0 R /F48 544 0 R /F14 579 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +614 0 obj << +/Length 2171 +/Filter /FlateDecode +>> +stream +xYmBX3|)E^zAӦ͇NI%Y=-pf8/4F4 +1F<X'QBa\GY~\1J⛝)y]>t9XԶl%L|-즵=,\Xk,?woC#4'ThyFL~Q"t=IA!]Dw7H$D)v,9uh8$D+>RTHdCUA',LcR'M;B +ADv^TKKШԄ~_1}D\\GiF0lʖEJńr.o@'/6~owLQTGT[ *#Cs#EkA:"9쇝}*IaqggPъ1|9Rxu05%:J|>ڏZdeܕ~&
saa<gfяl*`m(~zp" ^8^|өOJa|"4gWUfVof},L;{:7T^aIUVll8<nn7M=;ueP.;>
t[;hF5AgW$*v~#jWD9yEv~.ǧOyĈ;ЈҘ7r*-HwCobzL4_L\CccB5<JaBm)?x_
rA(F4;e>}ߛ_yV ))=K-Zs +muteMpo燁'M7 +`v)欄5c( + KE$Ej*|۠DS8yU@]8*)KL%~,.Q""/̜PjDv]g`ΑRmx +`22ՅnW>Ad8O>n4v9Q5+gdEcYpd$,NFs,W&L1EVmDd[pZS< +MUdo/ԫPs%2^\ +FPEJ$Nk!m.q)Wr/ RE1Qv.@
/xPP+Ar?^01.'C94HA +;%[26Ez8/gђ^/R{>5y/MW0<ftapC%Ct +Fc`q{9WD0̿uݍSU4{\j우t!8N1 +r[X^T + +endstream +endobj +613 0 obj << +/Type /Page +/Contents 614 0 R +/Resources 612 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 585 0 R +>> endobj +615 0 obj << +/D [613 0 R /XYZ 144.724 753.953 null] +>> endobj +74 0 obj << +/D [613 0 R /XYZ 144.727 716.092 null] +>> endobj +78 0 obj << +/D [613 0 R /XYZ 144.727 437.742 null] +>> endobj +82 0 obj << +/D [613 0 R /XYZ 144.727 351.638 null] +>> endobj +612 0 obj << +/Font << /F32 472 0 R /F57 549 0 R /F14 579 0 R /F62 563 0 R /F16 468 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +618 0 obj << +/Length 2014 +/Filter /FlateDecode +>> +stream +xk6 +};X3$EIhmIҒ"K>I6}4H.8LxI~O<}x"/fI*z8aax +KpoxkG؈c)џx><IA= +(HhpCj۰|0Iz3(PZ
bI +tK;Yh&DO&\ZX.!W&9r]gfJ +`pa5
8?~ {;z) +xP$"={Iub˓qBnKѷ۟yaНU"PFWbJx,v̇j9ZCe`2Ӑ'w6+nj~qvck]/OXC,NPL4#&t!c3x "2@PG*'II8DGpaY/"`CJl:Vq^!{~hJsZEוvk_HHP\8x+o\($O}\HMqumzl<ö&!1o2; +ZVЄBN5882Y\dyZጘ!-fÖUykoɕX:a=Kj&9ayt_OO4
{=oSg2<M~sVcfs6ll"N7b"hpe)9;XMf`B̙4鮏eG7ǣ@=nZ@M +endstream +endobj +617 0 obj << +/Type /Page +/Contents 618 0 R +/Resources 616 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 620 0 R +>> endobj +619 0 obj << +/D [617 0 R /XYZ 143.727 753.953 null] +>> endobj +86 0 obj << +/D [617 0 R /XYZ 144.727 321.297 null] +>> endobj +616 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F62 563 0 R /F32 472 0 R /F14 579 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +626 0 obj << +/Length 2099 +/Filter /FlateDecode +>> +stream +xڽXmo6_T-`1DQRQ`ݾh" pJI5ZxEp^3q_58<BX$,[0+ְn<!8;?R(/c +wq5KD]O"v-(I\_W
cxW$<f)IH,G_heivk'3T1$-z-s>oM`&ZE'v1O$cqxYGO(0IoM=Q>X85_U;*(*OROQY69'RLēq%) +%־X/ךH|M}i
.ʫ>!]pvݮ1Z[ZH.MOݮ-3ya^KW,c"aZW[rɃ:,nB3!H4o bNNjɫB7vz]7'MIL!IN28{8P{ +ݠ!ڢ)]G&_q`7VЯuDj#%K\7 +uAYdNҘ=S-)?]1uJҷ%(sw
WE]Yj0h{{k+kG£l!5`C5>F*Y&TkeﶁB5^X8$Fk
Ӵ>`h(4Yn+Gcz}.
F'i"Kml,4$VƾxlcKAU+#Lآ);Cd;漫5#!2VD.:"
7]!F,QS<y3wK0AbբL@MڕMR2yG)5VH̀Q\eTHJBV%ZԪV5&m& +]HNZ鶼.Zw;̾8<w^."*]6uNKmpNe/غ,M2*MOUưi#P.zzL(',E)8jUR.au2`٘4 Z43CGyR30ļq@L9qxbR(茆rj-]V_Od&R
NC,\2GA_wKݴ'nuS<g9_a
HO1uSNF^uUG~ <+fQFG!z\[BTI&B{O"hUV+2cSpL),bFVԫ]Ⴀ&+-[#%lrt_։-dGg^6l1R6eih9en@Ꙫ^P<l8bǐұ](_58WCR )t +'҈862upoU1(0cρEY" Q2_8]+jo;=FS$X\><\ +endstream +endobj +625 0 obj << +/Type /Page +/Contents 626 0 R +/Resources 624 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 620 0 R +/Annots [ 621 0 R 632 0 R 622 0 R 633 0 R 623 0 R ] +>> endobj +621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [445.503 529.258 499.397 541.317] +/A << /S /GoTo /D (subsection.11.5) >> +>> endobj +632 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 516.705 192.986 528.48] +/A << /S /GoTo /D (subsection.11.5) >> +>> endobj +622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [483.796 504.152 499.397 516.211] +/A << /S /GoTo /D (table.1) >> +>> endobj +633 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 491.599 165.725 503.658] +/A << /S /GoTo /D (table.1) >> +>> endobj +623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.209 239.881 382.115 251.941] +/A << /S /GoTo /D (subsection.7.1) >> +>> endobj +627 0 obj << +/D [625 0 R /XYZ 144.724 753.953 null] +>> endobj +631 0 obj << +/D [625 0 R /XYZ 208.518 636.563 null] +>> endobj +90 0 obj << +/D [625 0 R /XYZ 144.727 330.637 null] +>> endobj +94 0 obj << +/D [625 0 R /XYZ 144.727 274.785 null] +>> endobj +624 0 obj << +/Font << /F16 468 0 R /F73 628 0 R /F57 549 0 R /F67 629 0 R /F66 630 0 R /F62 563 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +637 0 obj << +/Length 2606 +/Filter /FlateDecode +>> +stream +xko6.eER|hM g D{jq#f8k-Hp8{6p}s)YoE,I1"&ebanr].~08SLHNj +n-^bS$1\$uA +ZGFJ'<֩_s=?NYC,6é<N@j>^ +EA$S~l{g ?MYΔ07HG%MS5dd"f +qTm~ܧ̏1t+Ẍ,/ <#J2`&eNb1бXpBEAt_Qֈh}tUɡۘSt;Acte]sŒ)>&,<*
#W,IzJ(tG?5`z_g +p*79SSт.W+ZZʝ_}{dX'o<\{`EI;Dn +ςSXp.0/S}cB艠 +kдf ++Xր?s떵r>)I*j.ѷIE2JL=C$H-Eg=-{'2EXthךRfSw`G[aɸr
rdN +)>i"Nw"3KɎ`.\l*p]x[1Z'Tz? +D6no7{R2
^v
$#0;Q?ps@R{|[*|7*I]n9>qm(aHQ!Ÿ]ު檌`_9CkLaN uKx;'Bed8uZ::n_qԘ<1Uy3\ǧE}~%Uҝ0zg3?h+BUi)؇D1)/NU8 +endstream +endobj +636 0 obj << +/Type /Page +/Contents 637 0 R +/Resources 635 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 620 0 R +/Annots [ 634 0 R ] +>> endobj +634 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.762 626.811 352.586 638.871] +/A << /S /GoTo /D (section.5) >> +>> endobj +638 0 obj << +/D [636 0 R /XYZ 143.727 753.953 null] +>> endobj +98 0 obj << +/D [636 0 R /XYZ 144.727 716.092 null] +>> endobj +102 0 obj << +/D [636 0 R /XYZ 144.727 431.25 null] +>> endobj +635 0 obj << +/Font << /F32 472 0 R /F57 549 0 R /F16 468 0 R /F14 579 0 R /F62 563 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +642 0 obj << +/Length 2460 +/Filter /FlateDecode +>> +stream +xYKs8WTaΎd+dbv( +H
qi3x4ݍא\\/iOO~tB)^wy""P:^N$JI)7KwʺY"mڤbҾtcT"qd(+ŎipDP*R"\oW"#Ϭjiխj& AGRK;+t^ +qeR&mΠƅZJL"b4s$y^.X_ +JxG3M4SΰWJBEiָ8\7`=ܸ.
r#jkIE#Xp/ +cw\p=cXPԻ]*;gfe}Ӳֲηj[=doچe&5(i
ᡙʶ #h3^;ȼ^cBn32`L R=oJޛPRy!ʮnܻe3IVD&fcn:Mr>s谝)+,]IF>K$jԩ"*wrQP[$ykt_P0EZ(81t*q2ж<iLDYG9c_XC=ib!]Dͬ LѰ\ +7N]l>|ObQZGoMV{y1 ߦ5+.+#D jE=+rL+vPI|`0ā߶&[<z7=E +nQ,E,]!4Hs*4d8::hүO>7{x7]4p?p>,m-}Vs}I1eǬ{?(|DAy?(Ƒ;ak-\y
Q6 +B]1+SCrwd!yAf)nQ<Jx7b*u/fm{3Kgn1$C5˓Аml8wO%KrXǜ/Kថ{G-MDzL ݐV?c'F +6ȘQhmT
Ko7w7AB0ίBO:4[4ʞѧX`?F\'övښ.{t^HqH!nC +zC +G>SsI/ 0A+u"Uc4n3|!$[*CV0E)0hkE`ж.xaEuˮѪFn1QW=8L}! +\AS#2ޥ]'%2550E؝(IPV4`{sE5X +/xoh!Omw.[{2/{C +=<%f2|> P*$PM$ +lYs{S*בZ*Apu +endstream +endobj +641 0 obj << +/Type /Page +/Contents 642 0 R +/Resources 640 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 620 0 R +/Annots [ 639 0 R ] +>> endobj +639 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.208 202.138 394.69 214.198] +/A << /S /GoTo /D (subsection.12.2) >> +>> endobj +643 0 obj << +/D [641 0 R /XYZ 144.724 753.953 null] +>> endobj +106 0 obj << +/D [641 0 R /XYZ 144.727 716.092 null] +>> endobj +110 0 obj << +/D [641 0 R /XYZ 144.727 454.086 null] +>> endobj +114 0 obj << +/D [641 0 R /XYZ 144.727 163.977 null] +>> endobj +640 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R /F62 563 0 R /F48 544 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +647 0 obj << +/Length 1482 +/Filter /FlateDecode +>> +stream +xW_o6ϧlNdٲk{im.gwھ&i>R]!]1%HǽK{ϸ:{r.b/ei,coRLKi3!So{>#koƔ@_ː'~ҷj N$i:-YI<M4)[L]l9 +4V[CDz)owjro +a
֩%n++tGGcUrYk\g;PӺ/z!/(Aԡ56%`{I3D?oԚ؊=Q*;ؾ<]"=x`͋rn`7_ҶЁvr)|w7˂mP6۹Kc{8:{xE4Aٌ[ޢ::T8zGqsQ#Ֆ.^}?S;BJp;x:dx~lڜ`>l=\T[v4 +endstream +endobj +646 0 obj << +/Type /Page +/Contents 647 0 R +/Resources 645 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 620 0 R +/Annots [ 644 0 R ] +>> endobj +644 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.374 372.172 379.957 384.232] +/A << /S /GoTo /D (subsection.7.5) >> +>> endobj +648 0 obj << +/D [646 0 R /XYZ 143.727 753.953 null] +>> endobj +645 0 obj << +/Font << /F16 468 0 R /F62 563 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +653 0 obj << +/Length 1863 +/Filter /FlateDecode +>> +stream +xXK6ЭfHQ94A6ʕYrfwCʒWdhDr8~Gqoq?y;B!Y^*b+gogizFt1d쏳gY:*㒥"U?:X2N ~_6uJ8A}
ެ^.SguQ
,a"Ⱥ_m bߘסdR8A~H3&ܙ~7Xh"L\., [MH[ۅ5WGJ,%>$̔ۉKq].Ryz43$S!Gd6Z}4,eDXڙpd +jk*m^٩@ CNXZm]Nkk6lx|noO$LN$Wh
^ZmIvԤCFHҸꩩBӂvWהlscj oUYͰ+)-F~PuYUS7Mۚ}v$p
5Hg7H\ -7j&b[DYN:֔Z&0Amh8X%01$±>=Ïϫ翖5i!lD1.FitWj_O[<wMbG;Mg]:?K]i21)'ih3NFl`HFQ
sT^^J# +-B'z8@m% +$<,Nz,15_]o1e2qbU9OĶ`JY*e]pŠ[}Uws\|FKMM$^%3 k;Y:>LEg8E1[MXHm}UЂM +nIi#61htv^Eo$luSSٹ:g:
ÀFҜÎǛ6DP5a7%*}YΰGZD/U9{h#j,AZ-%#]?@RQS)[Md#GIU$81d
i +$dtq~t1FCQ!VdJm>9&WUŘG%?v=p\5ͧ`a\.Y0n/u{B}`Nd3 +endstream +endobj +652 0 obj << +/Type /Page +/Contents 653 0 R +/Resources 651 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 620 0 R +/Annots [ 649 0 R 650 0 R ] +>> endobj +649 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [339.885 328.986 431.213 341.046] +/A << /S /GoTo /D (subsection.3.3) >> +>> endobj +650 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.428 212.645 377.365 224.705] +/A << /S /GoTo /D (table.2) >> +>> endobj +654 0 obj << +/D [652 0 R /XYZ 144.724 753.953 null] +>> endobj +655 0 obj << +/D [652 0 R /XYZ 229.978 559.708 null] +>> endobj +118 0 obj << +/D [652 0 R /XYZ 144.727 524.42 null] +>> endobj +122 0 obj << +/D [652 0 R /XYZ 144.727 469.39 null] +>> endobj +126 0 obj << +/D [652 0 R /XYZ 144.727 301.773 null] +>> endobj +130 0 obj << +/D [652 0 R /XYZ 144.727 271.649 null] +>> endobj +651 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F14 579 0 R /F62 563 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +663 0 obj << +/Length 2276 +/Filter /FlateDecode +>> +stream +xYo8_zjIe/"u/Ms)ض@[سL\q9N:Ў)ŏIsyuM~892fBHGtɇO_X9uga$pO}<tb"tV0O2cg9ܗ:kXr!v˫r#EꗓՌvaXS8څQȀл@
eD<3qBv4i8fP-w4\`'x7IQHw6t{ԫEzQi}bk&=V?xTll2?ʧ{{"b$l=e;w8bgC覀4`nUܵnyu=Ź>lr7ڄƅmE̘a +:_Jpb(`gYJУcT<ϦѯӆSCʸ(G$8Glm:?z
-+{"&{"/Y"76քWuSU_=W4,dQct,w" ׅ)B+U?͙S,RakcLYY$;<3%: QWtˊYdɃ>_ >)s)x$' +?.SQ&@0qh{I6`N\h)x<n rZȼA[k{0uL9S16s!3a5ܧ39"ƣǺ@30~B}6!$Ō& 0v;@taN甂R4 +"ϗg=rFm3 o`7xެv7uKuK9}\wm&Sggn%AP2HE95T뫿x +ek
9%lskb>\_8'oQtȚswRHfKL +N순oB +& +sQVp3%]x\A77ȮwS;<}rX6v9]~#cP{2_0)2.onp`fKHnp`X۞Q1 -<= |z7;{Te0dIv;o5UwKnEbM 'Q0y[)Y~ﬤRS4h@捦5Dm8xS>)ٙ>)]՜$jF2P~"1%p +:!@};>gZء\+DDUa]taE
W^ӾI_EZm6 +endstream +endobj +662 0 obj << +/Type /Page +/Contents 663 0 R +/Resources 661 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 667 0 R +/Annots [ 656 0 R 657 0 R 658 0 R 659 0 R ] +>> endobj +656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.317 367.617 185.295 380.917] +/A << /S /GoTo /D (Hfootnote.3) >> +>> endobj +657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.711 272.709 436.174 284.769] +/A << /S /GoTo /D (subsection.10.11) >> +>> endobj +658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [222.057 211.71 254.994 223.77] +/A << /S /GoTo /D (table.4) >> +>> endobj +659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.942 186.604 497.135 198.664] +/A << /S /GoTo /D (subsection.7.2) >> +>> endobj +664 0 obj << +/D [662 0 R /XYZ 143.727 753.953 null] +>> endobj +665 0 obj << +/D [662 0 R /XYZ 235.607 611.457 null] +>> endobj +134 0 obj << +/D [662 0 R /XYZ 144.727 576.17 null] +>> endobj +138 0 obj << +/D [662 0 R /XYZ 144.727 259.167 null] +>> endobj +666 0 obj << +/D [662 0 R /XYZ 159.073 131.283 null] +>> endobj +661 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +671 0 obj << +/Length 1782 +/Filter /FlateDecode +>> +stream +xXnF}W$mN NSIqQ@ijmHn)SܢEqws{^G~G<bB"/=8n#!EL2xνӣ͏(Tz3PHbo +_%M[`Fu@de̤ğbы:(mt<:ID$RUp!4bT? VUȊ qR^ 3g5# RFcv&z%W{+ݻ\>$x}cjm*^'Zu< +0Lu/hrtKrt^&:9-j;Ҷڢ )U"CmR61e?hЦ.@ݧ(5G8pjުIFh<HԔ +Ŏ W ZoloxloE_ +/0_gnt H`w\Hϡb&.x}!UB^bs@Kg]{8dwQ`@VPM2WOTNUwLnoK;KMִ,.1C+au"ډ#|:Ӿ<B9C`zXUȎIRϘ ?$|G, ׳*M>aO&keVr,keX烀è2ȿcb=EĎ+dΜ3z
?d6MWLmZ]%, +FYaZZ}0ڝcD#%įmxc +endstream +endobj +670 0 obj << +/Type /Page +/Contents 671 0 R +/Resources 669 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 667 0 R +/Annots [ 660 0 R ] +>> endobj +660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.615 394.321 412.573 406.381] +/A << /S /GoTo /D (subsection.10.15) >> +>> endobj +672 0 obj << +/D [670 0 R /XYZ 144.724 753.953 null] +>> endobj +668 0 obj << +/D [670 0 R /XYZ 230.187 611.457 null] +>> endobj +673 0 obj << +/D [670 0 R /XYZ 224.339 453.885 null] +>> endobj +142 0 obj << +/D [670 0 R /XYZ 144.727 311.254 null] +>> endobj +146 0 obj << +/D [670 0 R /XYZ 144.727 163.977 null] +>> endobj +669 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F14 579 0 R /F62 563 0 R /F48 544 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +676 0 obj << +/Length 1629 +/Filter /FlateDecode +>> +stream +xXmo6_*7IT~谦[-e:*K.%/-dQ'}H$RseGx$# # Jswp0/<* '^G~8:>%i<ip*e$.4I(~d'lQUD1Daq}xqbº4P.}x.`]*RDRn{8ʢ~%Ivl9>M!0,|b%vv0o^|jՔa̽`Ywb',"<P`DTZ}GlVE6j=C?/+{Lxy?U }&g7s8B}V͛[ҙd(!}{= +ԐQZL'q9gVͥjV6SpP}vw-? +Hg0/n]\N1:1 +a[
ɛd$E@ZߨWd{ٮV[fԣ]Q1% 9@`Df;f
Uw~BM pR݆ +endstream +endobj +675 0 obj << +/Type /Page +/Contents 676 0 R +/Resources 674 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 667 0 R +>> endobj +677 0 obj << +/D [675 0 R /XYZ 143.727 753.953 null] +>> endobj +678 0 obj << +/D [675 0 R /XYZ 216.389 611.457 null] +>> endobj +150 0 obj << +/D [675 0 R /XYZ 144.727 228.409 null] +>> endobj +674 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F48 544 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +685 0 obj << +/Length 1782 +/Filter /FlateDecode +>> +stream +xXo6B*1CR$%eȇkn}HX-z,#)ɲ&-y3%,_T0o +IG3G1:1QOt6qS<EF1In̽WU}A*&qľȝꓥRJe,yASKƧn,^Gc6)fU(ީ`%ahdH>خZC[S"8;[<1y%ϺjY٬>2D$#Rv
KNԲ<Qԑ.TBm\lqS/[4(9HJɭdDR0\0D⥅ݮ7yمi&BsS:;vDUXNwYe>$9 \ҏmZ[ʄY:ݚ*fR +bIkSGUeVt꛲XvQZqSqYJu)P-=TF`;"[|Ɉh&$1~scMVDLWêKo07SUUnNmg_ҧҾB4iTHAD#Fn້;?ǡ7)P<E2\yf뫼X4Y}q'c}}!5x-6\$Xcg%-4yQ9"Mōi {CydA, |峹ELqۓEs3~S}qH%DA媠.ˬMtnQx)P./lmd&ofQ_ą:{o~z}{ѓbJ"(琜R&`x* Ua}W@Sn˕5Z%qAoG IXt9A όzZiLbt?zqY\ +tiبMo{փa%rA@ıWIlp{sx$#houSpMT9v}87Ō$u]*|s>"z8 +endstream +endobj +684 0 obj << +/Type /Page +/Contents 685 0 R +/Resources 683 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 667 0 R +/Annots [ 679 0 R 681 0 R 688 0 R 682 0 R ] +>> endobj +679 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.024 496.048 369.002 509.348] +/A << /S /GoTo /D (Hfootnote.4) >> +>> endobj +681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [437.057 332.403 499.397 344.463] +/A << /S /GoTo /D (section.14) >> +>> endobj +688 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 319.85 180.221 331.91] +/A << /S /GoTo /D (section.14) >> +>> endobj +682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.293 157.132 268.712 169.192] +/A << /S /GoTo /D (section.14) >> +>> endobj +686 0 obj << +/D [684 0 R /XYZ 144.724 753.953 null] +>> endobj +687 0 obj << +/D [684 0 R /XYZ 230.68 661.669 null] +>> endobj +154 0 obj << +/D [684 0 R /XYZ 144.727 558.868 null] +>> endobj +158 0 obj << +/D [684 0 R /XYZ 144.727 293.755 null] +>> endobj +683 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +692 0 obj << +/Length 1428 +/Filter /FlateDecode +>> +stream +xXms8_=UY`13pB~+KNPȒϮ{G|m{B`h!, ɼ;汇Q,co݈^zQ$y0N'/'N'DxIA7=)Dzӹ?hkUJHe@_E\ȟ Enz<m:`1n-@DpkicƘicawR~`%zjkf.D~!}@IWP:PE>UFU ʓE,`ߌ*.WgQyumtj1u+4nig`("v@ 4xըd6\'*WfhU +$uY=tʇ-q¿ZJH8a^@:7T?\iwPمs颴ɨneu +cb01-!`Qtw6Ҽ<Kե2R8_Aݽk*=inWRNfY\4,͎j0l hL5Qi|ռK|
7eEN/WY.)d)EVh 6]ܽ.A;Bc-;[!c1,;m4|AAZ! ++xy^TsO@< BKϝî^2/f0(/rHH'VNh +endstream +endobj +691 0 obj << +/Type /Page +/Contents 692 0 R +/Resources 690 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 667 0 R +/Annots [ 680 0 R ] +>> endobj +680 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [158.077 116.348 247.741 128.399] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://junicode.sf.net)>> +>> endobj +693 0 obj << +/D [691 0 R /XYZ 143.727 753.953 null] +>> endobj +694 0 obj << +/D [691 0 R /XYZ 240.055 586.351 null] +>> endobj +162 0 obj << +/D [691 0 R /XYZ 144.727 553.912 null] +>> endobj +689 0 obj << +/D [691 0 R /XYZ 159.073 130.263 null] +>> endobj +690 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +698 0 obj << +/Length 1729 +/Filter /FlateDecode +>> +stream +xXo6_J@S!bIf
hXli,(HJ(N2t[wGcLjRJW_Sn,ʣLwMFzɐb3Mg$ת:SF<دl?
btt<.Վh!"!wyTɼ4NDԹCRҒv=!xajH;W"m|
Hsd",7& /F^Ez2CRxL88j+#;D(Yh5_U&z-#(ÖYH8;5Þ{<Wf
Yfj:Ge]{T鞜#Zn~g=<OnBRyOnf]S"2OՔ]ZLI N`Զ>hrUۚ^h Bʦo2`B(ĉt"+te[TVKub`E@\wo{p"W?x,D,Hp/v$r_y1KDI֛C(9GC{ƐnbvfAX'ˡYCY"!0.å, ey[̇AŇ +3d^ÜgĀ/30d''\s#/]5_lql.L;<Us@nsԥv7I:MQ
loW"KS]T4Z[)У^\ddkغu +!磾A4laR{6:x䭋M+mG3-_jޚ:ޔ^*nԴ{dAԮ?+
8E_nssCZEI)2 +}pG>b7 +Bn)VqҶ +)hC،Z[l倯t&E$]rY/#ifY/ +ah`ahdDQE7iP~+)q#srOpBB,fuZEbhU:XppۑP;as$Yir@V}Lj]~(`8C
(f0GG(c)s#<gIO@샹*P!qh62s_uڕnoGP!{)%<) +endstream +endobj +697 0 obj << +/Type /Page +/Contents 698 0 R +/Resources 696 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 667 0 R +/Annots [ 695 0 R ] +>> endobj +695 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.016 322.007 479.258 334.067] +/A << /S /GoTo /D (subsection.12.2) >> +>> endobj +699 0 obj << +/D [697 0 R /XYZ 144.724 753.953 null] +>> endobj +700 0 obj << +/D [697 0 R /XYZ 229.928 572.261 null] +>> endobj +701 0 obj << +/D [697 0 R /XYZ 235.203 463.878 null] +>> endobj +166 0 obj << +/D [697 0 R /XYZ 144.727 428.59 null] +>> endobj +170 0 obj << +/D [697 0 R /XYZ 144.727 369.464 null] +>> endobj +174 0 obj << +/D [697 0 R /XYZ 144.727 233.368 null] +>> endobj +696 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F14 579 0 R /F62 563 0 R /F32 472 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +704 0 obj << +/Length 1459 +/Filter /FlateDecode +>> +stream +xڽWm8_oJN!`yXnHl]flMM -3ό=όJC ȩ:0 L?pᓐ9!$=g}H9]QFky$1șs5z7m:z|'&qgbQPd3;܋1ͺR |Q9ua;GԕalA8c( ,Ml._]%T;~L@ +~atS**
30[ӘJU5'!]|S$f>zlk!YL 0k)UwaY +2vYҺ̠O`VWcԽ/U"o:mۺ38}H̸#BFX;2N8&Z0DOa!ǚmb4g֨=Fmz( +k^gUEÆƠZrvVmL. +kN/pjPX]{;p;" +̄PwP +,kkqrnb~d5zxba~5v\YW"-rv{U`=[4Lj=?uGfu1tҥ`Lyٝ<{ysNg/P.Etp̪HmoBncy +endstream +endobj +703 0 obj << +/Type /Page +/Contents 704 0 R +/Resources 702 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 708 0 R +>> endobj +705 0 obj << +/D [703 0 R /XYZ 143.727 753.953 null] +>> endobj +706 0 obj << +/D [703 0 R /XYZ 230.974 598.904 null] +>> endobj +707 0 obj << +/D [703 0 R /XYZ 217.898 454.399 null] +>> endobj +178 0 obj << +/D [703 0 R /XYZ 144.727 317.158 null] +>> endobj +702 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +715 0 obj << +/Length 1851 +/Filter /FlateDecode +>> +stream +xڵXKo6WZR(R9QiMsprJ`83$%Qkv`S||3\)B3u_80@{;g=>'8~NJBu\N
~4/hQ9"B\hblgkVMpD/$-MݵVJ-F[6ە(Pĥ]/<|[ l=4+WRy_};arB v2k]G'a3?]wb,r[ʮm-~u٭ rwz!3ݻޕ:fE#CYB(X<)x[ +W|27: +g2<Ղ,,, ҏYh{:дc0^ǦTokĈPsW)R(
nU5XJF*dpܶj7:cBv0fԣz4=-a|
JW~@, SeRݴh [z4 = \cn i^ |D`ĽFt@E#&Y~\0Y<Ȳs9 +eJ+ Eg¥n(L"zWHlN^芽&Z`lJ3}Z
[itOV|DXzҀA[_ +" 6<'[!ȍ`č`Z`~Y,Nғ*ЦK.SEAOH^vJN惐A %2*=)㴆Ų*`4z6ll/GΉn +endstream +endobj +714 0 obj << +/Type /Page +/Contents 715 0 R +/Resources 713 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 708 0 R +/Annots [ 709 0 R 710 0 R 711 0 R 712 0 R 718 0 R ] +>> endobj +709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.296 349.515 388.411 361.574] +/A << /S /GoTo /D (table.13) >> +>> endobj +710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.59 349.515 496.907 361.574] +/A << /S /GoTo /D (table.14) >> +>> endobj +711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.514 286.75 472.996 298.81] +/A << /S /GoTo /D (subsection.11.4) >> +>> endobj +712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [453.313 161.691 499.397 173.751] +/A << /S /GoTo /D (section.14) >> +>> endobj +718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 149.138 192.467 161.198] +/A << /S /GoTo /D (section.14) >> +>> endobj +716 0 obj << +/D [714 0 R /XYZ 144.724 753.953 null] +>> endobj +182 0 obj << +/D [714 0 R /XYZ 144.727 470.524 null] +>> endobj +186 0 obj << +/D [714 0 R /XYZ 144.727 424.887 null] +>> endobj +717 0 obj << +/D [714 0 R /XYZ 144.727 273.208 null] +>> endobj +713 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F32 472 0 R /F48 544 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +723 0 obj << +/Length 1048 +/Filter /FlateDecode +>> +stream +xڽVI8W6jP$0zIdba*l@.Cv^Wҗ>U1Fvo'|6c4B.'0
aObhTK>
d1{rzq3hgd!-Vze S?LFA)U.Ա(KQJ6*)&3*)wW(P]d.7wZ̹WBMLEG8ʤvS/qc Iľ|GG=$܃x#k7/ȜFVuvՈ@U8ElJ1@6ZnEW5Ԁ0!㓏O@6˫=\V[ +a^*ryf@Küu_mhePiWX +oD֠vɕI>>]c!5p=Pr+Za:@C3,n>$%o=/UJ;Qa~h23_"¨.%mRq9_O~o(eQl
[Dz)jif>_-<h|4J7v)A}ܦymJ~36nl:E&,,r=*bgw;D$ +l|/RMl5f9cf[~Rtۓ>/5'Ô.r .F2`2![evƦٯN +.K +bʼٳ<$ MB/<B>T0Vpqu v}|N_ #GQWq-:[uKhǣZcn<p*m?>RMC9pΜ}-uT;q.`5*QЃAmΣvbUh +endstream +endobj +722 0 obj << +/Type /Page +/Contents 723 0 R +/Resources 721 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 708 0 R +>> endobj +724 0 obj << +/D [722 0 R /XYZ 143.727 753.953 null] +>> endobj +719 0 obj << +/D [722 0 R /XYZ 185.797 343.157 null] +>> endobj +721 0 obj << +/Font << /F71 604 0 R /F77 725 0 R /F16 468 0 R /F57 549 0 R /F78 726 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +729 0 obj << +/Length 2857 +/Filter /FlateDecode +>> +stream +xڝZ][*9Wp7<FݻQG@WtfEcwIwpo7ٽSUTV궮{<oQkv^k^G[9>;mEd0t3oMuptja7j=4[
Ϻ~?y'ګ>#z`Urx";:2&]xYFI
zCbN/f
;CfNyԎy ,KVsV`eXo5"NW#fk9Y .3ۖ1˝Nk3#-s=;j%*)Z3ڭ}?94eM3&,r<~džm*0]^9!,Mً:jᠤ6aBaR xV]^H +:p-WJ{,5fSVvs6+(N +|a^T0lﴠZ[ЧCPp3kkw k%Āc_kWU/.)0uu!SǭӍ +oP/ +`m{{uP*09`9yW0RL [WBީJh&4iݥ~(aJ4Y!Y1Mܤ锊kl?|1rOYI*R +Oe0mLI5- +%rqՔyl冪w|2 ^S`P=~[ŻE-mlEwZ(cQENi%¸S}.䔕:XH|mtA\fGX=5:v'?̈ Q83*F|;[D!eCap5*hf);ڤvifb$092 1Bc }^)B@f\]BatMñF;5[{b.oU'НĈl<326_x.ՠqmL!TX+x9C9dAOX~;mnlֱ͢yHh)[m `hZ0VU%1.jg2DQ5>{)d +7cc#'n26zW%C,'[wI9+}x2oۇAN^XX97QAl"\9D\M {E +,ne~ȩ-4RO,
<0A%s8yη+<HaHJYx}ťGG) +|zLTQLT j +13 +@|)R$6ɩ.)wBA|,03'OS,91n<'C
/W85ZݾU"4 T](xx5B)( +l8%V:U +~G4YS?#}pAnc26_Aa&۴)/MXHC``NwRڸ&0P ,j}v>7\2*;"SC{5feQ/
kh1,R26>Ua5\~*qA$<{J[&v_nb RaMK]l[ -u3c'qyRkyCWF\Q +g#{^4fzd)0:z^%AJ +/W2_7$B(Q-Z*ݷ?z zp;2HDub
s7mCZacĦY>ԅRYSb"Džno*E.=~\Coloլ{;sEgՔʉà7:
.ژg-ktx8=V\rCL/puNQX:/GQPi~AazХSDeőUqO\Ŋ;B5鿔Z--1QK+-拔앳<?]j9vo
sKG}iac>^>0nh]ZX~~eO.*BSwb27u;1w9qg띾C%/mYN +endstream +endobj +728 0 obj << +/Type /Page +/Contents 729 0 R +/Resources 727 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 708 0 R +>> endobj +730 0 obj << +/D [728 0 R /XYZ 144.724 753.953 null] +>> endobj +720 0 obj << +/D [728 0 R /XYZ 103.002 139.944 null] +>> endobj +727 0 obj << +/Font << /F71 604 0 R /F16 468 0 R /F57 549 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +734 0 obj << +/Length 2071 +/Filter /FlateDecode +>> +stream +xXms6_~ +5c +1~9&r/{R~tH| +4J8*˘HQ +8~L +ER=2P.6cqXk'y? Li FӜӮy wY~נTMֹUdY@*@Nj0h<nq!`JvDܑ\1'`#,olv@-BFSR9ktaD.6F.\D`50-^/18c'{lkeYSnݯtS@qBL ::i<Cҵaw][`lMBM6@wv +qsC`oT]L[~Ԍ&K٭cj4ܑ~uIopn_MB&@6\O\};csÄi$701Z9%{UQ̒UƧEM(@[*?")<&:c=//˓S>SſoIڔyTJO#[*ELԆ2EV&_B12,`H%I쉝B9 +M{0k00dBhѰq4hug:E@kppPnev0A]8c5JK%KܘU[/4ۂlz[vb +zcel2=mQ1eo9 +nOS1}]]\>T,?paq4W%ݗsN_U +endstream +endobj +733 0 obj << +/Type /Page +/Contents 734 0 R +/Resources 732 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 708 0 R +/Annots [ 731 0 R ] +>> endobj +731 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.049 264.943 250.53 277.002] +/A << /S /GoTo /D (subsection.12.2) >> +>> endobj +735 0 obj << +/D [733 0 R /XYZ 143.727 753.953 null] +>> endobj +190 0 obj << +/D [733 0 R /XYZ 144.727 716.092 null] +>> endobj +194 0 obj << +/D [733 0 R /XYZ 144.727 661.867 null] +>> endobj +198 0 obj << +/D [733 0 R /XYZ 144.727 607.539 null] +>> endobj +202 0 obj << +/D [733 0 R /XYZ 144.727 487.199 null] +>> endobj +206 0 obj << +/D [733 0 R /XYZ 144.727 251.401 null] +>> endobj +732 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F48 544 0 R /F57 549 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +740 0 obj << +/Length 2569 +/Filter /FlateDecode +>> +stream +xko6~.eгE?8.E38 +uܠf8#-;Gp8Γ+ZH/Y479LD. +e[3Yu +"&ěZreVyXԷEfj
s{Rݗƌ^pyW1x㦿y(&
CTHC|z +4Y7`k%zt qU<=;9]qN0F<%̘}CWD(CYW%Bao!0γ-]Evn&FS}91U~ouI遀HTq +Hzoy}!4` +o:E̾8Ati%mmmJ(wOҳQq'3\8d'-تvmgfGv-CfFFF_s"T/W)Aݽ +̤8.fGabGW@t+I#ﲍu! +%IrX#-~C\@YTҐ@PY0q(s4<ՓPA}M߉4q۬RF,g +B%]Ic ++vPO[A_Qi_XW O2Y0`%_MQ=nP
X#xG̉15uTO7E@uTWt"Pރml)/q;z+r|4<vе#4n;}v]c?y=Πowsei r#"fR-~~Np՟49jz48!ᨳmG~?RGY[(5Ex@qל
}~8PQ2G8`jhؔ")6L(4ֱZJ +Y{5݃>=sx= +endstream +endobj +739 0 obj << +/Type /Page +/Contents 740 0 R +/Resources 738 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 708 0 R +/Annots [ 736 0 R 737 0 R 742 0 R ] +>> endobj +736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.394 458.211 468.889 470.27] +/A << /S /GoTo /D (subsection.10.15) >> +>> endobj +737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [479.661 359.553 499.397 371.613] +/A << /S /GoTo /D (section.13) >> +>> endobj +742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 347 225.802 359.06] +/A << /S /GoTo /D (section.13) >> +>> endobj +741 0 obj << +/D [739 0 R /XYZ 144.724 753.953 null] +>> endobj +210 0 obj << +/D [739 0 R /XYZ 144.727 632.473 null] +>> endobj +214 0 obj << +/D [739 0 R /XYZ 144.727 407.07 null] +>> endobj +218 0 obj << +/D [739 0 R /XYZ 144.727 199.976 null] +>> endobj +738 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F32 472 0 R /F47 542 0 R /F30 470 0 R /F62 563 0 R /F63 565 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +747 0 obj << +/Length 2855 +/Filter /FlateDecode +>> +stream +xڵZY8~_aK@#:1l,&
Lw%EG*%S2؇Ub*oqyWg?"aI(v_D^ȸHWs-Ru+,oT#oiXy$_VDmρΦ .h;|cjqiqmNmhhW:{uu_2a,N"}[A\%}hFmW__3!N\{>p0Y~싅406,
vh Z=q%=$fj_}iNq7\K3b~IODfN7"xZnauXNÇN"_ejo[+/UFⓝ`&iar2\>߭UѲoXhK&hu̻|-ڼ͋O6HE^DQ|4^E0fV>Zxr3^o<Z3\}
/_\ga
̗UYcɸc8ڷ/hۈ@7U_lymDjw.eڪԪ pybaBcH,qGt>3qGCD2;
ˣY"&Q
91r16/!gMU[QoFوmr.%ෂo+7S֛BSű/:Dzhֵw$c) +Z5dnt;>Cu2IFJME[ϖBy]({Rlc^M@+lH}Y=A>d-mp,^4`ⳞzYSr,Lho.'AP,8gIExl.,Em~v}Z3xzsDhfD + & +Tn섂G!,gjʏ dyU0?cпD>)9Pq1_0 +X
Ϋ:kVҼĢ$BmKP%fiIKl|JQOLN?C26ޓF0/X&9ɨkѵ%V[y7%)ۆ4DTF؉yR2_*{ ڔ6Ed
=m*$|*BJe6J(? +&uDXH8EU|rFť=GFdWCݘ#50- ԝAU1@Uu6աs*̝;IK[ #Cf1J< +qa0/фLE p[=HC2z|> %' 2c$"Ƌׇ]]Z~#O]&K[CXU{u*~KEZ'J
E +p1(R BȠ'VAMP>{DjrFjXZBăY^ձ h\L0)/FYc!7Iw&#q+e| ^l.1+WAdTxB]C'\"ʪ>@m
eR}PbyU!k"5Abe4 +ZBWv`BWǘ:X0ig>yMVfzߪ$h !L,08,cH$,Uグ!!U!(+
n
NuNT;̉`?E\ +uq})k#oHYNYg?F~DHdxFckYa6!TR"~)1gE2f4ʡɼH&5}
4GoJE~o? +endstream +endobj +746 0 obj << +/Type /Page +/Contents 747 0 R +/Resources 745 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 750 0 R +/Annots [ 743 0 R 749 0 R 744 0 R ] +>> endobj +743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [479.661 600.604 499.397 612.664] +/A << /S /GoTo /D (section.13) >> +>> endobj +749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 590.861 175.562 599.827] +/A << /S /GoTo /D (section.13) >> +>> endobj +744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.471 279.525 380.971 291.585] +/A << /S /GoTo /D (subsection.7.2) >> +>> endobj +748 0 obj << +/D [746 0 R /XYZ 143.727 753.953 null] +>> endobj +222 0 obj << +/D [746 0 R /XYZ 144.727 577.319 null] +>> endobj +226 0 obj << +/D [746 0 R /XYZ 144.727 438.193 null] +>> endobj +230 0 obj << +/D [746 0 R /XYZ 144.727 365.777 null] +>> endobj +234 0 obj << +/D [746 0 R /XYZ 144.727 265.984 null] +>> endobj +745 0 obj << +/Font << /F16 468 0 R /F48 544 0 R /F30 470 0 R /F57 549 0 R /F32 472 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +753 0 obj << +/Length 1974 +/Filter /FlateDecode +>> +stream +xYoF_"ˏmh
PJRqΒdJqCL8Κx_i\_mg:,hvI[%X]/g k6GX؏ΔWUe?vUfjk|7,iw9q]ۖ^rSv}>C0v XC9Xe +/[[Z&_"n2)kTrZ2%:'9lqf!c +c}KOsUv'/w6VeTQRAUTs@pg`OO410]τ wy"P .)]1Dwވ]̨6«v"=2ЂT7V)1 '^@ +ެm5BOLM |FT5O+^w8WQˇƆK:!38olqs%@Hq"t7L32RDS-pO/6%:jS~{g|=uJ;z>hb{bӢ/b?{qٕn@_Z^o-L3Iergan' +SaڋXOJ{J*8&8: +7dG4]¦ƈHW]~ +eIl?:~i-7L(yz1|IU.(S:(N 6P|=j +oLS7.ޅý +endstream +endobj +752 0 obj << +/Type /Page +/Contents 753 0 R +/Resources 751 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 750 0 R +>> endobj +754 0 obj << +/D [752 0 R /XYZ 144.724 753.953 null] +>> endobj +238 0 obj << +/D [752 0 R /XYZ 144.727 665.7 null] +>> endobj +242 0 obj << +/D [752 0 R /XYZ 144.727 453.538 null] +>> endobj +751 0 obj << +/Font << /F57 549 0 R /F32 472 0 R /F16 468 0 R /F48 544 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +760 0 obj << +/Length 1846 +/Filter /FlateDecode +>> +stream +xXYs6~`2f, !Mi&&$$Hl+ M9tWl\Ş.HC'Ԏ{c$sfs> i@;9qGɔQJݷHL=fhٷ?IxΔlD#T@i0Itd VS'%]ivX䖢XT%27ˬպ5?ڜ%˲ğUZِs%ƠGJVKy,L9f)+\pp9_eEjg1sTEK :<xG?
*ޚ{x{pb&ĮEV=A]}Z0}t0~nN97o[EIJCSCo.vS Ł2UZnq~.ڞ*ޛL=մM\m-jh^I*4xRCmus9#Fe^)"-`8?݂iYQݺYyyBI(ZY.OjW8ʢ̍ +endstream +endobj +759 0 obj << +/Type /Page +/Contents 760 0 R +/Resources 758 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 750 0 R +/Annots [ 755 0 R 756 0 R 757 0 R ] +>> endobj +755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.8 587.817 271.249 599.877] +/A << /S /GoTo /D (section.14) >> +>> endobj +756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.345 442.989 258.75 455.049] +/A << /S /GoTo /D (section.14) >> +>> endobj +757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.4 370.518 371.377 382.738] +/A << /S /GoTo /D (Hfootnote.5) >> +>> endobj +761 0 obj << +/D [759 0 R /XYZ 143.727 753.953 null] +>> endobj +246 0 obj << +/D [759 0 R /XYZ 144.727 716.092 null] +>> endobj +250 0 obj << +/D [759 0 R /XYZ 144.727 561.723 null] +>> endobj +254 0 obj << +/D [759 0 R /XYZ 144.727 416.895 null] +>> endobj +762 0 obj << +/D [759 0 R /XYZ 159.073 142.492 null] +>> endobj +758 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R /F62 563 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +766 0 obj << +/Length 2473 +/Filter /FlateDecode +>> +stream +xYY6~_@!E0fvmll-KINwg}Xe [<baĂ3E_g|C>L~>."Xopb + b.;6e6N>j͊r9wϊdg?ն[~\]x̋b%yHSmV*n⟡]JSzU{6_}~Ӫ<Ki_wiDA!n +YEx)wZ\>w +z;K\H]"#;PRK;ZKf)yKHveQ9#ܒ\B}mG,>2f=Eb9c'!. +'5߁ye;cӘэ6K&yJwcwR#G.$`X훷שּׂTq#[jZ;;[^8yK=C0ZUc+m|J4kT@7+U"H[,3ՉPUeF(|C2rbԼ(Z$u<V8%|8VFBX>CCPY.sKF#Tj`w,楞;zB4UJnIFIY:iIX"Apt
ko
&DYf겪3P# I.ɏk|(O6;Ozcpg mZXDRǵ2bK{D}Ix)#,E[P\J3>e{,|J F +Um2IHȇW7"6cQ?FQ$a>O̟
]c2]kwT +LMÞNM`Ҥ#mU*.qS)Se +k+_2&bMk*S{u/˛n>TׂOշz?J]&- +s|4Tj3Mug_Ç3 +}߮>a@b!<7b;᪓|$d-
HLT8?@yct
ahM00/eQl˪2u +! I 0 +endstream +endobj +765 0 obj << +/Type /Page +/Contents 766 0 R +/Resources 764 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 750 0 R +/Annots [ 763 0 R ] +>> endobj +763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.106 379.003 183.083 392.303] +/A << /S /GoTo /D (Hfootnote.6) >> +>> endobj +767 0 obj << +/D [765 0 R /XYZ 144.724 753.953 null] +>> endobj +258 0 obj << +/D [765 0 R /XYZ 144.727 553.033 null] +>> endobj +262 0 obj << +/D [765 0 R /XYZ 144.727 439.013 null] +>> endobj +768 0 obj << +/D [765 0 R /XYZ 159.073 186.771 null] +>> endobj +764 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F32 472 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +771 0 obj << +/Length 2003 +/Filter /FlateDecode +>> +stream +xَF_}Xmk?x78@zȖD"[դH
+;W<YFZbo@5Oq` $o_TUȤO2q@[_Z=]SE[ +I +@K_kĢPv♛Tm+>#@vh>nV/Eh1D\Ƽp /i7汚+L8_zb`L$ +@wwLDVy4U}sǻ#
V
!:|u}d}C~;ۓ3 N
65V1ΚGhmJh tйh,ݰ}iiu %ԴbS%6zs8<mI[ѯis1hjr_TpI:u{ +`2@9{*|$Ȭe@@ 0yNs9 /p~Dd%$gj>; g*f8KyARQlU.~Y:xli/ +>2mW}Cw/;BP] + T bς8/MVx&4HyόxPaɎi
:t Q`Xq§(D"F$f\>[0$G.[4j6[PSk +3BLiY:\t!mD +*@CIM[E;%^pQm+JYbsP0[wc}f*
b{S]]WK+,?J.OH,)ZOIVoԍ!gKW+'13I\̔ R! +endstream +endobj +770 0 obj << +/Type /Page +/Contents 771 0 R +/Resources 769 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 750 0 R +>> endobj +772 0 obj << +/D [770 0 R /XYZ 143.727 753.953 null] +>> endobj +266 0 obj << +/D [770 0 R /XYZ 144.727 533.01 null] +>> endobj +270 0 obj << +/D [770 0 R /XYZ 144.727 378.471 null] +>> endobj +274 0 obj << +/D [770 0 R /XYZ 144.727 204.445 null] +>> endobj +769 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F62 563 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +776 0 obj << +/Length 1728 +/Filter /FlateDecode +>> +stream +xˎ6𩑁5#rHW vM$ZȒfA3JvI"=$p'<"aI(łDq,γ;/3i] +߫6//+^\qm[}ZW"f :L,/q/u]Hݒd7TqnRyUOE +i)\vlgsSJ(?-Wҗq.נ[Sfۓ7ꦪMC;<SAX &dDw<;9PjdZ(2d.ʖ6.PZw:/Wktc/Yg2B_j[uFg$AP{\ESYФygif8B0.QHn tK({LLtUܡOĵӭF=C.d6x3 +q|3э!u +pSt[ם)ۜ6.k4~ї@ !En#d{KӀ`4i`V&45mk
N/78:-8䃝'8Հ<rit#7N2ӈ$SQ?ڇ<.,WspN IuωV}0 a1wcޤPt YBSϒ/ +[=k ƗǨ/͎ݙiQMB`Kݝ\o_Wܙ}?zoy}bЎR|F3A%LV0-.ƷAv9ŋjſk刁0 ӅD#1G̏b=fڤ_c˾_6 8SN8 $
^?z
>_v)wjeV'A; w +tP0BZ߆ +cP)L$IQy~1#Pe|mT}@ו~,I +endstream +endobj +775 0 obj << +/Type /Page +/Contents 776 0 R +/Resources 774 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 750 0 R +/Annots [ 773 0 R ] +>> endobj +773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.27 240.866 284.752 252.926] +/A << /S /GoTo /D (subsection.11.5) >> +>> endobj +777 0 obj << +/D [775 0 R /XYZ 144.724 753.953 null] +>> endobj +278 0 obj << +/D [775 0 R /XYZ 144.727 638.57 null] +>> endobj +282 0 obj << +/D [775 0 R /XYZ 144.727 432.901 null] +>> endobj +774 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F47 542 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +781 0 obj << +/Length 2385 +/Filter /FlateDecode +>> +stream +xYo6_{Zy"%QR<n/.pLBdI'A9LrE_p>~3s;C95|$byP8~{3QsZߛ]~\|W3pBsօ̬wNY-۬YJE˛]DR; I8 -6Y}/KH]ʛ(p,ݔ[={7feqcKthwLDžjhS +3NՏHl%`9s?ԙSFwxYkP[ gՋ\{@U6!Yw2}s{4PC~#?x4(zJfUvW2̾D'J
ؑ(ۛ#qMzQd6S*\v427QE,~ /6x([QAEۚR=a]zL[ڽIK[ʤfpbjKno ;3O)8X]JY>S]$+:0LPPms֓ܚ)#J7H`W*bSY!oG:FLKҭ:mŵwo
O`8뭚Uho,$XgB뱂Әx
p.ﱱ0G_%49<6;IF%ȉak`6@ +"h9ܱݘ\e`-!1_. 4"χjs#aZٷ3C0*¹n̨=]s͞[5ZfoIAh`]N+ A +}O +sB$uUx8R6AFݗR\5]3Ͱ +mJ6YM}k0`(ݒ *Xkl#*} +4>Wu:T(ub7H:XIԩ='4cө?b1HRS4:YEiQrǥ]O/B^KވP^K)dcWХ!:
ͮʺUnGm +endstream +endobj +780 0 obj << +/Type /Page +/Contents 781 0 R +/Resources 779 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 783 0 R +/Annots [ 778 0 R ] +>> endobj +778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.171 388.122 458.338 400.182] +/A << /S /GoTo /D (subsection.10.15) >> +>> endobj +782 0 obj << +/D [780 0 R /XYZ 143.727 753.953 null] +>> endobj +286 0 obj << +/D [780 0 R /XYZ 144.727 716.092 null] +>> endobj +290 0 obj << +/D [780 0 R /XYZ 144.727 622.582 null] +>> endobj +779 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F48 544 0 R /F30 470 0 R /F57 549 0 R /F14 579 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +786 0 obj << +/Length 2416 +/Filter /FlateDecode +>> +stream +xY[o~ϯSkcc./.SL1v3FnȒkA{!)dEXܾsvB'Ψ[}{)EDD1,VЌHIB%S1Y,'?Lt.ٜK:Zή2#l^UlaS2չ]?2[Ɲ;œd1q%49'i[ka}wmn,hvgLNv+ԻE1I|ψB4̸:rVxV~ZUrT"UuX[tTY,sx2EHfeO3U3Np"KiEcb%"Ǥ)D6f6dX@"ê!,"qr(9o{KaRmQWv2ӟP*tؕLFr@SN1:Q5
RQ\s)VﰯJ;=p~q*:p1DY67gs,Hםwrcã90I 8#!3^o)0vkZvj&zfp]1lz:9' 2yL)4*M+$Ք +I_`Fgf0Aб{eNw/b[:{pP6tuׁU^zWO;|RYEm{r+,bc8aᄅ:`jG{SӏkB |s++#wD +c,-vg\v)٪][{9sC0nG +73D1ZUY(!8rvb2LvzB>Ҡ" +q8Cb֥Jv{Lp]T;Tm8/8pVv@ ![fKN"kHA-|ш-=N%` +K-ǤB8l"mnw% jض-!`ˈVRȉ;ܩnL9ʢ-*UiD4K_ߛ7.st{úvU>3b?1+GpLu`إsU%:eX|?Qbvٽݺcâ{v)C51:`+j7gtJ\6s,\Bh=֫+=1tWWpgLS鍉$7n[ +XTݙf<!x4Տk|˾
.$,{.TZ +Z/egB'BC]vq-zu;7% bODEVkM-4
Au{TG/<Y";^T$1QlͺޗmrpįZ/mGOey릠CFnI(2,0c?'9R{gǡ
Eϱѻ1Eg
Oҝ;uTK\lֈx6CnQMڜ;쪲k9úbB]]2U;Xӣ^)~z_>mφbڕk
h#tAhs248 +y`g8L19Maty> +endstream +endobj +785 0 obj << +/Type /Page +/Contents 786 0 R +/Resources 784 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 783 0 R +>> endobj +787 0 obj << +/D [785 0 R /XYZ 144.724 753.953 null] +>> endobj +294 0 obj << +/D [785 0 R /XYZ 144.727 716.092 null] +>> endobj +298 0 obj << +/D [785 0 R /XYZ 144.727 539.87 null] +>> endobj +302 0 obj << +/D [785 0 R /XYZ 144.727 172.876 null] +>> endobj +784 0 obj << +/Font << /F32 472 0 R /F82 788 0 R /F16 468 0 R /F48 544 0 R /F57 549 0 R /F14 579 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +791 0 obj << +/Length 1645 +/Filter /FlateDecode +>> +stream +xYK6Wȡ2|))(R|֖w
BLJ4&ENp7xq_`eD.RJ*݂pU%"4]?C+\QrEDr0þɟ/:ys[NT1miE.()^RMJY<ZpĹ4);kNT$2G(Tݢ]vB$A`o&&;X<T. N*NwN^|ْaVD9Y +/ +HRG*8tGEa/o:rQo>B1ruBcfC;<n9oXmlΰK%Qe;l0Lnnnͪ!eQؗjg%r_<LorWeV4v^*;bPS㺎 +wy Y7ضVЌ͈Koe%krd"6C|H5^" +2|,|̇jk|y7꼾N{F;5mv#=eˤ'~Q +ZGLYy{-L>Bb(D<A<5.lS)1Tl>at!;EE֖}^x:uobC*/uشiakODJ_L]jrNqIIU} +淟AդIUL{*I)Mi<\Y39""O9H,uq5i* r|tW8i|i1M7A<qUS^y3旛2s[0p^9b}H.'[,Kɗe6V}m`Maak9U9_]90=J|bzQL2<6boB(@>YD}ݛfH{9W7 +endstream +endobj +790 0 obj << +/Type /Page +/Contents 791 0 R +/Resources 789 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 783 0 R +>> endobj +792 0 obj << +/D [790 0 R /XYZ 143.727 753.953 null] +>> endobj +789 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F48 544 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +795 0 obj << +/Length 2232 +/Filter /FlateDecode +>> +stream +xڽYYs~ׯ`eg
$yuTUWE2iq I]>h\~FnG~{7W_d$4S:
|j4Jy̢Covǿ|oWs%gI"c\̣eeWGK/e}uyڂslEyo{ܠ̵FSL4q"סƁ}7cr;ΔJ湖4v'`f.\L +<WC%q/監m5w-v$J$QƲD&(iLgpnZ$[ۖ[7ddmYU}9iQoqh=^qs,;bGSYMe=<l=xe2x3<$B.춸bp7"iuRsifjNqpᝐ, +Pw}4Ƞ4nwI2%vڛ E}=~oV[MU6 @9s,1J94!%AK> + /&8Abs:Sܠxt-._ђ贎~&aU}e$rے&&Ż呈tCQk=0
ܻÅ62'{e?;Ap +d$,M/IE{!
JB 0`&`%զrт౧/(v:gy'ȓϷb4Z>rG`~ +|>}P%eq\~ .K_UyX`^CMڢr +2ˢ9xI{tϧ}SR +0qTk +3ɦ]Se,U+mA
8O,-Zd,{{ +Lζ(QY'Ql +IIcKv!|x?yc/sЂ"͓;Lr<ƌ/ +lOwζ#N01j;2.oyr0\94ˌ$x`0)WjO<O$`& +5dwH>CXɒT,P7t vmI|}AO,4VJU,lPjFHz|2[S65B6#/vH3MmB[@#}Q\řzRIPKC# +ڧ@9T(5kNRz>^:j0
`.m`o^d(5UЬD`Om@2ei<6UiЅ(z}C H'I}0PޡS9zkABUC2&bb(L:^ψyQwv1Nb[LUIɧ&b@pT| +78 ;~P U`c=wconSN +endstream +endobj +794 0 obj << +/Type /Page +/Contents 795 0 R +/Resources 793 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 783 0 R +>> endobj +796 0 obj << +/D [794 0 R /XYZ 144.724 753.953 null] +>> endobj +306 0 obj << +/D [794 0 R /XYZ 144.727 716.092 null] +>> endobj +310 0 obj << +/D [794 0 R /XYZ 144.727 595.636 null] +>> endobj +314 0 obj << +/D [794 0 R /XYZ 144.727 513.203 null] +>> endobj +318 0 obj << +/D [794 0 R /XYZ 144.727 408.474 null] +>> endobj +322 0 obj << +/D [794 0 R /XYZ 144.727 250.688 null] +>> endobj +793 0 obj << +/Font << /F32 472 0 R /F58 547 0 R /F16 468 0 R /F48 544 0 R /F30 470 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +799 0 obj << +/Length 1497 +/Filter /FlateDecode +>> +stream +xڵX[s6~ eg.H:8;i$¡falmޣxYNt.:Owal//HX 7Oa^"4KvʰT~dq Aތ/ESMDzXE4(?YMA:+Y4'MVF^bAE(J_Jf2Ϥ( dgƭl#VӗI62fNɅP +|Q3C9N~i3IPS u"8sfR9T^gܯAU2⹙R.\I_WR6+I[:wlH"pURX
E{2\c 7Yr~MʬnHn2⩥|I֣v2"Ok QuߩGHĿ,J+l1->4Ck?
x~nV7Mb#G{cjY~g*4:N1<L)sCqNU|Mڥ,%*b#V:Wasv!:;ϕwnJVjm;W^+t.@'-?A#jQK!0n"OQvcn@q"GgcLL@Fhg~7p䭼^:jyңg C[#n +y҆`âA)&+rHC"b_QMܽC R -}T}Nf\.7J摚\NB$QfO_c@YUeu%:>c +:B! {p
1doHr-:3<2WFǹ{7p> +Hu{&q7.w3۸j+# IaĽ3Į'P;6f'O>:8b"~ +E>
m.㮣}=
ޔ@+bl!!Xnh(^ ʙ +vqB&tlc4!*qtuce:z/Fa;uUڷ2_;UOƈǁ*]D0i{"ko֙\FZX CY,3}`٩1YY%>ͪQEƖCtEy}+>bHEc.IW\"Φί(o c{_}q +endstream +endobj +798 0 obj << +/Type /Page +/Contents 799 0 R +/Resources 797 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 783 0 R +>> endobj +800 0 obj << +/D [798 0 R /XYZ 143.727 753.953 null] +>> endobj +326 0 obj << +/D [798 0 R /XYZ 144.727 716.092 null] +>> endobj +330 0 obj << +/D [798 0 R /XYZ 144.727 661.061 null] +>> endobj +334 0 obj << +/D [798 0 R /XYZ 144.727 213.24 null] +>> endobj +801 0 obj << +/D [798 0 R /XYZ 144.727 193.31 null] +>> endobj +797 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +804 0 obj << +/Length 1074 +/Filter /FlateDecode +>> +stream +xڵX[o8~d5q"ͪ]ie6SE05`5mkc i6e`>uF3i,on!n0Z&#@\;@ąӇ忷 $+C_iiV'O'/ɂVf+3o!GQm=]{*NW.i+֛NDi`~$/3IhOG#l=UvZAx3DSVچi$#cVHk?JA_t͌741%ȁ)2ș0!/P\ǙZ +2TgXѹ0\4s]qϱiziPCXzLp t lmgHXתmXJYΰ4UJ,ZɪuRn9
ee +RL =wÁຟ O͐m5G*'c"FPsu̺4fmzVɕdk!A%o8we1knQ1%jQ :6%&Id/,Yr73R,x]C}@ЍsSD^h__>kk5k;;װsdhZ9F,G1|)ڎSӄ]4Mm1FFP: +Q~R*jd_2&%m.dL0 +"OBuVX
w^y[p*ؖpx1X.\W;U3OQ\ f[;k|;v>AJ<Τ.| +<7x6qzBhx+!plE>tzhjGXToXvhdn",: +endstream +endobj +803 0 obj << +/Type /Page +/Contents 804 0 R +/Resources 802 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 783 0 R +>> endobj +805 0 obj << +/D [803 0 R /XYZ 144.724 753.953 null] +>> endobj +806 0 obj << +/D [803 0 R /XYZ 144.727 562.677 null] +>> endobj +338 0 obj << +/D [803 0 R /XYZ 144.727 346.807 null] +>> endobj +802 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +809 0 obj << +/Length 1060 +/Filter /FlateDecode +>> +stream +xڵ]o6+ 0)a@[ ](n6DقeR^ꃤeY1CZyxs^6ֆm|c7 0+Xf+pC#8L?~hDV^32Bֳ#>wΦ2& +7~!=ɪcCUÝG
dЧ>>/z;#Ƹ3sF0%J>&8lmlC%E7
Ō<<j *DKӑX܂t̉gR}
o19`,'N]?uэ#EA'nxo@ ٛ5)J4SEf:Z]iK"O/ +/\)+8POv,E*"
{|e%
ɹr/ +52!f|
e<#ZcKlZ<))JyO=&m]bsZ><aU*g]ڕL4z."vm}b}b"GFs%5f̘a,% +_Kѵ$
T!g)^mϪjŠl~x*$- 5ԟ{N7Я;\OGy|HO
+ӴטT(ﻣr=J@*voC\~~|5@iM."3TISips;$̨v8'W9ٴxlJa4eFJ[K="R38j0.I0D&U^2~0!I.V{>v$ (n{h +[#@ +endstream +endobj +808 0 obj << +/Type /Page +/Contents 809 0 R +/Resources 807 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 811 0 R +>> endobj +810 0 obj << +/D [808 0 R /XYZ 143.727 753.953 null] +>> endobj +807 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +814 0 obj << +/Length 905 +/Filter /FlateDecode +>> +stream +xX]O0}WDDB
SlL<LH*:iDDM~bOF{hk'qι:ur/[}?EC#kX +|Oe&a
L:&9ER¤&IG{|,\^%/Fp`pNHel+Ϋ+[;6/Avg aqY.BxPO2u>t`
,L!J5{O!Iy5]3"2KvGA]AA+kynEYʦWO=%QB2uUn;kj# :z/q*?! dhCRf2;ƧZ;o2{"Qd2Q|}"zɼ߃`\AL٥f\hi+%;T'Gݸm~2}FA3s3x7 +endstream +endobj +813 0 obj << +/Type /Page +/Contents 814 0 R +/Resources 812 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 811 0 R +>> endobj +815 0 obj << +/D [813 0 R /XYZ 144.724 753.953 null] +>> endobj +812 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +818 0 obj << +/Length 1632 +/Filter /FlateDecode +>> +stream +xY[o6~ϯC͒u0`t6+"Q]\QJoߡHr%lPT\O'X?_<{N<C"sq-{Z${xg] +PyLU'_fsc=KgiU|.ꦮΣZOL4p e̞sm͜b_ E3c0}0aX-K~uZF-6<s>f0lJGLQTl+:7&p$_Wݑe+0rnEԬHLwhrSѬMIw<hޯ /PZfT# 5D$pIJ3*u;h@ JzIyTs&. O6ong.ʬ/.Sŝyu4ʛq
~@zD̺YS|z J5Q.ڀLNdmr8Y{GAO*
I5OͲ6|voOWVVY\SbдzY`G
,FHklhV!a#tHl5^(j
4HO44hh5#Eobzʗ۔g÷bMJ"|'4C%,((6Ri`U+]Q+كw'2ѻƺR-]HEV*U{חQ>bܡ%u'd3;!'FuzV!59*UMg 8 +}i7մ-3f$=T҆+@MH";lq"PXе#TgЯwbssz>8n~e)=5Ё#Lu-wiXw*2qTLN>sB3Go=̐PE:rhECj}5h헐yzz5<
'кp5EN;\ I;Gv$g WoF {B]?֟+g?q гLXH60`L쟅$Medz1-\KEƃKW厑"d> +endstream +endobj +817 0 obj << +/Type /Page +/Contents 818 0 R +/Resources 816 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 811 0 R +>> endobj +819 0 obj << +/D [817 0 R /XYZ 143.727 753.953 null] +>> endobj +342 0 obj << +/D [817 0 R /XYZ 144.727 586.603 null] +>> endobj +346 0 obj << +/D [817 0 R /XYZ 144.727 364.569 null] +>> endobj +350 0 obj << +/D [817 0 R /XYZ 144.727 234.928 null] +>> endobj +816 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F48 544 0 R /F73 628 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +823 0 obj << +/Length 1920 +/Filter /FlateDecode +>> +stream +xnF=_Jc;}A-QPA*=e@{ϙ3ڻl\|ܯwY']9;˅dqE"t%"^Wp"bL>10FO*p]jSV]U^5!]Yl+Y=](.*y6^~պ*[܀QO}yл;?Ѳj|,R=pI!;IDVyVn+eJsAGEKRu\ӾZjs]4tʶ.)ϗ|&hĐ*\ÃB0.tN"Y̏^-|<v-h"WmVX!<mPI]H+tT3{\\<p>6j.XBcE82k~0>CߩVD'ܶKaMnk4tZ/!ī(V4_T +tRLd'ayc4:I W妃t<H0DV@E%8p2Ti>ECB//j*c1us:+"#䛬,<xdĨ'r b#: ltPeVd4`r*UYi?oc +VC($CY/E +K߅Zt eVT#Y +N8 5g^5ΏR$ж?)oӊY]]ӦGM=$iY^Www4%ܻ'E4۔Ѻ9wpʵXQl<-^×3oU67}STeuf/gzf0ʾ6B(ʥ[-X~kzE[u*[nfrAlpsOI5E!m w ]c绽05ɱ亝<pUuT9C҅t1Z&ɐqu{hl})mCLc'а.M-d\Ӻ= C}$K5(YO`uOJ%ﶪn˕˽ +endstream +endobj +822 0 obj << +/Type /Page +/Contents 823 0 R +/Resources 821 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 811 0 R +/Annots [ 820 0 R 825 0 R ] +>> endobj +820 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.582 477.538 499.397 489.598] +/A << /S /GoTo /D (subsection.22.8) >> +>> endobj +825 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.731 464.985 179.258 476.761] +/A << /S /GoTo /D (subsection.22.8) >> +>> endobj +824 0 obj << +/D [822 0 R /XYZ 144.724 753.953 null] +>> endobj +354 0 obj << +/D [822 0 R /XYZ 144.727 537.548 null] +>> endobj +826 0 obj << +/D [822 0 R /XYZ 144.727 451.443 null] +>> endobj +821 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F48 544 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +829 0 obj << +/Length 1835 +/Filter /FlateDecode +>> +stream +xڽnFC%p8S%E{HƷ(jdᢒTM#Yv\Dp,*o^yXhvaJf3pxv9C7E(! + +`e'Jw,Hbɂ@od[Tel>o0GU#X#Gbҧ7[~jd.,^LJ?GI}}ۮ&m&)|>YU]$I𤖵:>gK!"pS¨+0GOwE+l\ Avs5eȂ{0Iy)nm;Fz,=&Y9RH+-ܐ16X% Iז*a0&m/`
Gڶ)1wZg^,n$>ONQY$]]xÏSf㿱ńx@ϧ'-Q@d#BXcVKm1l܂0u +pD(xܻ> PM=@ N4rg!bӤ4U/BM+i>;<Xok\ZߙMl#%@&N>.rb^fwYz7< Ξv.<(H +z%W'C-X1adzR@ +u#K b5.oVjtLTUIKz#oF>S*tO%UH/½eL*lۯB*.,f*:<L1yʘ2yWaj}8tCi +5 b(l|h(UT ςs{@WuZ/Lw\_z+ +endstream +endobj +828 0 obj << +/Type /Page +/Contents 829 0 R +/Resources 827 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 811 0 R +>> endobj +830 0 obj << +/D [828 0 R /XYZ 143.727 753.953 null] +>> endobj +827 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F62 563 0 R /F14 579 0 R /F48 544 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +833 0 obj << +/Length 1997 +/Filter /FlateDecode +>> +stream +xڭYo8_/ jb=o0s,
ߏ%Gr%$")GJf7ڷ7^_x, zÀhx1~6Y>[|URqx +?̸b%XDa-y!b;-ě5q6oEͬ<߷5{~'yT+!Ox^ohRmVZvf Ц( +
,ۅw?'/R>00 @%!5 ^-Y}t0Bd$[77jƺv"o;aѴ؛3O,1S:%{QTy++yly
Gwr;5[j{GM䒓6Nl Zbl8~8uWe{oz:=pӒJسMwź0/㊙bp<Y( + ֯31xJ +žm*$y %HYV"+<Xꨓ˭taA-vӌi˒zڀju5Y"V(._ќ\)ΐV8 +zQ#<"a?cU@>l(xUv +u{X"G:blŐ3V
Kc {yB +RU`
լYHm(66ET-99T +mX{+6pye׳l1?q98ْ'm̳$w_ꦿ݈h3KW^ܾa3
FDG4?)=駙Lr{NN{|R=vWS1< ID= +ZԛtCրFij:)Һ? l./D7s0yBNH×<V~9샂ϔ +endstream +endobj +832 0 obj << +/Type /Page +/Contents 833 0 R +/Resources 831 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 811 0 R +>> endobj +834 0 obj << +/D [832 0 R /XYZ 144.724 753.953 null] +>> endobj +835 0 obj << +/D [832 0 R /XYZ 144.727 601.547 null] +>> endobj +831 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F62 563 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +838 0 obj << +/Length 1721 +/Filter /FlateDecode +>> +stream +xYKs6WhƇHSb'i:!A9%M6'TlG],H4-S%x</B|t=_p۾xN:fH.s 'Oca\Y]OLR'>^eeMMZf}N +XQ7tHNIhnlԚ9JEe&'Zi$dVIdړ9jY8 +;?hP; +S1v|^mHTZܯzqhSzmk{rғ>!vkG?HH\|)ty'8Uh_ $W}{r]1-hr;\Z#Mr&ߔfP'[LGZgs52ms +{&i@yaBqq1뿋/ Ωkke&QQי!D] +kk]9](\\Wz+Gp!I)A M4<軔iֲ@h̗U9C8x_`{gȫPVA`T*՛l{iBAUeS@$5~Z:#VÀ7I>edsv +2j\C0v7%\15qBX'>Bb4W-ǞG/qWP=ƢiPoV +i!z˳-8(XhYYo]U/(kCpDߢPMYlۇW"un0OS 7+ߡn?, +endstream +endobj +837 0 obj << +/Type /Page +/Contents 838 0 R +/Resources 836 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 841 0 R +>> endobj +839 0 obj << +/D [837 0 R /XYZ 143.727 753.953 null] +>> endobj +840 0 obj << +/D [837 0 R /XYZ 144.727 716.092 null] +>> endobj +836 0 obj << +/Font << /F32 472 0 R /F57 549 0 R /F16 468 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +844 0 obj << +/Length 1483 +/Filter /FlateDecode +>> +stream +xڭYoF+!1{2Ph-A ZD(%؎pI%EcvO8{}ig#p%|pcQHH:M"̣}Zx}I +,$j_i1Y3f9+JlIkJl+U#T(/=m]m\4o&Bk*AUGB!Ճ/L]ߙL?̲mX(Hf!jfe˙G*mY%%(bI,TlM%ԊqlP&^Րz5SfD}b,d,òJ̩MZRJ_; +-/1QJ~q zePrYKPkUd(,+#vҏ&z}8`z8gJ=0Rw%^NuVa2:<KuKZ +uۻl)
=[([e,dyU' ]]=Y/ \_z''r7{|DQ4_yyr7N8Or.ooecCpH#q6;ט{l{>.ȧ +O> +Vr +q8W>6TB5q|z8Y"==c{hfylыcKJHg1[1>Nܞdn-A6e:|
lEUm0>Vf|[:;_K[?xKeÁ + ߱\|6cEsԡ|7>S~s5\Lv>>wm$Ͻi0Q kA!OhWDGG=Z=
4%{J3y/ _x'|ʸ(K77L +xi8Ud%Zz&w12M4}A#C_LaPT<\?
lkl2ȶG~o &66^o[H6,N}6߃ȂP8z!YyHmpyTV%@dbv +endstream +endobj +843 0 obj << +/Type /Page +/Contents 844 0 R +/Resources 842 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 841 0 R +>> endobj +845 0 obj << +/D [843 0 R /XYZ 144.724 753.953 null] +>> endobj +842 0 obj << +/Font << /F57 549 0 R /F16 468 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +848 0 obj << +/Length 1629 +/Filter /FlateDecode +>> +stream +xXo6_avaX`d*&*KHMoߝH)$a/w}Qb~z٫3BD^<[e3{
elx7k $ Cd>ih
%YRJ7j2@=geՏ(,uEJ-قuɀb'A,-YBhAh+V
v/yK,40@Si +,D.H-V(1_z9Y]s@+3_MZJ:4ks5}fEjf[QRŀ;-;4 ~#(G]4saZyqg[1# ef[ m[J\,wPr+>:ef.Ji6Q$HyɒyMlOs4*Pц&p(>jaS˽g&8<H`D*+cZ*hXȣ;l췘vfW2x@nyPН*JmEZܕhKs+CqtkfVeo̥56-OS<DoʴމBѡjaF^6G`9a\jJA}6Sqx=h뤍IRΜ?, +vgkaߵdY*- +JXRby}1lk7!;"?IHIa?g-aՏ l{-qYY UkѤ//GD?vxZ=l +'I<z|R
}J"BUiM p7vy{钱DA^ls:;0HQ&j쳰iQ?ʌn"():kg3rպ{y7-qvIF+ +jL
(ٵM/|p4ÓY0__#vXAѝR4s )UhZW8cow
h)r cX!ș +8; +p^_`}8}$2k-v{/i8E|pLJ|k>]Yjr>yuqD]M2;`0#oizDKQpW<:p(+(9OY<r/z;}kX(0իQWlyaV㿄uVs +`62O>\8JTthG5T-1xL~DɷzZ,C +%D&nM ݼT&W*2u\#sAY?|R +endstream +endobj +847 0 obj << +/Type /Page +/Contents 848 0 R +/Resources 846 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 841 0 R +>> endobj +849 0 obj << +/D [847 0 R /XYZ 143.727 753.953 null] +>> endobj +358 0 obj << +/D [847 0 R /XYZ 144.727 678.578 null] +>> endobj +846 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +852 0 obj << +/Length 1200 +/Filter /FlateDecode +>> +stream +xX]8}_a:/64m +B[(y.MYlӒ,qRetedI=^}<z/73=D<% +GQcX$yd"U2yc +@V骕!Tgax2ПAi#>{`nQ +P +L-x:ުχz na3v2`3YP +Rr@mOCNkateS^[wg0K#~ +l{XQ`n(p053#v~onʠѠrG\
˝縅|KN=xX(Su1=_i-;A.b(lnu5r{t#?O]]]./(ʈ"VF2]2_&IUI*}*ܰV2B]Uץ>ϥ(6ޝ*t&݇;IE+h1hlSL1[Ecv>VXc-P +endstream +endobj +851 0 obj << +/Type /Page +/Contents 852 0 R +/Resources 850 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 841 0 R +>> endobj +853 0 obj << +/D [851 0 R /XYZ 144.724 753.953 null] +>> endobj +850 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +856 0 obj << +/Length 1187 +/Filter /FlateDecode +>> +stream +xݘ]o6+F*ߒvAPeȆ$7KeN]"C>6~G..g Z" X +ߠ@7ޭ)|J^߽RߧշGK]ehfV*T/a%wb2Z&Mio +2%|sPVN6>B59D,ltphK2N>]*{y
Ǔ^9uH=s!OLJ|!gCFNŇie|gt.D 瀈
H&y.uQg0y̏~b9EN2?С +endstream +endobj +855 0 obj << +/Type /Page +/Contents 856 0 R +/Resources 854 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 841 0 R +>> endobj +857 0 obj << +/D [855 0 R /XYZ 143.727 753.953 null] +>> endobj +854 0 obj << +/Font << /F57 549 0 R /F16 468 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +860 0 obj << +/Length 1320 +/Filter /FlateDecode +>> +stream +xX[o8~/ 5`WZZi;}Vyۮ
&ECLHΨH2Lvҽ=\ +)^:͛Iq^k1>[+yq{}q1Ȥϳe,Y1,UYk[kNԃIg3#XpLxcyo$?7luZ5
{(bx/qDMaN}֏p$]$;̱K9$nQìn)foLG[h[T5i1)Өj4brZ%M-+1vw =7c;*BK8c^m:<B!gcm$kӣaͻc!ۂ;x[%ux[)3 +?VZ6PE62QpfuYNĽJ+EݡaF}_א=Pe:Z:h;K#ʥJ+3l|Rc4>vA̋CY|ڔUļwͭvP2i;v{Ccc7+p*tUVMHΩ (4,mp
Lh.:DUz/\3j:j +endstream +endobj +859 0 obj << +/Type /Page +/Contents 860 0 R +/Resources 858 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 841 0 R +>> endobj +861 0 obj << +/D [859 0 R /XYZ 144.724 753.953 null] +>> endobj +362 0 obj << +/D [859 0 R /XYZ 144.727 223.185 null] +>> endobj +858 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +864 0 obj << +/Length 2388 +/Filter /FlateDecode +>> +stream +xko6 +am ኢ +pW,w@HeʒNKA;áfN`!3yq,vg7<X,`q]pc.B'`܍OCVgK7hy ^. wAe+_>`hP>iƸm\dWQϓFoue/H\x_[$H'bqj+cQO UGᦐ3("uAH˄@;-iU֨522WFQBB|sŞ7Sk%;Ҟ[A
ZE,~.+IfQ'x4IUDyWhuCrFq;K3._ kG9agĨ7mI%"܈9A0ĺB"I%؞Co[̨Idau˞m{٘mIj|VT +ԨtvgY@B#~j9%dE$Mlk |],;Lim,۶N +Cvc>l,vvaKs#q[*u);B;˄sLL +`(J2UKQa>T*9vXh
)+Y&U-mqe +b"L3UN0nv{D<~2Ƥ@]4:A*T-K}Dؽ0+@[rIɹxPcle!,Ew(#% ^FpviSrLMkWJwy|d\uidC`NHGb.Ǝ1kp3 +Q&f7$IJd+͚ZS(`#hʼx|UC{"u1/wjRd:>PZ2%,|?o0ؿ̚ϧ,^SnĶ<Vl (6KРMX復I/TcIZrr0Фsc-ThX:-cMQYjJA#;ThΰHuy{wpoMv9D{ l,4d6Hu/۟;P`_ϴ1&|;WFcX9sfuQ"{uϵd\K
RsY80:Pxc?cʹZ憐<N}MDG +wt>:/lxM!sBʌ:Qx_4:d/}wTŻ<b~2;9)guu8;zp~8kG?Qgԃ6Zo& +ٶYʧA--i~ӋkElVڛN\b!4?
pXƥU%.!gP5c#$ot^F)=hUD][RA?k8;A4֖.go'kOw.4dZWD`|q~[C0T42$F}9 oߏ7957;}еrݪlx=‑CrusC
#s v܉\oy`'ܙ} +oco>JZYш
> +endstream +endobj +863 0 obj << +/Type /Page +/Contents 864 0 R +/Resources 862 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 866 0 R +>> endobj +865 0 obj << +/D [863 0 R /XYZ 143.727 753.953 null] +>> endobj +862 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +869 0 obj << +/Length 1982 +/Filter /FlateDecode +>> +stream +xڭYKs6pg,E6=4=u;Zʒ+ɛ H,6' A#go}Ef<p9"nf?]|^\~?+l{;yĝK8#}$O.>q}IC5v:4;PwHpy]j/@p'ki^U.0GN]u+~.PP!,&bJm
'`^/i^z]ҜTI0]ZIտOM&Iv%KH.ITغ?;aб5(>`fFRk*Cq<y^?[m{]c3C]-RKo,+=ϝT773w\Qh"ߝˢ2`@[yWi#{XC(txP܀L!M?-8j +9!lV!TUa+Mp98K5@3}Ί|oH,b@LEr渽`!9~/z5mhݺcn#p떒A&fZf#rU{2:p=iعG]g*^f`^hod`L F6f{d."VJWa~:qvk\Z݂F895\q7~DL=RT)wX'Y|0yd"@yӮ>3o)FEaBlyaG<eДXcD])c3Mz5d8 @ah%h;BK^* ~ouG
_-$FE>TfrZѿ5FeЦ*Om"?vzUG]TK״HTIU2pגtGE$4Ik_;Yljx4[m=F+9M@PBLJ#Xț2g4
&x9t;.&x*^yR\4_³wxE31!Bo(^h$FCV[UDF + )H',`d2߾[@֔W`*t27N1v6$89ZEz^UDڡbpSrS >t5F̣s')G'*cT-IujS4KZ~@iIs6_R\f.IPi + #uovGz(/J10` +0bX2+Zvu28rbfUm3f$t;A%Nb@<lx)`<>tLH;% +byX܋
sc$%4-*:Nz#/ +aFu"+
IKsuڔ6쵅55tFnjfrg^QWų-P ^5A4e/߃Mu\iצ^8=D@%]t,g>Ym;e?X]C`p*wtڔ3E,
`rp>8o SyԿ==O~\F`8ڣ?k]&"ʦ7w +endstream +endobj +868 0 obj << +/Type /Page +/Contents 869 0 R +/Resources 867 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 866 0 R +>> endobj +870 0 obj << +/D [868 0 R /XYZ 144.724 753.953 null] +>> endobj +867 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +873 0 obj << +/Length 1457 +/Filter /FlateDecode +>> +stream +xX_8杻tH
@N'=ݞtҼ"`m~cldIl'l3x~3c-7|?l%lPb-u>f8b.>-=l{{ +
Bj֠ہvR+pzdg{OZ=Vq9䃩S(5(sABP)apJ)F$1m$
ŀ;:K}Q^";uuc!XA参G]GEJZ).Jnj^Qe +endstream +endobj +872 0 obj << +/Type /Page +/Contents 873 0 R +/Resources 871 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 866 0 R +>> endobj +874 0 obj << +/D [872 0 R /XYZ 143.727 753.953 null] +>> endobj +871 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +877 0 obj << +/Length 1054 +/Filter /FlateDecode +>> +stream +xXQo0~mԸUZaOV A%$ڭ
$ԗ|@ϫ5$qDRpLbv@`x?qqM|' +%4 +̳!&?j&f7Th4%}ɫT,YCΞ/@rx!6lEչ<{=o +G +Gu)/PN=ǥOE +;g⇴t?0nQ!bjN35mZDH-I
53=~\/<M0ii] !_JQ/ĤSMBfjŇ^%f䪕y_O1RҢ].DENA#Hr6jF~#fMDMr&*DR^ɒIsn51ʌ(IhZŚ{ +%<]Yeq!3b
/_N&P7w>x*}oWK[LTUM(:X+rw|L_B5ΕvML*Y.Ӥ\:\nVFZciMIh>YBm4g#Uu +ltiYmYЊώr&>aJ|t@Rc_`fd:+O.Uw=S9W豼>OxC`+⾭il&؟祫eXXp;r1qթ Z[MVp +endstream +endobj +876 0 obj << +/Type /Page +/Contents 877 0 R +/Resources 875 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 866 0 R +>> endobj +878 0 obj << +/D [876 0 R /XYZ 144.724 753.953 null] +>> endobj +875 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +881 0 obj << +/Length 1572 +/Filter /FlateDecode +>> +stream +xڵXKo8WEjH=rJ,@uma06%ChC%b{5g8Cz~슄%Q錰 +<Ae!ί~ة2Xˢ=),r^gkE,ȰkѤT֥;w8XVb{5RqmRqR:KW\$OJ2vҹ)f=݁+sյi˝mz]܋*]tt& +Lx>G1#m9xr`kfYqǐa_{54F\qZPIǽ;=חgK!V?_giBe۪ Q. Ųg +G$MGNcpiTr|;TW8;+uZ;VR>[*Q*#52Y;Ka(E폳kB-8fAV "R=ӟ7T +endstream +endobj +880 0 obj << +/Type /Page +/Contents 881 0 R +/Resources 879 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 866 0 R +>> endobj +882 0 obj << +/D [880 0 R /XYZ 143.727 753.953 null] +>> endobj +883 0 obj << +/D [880 0 R /XYZ 144.727 609.617 null] +>> endobj +879 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +887 0 obj << +/Length 2001 +/Filter /FlateDecode +>> +stream +xڽYo6_!41)C486kK$7~3Rf +M@{`ۏSŁteJrCiշ9D8?<[2˔){mD>|h1%'q3%d+*QEN/u%38ɧUd=0x!ªNQ`%p2RYSX{O + +w4!YEJ.Pߘ S7妤?-HM'YbX(DsiYJ-FygU붚I:7RcBA G%d>!G˘fMaIFsSN056ay*3ijR$Q1DAlG\
J?,f</0KʄݓWzp#lZhXMS>$NzSWyJ΄)+ew\< +cp9$$OW}k澣4ƉUQ=JңQ,3H2W~`gEEA4+ |*``ս(bpn\$ +k,塕,#`ZPǛ/ tj2 +_ةD/uBPܕ:J$xD*`&Ǚw-r&!QAP\Q\ 32M>pfYlaן[Z/*n-PE4f i3Vq8zG3):_Xl`K[=ք7Y{4edHi
>B*n>wc\qʸL~;lI +<>ܗ[H,>z\cRKm(>o裯_WK̻$0#?C$`"X&ycs\1q\}eYZk1xz[R
N]
áyeXn`#zZA +MI?iPUnn#7g5 +endstream +endobj +886 0 obj << +/Type /Page +/Contents 887 0 R +/Resources 885 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 866 0 R +/Annots [ 884 0 R ] +>> endobj +884 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [314.3 385.66 423.77 397.719] +/A << /S /GoTo /D (subsection.22.10) >> +>> endobj +888 0 obj << +/D [886 0 R /XYZ 144.724 753.953 null] +>> endobj +885 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +891 0 obj << +/Length 1629 +/Filter /FlateDecode +>> +stream +xڵYmo6_a4&1#R^k.C7 Pc"ӱ2'5w|")L$هy;cĞֿ?-^]\R#d`E>'!Lb5d9mk>{ E6)y9%x9j[&15cd'0A:ڈߌZ,*bd&9]Zv;ffA!q߱8rv f?<d"/pIP;\7><
aOGƅ +NA[v_y + +wütT.QpJdl;\$ꯪU-*p<)8[~τ_:|%Yvi3.e"b>ёZWtɭ:k3u`vg*Fp_x_5qdJ@#x\&Xbw|*諂Ƴ8Sp/ynz-@cSF$?sƟL2|iޘVY7,5rub#ٱ]ݕ*-ħc 5PnmiyRCdVjR'kILkqvNLs-RiM=Zj3FH +T<sb'q5pV5J-LD_mRߦ@0#k6εv]ZEB^}A1-F[3g5_.(≇C9Q5՚QЫ'hJ0@ +T6<O#!< +@;&/EwG N@ϥK0"o1=qgϋW<x +endstream +endobj +890 0 obj << +/Type /Page +/Contents 891 0 R +/Resources 889 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 893 0 R +>> endobj +892 0 obj << +/D [890 0 R /XYZ 143.727 753.953 null] +>> endobj +889 0 obj << +/Font << /F57 549 0 R /F16 468 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +896 0 obj << +/Length 1468 +/Filter /FlateDecode +>> +stream +xڭXm6~}l'qU%T[]+jutwB!8{!IrEqlk'bǙgfy1h/o+tfNH7KF.qDLzi^L +/-:|3Q0&UkUl2%>Gz'S( +?CPPP9KU9<bK[JiǠ9T$R34m!6fs~恞S{Pǜy|/}羒YwSrbd6i-'D* @ q<7<8R>'EQ%^)6 +@jfJ=Kȃ|ygse+[}tw_sa2I>X[N.+K!⪸w8w4ﰾ^DU~NCPP[mQ?3ChELL]`}J_c;J=6m{yіǣs36M1OmXۛcqQn/.3kwymY˦O>z|z쨽+tO)Q.$?<vJŜ~ToK*_j İ痴3NVP]D&tc{:"^i>y7ޤ +:Xjs3nPpu%<9An1ڿJRIXy$#ZY䖴iaʼ)%l+$lX?v(.@Qt
Tbz *Ƚ)=w]4Sޡ,P +Twu'?߽'/ +endstream +endobj +895 0 obj << +/Type /Page +/Contents 896 0 R +/Resources 894 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 893 0 R +>> endobj +897 0 obj << +/D [895 0 R /XYZ 144.724 753.953 null] +>> endobj +898 0 obj << +/D [895 0 R /XYZ 144.727 441.945 null] +>> endobj +894 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +901 0 obj << +/Length 1274 +/Filter /FlateDecode +>> +stream +xڽX]o6}ϯ0PY%I(n]E0ȔMT4Z$%Gvn{ν"& v˓78Nyd&L":؍'iߜф8qz3zg2OҜzq1oeYƨ4Fv杕9N/z ^F^xKCZF>̓X4Sȉŏ|nz6\wZRźlig}ԸyߙeJ%/t|F,=<-3 +`5NASkjŊ +/~U@,T367t + +[ߩAt<"C8#pȩXh"r矖bTg k.bٹl4y^djQP3G"`<j6LZS +ro +Ų;*H٪.g unB̌ۙ? չ +endstream +endobj +900 0 obj << +/Type /Page +/Contents 901 0 R +/Resources 899 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 893 0 R +>> endobj +902 0 obj << +/D [900 0 R /XYZ 143.727 753.953 null] +>> endobj +899 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +905 0 obj << +/Length 1072 +/Filter /FlateDecode +>> +stream +xڽW˒8WP
D/l:JOMYyVIҀHS\=W!8ԬH9Go2A=v
=2ֱcxȵ1ud|6W-?w<ce&AzQlQ"vpnx%C6lg{mɝiYUnE)0MJ"`.m\Z ZZ1fHojvW]U0 .Pf"72j +ZnYAboadFVQ:UOye5YY^YbAlFQgN`KAYdY(4QJzTsK?jowVYr˱k͔c"-vL?$}>>vO/P?ctF)263g&9
x3yhgl:O<gpЌ8x04x4 +C^HHVFme
7? +endstream +endobj +904 0 obj << +/Type /Page +/Contents 905 0 R +/Resources 903 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 893 0 R +>> endobj +906 0 obj << +/D [904 0 R /XYZ 144.724 753.953 null] +>> endobj +903 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +910 0 obj << +/Length 1633 +/Filter /FlateDecode +>> +stream +xڭXKo60C"抔DI[[z(bo02)(o5;|HlŖ7=c8|Ù7xx_y(J"?L|AQI2a? F =֒czQ- \jӻ'VH!nhzp+8|,r̟*B#»N>W/`F0>̑0;a=?yh6q?od3!Dĝh'쮙0;y|]\M`@ AtI
W,-re۬p%9/lam%V#
KؑLӂgRȒ\.s6}VJZKOiZ19u;mK9vmP,NnG2nNv /aR\<dCd)Fx-TKԿLFvm"[G~$Rn|_ 4xPwW`Jktʋ(v.jo\ʇ:,@,G$ T۹vcg23 +8"ψs.-&saIEG+XkF.p_mG7h#|6Q<W^yp낯Y47nϬ+1C%U-,}0BOJtQpVh)@4zhGDg}rYeH"-z8iZ}?o/ |1t&aZew,."A-s}ZGEh07S+ۓ/D +Xa;9WgJ_xd4U|u4$ֳDܢ-(L0YSs·4J;!.'+7Yf y[@jc
a;ȶ6ׅXzRb
jmPhLk="InuvMilr+ƉDY
OX%T+4>iTaiqKW1z;5{ЯA@ +W߯2?ײ#phC|`_!53'>埜$::,33sVUe#u["{dZ(_:; +{B?>jgɋ +d.7J|5/yj\ԙ32OF]Dmq߅s7юó\ĵV9LQ`[ȹ#Ǟl^yZ2&%: +Qi
9% +j`9ysø$9 +f?KQKh[H +ٹ2m ys=h%nc{j˹x@/]`xף\n|%c?@=٦^]e +endstream +endobj +909 0 obj << +/Type /Page +/Contents 910 0 R +/Resources 908 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 893 0 R +/Annots [ 907 0 R ] +>> endobj +907 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [329.365 246.382 341.32 258.441] +/A << /S /GoTo /D (subsubsection.22.8.2) >> +>> endobj +911 0 obj << +/D [909 0 R /XYZ 143.727 753.953 null] +>> endobj +908 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F48 544 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +914 0 obj << +/Length 2418 +/Filter /FlateDecode +>> +stream +xڭ]oܸݿb~n/C +HCC)YKBdi#jcΐD\?3|/]ݬ3꾿]zJ,z"AXJ$g4M7qJI&e"# +@c`>0Ji6ۘ9g'T1Ӥ'D) +{UuSwzg[4ED͖sT,^*%atݴvƄ(TYDD:t:KhV}Sݰ4/ⶬoCDݡu,7(nv{d芭JLb*>@.~xY
8E,7S + MI;?9~'Z`atjdݕj7 E0ƇƍCEw +^<85wդ%^ϪW'3:(bB&kejq4(-[U|̤E:=K# +z7PnP@J'Dz`;ߗ<r0F(=( +V7 +e߉*)aƟDαftVVuƾY3 +<'C,Jup@`^!$y<pOf=(H1ASfVRe\"AJ-+껼1k:I$s-҂2Afv]};a]=QGC@"|E@GO+`j'9]Kin1WA9&!a~C?!)PUqY~]{5^A~0ENR'H1/iV> +wy68?%+m*&ոX-.EZs=(0Im9n5mYllX˻lE +缺7P.$: +l>ա&pfL+#~C]!iec%/.TUޕ3p +3G{l2AV4zC]h|w;䳽8#2:Xu-nZ{oj3sޅvgGՎؙs6D0z\i*/y(`ƨRB3eƐ$6| 1rmh)$$
ev'~>^L3'+\7Q4 ȵ+![% ۲l=H$2PomPf +i$̩ +[L5]Ac(0
GTc%InUy*9<-ϡي;@xߘ]L+^۹}G5kwڂ$'\A+?9Y{[S
Fkgj\%!~7ddms_Uר8fI>K
*~l~}~Ndhي +f]jL!ԑՠF҈Un@h +8;#ؿ_/
BO6? +endstream +endobj +913 0 obj << +/Type /Page +/Contents 914 0 R +/Resources 912 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 893 0 R +>> endobj +915 0 obj << +/D [913 0 R /XYZ 144.724 753.953 null] +>> endobj +912 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +918 0 obj << +/Length 1379 +/Filter /FlateDecode +>> +stream +xWKo60!Ň$=d/>,-TElaJ$l{,9JDF=3gșod=_A|wqdN +.fN3$ +nݙu{ܷ23l.7YYjv(֍Zb9]Yrajt +~©4~K3Nr۪*k30^ĕ4[R +yd>3>[Lm'</7Kchn:psd*K +e^ɯk=%r!ky5TZ]6:{ A=2F2fnF̣S+mZE `Y6h4Ӫ?~3Ox?델bYVo흣 +ֆwȫX㽭q֏{tDPD15{g {c$2?^ +endstream +endobj +917 0 obj << +/Type /Page +/Contents 918 0 R +/Resources 916 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 920 0 R +>> endobj +919 0 obj << +/D [917 0 R /XYZ 143.727 753.953 null] +>> endobj +916 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +923 0 obj << +/Length 1263 +/Filter /FlateDecode +>> +stream +xXo8~_҇.Rֱ IQIp}lP7bM6~c,l{V3?1ywqMPC%Gq b/Yy/b?/)d$҉|!atvF~4 + WߋZQO^g%¢$Tv>riCLN1"FneF֠5pB-!N%Ÿmi#UTɥUSEyyԑbj@d0EGڴٓ0*J2G̿J7Y)64Ad;o8Ԗm%MUڜ^(?Jij -4~< +8"x"ό-_VɵыP$_Di +%1GF/-qN~?~3VVdFLMM,=n nmzёu=ײ9\M*ˎQϨޖCb(#Yd=0V?$br-) +ġX{OtNUpH1ҳf< s +rt<T`V)ng(|L&FUUY5"Jǀ"Xɇ4GZum.mH<%ɳ1x~DgЩrIgϟn+U'A>x=<ro^T)dĽno;>s'nrNޚzXO^Q_A}vUVm2p`oiBYA~A3Ao&W5Dtfl& ~fx8 "Ÿ́fNg]35by&Cw$lM@EpTA9V47=\M~|u2 F'͜Ę`Bb(0+Lh\{?݅ +endstream +endobj +922 0 obj << +/Type /Page +/Contents 923 0 R +/Resources 921 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 920 0 R +>> endobj +924 0 obj << +/D [922 0 R /XYZ 144.724 753.953 null] +>> endobj +921 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +927 0 obj << +/Length 1838 +/Filter /FlateDecode +>> +stream +xڭXmo6_a&o1+J^<h74E!6(бPr$5wQ2%<-<ǣ=ؓyqu&1gXO &DrMo +;̮C +EEex\հ)
<aLk^J +um=$8l8 \Y\PeO( @8$ۋϰ_i{f+w,ޗT}3b?&@G\8WY#⸾̇31?e ++x >U 6H6v@h@Hٶm/le*Qw*2 +V$&a$Czx!<#È~{+=[8vљ6ϵ>SG2-wk*rC->Հ%=ll昈%iP&mN
K] +:Ӯ4< +0 ˖k;,ά% +)AaFRR2Dte8j~C5u!Ľ:4Ӏ>_*JO8Ψ 0I2Re8NEukPgk)*R#4Y@;S +endstream +endobj +926 0 obj << +/Type /Page +/Contents 927 0 R +/Resources 925 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 920 0 R +>> endobj +928 0 obj << +/D [926 0 R /XYZ 143.727 753.953 null] +>> endobj +366 0 obj << +/D [926 0 R /XYZ 144.727 716.092 null] +>> endobj +929 0 obj << +/D [926 0 R /XYZ 144.727 656.966 null] +>> endobj +930 0 obj << +/D [926 0 R /XYZ 144.727 600.869 null] +>> endobj +931 0 obj << +/D [926 0 R /XYZ 144.727 442.121 null] +>> endobj +932 0 obj << +/D [926 0 R /XYZ 144.727 317.434 null] +>> endobj +933 0 obj << +/D [926 0 R /XYZ 144.727 247.48 null] +>> endobj +925 0 obj << +/Font << /F32 472 0 R /F82 788 0 R /F16 468 0 R /F48 544 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +936 0 obj << +/Length 1186 +/Filter /FlateDecode +>> +stream +xX]oH}ϯ@] JiVMU+S[Yx@wZ{a01a>y`{=\ll--l]fz5%"1ߚa.<"B5]X_m}1#麼<)TgƋxb?#G`\݊ga<UYBe*-6<X +u5s?~?˂1* +5!`[4*.m/ޝa4`v!0$<haQe+Uzb{:ަj0|(-q`9"V͗k/U#1TV.&_ +0*@-#.J^^0o#K3reA%wϺc;֢pROZOf0l~ Wt:4!0^0~tjUowԓaɆ=a+ShX#˶ʫ(&o'cj:9Y[fj:9W&9G)#&㨔'8$W[sOŏ!DԭyG>(˄]C +ThifǢzJ~ơķGUz1 H$ȔY4sE6)Z_{ +RhKeR:W5W4X$Qzmcs5ݏ,Z>6$S{v^gt?M[:^^oyJc0SJ'9{wXOn3`L;WAPxX" +7mjb; (E'aMXeޯq"u_磉3DAۏ:=az +endstream +endobj +935 0 obj << +/Type /Page +/Contents 936 0 R +/Resources 934 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 920 0 R +>> endobj +937 0 obj << +/D [935 0 R /XYZ 144.724 753.953 null] +>> endobj +938 0 obj << +/D [935 0 R /XYZ 144.727 518.988 null] +>> endobj +939 0 obj << +/D [935 0 R /XYZ 144.727 341.33 null] +>> endobj +940 0 obj << +/D [935 0 R /XYZ 144.727 283.849 null] +>> endobj +934 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F48 544 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +943 0 obj << +/Length 1142 +/Filter /FlateDecode +>> +stream +xXKo6W
[ˇćOA6C]!$Ht"GV%A9bQ5q7#ѷuv~>G#D + W N؇hqV؛XIΚ0 +N'߮F<smxӯ6 ,23|Keu.F
u|R/ Jk[VeTb +s ҥ"A,hDg>\JW!aY;t.}yT;CCh3dU#oq3u]5kC=6^Ҩw3z>46,8La
GY<I"ulL=#W뿧Һ/i7"~r`7x +"'P@c-תE)s~$-t]c'q'`ǐTb!]յ?Oh[_X,t/S;7pŤF4lȯRMЕoJ9M{w: +7Ŗ">Ws; +endstream +endobj +942 0 obj << +/Type /Page +/Contents 943 0 R +/Resources 941 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 920 0 R +>> endobj +944 0 obj << +/D [942 0 R /XYZ 143.727 753.953 null] +>> endobj +941 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +947 0 obj << +/Length 1168 +/Filter /FlateDecode +>> +stream +xڭXKo6W!6sIJmb{==m#Q2%tH{+p3
l?no>l| zCA +hZ`̔y`EvVI7́?Z Qj-=F3[e"䢳U%Bd84E0vI3c 0nT[\KP}gIT^ +&?0N<2uҌL'\RϺRrf#/x"xǪXKmVP1@'C +!\%q`~a@ؿ5v \T[L:Cx&W}nNJZI^2@YdgbnnT)>Ӷ\KAŝIW1U$W;U=`>sۍȘd/ȝIy +X@f֏)p11 +*DcUݚGG:#h'^ƛ+ ^}e/:&é +&lb pѴlt2NY}w+cGʘq "eR@yHWd-3~jBK<B_"4 +endstream +endobj +946 0 obj << +/Type /Page +/Contents 947 0 R +/Resources 945 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 920 0 R +>> endobj +948 0 obj << +/D [946 0 R /XYZ 144.724 753.953 null] +>> endobj +949 0 obj << +/D [946 0 R /XYZ 144.727 718.682 null] +>> endobj +950 0 obj << +/D [946 0 R /XYZ 144.727 218.333 null] +>> endobj +951 0 obj << +/D [946 0 R /XYZ 144.727 173.405 null] +>> endobj +945 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +954 0 obj << +/Length 1922 +/Filter /FlateDecode +>> +stream +xڵYYoF~PYo~2 $,VAf3(ԴHH[})f`$[xv;ó/{su3BU<#,DR%"4!_|Zg +䚖r$E +ŒNhWYig؎iIvkoTyS*ZU +;om)F{fvJ=We* + ;NEY&N$Fum\M\'I}q8I+_h^5cv~.A)iAwہKysm +I5A1Xcq'IAc+1A[`>uG7Ȁ +endstream +endobj +953 0 obj << +/Type /Page +/Contents 954 0 R +/Resources 952 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 957 0 R +>> endobj +955 0 obj << +/D [953 0 R /XYZ 143.727 753.953 null] +>> endobj +956 0 obj << +/D [953 0 R /XYZ 144.727 284.516 null] +>> endobj +952 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +960 0 obj << +/Length 1249 +/Filter /FlateDecode +>> +stream +xX[8~_)Z5Q'/`ì*EnwZ<Tj@63(6&'c2 lw|.߱ +|zmgR- \jd!P4qr.<YU7A1DjC`5z j`R[qCz8VvCܲ evŐp^`g(j.<rQCx{j{xvNE5ROW֜s6<M= Pu<6mLjgb8MQ
͝VP!qK1 f[x"G+GI`]ᄁ.HLr|:nC. @; +6xUe|OQ]+b6]˓ѹ5OQ|J +k<+S^K@tG/J;!}|eB,GEźYo9?.+T\(@z@dsdF]s{TiT}j>Ȕr'_wzM=T씯= +{pt[9
1uݩ71<F1qG1vGemxMl0K*
V*#ۄ[M`XSa$ӣ֖'m6>9'cGy2&PRM53DNA֊Wʻ,SFMT:) +eKo囫YȜiRR~TA vɍVYFqis"ntP/jOqLN"93@fxWB1/}@h8]\46KY +.B?R0"n0K۷R;dj6nRxGh}@fdا]ĺ<7\~*t6rz#lvlI; \9{LY뀘ĕ"|V6 =Do7mT^O]kmdӀU>#Z)bh[XO~ C&.bD-kv7>u!+,]{8{zw/RX=O+Ln{p +endstream +endobj +959 0 obj << +/Type /Page +/Contents 960 0 R +/Resources 958 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 957 0 R +>> endobj +961 0 obj << +/D [959 0 R /XYZ 144.724 753.953 null] +>> endobj +962 0 obj << +/D [959 0 R /XYZ 144.727 519.196 null] +>> endobj +963 0 obj << +/D [959 0 R /XYZ 144.727 432.024 null] +>> endobj +964 0 obj << +/D [959 0 R /XYZ 144.727 356.358 null] +>> endobj +958 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F14 579 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +967 0 obj << +/Length 859 +/Filter /FlateDecode +>> +stream +xX]o0}@T mZ'M[*UFIX--BҌ{J= s= +ԾqrvyƀeSx"`hd +pc@ϲV;cR}/ZՇr7N + [Rdlviቕ,/o9_%)_yT +Xo!O0:<"hmQ'Gj)V@QxEGG:8ҡ8=.c0jl]vQ,jʍɾ7m}rpḻGܮ8=@lŎ0y(lY?f5(%z
+ZyMf +M*?>t5SN.~ +y0))X4nhT? zē@6Lnbmo'Dv7U\`({G[{/T0OS^<%mpl6"AƸ=N +endstream +endobj +966 0 obj << +/Type /Page +/Contents 967 0 R +/Resources 965 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 957 0 R +>> endobj +968 0 obj << +/D [966 0 R /XYZ 143.727 753.953 null] +>> endobj +969 0 obj << +/D [966 0 R /XYZ 144.727 334.878 null] +>> endobj +970 0 obj << +/D [966 0 R /XYZ 144.727 247.263 null] +>> endobj +965 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +973 0 obj << +/Length 808 +/Filter /FlateDecode +>> +stream +xڽX]o0}Є؎Mc4mEڤB8jω2`9s}/0E0|I# ,4 L(K`86@_ĥԷz̮7V(jJi~[chop͞8.r2KW*f)y\ +endstream +endobj +972 0 obj << +/Type /Page +/Contents 973 0 R +/Resources 971 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 957 0 R +>> endobj +974 0 obj << +/D [972 0 R /XYZ 144.724 753.953 null] +>> endobj +975 0 obj << +/D [972 0 R /XYZ 144.727 645.563 null] +>> endobj +976 0 obj << +/D [972 0 R /XYZ 144.727 568.03 null] +>> endobj +977 0 obj << +/D [972 0 R /XYZ 144.727 198.58 null] +>> endobj +971 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +980 0 obj << +/Length 1226 +/Filter /FlateDecode +>> +stream +xڭYmo6_!`_df"RRYfm@mbK,wIEe1=$QǻS=rO8d7yHX Bco4n}0~X@ +cS:Om!7K7üQ(zh!CJ#,>{HdK9Ro0S* +jj?LeX@g"NeuRȬTkWITr;q3a(B-m_tԻF||VƦ KR"w9,@ADvLOpb(sM/ݒ,/RP{ +endstream +endobj +979 0 obj << +/Type /Page +/Contents 980 0 R +/Resources 978 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 957 0 R +>> endobj +981 0 obj << +/D [979 0 R /XYZ 143.727 753.953 null] +>> endobj +982 0 obj << +/D [979 0 R /XYZ 144.727 630.681 null] +>> endobj +983 0 obj << +/D [979 0 R /XYZ 144.727 146.468 null] +>> endobj +978 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +986 0 obj << +/Length 1340 +/Filter /FlateDecode +>> +stream +xڭmo6ߧ->?`UrQSMH٪R,V;+VVg {;?,߽$h[=HEX B22//yh!DH,v^_gZ:[ysVVjwFUތqd/ AG֞1uVMZMQmd1~;䏲TJ +X +.Y=0>|Rٳ♪3<+1!|g_LZa`٨tK'{`Eܴ\0 *ΐaUxfJJlj8kM]dYg<<X^";C>k&,C2L?iq#;-Um{Ul zڍOj}/(1߇BOhFϰ.}j}@@dQcKZejt& kMK:aq +xXGo,m*ʢȋM%{^_Pcņ;⺭9Gi &nuؼ$%w͗oăDi%6ag}vsI%wInG qs`^|D8b)T-Q +#}NE2H+a0ʪXD'FLj[}_֛ 1G01 E$ilYJIl41翞sS <+LL"A4>I\&Ya)y`09?X<IWNhǶ9J7ji[dbpkiN/Ӄ[HUA;|<:y;QVl6G#bޥL[SOR0I*+I!crԏ.9XMC("s^iwA
sM"tqeד-i0t=wDleV/bDATGm7f3˷-v[~&[C^,sXCR;5xv|C?K@ϢJO`lB('Nui"(ĂbLke <)mB2XhebA&S$ +5f0&r,ϋP:,7عB/B)ҡdrsU
y1n]7ߨ$ؙb;zzh4
n:b&=. $ +endstream +endobj +985 0 obj << +/Type /Page +/Contents 986 0 R +/Resources 984 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 957 0 R +>> endobj +987 0 obj << +/D [985 0 R /XYZ 144.724 753.953 null] +>> endobj +988 0 obj << +/D [985 0 R /XYZ 144.727 596.079 null] +>> endobj +989 0 obj << +/D [985 0 R /XYZ 144.727 322.508 null] +>> endobj +984 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F30 470 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +992 0 obj << +/Length 1142 +/Filter /FlateDecode +>> +stream +xڭo6`Nup64)Wu۪ԬU'BLl]c+~0~v! 'o/[ȷ}mju +bz]ġe@^g?q%I3Jf),%q-IӪOqL-$mYI6cE1:mV0]nA=5詑!qԑ|ȖdLH\u$$ay*Ǟ8:qX +)D:Z_Gr!K '7HI qosqHH$ܻM
:qM>`%Wdyv~oҿeVt>ô"tNebjqQ~;Y/!96Ej-dŌCP>E5=MUMM_-٢SM\fT<Gԃ9 +endstream +endobj +991 0 obj << +/Type /Page +/Contents 992 0 R +/Resources 990 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 999 0 R +>> endobj +993 0 obj << +/D [991 0 R /XYZ 143.727 753.953 null] +>> endobj +994 0 obj << +/D [991 0 R /XYZ 144.727 716.092 null] +>> endobj +995 0 obj << +/D [991 0 R /XYZ 144.727 554.849 null] +>> endobj +996 0 obj << +/D [991 0 R /XYZ 144.727 438.5 null] +>> endobj +997 0 obj << +/D [991 0 R /XYZ 144.727 322.25 null] +>> endobj +998 0 obj << +/D [991 0 R /XYZ 144.727 240.472 null] +>> endobj +990 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1002 0 obj << +/Length 1039 +/Filter /FlateDecode +>> +stream +xڵ[o6+ƙa'QRܦdء6]Pps%U>J|0ĶB| +rtӳW;
}84t9ILfM_\y!>syaush.n4ĔͣX!z5\,-խ(HպOEzE\e@q$V|1h/UDed?K}4z6PdG)u9antT,j}(Ty4'媈^iZ66W\KUVXX\$Rڮ֤mMs"K%gh3C8!ExwQ{.Ї`r'1rE\;o^pwo5ud`EjиɃVzHګuk>H BN +ez_/ѼsH3 +TD"/,u0i}&D"$-̛NC\ɍHX?@{.f'oVj +L-\扌e5tn0f~ hE:s;ۙg+{XtKww[ +]|[XO9HիK^)7/?_t;MC,Bb[&\),IN(lü"˳7í` uJZ 0oE70z/0vaY}(Cf(ெG +?tVݶ(C*.՛(+ yn+7P6P_i@h1hZ8xhkgթ9Jf#?CSluxyl^l s:#J\\N ~T +endstream +endobj +1001 0 obj << +/Type /Page +/Contents 1002 0 R +/Resources 1000 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 999 0 R +>> endobj +1003 0 obj << +/D [1001 0 R /XYZ 144.724 753.953 null] +>> endobj +1004 0 obj << +/D [1001 0 R /XYZ 144.727 592.999 null] +>> endobj +1005 0 obj << +/D [1001 0 R /XYZ 144.727 430.672 null] +>> endobj +1006 0 obj << +/D [1001 0 R /XYZ 144.727 314.422 null] +>> endobj +1007 0 obj << +/D [1001 0 R /XYZ 144.727 186.616 null] +>> endobj +1000 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1010 0 obj << +/Length 1253 +/Filter /FlateDecode +>> +stream +xڽ]s8+|6_{:il<f:2P$V@Zؿ}0uXO/'GGc93t\#`q`xa`
koN\pjƓ81a8ƨ>yI8k>0K$U7X)j |Vj3HF#2ےGrBD
Xbr8iKs8/H`V QCqцU٫e]I}`-8S(g]M|+
JFi%eY"^-2r1[fl
iByFƶ!4}vJDnYXr*%ϔ;%@[?Z*hyZ>;'/I$\cˁe(Zo]!b50͟{ٍgx^,UAɎcDIVmTu!598+F[j[{(&W||6d|ˑ-goR(`@pJ,ALQ`ZDi2}P9TS, Prtx)9A +@$(WJ~V +WD2)T< U!;kQ?
YO b(ZY&;!b +Ayb +B]\?E'婬I-kGQB+Z;@ds&-]-T/AwcTe%ή撩Txql-Gh 0beJx.k!R0I D`gb.7wx I +@:N>`+aBUV˴ +#T^?W̓Gvߤ.4{V8ox, x9Z#/Qêi +:F~`jWֹD5 "(M2Ea%ҏ'2Ac_OsKɤTHDz]T 7@;x̂z*BIǭQjUCkPyU@1k wU1ul=Nt*݇1 +К +63-7ۿoTOc7YTEJoE!'$GRorQKiDhoږk{`~"`'Z<_f +endstream +endobj +1009 0 obj << +/Type /Page +/Contents 1010 0 R +/Resources 1008 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 999 0 R +>> endobj +1011 0 obj << +/D [1009 0 R /XYZ 143.727 753.953 null] +>> endobj +1012 0 obj << +/D [1009 0 R /XYZ 144.727 597.834 null] +>> endobj +1013 0 obj << +/D [1009 0 R /XYZ 144.727 448.849 null] +>> endobj +1008 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1016 0 obj << +/Length 1296 +/Filter /FlateDecode +>> +stream +xڝrH~ +Z;07-hr;<ˡT(I1Y3#yb r3%^S{74g+1ꅻf6zCV4}?n5KS?YH۶m-kEO0+(ק`Χ=KUV$"`O\7gMS,uΥIp
x;hSPVuJЋ.A&E2T'"gMi9pm +/^S`+i~>}2YY=)W2GJPĬh$eIp(FYOubm0۠rUCP,1aVjX5ܪ P('sg⬉ +\ DEܠY]{W(]Hγ|r62ι4A|:B$p' γ$ɀL:wB<\41l'g$2j2l'j&3hÝUvs, +XvBb 2T9"S{TgY;ҁ@GyAۄe#WQ +endstream +endobj +1015 0 obj << +/Type /Page +/Contents 1016 0 R +/Resources 1014 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 999 0 R +>> endobj +1017 0 obj << +/D [1015 0 R /XYZ 144.724 753.953 null] +>> endobj +1018 0 obj << +/D [1015 0 R /XYZ 144.727 534.51 null] +>> endobj +1014 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1021 0 obj << +/Length 1245 +/Filter /FlateDecode +>> +stream +xڥMsFܒa: +} >Z'9XKmFRe~{%JFIsǼ{1Nut{[k]v=؝ˏho'w4LekG]/H~xe2U,o2+u#d,RɈI߭,VreĀ2̞4I43V\[sf\1<ϫH9<M C2(Etʴ~wsC|e|6e.4ljgʊ+hfo\&BBEt +2flT|P h?pH CCdOGG/hINեZXhNrii1n{kE6T9Hݷzy;2yWiy|&ʺ}c},eh-Z`/{b}*hZ`L:30YI LSs7";J8Z +T7fKb#5hh.gX8a,*m?գuV0&N`Ua +Z"% n0XCj@A7
l;.?4H$e"?BE85fD)d&ؘaa XD7Jc-=IJg؍)Uɗ-Θ.16Dt<+j1Y5$\5r~w0;7f5˟̶W +endstream +endobj +1020 0 obj << +/Type /Page +/Contents 1021 0 R +/Resources 1019 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 999 0 R +>> endobj +1022 0 obj << +/D [1020 0 R /XYZ 143.727 753.953 null] +>> endobj +1019 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1025 0 obj << +/Length 1213 +/Filter /FlateDecode +>> +stream +xڥMsF69 +gLéJKS5uv=eWm40eA3$r}5!͏.Lۧã:!U!%$۫9L124((ySg>&ڇӽ+t:3&RxAfGv8yʥڪ} +8ˎ;<پ[
MyraPh+rQ^EW#jT
+g qNQ-X1K
RE4vR[hX +c p
nӺ͏f~Ìl..{yu_/^#0,)?/:ESv4h9)cD"~)
7:L5wjy[6ɽl7ܹfo} +31j"(t3M:+:8Ox*L /+li/(e3Tc셭tET.H(٤C
HMstI \аʹP`FIg.b1\9L6ITCg9Qkwh&];*)(6]`hVxc!U ?5{14el9:[4frڇG'hDsboQllw. +S=͜Y\tڵ$5eۢ2 ~ՙէC$Cbs4E,S)B5?C˦)-Ӽ~,yڰh< 獝3M-5{7?4~(Wx}X͝2OqWYaO|| &Rgh+{'渑?ܿ, +endstream +endobj +1024 0 obj << +/Type /Page +/Contents 1025 0 R +/Resources 1023 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 999 0 R +>> endobj +1026 0 obj << +/D [1024 0 R /XYZ 144.724 753.953 null] +>> endobj +1023 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1029 0 obj << +/Length 1265 +/Filter /FlateDecode +>> +stream +xڝKs8wapH>B+cDPS~bRW2lR[%n)?DiUG=8nmzvA_NkniMkum6=5]QӾ|2erS
/Ǐ9!GӌGRM:91|x9خ/y|9(6YP3W%_٪0`YޘhY")3=N ,mKLSsUQL%R&M \5bܨhhE;MsR/[xTj
drQLDJ1qBʊ2aR%u,Q^U`}sUQU` P]r(f2Z'ep +8TGӖӣuA +)9f)·Yv BLxtmi6 N$)CM+e%2Agd"l?ނTE + H8+m'v:qƖJw LRΕķd٘(%<%.as +} ģ~
]dMh7nu77^lvAw?Ыj +endstream +endobj +1028 0 obj << +/Type /Page +/Contents 1029 0 R +/Resources 1027 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1031 0 R +>> endobj +1030 0 obj << +/D [1028 0 R /XYZ 143.727 753.953 null] +>> endobj +1027 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1034 0 obj << +/Length 1793 +/Filter /FlateDecode +>> +stream +xYmo6_!`*c*z
P ZYӬK\oAtLT\4dQb+%{sG6
_O3<+Y`'aym"44cI|Bz?\"aNo&iRQr]F|^|{y_ں6 ir^\)i}'rm6>ʴ +4Mx!FAlc{D]&h, +&QV+?Dɘ]se؇2.퉆ba8myԇoQZ=bf}6o=q-'/=0L^ߡLBR<ts%=՚X9W/9|{
]\d]#3۔Jvju`F_'r]ЄkF'&W|GM>Ve٫'=5-%;OH3}4UM\] mZ6u8`W;33_|gr4Qq<0njW/\kA&*.ԥ%a2.k_ې:߂8<:iV6&/]6|t{^^Q&Lċh̳j;{eD-7}osWo5!Ϲg"m)(lGM;Z'%ݹɫ;W<MmM%V^mg?I>yQyOäv3O +vU +wf>-ʎϹKQ{g!fgP얅+T xKL=;l2c{Y`gTu㼉R+#LfUF
PfUaU`Ad-5
(up**>G]P,uP6Ag0ZYhvٯz7WG:/@;g> +" #U%.Ħ),aw}*~MջHpXc*7Zjpb9_JIi6e</Tqnby5e8kqtu."cXʼnV2N<1<93ߜcRC62Yë*K0Ent(/\m<njSV]{$=N"M +-9Pf::E|T UL3G!S^&x&9OrqCT$LgNto0os>t*'?tX}92$ɂQ<\\h鹿Y];B,TjAqW +նulӯy>mx+q +BD+d%rݥJGq#FmHP Rˑ5TΌj@\<o;nuGRgzZ/l=opE#E:_E/UEI +kt̿ +endstream +endobj +1033 0 obj << +/Type /Page +/Contents 1034 0 R +/Resources 1032 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1031 0 R +>> endobj +1035 0 obj << +/D [1033 0 R /XYZ 144.724 753.953 null] +>> endobj +1036 0 obj << +/D [1033 0 R /XYZ 144.727 666.627 null] +>> endobj +1037 0 obj << +/D [1033 0 R /XYZ 144.727 451.391 null] +>> endobj +1038 0 obj << +/D [1033 0 R /XYZ 144.727 362.351 null] +>> endobj +370 0 obj << +/D [1033 0 R /XYZ 144.727 241.875 null] +>> endobj +1032 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1041 0 obj << +/Length 1612 +/Filter /FlateDecode +>> +stream +xڭXK6WP僙Gql'1TZP10]-sngv>a($tv{'b8cǑKϮI#N""@H/XDe"A0m<>!3Z:[Gd-|/LT_ŭ(V@38@CȢlsEv<T>jIMQ"}Y4=D/Tݑ5<+5 +j'7ۡ1Ҝ_ن?:eu+5}8Lq>8zB78{*MӔrmx6sR$je1YIyH|'$AX0^jE +\s-6-D6B-tb:1(*UMVI +LQ{
WeV<(pDH{军ҋc͖zHz`?٨5=j.g/;'9]ajWpdKccμh1>Xg/F_R5+F/UPsyً;OZjB59͍-U#l(F{*ZW1}OeA$l$4<`D*f@F8{۫KӀ.U!Ab&TRTm2f1(0&P*Yu9N@j4J*Em[MS_cPFOD׆P0U*?FZ{lM'!_vnz#eM0)Fg7tKV]ZKӛ
Ĭԥ6+c6;BR8!|ԲEZFtӮWС" +endstream +endobj +1040 0 obj << +/Type /Page +/Contents 1041 0 R +/Resources 1039 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1031 0 R +>> endobj +1042 0 obj << +/D [1040 0 R /XYZ 143.727 753.953 null] +>> endobj +374 0 obj << +/D [1040 0 R /XYZ 144.727 246.777 null] +>> endobj +1039 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R /F48 544 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1045 0 obj << +/Length 1944 +/Filter /FlateDecode +>> +stream +xڭYێ6}0HQe{ & @ ZmeɫKzz
{,斧>Y$KUUE)ٙmg7]Чa3syH|΄x$b>Wי*+ϟ7w%ʕ(RvWj_8L*8d4Lg+ͪofXlz$<sh$0g.$w[}0`]N^ +CbcħP9$Sh,<8hА +~ +rLMqx3Jd$d*RG<Oylzge&c 9?BVyQNaJz{JiR'ikUZw}x8j5yb;!,dA\<y = +!_@,YO߫lJ\H$Co/L@My<':_IfS}y0ݞq1d(2`at1R2}2-Vlۦ,CM920q =!b4Kt#[va/Lǩm멗z/^nu0OIOwUuʅns9VX19`^&@ƪϦNHyf N4ʂ=س뺲X
MSⳎt[)9~Yn]Z
%$SDyE@4ɦC5櫁nhiنHcOpd>R\q\9m1;'.2QULd<|% +Fߚ\5RFn@ B/3L;ٌa50mׅ+0
8 +-'36ƑD`Vf%` +no* +6hE<!Go_}'U?MJWp=t`bAD"}C +>6;nӀ}bLfyp[`*.Z6*4~'J"71P'82RA9&D5llv3yl)[6,ݐcJImݒY݄nў\uRg#IwM8Ǒ ~j]aoU +UD9qAKz>ڌ(!Ng9hɁѦ
JeeT$tн`.P|h KfCvֽxf, +endstream +endobj +1044 0 obj << +/Type /Page +/Contents 1045 0 R +/Resources 1043 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1031 0 R +>> endobj +1046 0 obj << +/D [1044 0 R /XYZ 144.724 753.953 null] +>> endobj +1047 0 obj << +/D [1044 0 R /XYZ 144.727 229.871 null] +>> endobj +1043 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F62 563 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1050 0 obj << +/Length 1420 +/Filter /FlateDecode +>> +stream +xڭo6 +CҡMa6Jt,DOdEI\%zlc?/gokTXˍEط\,\[ s{%0};9[z,.$LEղ{Բ)G1}2OoJIlل"{D2Sb{Ҩ6 `cazLxxkV}Gׅ֫wF퓠8ҝdfs*ͣ~i&'e? +Q*`?vq]f^q@qZkwZna9{F@ +@_c6U+v<4W!RU!727&{2UJ +|P2:9zPsʶskPZ1BfVW7e(ea"zYw2wU]:Ks ϛ}pZu巋r5lxXoSQ8g8"*݉WɸgH$??D~b`;Ԩ,n +g, eUnvL<oaJu 8up3e gݞDա +DM +ޔ?M; +endstream +endobj +1049 0 obj << +/Type /Page +/Contents 1050 0 R +/Resources 1048 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1031 0 R +>> endobj +1051 0 obj << +/D [1049 0 R /XYZ 143.727 753.953 null] +>> endobj +1048 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F66 630 0 R /F48 544 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1055 0 obj << +/Length 1926 +/Filter /FlateDecode +>> +stream +xڽmo6W[eaDEӭKaÆ5FKtLT$_lDve[GSûwv'wkyvyل(|1M!LM2! n~I"ƨK #G=V)//Z|xXtZX2ͳOWYܬsafncNgm!s9<+t_0aBNCAɬ@# + SС yƙˡmCPpϐt#L#TCȧבO))v}'R9^Vur5QS2R">fyV&l;; + +\ׁ҆p9 +)Jy_ƘgA{^߸R}}
uYԴ5n?'aWOJ{EH9}ㅝC8Q\ćBCW"_WjR6@aQ$.g(;ۣsP8|uJvw[JF|h75IkʋrcEwG%ԫ~97 +Y^,yt,QLT́00hFYel<8acpc;[0Vm]Uߎ1:o[PQRM#{ H}.<*@icrɆ3$C sxΡ@w.=b|'rogD&<0e#cxѭXy`s ٸh9WdvkYMδ䩿!<x4X:wz xSnYj9e#O=5LnRYUmJ!4OeZHľ3UAB=fj <Euk6
uq/Uٗ@&c)N-s[$jm;[pWv&V
?sM%Ҝ'"AFQ:3VyFڶx5IUy4Jw >QT/⟡ZHqluB]+淵xҸ!"&Q8)#[9;.Fhzyyy%/m7K!G&ը/mvzt6Bts̷|;[ѿɲPvo`cxdUIhZxSR+) jToQ6J,B߫d0^+oVr:6䵷paYT8H˞"_ÕswrB b^SUom jW<ᄩtH.5ޛ"Ķ6UvR>X3u\CZ2/wt/σ5QE
]籏Xԉp>:CWG⸺͕'Lx[jdr.+5^؝(Jz3K/ĝC`ۙU%F=~v^XR +endstream +endobj +1054 0 obj << +/Type /Page +/Contents 1055 0 R +/Resources 1053 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1031 0 R +/Annots [ 1052 0 R ] +>> endobj +1052 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [246.844 206.182 477.977 218.242] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.tug.dk/FontCatalogue/mathfonts.html)>> +>> endobj +1056 0 obj << +/D [1054 0 R /XYZ 144.724 753.953 null] +>> endobj +1053 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F48 544 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1059 0 obj << +/Length 815 +/Filter /FlateDecode +>> +stream +xڵXr0+Ξ!lth2CEv0-9"dhK3ۑ-iKJml{=',h}8t~t| Ț3y`Y! +B3qQ5/yl1A傮VTd~#`w + +ےPgE,̀ڥHZ
J۬ +_Fnӯ"غK]g? lM +endstream +endobj +1058 0 obj << +/Type /Page +/Contents 1059 0 R +/Resources 1057 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1061 0 R +>> endobj +1060 0 obj << +/D [1058 0 R /XYZ 143.727 753.953 null] +>> endobj +378 0 obj << +/D [1058 0 R /XYZ 144.727 402.363 null] +>> endobj +1057 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1064 0 obj << +/Length 1174 +/Filter /FlateDecode +>> +stream +xڽXMo6WHŐbp%"%Eʖ:Ts؋%Qyq83s_WW7aV܆ 9Yw^ ++rRN!Y!A8f)(qRA$[sB__L,ͤ`0<EW +q(
8 +ruY!4Oh(>B]>̎~8d\?#&[4by]P ӹ:#tjT5z'@f\~ +;!:'M/ѽ:Ȁbؿck=h'u[JY?Fx{܇eIlLw +*N}>C"2?6u Arͷb"OIv͊
h
$)b?pI #0Xq1հT.Lc(hc`O +㑘-">zQO5g30[0}ml$) Ӂ0KA`6vvص)(|)N3RB%ֽ.Fڙڔޡ$09BXlەԗ +iRbؾ
+%ְ^hư֝z5\fͼLYBkTBd?3 +EsP?ɔVWP +endstream +endobj +1063 0 obj << +/Type /Page +/Contents 1064 0 R +/Resources 1062 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1061 0 R +>> endobj +1065 0 obj << +/D [1063 0 R /XYZ 144.724 753.953 null] +>> endobj +382 0 obj << +/D [1063 0 R /XYZ 144.727 716.092 null] +>> endobj +1062 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1068 0 obj << +/Length 1060 +/Filter /FlateDecode +>> +stream +xXˎ6Wب͐_*0IzQu%LTyG/)RL{$]=`h?G4 fy04b0ip]=a1XIrZ:LleV)A,]R,VyޖFKݧ")mtf[*H t+V@JZ?ͮDsV)Lmkmz3l\~&ezz\@oYJU1 <r\i$c@F[P*KA/ +/2+VLo֫Oޭ靛 +endstream +endobj +1067 0 obj << +/Type /Page +/Contents 1068 0 R +/Resources 1066 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1061 0 R +>> endobj +1069 0 obj << +/D [1067 0 R /XYZ 143.727 753.953 null] +>> endobj +1066 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1072 0 obj << +/Length 1062 +/Filter /FlateDecode +>> +stream +xڵX[6~_RNc*TU]y4;(8D@Uﵱ!z0ü9? +9FRjZ<[og[4@Zɤ!uS=GidsTmF&LJY.2R{~ZQ+@ Vfօy+@F>3eQk:rZ{JTPFܬ<֠0C0q#A_vv +.uLs _e!NB$<"E {,}Mt_VV3^lUmbkSoJmobXwVKK9_l@g?7i|0TS;MNVlz=N!|c`l#C.a@whű'Q7lyV]\+ˏRÑw'b@/9ywzTxB|H4hB~}&SHks-JVGy]6qѺƈ;?.JY5/:Pt)iEX%MeܐXaΫ:g^aHx @MCrp1.KDZ 1"{ ]dHWui<HvYzr<ʩL+B1W!J|}N#f +endstream +endobj +1071 0 obj << +/Type /Page +/Contents 1072 0 R +/Resources 1070 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1061 0 R +>> endobj +1073 0 obj << +/D [1071 0 R /XYZ 144.724 753.953 null] +>> endobj +1070 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1076 0 obj << +/Length 661 +/Filter /FlateDecode +>> +stream +xڵWˎ0RLUvRi6:fG$DAԃ
MȎ{#z{zfpggD= +"Coy( +y< >nWτy!(
I¬5ӝ@UJE~Pyљ +endstream +endobj +1075 0 obj << +/Type /Page +/Contents 1076 0 R +/Resources 1074 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1061 0 R +>> endobj +1077 0 obj << +/D [1075 0 R /XYZ 143.727 753.953 null] +>> endobj +1074 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1080 0 obj << +/Length 1564 +/Filter /FlateDecode +>> +stream +xX[F~WXHIvmUT)z1p`;K(g<cN^REǓsܿs&`#l?=b!1Qg#=Dh)ÓTLj'ﮯg5#ϣBcǥ)LOV2vWQ/dzYx(Y8b &LNB㚌20~Yeoym;AA.@4#))œ<Ԧi:/jSm7EVV4uu>]nzC={3?>n\N!Fb9B#^KY=EBO8HQ-<zqb,6r*T| SYoTɹ :-rLˢ&mK\qG<ppyXQ> +~CN(RMhו4{ԇBZ<*ˡ +Q +7rx]swُNA4YDuBx|DAVEUG$RPݖ +]OX~QRk0Z灸>UYdjfQiHŷVP(-nUCnm8Í + + +endstream +endobj +1079 0 obj << +/Type /Page +/Contents 1080 0 R +/Resources 1078 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1061 0 R +>> endobj +1081 0 obj << +/D [1079 0 R /XYZ 144.724 753.953 null] +>> endobj +386 0 obj << +/D [1079 0 R /XYZ 144.727 716.092 null] +>> endobj +390 0 obj << +/D [1079 0 R /XYZ 144.727 648.513 null] +>> endobj +394 0 obj << +/D [1079 0 R /XYZ 144.727 610.67 null] +>> endobj +398 0 obj << +/D [1079 0 R /XYZ 144.727 466.184 null] +>> endobj +402 0 obj << +/D [1079 0 R /XYZ 144.727 322.645 null] +>> endobj +1078 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R /F30 470 0 R /F73 628 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1084 0 obj << +/Length 1308 +/Filter /FlateDecode +>> +stream +xڭXn6}WVpDqp邢lѶ0Z0o/IQL{~xx/ ͻzEbALEc0E9w "SPn$R "o*o|!'z:MMv +@ߵ $`9rA(Y-sw[Ch;V=͖,XdEA6{ۻ)@0x0xîJ-k&Bb#;^w! fEv)|̺^dVA>f<iкKv/ +?b(DE&<%d妮;[PӘWRZs#'M0V9&A0(ӯ'5Jb2LP[^/#$sMO>HEܯ~(2K5@FVu]@qo.d'#@eMb;atQ%^&'עNZ<9E. +j]V'7&3?to}9sRed[:1WuU%MR"+
i*KƑdPO"bTcUm\Ap2֍Hj7 +R/'q:Cm=jNׯϖ +endstream +endobj +1083 0 obj << +/Type /Page +/Contents 1084 0 R +/Resources 1082 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1086 0 R +>> endobj +1085 0 obj << +/D [1083 0 R /XYZ 143.727 753.953 null] +>> endobj +1082 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F48 544 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1089 0 obj << +/Length 403 +/Filter /FlateDecode +>> +stream +xڭo0=ږ~z2Kve[BU"CcQF2?{>Pf +r@b@O/L3G'AXeV"m4 +L:4.zBD#Oa+ +endstream +endobj +1088 0 obj << +/Type /Page +/Contents 1089 0 R +/Resources 1087 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1086 0 R +>> endobj +1090 0 obj << +/D [1088 0 R /XYZ 144.724 753.953 null] +>> endobj +1087 0 obj << +/Font << /F48 544 0 R /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1093 0 obj << +/Length 588 +/Filter /FlateDecode +>> +stream +xڝTߓ0~IH<k];mFe@L}0~~,$C +N1&C!
Dh$k;)wu#yߢ)FBPޠSp`7?P+lBHP!BDB +66HWU<_xQgf&h88Qpw@jua\1.( +)"ʈ1b +endstream +endobj +1092 0 obj << +/Type /Page +/Contents 1093 0 R +/Resources 1091 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1086 0 R +>> endobj +1094 0 obj << +/D [1092 0 R /XYZ 143.727 753.953 null] +>> endobj +406 0 obj << +/D [1092 0 R /XYZ 144.727 716.092 null] +>> endobj +1091 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1097 0 obj << +/Length 1399 +/Filter /FlateDecode +>> +stream +xXMo6WIH/E] "[,>-Q2D:a翗IYĔ!ڛ,'Ù>~3 +
fIkƉմp2ugqi {?!pTkư\/i%oyO;9uVMl][8GwCn)pps=?Co\ +$/%+tQ=zk-j{rUI֥^1;VʣNīg,l3?Z>ﲒ0+wef5^AJQM._}च_i?H/pBn%6rŻWPWUK'E:*\TX}Fxc^/Dqi٪AS oww6r6*P[ft'Mcq>zf:[ZUMϰBV7B +fs_X@ބR/_X3*3Gm\8s~>CCmx|"GW([,`8z۔2|ZS.0;2
nv0nI[mA5cml09?)(5;c~٬Iv):`ݍ'-*ShGK +endstream +endobj +1096 0 obj << +/Type /Page +/Contents 1097 0 R +/Resources 1095 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1086 0 R +>> endobj +1098 0 obj << +/D [1096 0 R /XYZ 144.724 753.953 null] +>> endobj +410 0 obj << +/D [1096 0 R /XYZ 144.727 716.092 null] +>> endobj +1095 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F14 579 0 R /F104 1099 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1102 0 obj << +/Length 237 +/Filter /FlateDecode +>> +stream +xڍQj07&m:udb) +Bttߟpxx:_t"1%tXRİP[\Uz"GdUSwj _32L's:F +òǏݵs֏gKKo?չ!!
"H,~Vb%ſ>GϤƶ{xlfVYмC.H12R Ug]w +endstream +endobj +1101 0 obj << +/Type /Page +/Contents 1102 0 R +/Resources 1100 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1086 0 R +>> endobj +1103 0 obj << +/D [1101 0 R /XYZ 143.727 753.953 null] +>> endobj +1100 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1106 0 obj << +/Length 2617 +/Filter /FlateDecode +>> +stream +xڽZr}Wǘ+Ecy7lU<\,_ +lȺ-c[$MS%pL̮A ?t?
_ff`Pl-{v߀i-@Ğ[Rv,Bv>XAZJ( +|SթJ录|i$%ebތ +?8gmg*?؏:YR\asÜ'$T kL#8$V,]_tRE<Ӌwy[Kq}qН1{+>7b ۺӊyme˪M_*S9>X5&\Vq![%pBmZìFV:_&#\{7TNhduCCPjA%",B9̅iy
fДCE594vAyp;8&Sd,JCQhe44%9~3$,_kYgBelsU); NpC9# +Lj$,B$TM]tIz[shY4nϸSYSPAO&(;/\Ǧ\ٗ.vZ鮬3 +t<@IXM2_-]e߲Z)ao´:S,Z<MIĒQ +hH1:d?H +D:M=yı3곌9c&\ Xԉ?땒n,R|e6Qvr[yE,8cPǡԛ!'6\i%8;ceGk8\֕Rp1Q|kj'ndj*&mQXv- )-q} +Kcɲ&f&6Xoo7PU-9FٛŤMrfdQ-sYn'MQ +(^^
]i)hZ7ʗ͔>`̬P7'@٬ + u +endstream +endobj +1105 0 obj << +/Type /Page +/Contents 1106 0 R +/Resources 1104 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1086 0 R +>> endobj +1107 0 obj << +/D [1105 0 R /XYZ 144.724 753.953 null] +>> endobj +1108 0 obj << +/D [1105 0 R /XYZ 169.634 724.513 null] +>> endobj +1104 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R /F104 1099 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1111 0 obj << +/Length 2176 +/Filter /FlateDecode +>> +stream +xZ[s۶~ϯ[ Ǎtz'i +^lx}~D(݂D +E/$jN-?D|qAXO3VD,u=ZL@ +ÿfÝifErEquA^nW6{bx(-bS#x"wf^:g+ѬYnZ0\]s 1b\'l$L܇)Ĉxe"*PEA#"pň +AAoVûξh3pu"|_ߑ!*;aWߚ$ו.^L@io<;u[[,4Yvu;&S(p^ +pOՁLm8 4 +ˬyܴ@Jr)'@' {F/^D M+`iڣ;)SZr_mϋsA2qb&\ݛdUF{+YnQ^+8cL.X@ܽYhȸXfK +QF;J}*7>v%o«ql0Er =]eu;3̋G(CBs2d<s1O_tO<
~}U|lS55~woVw=RCYJ}M1A?t0Tt{XDE@>dVD4mWEXQq4+0*4pI;8/*hh4ȉϢ1i0 T%̈1(lK&^cx!P0;cY6$G
ӳiiw)QȋkviYsٓϞ~'J'sTS
%3;F@xS}bWpބ#aMq?`MRe|YC3M֘+NN977WnB8b(5٦+:5H\A3V_ﳺ), ;ZHѳv{yt=5=-Ҿ
%FT`)뾨Z0>'c
.(kIۮb~\@pcU&ןNmT8PV'UiA8Mj?Uun"BxRVn${O(<6<4ubΝV$2?&y^$_7X< +,SOX/loU^iȚaąkD>~rW/?<|۞1lhF?x*z('ssMP:+ +df<vqAS`G]٦ǡmmf6JroF>GYefDRi:XR<MBxCHӫ+!U6{N,C7ѱ4/(x-exߘ敯W*gk& 7~.% +J=ޚ;hw&'9vac/{PS}ɚpV @P{̼y'0+1wjoQw)L +endstream +endobj +1110 0 obj << +/Type /Page +/Contents 1111 0 R +/Resources 1109 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1113 0 R +>> endobj +1112 0 obj << +/D [1110 0 R /XYZ 143.727 753.953 null] +>> endobj +1109 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F104 1099 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1116 0 obj << +/Length 2554 +/Filter /FlateDecode +>> +stream +xZms۸_O
5# +}<amSO˥/e +U0O +`0> +fX3DuҠ!a8Z$`3ΰPF7#r1ozyVJ Nfځ}XEת19i>y/Y{Ѿ_sf|m4ʠWmT%Ј0Xk?$`/6C۬ey'3 +`-?mNCGGeQ{c#E4KcdN{;6GNp(T+N# ͷݫmkV$uUr-NhibCntƭX;l|7ޔS{e3 +
%0\."Gy˾;t+9Iֶu{]zqcώ@gEYv(A,U;6h?Qʢ$U>.5c ܉vwNy\W$Q
cteE}Aơ1PF>):Kwa$ +^DBF'61 +KWP.M%1֍T mmHeu}Ts]⯶6ޑ~9( +0sfe(QLlVXg[o9l%:cq
}iYlĉYR>'DaSg0~}*^KJgx ID'-?&t}i1&h^O6-XQNBK?ͭ$a_hBt:9zuOzFH͓{~GV>JZ6Ebve')iS +l)@5mY=6}WqYU=b]@:|zwݜG)G'ƞp&U;xy༅I3qo@c#CFu̪xU?81vHmC >uj!:fOyi,_8oyNsJl0@wyp ?îڸ},Ӏ[S:7a=I]ithyL{nckXnJPnݰ|zm~3{\Nވv +wLp5dO(ɧc`jO(fu܇Ji%blto$EZ;`v"xBQfRFhؘA.WjG`,"a'JDO71go=}DMU`ͻgsN +endstream +endobj +1115 0 obj << +/Type /Page +/Contents 1116 0 R +/Resources 1114 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1113 0 R +>> endobj +1117 0 obj << +/D [1115 0 R /XYZ 144.724 753.953 null] +>> endobj +1114 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F62 563 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1120 0 obj << +/Length 2259 +/Filter /FlateDecode +>> +stream +xZKsϯmUTٗ8];VړjB4; M*/|"oR
~b7Ϳ8%z^Q-8(NZw_D8#!hI"ߤ^ΑbgH6=b(GRzӝqk-!U G-aI tx$"7&T!A!#ڿ}\1$I<GJ +~UfơͭiRʩ[zmnl`Xwkoվ
#\߉4_Lޗ/J#{uAD]}muQ<k&.Q=79Hp`]ZCά.'"Һia8y5\2oOPP$(T@<.v]"'XO8I/#΄we9BϡYӡCnMs!byK;h!\L`xϺ$YCzY(|Oa鴫j] +\մEnKg~q)AfW؈tޫHcs˙/h;K@ҏ +}zk,~EqY@ +|g+YO0T/Vűit^?n +ڠ AaC$
oFȩ\tASú˳ˇ*܊7atPrқ>y!:~WkK1 +endstream +endobj +1119 0 obj << +/Type /Page +/Contents 1120 0 R +/Resources 1118 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1113 0 R +>> endobj +1121 0 obj << +/D [1119 0 R /XYZ 143.727 753.953 null] +>> endobj +1118 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1124 0 obj << +/Length 2490 +/Filter /FlateDecode +>> +stream +xr2۽w?2$JSnk +"A
$U;!-aFMmv~W`tF8b\ڀ)f +$5]fQ?.I=gJxn{]U|~V]W~Qſ]n%ycaas?-n.)-WǖMۖۦ^U*ugVRdi H-\h3\h/o\>fpp̬*@f;*ńUW5u
m-,d '7UIxv=:=`YWwrrUF9$!FC8X{,n6;ZE<NRLIB +a;.qs-
1XQ
~Qg/|hdٽ;th3_AA#)̓;/iD0f=߽})ˍYFriqgXno JI9*E 4BS{}`L.q +_`ͅRsu܃$ᄤdzO s)vO㰧{J=
g*f*:Owa>t&Ed&Pt +EC% +q23hFĄ^$.D415:$yJ FAC9M8Nx<5}tϧs8p̎bL.9P5.SHNS>S]+X!%I9Ie|b䜪Ch-l!$' +
u^P0n)h%$ TS,ALfժ/*B\qeDc$QB3vi ]W L)JÀ +D䑸|Q)}j;a?`51Ҋ5@F *#*m9'I\gMnզVGO[Y8p\<`?_|ΦYm al=kJ`$A%5gAנSMa#JϠH^.sJ
H퓘pLvZ 1L6QO M{T','m'z,71QLSQ"ΏT,K,]cHV9Jr,9sUG#eݵS@uf\vھtJ}<35G _Lౙ!ÙlM#_z9ک&L!e{3c9nbNj[bfD3. XḶ,bd0e9Ai6LO9/Q.VTXpO?u˛kۖurW5REyMg2:; +'q+@O[[57j5tubp04&|2iSC+/m*4ؖPh5Y&
$BgL(344OM$x{DBwp2}6ʶ*w‟{̀Oc~A\5%-nͧj>X4 p棰BV=a@V?|<)BG ++O%~>J-&f xS͘4.y@ŵA=9J |Yڢp5ܹ^4J1`2#> +endstream +endobj +1123 0 obj << +/Type /Page +/Contents 1124 0 R +/Resources 1122 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1113 0 R +>> endobj +1125 0 obj << +/D [1123 0 R /XYZ 144.724 753.953 null] +>> endobj +1126 0 obj << +/D [1123 0 R /XYZ 144.727 724.513 null] +>> endobj +1122 0 obj << +/Font << /F32 472 0 R /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1129 0 obj << +/Length 2656 +/Filter /FlateDecode +>> +stream +xrGQZw~dmoVv[6Scer؊~!t(E +bw5 +{`'yN'λ +W=L6gj:o +/>f1K&j"37W⦿xyCƽ~ Ϭ@~Ջm_Th@S(kd2`g]{ [:HSq׆W祿/
:[X.2s}%橽G76ڪN, +`}UӷW7Yu1*`@:[*5emԬbzBH{:[3U1^tXxtak?s +<~/AEg67`^ (1x˫u_O5NkkXM0Sl$gGlA6 X2gl nRj6Ϧm7]^!1[8b8ɋg'I/gx|2._qW>rRxNͪ}.ڮrh믏D]6_%8 +䄀.~4 \( +mU~HgRTG)90klqᯝh%s6bRauLibɐr7f֧`s,q'X\)/ҧۻ3Keg)P;>,fabźN^);%rvU.ıaZv8%z +65
yS;$}y/Gaq6aBl r]ul,T#ZnF#]>y[OJ{7Ja0^ߴY3_~x\5G}_ƇrC6~H{=q|y+02Xy^R|nZN;R8e<BOU6˝q\ѥ٣5ڈ!w%0Nƕ=-XG=:Wmӧ<.mBƣ~c(VRƸRE8SbjiY/oWۛKr7.#YFPXA +{S#F\Ӣ_Cs:UW; +!=]E}R7B@hNO0 IVCUcPǀB/]dqJplrW7LL )ŷR|!)~#.uTaw4hiK}ޜx_0q-2'&%-xOٻGrn +uuj=Ec_% +qč2p%PD^%T%A +փ4:ZK{JA(:ıZ@*9BS|8CD-y4?^APqو3J?Pyև[ KK>oVG7RRU#ø ǚ. +endstream +endobj +1128 0 obj << +/Type /Page +/Contents 1129 0 R +/Resources 1127 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1113 0 R +>> endobj +1130 0 obj << +/D [1128 0 R /XYZ 143.727 753.953 null] +>> endobj +1127 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1133 0 obj << +/Length 2953 +/Filter /FlateDecode +>> +stream +x[Ko#7WQY|4Y`f,%Z=bK^Y&ح,?.V&ůxտx˳?,sZcuy]"3TkUWzNїr1w\GeZ/2X0%T|fv?O?+4Wx|;?C1Rrg@ +*
ĜvIt?xuE_\q&Go#DT5VrL(ۗzjv[*fjS5zTcYORM\T$ên5[J/2_AIHj?oj~OW/%;eĶûsAN +Tr(&iy$x2ƒ?səՑ%nJ=&&JJnA"ף(@Iz-ͧokힽTb#$\2 +ID 6@ܮG8
龗'qDȒ2AĨqc|ۥ!1ccֆ,Kc̣fJ`f +Ae(ӊV挲^!s$ +[g,h* +*YE鶉Aw*NиC,/ d1( +A]jQΠ|HT9K(첥FbH0@o!4ҵG#t٦lSMeaP +wlx~X>_z6*m>C*!9Q]Fm,``R~U]s(`&ea +P2O;>P^jB2ݠ:;{n2Qn'~sH=^m%oђS^on+7v
] +endstream +endobj +1132 0 obj << +/Type /Page +/Contents 1133 0 R +/Resources 1131 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1113 0 R +>> endobj +1134 0 obj << +/D [1132 0 R /XYZ 144.724 753.953 null] +>> endobj +1131 0 obj << +/Font << /F16 468 0 R /F57 549 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1137 0 obj << +/Length 2771 +/Filter /FlateDecode +>> +stream +x[s۸_Ge?ڹv2өtes"QH9$ %+VlO^$pw]4hv|s{e2 VkL2&%1dj¸no3!'h8?ßNY-a,~OXN0"qKƈ]0Z%G@ +Nma-5/d +.^d)'Pޔ %;6KŴx6VFq5wO2(<#v;I6UYp5HEd r%9NQ˕DKX3OWGXjR +Ums$rF{M>-GW u aأ:*yTOkLSA-٣IPZC?q9+Oէh3ɈTgHYI4& Dc VOdJې$<,Ar͚nHځH$bоa=)Lj(($a/%%GYjc(R +5\HcJ;
MlDm +{:j<eŨ0A]nH@Amj,jt_/ɍ+e\ºY𭒆O]V=9Yu>7Y>ZIgXi(B(39
>8k2bK$_W5Cfyj-`?.6'Q^1.& uH}H:]vn:ͧƆ"HE T2vn2(~d75`r|wepI0ܼN]UuQ
ob*U&R
2zm>oR9!P9d,06;|;I{uqpWf(dT(Q +:kGDGn;P\xv}#o +zJP8eSQ͓k1Cpzd:CŌ+_I,pۅ-iD1BļWjW<Z+⇱c;:)uӔI`[}']56\_Б! seS0_$:[]VW}UxaBʊV3!ɘS4e1ȭM LC"^iF_f{Q9_Q^Fĝ¤>'uVYOHĉjTEkoh
;ʔ9(D>ԣslY0DVl>wE|p,Ԥ!RuZfp-%
pΗ\,` ЙFL}9-~y,&wS5ɻV*է7mxG1Xէ{Μ0K@66]{{{Ug5f|?BI}Np4-r^I|5mnߓ +8%#: @=3'
9Rioqdg;.5TnɃWֶ,_ꝃF[lbWlT H`BjbѨHʘD.Ru9YU;MzEF*M-fyȧkmo Q +ܮy)t)ON^aGZ<6EUjLwQF\ŊF2~_Ggx<?ǔnŐhS7UO/Ϧ +endstream +endobj +1136 0 obj << +/Type /Page +/Contents 1137 0 R +/Resources 1135 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1139 0 R +>> endobj +1138 0 obj << +/D [1136 0 R /XYZ 143.727 753.953 null] +>> endobj +1135 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1142 0 obj << +/Length 2606 +/Filter /FlateDecode +>> +stream +x[[o~ࣶ'siӢ[4HqI p%+TgiťV[L38Op\wB%)yrJHQ(,&[&~#o]^b=YnyGg<W2jJn A8E`=3F-
1iⳅ-#ReMt8T ~T-e +X YPt"\4"$݊dcN27NH°dw,0'mBPM?O
D)Ocf}(c\q>1;FxWm̄W3=[ˬȊ>D +1yRb/Oepq o *0u*88BMI +{=JӔUHm'0QVڭ@=.J*RuRۏu lIa ns!IGSG>Libf\ga7IU +] +Ő݀bm@ZU&e573C g7,pabq]mE|<B:; +I BUjI=q4~AgRROc 4(7m-#JE}MoW=ۏ&;ELE5EZJZ5݄m7ӎ'xE}W^Ǵ<|{ ""H,bА6 :wWv='E=DwdB%[P:KN $/nE1;"~M+[}W?:DGbZ;ʬjEE\?G8ɮ'Zt*"VVa'"#wF!cludq)pmZ~H7i<4\$%sW@ԄCZ:_̬I<xZUGZ2[];6%f-6CvIиѢО5cj,wMN<hYx|8k}6-+9hy*SdI7,.j_M?kEp}tP'(!ꙍO5oA)6* =0cfo YYz\*f"0aÄ\o)FX^a˼Jbծzm9YQo|aW$͜@c.
6iSuk|+&{N9I2V2F]faJ\o +Hg>9۳4&[Ya=F{/rF~3"X<WoK#w'|k
}}YȖ"[vz4炅oWKd?AGMH5X>.ցv 5jiYl2G"Z(+G}96Dt86jV3u͓C6P +endstream +endobj +1141 0 obj << +/Type /Page +/Contents 1142 0 R +/Resources 1140 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1139 0 R +>> endobj +1143 0 obj << +/D [1141 0 R /XYZ 144.724 753.953 null] +>> endobj +1140 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1146 0 obj << +/Length 2454 +/Filter /FlateDecode +>> +stream +x[Ko8W6̩gbijGeVzȟ_)˦($Jc/6CQջu.LBdr +Qw>H$șUYhc6jA|*E"|Jgٿʫe%d#0k
c
{W[,_#FgַAԷ5Fx6Յa&hԯ+<ۼw<уxߨG{7Lkvr?tnZe "]d
QlY^U,C +a{+%Fh=@=\_K3{L=͉߳{+tݵ"/3eSw@y6qa\gV*ZInB9ATJKr-C'%'o#*<[z96+*7<Ur{[@~,lX8qALR=O)8Rhs +(]H"ͪH>(8|3OWU^J[}L7\a$z>4zJ17P6[kqWY l;vz&tjG77djYF͝#zfBCW`Uhi^U_ť+%CC"45.;x +cX̾mt0%R^FnnVcL}#t+l)vKp]_2Fȁ]du5K8fQ{B(՛G訲.Ҽ챦QZk+7C ULHA'Id@e0bF)8o:A7pS1HT`Zڨ3(͇jɝjDq0sW(jvڨ]vWK}PGw[s{ؓA&;'1\ɤ +9 +P/iF~ +Mh?pI,iM>+K"wV.K$^Z]kҮմ]=([_/W"qVpm-=Nk3cuu9$CC-.`Hk*c*B\P+ߘ5ոT2iZRsCЀQpvVeOK%Zuߘo<ÊV{;qWW!>GP=k$pt<<dOwx*yuealCqߔfDJv~lJ@
][оKE=A\=^ NPّLQ(B1)i[po>hdyNMy_evNDӀ}9Ϫ7^^Ѓi϶r1e~!i^ULgE?<y|R_uM;;؞mj7x
ҝv{\ޛp` =b̵bvɪsbfS[N=gW2}nBf7/>ܷ1:{4Wl? +endstream +endobj +1145 0 obj << +/Type /Page +/Contents 1146 0 R +/Resources 1144 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1139 0 R +>> endobj +1147 0 obj << +/D [1145 0 R /XYZ 143.727 753.953 null] +>> endobj +1144 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1150 0 obj << +/Length 2780 +/Filter /FlateDecode +>> +stream +x[o6_aÒ<EophX\[ZG֑]柿!%RMYq8K<ei8ntZxqXz @SE,Q~ǗEy,~>0zʉ6oJޝqI!2jMg)g#sy.Վ\(?a5 +k&ʁw:[/'!:j#ȝݟUqS, 9$\[HLU!i>Y&#/"OIC& +&+0K s8hw~_~2(DM +pK..I_,h0mIvĮl-E'-zjGl-߆;ŇkDPJzS|%!?"!w=sE ) 4T>XI@mH3rm1"5XE$""4`T
*TmSM +>`0l6%Ԩ_sZIfUOprd6 ,4/qyzW&m^.p6@\ŖҢ!AlY`ؑ_ؔl2.ՉSD&|>eA%;ٝ/K{6|HȽ|kq̷{ CYa^]t",/CBTaIj\NDK&[Ǝ-KJ +Ts&iMrWL;]R*]FIk +JA)ZGoAmiL7S]]FUYG:`ٜpVh'j' ift 1s +9gi1[r6+ bCB`յr;6uUgX,m|S:|˘sc*+s~}f7ӯK] +h<_P=@[Xg{,w٬;)^!l:YQccNcxG)%W/+sr^eRcP~ɾRv]w#;Mw:x8+oMÍ*Yp٦kfY1][֎n@9զNރO?4L쁂)CGז˝<d֕r3GPP[c:+6]_gޛkp$2R2l'Ӄ*#6<-\X|v<Aeq(i2L7Mξߏwp%#X+AIl丢_|UU<]+%Ԩ0Pk*¤!T +w}f|f7}''[3/[ʐ`?XBB7eP郇H+&tV rb͟lu߷f*[R~Ua-D8A)5Cm,}7uS=ЖC5LY
Gg#{VNhcV
&$cfMֲkT+[!pjyp
i;'-*CKƉ|}mn蚌}F֪H6UwHZt%^*';d9Nybv|g54
n+#tmñUn6͛- +S#琨9mTB|.gŴo +ttU(Ӻ;R}ߴoKyFKo$0pV/1p*}x`Uu +endstream +endobj +1149 0 obj << +/Type /Page +/Contents 1150 0 R +/Resources 1148 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1139 0 R +>> endobj +1151 0 obj << +/D [1149 0 R /XYZ 144.724 753.953 null] +>> endobj +1148 0 obj << +/Font << /F57 549 0 R /F16 468 0 R /F32 472 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1154 0 obj << +/Length 2204 +/Filter /FlateDecode +>> +stream +xn#9hDJ,܉dmRR;*+KBT,IݷNw8.ΗxPS;~q/AR=Q/Q(ҾQDPqX-[=i;?,D^0i2~Ͽ)&oR˿F$N1>[].Wl6a_:*p/s%NWye8H+Ѷń'=&OwСL^X[eU5l*rĨh(5EUd10@Mz=aDkULZ v@A6xh닆$V6 +260s#k%@O*(2^$7EV5G}0;}BPPA9dSP202dgHC%X9H5em +{l RT;5)y +Cɚ/MEi6{R>|z!<f B(mԣnf]j ++Z/G#Ҿ5IG.19{2נޥᝨM'wFHlZ +ž8e܇rf.05 Yu
2)|s}Q|5$kH>veN+o?Ѐc;l9WD"bLj IS
x"rI,Dd;]RXJaA64dC+*LkU(}^bD~ڍwrAn4P]1gqh6z̴21+՟ç֝$'^);"tԱrSb"J抵$ +jȸ1*Rj_*pn +j1@AKyMِ2c떚 +.+` +jd՛$~x2,$QVa!F +Muzq2L1Ā1o`uxWUU&Ǔ:d
z?~l.|_q~9Ϝ5LG]N`EFmB
p +endstream +endobj +1153 0 obj << +/Type /Page +/Contents 1154 0 R +/Resources 1152 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1139 0 R +>> endobj +1155 0 obj << +/D [1153 0 R /XYZ 143.727 753.953 null] +>> endobj +1152 0 obj << +/Font << /F16 468 0 R /F57 549 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1156 0 obj +[599.5 550.9 550.9 836.4 836.4 245.4 273.9 513.9 513.9 513.9 513.9 513.9 686.7 456.8 493.8 742.3 799.4 513.9 885.8 1000 799.4 245.4 325.6 513.9 856.5 513.9 856.5 779.3 285.5 399.7 399.7 513.9 799.4 285.5 342.6 285.5 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 285.5 285.5 325.6 799.4 485.3 485.3 685.2 686.7 686 656.6 743 617.3 588.7 685.2 726.8 287 486.1 715.3 560.2 898.1 726.8 759.3 657.4 759.3 665.9 571 702.2 706.8 686.7 972.2 686.7 686.7 628.1 298.6 513.9 298.6 513.9 285.5 285.5 493.8 530.9 456.8 530.9 456.8 314 513.9 530.9 245.4 273.9 502.3 245.4 816.3 530.9 513.9 530.9 530.9 351.1 394 371.1 530.9 473.8 702.2 473.8] +endobj +1157 0 obj +[468.7 502.3 435.2 502.3 435.2 299.2 489.6 502.3 230.3 257.5 475.1 230.3 774.3 502.3 489.6 502.3 502.3 332.8 375.3 353.6 502.3 447.9 665.5 447.9 447.9] +endobj +1159 0 obj +[611] +endobj +1160 0 obj +[676.9] +endobj +1161 0 obj +[756.2] +endobj +1162 0 obj +[777.8 777.8 275 500 777.8 777.8 777.8 777.8 777.8] +endobj +1163 0 obj +[486.4 552 875.9 0 0 763.2 0 0 0 0 0 0 0 0 499.7 499.7 499.7 499.7 499.7 499.7 499.7 499.7 499.7 499.7 277.6 277.6 756.2 501.8 756.2 0 560.4 770.5 655.5 714.6 828.3 605 499.4 765.4 783.2 394.3 402.2 668.7 559.1 1044.1 829.7 803.2 576.1 828.9 609 557.2 492.9 774.3 646.2 986.5 666 555.1 666.6 0 0 0 0 0 388.4 609 588.5 487 603.9 499.7 420 568.8 621.7 360 331.9 555.8 365.4 915.8 664.4 563.4 589.6 605.5 432.1 455.9 416.7 642.5 495.6 812.1 526.1] +endobj +1164 0 obj +[569.5 569.5 864.6 864.6 253.5 283 531.3 531.3 531.3 531.3 531.3 708.3 472.2 510.4 767.4 826.4 531.3 914.9 1033 826.4 253.5 336.8 531.3 885.4 531.3 885.4 805.6 295.1 413.2 413.2 531.3 826.4 295.1 354.2 295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 336.8 826.4 501.7 501.7 708.3 708.3 708.3 678.8 767.4 637.2 607.6 708.3 750 295.1 501.7 737.9 578.1 927.1 750 784.7 678.8 784.7 687.5 590.3 725.7 729.2 708.3 1003.5 708.3 708.3 649.3 309 531.3 309 531.3 295.1 295.1 510.4 548.6 472.2 548.6 472.2 324.7 531.3 548.6 253.5 283 519.1 253.5 843.8 548.6 531.3 548.6 548.6 362.9 407.3 383.7 548.6 489.6 725.7 489.6 489.6 461.8] +endobj +1166 0 obj +[606] +endobj +1167 0 obj +[500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9] +endobj +1168 0 obj +[480.6 516.7 444.4 516.7 444.4 305.6 500 516.7 238.9 266.7 488.9 238.9 794.4 516.7 500 516.7 516.7 341.7 383.3 361.1] +endobj +1170 0 obj +[333 500 500 500 889 778 278 333 333 389 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 333 606 500 500 747 722 611 667 778 611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 500 333 333 333 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444] +endobj +1172 0 obj +[500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 0 500 0 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500] +endobj +1173 0 obj +[532] +endobj +1174 0 obj +[536.1 536.1 813.9 813.9 238.9 266.7 500 500 500 500 500 666.7 444.4 480.6 722.2 777.8 500 861.1 972.2 777.8 238.9 319.4 500 833.3 500 833.3 758.3 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 319.4 777.8 472.2 472.2 666.7 666.7 666.7 638.9 722.2 597.2 569.4 666.7 708.3 277.8 472.2 694.4 541.7 875 708.3 736.1 638.9 736.1 645.8 555.6 680.6 687.5 666.7 944.5 666.7 666.7 611.1 288.9 500 288.9 500 277.8 277.8 480.6 516.7 444.4 516.7 444.4 305.6 500 516.7 238.9 266.7 488.9 238.9 794.4 516.7 500 516.7 516.7 341.7 383.3 361.1 516.7 461.1 683.3 461.1 461.1 434.7] +endobj +1176 0 obj +[591 516 545 635 460 421 625 630 310 310 591 460 751 630 640 475 680 550 480 491] +endobj +1177 0 obj +[709 611 611 971 954 333 333 333 333 333 333 333 333 333 611 778 833 556 1000 1000 833 333 278 500 500 500 889 833 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 278 606 444 444 747 778 667 722 833 611 556 833 833 389 389 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 500 333 333 333 278 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500] +endobj +1178 0 obj +[606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 278 606 444 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 500 333 333 250 278 576 462 520 576 449 410 558 614 266 264 539 449 694 613 587 457 623 499 404 440 576 537 732 498 498] +endobj +1179 0 obj +[418 483.9 418 287.3 470.2 483.9 222.6 248.8 457.7 222.6 745.1 483.9 470.2 483.9 483.9 320.3 360.5 339.6] +endobj +1180 0 obj +[623 605 608 897 900 287 234 333 333 333 333 333 333 333 556 758 827 556 944 998 833 291 278 500 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 278 606 444 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 500 333 333 250 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 500 1000 380 333 333 778 778 709 709 774 611 611 763 611 611 611 831 831 831 786 668 668 525 525 525 613 613 778 778 667 667 667 667 724 337 611 500 500 500 444 444 611 479 479 556 291 291 291 582 582 582 546 395 395 424 424 424 326 326 603 603 556 500 500 500 509 250 371 500 778 778 778 778 778 778 500 709 611 611 611 611 337 337 337 337 774 831 786 786 786 786 786 500 1000 778 778 778 778 667 604 1102 500 500 500] +endobj +1181 0 obj << +/Length1 751 +/Length2 28949 +/Length3 0 +/Length 29519 +/Filter /FlateDecode +>> +stream +xڄS(%Zm۶Vٶmm۶m۶m{{C|ɘsF2G$%W434uec"5u6p6 ``bd$00r&041W a!N161O"ΖiS8Z*kladB@!lbL`Nh`oN mjabKdakF`nD`זډ֘_EL-̝ ;@Y[cGgs% i9%A Os['sgg{.zz'#G{g':'kDȢ.XX?L=9Z8Z[8X;p6056!`-lM,8-#)[Yٚ89'eg?j/ϕNX:+r18;Zh1ssםhhgefal<iY8::gM-1j}Έ;2-3ݹ=wdJDt}}@Mwפ]Bs,<՞EWHVi- /m<e$ /{
+o d)kq6x>2M\A+x>Pi@9Y/hk0ͦkJ~mF4Ppe/p!+:6ʒQ64cW"Epn1@H|'Y.Rj
>W!SCBt{a!
=8gσ趛gPpI)X<8J* "uL;Zlw euvw;9_Bk*Ì|Dp:&2wK/rJl|fwahtBpM + +1vW1fADK~rP(Bl$9-mę(B_AQOAy/b칌V)/>t 5 y_ <(}1C\f]NV}P4i&-r 1EɨKŗ!HSUZ&(OM`sp0#"Z(TXYRH7"u\i!p +<!#LT
T6K퍭o̯Jwe{cbƺd}Fͧ*$` * + wiiYъ:4XP b-~s-5XO QҭUbE!Xg;+H[2/!:엹H∎=,0 +."B`k1鳴6蝰Snr(' +ˬ<N)UȴiH@g}qރ~@G!Z(D1'|CPr-::Hr(3un1ӟg6nST0*hƌ5%Xtpb^^c%`lhul(a5OBhSV )%~o2Tk_)\uڗ{FJm-:Ӗk#} +Ѩqz.ʊNhV'YuC%=cc!lVN +1!i R#i7N˞xF.UgզF@sK;{F3WQV:lTK˅*zkdUY1Hyz7&O>`I@6p/+ԨѽZك HL'܇6pXUOruniH2(HYsm<>I':n(ɝzļS҃&Qo=[E%iwM vi|!'A{<V'!¦^+FũnbNLߪϚ;#`nC~d$tvB +Hai= '_SkNn{-l͗Ad:3P[ z&4II\ +^1}J[tмo5=:CJECZ3HqXQQG^pBCs6#\|RxG +´:mBAb.z=-a*Z4qZ]A.m94 LdRO\?<A! +rxIȘmU3kᗌYDJ!L +qY:vihym@6+>U.Ky4hCӄE?}X
'+KR4]3ȶvt*DTD5㣵fJ5"5`4F_T7 6ya!<ŚڳIzŌԆ"2( hmFag1ӎZ] +EsKw7@[lф0{)P)XKn*!ϼz2zb +AF#+/ +}Ǻʚ])F`H +Xn+{2SS_F" ^U}, bjy8
~,>yxC}=ݷU`÷!,0.~7r#-v5Xo%/ eqH(x +@Dtcd 2)XSƦVŅhD5~YhGwqy$7k ++9ȥ pVipkTR9vIeKnK: Y:KRu"vR2M3 雼#[^oĕʲXrɔxuNfx7gU;ƳBHxܖk|". DqJ3v~J_iS?G
H&7K; LCЀ<ZA-8;4;BCu{IV%B +qR&sj'l?f-R/ y``G{]1Fbx/-j{֧=&*)E*5d`rVtap +~xzjdɢɟJ:xzVpD)S7Z8.kR!3P]n.9wORH1"x\A|3)](:Y1~7E5* /,x]hFڔ]d
.Eay7oI72 [l8UZh5G BM +hڬk%+)b;.ek6X$+O(DQū5~E9 h4Dﳈ.d9>o
^J [f5"pE©=vR?:ߨZ:84ѹێ0(ϺvUslk(Lp>cX&H6Ϲ3lgVq;]q:|$+!`C*]oDT<,ߌeofuġ?[}I&n
sB/sX:fjaHy#M*}>o8*v%77Po;'GhSM ,v.J/$zfEkTwG~.zHWꭄL;&^{<Ѳ0=PKWŝ9vs?F+o0kIy@hOWig|Fnf]rl,DT8S)˾?*!;B.!<>~Pќ-[1c%M
}-R5:c3Y.#|nФbDkryhzc#Ԇ~fFۙG"pX:K +Sҝ^0$PΘ>r%ef-!j}6K TABH$S11'FmRA}o=?fCe'VW24Po"k,ޑ.r#9eUpA^ +%v 'uX<68okAZGYX)/VGYy}W$1?91ֽ.]#*gTpDrc[LFikPDB@PjG +97sli 4A 7ʓLA!vy3^6|tx:1ODѓ06< +sL +E !}'u3/ ?.v4I=e00`7ۅc٘|:q + +YTpՋ=fIR/P2vAÆkB+g3Ni8ݍ'Í+6()[9G
tòIV +>h\F\&Y7pǙMSP11Q~@y~]?Hy_?B`ě蹟w4q~|{ʡ5:ںruH Ay2nXv/Z\6:k6/@QVhqP;w741ja.2"v|@@EŃNj':u`8İk +7WdZ+-8+A&ޥl|t]Ec6 YE;/<ڢ"sIf[hHzrkzH$dnXa;=x\xbE +@Q绰pAgSO/]](k}^ o%!X@g{@'53oQv~VYM ȯ9@3z \}hKT08]dH<'Ҧ9`u~L4}^v'lub"FA]~KN"\ O3d0!=Cyes+og(Kj*w[{ +MsC' +HZ18yz!|n4Zqv:P{Ѭ 8Lj,-+bz=wn*TMZ/vY2
gUHų +ZUdtXt|OZ<06_<'R6pok +F=;Mr +.6瀒2nla|Y5o+ +r0B@M&@B^3~5@8~a/ћG~_y3 +Z]3jC"$W3y:îuZqwhm:>ݷtc!GR岆(wuX;M4fBJÚ@sѫt2$"WqU +xIw=/6]p'ۂr^t!80K~"*Cۥ}Ew0uO r%Ol}cqBǎ Q(H".5Ҩh,T1ket+S,wJ*`Qxeq<v +UWH +Y(joj }[{ 4JT܀X#yر˜Ucv>w#`I$CL}Eeh +Ŝe13%Ŕv'V'avv0gR]%gxkfm x"mղKn +]U6}ƲIDîgU9}m[Y/]fEnN;TqDsg`cvT2ШDƝ + :M
/b+o=y7Ak̖J)`֒^ uXt[-Wb婟jw4I#^hr{vu3s_E|ܩ') +/Mź.0]?ㅍzJoE,4Hvq/9PEg;ef|%REU螙@N1 Dm#}9D4f3!JGҳQL3=&f1JuE<@U'$ҔJaq3y~eimJ*0۴,6}ד+zzof +1ڟ#Sek@AKչ0ssߕumTRCfkzK$ +6Np&q*~EV' +<e6])2{hA@Qm+T193iYugLUlњ5<& +orPxIt(DםVGz,M+UqdD Vjre;ic (u{BoU.~xku|z62U<]ҭWoI]ճ^/8b;0D,4"Td蠾ZA6ݷFn~.8(EZ.% +#GK:k]Kp7I&$=8-ĪL\b>_v7 \G +X5jsQksLL_t0gMhR΄rM40s;0=mTM,?'Ɯ Ȕ}ȡ@Kv6jvg@^cKr+͇1@#A.͜,yDۘ +b?orSxз_{.;I}9R!^b)zobN%UYWV$m8s)WݏÆl`m=qOGiDTYYZ̪v/ [4]. $զ${;'7.!#u:[il[=>wf1 +*B ָ37^#0>i/pv't)P~wEF{Om<#SUhW
6[5Y`L!Cm\TmV|o74D76x>_ +nmIzzC%>
$ +QK"&D)b+}zPp{8t5Z#_; + +TJJZ ~/Q l_3<LkfnBS Y..=Ei@θl,bhaP6ܩߡEj ++$n?TRsV,<:3%l~|~
DRxSTݳ(JE{g
OΧ)/hVVݙ3{Sk6xEۘ>I(L3pàȝC٦nu1V@XRPJ 4MFsz'%=st.O%-x,S1hVit]H +췛k
{S ʲ1gw<Zcn1g}bdl+JNaz>V_6joS4"+UvΞj9Gً8[kƺqH$%2sI:!C9TúpD0lY<6[¼,7C}O45Wm
ATjVdAm>o? +^vYh:v
HBd)[^Qg?ejf)A=bb;sGMzq#O s!ZR\)g$"@{N-~ <n8pwoV]\6>7. %''w\),a \c|V-7A5$ul0䟪u=A'ǖc0ZJ#Z'1Fwp*|$&b٫C7WDIDY$`YCLK, j]HQB, +:4bC?NJ.q<U5xF<lqAV|!KÀ +@?Ie2JgĵNk(sdG[*ckKe<F])pIm#{g0Vof|U;dr6a"hxMP$pϜG= | +<کpYjϫ`Q/tŮ_
I(b«7W@Kz@vZ\p&%FtN3uMBfR\g$xj.Kswg0b^(auqXJ7+`s,' +W#.kU"JJ4hL"]{O@_.<]k|EDָa=eqgM\}/]EXk"_(8E\<H]U80 +uFgi +)ڐ7Y[s@ s*UKbMR0?G&[0d+Y?M+6tɫh=ZL +a{I7\bGzã><,ῴD$Sǀ@WszV݅8rwQJOۅB%K
D[#(223jr&P|w +]KYeh]Cw"1Rzexnx;mc('VY.Bm 6
˒悰iV$PA!1iBf +pTYV=+rplj&J&qDY\u&3==cHQsB2#B|8S;8%q0DB!DPK<U_8iQ}kLHR_ԼӨK{U~v-@I]#IRrFz}L @;J<J0Pe̹ %i&.^!I^kgY\C226xyr>y st3.G/ږ{':k⏖AZ +RhK>{~.=LR +%tPJ:nӈ~en<|0RwzTxg?gXc_*xFCh;Xيsa_蝰!d ю^?e/ q)NĨO@}BGƒ莙$/ӓN +d)* -QzbQuVțxxGk疚XnD&KñJ,<X7StZ4`8㜰Ի GY&8p!KhH.&F79Sfu0DO8x*WCy豙:a!:|@.5_(]'idx,N&أEKYRwvQ-љ-yL5)!P'P{QqmAEI";rb5aMḧ́~unIr$ٰSS{&ԢO}cdѪ{( c,J~_UދS
5Ӷ83pH1,s/D^{\h8)Y|@2+hk(Tk,G.=)10PXOv2MRb]#[%`9tMB;*;q?9E)a_je15DK0S%*IxYX8A澊wIz3"߲b5Ck)R3t8-iݰ4m,067eCj^ K%k`(piVsX(P_ +`];Lm|Qo4uM\O"yܕXB$N|:8ڮ>jID:r[(fIJ7@DmF'-O9UGײ
5d _iJFf#٪30]qE/`hхigOSŁ'M]q,ЦNjq}棓sh^{Sm^(%ZWv΅- +XCL +
>g(@ƱmgxҤMDT[`BCP77!^~@^3`f2>{G>a.l ꭡ,ZĎsz9"I7K#s5$8KLDy27BsQ%ĆZ !J.Pc_T_&қ".:(B4dGݭm@]6緆[/POǕϢc{N(SNF8k"/4&[SadNhl
=wm{U&`hGF.L505*KV]VJEq%z6A:O A#DBVW%6ۿ-}q6RuX}4[-%z27[g +Iвoxq~Y%f nùpZ3AeOa +zGP->;<OkjIR >+y +p:}1yUZ;ZWCi@{(a`Z̜t҃CbA%XӺ뉼ɤyѹP5~Y +12eN1neI4B-;WW hyHUD:㯭DEr=&یg D>hڰ!z]ϛP{Aq7Lcf5#.2:8?V
r' +x3sM/J1B;в +>Ӏ:AZ;[%;|מɂ^TbF{ʗe70 +Bis +E"]À~/5[VG^UIݵ|OCdwq3V\|7Xy\=mv=&~=YDɽ%cG̅& DP2YS0Q=#;6'9ۃr6Wz&?g|g,CjfZkD>Ƹ&tU>|6d|yX +6AzZW>b(t +>lEk^>K3w岪"iN^tOVKoI +Vx=_j-sl*xN
r$? +ِCj^CVXRY\&f~JrYܲO×sW3jrn9K!)VDrB4cƩO)9
Mr!ZkUR`sBSOedmІBV,|Oga`d%In`vT+d?uE5DRLv5цlZu(_o>sjz + eup0)JZiO--WW=sZPUbm +8K{7IZ8q7CObWÁk,!a84qZJg{YjQxN.|s+Y#d35u
Lldkϐ\܊K0݊PS*'+TfmI5ѠQA
huf,K\{3H=D*
x@_u}stMP +B}g4 +9EaQbSܫ5!eژgح澦^ZLF4&|/<77\G5Anxj0ߟieS_I ᗛqG7AοGy;Oy^p$5t>갾CImDDo7\}a +{]YHDZm^=~~"9\B* h +M>xHLGs82" +tL8+`$L$$pۆ^O/mw*CwE hNBaB7>nGLER
bt4+A-H|w>w+ʄ8H "#y|&E,
nyib5е'+uV3o$sܪ1=CTl?ѬN(>ONP^2"P +%VwN9(eo2PŜΰ$n{iU$G߰ڴv"QW+{.j<<yx2>(~_{eWՑk>j`NM"VÞX}iLʽdrXc\/Rb͓Yab9:Q$Al[/(۰h?%ێ&~9jmW_=-bەy00b8Z[mD50d{iUqY@r5>Zo?2L~-~&X*Ŵ@0桫Ԛ#2Cb +~aZYq5jm\Nȩ*9Κ; +F{ 3B%C';֠V(\N8~FFM!Nz/R84>1(JH-lt
T& (:<ū;MiqWlk?HVurb`܃MH87>bwC>;u7[#d:J%a;o=^7!$apвz$dL"esقdwaF[Wu
uH9c:c6A"59Bc7u +M{s5)0jhqҬW+9k!QeG}ST@Kj_wM&emNdB mi`-i<bR*"PtQ
(xHE.̀/E0YJ*VGǔH5&mL9GVڃ]"08F}\Jj`^a(.P<{D8 +U5ۛ^rߏP#9]Q p}cyKe]S'vK93jJ-B Ze|s>MT;d1N:%]2Xt_h4iQ{/Y#LyPe&>_ٲ3 _ +]V(r``Yz9`$V-VvkflG?G9g?0F:А? sFym;L+tBբ</{bWYH(vE3ǬDj;S^_u*&>rb,8,Ӌ-2hDZJWc2d9)-uؚf5ݑkd4o߽PjhtE
InGn~$}<#Dfzy_s\y>pOʆWQPl5,bEݱl듸B=ϑ\e;vh|o2\0sqPKV ^]M+wzuGc\7%e.vS l=V{'BZ;T +Y~,p0NHδz6S$Si{@m1lO۴)#{H(}˪2(KA!.''(5N$!Hcm+"IxO}Qp +5(D\"*hp}=i>0#VUyRϗPɦ.6aE@;O_]Z=_BT2{gZ 9= 6n? g+cx|T85cΟi,l\/E8~tpi;9ieP + +9:LPM!?=#$YOrCC +\L`lVZxj}+@GONm +Y+@<l>Z(a-z +LLXBVc7|\(+T`Lf7m&(/Z6@ztvo&ۀ(D20?KR^LzE֩#
)ian!^5߅X'!'X:$uTrx-t<Z +y`[Md<\)fx1Cwex +W$LK^,sΌX +]),_0*=~^m.E'm7t1q:{2ưBrXpp h=-/ID5| + Lt9=s)W +/e.A4uuqF-tV2i6&'h/OC@
0*<⁃:[˾`F9}&C4yRoIqd(āX<
77gtykTP +endstream +endobj +1182 0 obj << +/Type /FontDescriptor +/FontName /DGDECB+Inconsolata +/Flags 4 +/FontBBox [-1 -177 510 835] +/Ascent 668 +/CapHeight 627 +/Descent -174 +/ItalicAngle 0 +/StemV 66 +/XHeight 456 +/CharSet (/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/ampersand/asterisk/at/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/circumflex/colon/comma/d/dollar/e/eight/equal/exclam/f/five/four/g/h/hyphen/i/j/k/l/m/n/nine/numbersign/o/one/p/parenleft/parenright/percent/period/plus/q/question/quotedbl/quoteleft/quoteright/r/s/semicolon/seven/six/slash/t/three/tilde/two/u/underscore/v/visiblespace/w/x/y/z/zero.noslash) +/FontFile 1181 0 R +>> endobj +1183 0 obj << +/Length1 1837 +/Length2 9173 +/Length3 0 +/Length 10302 +/Filter /FlateDecode +>> +stream +xڍTm.L+%5)HwIw0!ҝ g|YsV`dW6Nv@RYC +4R +õ@= >#+0WnZH^/_5 +l +#RQQcPO' +R53_Pblx15LfP<@^yp(WoE2niћ9P@T>+,nw58A]d K5͟,`q-Vq*lRb|\| +.pe܇_a9SNuGD|BtWcRSSR!s,`gRiLs\m +ΐ0ϗiJ6Rs\ߨ^d}B\fB:/M3[,(W KC>xko>%E,JQHIWz^<Ӈ-ḭ%', {Qx0㹴zB{V͗FQAN$E.pS)8 賋Qyw9iq֍HsO&/ӼQC fNi2 +ߗ<N# 0^t@ HfX`
>˅ع=~ejmVUcz<@<ޔ%$遥i~*sżҾ3`ҧ6G# +CI~[ՙno6^OX[}?ۨ!up{vD&T<qH{FŞή;7U66-:Kj@uub^`0\q\K[-,x4\rxP;nP AAd_d(lӱz=[w~]gD)H!©\:!N|V$bRYOkt>9d>N +K['+R߽045.MR/'Kg=S!#B3̑Nc=+0xmGS>/Az.`kl⥯ˀ;yiZkyN)8 +ڮ
ףG^8_z<g(Mo@lx?KtThL|XAq! ,$Vk,]10=|:oۜd&hYVpY]I]":-.|
ϑ<t|Na`ǂ{0Y` px}xI ~&;S{;!.;w7mdh}b)[I=7
`(]$f.9L$v %IyNigUOEź
[Lw[p>o6)D5`Ww悚x=Oql9QĄx*@"5KKB2b4!(Jc^=FR^/1`1z_o@ ٿ:~0)Bуx5?ݘ`<.JlV<R "G B[R<2w\=/vj"l_ϟ1hSףw6sqotvϾhE3A0Nb m}- pZ !Q"t +IRZM?ЛB
ʰ 3g?*M꺌G'Hౙc45D<+;y8\V4G cʧ&du{r;}wU'Xǀ+ ih獋%cRۄwq@Qȴ5^ +!j
_^;P xh
(7p`~uhiH %|B/x ]OעI̎F/WlaL&*[}KVX*Y;(ņ+~CUKhv&TyϘZΟU8W0dg~iIң;j>$zՍ}Rm/]eH`D
F%ŮS}Q.۳<kTnh͠7
cnxfV>EGx*CBqٸyh^n-j ->֍ϐhBugy{$?졙@?
eҗO(~$qUSD v7g^vim?*˕?)|;ޤboA_A@8҅w:e;-ַuA,L c.{
<
W߆xBVu'dd;,]'fZ#]j'+bD" +I`ϏRe$6m|eMk_rAѵH7zrliG"":oӲ5ME[WTst",)k'`(
P;C9֏wfu.~؇]-e>3/kil2&:YU\.cD^QGc}U(}h#AU*;XS~FTȦyc R"}OAڸ>}&w6_.uҫL֜xGg3kFk>% +F-6]p|X2G:I̲8c:Lҡ/E݊c>#2, r2o3;^7~^MIN* 3&"SꚊ^uvq@"Q( +IjSn"UࡥT ޟ9,*Sf:WC:ٶۆݺT
X%ĎCs}.qβTU&ɫQSc<}J>C@enT1ҘԮ:C,=WVag7̈́vq|ævhYj[nA~4ȧӟ}kYS[2=#z{ƮJ"_i|)}E1QH\Lj0֗l뺩Ks4ݕ@h@maT+ܗ/4[l +b!6h:6}@@_aӥE%#suarTPߏY?y269
\ڻV(F
4ׁHrLc^a9*G3"%"ߒ&c1sYN&м2F"9,X?Whlɚ8cc!#]CdPDW{GFYp,͋or=qZvnwN$DR70ДMx.rzs9{K}ɻ4RPg^{`)i$E#h$+k*EpL,G;f;͝5ٖr$8CkdGt@8>d![ݑC:WFY(+`뀼w^WҩD $v<-\R墦/-n)m-ZӚvS
AAg&>ωuj:CbMziҢRFbA\Ju&qxaHcEc +)rZX9:er&$V$o ++zAXdxghk76 ,6vكy^\ B
TR;R+~Wea-܁D?+| +E_&LA,pnqB<ÃnTVsƜdW {1KڪH;
vK3g|dryJ\lARe-qeS5nf,;y2(
Ҷ׀N+Q* M'1DϨ'ͤmlTORg[u*-4
lLsKefs͢RΥ +ʴpA1oFzض8)v4.6'{cTRVD#ʦÙ6n|f}MrU"0%*e]QޣZ*ʎT6HSz5$P/ן-&qS{U`o%ttJƅxK2˛D&Ј"B\Ϝ;%mc)t&])∦Ʃl\4Wf>x6HpbPW6nmgip +'ed6nkYq9iq<ڇ;'#ҏO[vv?6m٢xIa*r!aq9igp16 +ב ZCpޏ6bx B_~;F_Z !wym1?'B.`>[Y-jZŊܒQTfSj_:rq>xH_;{)a=3&}IK39UN2Lqk~]/NpNti.XhB6(j +~_hDȖWKpׂ9JN5͠O֫5V8=um[Q<1"&l)r+/S8!N_}.̆|Pe!jU.a&5Bj(+Xop\0w;܃@;K8[
TާJiQ=h7˟Z:ɢջ7bHW&(<qy;v],{2ޛ:D_DϟjJZ !%%qVZە%(A#U56}FQq~!d^{4P#P*0z}~Kk5'a*m*˲Tiq%>D{ϦEהⓢЌ1Op&jv*Bg'W <HZov|ū-/.]HdKK*wNЛv|j0<]!)ñH83<|:-{ _ُ9,VA̦̝hqhwФvZ9x`7F٦trkLsdo߷v<Ή2<hڵd&eaPxim+Li)ri{(-Ss!Ϸ\,C]Q[㐆kYt9n8 :W[ÑͧX,$NOFJh)~YݞR?cV PQ`z䡫
G2n/)CͬZ(buUvC5/*!뺆;αKш:w$4dE,M:z#F( qN'#j@%)_ɌCE;h c2z:Nmx-];䊄Spw稤6y*}\3S!L;n:}+
R1pa*OtxkMSqGi#wlIі#^Ksh;mL%MKI+PDZ b*2;dEr=Gxlo P-!;)۲T|\[UQ<>kCwYg5>M55$$``{ OuaN 0ʼn[*8h~7ʄIOac4*vS<lhQi +04s4xNiԮ;15wRG7* +QEέA|+tح5+]iG.-_°:6UAGZ3~JYcV5/X'
Ͽ}0Q\R,KcqO6pa~"/J}.zSWɰuhuB! ~np4}{Ne#Q%( :9Eطhm>#8l o&r<~B蓆K<' zW\U_2 +X|9SFuzv"P_'z̾<c@DuA,I-h%ab41RP淪Z-ǫk6%uiNc8}ocXy],^{be>DڑӕcQH
oC5:%\_#Qט?65}!Ɯ|sW$R0JrŐsS]XA?mw^>p}5cCVH +o<k2|7)CnmJkRz^ZU b+^[J!Q*Ӷ.dɨIƸNzoԕiH;Rɡl3:-Rc콞NY +I-%Y8t#8Ea96-
^S +U8ޮ*>{g̍<Tªyꑉ۬C~uKN +.\NG; axӫ]t:lyOxa}ӃH4*[,t|
`k^A¶Vk,㳏ҧC?X+֍,ewS~&sPʮ"eOm;@<z&ґ;gjK~x +}צK3ؓ4h[)k36rT}xU8]>ItA|wڒbA5kƍ(GfPZ/DsVs]CגYS&U=Qk!k%oD6w\?*_year:0?* +endstream +endobj +1184 0 obj << +/Type /FontDescriptor +/FontName /UNLCWP+CMSS10 +/Flags 4 +/FontBBox [-61 -250 999 759] +/Ascent 694 +/CapHeight 694 +/Descent -194 +/ItalicAngle 0 +/StemV 78 +/XHeight 444 +/CharSet (/a/b/c/d/e/f/fi/fl/g/h/hyphen/i/k/l/m/n/o/p/period/r/s/t/three/two/u/v/w/x/y/z) +/FontFile 1183 0 R +>> endobj +1185 0 obj << +/Length1 1571 +/Length2 7261 +/Length3 0 +/Length 8281 +/Filter /FlateDecode +>> +stream +xڍTT6"4H3tЭt740 +ˎf@@0E(zAHM Dja += +0AHPp8!nR (
A:d +4~<6y(+CR<a` +27U:83vt[n73ˋGşp
Y:$}E3R4hk.7a:`^0w1}^ږo{{vqTE*g?h"zCW^{>1c)]q+藮wZ\ڎJ~5>jx<oBB"b8Gl17-wj\NX2i/2ͯf:MQ#$Eo=<>["~4=ֵ%s
OKwؓ5"zʊם0U."9V={hgonR +T4_4fjSF<iLk߰]EUdQ.|P!O-}R&elw&s|֮|LfCjTX0]:F_%f5NăBSc"k>u+IP4eʼnaO38?r +]9eix5R>!'':bѿ(2-)[@S]@g +|ѠGӴpcCjvl3XCg
ˤ>a)v=:Nx:g:O3q[=)ṫ#EM`Y&3iTet,ޑ,+XC~lZ4s(^)5}pwy7O97dgiW^ɪSvrGWwd8tƕK@yfd3S
-5婼"9
JiA?ѵYVM/ ;ۅ3(6Ib
}iꔻtX3jr?Z=(06v,y)(_=Rӈ"sv9<2B9[&3d#L%>+A3z@Q8U&ʥfO/9[QEWH=Tx${@ri˽2$S4Ipm3ʦ4 +Ū3 +
!ڻ9dHFx*^OGv}g;s3D+NJӱ{zE>#B{Rc=e*WJ*&Gt̚5S*l"y
GZ"&h^-dZGWw 4=s8pa5fʗ +&ٸ:~gÃ?㞣@h/?qk֡I:\E%I6Nxr{FK__`SNԄ) +#+Rm_˦S)KUaU^K|Ixj
?umԍ2'1W|a(L*\c&͘oY]eqqT'{_xfY9jLq:6tqZ5$){9Ոnx!& ~[¬JҠ@YXYTqK"CaٝRY0(%3vIxt ziM4_$Z,ɿ=i"ϟTc +LB +dN}RE[c8yn{dهNW-1:'.՚X2/o40ic4H">zh/>3mq p@95ʹ'u Y~yuM Qs.|:2gI>驳n]-`ĴU5c1IsٌGޭGAcs
mjdw:ޜ"KnA73R!H>PO -5%ZVƊ3yАKvڱFfnP:)G4SҙϤUҳǽ[6r]qR.SB{̊4esCڦo-t\|m(ǹFIf>Vuja>nUR՚ +Ó7sb 7f!sz=\џmі z*߿mtUs +Wy}Z0Oɉneo>ʙU+0,g#]M*_̼@eL`O(& +^R{U|kĴ/iS'yPDڊ~x,Ŝ0Qe⹚ur<G3#ڏS?q`
$J1VQձmc(0?q.(^~PEt,s2wن;m4euk^Ld" ^9.]Nm4-_lv%*U2AD
%ŏ(ػʼn'3MD@ۙ"ޛ@Q%.[s<ud^Tܶ!SC?3H?zaH\[33yPT`x!cb /;P iıj)O?Ʒ
xAw><_=JL[~&"@2a6To;UfQ.̎e ns^s_o]F
[Ag9!.uch{z9Oli\OSb"5ve=1xoX67vӦL<:#`xM5Ah<Xm"Qd5tKl)C}hw&%6a>h
3:$|jEh3 ppnXͶ"|Ÿc1cit8;^~Gh6fj#/GiXFsRcO>-b?m) + ZY݅gȝ^6yadI^r,;6i![aAEuVVtFzhG0wuq%t!Os>;;˳-ʘޛ&t=ywP!|\s~?
u&Ii訜isU;M_aaR )J%33f&4_qLQzaJaͳqN&*,2ODK6vS9>A'PK@'^.pǿNk05#>td&{rW<|1Doوs.BAyΑ_dZx(ߓ]!04OꠒcˈlgE _x~'gYE=/u +Ti/qGZ7jM%BLӐ+`=߰"O*+qBجHTǻkayK<#|eZ/G{[e&`2Ç57LZ_wO7wL<p&>Llߛza<cD/GFn/Q#AI,cvz% VCtbT+JL?p࿐;r"8/Ҩ.|M`X4iG𮕵hWL'55Q@aSןEl+SXm% 8=k/W/H]H<ԹΏ: T)d#vL%uGeqW'LD%p7ȑS-,VfrhŮW$ua_fg h+_0)q +5%g-'|q8VU?Do;h5% NSS`?YdA(mD||Xω|7\duKO=w +J~u#4TģFJTOhk0zE? ӛpy(j7C(Ya@JZԛUfiFNܚl9zO/+679 +l6+ìr2hqj$}Oڇ=آtB'='0;PWŋ(XW,6u"YlV ՓKuJ:X?';9J۹#|X!C0Ҋ8N !$t"2NkvUL]&ř`}N?҆
;gc,SR.XJ~;; xM-*.bOE -Yh}<f7{ͭH8>fT6XȖ`_%^1?Zm2=vKQZ += m
;ˮ!t@;
dU&mhJl5],6.Sȱd_ܢ_(=;}F"dϳq2MM2Sߡ''or23OoMJm'pJ}?69p<\v!TVC緝.G96Em1HSmf2vt< 7}Z_as=~ +3bs PUkL7ao3lX&uR[{"hu*x_#`hNh3`rm +uկEP)[*zUNf4i9 +~-\RcWR +6:휑gVW˓: t#lLE/6N^¥r2&*"*1p2]z!}a6$o(yݛ-P\;Co'GBp6Љc@So +k=Ul^('uXۜ[4$*PR-% +endstream +endobj +1186 0 obj << +/Type /FontDescriptor +/FontName /HKOJSU+CMSS12 +/Flags 4 +/FontBBox [-62 -251 978 758] +/Ascent 694 +/CapHeight 694 +/Descent -194 +/ItalicAngle 0 +/StemV 76 +/XHeight 444 +/CharSet (/a/c/e/f/k/l/n/o/p/s/t/v/y) +/FontFile 1185 0 R +>> endobj +1187 0 obj << +/Length1 1497 +/Length2 6696 +/Length3 0 +/Length 7692 +/Filter /FlateDecode +>> +stream +xڍt4k6AD˨
Goc01fDD$ktB=!z/ssk}ߚyk?z| +H;*J
+CCɰwC <B\ rC +:k;C + :W~ 3%U`h!aB"" +I߸k;*7JoXќZ2XE5b(mu1۱wUl(YytQmf5j>wрC!ֈ̣V}_~<Y#'*z挛I%v_)Fo{O5|7cT_Hʠ' +-NJj¬E}f.3>3c1WJWyZjw' +zN~PU܌ˍ06c'
GBk?;| +)%YKL_ՌD
=I+:%g'{F'֦.\xNیEKDolT +K>z"`vɁ>`YweL=O +@'}:i3̢?懏CY`ݏEa3ʹ8f +>;i >ުeee@{'o|
;t74CfwҎ̼86Ϙ3^[- +sqFÅMJn-j2Z:GD>nibQz&R3+m +
#7´3VY5
g{syYP[~ݡzXs#?msb8?XKncҶŲ"KR!N<C3+"Fw +aFQ3.q\#cv
Y/
1>SEUUxCxr6:%^dޅ|v }rd+^칈w8tOXخD]ԧVk\vgF]dѧ, +J®=1)Blgz)7r:%,>O(9;k4$*Te\k2iII&^dթ4ٽ$\)Vh]$oU)2bx +|1E5I\r
djU!EhYU0/̢@;cE X!żޗh,d=,)fa1Qe$fH0p"2~VNdZ#d1+CIo<!;s5#6to
dKER9yAf]= +mz6KnxA,6<2wfw=l;wTyA9)2,+dJ6$UˬD{3"lŽ[à5N6sfWަh7"f]|bUFH*?D[$)M=u7;L5$wV1yu`s ]IvؑByׅΓ*bR~htEЃue\_RB#qY Ja}4bFJQ#~M)"|YlZ&5[luށݶZ.ur$vuօ5Fx#pmz*IR82ԔQE;?M~i^+q?EvƦ˟2j`e?s^DJ]#h1;Mm>5|z7w00N56ZE<VφwTs>MyǫWW=o*9eq=6I"!L%WoƹqyŴ\6JY?Xڳ<vdHy}[0L@wN;g`(F'%*)[yFf$3 yr3=0| y̚ˏKBPi8UawqjxBRq"4-ݖmWZ6y`Gke1Z{Uܧ:/ΔFvț(}%) 9~]V,|\{{{~qt^1{n^ja|uի^M4uג@,aDר]$MK[ыIiI46iM/'ߛomrzihi_<҂ myr\Q9s/d/<F>i2m]GǎiV>.Md 馛N^k)e|{t<fѠ<kmg5Sdw\/.Sy3}8E'e8cNXKEjoՙҏyCBbLxL
'IJ1d]Ry[%#C0nv`Bō8N6OBgxؕٚϫZB"^ˎ36p#N5^q{<2},%cw=(*Zw3bK`ƌme'56Ij&o;''TkdnL̹y+!g)>Lc>O +GYx^,t&iWtLDR&1gU%ÿ;}7m91}g.)1Cs]oxZkL8LBێhp7Y
+kXnȽZfʉyয়U"7_H.QJu1(5XGӹڬ!-rv٤#B'&r}w |nWďr+z6UO"7D}osnai}K{_yTs*i6r1毗ُZmjU[XQM<"]XGvlw: +fU r~nNtd,-uef/Hy`bVL?YЯ1p]{d_\NUsb¹[C.ƍWX..VXo8u+ TzǭHXN|Eۮp%
؛/.
'te@ϙ +:Ԋr[2K/gxj-?k;c@F?7*O2Lo$4JeM7X[ryewK85W5΄5ܲ˾L^ +ec +Rpt,!5{EAd:twV|Bŧǝ[DErzt
ەCMȡ nه!^D?GBr}3ȸ[*&Ƕ3$W9w (a˛j[?tFs:X^Кd( E吙veq3|鶪zG]+˄:U"L#\*7)S@g:k_qi/ejo5>>xlO<;s.jNja2ROst,\0?Iu?| +2?RTK|xtǍEpA5琒?-MҖ|o=Hd(*mWj^6pw<0|q.I좾PZ))j!DA MVk(;'y'.DŽP(\nu3)RNj!P|0|JW)y<n"< +Gn3AjXww_(6i~n|*mt6&'T*!7n+ʇ_jQġOύt'U.v[$>g?m$EbJBf)g=Mp![P+G&45q: hǕIԼo3%8L_(IYB{'Diræ`R;Y}"CYFО~ⴕ'Ƶw y,"xѵ:1'>}SHݤM҄e +Ż/pT_9wLSP/p:{uaGGkK:f+v.,ϲ;6ZP!/B}VD:Zo}?lz{Mh2`9ТHc͓aYpiZ&*O@h*ǂٞ-,)?Uaڴ7!l-x +)2c\}wuܫoX\-NWE +qj.劙0ۚ<FWMB
jK'Nݕ~IAucz +S*1gsvl杙Ccm-|S;VtWGϔɐ\3ʕ]RƢ +H^Hc>1{|?WczK y㝣2\BOzR'@G\z ?RNJ/|Ihyq~L9?))0-|iX˫m
+;9굷.U|TidSMXn[3Y.HSPQ{>w4pg;
hh//ݾ, ݗ1b֮m⍩Yx2w^Ti8~&rOn\,/-٪'ۚBԤܜo;Hv/- m]L8lIUcd'u-s xB٧7;WYpȗ ;60XhtɲTk-씗k}Rq3IY]P{Ky{Ġed6w.86%Iq1<Wx+=9AFZ9<Uњ.sǯ37/ݠV2hN4Q=|'7 +endstream +endobj +1188 0 obj << +/Type /FontDescriptor +/FontName /ZYZYSZ+CMSS17 +/Flags 4 +/FontBBox [-58 -250 939 758] +/Ascent 694 +/CapHeight 694 +/Descent -195 +/ItalicAngle 0 +/StemV 76 +/XHeight 430 +/CharSet (/c/e/f/n/o/p/s/t) +/FontFile 1187 0 R +>> endobj +1189 0 obj << +/Length1 2165 +/Length2 11303 +/Length3 0 +/Length 12560 +/Filter /FlateDecode +>> +stream +xڍT-.nIpV)^+r>g}c;#֔g5盄BEYb +Y +hhfbPN^͍Ήh)Bp9[ԀN@GW9ூJ&v*cAhXYWX88[p +0AN,N ۿJd+;; /} G=XY0
+: +qu&np%?͔kS}FrJC. ^=t@5'~ :Ƙ +RvuYW-,> ++tmpyC[wi^ +ȾcF&fDDDUZWf_8 `kR=iuy
+-Aa@]2R[ԏW < +?[㩹G>귑Rc@pgdfҭ4^52$@.O E|m^bB+mxaпh}NB;ey,yݕ0ZjCkC3+@!u9]PU̫ +CD-J[@PO9~6Ϙ|>ɞ]u$ +'M0;;xZ~I$DҢ2 X$2v8T-4sFjk@ ++OQgG56ye'*09G= `|JƧ{ՠzFl0FĔ:WwJjM2x#L1~z7֚cϬFD: +UKπ!NVExU2FIaIDPh_GHC^: +00AU,.tlgW{>Y9GÊgCOn2bI`$e +}Y[63z{%4E71YX Bņ'x@"zLrʀne3.hȱ&X;;̲'qMk] P*QoJ4K=Y31~zbTx.-}V*ۨuS,ƨEtlRbkԃ>c'ydn]Ni@6~f`QaT1{4CYY +>~a`I@Զ}!]ӟaaC+"k/*-#6>ZjkfU4lx+C(3QSt4}Q +SSSBУ))j\*tL\21>5Q)A;Ⴋg߸ Xշk)D_^ʿ4I/^jpz~QT3P\/oRCeRclBZtjE4::V#76>ޏ<durˤo8C{ejQxV%ˇ(knN~ +3tdM"6 ++^h,ҥ;qư +C4ۣG.؊s,;cU?xw<e3N3F|ʿz!u%4`]{tRo9l6pDMN1br'&Cc9"2rciHS#7qE
mH45Ȝ_=?=Ʒ1~u9vQX
'VR}bA}<:8e[U<mtk$JUl_d6}h3Y&ڋe*mJ-@+tyrUVVÛ7MYWiҞ7_,+X.Oo$pk45G.>``&yp68RHpV=s/z:&k'${1jXŝn"e)>X*r}@b71t1h8QK{2TKqmImI +IhiFY:4.:(o
SΟdfPcڬAhKì@)Ф?-FDN^̫S[ +t%-!CjM +kAn \:BA@QB
bA[f
hOݿn +JtIPq
hfO s9D9ר%q]Vގ9q"NLJK#}` +U[!,7]JV 4zM$1Pd撶dhw)@j7#bY8GiG7%)'3ygz=»Bx)+ں\j-u~o|+lJTɴ4>D\QN#嵒p&Xň#44!.I$VF拼L6<uW:h͠d-WuNy +^ъ35Ahx>Xcfpl$unq^Xg*ǚ۵]*?/uE~!ʘ3̹x@F.Kی}^QjsW%P'Ďzzz?s]x$5N^!uHR1#pa>RgT^3br,[m +BBJVj +Q?BG@,p" &vSTMe WbapA]SZ?u(O_ϩO}^jSD,狃 +5pbӮn %3%?D)^"`=n\<xX'gdXiik?u譶-ث6]bf7sѻ9MAD"S$w}4>:<".ѣ(mΊg)mӽziHDVJUMTbjdQe4ݷVT`}oL?xٴC푫קGZ
Y7 +PII]1=\R.j
˲HMF`.bo\ez? ~<-GoHލ0nW|CۦDd:<ڮafvӤ7y_pwalT*2{IBB:P6N[71'fûᅥeW +bmRk3r2ǪIA׳>wէpP_<W/1aY\c碬b'/}jBĈ!jh ǐT
x%6Ƹ2rTl! +Èomѿn+ۭK695ƾxy! ~nA |qrp4~5J**c~v3d!oqѕ
sJw%.z]=HcftE<U7mZ#QDrDuq#6 +*gszkϪq&1xt]:)vöB_,f.N0dURD⫭fT6Z\qҏH)u2/rM2cҏ'{pFTwG<0V>Kvw{}13 +LEYs`aUٝ_JuZFܻ +bqf! /Nd 4إzlrd.K|ǒ1# *z{I`ȎQAxE6by~+B5v
;ԬK0H)t
+%IkIԑPomy[y:-ƾtm^`[| +mX>b +F$u0'AK_g]Vۺrg>sr9 '#yp4{ܶ<m3q[VI$<Qk#Rm+|x~xEnU/ڱ-j
t ەlz/m4e +web:*%R",7dlqma02)Uۢ@.}t,JG9f.tg- + +9I צLH. w8T H~Ƈz ,|IL,QGvr?]e,{9ޕ#0)v4`wmz}H:J;na%=}"v)*ƵscpƜM3:v~̙\GD{I2axD9-pæ''d0k]UtO$O/*vpwrt٦Jw1::|j蹔'IhFb&BVyw{clAJ5ƶhzrьfu`%v e8.~9-mm^bkg_ҹ&nxwaJFlK!?LLt)؋'0XΧuyzZ1I*QlB5bjKn:d|ojpI,oFo(<ٗvV2CUCT=*Lt粷F X.W{&kV+gHǮ|Hh!3
)/%i_0'_ǍopQi\0͡pӷ|C)mWg<RBZ}]ӵH+5hgC[]V43fc7pm>h?N!fBr;yON! +T=-$h/~K-'-5!JR)1y{Gi1O+ZgSUcO DH +Mbcw|G?l
ţ>
dD6#>0߱7HP1SU̮xHB4~-|eڡݤg]hMyVTnW$7݀K^z~"vGqzG<Ә}GQ'$u"9M +ؖrx[jsd;O=N"Єpq_pyCϟD3#0?=}NʲbcЧWdH.Ӓ$E=ޔfsLR^㶫Xvl!xٞBxW0L. uuq+fw4=Б!/Z?u* +endstream +endobj +1190 0 obj << +/Type /FontDescriptor +/FontName /ACQBRV+CMSS8 +/Flags 4 +/FontBBox [-65 -250 1062 761] +/Ascent 694 +/CapHeight 694 +/Descent -194 +/ItalicAngle 0 +/StemV 87 +/XHeight 444 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/b/c/d/e/f/fi/g/h/hyphen/i/j/k/l/m/n/o/p/q/quoteright/r/s/t/u/v/w/x/y/z) +/FontFile 1189 0 R +>> endobj +1191 0 obj << +/Length1 1642 +/Length2 7860 +/Length3 0 +/Length 8900 +/Filter /FlateDecode +>> +stream +xڍT5Lww)?!DS)e```F.iEZJNnA|GZf's.;<tp IZ0;!Lnsv#lJ`WTx +$!%$ Itp(% +#\|; +> ԆBaGp@R +LF%% +YY+ +
EPQbGWjAT1Aq@_%_F1{+|T¿_7!@Bm_T3z,,5FětrLhf8)XBKzSuB'|y/<[2SԲ]є;V_w_XnCփ+^"42L|8q"*QGˆ`䟑0g5`D-R8
Ǟ+G_zŦue~H9zV.^JIO%7E惏.h +bgE"rz{pFv,O+H
-i +_б|Py?S<VxhT8VQ5voO.eM,tbTt7M+:k5hķʉeYlݮ +) ,Y5 +VЄiUU
4<*OfL74he2Qc`iG-T8X{K>plo]9⭨UG[-Z`Jp&|ޖ2B+C,B xITri6 %9B,xDWrYnμiCP&d.vXuaoD:$&O;<*DifUvw^e~\CF$zɭwmZߪ
QlRLpOסfceZyVZݒ*ƨstj(S_,.Znx҉9n/Eʯ<O<oȢ4\i> _C@-;?wp
ޮ潂
6fո`a@A0V)]`Ugwa rݙo?txHi jﺔNӝuW%bs}ܲ\%a,)jāDlP
H N.)*mq<X84J,%' +ڠo8(>wRv%WK+lkf97(mJv^[g֫q~]b~ϟJd^BXTAZ.L$o2-7uL(wӐ'YhAv0ps|mc]RIE6*躮Brݫ%㴷yOӬ+ǒ]8?oF|]iFX}!i +6"Ib渗"e8Dwy;Sa]# PRF2yt]02еF3tNCՁ0{l$B]?h45pS-3@U
Z̝~M<c2ѭ/7bUst-TQ^x-)TXqLt?FNhoUО_;W#7ek-Yg-ivGq&2pS*Dg7I#Jb#JmJ>`b.\ER
YcC0nv$LrG:i#;cUaWlQVyR@l}bƎF2g>[xfۍؙ74ߥ>,ϥ/_\/Ùsi?}J/Enr1.C}x|~.Ng9G=XnA\Ͼ!qUArxCUR>wj[\êϴː>4#
} 2\+QKK[BZ5VLExr +W9oirP69J?|N$0E`S*^,K.'FN'#Y>O[*Svn%p$WrOx\ަs#*l2:;1NF6v^:\|{dbk/ډFp28V|,;Y"<!˩<ZENtfyI=|B,Dɏ_^]76d;~@JnV1MohES}?"]\}4sw/x7k}_|]^~_qdh5$d¥-"<|a|ߴ:JetK✌J1{zG5wDa6^9}Mֈ(֎cjK`IP;UYOgGq2>n^ޫit<=<p/-2!Isb=Ye-{ξΑ#S]oLxYI
QJ3owSrn.<8zn`C$"x&«$c{4ej͆}CV]~4+i0DVVz&.}o*'#dM,[l2N!c=%R(0
AfF3ћ$D2]̖jWϓ@-hÕ
ŵ8BE%E*5r}+.v4
kGxJ01ZvrWIq}e!3XTxyz-y?EcSV(nڻcWӫ7Ba11GFg#}/;NTKϤ5ĉ79Se7d]mw/Wy<2 +uD(,
~,9]<č|.}4! +t,p +zw[HFI+cŠ'!]t~;x0sI[..pv\lBdUBQ{.SBA4fj#֘<[YVhN/e@]L+&rbLet[o&$Ɩ3L
3t]r^Z̐_W'3O>1)GSp*L#,Tgl,l.zSWq$CoO57y[(<L]-[<D!xMT9V0E/x1+0DPBabUm/ڊAaBcClÇ־gr3Y?r[&
Oυ7yEᦜg1>FۍrUY`nG)/R= +mgյ]F +4ޘWz[EuCSBQGq8s=SVˮ%eqZ +]oW5#2gUGϿW-v*䑣jݛزsLV/IGb}@3ljdɾrMoYy葞?tVG/gp +͜nhV +Hal';'W~=DZ_pP4nВV4j{:}ZYWG2硂*N.?ڒ:|AykWITt2w KuH0!_SBԴ8JaD#|(z=@tӤ-~۬>sLςݱjRG6}&(Jfsz
z\Ηr.sLyl猀qr=`JtY9|Z%;)ҙg tԊ#ƞ.O$0(<C\׃oG2e(R4{e
7 ߲ͽtqʝP@1ѾW<6|J_}!D5gVYi:12]M5o6>e<"^1d{*&=K2}\x>_oȦ%ug<kQw=,%F#M%ѳ$[umF:foz05,[&gvo^}f;l̓bV#e/7f;xݖtvHj6\uJjIvGEF7N}wim{ +˟b{9q;v1U!*<;5r"9ױƻ]7֭k[2E}jmOT4<դ/s?6:>b&S!
k傧./*e
.Du^|$ +Xj^vI:
z@<u~iXJuA&s"r/9Ulb
Ti2Y!!&,R_.FBty|.4,
Lj/%|O4~ ;'M!>uc%}~w4*1 +bbaVpr瑼gG(>蒠m +.u2u^QOP0Ŏ9͗Yq=vZ{Xds?fҍKtH~+P4M[WW|7R:??n{*yP*S${zBnj{A`՛G:)Ϙs M?#ah°|q{ITy3ކhkC{B
^~HL宧4V_W,i1DŽY>Z}wBh:&-DWb&\Eݍra1IũVi[,olrWV<.n +ALBVkdc}Hx$AX=K!91;..:ܑܿ.?[毋Y*YUWDѥ_eVlEEן8&%m8dbxMUrz%2#'LdӤbrTqpPĥkʽₚ<P0ۏ(u +endstream +endobj +1192 0 obj << +/Type /FontDescriptor +/FontName /WJBQOD+CMSS9 +/Flags 4 +/FontBBox [-63 -250 1027 760] +/Ascent 694 +/CapHeight 694 +/Descent -194 +/ItalicAngle 0 +/StemV 83 +/XHeight 444 +/CharSet (/a/b/c/d/e/ff/h/hyphen/i/l/m/n/o/r/t/u/w/x) +/FontFile 1191 0 R +>> endobj +1193 0 obj << +/Length1 1551 +/Length2 7213 +/Length3 0 +/Length 8228 +/Filter /FlateDecode +>> +stream +xڍX6NH
SFInFl0FwH(H7H#Ҽozk}sss>6VF-]Y5D C$꺺* $ +A +iqFU[9u`(H >>OOO^+g7^8N Eu ni3x@={]- +NP0憊q@@Tyn;ݟѿAa` +B @M'H/$7 +fhG[yXAQk*jP-٠uAA~5+
ja6pgg>(Fm7_{|PFl]aPWw$ +@ 1T*eFuwڢCm!DC}/m`$bɎ2Cl( ^@SJ@ЯOf(aN2"_=핓{}yE< ?HT(*,o[._U`p]N<o
8J ?#$we.I7O`u;5 pԘjc!6Pw P"C_#M т"h鯳@p Zp7诫5|`G:.j[TBaa
@ +E|?}[}| /05K9՟}Yx#Hg ١8l1V4ίdФ!z57q[蔇AiÎ:~}4}qj\d9z"D]4q3].+[ydb%Qg3P7YAXw +Se/9Dž.<JHgR{xH,#^5CN$Q캯 Sf0*c;ZѶMǻIWE
߹cIx
jkA-~GꡅƬF:in@58c0*zlVOW;&_ki
E ?@?ԃU'8o尉r&l41E>~[;f8r%Ɯjĭ0Uf~U:æ%3,"">
^tOt%`/f,*( +5X __"8ZW1poOZgna;JIrz!%u։θfw
;wa{JO
8ÙwGA,IYdU+kT;w5NM-
-t)2hiQ˳1 +Z.iVzYDqld=ZV/d_dn=>`UN\61`wZs}qZtk[ VhX)hh?O5F^Vo9ˇl&zbmߐQ +|NiOB0Lnxg6ąV
SwnT5`tb |/ϦG] +UJo=b9eLJ &UTOAiuў^ɥl+ +/SD\K6.ץg?\_ .z9MO//My)/Ζ +)aeLC$s6IUqߍŌ])k +|{ҕ2"CUFf͞ +4hdDhEy??"B.%t"|ǩ AF{%} vQAV{)
mI?&g}T~g(ܒSKv7Pݳ0M'U٩jFS +_ˣYGutt@T+{,GL*pU +,#~A]1aܙ\%_Etk78=Q +iS`sE '{ qJMA5??"%wQT~ #ww்F^3kvGXLyhb.KZzc| n$Gvo +cyP}3!yU.a_Q?b<{K1w[ +2x3^43U'a=7k)ߢbGZ.{hų'1 Ut}$ol:LX>?*q
'Ŧo +N`ef:*Z]h>2_?|-RJz9?(YNw*%) m +>r(tZ>Ż:2*B-?j?Uܓ.*K
9,5Rf|r)WNO=k
r-+ͻ@WmlT 9v\9n>ll2(^®&M+AÍuݵKXdyTbC
4 HMW>)Vp@*Vb<ԫP}b=o'-9ݧi6/(pŦ.~8>aW҃*xJG_y@Nn6 ++,we(wVG=naLF2Q)w +Prsux}/7;t<|kVspxƪ)#/MyGBOӑ1H;!ZOn _LDHGW`NAL_Fܚp6ᾓFl/LZﭼ 돣g-G+N)M|mH8-tYsشBa+ܜ Vk]V*̜`- @4RyJ"#I v5Ίs.pf0JT]_]0*T,i-o/y?Zdwy5g%GbؐؒzȊxg'(MXX[٪$Mv@6i27|1p`C
Hgs
'*8w
-U7(=gDoc2*Q߱_vIKГVm--K.X<NNy:R+M.xBq(Z5d;&V)c<xs~b_ZYɑ)pN#fГsB?73j>I?X<h>v\o6^Lҕjѭ^SN5O$mZ]N͎ؔBq~p82 +ډ"J З8-o M^i}K{at}'WtrF>,]#GS/ąجguN:I<MDoBBzompvk`K+:"Jnqio0;kr&Ӥ'*^<}mxRcpEFN'QMAi/n1}(m +>sW~7w0\ +
X
+:Q
u)-q\+9(;IIƾ&H]x#SMC@)_[ +479^ܞ=L%ZD>cAˌy_fVV~]):M1cz{M|ygZ7uhtw5'DM.$}V{!- mhPI]!?臛h$g|<Zp.OD1^[p+ɫK/yV-HD'@VM9l*ncoG"CLIV?C^,՟u\V4ݦ-?%.]%Kv:8?lm;EMu|r)k\hWW}><;ƾDco=O>:܁^9>;p|#f#\/z#~$~>wuӃ@OC{i*wV<C$Zǡmݹف;w˜G{:O>
f_ۛSrB:^3|TP.pмe.܀rb̻NN:g0
t]r<{BNOTB; +\0C_~k{cǵM'[:YMnLYmMM{Kk8vҨT~ +6%7q6Q[,My-кqD@yO,a9ZXe?S0\Km!C۞`H뚱4u_9ӈՃty{{^~-сz pZϚzL$OSχ]l^$ayRcp¡eOYHhA'KV?\?L +p(,^oHaoei\nFbfn{['%ႏg>ҵjx#uXlX$CI`OUtI[-v}$8lZFB[C@}ԑAͽEd +endstream +endobj +1194 0 obj << +/Type /FontDescriptor +/FontName /IGIERE+CMSSI10 +/Flags 4 +/FontBBox [-97 -250 1077 759] +/Ascent 694 +/CapHeight 694 +/Descent -194 +/ItalicAngle -12 +/StemV 80 +/XHeight 444 +/CharSet (/a/b/c/e/f/l/n/o/p/s/t) +/FontFile 1193 0 R +>> endobj +1195 0 obj << +/Length1 1465 +/Length2 6343 +/Length3 0 +/Length 7331 +/Filter /FlateDecode +>> +stream +xڍxT}?"@:Ht7c0""
! !%% +JI#yy߳s>Wvɦo$ACՐPcd! +S' Kat@{< +SB +ԇ{(!F_n0mVE@PE+?黯 O0WO7a[EāR" +;l2\Gl.Ԧ.PzFΖƄ~Ăc=l<*Xd + ,\#U\orŎzk%j"4Fhs4_ϔ+RJ\#q$
'y69*{<ـY>f6&LBߒ$PΡY:8Ҳufec |{("j*7>mT +)捵72toZH+͐RW<W-1Z "z/xix[=l=E m,t5w`ͻ [JsJ?Mm?wx#iAbC%<:{:p(K@sƫ/ܩ>MpH۔?DX
;N[=zFOXvj=pQ鮤$^[ %2
T!z4":rrh&ڀk-ڵxCY/zfaA?9NIڽ^b? +IUDv?ݴ6sgR iŏRvBQd?;Zdz}%n+zO$B3@=IrqL6ajq^fkmkڇ؆N"YJk&#$րҒ0f/Yd(}톀s<3o9}&аuk[XYVtƭ3/~l5i1=TS-eRhW +RsH` +b4l5^1b'(:~ªk6^nzhD2e}8g#K^N&e:
n|sa^tK"d +źI6bƟ9E +
@JS+&Ӝɳ +QP1DC9
.OEhx߹Yū=[J
i.
K+{<f'lD8Ɂ؊W_\ڱbɶ\C3oTe0FSVK(9m })Mื/qtvkXhw8ЬE}m/Mĥ_H D +^Ŧ?ڬh5=ZyP^
r`2[ȷݓݟH7>O}CߴveأhwɾUܚc-(FVF5YeXhQHi}݉wՏ_ZauXЊR.,ow"0!@UnJh{K ξYO{L]?2:*3$$,j˺!8Jy9P-?#·.;11\kuF\&tS +Eof + +ʪPu?}hIGXiw:L_N?{ߋʒ:*cG$P'Zs8PdY⤃ڦf@mar&`Q0g-[JMT +OH- +\yəqM
+iIͮ٧Mշ.ruMĻ{IJ!))*8F6EE_(jXG\6}H[D41<ό*糉cL+`_rzte8uqzg?LZ|/L`)76.2w_7Ku4eȑbrnDi/^G<wc_Ƿkh̥WstCza]Dɔ@)WM.}ȰI!AcĈ9spq᰾[K{vh)^Kޮkp<rC,,6ܠ sf4j9ɍfd.{?g)To \dv[$G'hwsq^@3ƺW2L8]Y|_D^a#B:l*UWz<9P]9BOsb~j;YjƏ!9;10/X%c,,'N:s/cvI2jސ['CU#yw8łN{}0͍g,"Y%MttڈHkϕW>b5k[=iQmuyOsk* +M}5goJRxRa&,FGה< p_efi6?+NK7>/XPgInZkWo4b *P+xl(vL;J̩&38xV@kAߩnUưNT21͛gRb/o|+irw\~0OB.ayŚC))Hx쵺}d柣3,&?B5p<50I7̩W5dٌ +x 8,2]h௦(yY]E2|bwp_2q~5>rQXGuM1S?<XCRXiǙ] 9(Be[[`ч-$2F +>9ihE7Խ|3O;W2xgTwY#q+{*6ɨbsS +,O9 YRƓks;-x)_Vưi-EO|S +X:#.s</ +oR !K;zư?gs{?a[l|Jfy +=lK:=d>ov oGz+9N&u\]eW³dZ34|gىv(w!~zU Fd v3X^|UN/I +M[CYs3R}ieNH``#b"_Z{)DP0&lrVu@`j*:M!C~,f4YjNm`Vwu*.ߏ6!pˉ38ʂrU]IƳ7;aTјUkJQoq[`J*zY^֘u# +FG䃮oI@e97Ƕgˋhj5Î{L z̕J1W΅Ͱ!tF +7gw#J<oI
wX*rp5znL~-ǮۘoT˔3~FpZ{ɕ@ +4T>D"HOeyl&>{ +5>$jL~TzVmEIZm2~ ɪ4^u3.$S4-,&q~$8IL%,|g =N.ʎ/"-aC~,ff +4h)ۊÉ/
8#ӌ3]5K\u}v:^2pٸώf%G5g\N!kVMOBQbwicWd'Mhڋx2?Z]%u~]I8mMV?5>+K|E.7Dqf^Q +tf:鮝k<P"svČ:Yv"nDDAv$Q3
+endstream +endobj +1196 0 obj << +/Type /FontDescriptor +/FontName /UJLATU+CMSY10 +/Flags 4 +/FontBBox [-29 -960 1116 775] +/Ascent 750 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 40 +/XHeight 431 +/CharSet (/angbracketleft/angbracketright/asteriskmath) +/FontFile 1195 0 R +>> endobj +1197 0 obj << +/Length1 1387 +/Length2 6157 +/Length3 0 +/Length 7097 +/Filter /FlateDecode +>> +stream +xڍvTk-HoRHI{U! HҤt +& M@zޕ" ]z=w{WJgf̳gf+:<PL @xb +Ĭp=o;1G"BF_k&Ps +`W8PC"`(bVy3-DEEd`pma!`{>=Cvsss;x6R +ۃ(CAh/ +n#߯4mVD@0E~ +pg|k@!>YP_4.|LUD
+D `N +Sգ&
iWH3lŋTDkk47`{3|9c3Wp*Όs=ʨc^Ei}cq ݰ8 ~I4ۇCBjWL`2R͜s*"ΗjdBt=Y*]}5F_hވU߷iזph[&(7ރ`Ovu>"]}GׅL"Ħc&PV%\ EaPI*O_,ׯ[tA%G +Oߎ&dT%qKJ+Rz%ϔ
"ϮXvEuca\f
xHaB '+><L7<yAoStNw-qLKnYگ!heYyϧ$(UHsoHګNZ5|g"jo}IB@[E&hR(Ynw&,%U"pZ4Ikj]G+T:x3^wN6qAk9æ>r +Ϊa!&Ur(+EҾK{ޖc|O1u:葡7mɚ +~+8Rrd8Բa
܅d$Oǝ%X낰p sjeFj9kgȑyPMy527l[UOn_S[YoZO2g{˶I~_O@RVp@;aNOQ[-~ۃ[fϋI)r@ܰs،Hl#SFV,9jH?#mSDv%P8阌w1s|hRy<GQ@f[yD #ldzQ~7n˗2q+ؖzOJc?OVeՓ27rrh$-*^ty,F5%,.{NC+"^+z6|'ariy+g]H N}G[xB*CxJfֳ),Q2"1,46~2/|`v%8K63җ7ȏR"S?XݜЪ.ƢcS(aNh#Vc 81UOA44nʫ"ƴ=_q?g +_Y0|;}^\X!eRXz{TǛx \g6ACKeHӪO@vTcR<ᯅ$QŁ&-1V1aKژ8Ųuv![dA
s~G]HT5:P +UYWnLNF=̜urP~ rQ@pCUXrfU+%$mjFeC[-CU5n/=1KUupG-7Gͳ[
O-J +QrNK'}&&[ǚ1RnCOphfuqJ_(ɰ7&L}r;H' <"o]M{gїHyQ"AmS->7ӽ +;p +VMnwkJY㝌78o<Z ^'|?p +/س[YhV[/6BU +6^Yk<w}Y' +72
?Vm!qي̣b/*=TJA*K9FbVKw!,ёvTvXC&xCn&rB.K*FӍ?ٽ&nJC'|u"!8ڻ&xNS;G6{>в+hHzt|A|_!g㺅g=~UqC-1k9QbMȟb6?zoiڊbp;Z^,~"}KA: +ӱO[f=+bhc 8v\*D +wRտK?vpMFTq!ἕ'k°65Jl]C;X3dk'X{ z:ŧK~~mAS1me_ QVqГM{.2"&X윸y7+gz7oS@i"2UZ,ܟ)a?u|fmNV-nvL?w:f;C"5rQ-H!YBS3/4tU͙Xѧ9,{#
!&]\cdNc<qO\KTTV7zL<nE@iy
X(:zԩjńڗo!Vc!#{".qjV2BlbtU+v@@z* ǻ(z*BwG IwlI'0R5svtU.b-nG;R^bN&Q9ҀUflhU.쑔>غTW{ 2";9Hϩ<]r>)hi*wZ[g.u%KbഁyZH0~qߔɀaTl,ƿ2u0zaϨʠ?Li<VWav g^i/l1yᡘ
*avs}zRNQ%Iw7߲j,P#Qa,waL| +ja&]ÚQ/P_xK7ZW%ܓ,:.KP[V_?%9/[ߊ( Iī]Ia)'lIh?u_JqzC|0q?Ƭ"Ahoye#$}MUU"+|nFiTƃG5y/~5IOf܋]ܑvvbuaœ ϮU$DGQ"1䈑$u]✑5g{`C.Yf[pTmѡ=3fBʔȨYШ<ޠbIP*H%,yGVovq*@);`*D4[Afl5Sߍ]Ēo.VAf)DnJD盅U`?b$?تâ݁YC9\M!a6ÀOYqqm~.JfW҆ "yXJ㺼iWk1SsDEO^_ϟ{{(øڧ6=}S"{Ωs +o ډrgO_ʷ-
2;rPKSKAEC8ϽlE =ݽAMN#)*\ +endstream +endobj +1198 0 obj << +/Type /FontDescriptor +/FontName /KVDNPZ+EUFM10 +/Flags 4 +/FontBBox [-28 -257 1055 741] +/Ascent 691 +/CapHeight 691 +/Descent -189 +/ItalicAngle 0 +/StemV 76 +/XHeight 475 +/CharSet (/equal) +/FontFile 1197 0 R +>> endobj +1199 0 obj << +/Length1 1387 +/Length2 6088 +/Length3 0 +/Length 7030 +/Filter /FlateDecode +>> +stream +xڍvTk-"Ҥ(EA@tBҥޥH$f@ҤW){+E:Ң RE:"s|uZywMP@QH +bd + sr>@`a9ah_%4)C@m +qC@ڂ +<tv~/8xQ +oǿO +H[0kc9"0=5 +Kqb +LKğZ_ua>HTG]CF&{X<%P^Txwn
Eݲ^-RwO̊: sp- ڲNbƱ3NHp}n4tJ?Tl +e<\OߦtNj,/e{HQ!R;P*0qecr9Qݎ +]@qJ6A2():ͭi(yW/T&VX2|>.wY$7ý)ɉn(F|+LgS챷l oXA\nRJ|Ti.{ +Sۦ8F:+sBu g?g79f)I.^8Sܜu`o7iϸHlK|x^e&cNH-j)<դ?{o
%ʜexQzX+K +SϚť}٩L45e>pPPG$0;oj\ +a}>U#-::)F~ut; ԵsB
&=)eioJCwy:YQCɢ)w<^K0t-M"#bD98`ѽPƌEjV;VG?pˌGn rsNZ/.T_mH䇺Xb5X3C12WK+5Z:#iKKc̃yI2 +sF"i{۶:UÜK. +Ԫ;1їs\+NyO}L[Ko1T*/tYE=$q6mÃ|nTݝor,]#':4'j|РaXʪIja>@s+y3"rQlۯ;Dy +.=$m +bd%U^ +{CM<5/+TҸB|3:k ! +Pt:;w qvY`@|2MU.#Y&4~Y0HYPؖee^! Aipt "bg;we>o2Y<i Zo4_κ$?]_^y@v1WI` σn':A0tCQ3vU&PmnZ +u0m9NmsMLPO~yoL+m6&j7kf(j8MPj.wZR({Y#}ECGiNȒUӞeƛDz|,1=LV4
wURyU-,UGͬ:uPEusT| +;ggk_7-32tq3tǗ\r-^dYI.9
uw}2n|Ӵ
ܢ2"_iQLgCS}| +?Loz[+,v3J"ndt-"Eru6'&Aż[i#y"|4z+.g$͵N90ʃ'f=U}nECdp=kEF[?v-;ةY]c/').Nr>]]As7+?Z՟0M|"m,?V] +={ȼ}rGķ'Y}˖Nqْ1B#\ 5Fw?BfIծ75hJE^#_b+i9}koYĪzt~a·3f؝6NO5*>q$Bz:>0f<,rtQS]pLtr}o1*|'k2¿G4Ce_06 5^@o=^I(xM=\\*{mx7Pjy5̣.}Mg-z YwLMM"Toϖm>oFrFgfi7^lrvqЭƆVsk5~tEBq٬VnZp/w6IW Q{] +:ϽR
w*5R+zFj|Pহպ㭪GMc<|n#$>_*4 W/r rBGZH[}C>T${ƛ_ Y +-|2NѬjyZАwǵ:Ma@]=UD%hnv-{ފsy6cBL'-tG"ѐ;!]9MnsGf|kBpSda)/voR5=$<>&Cwhh#`hOOQjF-e~&.|iﷂ ҪDkW,(eә*o$cт{î0K/qrp?G :G=|U5:jr1~!m%{/ރ'^4.~!v|8O+kdnnއQ4b'%73IkWOm+!k.!DV3EЄV|{媏!Wk$fGmG7C1 +kcUE}gʠԗC~$THJj]?=Զ~*(:kmm$AjW[$YA
XgĂU2LK/Z$"Һ?3e2$q4L)lӳkGh; +i~BMT(P>P"[w}BLu?H0oWp9ݻ|<u~sIB y
eCYיaPƎX&FI +endstream +endobj +1200 0 obj << +/Type /FontDescriptor +/FontName /XCOHXD+EURB10 +/Flags 4 +/FontBBox [-30 -247 1178 723] +/Ascent 702 +/CapHeight 702 +/Descent -189 +/ItalicAngle 0 +/StemV 114 +/XHeight 486 +/CharSet (/epsilon) +/FontFile 1199 0 R +>> endobj +1201 0 obj << +/Length1 1436 +/Length2 6669 +/Length3 0 +/Length 7641 +/Filter /FlateDecode +>> +stream +xڍTk6H41 3twK +B@mA̡rE#1P XJJ;PF@!H.w +#S0U?Fee_@D( ,zMX8(!;?ZOuQiJn3
P|C 1]+[o;_pt`ku0Z0PB:3>:3@`_ 7@y ~]4@0?]:__&g^TCBQ_;',&_b5Ā}~s($Da]n +M$EDBp].[wM!_IVb@$[W-PO4z?пߗL2aNua5J +,9`M`╞Ɖ`e_ƼO@42ĉE$(>]J|;??כ._xZ266wir=8ŎURDwWP
)/;HwO,`
w9ɡap.)ދ%Sl:D3M{u|zLys5|E)I/(34<Mozo}3QyƁzxAx +? +e-0ew"PKcyۙ}z#1!@#4fr'1|=w +-IqMtf ;h`0,jmŏv*쯂lϘCdZ/x-cWĈOߢ.d+rt?cT_V헗hZ.vhImTC=^?I}(<[~IB{y}-ք5{{L<ړZ~-{֊ Ab?yf/ҵX+z;4đsѲV!/L_y4{|ؿڄ|ׄ,8M-T26z WIh|8 +#(HxM^8,n=k,u1͞ +䆒L"LA?eI`-\ޢ3 +_.y2karet43#t~>"QhD1XX-hKBC61Y2i +,Uy+tu/7\O\4b{ +\} !1yLQש8 r^-أ%ȗ!:bцTkBV18RB<.4zFHΫU; ~rhSS'W∘,<OoKöD=ubP3S2J[(Oaa1oɆn8&v1@y_Qֳrba{6jim4庰ZOqt2~J@ŧǝ/h9pH6eSxZiq@BmID1?Xn/~~ +g5P8!ELd"6HDH)1sjЌ.R9#yƶE]sgw@/'pBCkxC
>TG1B/.订bF6MƉ}uYBͳ.$@#^c!OwÂj# +ŜMH|V!W{^I4lkltVp[oR6y͗тMnI=z3F +Hמ:QJ|&-@Kp}{ +T$v hDL1}_jހ(7X@&^6|J-_ZnS`z;\0GoJAb$'!=M?b@&h\<OWc~MV̴tWyĻh _fmds{ xWO?:;H""VCon3 W54:pczKL +F;`'"zI nzNAem7[8\9Q>h~L%Ket-hi2{v}}¥;|./㍟(ӱl:)N?ru*UOqcСnM!:ulScdy0kpgǧ(ď뽮nDSOYk{]y9m=qxֽBsvѻ@oV=f2zO<xiNe_+'sn4 +K)ޝ᩠|t색eʹ~^lU6|AxCߞ5V@'SG$XLB¾qf_4nb\y +*2=)wrY<m=ԟI cr4 +rUkǷ~8z:7eن'Aj9qTEʓ7jT̍\m~Vr;TyY ;".$~<A +z߀MmsQcNQ +,p\Ƹt> @lKhg͘ۍ`ټM&uG+=+:UݥCnHIFc~*7"|ی'L^زMr8Cm7n}L9upROS6Vی&wxMNh&V +tIc3Y>Wm}R'R;J&H^0<f +`ZHOW/bbwi"BD_N(.&|Pjee\jIʼn`N'Up]nA[7)Ķ{QO7#k@r9QR*͂~
ϙz.o}O^S2g,hLnYx.wg#"{SهY|tb|~kgXZP6C +JxrXM5`C-WsD6cH+WAy(p㖤?stL!'`%ת*rҩ/
CQuYZKW:ڹj3;_vri~zG$qQ8֩Z%"ҝޟŲm\mGLQ-ٮ!HJw^2Uěʖ@m+l]ЁM!Le<7T"@cgHBFI?FR &vM,R>ө,T+όNGpSR^l|FfnޮuQqÒ*'Q@=_y4BR+ۋT/9BI +NK u +endstream +endobj +1202 0 obj << +/Type /FontDescriptor +/FontName /NCGUEH+EURM10 +/Flags 4 +/FontBBox [-32 -243 1060 720] +/Ascent 691 +/CapHeight 691 +/Descent -189 +/ItalicAngle 0 +/StemV 78 +/XHeight 459 +/CharSet (/epsilon/less/s/x) +/FontFile 1201 0 R +>> endobj +1203 0 obj << +/Length1 1374 +/Length2 6684 +/Length3 0 +/Length 7614 +/Filter /FlateDecode +>> +stream +xڍtTk6!]9t 48013CtJKHJHw"ҍ"?z<}kyp!kt@:"@ +FT_@HʊH +SB{ +Js3fU8DQDS!67ssp-E"lAܘc@1i +9O4f1vNRyB!0_mެĿcU6ȯHF +AahpQ6TG +0K[|Q<eh
1ņJ-Nin_͊)Jq>1HaM;q7ok]gp_6Z"/NEW9B4iJ۸=a'?U|%\~PSF@]T[Ys8M Rqi$"k5aH#mBS'ge^OVW?e\=#bt + +ZKT
EF.`>&d]'}>ٴҥ1i +~{Q4/ڍ߁[(<6*[`;N
ć~Ͳų$ ](ٳA9k\^;]}!Ig]sym(P-Mљz峬{a p/1h,;c + +Gj2AMVJ9+)KLxyR/U8LyR.@CSQjv.ս?4k??XHk!C1:\=EhY@%.=Y[6/S Kax+$Ro
*{f28'1Cb+L_>MVMLyۓ"1uf7 +P?]@~XA``PUh:y˝(ሤ=ɢ÷RVf]HVC[boZif6hLe4]nޫ]gz9%v"Cl1*fg1\l~HCL9.*yU?y$Gf]
t֫+3|-aBCM=$9ك-O[}̃P<se\ΤΎ'֩/i-V k#9%sw_Uy"q?^\ +!)se>4$S̥r:eVğMXibhl4#U'<h~ZH0SgP_Y_w Ri1=ObI5sTQIюrA}c@8|ɞP!eGCT"yyh>m_h QH\FN͘`xYcNd
,V;1n!px1_jpe#cu7sN|yr6w'
-˟e!ʀ@yڪws '䁌de\U2.?kN{WOECew&buD>А|S܃bD),y0qPIΌA TcoӛcY/&ܱ'=z&WYW,"EOZ +Ӟ8VRhLǚތ?;tri9SoJ`=BQǤ3Lh0v:~իP#}mZ|H;{5j?\XLyTf"s;zurv#w|Hۈ|Dз@ʏEnTɏ:J#%*Y|5nU`pί2h +˪Pғ.m;OM,@TQSc`>)Ց bb,:WjDt hC}BC{hCZsMErIۛ:9]+Th0ep!-=hX2B@vWOHRPTwLJ*T>jV7X4FBf+T8DuufBԧ<Na].u{UbQ%!/ރ$>^O:ݍ,܇{0p=:eKX3?Oؕgc.̺uBo1}&ea+HڈrKôC_#3}AON$vx9Ӑʻ"ݥf*+UγvpGW4L78:;,/=p\Ug'#1v6yTP2=nO@3i!P5fh)&j?[.-)~PRǖisۛRL!Tt[C*ؼJD[o]gNG_S{#%<Yb&0s| ITj2wwN=^b2$
oVbOo},Ddk^OIVZu|~,Χ +dǭ-Zw*
+09@L-4T@,gw?t=XK)lPڻ4aD7z !ni71i-7bF"iSqV#؞7Yw1o(z閖1soUڬ{≶Cox,;aguV.3,y8N~ι>Pt3Ӷ3S&u_W:ɜ$yޟqt++/3Z8q4WhX__6ORj9높8J4%-J2T-#{}UBS9s%4u";r2o+U(S@~-_v 9ű7Ҧo,(t
"wX4h3O-YCŖN?mfH[3"F@56bf%|/3kTߪlP >¾]bHM%8XbBg|74)Bo!m}@LU*Zw;sRE +>(3MX)2{9Yj +ZlT~}3 +p\!= 6TT+~_2w)zF }=yg|pKMGSvv,jzTTzkIfW0aMCsܛLedۏVŕ9eEl}I+9V1%ߞgin^+oZ`M.FR;%U0R.D5"L1EoͤzBM]%./1,s|ŧ-30ж'\<4Hc`%4*cc0{zKu'Ԃ<*I%b +endstream +endobj +1204 0 obj << +/Type /FontDescriptor +/FontName /APUZFZ+MSAM10 +/Flags 4 +/FontBBox [8 -463 1331 1003] +/Ascent 692 +/CapHeight 550 +/Descent 0 +/ItalicAngle 0 +/StemV 40 +/XHeight 431 +/CharSet (/greaterorequalslant/lessorequalslant) +/FontFile 1203 0 R +>> endobj +1205 0 obj << +/Length1 3100 +/Length2 31002 +/Length3 0 +/Length 32697 +/Filter /FlateDecode +>> +stream +x̺UPj6 +w4H4ָk݂w +DGf X@'~6b[[)#kmBv1q̩+x +` v +CwCb_ːd,C9@n.;şqK_utO!.m +`bZlٚnvƿ +.Da22Q9I.Vo@UdExYD7u^zLb&oDHz/?KlJLUL&ENS[#Ͷᘴ:2TT6:3ۃVu9C:au١ +W>WF@:
Y(0t+ϭs)T_sHْgKK}8W-YU(!M>4ɇ5=ĥ竈ex|7(<+ 0R}o_WS'0lnC+xG(K3|W7s$z9A?2ސj,LꭱKSf,
ax͙ZpXZϒB
xPWF.Dg^(Bj]Ɠ@W
>-z]hyDtTzb>7x_I,=%tv.=Ye0b?Ƅ8ݺ8q{ڼ͜wԶym,wkT6 +g5)|ZmN.mqv#/Pao +q/:AA,jO{Lk"֙¸7Un +':mW[o,WfX8F]*-C=z:ʶ(a?`QPw-4'm}x8Ja 7+ia| $1۵ugg^hzfZ/
TkBn@d$_QRwRM4YӚiPOC=o>k0NJF +E!},Dѧۛۆ^X嘒r2pAI$'/8X%~R%v6"Y_˿'!*[h.ɐiy%]S5"YdS4Q7{$R941֟ՇM +-X<z2-w<{c)^nj, K2+MZ><,K]fx|QT̯;XQH]C>Sv~f|c3t7UNj=s`r +5PG;k]R$1:'[Op-֤,!lPїM[IfWe*[_7'MO"3z'u3c~!I_xUIADC+1^!u&IJ6A-"Ɛ-0(=H{=a^{Wf,{#9v +U?lx1Z:Sq2k$iB"7:B͠h|Gh5p:"1}̏Ru+dZOLj{}bAI}9pM?nߢhՆCUI9{S/ d1'fq )ra%%$ʆ}+Jy<6mewD0rta#YWxyLA(χ$I7uHX*+?0nZpqqYEta#)dڛU>L+)hj
[ +0A~voSE +Ϲ-vTKI-Lʔ21Uuj'@+H6o!0ZVGNpXpbrCaz"qgաm +AQ,g(eWC3,JYR </,|y+Bk1YpNV]b-
PkgLE1ju +%B 4
EjKg+d0Q߆ +g>8.Q>zy>>^OmyX&Tm[ 嫬."/NnpʦOZE=ωV
aPcjObDXľȅÍhO
ܴ2ѭFVRg$q!F9 N^ע!hmtߧ ĭU=^Umw CnAI-,6ŗ +Ƞ6$gMsww>2bḇe|,=d /8}ʼnxg-mHϻ5ZL=7'"HKfK89ڝ,Xh*r]'Iq37_7WΛ-Ee\'feжz1va}#$ּ9B]*1F:ewyLgfvbx%)MUC[S@I2:^\kB۪o> B5;Bt|lŇ =UÝmeY>Y֦l}FGw=Km9{078Rk`=orM|j%@3MD!OH cn"yfG=U9Er,)g̍{_q7{(r$F}Oos +r0j)oRSTf']T*\ьǵcq<U)T6}Hw-#a&/&Gcu[c.̗N@~1gSV*ZB3@&ۗA$1zҨm!EZ:溏qzmoXaSȶZHԒu(|y:uړg:Eo*/ +m5<Vd֧iTdIz$)iH&FqKnNLi;m7&:`$Qc~D=tZ#@{ArG71>,[E't_y¾0b9t!?[5 +i?y>Q>Gc"6Ñ_)
gnUثqbcOd2c1%vq\@SΎQ1^Fu$?aUEh1rcuaNu}PջNLP75pB>p(QHV<xlHkn|"$ʖfC֪ +/VI_WDՋΥ^&t&jG2Ȓ7<lgĕ#V|_%ܹƨBoJ\rf:%_u{KqcP+ݙr%P@ 8Uٺ(緎OY?2m^,wò`J]|Qi%Ty +K2~`${b#z90ZMڞ
W0GkvH[DUZ`c +B۰2:c?JGSlyڷCDb6i.CRn완ʋ>"9 +TR|CF՚m47qxҺa5B!*=zܕ:2U#n,nsA O?NR ++ULq5m@c +ObaYO;Nۚ]:_1Ƨj'+z_ʧ9/j};Zq5? +b2sTn`cI|/ցSXD]_3R.WOfzp aAٺ OG K~l:*K_=Hm>۷h4XӭU5 +(h 砷LLOIhjE_4vP6R\CބFQ%~/q.O +l!tin܊"ҰSm\|5rˤg@O6<I#^^ZIGGuY}³FG]Gw^OfKՂ\qognTr7&bbip,>A}OUCi9z[߾1*!ۖqtod<ѭmSqVmίȲ;n'RH[lf8<Xn[z$ +4KЋD%&O +ǽji'N%_#+l(t>8ۀ-GemK~~N|]K揲eh}:KǪHck{Vc!/J +6N&73uIܧˁ"/ +3N|5ōNmoO/
T1~( %pMlQj>21w0עȎD F"zG'!R_EzItfOoDqaB\Kxqs +$@p2a퇺
k%$|465_ifLQ<scwAJkh]W5g<9jٝslm2%?FQ/_&NSq'(JGOI0C7Ž2ƯbNV+8*eWe8K?yp\L2|<ۓuxfaJ7 !]_).TOYp!Nfq{˚ݴ
~ ~10?\ {bo71.~&/zmx@!P|:nB)h"~.YFwC?Tk>ۆQgp#o[u +GIZzC}r?[Q~#&@^ᓂOa'4Ѳf/vәXѥs=LFY&Mc'ūW>!_v&k+`O\20MŲy#!ĚO+k44CĶeS)aA2P${#Q:^G9A,ۍN/"蛋Η:߱5XoNfԷԒUk6A!Q5ztno:E O}BEJEwT8~yx]rlL?*9 M=QuU~tY0G8GXf\&<\lA0 +/월aHshFZ+V8!X -)!ƴ6Ԁcrej~J/RF
RY4jIqYB.{vp+~^XnVB\Bokcfsj<TR1k_^V-I8Xsy~zι[_hѯY67S\͢Tc9
W|āt"HK6ЂeKB/$"q<#HD;23fw15u뼭_i&?+I3{vm%R3@ǖ>8ܗό_6t5?4]N@OE`Oz
+Pܟ,qeub)qwFPT-JSEX<9Цo H7B'7pm8!vH5ms]TYlSv<uJpq +]Vadoi 7Sno㫵GkeEi~|`59k]Ƭܡ1h2Iia(mn=pM_ftoRE`KW>@Xųu}g3reh{n#]O62[DF;oJOVĒuzq狆+CMg&]{KRl(*ldX<GPB?"+/)tToo9gSwInؼ7u?]+lb#Zr1<o +Rri/I+Ug_!G=4_J<ͪNvgUBSSQuع<]kEɅLhбI5Ar* +smYMNNUMEc k@ +}5ܚPhϒzSG-8f|NV^Oa;3ͫ@(3Fp>wfH=,xL-/Kn O,@=r7{>=&ee.@'k)gyT8ʙֵ3^__:͑X?MN X&J˔_RGIsF.mP?TcyE<DHǤ dqBԬx8Dt+Dۼgm< ycӣ( 2+`nK9 +BV#hNޯtOXۜ|}Ό*-tWXUU?[lkc S;,hl(¯\o:LSg96{/tƵ1^`ު̤x(wbޝf㗝us|궕-"P3QW~YULc1XY%cJA=Y6{E?'{?[xÎ;QX;ub̐}k|?Xm
«1r7z>]hܔBJO +clXu7V(@sWӸV9yjf)#w]Wb
Kz춘Ă7,bYP|xe-zk0}58!81Pp1+&FЌ w}JC(.N
ZݲB+#r((-ֈtr[l錄M&C +mjURSv9,+rӗGB)FJgIS ,u90u1!kgQ0҉ MBUxRRJ9rUQғ+Iob0B09hn+*!*Ȏ?=%!r+qFnO*cܜ{`H'Q`o.Z"k _W69)_FNO*"w=>Dո$7M~EJdb-z5M`3E
iN"W,JhCw鼷9J&Q#ٗi(G4^ +y:[//\u`I2!3-`j6-%*7Z}P=zVIpZ( +~yj7CuGh_xY8pBf'`K\Q,;n;c
ѯ_?,v1MTPaL<)߆hA|Dzm~xJф[@-욓8>hVW'ǨwgR|zIc{"r;A٦#iӴ']gU]ӈvU6tg!qv`Fc#IGWlFoEpzzg(6^wUp? +ޠDƂOQX
rRoeܺ9Ӽ/8/ThA*o-8:I +QQY#!&rԙiuOcx +jAGf9jSR1M$l91G_LI&(ʡtkBaj#1tpoBA>Ykvz#;[=Η};#y\W0ljҫ8ed-w4ҽ\mfk +yG(|o>GBυ^Xm"+KUk$WArw*F!wph\&D8:z\y!{]fZO4QG +v}ʮ"}I Oȓd]be]cguV9%kZm.
)F2G',eøbJm'BN\ߔ&Z\#>
V?|C:w<t*$Kx5U{
EWm~c1*Z4en2oܮi0g2oÎ^"^<INt3UtÚ$?e-t~Otb2;Th;},"ޓf|%Xz$~wPoqwR/Έg K<2t?`JN>1{NV5<i2()gkkj[|MQ\$2Jy}`8o<#IlX2{XYw q8ے +T}51:ї9fdu@6KZZuݙ(0dbofܝx;oxz1u1ks8<R1wzE;0}>ĔA#;Q(/u\+7u9h: vT&q,/P'-)|/B +,)/Qcn<AIS]ch/,1o;+ϗcHN|T&_ģ}7: +FaLl&<pKaՠ9x5s(5*J^r<Z2G4FBl$g[T-<c-+ߛtGMQ@LiIDQi:z*sƵI:p1+ +yjShSݨ}ӟ{|3?Oã.[bH-HlY%0) +u}B%e[sT'$nH%J +>0T(
8REWaJ!"Mp;s:5c[g|q/݆ŜJWEZy*H4?f߲ ~+a"g2<b9+Q;Օ*N_ah,S/#xKSKo4۹$Imic +nLT*VB}.@
bZgt +A2^ d)2S:7%esj{#<qch\٤i +yǓߔR +y;=XғHoθ @:`4,7җj$pN YosDTpDT{A%#b漀 ^*=1ӳ WRVN-5V(tKk8=Y$FRa#3ܜ}Jbt2[-jI[?䋔gYku? 0|R&"ΕLEuYɤiK7eG#`9OajfT*DTVa،̇I5:` KH'3YmݜȒZK,J1Qхi)iB}^.}SLuHYo
O^sҧ^G;16l $ap%.U]X>۳5o+K7 +u{EBv IV;}zj
:Vg%D +vLDD$<?Swwxǝ;:tJ꿺P`%c+XͷR!X#{V S,<cHXz}Àx9ά?P + Wf ~If/HE6Χ!2X#G#VD#Z]B+|_h+fNL3.=Lv`P`l5H4'YHDD/-PɡV33Q?WX]0m)7R\<rp"]kn܄qԘdWX.}ak:@NjӪo$ɇ'P{fzYyC ľZ!+'9'FɎAhq~xϓ+f!:acLr 9!2DZ+Qt9.[eq;2-ɠl/`LӦzA3y`כrkT#nt, .4%#ɐ.:@ +!;7'A)$8ݿ:9H#ܸ-U)-/kRz 5x'Гܼ>&GA>b"$B5̧lyA!c+1,zZAm
@7P +){<)V3[=GܜCW +o
$Onbd1B:ĽQA +מMg$J&$6t/1eS:J:Ü9&
ڰZ@mUx1"< +a&fE4kgm`> HjZΩW3t$H4|9֪H&Nux@RL,M +HT68Ϭf:69EY/7KfRūUR^A_[JڰF/{pq[^[ElomuSsi(Qڝo ,HPQ$-FL +y.<uM~] #-`*d_R͞ysѰSL#RL~H#p1֟_aޝ:Ϋ@5\> +I`jg䴢vUvGWln"Gf.سzb,O~3Z]Wps婊[`_N.Up-O4e3\]34@?6+T[LQ[ +``9P-Mt1% +Ti/P +UCkKZJ(,Z&;&bOy
M[QK4ĹM4xƹY>)v}ۿƊ`s!ZoGxrOvap4˻D!?frJG6a3)8`ڽK0h뎢v|7㿔6bЂgwTlL= +h-K\Atw;au
b6gzY*`ŅKU1ԏ8ju鮅H)pmY'^lSYnԽ^GcZ%]^ؗLjE9!'kcۉz{JDNtK4}paS[80eWfk +лv`M{DNc
k~v։JpW7é:Kq +`EWug"[ػKH&mv*;eX&zO3V[TZ">yMs@.vYI +HNN4)wk +ꉶh>sCU14X+Lhƚ~xUxv3Z~'ygBP> )K@>>26 W<̋{|z7#O$IJ2*İ-l,ev۱ǰǝ?bUA48=
u8dP8%])U.7@$3)i<GꀣSѥ0ul>6mXu
'ZC+02ʻ$"wWOxǓ\[BaA@'ts}-@>Ʌ[=,"F +iKf +/=Z5|JGÖ{ +aoRTS~[o63g
y#<P b|ɔ&sXB$mjP& OY
H87iK"Ԁ̛D$PzaTL}Ii]$qFG̷$qxaJPis4E\''>.*`3!_a#]"%M<n=G RYUu<X6~έ_GQ<-DHԭOQ;֤8=XH*Ɋ)<Ǵ0U>?,!wDB:|.eFCWB `Dpĝ7ʠOG4Z"\drEc53ԕM!zUSs-1J4^bulvR+'zt4|~f9i-ps4]v29Y0Ⱥ +)=@"],#JY<^c4X!M4Pٿ@Yŏ{DkcEHO@afPM%Fb~ܟ('.E 5lrLւܔԧ;gd@̘yVoʅ0,l8d=UQ vyov˒c?L0k8oQج<&yo@m[ +~|^j\~yҬLϖujNw_2TwJcfFI +C%+.@ft-C"
ĉNz&hoR3FZugSН]=0˞KBw`bvH`1^jCw#H;Ci_'6ZrpHԘ'S^,CI 8 +[a4w[+rڥ +~#! +=Nr19G~7
nm +oj0a]`X9dM4IR(J8h >'I +&YݦU
,CR~>^2 +ZU: }#~J4)8U=$~t_xHe QǷ( +FDZPa k_U(UK=5AOM'%IUMB +;Xx61;$?6k +s&NX/O/5 +Oh.-| +nz 5mcH*3AL]zvG$#Lim:Yy20 +H(]@9wˑjDrmp9ۙ&pٛ +E[o6̴"v!t"2$jb~SX"qrOoZ݊ˏJ8:UQ=$lp?7$Ȭ#7uVG+RwPU*͜bJLB%-mqTZed"Qua poNҼ馎gV1R<T~Ϥ6ugԗ}dpTa[ܿ;]
0Bnk+p^IoMW)qD AϾ5זe.>(([b{t<~Pz>R2hھ
X +PKDL9oNLgq
k0RR1а@~4pc{o7!o&ݞF\)5ChM{R( +%߽$_s5.#W[@Md&qm&P a$.l4Pڝb~O^w퐀Hvmv!($>D)a0=
?!2ѰtoRl>noOfet.ЎFQVB_9@$B:/U(sP7bHa>
PXsɉJ0f[J w Si_HI+1;UNkw2WCXpg 9z/ +~OW=Z%4K9dz}-hcSF#^V kFYkU t= +KMs@XXvᗢSURB,Z)aMt2aLz]DR<3rW~|3=uZu<~'
qiᒶ=u9O-Acc>^&;RLB$d4PMoF<ǂYO=/x3ψɯ +AܼF +d%I (04J~ňCtzzqmB:}Q2 㮒Qws(~ 백h]tEMڲ{u![ӸH4JntctB"ZyZ U[a݉&w6h.CbvCV=1bʝ<_
T пX!qkWduO5Q~FWuh4]%<C>mK`ӊe[~38ڡ6ZlsCoCTR?Q! 5g8ms@#oc_Wk?|}Zזд*@ +MjvZ}SդdMi|P RxU|:adnGy\cYd)œ.1UI{K:zl_j{jj:dx',jae$<cR#`
6MDM^9rW%Ǭx9n>pkJ-[)"kBZ3&@]QxߖIu!#c^`M8d"8@Z \3 ++ݛ)Ip@n;0:02E=ױqT<;Sb]o
d,fc D&8iv%6w6wm!&MFPeltPjפE@ƿ p5+`5BPY.ppvu|f$U_h 0hd`-kIƛ}] sבpEPp9x 4_B^xtSK;#'4Mnp! V'R=.1t]<ZezLpd
zh<́_YBYN7t#I%a5ޜM-tt/J0歇|{΄UQvR7ZcKtԶHUxO#;ۍb}M6MTqR,e6ΉSPT_L㥂T1ŧmf:CȢ2aF㙞NAo,GT
sGw?k©l$3 @|
=1Vhj\ka'I- +UW#ݻ]/"&@Ix"#_NX{=t>DaXEâĄ%_$b:A=.[CO+^ф)^hNR܀xM#LS l2Г'si:1UC!֍n/-u`͍nz|+u!͙k? 7#f|4isҋG˿/S}yM|ܽRH[5м0pb%CV}{ +!äSB:xa@3|u7 +U>601<Nd&܋QS͗hᯞճSڇrt:쁆1K _aDFD_]"ieO3*ffBn/l{d)ZuGe@^N]<Vd@DExAStW:><$ + +z`5 EInTM"&-ȯ4ȳV?hĝ\nC2=/a1Ӗ`]arlx֣g`z$'|3p$_ٹ~iuGkpP^U^ +QDϘbgj&,hSrpL$MH֘@N|c'fdՃ +{<)67A9:OҳU^<?ƵnX93Ȩo 0Q( 8cMԕS7cf;+qCb, H\F`Za6;1bsABo/ΆosLށ;u+"iixV!ib>a茡,~ʑ2[ :T|ݻ$ɻOlb1Ф^} +d'vw&%ngp&>+g)njWPtz?5f8]ϴvoS!TDݍIm + h"j7x<\;gs7(MU5bxó@>HI~eXDuVWVۙlծ5|ZqypОܬ{L6VzA+'}q)C2KrGl rHmۊ6A,fdv]"TYFpvBn)ʙH6>"NӤմ:nwrpzD(,:h4 +endstream +endobj +1206 0 obj << +/Type /FontDescriptor +/FontName /GJCTOY+TeXGyrePagella-Bold +/Flags 4 +/FontBBox [-560 -267 1311 1097] +/Ascent 448 +/CapHeight 691 +/Descent 0 +/ItalicAngle 0 +/StemV 122 +/XHeight 454 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Z/a/a.sc/ampersand/b/c/colon/d/e/eight/f/ff/fi/five/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/question/quoteright/r/s/seven/six/slash/t/t.sc/three/two/u/v/w/x/y/z/zero) +/FontFile 1205 0 R +>> endobj +1207 0 obj << +/Length1 3497 +/Length2 36025 +/Length3 0 +/Length 37904 +/Filter /FlateDecode +>> +stream +x̸uP>ww E;Ŋ[NR
BN&<{>+g?'&Wdt68;y0 +@{gow{[ +lDŽ&@VCU[Mcp:A +% +7UY`xA +utr +x?_ +敷Wqz]yɚDVxZgwBimpmCѪ$]f̬M= +@'[4.2HRK2?*/h\$;W%NnCܐtN +ٲ
Cb#3knC;^yHHrO3~\_#Fjgjq*Zp_.Xh.+֗ϵ'U*:>Jts,nf W͖l;yeyq)/G7ցP3u։#艿'Hsj<lUYU/fwωP3M t$C܂-[ +]-{s%ƚ5y>3ӤdDbukêl_b΄STvsjF{ɠؔı]<BvDtDskMhť7oT%[iXҟe^)m}]%c5Y"mw^wNud?\r0Sk~!qO.$ +T]''zSw'PDfHE&ɬDY[wdyN*_S`YO,| QcώN=]]gL,N|Ќ+WQꖉTٶ{a1љa~tkp rm%+<1ds[]@J +&w]o@!D%{M|0>UY)4|C" e1jST)]6;V۵nBdc_IPj$54q`Fm\rN\07bᬅMؗ7Xf7N3TRE{56o-W"N=}F0_O9zrf5RqY, I`'2 +F Y >e /79w5mcT18 ;L.m9a
4&~(Z!QZ~{?ƫF*tiD-atՏ٭Ʈ*|g&S8F)1&>N%7YAE5[9Dƥj̽+CcS"F&u&Mˁ¶Ź0evio'4Չ68x[J;XV3<ǹLrm5-R[Wi'Xش +d1s5-(mxi2i'ꊓr{OĔS&3:vqvMҧ +;vge?=
3aEAdKW$%c"&ZltV{o:'*# \85Q?ylԌ餔XFA~JUH0I +c9`Q`]{T燜/tGQ%:Ն<Jnݭ-N^K!-<ɶMRHLn2@gT#, + j +grYZ)G[J ґK3 n\v\5ьRpkw8'`+C/}j^W:ͧ1W:Y3lTƝߨqZ0&aZ -%G/ӫ
ZC>ٻMkWoTJVX *>ƙG2v-.i/ŭTq
^nMa +`xXy,7ŕB] +_k0@#\ji% +PXUNE߽[Aډґ+pCxʋ +!
ޤB#|'epkYqUxˋ`1҂n3;>mɪA3 o>˶1^ +3{6#
ub(eMͤtaǗ~R\b\ArL/cݟōSadjQT(páXozWx(әGj?U\_Wƈ?F^7I!ٸ*q"ќAW<Ex(ZڲZwo[kD:EY0^A4PQeՒ~n"m<^~/dXn*&~.ˑZJM`ٹֈDžcEP=R=˟`^=Am2-bOB;0d1p:O=:2V +V劦H`&gjl9%IĖ]9"Od_癱6iw1$TNJɥ.INqKh#ǙtP(^zʴ W감@:<iFe5~oqbI$*^8W~*,'2Iɡ
bLaRuc'wY"+-4
#. j_I`.&N!DqB9ZE('<wrקwVk8.{A,}_ U)W6[[*yo[=BGu)gSpuM:MP"jVs jD:-|Ĉ4ԌIYToF7{
8_)?Qr-Z!K/<0}2$3o䧮|Sy#Y"$΅cwCYs}>Ac3L(wYah.o5F!t+cQDR/Kz䫑qsu4%ϴj-\GlσALLlڵ X#͜^dOX٢0Ȳ5W +˺vh"cl`g4F +o>5u"kp2: +*etj ~¤xHy5Z5!i'^S(@gG*:rg0Lv䗘νW .*\~=)KKJ¢mS!|H+6(M)1Hg2$J8]*@'^Hƕ575W- @sI*liIyﰘYno+U[E"LƁJ + ?-p^#T-Ҹ=;C&K~f0("voC^R嗺 YF.3;&V 78E +,[nG7za=?x3P\j<F6\YU'3CݛҳDo^q.QKl
joIy.g>|p4M&"%+o] PցiO:SzCnvߒ6}@35v̄CE[,G+*owƵmu09#VUo P2fZ'1v zDcʖ̓3nu/t.<x Exb X6(V1-f*XMvx5\.]J +ed/><(&fEpPun +U;+t*bUyñbyki xM6nѧڜK%9G:K\hZVYe"S +TيY[[C䃺?mqsߟj<9^~P*խߤ
M2[HdN<( + +HY&BNS{{+u]qEbC0@1,ԥaJ<M6}Mk +eq~,O :cl_+* 2橗g"m bSݾE k~AW#,svuĔ1@.p=_k%U1Acܩ7~ٰ\<gHx؎0(Tt<7M09aBvEFJ]OQtH.o_E
[qܭH6pڒN-)*PL^p5#'4dǕ>) +1!33]V@?@ +M^nGfy22chQ&bKjo3]q T^(eo[In.>ܾjÏe(Bg(,i5Sd~Nj +$XO>IR^A
rαk@ +6I3r:<Yx8ĩZ/ݲyXL~6ɩޱ!K#8=|^19nQwc=ύ:V$S_IXdTt]J̤YLSH}ɵ~3R)7ad=?l!!OG!A_$l"$6ĈtDjD-PmpF{H*~C
ftԻt8
eoY'2Y7n9^wz_nT+72h{crKmC/Z|957{8Zyc +\oFo^6'1<m]{[+ʔT=B7kˎ{dO^&։-n
GaLw،5ph%=!rZbSD̴$ JWZcPOWD(t? +eH?_)Lo;=ytDQ<e*m(ۚIPvKR=BMWg*<Q F!C K_lL@[.|ا MVn3uYe +I7}9"0KTu,!QƈB%ŊhW&=eWg<?%0yI +,OJr])ߢDv>'w.i_0sܾ+\1m-EIE"ag0P>C; "qz^MrQ]㐓L&ٔ%a0p8!F:GH]+c{{I.- +Ǿnv +nINuhh SaSӫRBo[\t9[y,n+ +9}a&[l@.O$2o~5U
-P,Vy %gW 2nMNJzZy7dp& +;X ֺe61 ;|87[{3|%-sIkO74XU
$mu]TIl
['j4ޓ\"Ӫ)1!.lB&_H= <EtF}=$ǔƏ_ +swź?192} +Qsk@&j{}єUT>Ed0r~Tu+Q{D<>*ؕ|6\G1u\j783gh+a[qp+IkկAN:Mf&D(y3WVIKA<PZ*|I[Y)!Əp~~Gc%%tӲ\>8IÔ8RsYC,7H7k'D(!'̿d"9ӇTh DC)>e`W\gUY>:-Q{JKF1JfSFЀR3Z#qr +&4y#AB+\Xέ5"a4jGE,ݱg9qGm*zHi#J&.݅Jҁ2*ldӌ9qxo_:e@B*gdw{"°۴ +T+N ut8x/Cf'N Vzg^qq|(ŝJ9wǗIlլ +K?7 +zY_5vm
K
+wYEӄ-rB#ڷj,*r(r{bF%*L[ߖ5y +AY6fE?}+CxrP: BWL6ﰐ\_l56kpbM qPhqij~FL9ZObf-lHW9!d]֗P0Fa4%wa<X]!o/N
5 +if0\Fۼ&.25G` +[dJ[n]z{שG.vv +{a)me0OUrƘ2w}S,H4*_MjiP[#F·'Y}٫\2Իwџu}03K 6XCI6RBeVt}$,˯--s|<AXFlk*W\J4u!`Xa8MF*VwÀKL5aLFtpX)`*tz_-[~&s|5YoPfwQ~٘:fQ`-i)X7!QBUz@`Y:ж\ˌY3+AP@H$`xivD}7}O~ꃤeQ]ߛ8u1J̩onI7~ROv]5#Bx)ۼEl'M8KDHjP3uSB`=Y$r4W)/c$1GcM@`n_Rva^C])#`XePlFs0A}@*}vlEmpIKz[#'QzrȇMrheQ*Nv+x{}`[vbGEh1x&RMV&HiAu!2 kn~|x0E=lt +xGzuLfm+jUyOa~<IjJz0PPf @Y?Lvf8Վ@i=-Ė%=TY\f[D;w#b-E378&S7%`mߑqSvv+adoE?lEr)Z`:wgiQDh-ˤ3`VcgGQݫyJ(\Y{X4PM2_Wܑ")f'N2j3>al\W#v@I#gq=N(fS6ӫ-.YΑX`<AS-y4v='.j_m]YRo趃;1RQ3R,w`膸+D,!)eY +q}Μx;:_i"V)4[Cfw.wC,gY[$u`l&H6?e̎jc4EpDtZ1
νsrܠ`i^BޡIQLḙA-'<li&nHn_CWJV4y&ߓsGrCq8t +Hf<Bic:QZMwIH_mI +Au)Pf7_7`Hn+ϐ&,?~;ߖUM3WX*qti߄a
-rZe
gL`:p5{{AOCHGO
˒>ԩtRj2T1I,z,[\8_TcF0R +XMkqj:C 7NSc`(A꘡:UW),iGmdS+lɉD"\a}al\:P}$=\< Ҥ߹ +V^Wwj*u-Cre +*1$UyJB@zZaD*xD{)3+[zN3/JM')`G"ff1" x 2a%O&Y.bIe_Ĉ6N1Xs5GYgBk{"',N] o̢/R~i_~s6<6QK:G^Q%X d6PrCl_JXo7*PAmכUpyV T>)ǜP?,I`ւ&ّ~ +SLn*8!D)awͶmW[
f.I' +ZTQᅵ_?A!j@0Iwn.<Y +4<K\_߱n)L"1;zn&:b3H%~ +a"7D- +~n.^WPuGQv2뭐%݅MvnlhFu=Fa?[%
\g,_iwjŌβ +vD૽.nO7 4̢) C!|i9G"<]эuH() +Oï*3!Pml"Au0 ]
h"epS&CзkT + +ҧ);~
BIؠlQ?7'YRAӨ/6w*-?)5FâOI<8!a\4B4q1'yWNk|RzEAM` }Lj)&/sx|+@*Rç3)zz0)qMnsw1%
fЌi<|A +͇ppF&-V!Z6T[G1z2BƩh+S]SM /zB{9"J^GD<].ZzVwrn|3OiJLW⅕Q}ii!#V%$Zy}?RsGlUS:O)tfT+bdwȒQ@H9Ո/my}<Qt}Ā<^Oݸh6-;x$2~G.^E̕DfZCAqt*GLu/xMh`ې+/Ԫ}nοp`@-͚svպS~%,GLH[ޭH荹<8_ALL9@eX~|՛wQ}]sNdYGsPK6mPRB2~;]I"?`B%\Om]PC֤ꗡzALA `dsD/@In0qDynN7\ +2W~qJ#44wr( Y:S +MtHI,bB@!.ODgfdᆬ4UfwN +@_st0y[d[hRm #nP_v% +o7MkEz&gw>0\Dk㟑1ϊ̟X@g,E!P +gCj#Cc xybQ3R(3D,^`N
b ^M^0@ٴΌZU}IZ[z}
')<)Yޖ6tAzk]<8XQ'?)礬){?TGĒmeKT&M܋ +Fe+`lc-]Y2`:e_ɝ u5bg(\W_
]"̍++xL +pEYC G{u]Sɡx_띉/(JY2bZr3"M#>(==knO>:0=M.kǤ}, +!9uZ + +B>!$eXJC|3<0b +:L4P{@ҕ1H#hh/vL`2)9,H{uHd60^$8ݕ/ozR,Q% "?e;ga+ ;4iϷՑts`*}~SF [n>féU}ZJLibw<Vd:"&|pu[
_ e9=m1_bZhaMq*6O eLM +5=8Dz]O=8M9'to"X[<T9σU?IOUP'q%cr(jN+S\7#ut̳r0at 4_'Qgd!>W8!h䚉<Tݙ3'xt{锹O4tI=4 +~RG
n0'qgAqlQ +H'^&
,-GқDLB +'dgjGȫ4+i9%L;EAf3&TQLƶq~yJ:dd9l[#%&QRBcԺBf|/?kC߳mE[I֤3ސRp^UTCf}wݿu}caP)ŋ9()lɶ'%\09y.o9:=j +$JE% +yJ"DodX"w=W&?·8v.' )3JUflM^hFqzzﺜXҷqAϘ;~/>eBh߱®*4 +GpJPYiJXUʛ@,; +F53Hb57fVTϵ0S(Ҭ Ecy,I4``DZ}nܒAé
Aİ& +sʼ>YUPKg3"A2GX6.5lNO"/}=v$, +M +&=`NS {8=r;Mڞӥ\MY^#/L=!PAwK + $AȚ~}Z?@7 +}E74/Տk&1q՜Wǿ)nRZt4SpIFe h!ANH'bv+`1xF}*?n ee^RyiuX9Yi1'o7w'#H %c]|wkz'ṽxbJLG03>"wC1E''ЌͶ8-nj .4RXmuPt{ZX$=/꽘I(A$.<!B`,3VmZa =̚(qmN.)Dخ/
i0QAk?ܕgd;p4X?r7U2k.iS XÊr{DiZ<>FaZ$zHM\*D" +k|>P#R +A*u +V4b<4ӂn}L=w7quzCUؗm<"rvzz +s̷Tx!4/GOHbiDiEUƫ5l?'ڤ*ɨH@m$HM9E\i$h{@aŞ
Q#G9#ÝֆwVpD&AD2)`2_/dASJڄhοz5:]DJGD +b~S_'Uf.$0mx_K5tp,r *xJ+7JE'yX|c +Q0R6uzzH8ߔզf,st&z,ѵ +uT8z6N!OP}S a%5H#lNJ>@XA})a#YB1Ơ2ܞiev^$<JlC|~vV +B
WAYX2{NMFO^ +kv-;P,sF"Tg:B1Cgީ~k\`qcw!u= [-DGR"PθRHPۂ-m(s'q3SV*226N5ƜOULECY^0=3^rSɅ`U_Cm1Q҂p/NKN_сGBlÏ䤶+|6XN\3?[I`ҽ:V&nE(Z5|yu.Ir-Nqj"6pu?ۦxOr~Y7j LtdͿ*p|kNϗSeWë>He2}i"-#Z=VE;={ O8;9JQާ,HR9RϽ +8\' T0.[r]SJqL/qcZԬU3'v99 +o\pUߡ"xApe+MVvEM/Un
ٸ=V8%;MItf0 +pIH˹s xH@ +wHjp}GK\B.rS}Gmm83Gm1 +:
Sh(Q$|U܅z6 h=S,!P<O+v J IC#l˛%*`;>jv/zZx:9@1{Pxu[XJ_3UYd0D)Cz oRNh̴ ?JZƊ=\qGbaƃ3We?L0*`E.⺫VՓ}ڰ-
{r8Մ"PZ[1#!$13AM
"Vha9fgm
kqx
e=+#ot)#8WSHҭm
"1&"6&o#{B b4}*rIBӪ!9Nーn[_S=w}v'X:i~[/LPR#r
#U@ExGoX<H +(0F:Xc8jѳ3$&a#ImS%2Shˁ3q{YNG2:6hp#xTiqg+]b b<] ϖxIN +ΦM8
~'z>p )tNB`ye=Oyոr&8P}FpඕиWVKKy-8P';fV]i^ DtpqNI-~ +B%qܕC3 +SwXuo)n +&h /`{Gۡ*}e}O8AwkM?N^Ϣ%;v CQT"#3lGdD~ +ܣH>I(M/D7ECxGP
J
h0
}&]($a2bNrCaUfP#¤ϗ0m5Y;]7`,<RR<JPR~%tH=h-*,Ҳ6F='[yknw^Jv6\ߛj2B~i+дR]}Xw +Zo*Z(#Lq?ùgB +k P׀-9hRGM'W vnw)G\Iǫk0ޣ/<1/,,cpxfݞvg>{XWc.#91Dk+-ɨ
[1hKNVފj A9E8Pų6\6.G +['\l7ch(CEvaiWwx{C{ͬw<
@wL_kC4*tYeܑ=w9JA:ɤh8PUXc6jLugʅ'g|t@A_#a1(Or5Z$ +I)a-RGc29:#
7]Ȩ^D}J͑OzoNϚܦGLK{c-Vr`.V {,P?:uZAMM- kX!ELY)!KxRoVkH-ӹ<nq]7u^&EhYqya5+V!Ux^-thPglٙh9di8b&ɹnԚsUuUCqwWɯ~v)˝ݿnğ?э9!C,fDJ@>+A߷ +ƺ|ۘ/^Ʈ)EQ8&mctN+mU+FH?n\ߗ| +T7Haȱg +n@gŵIh3#$hm3&ϗtIQ/<UAa{FY[M4Kn:Ԡ:E[G +RŰRՐatnwpbQ+-S2|-J?+-U^}Uon,-9eDmt
9'gv0o]8Nə?c}!s
fPcoZ{Kp,~Y7{=o1k5$z(>)"EOcg;KF}ɢC<r5׀>lʹȠTy +eڐ/%tdA2!k.ݓ֛8'ݮy^RvՕHdtgh'!ٿRH{_YU+F6!AuÅ
tL)GgWo9S|nbZIa$h[:I&Lb(6#k3[#;)sJ[@*aIWt<j,ژŽX:a]6cfC*:= zF@>U6Q;5cmgR +8dؔY{+=0co:b*Bz
Req3*(`]4~B+W#nCMqYVq:'a͎=F>.#q2z1O+ +R|MI̓2
{Kmqd{m*_4W2Amw߀]$\l`мOPjmJi +=l>]{CC ]9 +Y%LvJaK'O6Xt
+Bk~;'_XK5aeCNT('ZcT͉ӹgDD[<ZJtm #!x{`^D!zР8Z"ܽg?y{PI+rIZl:HclhĎ(>qt0"cG8+᷉"sؕ(UCI,`Ԛ0kH809i"簿 JTǜw+@(#MD$ OA+m[>@0+]lY!e037oˬoIdOq5ǭw<f^I_r ہDl@Ej«L9ͩQk1&z^Oj^ltҲ=*o]1`s']n'ëEb +$kڡȟ<K銝Lƒ6FY6yu +ɌށT Py +;϶%~NӎeFI +|YyZ9cTN%3ϑyrs[KMSѣQ$ցk_<'4FNfCLl3QWJ4}]ܨQzv&=S0ah"9/ K-Sڼe_hYUeHC-b~R`<혓Ě +| +爻*۴>诬K9D7"dI2Bb,hNK_ZXCPDߓ"v2Ƚusդ,< + +Q4#ERL)ٸ\ޠ9`Na 002ICdw¥_C|ZІNH;{;ImU=CcT]ybr;t,Hn +Uܒ/1].@-֫} 52_+YO$22#L n>L zN:OF`K1P2 +6COPs1$r2dQ8zT](ޡ\x\eۛ" +ʴlH,w a2gKH! 6:s\QIK +yww?dґv3yvb|7z/-6"u*!~j#f.vRtW."6H(,9WȤTmԺ`d
ߕ?,< +Y{++`؉#cW99~"[z8{B24AEݴth,-epIܽ +=dVNϠ;z]@13%? +4ƾ]nZwYr;9L>AQ6eYqcɛ%6O%\ëAC_Gã^D<C`N}QV&pY H4_L~-v|@|c:>)kq>LWVee2<o2c6*!tE3PLۦ>UҤFb)uiG^-9Ƣ{᠕S8%6{?1d٠DcSsx`?}cR_y +_Sm&Euny:`7TkMԷoO$4I4Gʁ2P;1"TBd"߇WL!6XI!v99 +oy +>rVgoGv!A!t1A*zg@&36hlR#'^2S=ߖK#EikA?pJV?i7&夳;? _xU\<O]?gLCE v/^g\ +L
Wax~1vIlDud@j#v'@*)+S&D'NK)`ܧ}fTwa
xB +i[b*
V{<7F3"? M6%Ky?T墝#r0l +My==cf]sWʩ"3x|+8%p]jsAWߞJ-¸ͭk{vp[ӍcC2<Sl=ƫɌʧYC-'%s˝-30ruQ*#O>gNs(}k2L +Ԝ.;FWdDtYue +m$/[20暃5ET#';Ury^8Orkk1dZXhåaۧ6KxK
pd
"G,iA}#w豼_9kb-E6ʌ]:qS +* +Xp[hT(q ~!r[`맹{-^eFQEh1e 7u/3ݘgxD1i}ojk +l5rr<{}gǽ0mfv +y[RPҫ|A}c-WFءxxPW&hx9.yˮʄ5 U`K/K5!CA7Kb(}l;:Y5Fg]pTꄝz +kg̣^P!DJA>S^F1Vm< +}5K5cr2!D[yׁa:xGr3WC{∑HYAlsJ[ki;J1[Y`+{7R|ЪIP`7K䒕e)5{K\.$#,`d3%=1etml!ZYnY^28e\?ZKD.^|4w{)6Ei=9{-(bt$IGx<n뙟E/n}X~!Q!%4?0V5%)25BD^kf=_00b6SCk-^/VtQ˛#f23ǥ0X:Rʇh[zԜU.XWW&ÍE$P0s'!F*i +Ԍ
^ѿX"HMn=g{iYݓx`#Z8>ݬveث<Bf&ct?Zaњc|`GJ&1or^ҙ0V˦ +Dx>R5ċ +Q0`red|,=^aBc'Tm +endstream +endobj +1208 0 obj << +/Type /FontDescriptor +/FontName /SBQSDT+TeXGyrePagella-Regular +/Flags 4 +/FontBBox [-514 -283 1284 1098] +/Ascent 0 +/CapHeight 0 +/Descent 0 +/ItalicAngle 0 +/StemV 84 +/XHeight 449 +/CharSet (/A/Abreve/B/C/D/E/F/G/H/I/J/K/L/M/N/O/Oslash/P/Q/R/S/T/Tcaron/U/V/W/X/Y/Z/a/a.sc/acircumflex/ae/ampersand/b/b.sc/bullet/c/c.sc/colon/comma/d/d.sc/e/e.sc/eight/emdash/endash/equal/exclam/f/f.sc/ff/ffi/fi/five/fl/four/four.taboldstyle/g/h/h.sc/hyphen/i/i.sc/j/k/l/l.sc/m/n/n.sc/nine/numbersign/o/o.sc/one/oslash/p/p.sc/parenleft/parenright/period/plus/q/question/quotedblleft/quotedblright/quoteleft/quoteright/r/r.sc/s/s.sc/semicolon/seven/six/slash/t/t.sc/three/three.taboldstyle/two/two.taboldstyle/u/u.sc/v/w/x/x.sc/y/y.sc/z/zero) +/FontFile 1207 0 R +>> endobj +1209 0 obj << +/Length1 2556 +/Length2 20792 +/Length3 0 +/Length 22240 +/Filter /FlateDecode +>> +stream +x̶uPk4Xp $!];w.ߞ[{fȉm6 G:&zO +t0vo;md;-f-~+-en|p0p~U{'?8 +uo~=&ҠK`zJ?'sHڶYIi@~PNTC4
'9o!cz6]I2,21]W[ÿ@GIA۩9w$a6{ca覣94/u2$mP5^Y ːڥ#K%HP\HRva
ID|c
j^<k5ο
m[,aݢ&ll3mu3engcA NƌN:)qTԦ}틀 pȄ!Ϥ6_(끗%]Ks=U20?G}po@TbCB!0-)e_~D?Pfjϰ{bz.h9<[܀=YǿC8dۦAy8OMxi2}<!uGwH{#F|^&!㔶k +/zJVg=PCE!@Z;1eu-6QwZզRa~zD\<i3L iW=ѧwࡸ"NxJbx1]/.W@?o/TGrǤ9cLXhkUwv?)WYYR}TdBڋ}
Hޝ[v`gK61l3A)z7^SmQCkNO. +*KxV&>B +=-XfP:ϸZ5DsEkq +}Űsq6S$>E@LbD}0@~gya.v'
Y +|kK>D|nOԁ^dq3n- +AZ@wfG=ל{Vw w9r +>3ZNvd(9ð#NtP[htbs-'1<
U{FM RGm7U*9\AφG:)=BcDb=L=ܸ{vxz$5
[)[-rKO$#9afs_b:Mug3OE8W#n6
zY]^Y~DT:S
&%E/sGV
y>[ S2WB8vr]Y0WXHrpc..]u\Vc}9ߊY0>F],Ar,BXHho|!J + BQ%eix:b3rf#Zb_0d@RUl!/S%jf"(@ *1Ȃ$f=ڵj;Z}LG%Krs^P?I,G8 cp}'"z+ɄK5zUbږyND/BxM^_;JVh1}&גd]:Y-NEn^nh1kx-v_~ I)#Šte@xy7 73eP3_uQO]2@8nͽLYv0Ԧ/δV$tlm$q +B8!}`>XQ͎|
M".c?>EJ&ao9!ƕA^p|1ہEεad3O~Af"{~bLZ3a_'g;g*.>fCj )qgf\%尓}u89-jvL r]6a$oqv#UB43FTEt+rbXכ<hm\5!xA`k;enPqR\z)4[0FCjgG"lr6r?z/]+u88yn+UL0_|knֽk8 sҺXZhS uϯAVkN}
]f;*<ic^fi}F +BeЀ0-<FhtY[JhuUKFZ|]vog%VDW~ζGIUzV-~nPnĐ
7QkQA[.-m!y!w&'QqW
b&(7$M Q6&%i6KmҾc\@.n +hupҏsU \ S1V)ug0mBOb eZdgt05H%)<D+WPֹTڗc1=!"lz]kDί4Dx^b`>jGL)EN##y*Op4-m]h)6ƺ3Pxyg>'>Qj+*=}u{. +HKgޠ+e!&)vwP<a5fMR˔KFwK̑jD\AmkuxI]prDH]5Yl+Di s%ffD|M䑎FJ{ +̿`lZ\^l۹~P)R1`)COjhWw</XX^;Lⓠ_HmT-+S8 de?$o{Kc
I$߯mC1@B]AfMZ"MgqCVyaqЇr1`0]wދ=**29pGs1GzH.y:XY|3 RruFHD=yX0KƩՀ;W]l%!&=5
Yso$&ŸPJFق +ݑ~5;&( @pMF*oa5ȋߔbm:jR36ӽV!kidw.nZPi)19F\}ۚYbe)5cل 'cΫd;;
Ge_kw](̇`J|FzѨM߅V1]]YJ`p!yΚ6΅.# yjyoC!H8̨%e _ +KFd
XP +RDž0ZKv +g`6.t͙ߕ^腉肘gW^*:{xs+WCA(O}JG=eE5P{f(ȍߪ1uXOR[+3G}#5] +',cj]̷$m[1 U`7$ݼR`/|{ˇH?NO-v{EJB#?Ҵ!mxu!rsO6B
"S5w
[MvB'˸9><Y8 Eq-VI }Tdх&Gi4(F)`<F?1*"S'܆lQlrI~*n#a AH:6*S5HbY"G^ez'_HF`˝z-ϽWB,ISlOKq$PD'+1ɚ%5ѧ&,?sd,]n_ +4:%AjAH*.TL;Tr
n$Sazf+̖+C%: ekWYVǚ+zeP'u0.4r;uaZW͑;e=)`a$L;u?3qoP'$IrWCW-O)kZYif=@EV+
#{*}Lh圷Vûy?٤Y5bjTc-_0nc YQ5-,=qy,˝0=.C<>mf%wщ|4](ҥ-izpQ d!B;+~w4szL/++ +jV:4mوT-MK=R~u + +cOpI&+r؈Gu<twP"trycmE`[|{L/R%$؎sf OsT<U 7ĥt?.H<X^Sh
hHdtgLm!EmѮnw~,DS~2«W,X<i}7NC収*o_c*OR*BܯKuZE[68>CHuk*xflPKi4|NzWp.up^>E1]42HiSi60|$PP2waE&Ũ}DޱEOzDɒN]o4Av&xQH}nʍRmןf&JGZ6x7TO*EzpQW>]&G?B1p}]ۗup.|[\1-=DrZYGH ;N`ahFeQsY^-^ss)`%Qw7UW$] BG:eGjf?/B!Lcg^~{\
쾓S
5\_l퍉cDN>)
яZlvA6g] +yZV#I6qwuh_ԟV{(rtIͽzUAE^dP{R֏V#[n43@29ǖAVsN):Ko40Ep{Eu4iw +1TMt/.v?.0?p^S.4̄x
]d^?2(.u =n|Yᴴ +CSbYWky5GԤ =l$jl^Ѹ +T ח:.~*"rA0]֊G]l\m^&شEΘ!3Wl`7znrVq4ޓS*+uk4<f#)ߙ9/^),s)qa-Y +ph4DaJOC. +d6\LK:ȋhs48k1CH+\Z:
a_ws\NPݰގBLiD߃3+ުYpQs^EI]GveF~
Yɹ\g#Ջ5rh}N",C=
ޡr)x&)={sP]
b41V%GOBU-9T3]fM}˙hlj~
l(>)fXj{" ]7{Il'1IzzĒurT[RIjz_n(hDQ.ϟ*P A(ôb}`BæNliʌ2@ܓI>/B,E&9R v +33&^U?c#hav5u5|lWr]Nct<SMY|wVWP}`6R>:=yb@ +qoaGڟ݅~zi[NҙjR.缤nGHHkJuky?N +
p>1տmap.SƬ0(:)~;r(KĴNI3mdHruK/VTЏI/Ipsv=܆
Jgn͵s4M`Y=0rLAp/n~7=n.xﺟ\LwfMiCfa'iڄ
H߳yƻ|%7-UBz|RI|ՕAHhU|εag/aSi1$R3pB(mVvGOB8=&LһڭT)7H16IJU{[>] +63k +MVSY0oؚ Q0QU|0Ƃ'xa8g7F),`# Z8j/GLӼ<\g,IR]1@ +!O +=Wgmo5u%XCG9zf8mp;LCǼl>ɣ{:'%|APPk3\gewR4襈@[nПj+՟F'nyD{gǾ&İ'9+r# FHAHAi<V@jC38kS*/O *5v2KyK+#o.V Ló1O&itJ4q\ٻx9fTV?\XAV6vj}'#qs&ۅ䊓 +Y#9<HX'Dm +)#T,$HZ^YԾ3. + #rD{<m&&ni]Y5Gm0MF]vN{Xx.
ŇVk"!'D\;U@F^
LȌq+O<)IPȀG!Ճ$w9Rwӈ34;f>.1"bKv1T@`Of +lnSǸ˚~0w?}y5S.ļBEqXRp Px|~ ;^1t'>UsXe6JYw ' d]aZk4S+9Pw9 KOj68Yv'3㍯=6haƪ + +ٙK\1xM7Q +)Og-,&{ |;'6*WXДI&P!jǼpR0(QJy8hm.dDdk6t-¶dRT,ƕ`h9#!pT&#B3G +X +nr4Q-$BP-*25҂ϋ?5w'cN_E8KmdeKQi9[Wk!1lYݞ6e)_}p1esS+Tc]yAY.vS
+rş6ZMA!}`I^%0l͉|ߐKyuQ"uhiuÖĔAF%V(L +I)AMy>Q:2-&ksslf3֢Z0` +EѺ5datXB}Bwlꛪޙ#珏Q eT9M<LX"\؍c4oC݉adfG'ݮ X&WQ#o.M/:\Ne[}62H.7<?Rb/?GNn"h5uTw#ɵ̀}HXɅ2Wn}ps9_,Bӎ&Ӵj%҇#Faڂ1q~V¸\+qhxA$Mt-hhyEQC1MT
KU~RucY6Q<b1PUy,(߬Kf&3]Kb u +7'qR_.j==C)w
;ؖƉI92}P'ҧ̎M<D}F3}J +٪ngѾ=E1Sj[w0~`jkc*f4bu.v5u9<N4@ѣIQKJBX -8݃Z(G?ˠS,</CCTQcM@YHӉV`./^ +|eFXaLԱmc*akсL}.n*cl&~3Nul}][} NfB:5:7Wb@h~+M6Ymc\#^qR%He:)yZOF4vTԲ05Em-:༉9́+Օ;٭*Ï%$X5ڶ|žxh2z-i*5YW@e-:Q/&8MP4?]b:sbVCbxH06i/P}*p)&K3{x>\(MpNaM[#J>ΆQqFX01kFf6i,O7W֜_bwX*xw;\84M-b&ccP'?5қ^52}(fqg噪g!?:4fˤ9eݴg%Yx1 +c,qN+Rҽ$EhD2NvaC8.<vW5^ouEF65(열QYF냗S3:-dc2sbHs㬎Etw<@9_͌c2h9+s +סks
L+~|/+ txO>)W +3~^+5W-(ψ]묛^[=ځVA?KFl:<xQny8R3FFL +QW'f9{ +eP n.OzQtn''-Uɯ܀ZncǛjiYnZH wԟ~? պy$!, ! gEdW_>+hpK˜jU+n-uP/[n~#D
AQ6\,6w5SD͈AdNa;]-1+zA +,n.aH0ݚ +1d9%[Gpߍ6?405' +yqYϡ4*N:c؇H3_âHbV8y2!~gR?!Q)zRLunߖMffN +Why1sxL0D| +wrr6Y3W}nXgS2TV&_7HSze){gy8'k%cI7&.|MzT~1p&KƄAPXORY.VStNOp
C*g>#sφjDs,+r[9ř砾< $EZ-\6Wu +]!v2C KLwN{=u/bwRyKQd|>1 +rm-USwZU{; hnrxĐ{!Nau+[B$1
J^FKb5_]DVōPd9q; Ǹ59~Jd<yyL\o,:@D֟=+
͙!҃e?6|"0KuRD╙+O.#/ꒆ*SffL8aIZkRqq)zF!I4ZZr(+2)EN3 +XțAYxeG#[YsM$gSbuyXTw-煄L2 ?
Uڳ;I;'K̻#ŝty%VEK٤*"d:-pr`BiЦW<]`Vrn +l[|4_ԵT%\[2G-Zc#ll!FIm?D9qk5<.5eC5u\
ʕ/ߨK+5b=oKtFMtIk\eu/[㏟p}@rфXR!'<\_- b5ÿ-~5fƛE!^hC|.i4HW>*닮tF?/yǶC/jQi2|gCy@ +t 9\[KFyA>37Cn8/u1 zITб +ԏ`\tqQ`nt<"1!)/lgʕ&Y@D78C5ی5S~J!AS'sg[US?0CgS^Xu=;K9
mb
\l/D.MT&JD1CHdqSsͰ>&q˱l;n=&v\Blkb +t<}H`5CF!V\T&I"X +)]hbAAn7QSb7mBcKOѣL4]1Zaԡe^ܸ5Hqu¦3ҁF`/gﲸ3)) R2
7D[fxV@sաfn= +=7, D?t7z|G $qRZXDGLR\<ƊwpDe)*& +ggnn||k3,n=C+RZlW~sN83]?\î TxEPXnj5/`b<GH/diSY)8 icjJ 3'>-đE䀞+_ڮpm62y;fYwP^l}-7irv ɞnucDÒS4eoI +t_ݗ3ZGPZ5j|s}W>#E5{98*`1D/@&FX쁁`7 ^֖'iGz"y0q2Go~[MI
T}Ddׅ/mYOo.S +u"x3Wm0*uA8qʫ&-U=|2 ͌fKZ D5~`MMȂ Up)
49GLLtjmCkzM}F˯7zhamre'><!-7 %e1*kİɽU~שٶߚ>$L8Ɩ8-=Lz#}ُ؈ +h⧌'Ln՟>GTQFtnPr%,rd +-Zׁz'sc5XT[4=d]]'ZO7Uț/n+EҮyKN_сGYKpP:课_^ٍ2>bڜb"mja:3I`%Q'FQy#'j(0\Ẅ́_.4<HOb +2ҷ`Vi'5\;A7)6X,)|i*0bX,Y>Nܬ9\[ ٰT7ۍ%]CHoMOҋ7QR/;JMc +CeUҢ-־x\Ae&*2i5Nm"j.mR:K9pve)[ +I7),`FD֯j0ƈ~F^LnΡo}X5E՝&;/YfY +K$Z,g/-cj!'%\$UN3̾8;.hx5Tb>u#_&Ԇ[x5/V+ŮW26lZ0t2M XCC_k9 َIFO#
IU%qQȓ)(+~PŘ9RhG?roɚ/#++G$&l4PO8 XU4tM!@$V|U=<IB& 4l3T_Ҡ_Vv?vi cdswBOI +Ep/70rˆԟ;̒T5Lb*HG˒En%ұW5bėo:WsCUTB@9DZǒ$!kuOiwZtxT>E֜o4ʅHzwp Usmy
"IIaw"<n +vez͗c<xa~Ke$q4N|f˓UVCڬ~MPD,y}ݻ[THWlAe{N c>@=.qY.=8f7rX5`LuX(e*_LѕGϳ_Zdqgv5e[&!꣭nvd+^ԑrBr@u>;7=g)S1Zs{J D<!
j+} @#/019J͟u쇴D-DZfem;*Blaht5TIW$./α~pDxyxU +~XQP>nT5zV$X#jl&%. ԽkEnR8dBg\n֓#cxWGܺ \ +ԢLp쭗ys4Nxհ0aC$%H_z`!ltul>0{hΘ!be%$%>9H9PWXwWa~Ƣ!m/QXˁ)$R)%̵wf&j`L>z$*<zB-'EݚRc}cT7p`D2mGe:. $֗1DUq.ؖ%9YP}dxqݴ'Pgwj:'
ED ȯs-Rwu;C8
qM,5+۩trYd<<jѫ29aM4{d +endstream +endobj +1210 0 obj << +/Type /FontDescriptor +/FontName /FVLWSK+TeXGyrePagella-Italic +/Flags 4 +/FontBBox [-423 -276 1292 1094] +/Ascent 725 +/CapHeight 697 +/Descent -276 +/ItalicAngle -10 +/StemV 80 +/XHeight 462 +/CharSet (/B/E/F/G/I/T/Z/a/b/c/comma/d/e/exclam/f/g/h/i/k/l/m/n/o/p/period/quoteright/r/s/t/u/v/w/x/y/z) +/FontFile 1209 0 R +>> endobj +1211 0 obj << +/Length1 726 +/Length2 1002 +/Length3 0 +/Length 1562 +/Filter /FlateDecode +>> +stream +xmR}4Ti +Mm:sԄ0f>Y3)B;s1Www"%!DZ +|T6e>Ps<==a-TC=]$B\- Bc$#Be@Հ|.gRIa!JXmA#((Gd8&W5Z]a$Z !xzEZ$"H@ +Vcr!6@AR +xJ]b)p8H +[bDT4B +g|x@ӪF!c +(I_G2tpDR۱+.rň C +^6rBbFO +Ma 6}cYCFl{G>9-K;#W(Hî3a4r_JE?;_&溲 cRnzmNjƚ}/FUۻbK d=?'aSYܳ!>yg&R}o֖^jO_XۿLS=l@l6YM;>-Zꕭ]nO'=k2+/Fxf5mie=&{r`FkUKljqg
$},ڠv=KhhnEb2:P|z|ZZJydmFju>[?87I2.:M
ls|ApKrYsSBRez˛zm'fd]`+ VEmԺ;'NHQV=kvٯJIp,(6 +endstream +endobj +1212 0 obj << +/Type /FontDescriptor +/FontName /LGRGGT+SFSS0700 +/Flags 4 +/FontBBox [-225 -320 1645 923] +/Ascent 0 +/CapHeight 0 +/Descent 0 +/ItalicAngle 0 +/StemV 50 +/XHeight 444 +/CharSet (/paragraph) +/FontFile 1211 0 R +>> endobj +1213 0 obj << +/Length1 726 +/Length2 1036 +/Length3 0 +/Length 1599 +/Filter /FlateDecode +>> +stream +xmRkPWHZ"$b"д +R,ʴ3|gw{\) Bd@@ุh2E.F8 P! +(m<M(UbnC P8!hA)`Xdy3$0*b 5!
+A4!zX`t!+,4@48a"8X9N2y,b:v3H1Vip +$H71KakGJ pY +$FR5Q`'4"f +n}昷z
M]fкfEI^S|\_}zOV>p`[3{j7̪q,-.yaw&v{귆-ۚUO{k-R65Yw8DmжFv)=Ƈ$N5;(Nkq&
u?=<5*.*kvĘ%^u:
wĪ;::WZ$05|4&;V]x8x9B%yfãzdflY@8z +]tSVcM =n:ܯ҇~ +=ӰvN=^y玹?!*{vޝ;my}+ٗO"oᜰ.xjb%p!]qiWyBE&kCbyo˜5Y/.ębWrsk}ii)#5?7&EOjwSmlg͕}^Ym_vzOJꄭsN''#Gnrƞ2I~#;=?h%TgsJ;4OqӤ@4Vgu=myx]oCquזDA酙ź}lK}xqY{Bwb7]䭻j`|sH.9~>cuy-:CO^<jӾ6{v?zKTSƮ2;2A/|iGˏ+K'Ԭt=7M!;k]*gkE}|ߚ-ψjh왺<^;Z n +\s 3E˟sfؖ2^唅<أBъܢ?,aLcEK})${?Уg8Ӻz-g~qm +endstream +endobj +1214 0 obj << +/Type /FontDescriptor +/FontName /YWWAYK+SFSS1000 +/Flags 4 +/FontBBox [-201 -321 1483 901] +/Ascent 0 +/CapHeight 0 +/Descent 0 +/ItalicAngle 0 +/StemV 50 +/XHeight 444 +/CharSet (/paragraph) +/FontFile 1213 0 R +>> endobj +1158 0 obj << +/Type /Encoding +/Differences [182/paragraph] +>> endobj +1171 0 obj << +/Type /Encoding +/Differences [32/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero.noslash/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question/at/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/bracketleft/backslash/bracketright/circumflex/underscore/quoteleft/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/braceleft/bar/braceright/tilde] +>> endobj +1175 0 obj << +/Type /Encoding +/Differences [43/plus 50/two.taboldstyle/three.taboldstyle/four.taboldstyle 58/colon 72/H 75/K 82/R 87/W 97/a.sc/b.sc/c.sc/d.sc/e.sc/f.sc 104/h.sc/i.sc 108/l.sc 110/n.sc/o.sc/p.sc 114/r.sc/s.sc/t.sc/u.sc 120/x.sc/y.sc] +>> endobj +1169 0 obj << +/Type /Encoding +/Differences [11/ff/fi/fl/ffi 26/ae 28/oslash 31/Oslash 33/exclam/quotedblright/numbersign 38/ampersand/quoteright/parenleft/parenright 43/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/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 92/quotedblleft 96/quoteleft/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/endash/emdash 128/Abreve 148/Tcaron 226/acircumflex] +>> endobj +1165 0 obj << +/Type /Encoding +/Differences [136/bullet] +>> endobj +544 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /UNLCWP+CMSS10 +/FontDescriptor 1184 0 R +/FirstChar 12 +/LastChar 122 +/Widths 1174 0 R +>> endobj +788 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /HKOJSU+CMSS12 +/FontDescriptor 1186 0 R +/FirstChar 97 +/LastChar 121 +/Widths 1157 0 R +>> endobj +469 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /ZYZYSZ+CMSS17 +/FontDescriptor 1188 0 R +/FirstChar 99 +/LastChar 116 +/Widths 1179 0 R +>> endobj +604 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /ACQBRV+CMSS8 +/FontDescriptor 1190 0 R +/FirstChar 12 +/LastChar 122 +/Widths 1164 0 R +>> endobj +1099 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /WJBQOD+CMSS9 +/FontDescriptor 1192 0 R +/FirstChar 11 +/LastChar 120 +/Widths 1156 0 R +>> endobj +565 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /IGIERE+CMSSI10 +/FontDescriptor 1194 0 R +/FirstChar 97 +/LastChar 116 +/Widths 1168 0 R +>> endobj +579 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /UJLATU+CMSY10 +/FontDescriptor 1196 0 R +/FirstChar 3 +/LastChar 105 +/Widths 1167 0 R +>> endobj +630 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /KVDNPZ+EUFM10 +/FontDescriptor 1198 0 R +/FirstChar 61 +/LastChar 61 +/Widths 1161 0 R +>> endobj +547 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /XCOHXD+EURB10 +/FontDescriptor 1200 0 R +/FirstChar 34 +/LastChar 34 +/Widths 1173 0 R +>> endobj +628 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /NCGUEH+EURM10 +/FontDescriptor 1202 0 R +/FirstChar 34 +/LastChar 120 +/Widths 1163 0 R +>> endobj +629 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /APUZFZ+MSAM10 +/FontDescriptor 1204 0 R +/FirstChar 54 +/LastChar 62 +/Widths 1162 0 R +>> endobj +549 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /DGDECB+Inconsolata +/FontDescriptor 1182 0 R +/FirstChar 32 +/LastChar 126 +/Widths 1172 0 R +/Encoding 1171 0 R +>> endobj +472 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /GJCTOY+TeXGyrePagella-Bold +/FontDescriptor 1206 0 R +/FirstChar 11 +/LastChar 122 +/Widths 1177 0 R +/Encoding 1169 0 R +>> endobj +542 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /GJCTOY+TeXGyrePagella-Bold +/FontDescriptor 1206 0 R +/FirstChar 97 +/LastChar 116 +/Widths 1176 0 R +/Encoding 1175 0 R +>> endobj +468 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /SBQSDT+TeXGyrePagella-Regular +/FontDescriptor 1208 0 R +/FirstChar 11 +/LastChar 226 +/Widths 1180 0 R +/Encoding 1169 0 R +>> endobj +470 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /SBQSDT+TeXGyrePagella-Regular +/FontDescriptor 1208 0 R +/FirstChar 43 +/LastChar 121 +/Widths 1178 0 R +/Encoding 1175 0 R +>> endobj +563 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /FVLWSK+TeXGyrePagella-Italic +/FontDescriptor 1210 0 R +/FirstChar 33 +/LastChar 122 +/Widths 1170 0 R +/Encoding 1169 0 R +>> endobj +725 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /LGRGGT+SFSS0700 +/FontDescriptor 1212 0 R +/FirstChar 182 +/LastChar 182 +/Widths 1160 0 R +/Encoding 1158 0 R +>> endobj +726 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /YWWAYK+SFSS1000 +/FontDescriptor 1214 0 R +/FirstChar 182 +/LastChar 182 +/Widths 1159 0 R +/Encoding 1158 0 R +>> endobj +580 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /SBQSDT+TeXGyrePagella-Regular +/FontDescriptor 1208 0 R +/FirstChar 136 +/LastChar 136 +/Widths 1166 0 R +/Encoding 1165 0 R +>> endobj +481 0 obj << +/Type /Pages +/Count 6 +/Parent 1215 0 R +/Kids [414 0 R 537 0 R 551 0 R 558 0 R 568 0 R 576 0 R] +>> endobj +585 0 obj << +/Type /Pages +/Count 6 +/Parent 1215 0 R +/Kids [582 0 R 589 0 R 593 0 R 600 0 R 606 0 R 613 0 R] +>> endobj +620 0 obj << +/Type /Pages +/Count 6 +/Parent 1215 0 R +/Kids [617 0 R 625 0 R 636 0 R 641 0 R 646 0 R 652 0 R] +>> endobj +667 0 obj << +/Type /Pages +/Count 6 +/Parent 1215 0 R +/Kids [662 0 R 670 0 R 675 0 R 684 0 R 691 0 R 697 0 R] +>> endobj +708 0 obj << +/Type /Pages +/Count 6 +/Parent 1215 0 R +/Kids [703 0 R 714 0 R 722 0 R 728 0 R 733 0 R 739 0 R] +>> endobj +750 0 obj << +/Type /Pages +/Count 6 +/Parent 1215 0 R +/Kids [746 0 R 752 0 R 759 0 R 765 0 R 770 0 R 775 0 R] +>> endobj +783 0 obj << +/Type /Pages +/Count 6 +/Parent 1216 0 R +/Kids [780 0 R 785 0 R 790 0 R 794 0 R 798 0 R 803 0 R] +>> endobj +811 0 obj << +/Type /Pages +/Count 6 +/Parent 1216 0 R +/Kids [808 0 R 813 0 R 817 0 R 822 0 R 828 0 R 832 0 R] +>> endobj +841 0 obj << +/Type /Pages +/Count 6 +/Parent 1216 0 R +/Kids [837 0 R 843 0 R 847 0 R 851 0 R 855 0 R 859 0 R] +>> endobj +866 0 obj << +/Type /Pages +/Count 6 +/Parent 1216 0 R +/Kids [863 0 R 868 0 R 872 0 R 876 0 R 880 0 R 886 0 R] +>> endobj +893 0 obj << +/Type /Pages +/Count 6 +/Parent 1216 0 R +/Kids [890 0 R 895 0 R 900 0 R 904 0 R 909 0 R 913 0 R] +>> endobj +920 0 obj << +/Type /Pages +/Count 6 +/Parent 1216 0 R +/Kids [917 0 R 922 0 R 926 0 R 935 0 R 942 0 R 946 0 R] +>> endobj +957 0 obj << +/Type /Pages +/Count 6 +/Parent 1217 0 R +/Kids [953 0 R 959 0 R 966 0 R 972 0 R 979 0 R 985 0 R] +>> endobj +999 0 obj << +/Type /Pages +/Count 6 +/Parent 1217 0 R +/Kids [991 0 R 1001 0 R 1009 0 R 1015 0 R 1020 0 R 1024 0 R] +>> endobj +1031 0 obj << +/Type /Pages +/Count 6 +/Parent 1217 0 R +/Kids [1028 0 R 1033 0 R 1040 0 R 1044 0 R 1049 0 R 1054 0 R] +>> endobj +1061 0 obj << +/Type /Pages +/Count 6 +/Parent 1217 0 R +/Kids [1058 0 R 1063 0 R 1067 0 R 1071 0 R 1075 0 R 1079 0 R] +>> endobj +1086 0 obj << +/Type /Pages +/Count 6 +/Parent 1217 0 R +/Kids [1083 0 R 1088 0 R 1092 0 R 1096 0 R 1101 0 R 1105 0 R] +>> endobj +1113 0 obj << +/Type /Pages +/Count 6 +/Parent 1217 0 R +/Kids [1110 0 R 1115 0 R 1119 0 R 1123 0 R 1128 0 R 1132 0 R] +>> endobj +1139 0 obj << +/Type /Pages +/Count 5 +/Parent 1218 0 R +/Kids [1136 0 R 1141 0 R 1145 0 R 1149 0 R 1153 0 R] +>> endobj +1215 0 obj << +/Type /Pages +/Count 36 +/Parent 1219 0 R +/Kids [481 0 R 585 0 R 620 0 R 667 0 R 708 0 R 750 0 R] +>> endobj +1216 0 obj << +/Type /Pages +/Count 36 +/Parent 1219 0 R +/Kids [783 0 R 811 0 R 841 0 R 866 0 R 893 0 R 920 0 R] +>> endobj +1217 0 obj << +/Type /Pages +/Count 36 +/Parent 1219 0 R +/Kids [957 0 R 999 0 R 1031 0 R 1061 0 R 1086 0 R 1113 0 R] +>> endobj +1218 0 obj << +/Type /Pages +/Count 5 +/Parent 1219 0 R +/Kids [1139 0 R] +>> endobj +1219 0 obj << +/Type /Pages +/Count 113 +/Kids [1215 0 R 1216 0 R 1217 0 R 1218 0 R] +>> endobj +1220 0 obj << +/Type /Outlines +/First 3 0 R +/Last 411 0 R +/Count 13 +>> endobj +411 0 obj << +/Title 412 0 R +/A 409 0 R +/Parent 1220 0 R +/Prev 407 0 R +>> endobj +407 0 obj << +/Title 408 0 R +/A 405 0 R +/Parent 1220 0 R +/Prev 387 0 R +/Next 411 0 R +>> endobj +403 0 obj << +/Title 404 0 R +/A 401 0 R +/Parent 391 0 R +/Prev 399 0 R +>> endobj +399 0 obj << +/Title 400 0 R +/A 397 0 R +/Parent 391 0 R +/Prev 395 0 R +/Next 403 0 R +>> endobj +395 0 obj << +/Title 396 0 R +/A 393 0 R +/Parent 391 0 R +/Next 399 0 R +>> endobj +391 0 obj << +/Title 392 0 R +/A 389 0 R +/Parent 387 0 R +/First 395 0 R +/Last 403 0 R +/Count -3 +>> endobj +387 0 obj << +/Title 388 0 R +/A 385 0 R +/Parent 1220 0 R +/Prev 383 0 R +/Next 407 0 R +/First 391 0 R +/Last 391 0 R +/Count -1 +>> endobj +383 0 obj << +/Title 384 0 R +/A 381 0 R +/Parent 1220 0 R +/Prev 327 0 R +/Next 387 0 R +>> endobj +379 0 obj << +/Title 380 0 R +/A 377 0 R +/Parent 331 0 R +/Prev 375 0 R +>> endobj +375 0 obj << +/Title 376 0 R +/A 373 0 R +/Parent 331 0 R +/Prev 371 0 R +/Next 379 0 R +>> endobj +371 0 obj << +/Title 372 0 R +/A 369 0 R +/Parent 331 0 R +/Prev 367 0 R +/Next 375 0 R +>> endobj +367 0 obj << +/Title 368 0 R +/A 365 0 R +/Parent 331 0 R +/Prev 363 0 R +/Next 371 0 R +>> endobj +363 0 obj << +/Title 364 0 R +/A 361 0 R +/Parent 331 0 R +/Prev 359 0 R +/Next 367 0 R +>> endobj +359 0 obj << +/Title 360 0 R +/A 357 0 R +/Parent 331 0 R +/Prev 355 0 R +/Next 363 0 R +>> endobj +355 0 obj << +/Title 356 0 R +/A 353 0 R +/Parent 331 0 R +/Prev 351 0 R +/Next 359 0 R +>> endobj +351 0 obj << +/Title 352 0 R +/A 349 0 R +/Parent 331 0 R +/Prev 347 0 R +/Next 355 0 R +>> endobj +347 0 obj << +/Title 348 0 R +/A 345 0 R +/Parent 331 0 R +/Prev 343 0 R +/Next 351 0 R +>> endobj +343 0 obj << +/Title 344 0 R +/A 341 0 R +/Parent 331 0 R +/Prev 339 0 R +/Next 347 0 R +>> endobj +339 0 obj << +/Title 340 0 R +/A 337 0 R +/Parent 331 0 R +/Prev 335 0 R +/Next 343 0 R +>> endobj +335 0 obj << +/Title 336 0 R +/A 333 0 R +/Parent 331 0 R +/Next 339 0 R +>> endobj +331 0 obj << +/Title 332 0 R +/A 329 0 R +/Parent 327 0 R +/First 335 0 R +/Last 379 0 R +/Count -12 +>> endobj +327 0 obj << +/Title 328 0 R +/A 325 0 R +/Parent 1220 0 R +/Prev 307 0 R +/Next 383 0 R +/First 331 0 R +/Last 331 0 R +/Count -1 +>> endobj +323 0 obj << +/Title 324 0 R +/A 321 0 R +/Parent 307 0 R +/Prev 319 0 R +>> endobj +319 0 obj << +/Title 320 0 R +/A 317 0 R +/Parent 307 0 R +/Prev 315 0 R +/Next 323 0 R +>> endobj +315 0 obj << +/Title 316 0 R +/A 313 0 R +/Parent 307 0 R +/Prev 311 0 R +/Next 319 0 R +>> endobj +311 0 obj << +/Title 312 0 R +/A 309 0 R +/Parent 307 0 R +/Next 315 0 R +>> endobj +307 0 obj << +/Title 308 0 R +/A 305 0 R +/Parent 1220 0 R +/Prev 287 0 R +/Next 327 0 R +/First 311 0 R +/Last 323 0 R +/Count -4 +>> endobj +303 0 obj << +/Title 304 0 R +/A 301 0 R +/Parent 287 0 R +/Prev 299 0 R +>> endobj +299 0 obj << +/Title 300 0 R +/A 297 0 R +/Parent 287 0 R +/Prev 295 0 R +/Next 303 0 R +>> endobj +295 0 obj << +/Title 296 0 R +/A 293 0 R +/Parent 287 0 R +/Prev 291 0 R +/Next 299 0 R +>> endobj +291 0 obj << +/Title 292 0 R +/A 289 0 R +/Parent 287 0 R +/Next 295 0 R +>> endobj +287 0 obj << +/Title 288 0 R +/A 285 0 R +/Parent 1220 0 R +/Prev 191 0 R +/Next 307 0 R +/First 291 0 R +/Last 303 0 R +/Count -4 +>> endobj +283 0 obj << +/Title 284 0 R +/A 281 0 R +/Parent 191 0 R +/Prev 219 0 R +>> endobj +279 0 obj << +/Title 280 0 R +/A 277 0 R +/Parent 219 0 R +/Prev 275 0 R +>> endobj +275 0 obj << +/Title 276 0 R +/A 273 0 R +/Parent 219 0 R +/Prev 271 0 R +/Next 279 0 R +>> endobj +271 0 obj << +/Title 272 0 R +/A 269 0 R +/Parent 219 0 R +/Prev 267 0 R +/Next 275 0 R +>> endobj +267 0 obj << +/Title 268 0 R +/A 265 0 R +/Parent 219 0 R +/Prev 263 0 R +/Next 271 0 R +>> endobj +263 0 obj << +/Title 264 0 R +/A 261 0 R +/Parent 219 0 R +/Prev 259 0 R +/Next 267 0 R +>> endobj +259 0 obj << +/Title 260 0 R +/A 257 0 R +/Parent 219 0 R +/Prev 255 0 R +/Next 263 0 R +>> endobj +255 0 obj << +/Title 256 0 R +/A 253 0 R +/Parent 219 0 R +/Prev 251 0 R +/Next 259 0 R +>> endobj +251 0 obj << +/Title 252 0 R +/A 249 0 R +/Parent 219 0 R +/Prev 247 0 R +/Next 255 0 R +>> endobj +247 0 obj << +/Title 248 0 R +/A 245 0 R +/Parent 219 0 R +/Prev 243 0 R +/Next 251 0 R +>> endobj +243 0 obj << +/Title 244 0 R +/A 241 0 R +/Parent 219 0 R +/Prev 239 0 R +/Next 247 0 R +>> endobj +239 0 obj << +/Title 240 0 R +/A 237 0 R +/Parent 219 0 R +/Prev 235 0 R +/Next 243 0 R +>> endobj +235 0 obj << +/Title 236 0 R +/A 233 0 R +/Parent 219 0 R +/Prev 231 0 R +/Next 239 0 R +>> endobj +231 0 obj << +/Title 232 0 R +/A 229 0 R +/Parent 219 0 R +/Prev 227 0 R +/Next 235 0 R +>> endobj +227 0 obj << +/Title 228 0 R +/A 225 0 R +/Parent 219 0 R +/Prev 223 0 R +/Next 231 0 R +>> endobj +223 0 obj << +/Title 224 0 R +/A 221 0 R +/Parent 219 0 R +/Next 227 0 R +>> endobj +219 0 obj << +/Title 220 0 R +/A 217 0 R +/Parent 191 0 R +/Prev 195 0 R +/Next 283 0 R +/First 223 0 R +/Last 279 0 R +/Count -15 +>> endobj +215 0 obj << +/Title 216 0 R +/A 213 0 R +/Parent 195 0 R +/Prev 211 0 R +>> endobj +211 0 obj << +/Title 212 0 R +/A 209 0 R +/Parent 195 0 R +/Prev 207 0 R +/Next 215 0 R +>> endobj +207 0 obj << +/Title 208 0 R +/A 205 0 R +/Parent 195 0 R +/Prev 203 0 R +/Next 211 0 R +>> endobj +203 0 obj << +/Title 204 0 R +/A 201 0 R +/Parent 195 0 R +/Prev 199 0 R +/Next 207 0 R +>> endobj +199 0 obj << +/Title 200 0 R +/A 197 0 R +/Parent 195 0 R +/Next 203 0 R +>> endobj +195 0 obj << +/Title 196 0 R +/A 193 0 R +/Parent 191 0 R +/Next 219 0 R +/First 199 0 R +/Last 215 0 R +/Count -5 +>> endobj +191 0 obj << +/Title 192 0 R +/A 189 0 R +/Parent 1220 0 R +/Prev 119 0 R +/Next 287 0 R +/First 195 0 R +/Last 283 0 R +/Count -3 +>> endobj +187 0 obj << +/Title 188 0 R +/A 185 0 R +/Parent 127 0 R +/Prev 183 0 R +>> endobj +183 0 obj << +/Title 184 0 R +/A 181 0 R +/Parent 127 0 R +/Prev 179 0 R +/Next 187 0 R +>> endobj +179 0 obj << +/Title 180 0 R +/A 177 0 R +/Parent 127 0 R +/Prev 175 0 R +/Next 183 0 R +>> endobj +175 0 obj << +/Title 176 0 R +/A 173 0 R +/Parent 127 0 R +/Prev 171 0 R +/Next 179 0 R +>> endobj +171 0 obj << +/Title 172 0 R +/A 169 0 R +/Parent 127 0 R +/Prev 167 0 R +/Next 175 0 R +>> endobj +167 0 obj << +/Title 168 0 R +/A 165 0 R +/Parent 127 0 R +/Prev 163 0 R +/Next 171 0 R +>> endobj +163 0 obj << +/Title 164 0 R +/A 161 0 R +/Parent 127 0 R +/Prev 159 0 R +/Next 167 0 R +>> endobj +159 0 obj << +/Title 160 0 R +/A 157 0 R +/Parent 127 0 R +/Prev 155 0 R +/Next 163 0 R +>> endobj +155 0 obj << +/Title 156 0 R +/A 153 0 R +/Parent 127 0 R +/Prev 151 0 R +/Next 159 0 R +>> endobj +151 0 obj << +/Title 152 0 R +/A 149 0 R +/Parent 127 0 R +/Prev 147 0 R +/Next 155 0 R +>> endobj +147 0 obj << +/Title 148 0 R +/A 145 0 R +/Parent 127 0 R +/Prev 143 0 R +/Next 151 0 R +>> endobj +143 0 obj << +/Title 144 0 R +/A 141 0 R +/Parent 127 0 R +/Prev 139 0 R +/Next 147 0 R +>> endobj +139 0 obj << +/Title 140 0 R +/A 137 0 R +/Parent 127 0 R +/Prev 135 0 R +/Next 143 0 R +>> endobj +135 0 obj << +/Title 136 0 R +/A 133 0 R +/Parent 127 0 R +/Prev 131 0 R +/Next 139 0 R +>> endobj +131 0 obj << +/Title 132 0 R +/A 129 0 R +/Parent 127 0 R +/Next 135 0 R +>> endobj +127 0 obj << +/Title 128 0 R +/A 125 0 R +/Parent 119 0 R +/Prev 123 0 R +/First 131 0 R +/Last 187 0 R +/Count -15 +>> endobj +123 0 obj << +/Title 124 0 R +/A 121 0 R +/Parent 119 0 R +/Next 127 0 R +>> endobj +119 0 obj << +/Title 120 0 R +/A 117 0 R +/Parent 1220 0 R +/Prev 31 0 R +/Next 191 0 R +/First 123 0 R +/Last 127 0 R +/Count -2 +>> endobj +115 0 obj << +/Title 116 0 R +/A 113 0 R +/Parent 91 0 R +/Prev 111 0 R +>> endobj +111 0 obj << +/Title 112 0 R +/A 109 0 R +/Parent 91 0 R +/Prev 107 0 R +/Next 115 0 R +>> endobj +107 0 obj << +/Title 108 0 R +/A 105 0 R +/Parent 91 0 R +/Prev 103 0 R +/Next 111 0 R +>> endobj +103 0 obj << +/Title 104 0 R +/A 101 0 R +/Parent 91 0 R +/Prev 99 0 R +/Next 107 0 R +>> endobj +99 0 obj << +/Title 100 0 R +/A 97 0 R +/Parent 91 0 R +/Prev 95 0 R +/Next 103 0 R +>> endobj +95 0 obj << +/Title 96 0 R +/A 93 0 R +/Parent 91 0 R +/Next 99 0 R +>> endobj +91 0 obj << +/Title 92 0 R +/A 89 0 R +/Parent 31 0 R +/Prev 67 0 R +/First 95 0 R +/Last 115 0 R +/Count -6 +>> endobj +87 0 obj << +/Title 88 0 R +/A 85 0 R +/Parent 67 0 R +/Prev 83 0 R +>> endobj +83 0 obj << +/Title 84 0 R +/A 81 0 R +/Parent 67 0 R +/Prev 79 0 R +/Next 87 0 R +>> endobj +79 0 obj << +/Title 80 0 R +/A 77 0 R +/Parent 67 0 R +/Prev 75 0 R +/Next 83 0 R +>> endobj +75 0 obj << +/Title 76 0 R +/A 73 0 R +/Parent 67 0 R +/Prev 71 0 R +/Next 79 0 R +>> endobj +71 0 obj << +/Title 72 0 R +/A 69 0 R +/Parent 67 0 R +/Next 75 0 R +>> endobj +67 0 obj << +/Title 68 0 R +/A 65 0 R +/Parent 31 0 R +/Prev 51 0 R +/Next 91 0 R +/First 71 0 R +/Last 87 0 R +/Count -5 +>> endobj +63 0 obj << +/Title 64 0 R +/A 61 0 R +/Parent 51 0 R +/Prev 59 0 R +>> endobj +59 0 obj << +/Title 60 0 R +/A 57 0 R +/Parent 51 0 R +/Prev 55 0 R +/Next 63 0 R +>> endobj +55 0 obj << +/Title 56 0 R +/A 53 0 R +/Parent 51 0 R +/Next 59 0 R +>> endobj +51 0 obj << +/Title 52 0 R +/A 49 0 R +/Parent 31 0 R +/Prev 47 0 R +/Next 67 0 R +/First 55 0 R +/Last 63 0 R +/Count -3 +>> endobj +47 0 obj << +/Title 48 0 R +/A 45 0 R +/Parent 31 0 R +/Prev 35 0 R +/Next 51 0 R +>> endobj +43 0 obj << +/Title 44 0 R +/A 41 0 R +/Parent 35 0 R +/Prev 39 0 R +>> endobj +39 0 obj << +/Title 40 0 R +/A 37 0 R +/Parent 35 0 R +/Next 43 0 R +>> endobj +35 0 obj << +/Title 36 0 R +/A 33 0 R +/Parent 31 0 R +/Next 47 0 R +/First 39 0 R +/Last 43 0 R +/Count -2 +>> endobj +31 0 obj << +/Title 32 0 R +/A 29 0 R +/Parent 1220 0 R +/Prev 15 0 R +/Next 119 0 R +/First 35 0 R +/Last 91 0 R +/Count -5 +>> endobj +27 0 obj << +/Title 28 0 R +/A 25 0 R +/Parent 15 0 R +/Prev 23 0 R +>> endobj +23 0 obj << +/Title 24 0 R +/A 21 0 R +/Parent 15 0 R +/Prev 19 0 R +/Next 27 0 R +>> endobj +19 0 obj << +/Title 20 0 R +/A 17 0 R +/Parent 15 0 R +/Next 23 0 R +>> endobj +15 0 obj << +/Title 16 0 R +/A 13 0 R +/Parent 1220 0 R +/Prev 7 0 R +/Next 31 0 R +/First 19 0 R +/Last 27 0 R +/Count -3 +>> endobj +11 0 obj << +/Title 12 0 R +/A 9 0 R +/Parent 7 0 R +>> endobj +7 0 obj << +/Title 8 0 R +/A 5 0 R +/Parent 1220 0 R +/Prev 3 0 R +/Next 15 0 R +/First 11 0 R +/Last 11 0 R +/Count -1 +>> endobj +3 0 obj << +/Title 4 0 R +/A 1 0 R +/Parent 1220 0 R +/Next 7 0 R +>> endobj +1221 0 obj << +/Names [(Doc-Start) 467 0 R (Hfootnote.1) 566 0 R (Hfootnote.2) 603 0 R (Hfootnote.3) 666 0 R (Hfootnote.4) 689 0 R (Hfootnote.5) 762 0 R] +/Limits [(Doc-Start) (Hfootnote.5)] +>> endobj +1222 0 obj << +/Names [(Hfootnote.6) 768 0 R (page.1) 466 0 R (page.10) 602 0 R (page.100) 1098 0 R (page.101) 1103 0 R (page.102) 1107 0 R] +/Limits [(Hfootnote.6) (page.102)] +>> endobj +1223 0 obj << +/Names [(page.103) 1112 0 R (page.104) 1117 0 R (page.105) 1121 0 R (page.106) 1125 0 R (page.107) 1130 0 R (page.108) 1134 0 R] +/Limits [(page.103) (page.108)] +>> endobj +1224 0 obj << +/Names [(page.109) 1138 0 R (page.11) 608 0 R (page.110) 1143 0 R (page.111) 1147 0 R (page.112) 1151 0 R (page.113) 1155 0 R] +/Limits [(page.109) (page.113)] +>> endobj +1225 0 obj << +/Names [(page.12) 615 0 R (page.13) 619 0 R (page.14) 627 0 R (page.15) 638 0 R (page.16) 643 0 R (page.17) 648 0 R] +/Limits [(page.12) (page.17)] +>> endobj +1226 0 obj << +/Names [(page.18) 654 0 R (page.19) 664 0 R (page.2) 539 0 R (page.20) 672 0 R (page.21) 677 0 R (page.22) 686 0 R] +/Limits [(page.18) (page.22)] +>> endobj +1227 0 obj << +/Names [(page.23) 693 0 R (page.24) 699 0 R (page.25) 705 0 R (page.26) 716 0 R (page.27) 724 0 R (page.28) 730 0 R] +/Limits [(page.23) (page.28)] +>> endobj +1228 0 obj << +/Names [(page.29) 735 0 R (page.3) 553 0 R (page.30) 741 0 R (page.31) 748 0 R (page.32) 754 0 R (page.33) 761 0 R] +/Limits [(page.29) (page.33)] +>> endobj +1229 0 obj << +/Names [(page.34) 767 0 R (page.35) 772 0 R (page.36) 777 0 R (page.37) 782 0 R (page.38) 787 0 R (page.39) 792 0 R] +/Limits [(page.34) (page.39)] +>> endobj +1230 0 obj << +/Names [(page.4) 560 0 R (page.40) 796 0 R (page.41) 800 0 R (page.42) 805 0 R (page.43) 810 0 R (page.44) 815 0 R] +/Limits [(page.4) (page.44)] +>> endobj +1231 0 obj << +/Names [(page.45) 819 0 R (page.46) 824 0 R (page.47) 830 0 R (page.48) 834 0 R (page.49) 839 0 R (page.5) 570 0 R] +/Limits [(page.45) (page.5)] +>> endobj +1232 0 obj << +/Names [(page.50) 845 0 R (page.51) 849 0 R (page.52) 853 0 R (page.53) 857 0 R (page.54) 861 0 R (page.55) 865 0 R] +/Limits [(page.50) (page.55)] +>> endobj +1233 0 obj << +/Names [(page.56) 870 0 R (page.57) 874 0 R (page.58) 878 0 R (page.59) 882 0 R (page.6) 578 0 R (page.60) 888 0 R] +/Limits [(page.56) (page.60)] +>> endobj +1234 0 obj << +/Names [(page.61) 892 0 R (page.62) 897 0 R (page.63) 902 0 R (page.64) 906 0 R (page.65) 911 0 R (page.66) 915 0 R] +/Limits [(page.61) (page.66)] +>> endobj +1235 0 obj << +/Names [(page.67) 919 0 R (page.68) 924 0 R (page.69) 928 0 R (page.7) 584 0 R (page.70) 937 0 R (page.71) 944 0 R] +/Limits [(page.67) (page.71)] +>> endobj +1236 0 obj << +/Names [(page.72) 948 0 R (page.73) 955 0 R (page.74) 961 0 R (page.75) 968 0 R (page.76) 974 0 R (page.77) 981 0 R] +/Limits [(page.72) (page.77)] +>> endobj +1237 0 obj << +/Names [(page.78) 987 0 R (page.79) 993 0 R (page.8) 591 0 R (page.80) 1003 0 R (page.81) 1011 0 R (page.82) 1017 0 R] +/Limits [(page.78) (page.82)] +>> endobj +1238 0 obj << +/Names [(page.83) 1022 0 R (page.84) 1026 0 R (page.85) 1030 0 R (page.86) 1035 0 R (page.87) 1042 0 R (page.88) 1046 0 R] +/Limits [(page.83) (page.88)] +>> endobj +1239 0 obj << +/Names [(page.89) 1051 0 R (page.9) 595 0 R (page.90) 1056 0 R (page.91) 1060 0 R (page.92) 1065 0 R (page.93) 1069 0 R] +/Limits [(page.89) (page.93)] +>> endobj +1240 0 obj << +/Names [(page.94) 1073 0 R (page.95) 1077 0 R (page.96) 1081 0 R (page.97) 1085 0 R (page.98) 1090 0 R (page.99) 1094 0 R] +/Limits [(page.94) (page.99)] +>> endobj +1241 0 obj << +/Names [(part.1) 30 0 R (part.10) 410 0 R (part.2) 118 0 R (part.3) 190 0 R (part.4) 286 0 R (part.5) 306 0 R] +/Limits [(part.1) (part.5)] +>> endobj +1242 0 obj << +/Names [(part.6) 326 0 R (part.7) 382 0 R (part.8) 386 0 R (part.9) 406 0 R (section*.1) 471 0 R (section*.10) 930 0 R] +/Limits [(part.6) (section*.10)] +>> endobj +1243 0 obj << +/Names [(section*.11) 931 0 R (section*.12) 933 0 R (section*.13) 938 0 R (section*.14) 940 0 R (section*.15) 949 0 R (section*.16) 951 0 R] +/Limits [(section*.11) (section*.16)] +>> endobj +1244 0 obj << +/Names [(section*.17) 956 0 R (section*.18) 962 0 R (section*.19) 963 0 R (section*.2) 561 0 R (section*.20) 964 0 R (section*.21) 969 0 R] +/Limits [(section*.17) (section*.21)] +>> endobj +1245 0 obj << +/Names [(section*.22) 970 0 R (section*.23) 975 0 R (section*.24) 1036 0 R (section*.25) 1037 0 R (section*.26) 1047 0 R (section*.27) 1108 0 R] +/Limits [(section*.22) (section*.27)] +>> endobj +1246 0 obj << +/Names [(section*.28) 1126 0 R (section*.3) 562 0 R (section*.4) 564 0 R (section*.5) 609 0 R (section*.6) 610 0 R (section*.7) 611 0 R] +/Limits [(section*.28) (section*.7)] +>> endobj +1247 0 obj << +/Names [(section*.8) 801 0 R (section*.9) 806 0 R (section.1) 2 0 R (section.10) 126 0 R (section.11) 194 0 R (section.12) 218 0 R] +/Limits [(section*.8) (section.12)] +>> endobj +1248 0 obj << +/Names [(section.13) 282 0 R (section.14) 290 0 R (section.15) 294 0 R (section.16) 298 0 R (section.17) 302 0 R (section.18) 310 0 R] +/Limits [(section.13) (section.18)] +>> endobj +1249 0 obj << +/Names [(section.19) 314 0 R (section.2) 6 0 R (section.20) 318 0 R (section.21) 322 0 R (section.22) 330 0 R (section.3) 14 0 R] +/Limits [(section.19) (section.3)] +>> endobj +1250 0 obj << +/Names [(section.4) 34 0 R (section.5) 46 0 R (section.6) 50 0 R (section.7) 66 0 R (section.8) 90 0 R (section.9) 122 0 R] +/Limits [(section.4) (section.9)] +>> endobj +1251 0 obj << +/Names [(subsection.10.1) 130 0 R (subsection.10.10) 166 0 R (subsection.10.11) 170 0 R (subsection.10.12) 174 0 R (subsection.10.13) 178 0 R (subsection.10.14) 182 0 R] +/Limits [(subsection.10.1) (subsection.10.14)] +>> endobj +1252 0 obj << +/Names [(subsection.10.15) 186 0 R (subsection.10.2) 134 0 R (subsection.10.3) 138 0 R (subsection.10.4) 142 0 R (subsection.10.5) 146 0 R (subsection.10.6) 150 0 R] +/Limits [(subsection.10.15) (subsection.10.6)] +>> endobj +1253 0 obj << +/Names [(subsection.10.7) 154 0 R (subsection.10.8) 158 0 R (subsection.10.9) 162 0 R (subsection.11.1) 198 0 R (subsection.11.2) 202 0 R (subsection.11.3) 206 0 R] +/Limits [(subsection.10.7) (subsection.11.3)] +>> endobj +1254 0 obj << +/Names [(subsection.11.4) 210 0 R (subsection.11.5) 214 0 R (subsection.12.1) 222 0 R (subsection.12.10) 258 0 R (subsection.12.11) 262 0 R (subsection.12.12) 266 0 R] +/Limits [(subsection.11.4) (subsection.12.12)] +>> endobj +1255 0 obj << +/Names [(subsection.12.13) 270 0 R (subsection.12.14) 274 0 R (subsection.12.15) 278 0 R (subsection.12.2) 226 0 R (subsection.12.3) 230 0 R (subsection.12.4) 234 0 R] +/Limits [(subsection.12.13) (subsection.12.4)] +>> endobj +1256 0 obj << +/Names [(subsection.12.5) 238 0 R (subsection.12.6) 242 0 R (subsection.12.7) 246 0 R (subsection.12.8) 250 0 R (subsection.12.9) 254 0 R (subsection.2.1) 10 0 R] +/Limits [(subsection.12.5) (subsection.2.1)] +>> endobj +1257 0 obj << +/Names [(subsection.22.1) 334 0 R (subsection.22.10) 370 0 R (subsection.22.11) 374 0 R (subsection.22.12) 378 0 R (subsection.22.13) 390 0 R (subsection.22.14) 394 0 R] +/Limits [(subsection.22.1) (subsection.22.14)] +>> endobj +1258 0 obj << +/Names [(subsection.22.15) 398 0 R (subsection.22.16) 402 0 R (subsection.22.2) 338 0 R (subsection.22.3) 342 0 R (subsection.22.4) 346 0 R (subsection.22.5) 350 0 R] +/Limits [(subsection.22.15) (subsection.22.5)] +>> endobj +1259 0 obj << +/Names [(subsection.22.6) 354 0 R (subsection.22.7) 358 0 R (subsection.22.8) 362 0 R (subsection.22.9) 366 0 R (subsection.3.1) 18 0 R (subsection.3.2) 22 0 R] +/Limits [(subsection.22.6) (subsection.3.2)] +>> endobj +1260 0 obj << +/Names [(subsection.3.3) 26 0 R (subsection.4.1) 38 0 R (subsection.4.2) 42 0 R (subsection.6.1) 54 0 R (subsection.6.2) 58 0 R (subsection.6.3) 62 0 R] +/Limits [(subsection.3.3) (subsection.6.3)] +>> endobj +1261 0 obj << +/Names [(subsection.7.1) 70 0 R (subsection.7.2) 74 0 R (subsection.7.3) 78 0 R (subsection.7.4) 82 0 R (subsection.7.5) 86 0 R (subsection.8.1) 94 0 R] +/Limits [(subsection.7.1) (subsection.8.1)] +>> endobj +1262 0 obj << +/Names [(subsection.8.2) 98 0 R (subsection.8.3) 102 0 R (subsection.8.4) 106 0 R (subsection.8.5) 110 0 R (subsection.8.6) 114 0 R (subsubsection.10.15.1) 717 0 R] +/Limits [(subsection.8.2) (subsubsection.10.15.1)] +>> endobj +1263 0 obj << +/Names [(subsubsection.22.6.1) 826 0 R (subsubsection.22.6.2) 835 0 R (subsubsection.22.6.3) 840 0 R (subsubsection.22.8.1) 883 0 R (subsubsection.22.8.2) 898 0 R (subsubsection.22.9.1) 929 0 R] +/Limits [(subsubsection.22.6.1) (subsubsection.22.9.1)] +>> endobj +1264 0 obj << +/Names [(subsubsection.22.9.10) 989 0 R (subsubsection.22.9.11) 994 0 R (subsubsection.22.9.12) 995 0 R (subsubsection.22.9.13) 996 0 R (subsubsection.22.9.14) 997 0 R (subsubsection.22.9.15) 998 0 R] +/Limits [(subsubsection.22.9.10) (subsubsection.22.9.15)] +>> endobj +1265 0 obj << +/Names [(subsubsection.22.9.16) 1004 0 R (subsubsection.22.9.17) 1005 0 R (subsubsection.22.9.18) 1006 0 R (subsubsection.22.9.19) 1007 0 R (subsubsection.22.9.2) 932 0 R (subsubsection.22.9.20) 1012 0 R] +/Limits [(subsubsection.22.9.16) (subsubsection.22.9.20)] +>> endobj +1266 0 obj << +/Names [(subsubsection.22.9.21) 1013 0 R (subsubsection.22.9.22) 1018 0 R (subsubsection.22.9.23) 1038 0 R (subsubsection.22.9.3) 939 0 R (subsubsection.22.9.4) 950 0 R (subsubsection.22.9.5) 976 0 R] +/Limits [(subsubsection.22.9.21) (subsubsection.22.9.5)] +>> endobj +1267 0 obj << +/Names [(subsubsection.22.9.6) 977 0 R (subsubsection.22.9.7) 982 0 R (subsubsection.22.9.8) 983 0 R (subsubsection.22.9.9) 988 0 R (subsubsection.6.1.1) 596 0 R (subsubsection.6.1.2) 597 0 R] +/Limits [(subsubsection.22.9.6) (subsubsection.6.1.2)] +>> endobj +1268 0 obj << +/Names [(table.1) 631 0 R (table.10) 701 0 R (table.11) 706 0 R (table.12) 707 0 R (table.13) 719 0 R (table.14) 720 0 R] +/Limits [(table.1) (table.14)] +>> endobj +1269 0 obj << +/Names [(table.2) 655 0 R (table.3) 665 0 R (table.4) 668 0 R (table.5) 673 0 R (table.6) 678 0 R (table.7) 687 0 R] +/Limits [(table.2) (table.7)] +>> endobj +1270 0 obj << +/Names [(table.8) 694 0 R (table.9) 700 0 R] +/Limits [(table.8) (table.9)] +>> endobj +1271 0 obj << +/Kids [1221 0 R 1222 0 R 1223 0 R 1224 0 R 1225 0 R 1226 0 R] +/Limits [(Doc-Start) (page.22)] +>> endobj +1272 0 obj << +/Kids [1227 0 R 1228 0 R 1229 0 R 1230 0 R 1231 0 R 1232 0 R] +/Limits [(page.23) (page.55)] +>> endobj +1273 0 obj << +/Kids [1233 0 R 1234 0 R 1235 0 R 1236 0 R 1237 0 R 1238 0 R] +/Limits [(page.56) (page.88)] +>> endobj +1274 0 obj << +/Kids [1239 0 R 1240 0 R 1241 0 R 1242 0 R 1243 0 R 1244 0 R] +/Limits [(page.89) (section*.21)] +>> endobj +1275 0 obj << +/Kids [1245 0 R 1246 0 R 1247 0 R 1248 0 R 1249 0 R 1250 0 R] +/Limits [(section*.22) (section.9)] +>> endobj +1276 0 obj << +/Kids [1251 0 R 1252 0 R 1253 0 R 1254 0 R 1255 0 R 1256 0 R] +/Limits [(subsection.10.1) (subsection.2.1)] +>> endobj +1277 0 obj << +/Kids [1257 0 R 1258 0 R 1259 0 R 1260 0 R 1261 0 R 1262 0 R] +/Limits [(subsection.22.1) (subsubsection.10.15.1)] +>> endobj +1278 0 obj << +/Kids [1263 0 R 1264 0 R 1265 0 R 1266 0 R 1267 0 R 1268 0 R] +/Limits [(subsubsection.22.6.1) (table.14)] +>> endobj +1279 0 obj << +/Kids [1269 0 R 1270 0 R] +/Limits [(table.2) (table.9)] +>> endobj +1280 0 obj << +/Kids [1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R] +/Limits [(Doc-Start) (subsection.2.1)] +>> endobj +1281 0 obj << +/Kids [1277 0 R 1278 0 R 1279 0 R] +/Limits [(subsection.22.1) (table.9)] +>> endobj +1282 0 obj << +/Kids [1280 0 R 1281 0 R] +/Limits [(Doc-Start) (table.9)] +>> endobj +1283 0 obj << +/Dests 1282 0 R +>> endobj +1284 0 obj << +/Type /Catalog +/Pages 1219 0 R +/Outlines 1220 0 R +/Names 1283 0 R +/PageMode/UseOutlines +/OpenAction 413 0 R +>> endobj +1285 0 obj << +/Author(Will Robertson)/Title(The fontspec package)/Subject(Advanced font selection for XeLaTeX/LuaLaTeX)/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.10)/Keywords(xetex, xelatex, luatex, lualatex, unicode, opentype, aat) +/CreationDate (D:20100527172800+09'30') +/ModDate (D:20100527172800+09'30') +/Trapped /False +/PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009) kpathsea version 5.0.0) +>> endobj +xref +0 1286 +0000000000 65535 f +0000000015 00000 n +0000033106 00000 n +0000536376 00000 n +0000000060 00000 n +0000000085 00000 n +0000036494 00000 n +0000536254 00000 n +0000000130 00000 n +0000000160 00000 n +0000036554 00000 n +0000536195 00000 n +0000000210 00000 n +0000000246 00000 n +0000036615 00000 n +0000536070 00000 n +0000000292 00000 n +0000000338 00000 n +0000041112 00000 n +0000535996 00000 n +0000000389 00000 n +0000000431 00000 n +0000041173 00000 n +0000535909 00000 n +0000000482 00000 n +0000000514 00000 n +0000041234 00000 n +0000535835 00000 n +0000000565 00000 n +0000000592 00000 n +0000045525 00000 n +0000535708 00000 n +0000000635 00000 n +0000000678 00000 n +0000045586 00000 n +0000535597 00000 n +0000000724 00000 n +0000000757 00000 n +0000045647 00000 n +0000535523 00000 n +0000000808 00000 n +0000000839 00000 n +0000045708 00000 n +0000535449 00000 n +0000000890 00000 n +0000000921 00000 n +0000050762 00000 n +0000535362 00000 n +0000000967 00000 n +0000001007 00000 n +0000050823 00000 n +0000535238 00000 n +0000001053 00000 n +0000001108 00000 n +0000053321 00000 n +0000535164 00000 n +0000001159 00000 n +0000001216 00000 n +0000057053 00000 n +0000535077 00000 n +0000001267 00000 n +0000001301 00000 n +0000059638 00000 n +0000535003 00000 n +0000001352 00000 n +0000001407 00000 n +0000059885 00000 n +0000534879 00000 n +0000001453 00000 n +0000001495 00000 n +0000059946 00000 n +0000534805 00000 n +0000001546 00000 n +0000001581 00000 n +0000062577 00000 n +0000534718 00000 n +0000001632 00000 n +0000001691 00000 n +0000062638 00000 n +0000534631 00000 n +0000001742 00000 n +0000001790 00000 n +0000062699 00000 n +0000534544 00000 n +0000001841 00000 n +0000001904 00000 n +0000065160 00000 n +0000534470 00000 n +0000001955 00000 n +0000002017 00000 n +0000068592 00000 n +0000534358 00000 n +0000002063 00000 n +0000002106 00000 n +0000068653 00000 n +0000534284 00000 n +0000002157 00000 n +0000002181 00000 n +0000071904 00000 n +0000534195 00000 n +0000002232 00000 n +0000002257 00000 n +0000071965 00000 n +0000534104 00000 n +0000002309 00000 n +0000002344 00000 n +0000075062 00000 n +0000534012 00000 n +0000002396 00000 n +0000002438 00000 n +0000075124 00000 n +0000533920 00000 n +0000002490 00000 n +0000002535 00000 n +0000075186 00000 n +0000533842 00000 n +0000002587 00000 n +0000002625 00000 n +0000079913 00000 n +0000533710 00000 n +0000002669 00000 n +0000002700 00000 n +0000079974 00000 n +0000533631 00000 n +0000002747 00000 n +0000002779 00000 n +0000080035 00000 n +0000533512 00000 n +0000002827 00000 n +0000002889 00000 n +0000080097 00000 n +0000533433 00000 n +0000002942 00000 n +0000002971 00000 n +0000083545 00000 n +0000533340 00000 n +0000003024 00000 n +0000003051 00000 n +0000083606 00000 n +0000533247 00000 n +0000003104 00000 n +0000003131 00000 n +0000086188 00000 n +0000533154 00000 n +0000003184 00000 n +0000003215 00000 n +0000086250 00000 n +0000533061 00000 n +0000003268 00000 n +0000003305 00000 n +0000088402 00000 n +0000532968 00000 n +0000003358 00000 n +0000003387 00000 n +0000091335 00000 n +0000532875 00000 n +0000003440 00000 n +0000003472 00000 n +0000091397 00000 n +0000532782 00000 n +0000003525 00000 n +0000003555 00000 n +0000093512 00000 n +0000532689 00000 n +0000003608 00000 n +0000003633 00000 n +0000096027 00000 n +0000532596 00000 n +0000003687 00000 n +0000003717 00000 n +0000096088 00000 n +0000532503 00000 n +0000003771 00000 n +0000003798 00000 n +0000096150 00000 n +0000532410 00000 n +0000003852 00000 n +0000003881 00000 n +0000098194 00000 n +0000532317 00000 n +0000003935 00000 n +0000003970 00000 n +0000101282 00000 n +0000532224 00000 n +0000004024 00000 n +0000004064 00000 n +0000101344 00000 n +0000532145 00000 n +0000004118 00000 n +0000004168 00000 n +0000108877 00000 n +0000532012 00000 n +0000004212 00000 n +0000004265 00000 n +0000108939 00000 n +0000531894 00000 n +0000004313 00000 n +0000004357 00000 n +0000109001 00000 n +0000531815 00000 n +0000004410 00000 n +0000004437 00000 n +0000109063 00000 n +0000531722 00000 n +0000004490 00000 n +0000004524 00000 n +0000109125 00000 n +0000531629 00000 n +0000004577 00000 n +0000004617 00000 n +0000112637 00000 n +0000531536 00000 n +0000004670 00000 n +0000004730 00000 n +0000112699 00000 n +0000531457 00000 n +0000004783 00000 n +0000004821 00000 n +0000112760 00000 n +0000531324 00000 n +0000004869 00000 n +0000004909 00000 n +0000116588 00000 n +0000531245 00000 n +0000004962 00000 n +0000004991 00000 n +0000116650 00000 n +0000531152 00000 n +0000005044 00000 n +0000005071 00000 n +0000116712 00000 n +0000531059 00000 n +0000005124 00000 n +0000005151 00000 n +0000116774 00000 n +0000530966 00000 n +0000005204 00000 n +0000005235 00000 n +0000119209 00000 n +0000530873 00000 n +0000005288 00000 n +0000005325 00000 n +0000119269 00000 n +0000530780 00000 n +0000005378 00000 n +0000005407 00000 n +0000122054 00000 n +0000530687 00000 n +0000005460 00000 n +0000005488 00000 n +0000122116 00000 n +0000530594 00000 n +0000005541 00000 n +0000005571 00000 n +0000122178 00000 n +0000530501 00000 n +0000005624 00000 n +0000005649 00000 n +0000125335 00000 n +0000530408 00000 n +0000005703 00000 n +0000005732 00000 n +0000125397 00000 n +0000530315 00000 n +0000005786 00000 n +0000005821 00000 n +0000127897 00000 n +0000530222 00000 n +0000005875 00000 n +0000005905 00000 n +0000127958 00000 n +0000530129 00000 n +0000005959 00000 n +0000005999 00000 n +0000128020 00000 n +0000530036 00000 n +0000006053 00000 n +0000006083 00000 n +0000130373 00000 n +0000529957 00000 n +0000006137 00000 n +0000006167 00000 n +0000130434 00000 n +0000529878 00000 n +0000006215 00000 n +0000006269 00000 n +0000133446 00000 n +0000529745 00000 n +0000006313 00000 n +0000006357 00000 n +0000133508 00000 n +0000529666 00000 n +0000006405 00000 n +0000006446 00000 n +0000136398 00000 n +0000529573 00000 n +0000006494 00000 n +0000006542 00000 n +0000136460 00000 n +0000529480 00000 n +0000006590 00000 n +0000006649 00000 n +0000136521 00000 n +0000529401 00000 n +0000006697 00000 n +0000006736 00000 n +0000141245 00000 n +0000529268 00000 n +0000006780 00000 n +0000006856 00000 n +0000141307 00000 n +0000529189 00000 n +0000006904 00000 n +0000006938 00000 n +0000141369 00000 n +0000529096 00000 n +0000006986 00000 n +0000007030 00000 n +0000141431 00000 n +0000529003 00000 n +0000007078 00000 n +0000007106 00000 n +0000141493 00000 n +0000528924 00000 n +0000007154 00000 n +0000007205 00000 n +0000143451 00000 n +0000528791 00000 n +0000007249 00000 n +0000007284 00000 n +0000143513 00000 n +0000528686 00000 n +0000007332 00000 n +0000007366 00000 n +0000143575 00000 n +0000528607 00000 n +0000007419 00000 n +0000007454 00000 n +0000145206 00000 n +0000528514 00000 n +0000007507 00000 n +0000007549 00000 n +0000149919 00000 n +0000528421 00000 n +0000007602 00000 n +0000007639 00000 n +0000149981 00000 n +0000528328 00000 n +0000007692 00000 n +0000007720 00000 n +0000150043 00000 n +0000528235 00000 n +0000007773 00000 n +0000007802 00000 n +0000152755 00000 n +0000528142 00000 n +0000007855 00000 n +0000007888 00000 n +0000163507 00000 n +0000528049 00000 n +0000007941 00000 n +0000007983 00000 n +0000168343 00000 n +0000527956 00000 n +0000008036 00000 n +0000008071 00000 n +0000198635 00000 n +0000527863 00000 n +0000008124 00000 n +0000008162 00000 n +0000228495 00000 n +0000527770 00000 n +0000008216 00000 n +0000008253 00000 n +0000230551 00000 n +0000527677 00000 n +0000008307 00000 n +0000008348 00000 n +0000238523 00000 n +0000527598 00000 n +0000008402 00000 n +0000008434 00000 n +0000240128 00000 n +0000527504 00000 n +0000008478 00000 n +0000008514 00000 n +0000245971 00000 n +0000527371 00000 n +0000008558 00000 n +0000008603 00000 n +0000246034 00000 n +0000527267 00000 n +0000008657 00000 n +0000008701 00000 n +0000246097 00000 n +0000527188 00000 n +0000008755 00000 n +0000008779 00000 n +0000246159 00000 n +0000527095 00000 n +0000008833 00000 n +0000008856 00000 n +0000246222 00000 n +0000527016 00000 n +0000008910 00000 n +0000008939 00000 n +0000249714 00000 n +0000526922 00000 n +0000008983 00000 n +0000009018 00000 n +0000251544 00000 n +0000526842 00000 n +0000009063 00000 n +0000009102 00000 n +0000010912 00000 n +0000011483 00000 n +0000011635 00000 n +0000011787 00000 n +0000011944 00000 n +0000012096 00000 n +0000012253 00000 n +0000012410 00000 n +0000012567 00000 n +0000012716 00000 n +0000012867 00000 n +0000013024 00000 n +0000013181 00000 n +0000013329 00000 n +0000013633 00000 n +0000013947 00000 n +0000014103 00000 n +0000014417 00000 n +0000014569 00000 n +0000014724 00000 n +0000015038 00000 n +0000015195 00000 n +0000015507 00000 n +0000015820 00000 n +0000015972 00000 n +0000016129 00000 n +0000016286 00000 n +0000016443 00000 n +0000016600 00000 n +0000016757 00000 n +0000016914 00000 n +0000017063 00000 n +0000017214 00000 n +0000017519 00000 n +0000017676 00000 n +0000017834 00000 n +0000017992 00000 n +0000018150 00000 n +0000018308 00000 n +0000018466 00000 n +0000018624 00000 n +0000018782 00000 n +0000018939 00000 n +0000019097 00000 n +0000019256 00000 n +0000019415 00000 n +0000019573 00000 n +0000019731 00000 n +0000023417 00000 n +0000023715 00000 n +0000020233 00000 n +0000009154 00000 n +0000020047 00000 n +0000020109 00000 n +0000522896 00000 n +0000521060 00000 n +0000523077 00000 n +0000020171 00000 n +0000522540 00000 n +0000013481 00000 n +0000013790 00000 n +0000014260 00000 n +0000014881 00000 n +0000015352 00000 n +0000015664 00000 n +0000017367 00000 n +0000019890 00000 n +0000523956 00000 n +0000023868 00000 n +0000024026 00000 n +0000024184 00000 n +0000024342 00000 n +0000024657 00000 n +0000024815 00000 n +0000024967 00000 n +0000025125 00000 n +0000025283 00000 n +0000025441 00000 n +0000025599 00000 n +0000025757 00000 n +0000025915 00000 n +0000026073 00000 n +0000026230 00000 n +0000026388 00000 n +0000026546 00000 n +0000026705 00000 n +0000026864 00000 n +0000027022 00000 n +0000027181 00000 n +0000027340 00000 n +0000027646 00000 n +0000027795 00000 n +0000027948 00000 n +0000028101 00000 n +0000028405 00000 n +0000028558 00000 n +0000029005 00000 n +0000029157 00000 n +0000029310 00000 n +0000029463 00000 n +0000029616 00000 n +0000029764 00000 n +0000029916 00000 n +0000030074 00000 n +0000030232 00000 n +0000030390 00000 n +0000030547 00000 n +0000030705 00000 n +0000030863 00000 n +0000031021 00000 n +0000031178 00000 n +0000031336 00000 n +0000031495 00000 n +0000031654 00000 n +0000031813 00000 n +0000031962 00000 n +0000032110 00000 n +0000032268 00000 n +0000032427 00000 n +0000032586 00000 n +0000032745 00000 n +0000032894 00000 n +0000033166 00000 n +0000022790 00000 n +0000020344 00000 n +0000033044 00000 n +0000023566 00000 n +0000024499 00000 n +0000522718 00000 n +0000027493 00000 n +0000520768 00000 n +0000028254 00000 n +0000028707 00000 n +0000521934 00000 n +0000028856 00000 n +0000522370 00000 n +0000036676 00000 n +0000036313 00000 n +0000033316 00000 n +0000036432 00000 n +0000040405 00000 n +0000040557 00000 n +0000040710 00000 n +0000041356 00000 n +0000040250 00000 n +0000036800 00000 n +0000040864 00000 n +0000040926 00000 n +0000040988 00000 n +0000523258 00000 n +0000041050 00000 n +0000521497 00000 n +0000041294 00000 n +0000042042 00000 n +0000041861 00000 n +0000041493 00000 n +0000041980 00000 n +0000044862 00000 n +0000045014 00000 n +0000045163 00000 n +0000045310 00000 n +0000045769 00000 n +0000044699 00000 n +0000042127 00000 n +0000045463 00000 n +0000521644 00000 n +0000523774 00000 n +0000047794 00000 n +0000047613 00000 n +0000045919 00000 n +0000047732 00000 n +0000524074 00000 n +0000050393 00000 n +0000050545 00000 n +0000050884 00000 n +0000050246 00000 n +0000047892 00000 n +0000050700 00000 n +0000053506 00000 n +0000053140 00000 n +0000051008 00000 n +0000053259 00000 n +0000053382 00000 n +0000053444 00000 n +0000056837 00000 n +0000057176 00000 n +0000056698 00000 n +0000053630 00000 n +0000056991 00000 n +0000057114 00000 n +0000521206 00000 n +0000060007 00000 n +0000059457 00000 n +0000057326 00000 n +0000059576 00000 n +0000059699 00000 n +0000059761 00000 n +0000059823 00000 n +0000062760 00000 n +0000062396 00000 n +0000060144 00000 n +0000062515 00000 n +0000065221 00000 n +0000064979 00000 n +0000062884 00000 n +0000065098 00000 n +0000524192 00000 n +0000067696 00000 n +0000068011 00000 n +0000068311 00000 n +0000068714 00000 n +0000067525 00000 n +0000065345 00000 n +0000068468 00000 n +0000522079 00000 n +0000522225 00000 n +0000521789 00000 n +0000068530 00000 n +0000067854 00000 n +0000068161 00000 n +0000071690 00000 n +0000072026 00000 n +0000071551 00000 n +0000068864 00000 n +0000071842 00000 n +0000074843 00000 n +0000075248 00000 n +0000074704 00000 n +0000072163 00000 n +0000075000 00000 n +0000077074 00000 n +0000077293 00000 n +0000076935 00000 n +0000075372 00000 n +0000077231 00000 n +0000079482 00000 n +0000079639 00000 n +0000080159 00000 n +0000079335 00000 n +0000077391 00000 n +0000079789 00000 n +0000079851 00000 n +0000082803 00000 n +0000082957 00000 n +0000083116 00000 n +0000083264 00000 n +0000085843 00000 n +0000083730 00000 n +0000082640 00000 n +0000080283 00000 n +0000083421 00000 n +0000083483 00000 n +0000083668 00000 n +0000524310 00000 n +0000086064 00000 n +0000086312 00000 n +0000085704 00000 n +0000083841 00000 n +0000086002 00000 n +0000086126 00000 n +0000088464 00000 n +0000088159 00000 n +0000086449 00000 n +0000088278 00000 n +0000088340 00000 n +0000090601 00000 n +0000093218 00000 n +0000090755 00000 n +0000091059 00000 n +0000091459 00000 n +0000090438 00000 n +0000088575 00000 n +0000091212 00000 n +0000091274 00000 n +0000090908 00000 n +0000093574 00000 n +0000093636 00000 n +0000093079 00000 n +0000091570 00000 n +0000093388 00000 n +0000093450 00000 n +0000095683 00000 n +0000096212 00000 n +0000095544 00000 n +0000093734 00000 n +0000095841 00000 n +0000095903 00000 n +0000095965 00000 n +0000098256 00000 n +0000097889 00000 n +0000096349 00000 n +0000098008 00000 n +0000098070 00000 n +0000098132 00000 n +0000524428 00000 n +0000100457 00000 n +0000100608 00000 n +0000100758 00000 n +0000100914 00000 n +0000101468 00000 n +0000100286 00000 n +0000098354 00000 n +0000101220 00000 n +0000101406 00000 n +0000101067 00000 n +0000102889 00000 n +0000106194 00000 n +0000102951 00000 n +0000102708 00000 n +0000101579 00000 n +0000102827 00000 n +0000523438 00000 n +0000523606 00000 n +0000106256 00000 n +0000106013 00000 n +0000103075 00000 n +0000106132 00000 n +0000108658 00000 n +0000109187 00000 n +0000108519 00000 n +0000106367 00000 n +0000108815 00000 n +0000112116 00000 n +0000112274 00000 n +0000112822 00000 n +0000111961 00000 n +0000109311 00000 n +0000112575 00000 n +0000112427 00000 n +0000116063 00000 n +0000116369 00000 n +0000116836 00000 n +0000115908 00000 n +0000112972 00000 n +0000116526 00000 n +0000116216 00000 n +0000524546 00000 n +0000119331 00000 n +0000119028 00000 n +0000116973 00000 n +0000119147 00000 n +0000121537 00000 n +0000121688 00000 n +0000121840 00000 n +0000122302 00000 n +0000121382 00000 n +0000119455 00000 n +0000121992 00000 n +0000122240 00000 n +0000125119 00000 n +0000125521 00000 n +0000124980 00000 n +0000122426 00000 n +0000125273 00000 n +0000125459 00000 n +0000128082 00000 n +0000127716 00000 n +0000125632 00000 n +0000127835 00000 n +0000130154 00000 n +0000130496 00000 n +0000130015 00000 n +0000128206 00000 n +0000130311 00000 n +0000133225 00000 n +0000133570 00000 n +0000133086 00000 n +0000130620 00000 n +0000133384 00000 n +0000524664 00000 n +0000136583 00000 n +0000136217 00000 n +0000133720 00000 n +0000136336 00000 n +0000520914 00000 n +0000138640 00000 n +0000138459 00000 n +0000136733 00000 n +0000138578 00000 n +0000141555 00000 n +0000141064 00000 n +0000138751 00000 n +0000141183 00000 n +0000143697 00000 n +0000143270 00000 n +0000141692 00000 n +0000143389 00000 n +0000143636 00000 n +0000145268 00000 n +0000144963 00000 n +0000143808 00000 n +0000145082 00000 n +0000145144 00000 n +0000146688 00000 n +0000146507 00000 n +0000145366 00000 n +0000146626 00000 n +0000524782 00000 n +0000147940 00000 n +0000147759 00000 n +0000146773 00000 n +0000147878 00000 n +0000150105 00000 n +0000149738 00000 n +0000148025 00000 n +0000149857 00000 n +0000152377 00000 n +0000152879 00000 n +0000152230 00000 n +0000150229 00000 n +0000152693 00000 n +0000152535 00000 n +0000152817 00000 n +0000155087 00000 n +0000154906 00000 n +0000152990 00000 n +0000155025 00000 n +0000157532 00000 n +0000157289 00000 n +0000155211 00000 n +0000157408 00000 n +0000157470 00000 n +0000159688 00000 n +0000159445 00000 n +0000157643 00000 n +0000159564 00000 n +0000159626 00000 n +0000524900 00000 n +0000161531 00000 n +0000161350 00000 n +0000159786 00000 n +0000161469 00000 n +0000163569 00000 n +0000163326 00000 n +0000161616 00000 n +0000163445 00000 n +0000165142 00000 n +0000164961 00000 n +0000163680 00000 n +0000165080 00000 n +0000166676 00000 n +0000166495 00000 n +0000165227 00000 n +0000166614 00000 n +0000168405 00000 n +0000168162 00000 n +0000166761 00000 n +0000168281 00000 n +0000171153 00000 n +0000170972 00000 n +0000168503 00000 n +0000171091 00000 n +0000525018 00000 n +0000173495 00000 n +0000173314 00000 n +0000171251 00000 n +0000173433 00000 n +0000175299 00000 n +0000175118 00000 n +0000173580 00000 n +0000175237 00000 n +0000176700 00000 n +0000176519 00000 n +0000175384 00000 n +0000176638 00000 n +0000178681 00000 n +0000178438 00000 n +0000176785 00000 n +0000178557 00000 n +0000178619 00000 n +0000181013 00000 n +0000181230 00000 n +0000180874 00000 n +0000178792 00000 n +0000181168 00000 n +0000183219 00000 n +0000183038 00000 n +0000181328 00000 n +0000183157 00000 n +0000525136 00000 n +0000185096 00000 n +0000184853 00000 n +0000183304 00000 n +0000184972 00000 n +0000185034 00000 n +0000186730 00000 n +0000186549 00000 n +0000185194 00000 n +0000186668 00000 n +0000188149 00000 n +0000187968 00000 n +0000186815 00000 n +0000188087 00000 n +0000190086 00000 n +0000190310 00000 n +0000189947 00000 n +0000188234 00000 n +0000190248 00000 n +0000193101 00000 n +0000192920 00000 n +0000190421 00000 n +0000193039 00000 n +0000194840 00000 n +0000194659 00000 n +0000193199 00000 n +0000194778 00000 n +0000525254 00000 n +0000196450 00000 n +0000196269 00000 n +0000194925 00000 n +0000196388 00000 n +0000199006 00000 n +0000198454 00000 n +0000196535 00000 n +0000198573 00000 n +0000198697 00000 n +0000198759 00000 n +0000198821 00000 n +0000198883 00000 n +0000198945 00000 n +0000200763 00000 n +0000200397 00000 n +0000199130 00000 n +0000200516 00000 n +0000200578 00000 n +0000200640 00000 n +0000200701 00000 n +0000202278 00000 n +0000202097 00000 n +0000200874 00000 n +0000202216 00000 n +0000203979 00000 n +0000203612 00000 n +0000202363 00000 n +0000203731 00000 n +0000203793 00000 n +0000203855 00000 n +0000203917 00000 n +0000206336 00000 n +0000206093 00000 n +0000204090 00000 n +0000206212 00000 n +0000206274 00000 n +0000525372 00000 n +0000208131 00000 n +0000207764 00000 n +0000206434 00000 n +0000207883 00000 n +0000207945 00000 n +0000208007 00000 n +0000208069 00000 n +0000209500 00000 n +0000209195 00000 n +0000208255 00000 n +0000209314 00000 n +0000209376 00000 n +0000209438 00000 n +0000210852 00000 n +0000210487 00000 n +0000209598 00000 n +0000210606 00000 n +0000210668 00000 n +0000210730 00000 n +0000210791 00000 n +0000212562 00000 n +0000212257 00000 n +0000210950 00000 n +0000212376 00000 n +0000212438 00000 n +0000212500 00000 n +0000214399 00000 n +0000214094 00000 n +0000212673 00000 n +0000214213 00000 n +0000214275 00000 n +0000214337 00000 n +0000216221 00000 n +0000215733 00000 n +0000214510 00000 n +0000215852 00000 n +0000215914 00000 n +0000215976 00000 n +0000216038 00000 n +0000216098 00000 n +0000216159 00000 n +0000525490 00000 n +0000217882 00000 n +0000217440 00000 n +0000216319 00000 n +0000217562 00000 n +0000217626 00000 n +0000217690 00000 n +0000217754 00000 n +0000217818 00000 n +0000219630 00000 n +0000219316 00000 n +0000217981 00000 n +0000219438 00000 n +0000219502 00000 n +0000219566 00000 n +0000221356 00000 n +0000221107 00000 n +0000219729 00000 n +0000221229 00000 n +0000221293 00000 n +0000222968 00000 n +0000222782 00000 n +0000221455 00000 n +0000222904 00000 n +0000224535 00000 n +0000224349 00000 n +0000223054 00000 n +0000224471 00000 n +0000226155 00000 n +0000225968 00000 n +0000224621 00000 n +0000226091 00000 n +0000525613 00000 n +0000228558 00000 n +0000228116 00000 n +0000226241 00000 n +0000228239 00000 n +0000228303 00000 n +0000228367 00000 n +0000228431 00000 n +0000230614 00000 n +0000230364 00000 n +0000228670 00000 n +0000230487 00000 n +0000233016 00000 n +0000232765 00000 n +0000230739 00000 n +0000232888 00000 n +0000232952 00000 n +0000234817 00000 n +0000234630 00000 n +0000233128 00000 n +0000234753 00000 n +0000237081 00000 n +0000237340 00000 n +0000236937 00000 n +0000234929 00000 n +0000237276 00000 n +0000238586 00000 n +0000238336 00000 n +0000237439 00000 n +0000238459 00000 n +0000525738 00000 n +0000240191 00000 n +0000239941 00000 n +0000238685 00000 n +0000240064 00000 n +0000241619 00000 n +0000241432 00000 n +0000240290 00000 n +0000241555 00000 n +0000243036 00000 n +0000242849 00000 n +0000241705 00000 n +0000242972 00000 n +0000244052 00000 n +0000243865 00000 n +0000243122 00000 n +0000243988 00000 n +0000246285 00000 n +0000245784 00000 n +0000244138 00000 n +0000245907 00000 n +0000247987 00000 n +0000247800 00000 n +0000246410 00000 n +0000247923 00000 n +0000525863 00000 n +0000248758 00000 n +0000248571 00000 n +0000248086 00000 n +0000248694 00000 n +0000249777 00000 n +0000249527 00000 n +0000248857 00000 n +0000249650 00000 n +0000251607 00000 n +0000251357 00000 n +0000249876 00000 n +0000251480 00000 n +0000521351 00000 n +0000252240 00000 n +0000252053 00000 n +0000251734 00000 n +0000252176 00000 n +0000255276 00000 n +0000255025 00000 n +0000252326 00000 n +0000255148 00000 n +0000255212 00000 n +0000257848 00000 n +0000257661 00000 n +0000255403 00000 n +0000257784 00000 n +0000525988 00000 n +0000260772 00000 n +0000260585 00000 n +0000257949 00000 n +0000260708 00000 n +0000263399 00000 n +0000263212 00000 n +0000260871 00000 n +0000263335 00000 n +0000266308 00000 n +0000266057 00000 n +0000263485 00000 n +0000266180 00000 n +0000266244 00000 n +0000269332 00000 n +0000269145 00000 n +0000266407 00000 n +0000269268 00000 n +0000272653 00000 n +0000272466 00000 n +0000269431 00000 n +0000272589 00000 n +0000275792 00000 n +0000275605 00000 n +0000272752 00000 n +0000275728 00000 n +0000526113 00000 n +0000278766 00000 n +0000278579 00000 n +0000275891 00000 n +0000278702 00000 n +0000281588 00000 n +0000281401 00000 n +0000278865 00000 n +0000281524 00000 n +0000284736 00000 n +0000284549 00000 n +0000281687 00000 n +0000284672 00000 n +0000287308 00000 n +0000287121 00000 n +0000284835 00000 n +0000287244 00000 n +0000287394 00000 n +0000288061 00000 n +0000519393 00000 n +0000288231 00000 n +0000288255 00000 n +0000288281 00000 n +0000288307 00000 n +0000288377 00000 n +0000288840 00000 n +0000520702 00000 n +0000289514 00000 n +0000289538 00000 n +0000290133 00000 n +0000520216 00000 n +0000290269 00000 n +0000519462 00000 n +0000290649 00000 n +0000291045 00000 n +0000291069 00000 n +0000519957 00000 n +0000291705 00000 n +0000291805 00000 n +0000292277 00000 n +0000292614 00000 n +0000292738 00000 n +0000293626 00000 n +0000323266 00000 n +0000323920 00000 n +0000334343 00000 n +0000334640 00000 n +0000343042 00000 n +0000343287 00000 n +0000351100 00000 n +0000351335 00000 n +0000364017 00000 n +0000364359 00000 n +0000373380 00000 n +0000373641 00000 n +0000381990 00000 n +0000382235 00000 n +0000389687 00000 n +0000389953 00000 n +0000397171 00000 n +0000397397 00000 n +0000404547 00000 n +0000404776 00000 n +0000412538 00000 n +0000412775 00000 n +0000420510 00000 n +0000420763 00000 n +0000453582 00000 n +0000454058 00000 n +0000492084 00000 n +0000492846 00000 n +0000515208 00000 n +0000515540 00000 n +0000517222 00000 n +0000517448 00000 n +0000519167 00000 n +0000526229 00000 n +0000526349 00000 n +0000526469 00000 n +0000526593 00000 n +0000526673 00000 n +0000526765 00000 n +0000536448 00000 n +0000536647 00000 n +0000536832 00000 n +0000537017 00000 n +0000537200 00000 n +0000537371 00000 n +0000537541 00000 n +0000537712 00000 n +0000537882 00000 n +0000538053 00000 n +0000538222 00000 n +0000538391 00000 n +0000538562 00000 n +0000538732 00000 n +0000538903 00000 n +0000539073 00000 n +0000539244 00000 n +0000539417 00000 n +0000539594 00000 n +0000539769 00000 n +0000539946 00000 n +0000540109 00000 n +0000540286 00000 n +0000540489 00000 n +0000540691 00000 n +0000540898 00000 n +0000541096 00000 n +0000541288 00000 n +0000541483 00000 n +0000541672 00000 n +0000541854 00000 n +0000542095 00000 n +0000542332 00000 n +0000542567 00000 n +0000542806 00000 n +0000543045 00000 n +0000543277 00000 n +0000543518 00000 n +0000543756 00000 n +0000543986 00000 n +0000544207 00000 n +0000544428 00000 n +0000544668 00000 n +0000544943 00000 n +0000545226 00000 n +0000545513 00000 n +0000545795 00000 n +0000546067 00000 n +0000546244 00000 n +0000546415 00000 n +0000546514 00000 n +0000546632 00000 n +0000546748 00000 n +0000546864 00000 n +0000546984 00000 n +0000547106 00000 n +0000547237 00000 n +0000547375 00000 n +0000547505 00000 n +0000547585 00000 n +0000547710 00000 n +0000547807 00000 n +0000547889 00000 n +0000547929 00000 n +0000548061 00000 n +trailer +<< /Size 1286 +/Root 1284 0 R +/Info 1285 0 R +/ID [<08A1094B7D862E13B990D4D477F033C2> <08A1094B7D862E13B990D4D477F033C2>] >> +startxref +548515 +%%EOF diff --git a/Master/texmf-dist/doc/xelatex/fontspec/README b/Master/texmf-dist/doc/xelatex/fontspec/README deleted file mode 100644 index 9daf206c175..00000000000 --- a/Master/texmf-dist/doc/xelatex/fontspec/README +++ /dev/null @@ -1,61 +0,0 @@ --------------------------- -THE FONTSPEC PACKAGE v1.18 - -The fontspec package only works with XeTeX, -a unicode capable TeX-variant. It provides -an automatic and unified interface for loading -fonts in LaTeX. XeTeX allows a direct interface -to system-installed fonts, so no manual font -installation is required. - -This package also provides access to the large -number of font features available with AAT and -OpenType fonts, including upper and lower case -numbers, proportional and monospaced numbers, -swash letters, vulgar fractions, ligature -control, and many others. - -It also provides an interface to set the XeTeX -font mappings, font colour, relative font -scaling, inter-word space scaling, and more. - ------------------------- -SUMMARY OF USER COMMANDS - -Font families may be selected individually with the command - \fontspec[<font options>]{<font name>} - -Commands for selecting fonts efficiently can be created with - \newfontfamily\myfamily[<font options>]{<font name>} - \newfontface\myfont[<font options>]{<font name>} - -Default document fonts are selected with - \setmainfont[<font options>]{<font name>} - \setsansfont[<font options>]{<font name>} - \setmonofont[<font options>]{<font name>} - -Fonts to be used in maths are defined with - \setmathrm[<font options>]{<font name>} - \setmathsf[<font options>]{<font name>} - \setmathtt[<font options>]{<font name>} - \setboldmathrm[<font options>]{<font name>} - -Features to be used for every subsequently defined font are specified with - \defaultfontfeatures{<default font options>} - -Features may be added to the font currently in use with - \addfontfeatures{<font options to add>} - \addfontfeature{<...>} does the same thing - -Features not provided for out of the box may be defined with - \newAATfeature{<feature tag>}{<feature code>}{<selector code>} - \newICUfeature{<feature tag>}{[+|-]<4 letter feature string>} - \newfontfeature{<feature tag>}{<arbitrary XeTeX font options>} - -Features can be renamed and feature options can be renamed with - \aliasfontfeature{<current feature>}{<new feature>} - \aliasfontfeatureoption{<feature>}{<current option>}{<new option>} - --------------- -Will Robertson -2004--2008 diff --git a/Master/texmf-dist/doc/xelatex/fontspec/fontspec-example.ltx b/Master/texmf-dist/doc/xelatex/fontspec/fontspec-example.ltx deleted file mode 100644 index 28b9907a7d9..00000000000 --- a/Master/texmf-dist/doc/xelatex/fontspec/fontspec-example.ltx +++ /dev/null @@ -1,98 +0,0 @@ -%% -%% This is file `fontspec-example.ltx', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% fontspec.dtx (with options: `example') -%% -%% ________________________________ -%% The fontspec package for XeLaTeX -%% (C) 2004--2008 Will Robertson -%% -%% License information appended. -%% -\documentclass{article} - -\usepackage{euler} -\usepackage[cm-default]{fontspec} -\usepackage{xltxtra} - -\defaultfontfeatures{Scale=MatchLowercase,Mapping=tex-text} -\setmainfont[Numbers=Lowercase]{FPL Neu} -\setsansfont{Lucida Sans} -\setmonofont{Lucida Sans Typewriter} - -\frenchspacing % TeX's default is a little old-fashioned... - -\begin{document} -\pagestyle{empty} - -\section*{The basics of the \textsf{fontspec} package} - -The \textsf{fontspec} package enables automatic font selection -for \LaTeX{} documents typeset with \XeTeX{}. The basic command is\\ -\indent \verb|\fontspec[font features]{font display name}|.\\ -As an example: - -\begin{center} - \Large - \fontspec[ - Colour = 0000CC, - Numbers = OldStyle, - VerticalPosition = Ordinal, - Variant = 2 - ]{Apple Chancery} - My 1st example of Apple Chancery -\end{center} - -The default, sans serif, and typewriter fonts may be set with the -\verb|\setmainfont|, \verb|\setsansfont| and \verb|\setmonofont| -commands, respectively, as shown in the preamble. They take the -same syntax as the \verb|\fontspec| package. All expected font -shapes are available: - -\begin{center} - {\itshape Italics and \scshape small caps\dots}\\ - {\sffamily\bfseries Bold sans serif and \itshape bold italic sans serif\dots} -\end{center} - -With the roman and sans serif fonts set in the preamble, text fonts -in math mode are also changed: $\cos(n\pi)=\pm 1$. The maths -typeface `Euler' has been used in this document (with the \textsf{euler} -package---or the \textsf{eulervm} package if the |xpdfdvimx| driver -is being used), since the default Computer Modern maths font is rather light. -\[ - \mathcal F(s) = \int^\infty_0 f(t) \exp(-st)\,\mathrm{d}t -\] - -You'll also notice the \verb|\defaultfontfeatures| command in the preamble. -This command takes a single argument of font features that are then -applied to every subsequent instance of font selection. The first argument -in this case, \verb|Mapping=tex-text|, enables regular \TeX{} ligatures -like \verb|``---''| for ``---''. The second automatically scales the fonts -to the same x-height. - -Please see the documentation for font feature explanation and further -package niceties. - -\end{document} -%% -%% Copyright 2004--2008 by Will Robertson <wspr81@gmail.com> -%% -%% Distributable under the LaTeX Project Public License, -%% version 1.3c or higher (your choice). The latest version of -%% this license is at: http://www.latex-project.org/lppl.txt -%% -%% This work is "maintained" (as per LPPL maintenance status) -%% by Will Robertson. -%% -%% This work consists of this file fontspec.dtx -%% and the derived files fontspec.sty, -%% fontspec.cfg, -%% fontspec.ins, -%% fontspec-example.ltx, -%% and fontspec.pdf. -%% -%% -%% End of file `fontspec-example.ltx'. diff --git a/Master/texmf-dist/doc/xelatex/fontspec/fontspec.pdf b/Master/texmf-dist/doc/xelatex/fontspec/fontspec.pdf Binary files differdeleted file mode 100644 index 7910c2f9e55..00000000000 --- a/Master/texmf-dist/doc/xelatex/fontspec/fontspec.pdf +++ /dev/null diff --git a/Master/texmf-dist/source/latex/fontspec/Makefile b/Master/texmf-dist/source/latex/fontspec/Makefile new file mode 100644 index 00000000000..9dad8ae2ea6 --- /dev/null +++ b/Master/texmf-dist/source/latex/fontspec/Makefile @@ -0,0 +1,90 @@ +# Makefile for fontspec. + +NAME = fontspec +DOC = $(NAME).pdf +DTX = $(NAME).dtx +INS = $(NAME).ins + +# Files grouped by generation mode +COMPILED = $(DOC) +UNPACKED = fontspec.sty fontspec-patches.sty fontspec.lua fontspec.cfg fontspec-luatex.tex fontspec-xetex.tex +SOURCE = $(DTX) $(INS) Makefile README +GENERATED = $(COMPILED) $(UNPACKED) + +# Files grouped by installation location +UNPACKED_DOC = fontspec-luatex.tex fontspec-xetex.tex + +RUNFILES = $(filter-out $(UNPACKED_DOC), $(UNPACKED)) +DOCFILES = $(DOC) README $(UNPACKED_DOC) +SRCFILES = $(DTX) $(INS) Makefile + +ALL_FILES = $(RUNFILES) $(DOCFILES) $(SRCFILES) + +# Installation locations +FORMAT = latex +RUNDIR = $(TEXMFROOT)/tex/$(FORMAT)/$(NAME) +DOCDIR = $(TEXMFROOT)/doc/$(FORMAT)/$(NAME) +SRCDIR = $(TEXMFROOT)/source/$(FORMAT)/$(NAME) +TEXMFROOT = ./texmf + +CTAN_ZIP = $(NAME).zip +TDS_ZIP = $(NAME).tds.zip +ZIPS = $(CTAN_ZIP) $(TDS_ZIP) + +DO_PDFLATEX = pdflatex --interaction=batchmode $< >/dev/null +DO_MAKEINDEX = makeindex -s gind.ist $(subst .dtx,,$<) >/dev/null 2>&1 + +all: $(GENERATED) +doc: $(COMPILED) +unpack: $(UNPACKED) +ctan: $(CTAN_ZIP) +tds: $(TDS_ZIP) +world: all ctan + +$(COMPILED): $(DTX) + $(DO_PDFLATEX) + $(DO_MAKEINDEX) + $(DO_PDFLATEX) + $(DO_PDFLATEX) + +$(UNPACKED): $(DTX) + $(DO_PDFLATEX) + +$(CTAN_ZIP): $(SOURCE) $(COMPILED) $(TDS_ZIP) + @echo "Making $@ for CTAN upload." + @$(RM) -- $@ + @zip -9 $@ $^ >/dev/null + +define run-install +@mkdir -p $(RUNDIR) && cp $(RUNFILES) $(RUNDIR) +@mkdir -p $(DOCDIR) && cp $(DOCFILES) $(DOCDIR) +@mkdir -p $(SRCDIR) && cp $(SRCFILES) $(SRCDIR) +endef + +$(TDS_ZIP): TEXMFROOT=./tmp-texmf +$(TDS_ZIP): $(ALL_FILES) + @echo "Making TDS-ready archive $@." + @$(RM) -- $@ + $(run-install) + @cd $(TEXMFROOT) && zip -9 ../$@ -r . >/dev/null + @$(RM) -r -- $(TEXMFROOT) + +.PHONY: install manifest clean mrproper + +install: $(ALL_FILES) + @echo "Installing in '$(TEXMFROOT)'." + $(run-install) + +manifest: + @echo "Source files:" + @for f in $(SOURCE); do echo $$f; done + @echo "" + @echo "Derived files:" + @for f in $(GENERATED); do echo $$f; done + +clean: + @$(RM) -- *.log *.aux *.toc *.idx *.ind *.ilg *.glo *.example + +mrproper: clean + @$(RM) -- $(GENERATED) $(ZIPS) + diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec.dtx new file mode 100644 index 00000000000..0f7f16c5218 --- /dev/null +++ b/Master/texmf-dist/source/latex/fontspec/fontspec.dtx @@ -0,0 +1,6041 @@ +% \iffalse +%<*internal> +\begingroup +%</internal> +%<*batchfile> +\input docstrip.tex +\keepsilent +\usedir{tex/latex/fontspec} +\let\MetaPrefix\relax +\preamble + + _________________________________________ + The fontspec package for XeLaTeX/LuaLaTeX + (C) 2004--2010 Will Robertson and Khaled Hosny + + License information appended. + + +\endpreamble +\postamble + +Copyright 2004--2010 Will Robertson <wspr81@gmail.com> +Copyright 2009--2010 Khaled Hosny <khaledhosny@eglug.org> + +Distributable under the LaTeX Project Public License, +version 1.3c or higher (your choice). The latest version of +this license is at: http://www.latex-project.org/lppl.txt + +This work is "author-maintained" by Will Robertson. + +This work consists of this file fontspec.dtx + and the derived files fontspec.sty, + fontspec.lua, + fontspec.cfg, + fontspec.ins, + fontspec-example.ltx, + and fontspec.pdf. + +\endpostamble +\askforoverwritefalse +\def\MetaPrefix{-- } +\generate{\file{fontspec.lua} {\from{fontspec.dtx}{lua}}} +\let\MetaPrefix\DoubleperCent +\generate{\file{fontspec.sty} {\from{fontspec.dtx}{fontspec}}} +\generate{\file{fontspec-patches.sty} {\from{fontspec.dtx}{patches}}} +\nopreamble\nopostamble +\generate{\file{fontspec.cfg} {\from{fontspec.dtx}{cfg}}} +\generate{\file{fontspec-xetex.tex} {\from{fontspec.dtx}{example,xetex}}} +\generate{\file{fontspec-luatex.tex} {\from{fontspec.dtx}{example,luatex}}} +%</batchfile> +%<batchfile>\endbatchfile +%<*internal> +\generate{\file{fontspec.ins} {\from{fontspec.dtx}{batchfile}}} +\generate{\file{fontspec-style.sty} {\from{fontspec.dtx}{doc-style}}} +\endgroup +%</internal> +% +%<*driver> +\ProvidesFile{fontspec.dtx} +%</driver> +%<fontspec>\ProvidesPackage{fontspec} +%<patches>\ProvidesPackage{fontspec-patches} +%<*fontspec|patches> + [2010/05/27 v2.0b1 Advanced font selection for XeLaTeX/LuaLaTeX] +%</fontspec|patches> +% +%<*driver> +\documentclass[a4paper]{ltxdoc} +\usepackage{fontspec-style} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +%\OnlyDescription +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%</driver> +% +% \fi +% +% \GetFileInfo{fontspec.dtx} +% \makeatletter ^^A% To document @-cmds +% \errorcontextlines=999 ^^A% Show up all my mistakes +% +% \title{The \textsf{fontspec} package} +% \author{\textsc{Will Robertson} and \textsc{Khaled Hosny}} +% \date{\filedate \qquad \fileversion} +% +% \maketitle +% \tableofcontents +% +% \section{History} +% +% This package began life as a \LaTeX\ interface to select system-installed +% \MacOSX\ fonts in \name{Jonathan Kew}'s \XeTeX, the first widely-used +% unicode extension to \TeX. Over time, \XeTeX\ was extended to support OpenType +% fonts and then was ported into a cross-platform program to run also on Windows +% and Linux. +% +% More recently, \LuaTeX\ is fast becoming the \TeX\ engine of the day; it +% supports unicode encodings and OpenType fonts and opens up the internals of +% \TeX\ via the Lua programming language. Hans Hagen's Con\TeX t Mk.\,IV is a +% re-write of his powerful typesetting system, taking full advantage of +% \LuaTeX's features including font support; a kernel of his work in this area +% has been extracted to be useful for other \TeX\ macro systems as well, and +% this has enabled \pkg{fontspec} to be adapted for \LaTeX\ when run with the +% \LuaTeX\ engine. Elie Roux and Khaled Hosny have been instrumental and +% invaluable with this development work. +% +% \section{Introduction} +% +% The \pkg{fontspec} package allows users of either \XeTeX\ or \LuaTeX\ to +% load OpenType fonts in a \LaTeX\ document. No font installation is necessary, +% and font features can be selected and used as desired throughout the document. +% +% Without \pkg{fontspec}, it is necessary to write cumbersome font definition +% files for \LaTeX, since \LaTeX's font selection scheme (known as the +% `\textsc{nfss}') has a lot going on behind the scenes to allow easy +% commands like \cmd\emph\ or \cmd\bfseries. With an uncountable number of +% fonts now available for use, however, it becomes less desirable to have to +% write these font definition (|.fd|) files for every font one wishes to use. +% +% Because \pkg{fontspec} is designed to work in a variety of modes, this +% user documentation is split into separate sections that are designed to be +% relatively independent. Nonetheless, the basic functionality all behaves in +% the same way, so previous users of \pkg{fontspec} under \XeTeX\ should have +% little or no difficulty switching over to \LuaTeX. +% +% This manual can get rather in-depth, as there are a lot of details +% to cover. See the example documents \path{fontspec-xetex.tex} and +% \path{fontspec-luatex.tex} for a complete minimal example with each engine. +% +% \subsection{About this manual} +% +% As of version 2.0 with the addition of \LuaTeX\ support, this manual +% is still in the process of being re-written. +% It currently contains no typeset examples. +% Your patience and feedback is appreciated! +% +% \section{Package loading and options} +% +% For basic use, no package options are required: +% \begin{Verbatim} +% \usepackage{fontspec} +% \end{Verbatim} +% +% In brief, \pkg{fontspec}'s package options are +% \begin{description}[nolistsep,font=\ttfamily] +% \item [no-math] Don't change any maths fonts; +% \item [no-config] Don't load \pkg{fontspec.cfg}; and, +% \item [quiet] Output \pkg{fontspec} warnings in the log file rather than the console output. +% \end{description} +% These are described in more detail below. +% +% \paragraph{\XeTeX\ users only} +% \name{Ross Moore}'s \pkg{xunicode} package is recommended for +% providing backwards compatibility with \LaTeX's methods for accessing extra +% characters and accents (for example, |\%|, |\$|, |\textbullet|, |\"u|, and +% so on), plus many more unicode characters. The \pkg{xltxtra} package adds a +% couple of general improvements to \LaTeX\ under \XeTeX; it also provides the +% \cmd\XeTeX\ macro to typeset the \XeTeX\ logo. +% +% \paragraph{\LuaTeX\ users only} +% In order to load fonts by their name rather than by their filename (\eg, `Latin Modern Roman' instead of `ec-lmr10'), you may need to run the script \texttt{mkluatexfontdb.lua}, which is distributed with the \pkg{luaotfload} package. Please see its documentation for more information. +% Note that the \pkg{xunicode} package is not required as it has been +% incorporated directly into the unicode font definitions (see the \pkg{euenc} package for more information). +% +% \paragraph{\pkg{babel}} +% \emph{The \pkg{babel} package is not really supported!} Especially Vietnamese, +% Greek, and Hebrew at least might not work correctly, as far as I can tell. +% There's a better chance with Cyrillic and Latin-based languages, +% however---\pkg{fontspec} ensures at least that fonts should load correctly, +% but hyphenation and other matters aren't guaranteed. Under \XeTeX, the +% \pkg{polyglossia} package is recommended instead as a modern replacement for +% \pkg{babel}. +% +% +% +% \subsection{Maths fonts adjustments} +% By default, \pkg{fontspec} adjusts \LaTeX's +% default maths setup in order to maintain the correct Computer Modern symbols +% when the roman font changes. However, it will attempt to avoid doing this if +% another maths font package is loaded (such as \pkg{mathpazo} or my upcoming +% \pkg{unicode-math} package). +% +% If you find that it is incorrectly changing the maths font when it should be +% leaving well enough alone, apply the |[no-math]| package option to manually +% suppress its maths font. +% +% \subsection{Configuration} If you wish to customise any part of the +% \pkg{fontspec} interface (see later in this manual, \vref{sec:newfeatures} +% and~\ref{sec:aliasfontfeature}), this should be done by creating your own +% \texttt{fontspec.cfg} file, \note{An example is distributed with the package.} +% which will be automatically loaded if it is found by \XeTeX. Either place it +% in the same folder as the main document for isolated cases, or in a location +% that \XeTeX\ or \LuaTeX\ searches by default; \eg\ in Mac\TeX: \path{~/Library/texmf/tex/latex/}. +% The package option |[no-config]| will suppress this behaviour under all circumstances. +% +% \subsection{Warnings} +% \label{sec:quiet-warnings} +% +% This package can give many warnings that can be harmless if you know what +% you're doing. Use the |[quiet]| package option to write these warnings to the +% transcript (\texttt{.log}) file instead. +% +% Use the |[silent]| package option to completely suppress these warnings if you +% don't even want the |.log| file cluttered up. +% +% +% +% +% +% \clearpage +% \part{General font selection} +% +% This section concerns the variety of commands that can be used to select +% fonts. +% +% \cmdbox{% +% \CMD{~~~~~\string\fontspec} \oarg{font features} \marg{font name}\\ +% \CMD{~~\string\setmainfont} \oarg{font features} \marg{font name}\\ +% \CMD{~~\string\setsansfont} \oarg{font features} \marg{font name}\\ +% \CMD{~~\string\setmonofont} \oarg{font features} \marg{font name}\\ +% \CMD{\string\newfontfamily} \meta{cmd} \oarg{font features} \marg{font name} +% } +% +% These are the main font-selecting commands of this package. +% The \cs{fontspec} command selects a font for one-time use; all +% others should be used to define the standard fonts used in a document. +% They will be described later in this section. +% +% The font features argument accepts comma separated +% \meta{font feature}=\meta{option} lists; these are described in later: +% \begin{itemize} +% \item For general font features, see \vref{sec:font-ind-features} +% \item For OpenType fonts, see Part~\vref{sec:opentype-features} +% \item For \XeTeX-only general font features, see Part~\vref{sec:xetex-features} +% \item For features for \AAT\ fonts in \XeTeX, see Part~\vref{sec:aat-features} +% \end{itemize} +% +% \section{Font selection} +% +% In both \LuaTeX\ and \XeTeX, fonts can be selected either by `font name' or +% by `file name'. +% +% \subsection{By font name} +% +% Fonts known to \LuaTeX\ or \XeTeX\ may be loaded by their names. +% `Known to' in this case generally means `exists in a standard fonts location' +% such as |~/Library/Fonts| on \MacOSX, or |C://WINNT/Fonts| on Windows. +% +% The simplest example might be something like +% \begin{Verbatim} +% \fontspec[ ... ]{Cambria} +% \end{Verbatim} +% in which the bold and italic fonts will be found automatically +% (if they exist) and are immediately accessible with the usual +% \cs{textit} and \cs{textbf} commands. +% +% TODO: add explanation for how to find out what the `font name' is. +% +% +% \subsection{By file name} +% +% When selecting fonts by file name, any font that can be found in the default +% search paths may be used directly (including in the current directory) +% without having to explicitly define the location of the font file on disk. +% +% Note that \XeTeX\ with the |xdvipdfmx| driver and \LuaTeX\ can both select +% fonts in this way, but \XeTeX\ with the |xdv2pdf| driver can only select fonts +% by name and not by file name. The |xdvipdfmx| driver is default for \XeTeX; +% the |xdv2pdf| driver is only available on \MacOSX. +% +% Fonts selected by filename must include bold and italic variants explicitly. +% \begin{Verbatim} +% \fontspec +% [ BoldFont = texgyrepagella-bold.otf , +% ItalicFont = texgyrepagella-italic.otf , +% BoldItalicFont = texgyrepagella-bolditalic.otf ] +% {texgyrepagella-regular.otf} +% \end{Verbatim} +% \pkg{fontspec} knows that the font is to be selected by file name by the +% presence of the `|.otf|' extension. +% An alternative is to specify the extension separately, as shown following: +% \begin{Verbatim} +% \fontspec +% [ Extension = .otf , +% BoldFont = texgyrepagella-bold , +% ... ] +% {texgyrepagella-regular} +% \end{Verbatim} +% If desired, an abbreviation can be applied to the font names based on the +% mandatory `font name' argument: +% \begin{Verbatim} +% \fontspec +% [ Extension = .otf , +% UprightFont = *-regular , +% BoldFont = *-bold , +% ... ] +% {texgyrepagella} +% \end{Verbatim} +% In this case `texgyrepagella' is no longer the name of an actual font, +% but is used to construct the font names for each shape; +% the |*| is replaced by `texgyrepagella'. +% Note in this case that |UprightFont| is required for constructing the font +% name of the normal font to use. +% +% To load a font that is not in one of the default search paths, its location +% in the filesystem must be specified with the |Path| feature: +% \begin{Verbatim} +% \fontspec +% [ Path = /Users/will/Fonts/ , +% UprightFont = *-regular , +% BoldFont = *-bold , +% ... ] +% {texgyrepagella} +% \end{Verbatim} +% Note that \XeTeX\ and \LuaTeX\ are able to load the font without giving an +% extension, but \pkg{fontspec} must know to search for the file; this can can +% be indicated by declaring the font exists in an `|ExternalLocation|': +% \begin{Verbatim} +% \fontspec +% [ ExternalLocation , +% BoldFont = texgyrepagella-bold , +% ... ] +% {texgyrepagella-regular} +% \end{Verbatim} +% To be honest, |Path| and |ExternalLocation| are actually the same feature +% with different names. The former can be given without an argument and the +% latter can be given with one; the different names are just for clarity. +% +% +% \section{Default font families} +% \label{sec:setxxfont} +% +% \cmdbox{ +% \cmd{\setmainfont} \oarg{font features} \marg{font name} \\ +% \cmd{\setsansfont} \oarg{font features} \marg{font name} \\ +% \cmd{\setmonofont} \oarg{font features} \marg{font name} +% } +% +% These commands are used to select +% the default font families for the entire document. They take the +% same arguments as \cmd{\fontspec}. For example: +% \def\pangram{Pack my box with five +% dozen liquor jugs.} +% \begin{example} +% \setmainfont{Baskerville} +% \setsansfont[Scale=MatchLowercase]{Skia} +% \setmonofont[Scale=MatchLowercase]{Monaco} +% \rmfamily\pangram\par +% \sffamily\pangram\par +% \ttfamily\pangram +% \end{example} +% Here, the scales of the fonts have been chosen to equalise their +% lowercase letter heights. The \feat{Scale} font feature will be discussed +% further in \vref{sec:font-ind-features}, including methods for automatic +% scaling. +% +% +% +% \section{New commands to select font families} +% +% \cmdbox{ +% \CMD{\string\newfontfamily} \cs{\meta{font-switch}} \oarg{font features} \marg{font name} \\ +% \CMD{~~\string\newfontface} \cs{\meta{font-switch}} \oarg{font features} \marg{font name} +% } +% +% \noindent For cases when a specific font with a specific +% feature set is going to be re-used many times in a document, it is inefficient +% to keep calling \cs{fontspec} for every use. While the command does not define +% a new font instance after the first call, the feature options must still be +% parsed and processed. +% +% \DescribeMacro{\newfontfamily} +% For this reason, new commands can be created for loading a particular font +% family with the \cmd\newfontfamily\ command: +% \begin{example} +% \newfontfamily\notefont{Didot} +% \notefont This is a \emph{note}. +% \end{example} +% This macro should be used to create commands that would be used in +% the same way as \cmd\rmfamily, for example. +% +% \DescribeMacro{\newfontface} +% Sometimes only a specific font face is desired, without accompanying italic or bold variants +% begin automatically selected. +% This is common when selecting a fancy italic font, say, that has swash features unavailable +% in the upright forms. \cmd\newfontface\ is used for this purpose: +% \begin{example} +% \newfontface\fancy +% [Contextuals={WordInitial,WordFinal}] +% {Hoefler Text Italic} +% \fancy where is all the vegemite +% \end{example} +% \noindent This example is repeated in \vref{sec:contextuals}. +% +% \subsection{More control over font shape selection} +% \label{sec:bfitfonts} +% +% \cmdbox{ +% \feat{~~~~~~~BoldFont} = \meta{font name} \\ +% \feat{~~~~~ItalicFont} = \meta{font name} \\ +% \feat{~BoldItalicFont} = \meta{font name} \\ +% \feat{~~~~SlantedFont} = \meta{font name} \\ +% \feat{BoldSlantedFont} = \meta{font name} \\ +% \feat{~~SmallCapsFont} = \meta{font name} +% } +% +% The automatic bold, italic, and bold italic font selections will not be +% adequate for the needs of every font: while some fonts mayn't even +% have bold or italic shapes, in which case a skilled (or lucky) +% designer may be able to chose well-matching accompanying shapes from +% a different font altogether, others can have a range of bold and +% italic fonts to chose between. The \feat{BoldFont} and +% \feat{ItalicFont} features are provided for these situations. If only +% one of these is used, the bold italic font is requested as the +% default from the \emph{new} font. +% \begin{example} +% \fontspec[BoldFont={Helvetica Neue}] +% {Helvetica Neue UltraLight} +% Helvetica Neue UltraLight \\ +% {\itshape Helvetica Neue UltraLight Italic} \\ +% {\bfseries Helvetica Neue } \\ +% {\bfseries\itshape Helvetica Neue Italic} \\ +% \end{example} +% If a bold italic shape is not defined, or you want to specify +% \emph{both} custom bold and italic shapes, the \feat{BoldItalicFont} +% feature is provided. +% +% \subsubsection{Input shorthands} +% +% For those cases that the base font name is repeated, you can +% replace it with an asterisk. For example, +% some space can be saved instead of writing `\texttt{Baskerville SemiBold}': +% \begin{example} +% \fontspec[BoldFont={* SemiBold}]{Baskerville} +% Baskerville \textit{Italic} +% \bfseries SemiBold \textit{Italic} +% \end{example} +% +% As a matter of fact, this feature can also be used for the upright font too: +% \begin{example} +% \fontspec[UprightFont={* SemiBold}, +% BoldFont={* Bold}]{Baskerville} +% Upright \textit{Italic} +% \bfseries Bold \textit{Bold Italic} +% \end{example} +% +% \subsubsection{Small caps and slanted font shapes} +% +% For the rare situations where a font family will have slanted \emph{and} +% italic shapes, these may be specified separately using the analogous +% features \feat{SlantedFont} and \feat{BoldSlantedFont}. Without these, +% however, the \LaTeX\ font switches for slanted (\cs{textsl}, \cs{slshape}) +% will default to the italic shape. +% +% Old-fashioned font families used to distribute their small caps +% glyphs in separate fonts due to the limitations on the number +% of glyphs allowed in the PostScript Type~1 format. Such fonts may be used +% by declaring the \feat{SmallCapsFont} of the family you are specifying: +% \begin{Verbatim} +% \fontspec[ +% SmallCapsFont={Minion MM Small Caps & Oldstyle Figures}, +% ]{Minion MM Roman} +% Roman 123 \\ \textsc{Small caps 456} +% \end{Verbatim} +% +% All of the bold, italic, and small caps fonts can be loaded with different +% font features from the main font. See \ref{bfit-feat} for details. +% +% \subsection{Math(s) fonts} +% +% When \cmd\setmainfont, \cmd\setsansfont\ and \cmd\setmonofont\ are used in the +% preamble, they also define the fonts to be used in maths mode inside the +% \cmd\mathrm-type commands. This only occurs in the preamble because \LaTeX\ +% freezes the maths fonts after this stage of the processing. The \pkg{fontspec} +% package must also be loaded after any maths font packages (\eg, \pkg{euler}) +% to be successful. (Actually, it is \emph{only} \pkg{euler} that is the +% problem.\footnote{Speaking of \pkg{euler}, if you want to use its +% \texttt{[mathbf]} option, it won't work, and you'll need to put this after +% \pkg{fontspec} is loaded instead: +% \ttfamily\cmd\AtBeginDocument\char`\{\cmd\DeclareMathAlphabet\cmd\mathbf\char`\{U\char`\}\char`\{eur\char`\}\char`\{b\char`\}\char`\{n\char`\}}) +% +% Note that you may find that loading some maths packages won't be as smooth as +% you expect since \pkg{fontspec} (and \XeTeX\ in general) breaks many of the +% assumptions of \TeX\ as to where maths characters and accents can be found. +% Contact me if you have troubles, but I can't guarantee to be able to fix any +% incompatibilities. The Lucida and Euler maths fonts should be fine; for all +% others keep an eye out for problems. +% +% \cmdbox{ +% \cmd{\setmathrmfont} \oarg{font features} \marg{font name} \\ +% \cmd{\setmathsffont} \oarg{font features} \marg{font name} \\ +% \cmd{\setmathttfont} \oarg{font features} \marg{font name} \\ +% \cmd{\setboldmathrmfont} \oarg{font features} \marg{font name} +% } +% +% However, the default text fonts may not necessarily be the ones you +% wish to use when typesetting maths (especially with the use of fancy +% ligatures and so on). For this reason, you may optionally use those +% commands listed in the margin (in the same way as our other +% \cmd\fontspec-like commands) to explicitly state which fonts to use +% inside such commands as \cmd\mathrm. Additionally, the +% \cmd\setboldmathrm\ command allows you define the font used for +% \cmd\mathrm\ when in bold maths mode (which is activated with, among +% others, \cmd\boldmath). +% +% For example, if you were using Optima with the Euler maths font, you +% might have this in your preamble: +% \begin{Verbatim} +% \usepackage{mathpazo} +% \usepackage{fontspec,xunicode} +% \setmainfont{Optima} +% \setmathrm{Optima} +% \setboldmathrm[BoldFont=Optima ExtraBlack]{Optima Bold} +% \end{Verbatim} +% and this would allow you to typeset something like this: +% \begin{example} +% \setmainfont{Optima Regular} +% $ X \rightarrow \mathrm{X} \rightarrow \mathbf{X} $ +% \\\boldmath +% $ X \rightarrow \mathrm{X} \rightarrow \mathbf{X} $ +% \end{example} +% (TODO: this example obviously doesn't work without the graphic.) +% +% +% \subsection{Miscellaneous font selecting details} +% +% \paragraph{Spaces} +% \cmd\fontspec\ and \cmd\addfontfeatures\ ignore trailing spaces as +% if it were a `naked' control sequence; \eg, `|M. \fontspec{...} N|' and +% `|M. \fontspec{...}N|' are the same. +% +% \paragraph{Italic small caps} +% Note that this package redefines the \cs{itshape} and \cs{scshape} +% commands in order to allow them to select italic small caps in +% conjunction. +% +% \paragraph{Emphasis and nested emphasis} +% You may specify the behaviour of the \cs{emph} command by setting the +% \cs{emshape} command. \Eg, for bold emphasis:\par +% \indent|\renewcommand\emshape{\bfseries}|\par\noindent +% Nested emphasis is controlled by the \cs{eminnershape} command. +% For example, for |\emph{\emph{...}}| to produce small caps:\par +% \indent|\renewcommand\eminnershape{\scshape}|\par\noindent +% \XeTeX\ users will need to load the \pkg{xltxtra} package before the +% advice above works. +% +% +% +% +% +% \section{Selecting font features} +% \label{sec:selectingfeature} +% +% The commands discussed so far each take an optional argument for +% accessing the font features of the requested font. These features +% are generally unavailable or harder to access in regular \LaTeX. +% +% \subsection{Default settings} \label{sec:defaults} +% +% \cmdbox{\cmd\defaultfontfeatures \marg{font features}} +% +% It is desirable to define +% options that are applied to every subsequent font selection command: +% a default feature set, so to speak. This may be defined with the +% \cmd{\defaultfontfeatures} command. +% New calls of \cs{defaultfontfeatures} overwrite previous ones. +% \begin{example} +% \fontspec{Didot} +% Some `default' Didot 0123456789 \\ +% \defaultfontfeatures{Numbers=OldStyle, Color=888888} +% \fontspec{Didot} +% Now grey, with old-style figures: 0123456789 +% \end{example} +% +% \subsection{Changing the currently selected features} +% \label{sec:addfontfeatures} +% +% \cmdbox{\cmd\addfontfeatures \marg{font features}} +% +% This command allows font features to +% be changed without knowing what features are currently selected or even what +% font is being used. A good example of this could be to add a hook to all +% tabular material to use monospaced numbers, as shown in the following example: +% +% \begin{example} +% \fontspec[Numbers=OldStyle]{Skia} +% `In 1842, 999 people sailed 97 miles in +% 13 boats. In 1923, 111 people sailed 54 +% miles in 56 boats.' \bigskip +% +% {\addfontfeatures{Numbers={Monospaced,Lining}} +% \begin{tabular}{@{} cccc @{}} +% \toprule Year & People & Miles & Boats \\ +% \midrule 1842 & 999 & 75 & 13 \\ +% 1923 & 111 & 54 & 56 \\ +% \bottomrule +% \end{tabular}} +% \end{example} +% +% \DescribeMacro{\addfontfeature} +% This command may also be executed under the alias \cmd{\addfontfeature}. +% +% \subsection{Priority of feature selection} +% Features defined with \cs{addfontfeatures} override features +% specified by \cs{fontspec}, which in turn override features +% specified by \cs{defaultfontfeatures}. If in doubt, whenever a +% new font is chosen for the first time, an entry is made in the +% transcript (\texttt{.log}) file displaying the font name and the +% features requested. +% +% \subsection{Different features for different font shapes} +% \label{sec:bfit-feat} +% +% \cmdbox{ +% \feat{~~~~~~~BoldFeatures}\marg{features} \\ +% \feat{~~~~~ItalicFeatures}\marg{features} \\ +% \feat{~BoldItalicFeatures}\marg{features} \\ +% \feat{~~~~SlantedFeatures}\marg{features} \\ +% \feat{BoldSlantedFeatures}\marg{features} \\ +% \feat{~~SmallCapsFeatures}\marg{features} +% } +% +% It is entirely possible that separate fonts in a family will require +% separate options; \eg, Hoefler Text Italic contains various swash +% feature options that are completely unavailable in the upright shapes. +% +% The font features defined at the top level of the optional \cmd\fontspec\ +% argument are applied to \emph{all} shapes of the family. +% Using \feat{Upright-}, \feat{SmallCaps-}, \feat{Bold-}, +% \feat{Italic-}, and \feat{BoldItalicFeatures}, +% separate font features may be defined to their respective shapes +% \emph{in addition} to, and with precedence over, the `global' font features. +% \begin{aatexample} +% \fontspec{Hoefler Text} \itshape \scshape +% Attention All Martini Drinkers \\ +% \addfontfeature{ItalicFeatures={Alternate = 1}} +% Attention All Martini Drinkers \\ +% \end{aatexample} +% Combined with the options for selecting arbitrary \emph{fonts} for +% the different shapes, these separate feature options allow the +% selection of arbitrary weights in the Skia typeface, for example: +% \begin{aatexample} +% \fontspec[BoldFont={Skia}, +% BoldFeatures={Weight=2}]{Skia} +% Skia \\ \bfseries Skia `Bold' +% \end{aatexample} +% +% Note that because most fonts include their small caps glyphs +% within the main font, features specified with \feat{SmallCapsFeatures} are applied \emph{in addition} to +% any other shape-specific features as defined above, and hence \feat{SmallCapsFeatures} +% can be nested within \feat{ItalicFeatures} and friends. Every combination +% of upright, italic, bold and small caps can thus be assigned individual +% features, as shown in the following ludicrous example. +% \begin{example} +% \fontspec[ +% UprightFeatures={Color = 220022, +% SmallCapsFeatures = {Color=115511}}, +% ItalicFeatures={Color = 2244FF, +% SmallCapsFeatures = {Color=112299}}, +% BoldFeatures={Color = FF4422, +% SmallCapsFeatures = {Color=992211}}, +% BoldItalicFeatures={Color = 888844, +% SmallCapsFeatures = {Color=444422}}, +% ]{Hoefler Text} +% Upright {\scshape Small Caps}\\ +% \itshape Italic {\scshape Italic Small Caps}\\ +% \upshape\bfseries Bold {\scshape Bold Small Caps}\\ +% \itshape Bold Italic {\scshape Bold Italic Small Caps} +% \end{example} +% +% \subsection{Different features for different font sizes} +% \label{sec:sizefeature} +% +% \cmdbox{ +% \ttfamily SizeFeatures = \char`\{\\ +% \null\quad...\\ +% \null\quad\char`\{~Size = +% \rmfamily\meta{size range}\ttfamily +% , +% \rmfamily \meta{font features}\ttfamily +% ~\char`\} \\ +% \null\quad\char`\{~Size = +% \rmfamily\meta{size range}\ttfamily +% , Font = +% \rmfamily\meta{font name}\texttt, \meta{font features}\ttfamily +% ~\char`\} \\ +% \null\quad... \\ +% \char`\}} +% +% The \feat{SizeFeature} feature is a little more complicated +% than the previous features discussed. It allows different fonts +% and different font features to be selected for a given font +% family as the point size varies. +% +% It takes a comma separated list of braced, comma separated lists of features for each size range. +% Each sub-list must contain the \opt{Size} option +% to declare the size range, and optionally \opt{Font} to change the +% font based on size. Other (regular) fontspec features that are added +% are used on top of the font features that would be used anyway. +% +% \begin{example} +% \fontspec[ SizeFeatures={ +% {Size={-8}, Font=Apple Chancery, Color=AA0000}, +% {Size={8-14}, Color=00AA00}, +% {Size={14-}, Color=0000AA}} ]{Skia} +% {\scriptsize Small\par} Normal size\par {\Large Large\par} +% \end{example} +% A less trivial example is shown in the context of optical font sizes +% in \vref{sec:opticalsize}. +% +% To be precise, the \opt{Size} sub-feature accepts arguments in the form shown in \vref{tab:sizing}. +% Braces around the size range are optional. For an exact font size (|Size=X|) +% font sizes chosen near that size will `snap'. For example, for size definitions +% at exactly 11pt and 14pt, if a 12pt font is requested \emph{actually} the +% 11pt font will be selected. This is a remnant of the past when fonts were designed +% in metal (at obviously rigid sizes) and later when bitmap fonts were similarly +% designed for fixed sizes. +% +% If additional features are only required for a single size, the other sizes +% must still be specified. As in: +% \begin{verbatim} +% SizeFeatures={ +% {Size=-10,Numbers=Uppercase}, +% {Size=10-}} +% \end{verbatim} +% Otherwise, the font sizes greater than 10 won't be defined! +% +% \begin{table} +% \centering +% \begin{tabular}{@{}ll@{}} +% \toprule +% Input & Font size, $s$ \\ +% \midrule +% |Size = X-| & $s \geq \texttt{X}$ \\ +% |Size = -Y| & $s < \texttt{Y}$ \\ +% |Size = X-Y| & $\texttt{X} \leq s < \texttt{Y}$ \\ +% |Size = X| & $s = \texttt{X}$ \\ +% \bottomrule +% \end{tabular} +% \caption{Syntax for specifying the size to apply custom font features.}\label{tab:sizing} +% \end{table} +% +% +% \section{Font independent options} \label{sec:font-ind-features} +% +% Features introduced in this section may be used with any font. +% +% \subsection{Color} +% +% \feat{Color} (or \feat{Colour}), also shown in \vref{sec:defaults} +% and elsewhere, uses \XeTeX\ font specifications to set the color of +% the text. The color is defined as a triplet of two-digit Hex RGB +% values, with optionally another value for the transparency (where +% |00| is completely transparent and |FF| is opaque.) +% \begin{example} +% \fontsize{48}{48} +% \fontspec{Hoefler Text Black} +% {\addfontfeature{Color=FF000099}W}\kern-1ex +% {\addfontfeature{Color=0000FF99}S}\kern-0.8ex +% {\addfontfeature{Color=DDBB2299}P}\kern-0.8ex +% {\addfontfeature{Color=00BB3399}R} +% \end{example} +% +% \subsection{Scale} +% +% \cmdbox{ +% \feat{Scale} = \meta{number} \\ +% \feat{Scale} = \opt{MatchLowercase} \\ +% \feat{Scale} = \opt{MatchUppercase} +% } +% +% In its explicit form, \feat{Scale} takes a single +% numeric argument for linearly scaling the font, as demonstrated +% in \vref{sec:setxxfont}. +% It is now possible to +% measure the correct dimensions of the fonts loaded and +% calculate values to scale them automatically. +% +% As well as a numerical argument, \feat{Scale} feature +% also accepts options \opt{MatchLowercase} +% and \opt{MatchUppercase}, which will scale the font being selected to match +% the current default roman font to either the height of the lowercase or +% uppercase letters, respectively. +% \begin{example} +% \setmainfont{Georgia} +% \newfontfamily\lc[Scale=MatchLowercase]{Verdana} +% The perfect match {\lc is hard to find.}\\ +% \newfontfamily\uc[Scale=MatchUppercase]{Arial} +% L O G O \uc F O N T +% \end{example} +% The amount of scaling used in each instance is reported in the \texttt{.log} file. +% Since there is some subjectivity about the exact scaling to be used, these values +% should be used to fine-tune the results. +% +% +% +% +% \subsection{Interword space} +% +% While the space between words can be varied on an individual +% basis with the \TeX\ primitive \cmd\spaceskip\ command, it is +% more convenient to specify this information when the font is +% first defined. +% +% The space in between words in a paragraph will be chosen automatically +% by \XeTeX, and generally will not need to be adjusted. For those +% times when the precise details are important, the \feat{WordSpace} +% features is +% provided, which takes either a single scaling factor to scale the +% value that \XeTeX\ has already chosen, or a triplet of comma-separated +% values for the nominal value, the stretch, and the shrink of the +% interword space, respectively. \Ie, |WordSpace=0.8| is the same as +% |WordSpace={0.8,0.8,0.8}|. +% +% For example, I believe that the Cochin font, as distributed with \MacOSX, +% is too widely spaced. Now, this can be rectified, as shown below. +% \begingroup +% \let\centering\relax +% \def\fillertext{Some filler text for our example to take up some +% space, and to demonstrate the large default interword space in \textit{Cochin}.} +% \begin{example} +% \fontspec{Cochin} +% \fillertext +% \vspace{1em} +% +% \fontspec[ WordSpace = {0.7 , 0.8 , 0.9} ]{Cochin} +% \fillertext +% \end{example} +% \endgroup +% Be careful with the unpredictable things that the \AAT\ font renderer +% can do with the text! Unlike \TeX, \MacOSX\ will allow +% fonts to letterspace themselves, which can be seen above; OpenType fonts, however, will not +% show this tendency, as they do not support this arguably dubious feature. +% +% \subsection{Post-punctuation space} +% +% If \cmd\frenchspacing\ is \emph{not} in effect, \TeX\ will allow extra +% space after some punctuation in its goal of justifying the lines of text. +% Generally, this is considered old-fashioned, but occasionally in small amounts the +% effect can be justified, pardon the pun. +% +% The \feat{PunctuationSpace} feature takes a scaling factor by which to +% adjust the nominal value chosen for the font. Note that |PunctuationSpace=0| +% is \emph{not} equivalent to \cmd\frenchspacing, although the difference +% will only be apparent when a line of text is under-full. +% \begingroup +% \let\centering\relax +% \begin{example} +% \nonfrenchspacing +% \fontspec{Baskerville} +% Letters, Words. Sentences. \par +% \fontspec[PunctuationSpace=0.5]{Baskerville} +% Letters, Words. Sentences. \par +% \fontspec[PunctuationSpace=0]{Baskerville} +% Letters, Words. Sentences. +% \end{example} +% \endgroup +% +% Also be aware that the above caveat for interword space also applies here, +% so after the last line in the above example, the \feat{PunctuationSpace} +% for \emph{all} Baskerville instances will be |0|. +% +% +% +% +% \subsection{The hyphenation character} +% +% The letter used for hyphenation may be chosen with the \feat{HyphenChar} +% feature. It takes three types of input, which are chosen according to some +% simple rules. If the input is the string \opt{None}, then hyphenation is +% suppressed for this font. If the input is a single character, then this +% character is used. Finally, if the input is longer than a single character +% it must be the UTF-8 slot number of the hyphen character you desire. +% +% Below, Adobe Garamond Pro's uppercase hyphenation character +% is used to demonstrate a possible use for this feature. +% The second example redundantly demonstrates the default behaviour +% of using the hyphen as the hyphenation character. +% \begingroup +% \let\centering\relax +% \begin{example} +% \def\text +% {A MULTITUDE OF OBSTREPEROUSLY HYPHENATED ENTITIES +% \par\vspace{1ex}} +% \fontspec[HyphenChar=None]{Adobe Garamond Pro} \text +% \fontspec[HyphenChar={-}]{Adobe Garamond Pro} \text +% \fontspec[HyphenChar="F6BA]{Adobe Garamond Pro} \text +% \end{example} +% \endgroup +% Note that in an actual situation, the \opt{Uppercase} option of the \feat{Letters} feature +% would probably supply this for you (see \vref{sec:letters}). +% +% This package (or the \pkg{xltxtra} package for \XeTeX\ users) +% redefines \LaTeX's \cmd\-\ macro +% such that it adjusts along with the above changes. +% +% +% \subsection{Optical font sizes} \label{sec:opticalsize} +% +% Optically scaled fonts thicken out as the font size decreases +% in order to make the glyph shapes more robust (less prone to losing +% detail), which improves legibility. Conversely, at large optical +% sizes the serifs and other small details may be more delicately +% rendered. +% +% OpenType fonts with optical scaling will exist in +% several discrete sizes, and these will be selected by \XeTeX\ +% \emph{automatically} determined by the current font size. The +% \opt{OpticalSize} option may be used to specify a different optical +% size. +% +% For the OpenType font Warnock Pro, we have three optically sized +% variants: caption, subhead, and display. With \opt{OpticalSize} set +% to zero, no optical size font substitution is performed: +% \begin{opentypeexample} +% \fontspec[OpticalSize=0]{Warnock Pro Caption} +% Warnock Pro optical sizes \\ +% \fontspec[OpticalSize=0]{Warnock Pro} +% Warnock Pro optical sizes \\ +% \fontspec[OpticalSize=0]{Warnock Pro Subhead} +% Warnock Pro optical sizes \\ +% \fontspec[OpticalSize=0]{Warnock Pro Display} +% Warnock Pro optical sizes +% \end{opentypeexample} +% +% Automatic OpenType optical scaling is shown in the following +% example, in which we've scaled down some large text in order to be +% able to compare the difference for equivalent font sizes: (this +% gives the same output as we saw in the previous example for Warnock +% Pro Display) +% \begin{opentypeexample} +% \fontspec{Warnock Pro} +% Automatic optical size \\ +% \scalebox{0.4}{\Huge +% Automatic optical size} +% \end{opentypeexample} +% +% The \feat{SizeFeatures} feature (\vref{sec:sizefeature}) can be +% used to specify exactly which optical sizes will be used for ranges +% of font size. For example, something like +% \begin{verbatim} +% \fontspec[ +% SizeFeatures={ +% {Size=-10, OpticalSize=8 }, +% {Size= 10-14, OpticalSize=10}, +% {Size= 14-18, OpticalSize=14}, +% {Size= 18-, OpticalSize=18}} +% ]{Warnock Pro} +% \end{verbatim} +% +% \clearpage +% \part{OpenType} +% \label{sec:opentype-features} +% +% \section{Introduction} +% +% TODO: explain OpenType font features. +% +% Some examples of font features have already be seen in previous +% sections. +% +% Multiple options may be given to +% any feature that accepts non-numerical input, although doing so will +% not always work. Some options will override others in generally +% obvious ways; \Verb|Numbers={OldStyle,Lining}| doesn't make much +% sense because the two options are mutually exclusive, and \XeTeX\ +% will simply use the last option that is specified (in this case +% using \opt{Lining} over \opt{OldStyle}). +% +% If a feature or an option is requested that the font does not have, +% a warning is given in the console output. As mentioned in \vref{sec:quiet-warnings} +% these warnings can be suppressed by selecting the \texttt{[quiet]} package option. +% +% \section{Complete listing of OpenType font features} +% +% \subsection{Ligatures} +% +% \feat{Ligatures} refer to the replacement of two separate characters +% with a specially drawn glyph for functional or \ae sthetic reasons. +% The list of options, of which multiple may be selected at one time, +% is shown in \ref{feat:Ligatures}. +% +% \begin{features}{Ligatures} +% \otf*{Required}{rlig} +% \otf*{Common}{liga} +% \otf*{Contextual}{clig} +% \otf{Rare/Discretionary}{dlig} +% \otf{Historical}{hlig} +% \otf{TeX}{tlig/trep} +% \end{features} +% +% \begin{opentypeexample} +% \fontspec[Ligatures=Rare]{Adobe Garamond Pro} +% \textit{strict firefly} \\ +% \fontspec[Ligatures=NoCommon]{Adobe Garamond Pro} +% \textit{strict firefly} +% \end{opentypeexample} +% +% \subsection{Letters} \label{sec:letters} +% The \opt{Letters} feature specifies how the letters in the current font +% will look. OpenType fonts have options: +% \opt{Uppercase}, \opt{SmallCaps}, \opt{PetiteCaps}, +% \opt{UppercaseSmallCaps}, \opt{UppercasePetiteCaps}, and +% \opt{Unicase}. +% +% \begin{features}{Letters} +% \otf{Uppercase}{case} +% \otf{SmallCaps}{smcp} +% \otf{PetiteCaps}{pcap} +% \otf{UppercaseSmallCaps}{c2sc} +% \otf{UppercasePetiteCaps}{c2pc} +% \otf{Unicase}{unic} +% \end{features} +% +% Petite caps are smaller than small caps. +% \opt{SmallCaps} and \opt{PetiteCaps} +% turn lowercase letters into the smaller caps letters, +% whereas the \opt{Uppercase...} options turn the \emph{capital} letters into +% the smaller +% caps (good, \eg, for applying to already uppercase acronyms like +% `NASA'). `Unicase' is a weird hybrid of upper and lower case +% letters. +% \begin{opentypeexample} +% \fontspec[Letters=SmallCaps]{TeX Gyre Adventor} +% THIS SENTENCE no verb \\ +% \fontspec[Letters=UppercaseSmallCaps]{TeX Gyre Adventor} +% THIS SENTENCE no verb +% \end{opentypeexample} +% +% Note that The \opt{Uppercase} option will (probably) +% not actually map letters to uppercase. +% \note{If you want automatic uppercase letters, look to \LaTeX's +% \cmd\MakeUppercase\ command.} +% It is designed select various +% uppercase forms for glyphs such as accents and dashes. +% \begin{opentypeexample} +% \fontspec{Warnock Pro} +% UPPER-CASE EXAMPLE \\ +% \addfontfeature{Letters=Uppercase} +% UPPER-CASE EXAMPLE +% \end{opentypeexample} +% The \feat{Kerning} feature also contains an \opt{Uppercase} option, +% which adds a small amount of spacing in between letters (see \vref{sec:kerning}). +% +% \subsection{Numbers} +% +% The \feat{Numbers} feature defines how numbers will look in the +% selected font, accepting options shown in \ref{feat:Numbers}. +% +% \begin{features}{Numbers} +% \otf{Uppercase/Lining}{lnum} +% \otf{Lowercase/OldStyle}{onum} +% \otf{Proportional}{pnum} +% \otf{Monospaced}{tnum} +% \otf{SlashedZero}{zero} +% \otf{Remap}{anum} +% \end{features} +% +% The synonyms +% \opt{Uppercase} and \opt{Lowercase} are equivalent to \opt{Lining} and +% \opt{OldStyle}, respectively. +% The differences have been shown previously +% in \vref{sec:addfontfeatures}. +% The \opt{Monospaced} option is useful for tabular material when digits need +% to be vertically aligned. +% +% The \opt{SlashedZero} option +% replaces the default zero with a slashed version to prevent +% confusion with an uppercase `O'. +% +% The \opt{Remap} option maps numerals to their Arabic or Farsi equivalents +% based on the current \opt{Language} setting (see \vref{sec:ot}). This +% is based on a \LuaTeX\ feature of the \pkg{luaotfload} package, +% not an OpenType feature. +% +% \begin{opentypeexample} +% \fontspec[Numbers=Lining]{TeX Gyre Bonum} +% 0123456789 +% \fontspec[Numbers=SlashedZero]{TeX Gyre Bonum} +% 0123456789 +% \end{opentypeexample} +% +% +% \subsection{Contextuals} +% This feature refers to glyph substitution that vary by their position; +% things like contextual swashes are accessed here. +% +% \begin{features}{Contextuals} +% \otf{Swash}{cswh} +% \otf*{Alternate}{calt} +% \otf{WordInitial}{init} +% \otf{WordFinal}{fina} +% \otf{LineFinal}{falt} +% \otf{Inner}{medi} +% \end{features} +% +% \begin{opentypeexample} +% \fontspec{Warnock Pro} \itshape +% Without Contextual Swashes \\ +% \fontspec[Contextuals=Swash]{Warnock Pro} +% With Contextual Swashes; cf. W C S +% \end{opentypeexample} +% +% Historic forms are accessed in OpenType +% fonts via the feature \feat{Style=Historic}; this is generally \emph{not} +% contextual in OpenType, which is why it is not included here. +% +% \subsection{Vertical Position} +% +% \begin{features}{VerticalPosition} +% \otf{Superior}{sups} +% \otf{Inferior}{subs} +% \otf{Numerator}{numr} +% \otf{Denominator}{dnom} +% \otf{ScientificInferior}{sinf} +% \otf{Ordinal}{ordn} +% \end{features} +% +% The \feat{VerticalPosition} feature is used to access things like +% subscript (\opt{Inferior}) and superscript (\opt{Superior}) numbers and +% letters (and a small amount of punctuation, sometimes). +% The \opt{Ordinal} option will only raise characters that are used +% in some languages directly after a number. +% +% The \opt{ScientificInferior} feature will move glyphs +% further below the baseline than the \opt{Inferior} feature. +% +% \opt{Numerator} and \opt{Denominator} should only be used for creating +% arbitrary fractions (see next section). +% +% \begin{aatexample} +% \fontspec{Skia} +% Normal +% \fontspec[VerticalPosition=Superior]{Skia} +% Superior +% \fontspec[VerticalPosition=Inferior]{Skia} +% Inferior \\ +% \fontspec[VerticalPosition=Ordinal]{Skia} +% 1st 2nd 3rd 4th 0th 8abcde +% \end{aatexample} +% \begin{opentypeexample} +% \fontspec[VerticalPosition=Superior]{Warnock Pro} +% Sup: abdehilmnorst (-\$12,345.67) \\ +% \fontspec[VerticalPosition=Numerator]{Warnock Pro} +% Numerator: 12345 \\ +% \fontspec[VerticalPosition=Denominator]{Warnock Pro} +% Denominator: 12345 \\ +% \fontspec[VerticalPosition=ScientificInferior]{Warnock Pro} +% Scientific Inferior: 12345 \\ +% \fontspec[VerticalPosition=Ordinal]{Warnock Pro} +% `Ordinals': 1st 2nd 3rd 4th 0th +% \end{opentypeexample} +% +% The \pkg{realscripts} package (yet to be released) +% (or \pkg{xltxtra} for \XeTeX) +% redefines the \cmd\textsubscript\ and +% \cmd\textsuperscript\ commands to use the above font features. +% +% +% \subsection{Fractions} +% +% \begin{features}{Fractions} +% \otf{On}{frac} +% \otf{Alternate}{afrc} +% \end{features} +% +% For OpenType fonts use a regular text slash to create fractions: +% \begin{opentypeexample} +% \fontspec{Hiragino Maru Gothic Pro W4} +% 1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\ +% \addfontfeature{Fractions=On} +% 1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\ +% \end{opentypeexample} +% +% Some (Asian fonts predominantly) also provide for the +% \opt{Alternate} feature: +% \begin{opentypeexample} +% \fontspec{Hiragino Maru Gothic Pro W4} +% 1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\ +% \addfontfeature{Fractions=Alternate} +% 1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\ +% \end{opentypeexample} +% +% \subsection{StylisticSet} +% +% This feature selects a `Stylistic Set' variation, +% specified numerically. These correspond to OpenType +% features |ss01|, |ss02|, etc. +% +% Here are two examples from the Junicode +% font\footnote{\url{http://junicode.sf.net}}; thanks to Adam +% Buchbinder for the suggestion. +% This example shows insular (ancient) letterforms: +% \begin{opentypeexample} +% \fontspec{Junicode} +% Insular forms. \\ +% \addfontfeature{StylisticSet=2} +% Insular forms. \\ +% \end{opentypeexample} +% And here is shown enlarged minuscules: (capital letters remain +% unchanged) +% \begin{opentypeexample} +% \fontspec{Junicode} +% ENLARGED Minuscules. \\ +% \addfontfeature{StylisticSet=6} +% ENLARGED Minuscules. \\ +% \end{opentypeexample} +% +% (This is a synonym of the \feat{Variant} feature for \AAT\ fonts.) +% See \vref{sec:newfeatures} for a way to assign names to stylistic sets, +% which should be done on a per-font basis. +% +% \subsection{Alternates} +% Selection of the \feat{Alternate} feature again +% must be done numerically. +% +% For OpenType fonts, this option is used to access numerical +% variations of the raw |salt| feature. I can't show an example, +% but here's how it would be used: +% \begin{verbatim} +% \fontspec[Alternate=1]{Garamond Premier Pro} +% \end{verbatim} +% Numbering starts from |0| for the first stylistic alternate. +% Note that the \texttt{Style=Alternate} option is equivalent +% to \texttt{Alternate=0} to access the default case. +% +% See \vref{sec:newfeatures} for a way to assign names to alternates, +% which should be done on a per-font basis. +% +% \subsection{Style} +% +% \begin{features}{Style} +% \otf{Alternate}{salt} +% \otf{Italic}{ital} +% \otf{Ruby}{ruby} +% \otf{Swash}{swsh} +% \otf{Historic}{hist} +% \otf{TitlingCaps}{titl} +% \otf{HorizontalKana}{hkna} +% \otf{VerticalKana}{vkna} +% \end{features} +% +% `Ruby' refers to a small optical size, used in +% Japanese typography for annotations. +% For fonts with multiple |salt| OpenType features, +% use the fontspec \feat{Alternate} feature instead. +% +% \setexsize\Large +% \begin{opentypeexample} +% \fontspec{Warnock Pro} +% K Q R k v w y \\ +% \addfontfeature{Style=Alternate} +% K Q R k v w y +% \end{opentypeexample} +% Note the occasional inconsistency with which font features are labelled; a long-tailed `Q' could turn up anywhere! +% \setexsize\Large +% \begin{opentypeexample} +% \fontspec{Adobe Jenson Pro} +% M Q Z \\ +% \addfontfeature{Style=Historic} +% M Q Z +% \end{opentypeexample} +% \setexsize\Large +% \begin{example} +% \fontspec{Adobe Garamond Pro} +% TITLING CAPS \\ +% \addfontfeature{Style=TitlingCaps} +% TITLING CAPS +% \end{example} +% +% Two features in one example; \opt{Italic} affects the Latin text and \opt{Ruby} the Japanese: +% \setexsize\Large +% \begin{opentypeexample} +% \fontspec{Hiragino Mincho Pro W3} +% Latin ようこそ ワカヨタレソ \\ +% \addfontfeature{Style={Italic, Ruby}} +% Latin ようこそ ワカヨタレソ +% \end{opentypeexample} +% Note the difference here between the default and the horizontal style kana: +% \setexsize\Large +% \begin{aatexample} +% \fontspec{Hiragino Mincho Pro} +% ようこそ ワカヨタレソ \\ +% {\addfontfeature{Style=HorizontalKana} +% ようこそ ワカヨタレソ} \\ +% {\addfontfeature{Style=VerticalKana} +% ようこそ ワカヨタレソ} +% \end{aatexample} +% +% +% +% \subsection{Diacritics} +% Specifies how diacritics should be placed. +% These will usually be controlled automatically +% according to the Script setting. +% +% \begin{features}{Diacritics} +% \otf*{MarkToBase}{mark} +% \otf*{MarkToMark}{mkmk} +% \otf*{AboveBase}{abvm} +% \otf*{BelowBase}{blwm} +% \end{features} +% +% \subsection{Kerning}\label{sec:kerning} +% Specifies how inter-glyph spacing should behave. +% +% \begin{features}{Kerning} +% \otf{Uppercase}{cpsp} +% \otf*[Off]{On}{kern} +% \end{features} +% +% As briefly mentioned previously at the end of \vref{sec:letters}, +% the \opt{Uppercase} option will add a small amount of tracking between uppercase letters: +% \begin{opentypeexample} +% \fontspec{Warnock Pro} +% UPPER-CASE EXAMPLE \\ +% \addfontfeature{Kerning=Uppercase} +% UPPER-CASE EXAMPLE +% \end{opentypeexample} +% +% +% \subsection{CJK shape} +% +% \begin{features}{CJKShape} +% \otf{Traditional}{trad} +% \otf{Simplified} {smpl} +% \otf{JIS1978} {jp78} +% \otf{JIS1983} {jp83} +% \otf{JIS1990} {jp90} +% \otf{Expert} {expt} +% \otf{NLC} {nlck} +% \end{features} +% +% There have been many standards for how CJK ideographic +% glyphs are `supposed' to look. Some fonts will contain many alternate +% glyphs available in order to be able to display these gylphs +% correctly in whichever form is appropriate. Both \AAT\ and OpenType +% fonts support the following \feat{CJKShape} options: +% \opt{Traditional}, \opt{Simplified}, \opt{JIS1978}, \opt{JIS1983}, +% \opt{JIS1990}, and \opt{Expert}. OpenType also supports the \opt{NLC} option. +% \setexsize\LARGE +% \begin{opentypeexample} +% \fontspec{Hiragino Mincho Pro} +% {\addfontfeature{CJKShape=Traditional} +% 唖噛躯 妍并訝 } \\ +% {\addfontfeature{CJKShape=NLC} +% 唖噛躯 妍并訝 } \\ +% {\addfontfeature{CJKShape=Expert} +% 唖噛躯 妍并訝 } +% \end{opentypeexample} +% +% \subsection{Character width}\label{sec:CharacterWidth} +% Many Asian fonts are equipped with variously spaced characters for +% shoe-horning into their generally monospaced text. +% These are +% accessed through the \feat{CharacterWidth} feature. +% +% \begin{features}{CharacterWidth} +% \otf{Proportional}{pwid} +% \otf{Full} {fwid} +% \otf{Half} {hwid} +% \otf{Third} {twid} +% \otf{Quarter} {qwid} +% \otf{AlternateProportional}{palt} +% \otf{AlternateHalf}{halt} +% \end{features} +% +% Japanese alphabetic glyphs (in Hiragana or Katakana) may be typeset +% proportionally, to better fit horizontal measures, or monospaced, to +% fit into the rigid grid imposed by ideographic typesetting. In this +% latter case, there are also half-width forms for squeezing more kana +% glyphs (which are less complex than the kanji they are amongst) into +% a given block of space. The same features are given to roman letters +% in Japanese fonts, for typesetting foreign words in the same style +% as the surrounding text. +% \begin{opentypeexample} +% \def\test{\makebox[2cm][l]{ようこそ}% % \makebox[2.5cm][l]{ワカヨタレソ}% % \makebox[2.5cm][l]{abcdef}} +% \fontspec{Hiragino Mincho Pro} +% {\addfontfeature{CharacterWidth=Proportional}\test}\\ +% {\addfontfeature{CharacterWidth=Full}\test}\\ +% {\addfontfeature{CharacterWidth=Half}\test} +% \end{opentypeexample} +% The same situation occurs with numbers, which are provided in +% increasingly illegible compressed forms: +% \setexsize\large +% \begin{aatexample} +% \fontspec[Renderer=AAT]{Hiragino Mincho Pro} +% {\addfontfeature{CharacterWidth=Full} +% ---12321---}\\ +% {\addfontfeature{CharacterWidth=Half} +% ---1234554321---}\\ +% {\addfontfeature{CharacterWidth=Third} +% ---123456787654321---}\\ +% {\addfontfeature{CharacterWidth=Quarter} +% ---12345678900987654321---} +% \end{aatexample} +% The option \opt{CharacterWidth=Full} doesn't work with the +% default OpenType font renderer (ICU) due to a bug in the Hiragino fonts. +% +% \subsection{Vertical typesetting} +% +% TODO! +% +% +% \subsection{OpenType scripts and languages}\label{sec:ot} +% +% When dealing with fonts that include glyphs for various languages, +% they may contain different font features for the different character +% sets and languages it supports. These may be selected with the +% \feat{Script} and \feat{Language} features. The possible options are +% tabulated in \vref{tab:ot-scpt} and \vref{tab:ot-lang}, +% respectively. When a script or language is requested that is not +% supported by the current font, a warning is printed in the console output. +% +% Because these font features can +% change which features are able to be selected for the font, they are selected +% by \pkg{fontspec} before all others and will specifically select the \opt{ICU} +% renderer for this font, as described in \vref{sec:renderer}. +% \iffalse +% \subsubsection{\feat{Script} examples} +% +% In the following examples, the same font is used to typeset the +% verbatim input and the \XeTeX\ output. Because the \opt{Script} is +% only specified for the output, the text is rendered incorrectly in +% the verbatim input. Many examples of incorrect diacritic spacing as +% well as a lack of contextual ligatures and rearrangement can be +% seen. Thanks to \name{Jonathan Kew}, \name{Yves Codet} and +% \name{Gildas Hamel} for their contributions towards these examples. +% +% \begingroup +% \setverbwidth{0.5\textwidth} +% \begin{opentypeexample} +% \fontspec[Script=Arabic]{Code2000} +% العربي +% \end{opentypeexample} +% \begin{opentypeexample} +% \fontspec[Script=Devanagari]{Code2000} +% हिन्दी +% \end{opentypeexample} +% \begin{opentypeexample} +% \fontspec[Script=Bengali]{Code2000} +% লেখ +% \end{opentypeexample} +% \begin{opentypeexample} +% \fontspec[Script=Gujarati]{Code2000} +% મર્યાદા-સૂચક નિવેદન +% \end{opentypeexample} +% \begin{opentypeexample} +% \fontspec[Script=Malayalam]{Code2000} +% നമ്മുടെ പാരബര്യ +% \end{opentypeexample} +% \begin{opentypeexample} +% \fontspec[Script=Gurmukhi]{Code2000} +% ਆਦਿ ਸਚੁ ਜੁਗਾਦਿ ਸਚੁ +% \end{opentypeexample} +% \begin{opentypeexample} +% \fontspec[Script=Tamil]{Code2000} +% தமிழ் தேடி +% \end{opentypeexample} +% \begin{opentypeexample} +% \fontspec[Script=Hebrew]{Code2000} +% רִדְתָּֽהּ +% \end{opentypeexample} +% \endgroup +% +% \subsubsection{\feat{Language} examples} +% +% Vietnamese requires careful diacritic placement: +% \begingroup +% \setexsize\Large +% \begin{opentypeexample} +% \fontspec{Doulos SIL} +% cấp số mỗi \\ +% \addfontfeature{Language=Vietnamese} +% cấp số mỗi +% \end{opentypeexample} +% \noindent Moldavian, as a typical example from Ralf Stubner's FPL Neu font: +% \setexsize\Large +% \begin{opentypeexample} +% \fontspec{FPL Neu} +% Ş ş Ţ ţ \\ +% \addfontfeature{Language=Moldavian} +% Ş ş Ţ ţ +% \end{opentypeexample} +% \endgroup +% \fi +% +% \subsubsection{Defining new scripts and languages} +% +% \DescribeMacro{\newfontscript} +% \DescribeMacro{\newfontlanguage} +% Further scripts and languages may be added with the \cmd\newfontscript\ +% and \cmd\newfontlanguage\ commands. For example, +% \begin{Verbatim} +% \newfontscript{Arabic}{arab} +% \newfontlanguage{Turkish}{TUR} +% \end{Verbatim} +% The first argument is the \pkg{fontspec} name, the second the OpenType +% definition. The advantage to using these commands rather than \cmd\newfontfeature\ +% (see \vref{sec:newfeatures}) is the error-checking that is performed when +% the script or language is requested. +% +% \begin{table}[!hbp] +% \def\dup{\makebox[0pt][r]{\textcolor{red}{\P}}}% % \setlength\columnseprule{0pt} +% \hrule +% \begin{multicols}{4}\setlength\parindent{0pt} +% \sffamily\scriptsize +% Arabic \par Armenian \par Balinese \par Bengali \par Bopomofo \par Braille \par Buginese \par Buhid \par Byzantine Music \par Canadian Syllabics \par Cherokee \par \dup CJK \par \dup CJK Ideographic \par Coptic \par Cypriot Syllabary \par Cyrillic \par Default \par Deseret \par Devanagari \par Ethiopic \par Georgian \par Glagolitic \par Gothic \par Greek \par Gujarati \par Gurmukhi \par Hangul Jamo \par Hangul \par Hanunoo \par Hebrew \par \dup Hiragana and Katakana \par \dup Kana \par Javanese \par Kannada \par Kharosthi \par Khmer \par Lao \par Latin \par Limbu \par Linear B \par Malayalam \par \dup Math \par \dup Maths \par Mongolian \par Musical Symbols \par Myanmar \par N'ko \par Ogham \par Old Italic \par Old Persian Cuneiform \par Oriya \par Osmanya \par Phags-pa \par Phoenician \par Runic \par Shavian \par Sinhala \par Sumero-Akkadian Cuneiform \par Syloti Nagri \par Syriac \par Tagalog \par Tagbanwa \par Tai Le \par Tai Lu \par Tamil \par Telugu \par Thaana \par Thai \par Tibetan \par Tifinagh \par Ugaritic Cuneiform \par Yi +% \end{multicols} +% \hrule +% \caption{Defined \opt{Script}s for OpenType fonts. Aliased names are shown in adjacent positions marked with red pilcrows ({\sffamily\textcolor{red}{\P}}), defined in \texttt{fontspec.cfg}.} +% \label{tab:ot-scpt} +% \end{table} +% +% \begin{table}[p] +% \vspace*{-3cm} +% \hspace{-3cm} +% \begin{minipage}{\linewidth+4cm} +% \setlength\columnseprule{0pt} +% \hrule +% \begin{multicols}{6} +% \everypar{\setlength\parindent{0pt}\setlength\hangindent{2em}} +% \sffamily\footnotesize\raggedright +% Abaza \par Abkhazian \par Adyghe \par Afrikaans \par Afar \par Agaw \par Altai \par Amharic \par Arabic \par Aari \par Arakanese \par Assamese \par Athapaskan \par Avar \par Awadhi \par Aymara \par Azeri \par Badaga \par Baghelkhandi \par Balkar \par Baule \par Berber \par Bench \par Bible Cree \par Belarussian \par Bemba \par Bengali \par Bulgarian \par Bhili \par Bhojpuri \par Bikol \par Bilen \par Blackfoot \par Balochi \par Balante \par Balti \par Bambara \par Bamileke \par Breton \par Brahui \par Braj Bhasha \par Burmese \par Bashkir \par Beti \par Catalan \par Cebuano \par Chechen \par Chaha Gurage \par Chattisgarhi \par Chichewa \par Chukchi \par Chipewyan \par Cherokee \par Chuvash \par Comorian \par Coptic \par Cree \par Carrier \par Crimean Tatar \par Church Slavonic \par Czech \par Danish \par Dargwa \par Woods Cree \par German \par Default \par Dogri \par Divehi \par Djerma \par Dangme \par Dinka \par Dungan \par Dzongkha \par Ebira \par Eastern Cree \par Edo \par Efik \par Greek \par English \par Erzya \par Spanish \par Estonian \par Basque \par Evenki \par Even \par Ewe \par French Antillean \par Farsi \par Finnish \par Fijian \par Flemish \par Forest Nenets \par Fon \par Faroese \par French \par Frisian \par Friulian \par Futa \par Fulani \par Ga \par Gaelic \par Gagauz \par Galician \par Garshuni \par Garhwali \par Ge'ez \par Gilyak \par Gumuz \par Gondi \par Greenlandic \par Garo \par Guarani \par Gujarati \par Haitian \par Halam \par Harauti \par Hausa \par Hawaiin \par Hammer-Banna \par Hiligaynon \par Hindi \par High Mari \par Hindko \par Ho \par Harari \par Croatian \par Hungarian \par Armenian \par Igbo \par Ijo \par Ilokano \par Indonesian \par Ingush \par Inuktitut \par Irish \par Irish Traditional \par Icelandic \par Inari Sami \par Italian \par Hebrew \par Javanese \par Yiddish \par Japanese \par Judezmo \par Jula \par Kabardian \par Kachchi \par Kalenjin \par Kannada \par Karachay \par Georgian \par Kazakh \par Kebena \par Khutsuri Georgian \par Khakass \par Khanty-Kazim \par Khmer \par Khanty-Shurishkar \par Khanty-Vakhi \par Khowar \par Kikuyu \par Kirghiz \par Kisii \par Kokni \par Kalmyk \par Kamba \par Kumaoni \par Komo \par Komso \par Kanuri \par Kodagu \par Korean Old Hangul \par Konkani \par Kikongo \par Komi-Permyak \par Korean \par Komi-Zyrian \par Kpelle \par Krio \par Karakalpak \par Karelian \par Karaim \par Karen \par Koorete \par Kashmiri \par Khasi \par Kildin Sami \par Kui \par Kulvi \par Kumyk \par Kurdish \par Kurukh \par Kuy \par Koryak \par Ladin \par Lahuli \par Lak \par Lambani \par Lao \par Latin \par Laz \par L-Cree \par Ladakhi \par Lezgi \par Lingala \par Low Mari \par Limbu \par Lomwe \par Lower Sorbian \par Lule Sami \par Lithuanian \par Luba \par Luganda \par Luhya \par Luo \par Latvian \par Majang \par Makua \par Malayalam Traditional \par Mansi \par Marathi \par Marwari \par Mbundu \par Manchu \par Moose Cree \par Mende \par Me'en \par Mizo \par Macedonian \par Male \par Malagasy \par Malinke \par Malayalam Reformed \par Malay \par Mandinka \par Mongolian \par Manipuri \par Maninka \par Manx Gaelic \par Moksha \par Moldavian \par Mon \par Moroccan \par Maori \par Maithili \par Maltese \par Mundari \par Naga-Assamese \par Nanai \par Naskapi \par N-Cree \par Ndebele \par Ndonga \par Nepali \par Newari \par Nagari \par Norway House Cree \par Nisi \par Niuean \par Nkole \par N'ko \par Dutch \par Nogai \par Norwegian \par Northern Sami \par Northern Tai \par Esperanto \par Nynorsk \par Oji-Cree \par Ojibway \par Oriya \par Oromo \par Ossetian \par Palestinian Aramaic \par Pali \par Punjabi \par Palpa \par Pashto \par Polytonic Greek \par Pilipino \par Palaung \par Polish \par Provencal \par Portuguese \par Chin \par Rajasthani \par R-Cree \par Russian Buriat \par Riang \par Rhaeto-Romanic \par Romanian \par Romany \par Rusyn \par Ruanda \par Russian \par Sadri \par Sanskrit \par Santali \par Sayisi \par Sekota \par Selkup \par Sango \par Shan \par Sibe \par Sidamo \par Silte Gurage \par Skolt Sami \par Slovak \par Slavey \par Slovenian \par Somali \par Samoan \par Sena \par Sindhi \par Sinhalese \par Soninke \par Sodo Gurage \par Sotho \par Albanian \par Serbian \par Saraiki \par Serer \par South Slavey \par Southern Sami \par Suri \par Svan \par Swedish \par Swadaya Aramaic \par Swahili \par Swazi \par Sutu \par Syriac \par Tabasaran \par Tajiki \par Tamil \par Tatar \par TH-Cree \par Telugu \par Tongan \par Tigre \par Tigrinya \par Thai \par Tahitian \par Tibetan \par Turkmen \par Temne \par Tswana \par Tundra Nenets \par Tonga \par Todo \par Turkish \par Tsonga \par Turoyo Aramaic \par Tulu \par Tuvin \par Twi \par Udmurt \par Ukrainian \par Urdu \par Upper Sorbian \par Uyghur \par Uzbek \par Venda \par Vietnamese \par Wa \par Wagdi \par West-Cree \par Welsh \par Wolof \par Tai Lue \par Xhosa \par Yakut \par Yoruba \par Y-Cree \par Yi Classic \par Yi Modern \par Chinese Hong Kong \par Chinese Phonetic \par Chinese Simplified \par Chinese Traditional \par Zande \par Zulu +% \end{multicols} +% \hspace{4pt} +% \hrule +% \caption{Defined \opt{Language}s for OpenType fonts. +% Note that they are sorted alphabetically \emph{not} +% by name but by OpenType tag, which is a little irritating, really.} +% \label{tab:ot-lang} +% \end{minipage} +% \end{table} +% +% +% +% \clearpage +% \part{Fonts and features with \XeTeX} +% \label{sec:xetex-features} +% +% \section{\XeTeX-only font features} +% +% The features described here are available for any font +% selected by \pkg{fontspec}. +% +% \subsection{Mapping} +% +% \feat{Mapping} enables a \XeTeX\ text-mapping scheme. +% \begin{example} +% \fontspec[Mapping=tex-text]{Cochin} +% ``!`A small amount of---text!'' +% \end{example} +% Using the |tex-text| mapping is also equivalent to writing |Ligatures=TeX|. +% The use of the latter syntax is recommended for better compatibility with +% \LuaTeX\ documents. +% +% +% \subsection{Letter spacing} +% Letter spacing, or tracking, is the term given to adding (or subtracting) a small amount of horizontal space in between adjacent characters. It is specified with the \feat{LetterSpace}, which takes a numeric argument. +% +% The letter spacing parameter is a normalised additive factor (not a scaling factor); it is defined as a percentage of the font size. That is, for a 10\,pt font, a letter spacing parameter of `|1.0|' will add 0.1\,pt between each letter. +% \begin{example} +% \fontspec{Didot} +% \addfontfeature{LetterSpace=0.0} +% USE TRACKING FOR DISPLAY CAPS TEXT \\ +% \addfontfeature{LetterSpace=2.0} +% USE TRACKING FOR DISPLAY CAPS TEXT +% \end{example} +% This functionality \emph{should not be used for lowercase text}, which is spacing correctly to begin with, but it can be very useful, in small amounts, when setting small caps or all caps titles. +% Also see the OpenType \opt{Uppercase} +% option of the \feat{Letters} feature (\vref*{sec:letters}). +% +% \subsection{Font transformations} +% +% In rare situations users may want to mechanically distort the shapes of the glyphs in the current font. Please don't overuse these features; they can be extremely ugly if overused. +% +% \begin{example} +% \fontspec{Charis SIL} \emph{ABCxyz} \quad +% \fontspec[FakeSlant=0.2]{Charis SIL} ABCxyz +% \end{example} +% +% \begin{example} +% \fontspec{Charis SIL} ABCxyz \quad +% \fontspec[FakeStretch=1.2]{Charis SIL} ABCxyz +% \end{example} +% +% \begin{example} +% \fontspec{Charis SIL} \textbf{ABCxyz} \quad +% \fontspec[FakeBold=1.5]{Charis SIL} ABCxyz +% \end{example} +% +% If values are omitted, their defaults are as shown above. +% +% +% \subsection{Different font technologies: \AAT\ and ICU}\label{sec:renderer} +% +% \XeTeX\ supports two rendering technologies for typesetting, selected with +% the \feat{Renderer} font feature. The first, \opt{AAT}, is +% that provided (only) by \MacOSX\ itself. The second, \opt{ICU}, +% is an open source OpenType interpreter. It provides much greater support for +% OpenType features, notably contextual arrangement, over \opt{AAT}. +% +% In general, this feature will not need to be explicitly called: for OpenType +% fonts, the \opt{ICU} renderer is used automatically, and for \AAT\ fonts, +% \opt{AAT} is chosen by default. Some fonts, however, will contain font tables +% for \emph{both} rendering technologies, such as the Hiragino Japanese fonts +% distributed with \MacOSX, and in these cases the choice may be required. +% +% Among some other font features only available through a specific renderer, +% \opt{ICU} provides for the \feat{Script} and \feat{Language} features, which allow +% different font behaviour for different alphabets and languages; see \vref{sec:ot} +% for the description of these features. {\em Because these font features can +% change which features are able to be selected for the font instance, they are selected +% by \pkg{fontspec} before all others and will automatically and without warning +% select the \opt{ICU} renderer.} +% +% +% \subsection{Optical font sizes} \label{sec:opticalsize} +% +% Multiple Master fonts are parameterised over +% orthogonal font axes, allowing continuous selection along such +% features as weight, width, and optical size~(see \vref{sec:mm} for +% further details). Whereas an OpenType font will have only a few separate +% optical sizes, a Multiple Master font's optical size can be +% specified over a continuous range. Unfortunately, this flexibility makes +% it harder to create an automatic interface through \LaTeX, and the +% optical size for a Multiple Master font must always be specified +% explicitly. +% \begin{Verbatim} +% \fontspec[OpticalSize=11]{Minion MM Roman} +% MM optical size test \\ +% \fontspec[OpticalSize=47]{Minion MM Roman} +% MM optical size test \\ +% \fontspec[OpticalSize=71]{Minion MM Roman} +% MM optical size test \\ +% \end{Verbatim} +% +% +% +% +% \section{\MacOSX's \AAT\ fonts} +% \label{sec:aat-features} +% +% \MacOSX's font technology began life before the ubiquitous-OpenType era +% and revolved around the Apple-invented `\AAT' font format. This format +% had some advantages (and other disadvantages) but it never became widely +% popular in the font world. +% +% Nonetheless, this is the font format that was first supported by \XeTeX\ +% (due to its pedigree on \MacOSX\ in the first place) and was the first +% font format supported by \pkg{fontspec}. A number of fonts distributed with +% \MacOSX\ are still in the \AAT\ format, such as `Skia'. Documents +% that use these fonts should be compiled with \XeLaTeX\ using the +% \texttt{xdv2pdf} driver, as opposed to the default \texttt{xdvipdfmx}. E.g., +% \begin{verbatim} +% xelatex -output-driver="xdv2pdf" filename.tex +% \end{verbatim} +% +% \MacOSX\ also supports Multiple Master fonts, which are discussed +% in \ref{sec:mm}. +% +% \subsection{Ligatures} +% +% \feat{Ligatures} refer to the replacement of two separate characters +% with a specially drawn glyph for functional or \ae sthetic reasons. +% For \AAT\ fonts, you may choose from any combination of \opt{Required}, +% \opt{Common}, \opt{Rare} (or \opt{Discretionary}), \opt{Logos}, \opt{Rebus}, +% \opt{Diphthong}, \opt{Squared}, \opt{AbbrevSquared}, and \opt{Icelandic}. +% +% Some other Apple \AAT\ fonts have those `Rare' ligatures contained in +% the \opt{Icelandic} feature. Notice also that the old \TeX\ trick of +% splitting up a ligature with an empty brace pair does not work in +% \XeTeX; you must use a 0\,pt kern or \cs{hbox} (\eg, \cs{null}) to +% split the characters up. +% +% \subsection{Letters} \label{sec:letters} +% The \opt{Letters} feature specifies how the letters in the current font +% will look. For \AAT\ fonts, you may choose from \opt{Normal}, +% \opt{Uppercase}, \opt{Lowercase}, \opt{SmallCaps}, and +% \opt{InitialCaps}. +% +% +% \subsection{Numbers} +% The \feat{Numbers} feature defines how numbers will look in the +% selected font. For both \AAT, they may be a +% combination of \opt{Lining} or \opt{OldStyle} and \opt{Proportional} or +% \opt{Monospaced} (the latter is good for tabular material). The synonyms +% \opt{Uppercase} and \opt{Lowercase} are equivalent to \opt{Lining} and +% \opt{OldStyle}, respectively. The differences have been shown previously +% in \vref{sec:addfontfeatures}. +% +% \subsection{Contextuals} \label{sec:contextuals} +% This feature refers to glyph substitution that vary by their position; +% things like contextual swashes are implemented here +% The options for \AAT\ fonts are +% \opt{WordInitial}, \opt{WordFinal}, \opt{LineInitial}, +% \opt{LineFinal}, and \opt{Inner} (also called `non-final' sometimes). As +% non-exclusive selectors, like the ligatures, you can turn them off +% by prefixing their name with \opt{No}. +% \begin{aatexample} +% \newfontface\fancy +% [Contextuals={WordInitial,WordFinal}] +% {Hoefler Text Italic} +% \fancy where is all the vegemite +% \end{aatexample} +% \begin{aatexample} +% \fontspec[Contextuals=Inner]{Hoefler Text} +% `Inner' swashes can \emph{sometimes} \\ +% contain the archaic long~s. +% \end{aatexample} +% +% +% \subsection{Vertical position} +% The \feat{VerticalPosition} feature is used to access things like +% subscript (\opt{Inferior}) and superscript (\opt{Superior}) numbers and +% letters (and a small amount of punctuation, sometimes). +% The \opt{Ordinal} option is (supposed to be) +% contextually sensitive to only raise characters that appear directly +% after a number. +% \begin{aatexample} +% \fontspec{Skia} +% Normal +% \fontspec[VerticalPosition=Superior]{Skia} +% Superior +% \fontspec[VerticalPosition=Inferior]{Skia} +% Inferior \\ +% \fontspec[VerticalPosition=Ordinal]{Skia} +% 1st 2nd 3rd 4th 0th 8abcde +% \end{aatexample} +% +% The \pkg{xltxtra} package redefines the \cmd\textsubscript\ and +% \cmd\textsuperscript\ commands to use the above font features. +% +% \subsection{Fractions} +% Many fonts come with the capability to typeset various forms of +% fractional material. This is accessed in \pkg{fontspec} with the +% \feat{Fractions} feature, which may be turned \opt{On} or \opt{Off} +% in both \AAT\ and OpenType fonts. +% +% In \AAT\ fonts, the `fraction slash' or solidus character, is +% to be used to create fractions. When \feat{Fractions} are turned +% \opt{On}, then only pre-drawn fractions will be used. +% \begin{aatexample} +% \fontspec[Fractions=On]{Skia} +% 1⁄2 \quad 5⁄6 \\ % fraction slash +% 1/2 \quad 5/6 % regular slash +% \end{aatexample} +% Using the \opt{Diagonal} option (\AAT\ only), the font will attempt +% to create the fraction from superscript and subscript +% characters. This is shown in the following example: +% \begin{aatexample} +% \fontspec[Fractions=Diagonal]{Skia} +% 13579⁄24680 \\ % fraction slash +% \quad 13579/24680 % regular slash +% \end{aatexample} +% +% Some (Asian fonts predominantly) also provide for the +% \opt{Alternate} feature: +% \begin{opentypeexample} +% \fontspec{Hiragino Maru Gothic Pro W4} +% 1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\ +% \addfontfeature{Fractions=Alternate} +% 1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\ +% \end{opentypeexample} +% The \pkg{xltxtra} package provides a \cmd\vfrac\ command +% for creating arbitrary so-called `vulgar' fractions: +% \begin{opentypeexample} +% \fontspec{Warnock Pro} +% \vfrac{13579}{24680} +% \end{opentypeexample} +% +% +% \subsection{Variants} +% The \feat{Variant} feature takes a single numerical input for +% choosing different alphabetic shapes. Don't mind my fancy example +% \texttt{:)} I'm just looping through the nine~(\,!\,) variants of +% Zapfino. +% \setexsize\Huge +% \def\firstline{2}\def\lastline{9} +% \begin{aatexample} +% \rule{0pt}{2cm}% % \newcounter{var}\newcounter{trans} +% \whiledo{\value{var}<9}{% % \stepcounter{trans}% % \fontspec[Variant=\thevar, +% Color=005599\thetrans\thetrans]{Zapfino}% % \makebox[0.75\width]{d}% % \stepcounter{var}} +% \end{aatexample} +% +% See \vref{sec:newfeatures} for a way to assign names to variants, +% which should be done on a per-font basis. +% +% \subsection{Alternates} +% +% Selection of \feat{Alternate}s \emph{again} +% must be done numerically. Here's an example with an \AAT\ font: +% \begin{aatexample} +% \fontspec[Alternate=0]{Hoefler Text Italic} +% Sphinx Of Black Quartz, {\scshape Judge My Vow} \\ +% \fontspec[Alternate=1]{Hoefler Text Italic} +% Sphinx Of Black Quartz, {\scshape Judge My Vow} +% \end{aatexample} +% See \vref{sec:newfeatures} for a way to assign names to alternates, +% which should be done on a per-font basis. +% +% +% \subsection{Style} +% The options of the \feat{Style} feature +% are defined in \AAT\ as one of the following: \opt{Display}, +% \opt{Engraved}, \opt{IlluminatedCaps}, \opt{Italic}, +% \opt{Ruby},\footnotemark\ \opt{TallCaps}, or \opt{TitlingCaps}. +% \footnotetext{`Ruby' refers to a small optical size, used in +% Japanese typography for annotations.} +% +% \setexsize\Large +% \begin{opentypeexample} +% \fontspec{Warnock Pro} +% K Q R k v w y \\ +% \addfontfeature{Style=Alternate} +% K Q R k v w y +% \end{opentypeexample} +% Note the occasional inconsistency with which font features are labelled; a long-tailed `Q' could turn up anywhere! +% \setexsize\Large +% \begin{opentypeexample} +% \fontspec{Adobe Jenson Pro} +% M Q Z \\ +% \addfontfeature{Style=Historic} +% M Q Z +% \end{opentypeexample} +% \setexsize\Large +% \begin{example} +% \fontspec{Adobe Garamond Pro} +% TITLING CAPS \\ +% \addfontfeature{Style=TitlingCaps} +% TITLING CAPS +% \end{example} +% Two features in one example; \opt{Italic} affects the Latin text and \opt{Ruby} the Japanese: +% \setexsize\Large +% \begin{opentypeexample} +% \fontspec{Hiragino Mincho Pro W3} +% Latin ようこそ ワカヨタレソ \\ +% \addfontfeature{Style={Italic, Ruby}} +% Latin ようこそ ワカヨタレソ +% \end{opentypeexample} +% Note the difference here between the default and the horizontal style kana: +% \setexsize\Large +% \begin{aatexample} +% \fontspec{Hiragino Mincho Pro} +% ようこそ ワカヨタレソ \\ +% {\addfontfeature{Style=HorizontalKana} +% ようこそ ワカヨタレソ} \\ +% {\addfontfeature{Style=VerticalKana} +% ようこそ ワカヨタレソ} +% \end{aatexample} +% +% +% +% +% +% \subsection{CJK shape} +% There have been many standards for how CJK ideographic +% glyphs are `supposed' to look. Some fonts will contain many alternate +% glyphs available in order to be able to display these gylphs +% correctly in whichever form is appropriate. Both \AAT\ and OpenType +% fonts support the following \feat{CJKShape} options: +% \opt{Traditional}, \opt{Simplified}, \opt{JIS1978}, \opt{JIS1983}, +% \opt{JIS1990}, and \opt{Expert}. OpenType also supports the \opt{NLC} option. +% +% \subsection{Character width}\label{sec:CharacterWidth} +% Many Asian fonts are equipped with variously spaced characters for +% shoe-horning into their generally monospaced text. +% These are +% accessed through the \feat{CharacterWidth} feature. +% \note{Apple +% seems to be adapting its \AAT\ features in this regard (at least in +% the fonts it distributes with \MacOSX) to have a one-to-one +% correspondence with the equivalent OpenType features. Previously +% \AAT\ was more fine grained, but naturally they're not documenting +% their \AAT\ tables any more, so if the following features don't work +% for a specific font let me know and I'll try and see if anything +% can be salvaged from the situation.} +% For now, OpenType and \AAT\ +% share the same six options for this feature: \opt{Proportional}, +% \opt{Full}, \opt{Half}, \opt{Third}, +% \opt{Quarter}, \opt{AlternateProportional}, and +% \opt{AlternateHalf}. \AAT\ also allows \opt{Default} to return to +% whatever was originally specified. +% +% Japanese alphabetic glyphs (in Hiragana or Katakana) may be typeset +% proportionally, to better fit horizontal measures, or monospaced, to +% fit into the rigid grid imposed by ideographic typesetting. In this +% latter case, there are also half-width forms for squeezing more kana +% glyphs (which are less complex than the kanji they are amongst) into +% a given block of space. The same features are given to roman letters +% in Japanese fonts, for typesetting foreign words in the same style +% as the surrounding text. +% \begin{opentypeexample} +% \def\test{\makebox[2cm][l]{ようこそ}% % \makebox[2.5cm][l]{ワカヨタレソ}% % \makebox[2.5cm][l]{abcdef}} +% \fontspec{Hiragino Mincho Pro} +% {\addfontfeature{CharacterWidth=Proportional}\test}\\ +% {\addfontfeature{CharacterWidth=Full}\test}\\ +% {\addfontfeature{CharacterWidth=Half}\test} +% \end{opentypeexample} +% The same situation occurs with numbers, which are provided in +% increasingly illegible compressed forms: +% \setexsize\large +% \begin{aatexample} +% \fontspec[Renderer=AAT]{Hiragino Mincho Pro} +% {\addfontfeature{CharacterWidth=Full} +% ---12321---}\\ +% {\addfontfeature{CharacterWidth=Half} +% ---1234554321---}\\ +% {\addfontfeature{CharacterWidth=Third} +% ---123456787654321---}\\ +% {\addfontfeature{CharacterWidth=Quarter} +% ---12345678900987654321---} +% \end{aatexample} +% The option \opt{CharacterWidth=Full} doesn't work with the +% default OpenType font renderer (ICU) due to a bug in the Hiragino fonts. +% +% +% \subsection{Annotation} +% Various Asian fonts are equipped with a more extensive range of +% numbers and numerals in different forms. +% For OpenType fonts, the only option supported is \opt{On} and \opt{Off}: +% \begin{opentypeexample} +% \fontspec{Hiragino Maru Gothic Pro} +% 1 2 3 4 5 6 7 8 9 \\ +% \addfontfeature{Annotation=On} +% 1 2 3 4 5 6 7 8 9 +% \end{opentypeexample} +% I'm not sure if \XeTeX\ can access alternate annotation +% forms, even if they exist (as in this case) in the font. +% +% +% \subsection{Vertical typesetting} +% +% \XeTeX\ provides for vertical typesetting simply with the ability to rotate +% the individual glyphs as a font is used for typesetting. +% +% \begin{aatexample} +% \fontspec{Hiragino Mincho Pro} +% 共産主義者は +% +% \fontspec[Renderer=AAT,Vertical=RotatedGlyphs]{Hiragino Mincho Pro} +% \rotatebox{-90}{共産主義者は}% requires the graphicx package +% \end{aatexample} +% +% No actual provision is made for typesetting top-to-bottom +% languages; for an example of how to do this, see the vertical Chinese +% example provided in the \XeTeX\ documentation. +% +% +% +% +% \subsection{Diacritics} +% Diacritics refer to characters that include extra marks that usually +% indicate pronunciation; \eg, accented letters. You may either choose +% to \opt{Show}, \opt{Hide} or \opt{Decompose} them in \AAT\ fonts. +% +% Some fonts include |O/| \etc\ as diacritics for writing \O. You'll +% want to turn this feature off (imagine typing |hello/goodbye| and +% getting `hell\o goodbye' instead!) by decomposing the two characters +% in the diacritic into the ones you actually +% want. I would recommend using +% the proper \TeX\ input conventions for obtaining such characters +% instead. +% +% The \opt{Hide} option is for Arabic-like fonts which may be +% displayed either with or without vowel markings. +% +% +% \subsection{Annotation} +% Various Asian fonts are equipped with a more extensive range of +% numbers and numerals in different forms. These are accessed through +% the \feat{Annotation} feature with the following options: \opt{Off}, +% \opt{Box}, \opt{RoundedBox}, \opt{Circle}, \opt{BlackCircle}, +% \opt{Parenthesis}, \opt{Period}, \opt{RomanNumerals}, \opt{Diamond}, +% \opt{BlackSquare}, \opt{BlackRoundSquare}, and \opt{DoubleCircle}. +% \begin{aatexample} +% \fontspec{Hei Regular} +% 1 2 3 4 5 6 7 8 9 \\ +% \fontspec[Annotation=Circle]{Hei Regular} +% 1 2 3 4 5 6 7 8 9 \\ +% \fontspec[Annotation=Parenthesis]{Hei Regular} +% 1 2 3 4 5 6 7 8 9 \\ +% \fontspec[Annotation=Period]{Hei Regular} +% 1 2 3 4 5 6 7 8 9 +% \end{aatexample} +% +% \section{\AAT\ \& Multiple Master font axes} \label{sec:mm} +% +% Multiple Master and \AAT\ font specifications both provide continuous +% variation along font parameters. For example, they don't have just +% regular and bold weights, they can have any bold weight you like between +% the two extremes. +% +% \opt{Weight}, \opt{Width}, and \opt{OpticalSize} are supported by this +% package. Skia, which is distributed with +% Mac~OS~X, has two of these variable parameters, allowing for a +% demonstration: +% \begin{aatexample} +% \fontspec[Weight=0.5,Width=3]{Skia} +% Really light and extended Skia \\ +% \fontspec[Weight=2,Width=0.5]{Skia} +% Really fat and condensed Skia +% \end{aatexample} +% Variations along a multiple master font's optical size axis has been +% shown previously in \vref{sec:opticalsize}. +% +% +% \clearpage +% \part{Programming interface} +% +% This is the beginning of some work to provide some hooks that use +% \pkg{fontspec} for various macro programming purposes. +% +% +% \section{Defining new features} \label{sec:newfeatures} +% This package cannot hope to contain every possible font +% feature. Three commands are provided for selecting font features +% that are not provided for out of the box. If you are using +% them a lot, chances are I've left something out, so please let me +% know. +% +% \DescribeMacro{\newAATfeature} +% New \AAT\ features may be created with this command:\par +% {\centering\cmd\newAATfeature\marg{feature}\marg{option}\marg{feature code}\marg{selector code}\par}\noindent +% Use the \XeTeX\ file \path{AAT-info.tex} to obtain the code numbers. For example: +% \begin{aatexample} +% \newAATfeature{Alternate}{HoeflerSwash}{17}{1} +% \fontspec[Alternate=HoeflerSwash]{Hoefler Text Italic} +% This is XeTeX by Jonathan Kew. +% \end{aatexample} +% This command replaces \cmd\newfeaturecode, which is provided +% for backwards compatibility via \texttt{fontspec.cfg}. +% +% \DescribeMacro{\newICUfeature} +% \DescribeMacro{\newopentypefeature} +% New OpenType features may be created with this command:\par +% {\centering\cmd\newICUfeature\marg{feature}\marg{option}\marg{feature tag}\par} +% The synonym \cs{newopentypefeature} is provided for \LuaTeX\ users. +% In the following example, the Moldavian language (see \vref{sec:ot}) must be activated to achieve the effect shown. +% \setexsize\Large +% \begingroup +% \begin{opentypeexample} +% \newICUfeature{Style}{NoLocalForms}{-locl} +% \fontspec[Language=Moldavian]{FPL Neu} +% Ş ş Ţ ţ \\ +% \addfontfeature{Style=NoLocalForms} +% Ş ş Ţ ţ +% \end{opentypeexample} +% \endgroup +% +% \DescribeMacro{\newfontfeature} +% In case the above commands do not accommodate the desired font feature +% (perhaps a new \XeTeX\ feature that \pkg{fontspec} hasn't been updated +% to support), a command is provided to pass arbitrary input into the +% font selection string:\par +% {\centering\cmd{\newfontfeature}\marg{name}\marg{input string}\par} +% +% For example, Zapfino +% contains the feature `Avoid d-collisions'. To access it +% with this package, you could do the following: +% \begin{aatexample} +% \newfontfeature{AvoidD}{Special=Avoid d-collisions} +% \newfontfeature{NoAvoidD}{Special=!Avoid d-collisions} +% \fontspec[AvoidD,Variant=1]{Zapfino} +% sockdolager rubdown \\ +% \fontspec[NoAvoidD,Variant=1]{Zapfino} +% sockdolager rubdown +% \end{aatexample} +% +% The advantage to using the \cmd\newAATfeature\ and \cmd\newICUfeature\ +% commands is that they check if the selected font actually contains the font +% feature. By contrast, \cmd\newfontfeature\ will not give a warning +% for improper input. +% +% \section{Going behind \pkg{fontspec}'s back} +% Expert users may wish not to use \pkg{fontspec}'s feature handling at all, +% while still taking advantage of its \LaTeX\ font selection conveniences. The +% \feat{RawFeature} font feature allows literal \XeTeX\ font feature selection +% when you happen to have the OpenType feature tag memorised. +% \begin{example} +% \fontspec[RawFeature=+smcp]{FPL Neu} +% FPL Neu small caps +% \end{example} +% Multiple features can either be included in a single declaration:\par +% {\centering|[RawFeature=+smcp;+onum]|\par} +% \noindent or with multiple declarations:\par +% {\centering|[RawFeature=+smcp, RawFeature=+onum]|\par} +% +% \section{Renaming existing features \& options} +% \label{sec:aliasfontfeature} +% +% \DescribeMacro{\aliasfontfeature} +% If you don't like the name of a particular font feature, +% it may be aliased to another with the +% \cs{aliasfontfeature}\marg{existing name}\marg{new name} command: +% \begin{aatexample} +% \aliasfontfeature{ItalicFeatures}{IF} +% \fontspec[IF = {Alternate=1}]{Hoefler Text} +% Roman Letters \itshape And Swash +% \end{aatexample} +% +% Spaces in feature (and option names, see below) \emph{are} allowed. (You may have +% noticed this already in the lists of OpenType scripts and languages). +% +% \DescribeMacro{\aliasfontfeatureoption} +% If you wish to change the name of a font feature option, +% it can be aliased to another with the command +% \cs{aliasfontfeatureoption}\marg{font feature}\marg{existing name}\marg{new name}: +% \begin{opentypeexample} +% \aliasfontfeature{VerticalPosition}{Vert Pos} +% \aliasfontfeatureoption{VerticalPosition}{ScientificInferior}{Sci Inf} +% \fontspec[Vert Pos=Sci Inf]{Warnock Pro} +% Scientific Inferior: 12345 +% \end{opentypeexample} +% This example demonstrates an important point: when aliasing the feature +% options, the \emph{original} feature name must be used when declaring +% to which feature the option belongs. +% +% Only feature options that exist as sets of fixed strings may be altered in +% this way. That is, \opt{Proportional} can be aliased to \opt{Prop} in the +% \feat{Letters} feature, but \opt{550099BB} cannot be substituted for \opt{Purple} +% in a \feat{Color} specification. For this type of thing, the \cmd\newfontfeature\ +% command should be used to declare a new, \eg, \feat{PurpleColor} feature: +% \begin{Verbatim} +% \newfontfeature{PurpleColor}{color=550099BB} +% \end{Verbatim} +% +% \section{Programming details} +% +% In some cases, it is useful to know what the \LaTeX\ font family +% of a specific \pkg{fontspec} font is. After a \cmd\fontspec-like +% command, this is stored inside the \cmd\zf@family\ macro. +% Otherwise, \LaTeX's own \cmd\f@family\ macro can be useful here, +% too. +% The raw \TeX\ font that is defined is stored temporarily +% in \cmd{\zf@basefont}. +% +% The following commands in \pkg{expl3} syntax may be used +% for writing codes that interface with fontspec-loaded fonts. +% All of the following conditionals also exist with |T| and |F| +% suffices as well as |TF|. +% +% \begin{macro}{\fontspec_if_fontspec_font:TF} +% Test whether the currently selected font has been loaded by fontspec. +% \end{macro} +% +% +% \begin{macro}{\fontspec_if_aat_feature:nnTF} +% Test whether the currently selected font contains the \AAT\ +% feature (|#1|,|#2|). +% \end{macro} +% +% +% \begin{macro}{\fontspec_if_opentype:TF} +% Test whether the currently selected font is an OpenType font. +% Always true for LuaTeX fonts. +% \end{macro} +% +% \begin{macro}{\fontspec_if_feature:nTF} +% Test whether the currently selected font contains the raw OpenType +% feature |#1|. E.g.: |\fontspec_if_feature:nTF {pnum} {True} {False}|. +% Returns false if the font is not loaded by fontspec or is not an OpenType +% font. +% \end{macro} +% +% \begin{macro}{\fontspec_if_feature:nnnTF} +% Test whether the currently selected font with raw OpenType script tag |#1| and raw OpenType language tag |#2| contains the raw OpenType feature tag |#3|. E.g.: |\fontspec_if_feature:nTF {latn} {ROM} {pnum} {True} {False}|. +% Returns false if the font is not loaded by fontspec or is not an OpenType +% font. +% \end{macro} +% +% \begin{macro}{\fontspec_if_script:nTF} +% Returns whether the currently selected font contains the raw OpenType +% script |#1|. E.g.: |\fontspec_if_script:nTF {latn} {True} {False}|. +% Returns false if the font is not loaded by fontspec or is not an OpenType +% font. +% \end{macro} +% +% \begin{macro}{\fontspec_if_language:nTF} +% Test whether the currently selected font contains the raw OpenType +% feature |#1|. E.g.: |\fontspec_if_feature:nTF {pnum} {True} {False}|. +% Returns false if the font is not loaded by fontspec or is not an OpenType +% font. +% \end{macro} +% +% \begin{macro}{\fontspec_if_language:nnTF} +% Test whether the currently selected font contains the raw OpenType +% feature |#2| in script |#1|. E.g.: |\fontspec_if_feature:nTF {latn} {pnum} {True} {False}|. +% Returns false if the font is not loaded by fontspec or is not an OpenType +% font. +% \end{macro} +% +% +% \begin{macro}{\fontspec_if_current_script:nTF} +% Test whether the currently loaded font is using the specified raw +% OpenType script tag |#1|. +% \end{macro} +% +% \begin{macro}{\fontspec_if_current_language:nTF} +% Test whether the currently loaded font is using the specified raw +% OpenType language tag |#1|. +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % +% \clearpage +% \part{The patching/improvement of \LaTeXe\ and other packages} +% \label{sec:patching} +% +% Derived originally from xltxtra, this package contains patches to various +% \LaTeX\ components and third-party packages to improve the default +% behaviour. +% +% \section{Inner emphasis} +% \label{sec:emph} +% +% \pkg{fixltx2e}'s method for checking for ``inner'' emphasis is a little fragile in \XeTeX, because +% font slant information might be missing from the font. Therefore, we use \LaTeX's NFSS +% information, which is more likely to be correct. +% +% \section{Unicode footnote symbols} +% By default \LaTeX\ defines symbolic footnote characters in terms of commands +% that don't resolve well; better results can be achieved by using specific unicode characters or proper LICRs with the \pkg{xunicode} package. +% +% This problem has been solved by loading the +% \pkg{fixltx2e} and \pkg{xunicode} packages in \pkg{xltxtra}. +% +% \section{Verbatim} +% \label{sec:verb} +% +% Many verbatim mechanisms assume the existence of a `visible space' character that exists in the \textsc{ascii} space slot of the typewriter font. This character is known in unicode as \unichar{2434}{box open}, which looks like this: `\verb*| |'. +% +% When a unicode typewriter font is used, \LaTeX\ no longer prints visible spaces for the |verbatim*| environment and |\verb*| command. \pkg{xltxtra} fixes this problem by using the correct unicode glyph, and patches the following packages to do the same: +% \pkg{listings}, \pkg{fancyvrb}, \pkg{moreverb}, and \pkg{verbatim}. +% +% In the case that the typewriter font does not contain `\verb*| |', the Latin Modern Mono font is used as a fallback. +% +% \section{Discrectionary hyphenation: \cmd\-} +% \label{sec:hyphen} +% +% \LaTeX\ defines the macro \cmd\-\ to insert discretionary hyphenation points. +% However, it is hard-coded in \LaTeX\ to use the hyphen |-| character. Since \pkg{fontspec} +% makes it easy to change the hyphenation character on a per font basis, it would +% be nice if \cmd\-\ adjusted automatically — and now it does. +% +% \StopEventually{} +% +% \clearpage +% \part{fontspec.sty} +% +% \section{Implementation} +% Herein lie the implementation details of this package. Welcome! +% It was my first. +% +% For some reason, I decided to prefix all the package internal +% command names and variables with |zf|. I don't know why I chose +% those letters, but I guess I just liked the look/feel of them +% together at the time. (Possibly inspired by Hermann \emph{Z}ap\emph{f}.) +% +% \iffalse +%<*fontspec> +% \fi +% \begin{macrocode} +\RequirePackage{expl3,xparse} +\ExplSyntaxOn +% \end{macrocode} +% +% \begin{macrocode} +\msg_new:nnn {fontspec} {not-pdftex} +{ + Requires XeTeX or LuaTeX to function! +} +\xetex_if_engine:F { + \luatex_if_engine:TF { + \RequirePackage{luatextra}[2010/05/10] + \luatexRequireModule{fontspec} + }{ + \msg_error:nn {fontspec} {not-pdftex} + } +} +% \end{macrocode} +% +% \begin{macro}{\xetex_or_luatex:nn} +% Use |#1| if \XeTeX\ or |#2| if \LuaTeX. +% \begin{macrocode} +\xetex_if_engine:TF + { \cs_new_eq:NN \xetex_or_luatex:nn \use_i:nn } + { \luatex_if_engine:T + { \cs_new_eq:NN \xetex_or_luatex:nn \use_ii:nn } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\xetex_or_luatex:nnn} +% Use |#1| and (|{#2}| if \XeTeX) or (|{#3}| if \LuaTeX). +% \begin{macrocode} +\xetex_if_engine:TF + { \cs_new:Npn \xetex_or_luatex:nnn #1#2#3 {#1{#2}} } + { + \luatex_if_engine:T + { \cs_new:Npn \xetex_or_luatex:nnn #1#2#3 {#1{#3}} } + } +% \end{macrocode} +% \end{macro} +% +% \subsection{Bits and pieces} +% \paragraph{Conditionals} +% \begin{macrocode} +\newif\ifzf@firsttime +\newif\ifzf@nobf +\newif\ifzf@noit +\newif\ifzf@nosc +\newif\ifzf@tfm +\newif\ifzf@atsui +\newif\ifzf@icu +\newif\ifzf@mm +\newif\ifzf@graphite +% \end{macrocode} +% For dealing with legacy maths +% \begin{macrocode} +\newif\ifzf@math@euler +\newif\ifzf@math@lucida +\newif\ifzf@package@euler@loaded +% \end{macrocode} +% For package options: +% \begin{macrocode} +\newif\if@zf@configfile +\newif\if@zf@math +% \end{macrocode} +% \paragraph{Counters} +% \begin{macrocode} +\newcount\c@zf@newff +\newcount\c@zf@index +\newcount\c@zf@script +\newcount\c@zf@language +\int_new:N \l_fontspec_strnum_int +% \end{macrocode} +% Temporary definition until expl3 has been updated to include this: +% \begin{macrocode} +\cs_set:Npn \use:x #1 { \edef\@tempa{#1}\@tempa } +% \end{macrocode} +% +% \begin{macrocode} +\cs_new:Npn \fontspec_setkeys:xx #1#2 + { + \use:x { \exp_not:N \setkeys*[zf]{#1}{#2} } + } +\cs_new:Npn \fontspec_setkeys:xxx #1#2#3 + { + \use:x { \exp_not:N \setkeys*[zf@#1]{#2}{#3} } + } +% \end{macrocode} +% +% \subsection{Error/warning messages} +% +% Shorthands for messages: +% \begin{macrocode} +\cs_new:Npn \fontspec_error:n { \msg_error:nn {fontspec} } +\cs_new:Npn \fontspec_error:nx { \msg_error:nnx {fontspec} } +\cs_new:Npn \fontspec_warning:n { \msg_warning:nn {fontspec} } +\cs_new:Npn \fontspec_warning:nx { \msg_warning:nnx {fontspec} } +\cs_new:Npn \fontspec_warning:nxx { \msg_warning:nnxx {fontspec} } +\cs_new:Npn \fontspec_info:n { \msg_info:nn {fontspec} } +\cs_new:Npn \fontspec_info:nx { \msg_info:nnx {fontspec} } +\cs_new:Npn \fontspec_info:nxx { \msg_info:nnxx {fontspec} } +\cs_new:Npn \fontspec_trace:n { \msg_trace:nn {fontspec} } +% \end{macrocode} +% +% Errors: +% \begin{macrocode} +\msg_new:nnn {fontspec} {no-size-info} +{ + Size~ information~ must~ be~ supplied.\\ + For~ example,~ SizeFeatures={Size={8-12},...}. +} +\msg_new:nnnn {fontspec} {rename-feature-not-exist} +{ + The~ feature~ #1~ doesn't~ appear~ to~ be~ defined. +} +{ + It~ looks~ like~ you're~ trying~ to~ rename~ a~ feature~ that~ doesn't~ exist. +} +\msg_new:nnn {fontspec} {no-glyph} +{ + '\zf@fontname'~ doesn't~ appear~ to~ have~ the~ glyph~ corresponding~ to~ '#1'. +} +\msg_new:nnnn {fontspec} {unknown-options} +{ + The~ following~ font~ options~ are~ not~ recognised:\\ + \space\space\space\space #1 +} +{ + There~ is~ probably~ a~ typo~ in~ the~ font~ feature~ selection. +} +\msg_new:nnnn {fontspec} {euler-too-late} +{ + The~ euler~ package~ must~ be~ loaded~ BEFORE~ fontspec. +} +{ + fontspec~ only~ overwrites~ euler's~ attempt~ to\\ + define~ the~ maths~ text~ fonts~ if~ fontspec~ is\\ + loaded~ after~ euler.~ Type~ <return>~ to~ proceed\\ + with~ incorrect~ \string\mathit,~ \string\mathbf,~ etc. +} + +% \end{macrocode} +% Warnings: +% \begin{macrocode} +\msg_new:nnn {fontspec} {addfontfeatures-ignored} +{ + \string\addfontfeature (s)~ ignored;\\ + it~ cannot~ be~ used~ with~ a~ font~ that~ wasn't~ selected~ by~ fontspec. +} +\msg_new:nnn {fontspec} {feature-option-overwrite} +{ + Option~ '#2'~ of~ font~ feature~ '#1'~ overwritten. +} +\msg_new:nnn {fontspec} {script-not-exist} +{ + Font~ '\zf@fontname'~ does~ not~ contain~ script~ '#1'. +} +\msg_new:nnn {fontspec} {aat-feature-not-exist} +{ + '\XKV@tfam=\XKV@tkey'~ feature~ not~ supported\\ + for~ AAT~ font~ '\zf@fontname'. +} +\msg_new:nnn {fontspec} {aat-feature-not-exist-in-font} +{ + AAT~ feature~ '\XKV@tfam=\XKV@tkey'~ (#1)~ not~ available\\ + in~ font~ '\zf@fontname'. +} +\msg_new:nnn {fontspec} {icu-feature-not-exist} +{ + '\XKV@tfam=\XKV@tkey'~ feature~ not~ supported\\ + for~ ICU~ font~ '\zf@fontname' +} +\msg_new:nnn {fontspec} {icu-feature-not-exist-in-font} +{ + OpenType~ feature~ '\XKV@tfam=\XKV@tkey'~ (#1)~ not~ available\\ + for~ font~ '\zf@fontname', \\ + with~ script~ '\l_fontspec_script_name_tl',~ and~ language~ '\l_fontspec_lang_name_tl'. +} +\msg_new:nnn {fontspec} {no-opticals} +{ + '\zf@fontname'~ doesn't~ appear~ to~ have~ an~ Optical~ Size~ axis. +} +\msg_new:nnn {fontspec} {language-not-exist} +{ + Language~ '#1'~ not~ available\\ + for~ font~ '\zf@fontname'\\ + with~ script~ '\l_fontspec_script_name_tl'. +} +\msg_new:nnn {fontspec} {only-xetex-feature} +{ + Ignored~ XeTeX~ only~ feature:~ '#1'. +} +\msg_new:nnn {fontspec} {only-luatex-feature} +{ + Ignored~ LuaTeX~ only~ feature:~ '#1'. +} +\msg_new:nnn {fontspec} {no-mapping} +{ + Input~ mapping~ not~ (yet?)~ supported~ in~ LuaTeX. +} +\msg_new:nnn {fontspec} {no-mapping-ligtex} +{ + Input~ mapping~ not~ (yet?)~ supported~ in~ LuaTeX.\\ + Use~ "Ligatures=TeX"~ instead~ of~ "Mapping=tex-text". +} +\msg_new:nnn {fontspec} {cm-default-obsolete} +{ + The~ "cm-default"~ package~ option~ is~ obsolete. +} +% \end{macrocode} +% Info messages: +% \begin{macrocode} +\msg_new:nnn {fontspec} {defining-font} +{ + Defining~ font~ family~ for~ '#2'~ with~ options~ [\zf@default@options #1]. +} +\msg_new:nnn {fontspec} {no-font-shape} +{ + Could~ not~ resolve~ font~ #1~ (it~ probably~ doesn't~ exist). +} +\msg_new:nnn {fontspec} {set-scale} +{ + \zf@fontname\space scale ~=~ \l_fontspec_scale_tl. +} +\msg_new:nnn {fontspec} {setup-math} +{ + Adjusting~ the~ maths~ setup~ (use~ [no-math]~ to~ avoid~ this). +} +% \end{macrocode} +% +% \subsection{Option processing} +% +% \begin{macrocode} +\DeclareOption{cm-default}{ + \fontspec_warning:n {cm-default-obsolete} +} +\DeclareOption{math}{\@zf@mathtrue} +\DeclareOption{no-math}{\@zf@mathfalse} +\DeclareOption{config}{\@zf@configfiletrue} +\DeclareOption{no-config}{\@zf@configfilefalse} +\DeclareOption{quiet}{ + \msg_redirect_module:nnn { fontspec } { warning } { info } + \msg_redirect_module:nnn { fontspec } { info } { none } +} +\DeclareOption{silent}{ + \msg_redirect_module:nnn { fontspec } { warning } { none } + \msg_redirect_module:nnn { fontspec } { info } { none } +} +\ExecuteOptions{config,math} +\ProcessOptions* +% \end{macrocode} +% +% \subsection{Packages} +% We require the \pkg{calc} package for autoscaling and a recent version of the +% \pkg{xkeyval} package for option processing. +% \begin{macrocode} +\RequirePackage{calc} +\RequirePackage{xkeyval}[2005/05/07] +% \end{macrocode} +% +% New for \LuaTeX, we load a new package called `\pkg{fontspec-patches}' +% designed to incorporate the hidden but useful parts of the old \pkg{xltxtra} +% package. +% \begin{macrocode} +\luatex_if_engine:T { \RequirePackage{fontspec-patches} } +% \end{macrocode} +% +% +% \subsection{Encodings} +% Frank Mittelbach has recommended using the `\texttt{EU}$x$' family of font encodings +% to experiment with unicode. +% Now that \XeTeX\ can find fonts in the |texmf| tree, the Latin Modern OpenType fonts +% can be used as the defaults. See the |euenc| collection of files for how this is implemented. +% \begin{macrocode} +\xetex_or_luatex:nnn {\tl_set:Nn \zf@enc} {EU1} {EU2} +\tl_set:Nn \rmdefault {lmr} +\tl_set:Nn \sfdefault {lmss} +\tl_set:Nn \ttdefault {lmtt} +\RequirePackage[\zf@enc]{fontenc} +\tl_set_eq:NN \UTFencname \zf@enc % for xunicode +% \end{macrocode} +% Dealing with a couple of the problems introduced by \pkg{babel}: +% \begin{macrocode} +\tl_set_eq:NN \cyrillicencoding \zf@enc +\tl_set_eq:NN \latinencoding \zf@enc +\g@addto@macro \document { + \tl_set_eq:NN \cyrillicencoding \zf@enc + \tl_set_eq:NN \latinencoding \zf@enc +} +% \end{macrocode} +% That latin encoding definition is repeated to suppress font warnings. +% Something to do with \cmd\select@language\ ending up in the \texttt{.aux} +% file which is read at the beginning of the document. +% +% +% \subsection{User commands}\label{sec:codeuser} +% This section contains the definitions of the commands detailed in +% the user documentation. Only the `top level' definitions of the +% commands are contained herein; they all use or define macros which +% are defined or used later on in \vref{sec:codeinternal}. +% +% \subsubsection{Font selection} +% \begin{macro}{\fontspec} +% This is the main command of the package that +% selects fonts with various features. It takes two arguments: the +% \MacOSX\ font name and the optional requested features of that +% font. It simply runs \cs{zf@fontspec}, which takes the same +% arguments as the top level macro and puts the new-fangled font +% family name into the global \cmd{\zf@family}. Then this new font +% family is selected. +% \begin{macrocode} +\DeclareDocumentCommand \fontspec { O{} m } { + \fontspec_select:nn{#1}{#2} + \fontfamily\zf@family\selectfont + \ignorespaces +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setmainfont} +% \begin{macro}{\setsansfont} +% \begin{macro}{\setmonofont} +% The following three macros perform equivalent operations setting +% the default font (using \cs{let} rather than \cs{renewcommand} +% because \cs{zf@family} will change in the future) for a +% particular family: `roman', sans serif, or typewriter +% (monospaced). I end them with |\normalfont| so that if they're +% used in the document, the change registers immediately. +% \begin{macrocode} +\DeclareDocumentCommand \setmainfont { O{} m } { + \fontspec_select:nn{#1}{#2} + \tl_set_eq:NN \rmdefault \zf@family + \normalfont +} +\DeclareDocumentCommand \setsansfont { O{} m } { + \fontspec_select:nn{#1}{#2} + \tl_set_eq:NN \sfdefault \zf@family + \normalfont +} +\DeclareDocumentCommand \setmonofont { O{} m } { + \fontspec_select:nn{#1}{#2} + \tl_set_eq:NN \ttdefault \zf@family + \normalfont +} +% \end{macrocode} +% \end{macro} \end{macro} \end{macro} +% +% +% \begin{macro}{\setromanfont} +% This is the old name for \cs{setmainfont}, retained +% for backwards compatibility. +% \begin{macrocode} +\cs_set_eq:NN \setromanfont \setmainfont +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\setmathrm} +% \begin{macro}{\setmathsf} +% \begin{macro}{\setboldmathrm} +% \begin{macro}{\setmathtt} +% These commands are analogous to \cmd\setromanfont\ and others, +% but for selecting the font used for \cmd\mathrm, \etc. They +% can only be used in the preamble of the +% document. \cmd\setboldmathrm\ is used for specifying which +% fonts should be used in \cmd\boldmath. +% \begin{macrocode} +\DeclareDocumentCommand \setmathrm { O{} m } { + \fontspec_select:nn{#1}{#2} + \let\zf@rmmaths\zf@family +} +\DeclareDocumentCommand \setboldmathrm { O{} m } { + \fontspec_select:nn{#1}{#2} + \let\zf@rmboldmaths\zf@family +} +\DeclareDocumentCommand \setmathsf { O{} m } { + \fontspec_select:nn{#1}{#2} + \let\zf@sfmaths\zf@family +} +\DeclareDocumentCommand \setmathtt { O{} m } { + \fontspec_select:nn{#1}{#2} + \let\zf@ttmaths\zf@family +} +\@onlypreamble\setmathrm +\@onlypreamble\setboldmathrm +\@onlypreamble\setmathsf +\@onlypreamble\setmathtt +% \end{macrocode} +% If the commands above are not executed, then \cmd\rmdefault\ (\etc) +% will be used. +% \begin{macrocode} +\def\zf@rmmaths{\rmdefault} +\def\zf@sfmaths{\sfdefault} +\def\zf@ttmaths{\ttdefault} +% \end{macrocode} +% \end{macro} \end{macro} \end{macro} +% \end{macro} +% +% \begin{macro}{\newfontfamily} +% \begin{macro}{\newfontface} +% This macro takes the arguments of \cs{fontspec} with a prepended +% \meta{instance cmd} (code for middle optional argument generated +% by \name{Scott Pakin}'s \textsf{newcommand.py}). This command is used +% when a specific font instance needs to be referred to repetitively +% (\eg, in a section heading) since continuously calling +% \cs{zf@fontspec} is inefficient because it must parse the +% option arguments every time. +% +% \cs{zf@fontspec} defines a font family and saves its name in +% \cs{zf@family}. This family is then used in a typical NFSS \cmd\fontfamily\ +% declaration, saved in the macro name specified. +% \begin{macrocode} +\DeclareDocumentCommand \newfontfamily { m O{} m } { + \fontspec_select:nn{#2}{#3} + \use:x { + \exp_not:N \DeclareRobustCommand \exp_not:N #1 { + \exp_not:N \fontfamily {\zf@family} \exp_not:N \selectfont + } + } +} +% \end{macrocode} +% \cmd\newfontface\ uses an undocumented feature of the \feat{BoldFont} +% feature; if its argument is empty (\ie, |BoldFont={}|), then no bold +% font is searched for. +% \begin{macrocode} +\DeclareDocumentCommand \newfontface { m O{} m } { + \newfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2 ] {#3} +} +% \end{macrocode} +% \end{macro} \end{macro} +% +% \subsubsection{Font feature selection} +% +% \begin{macro}{\defaultfontfeatures} +% This macro takes one argument that consists of all of feature +% options that will be applied by default to all subsequent +% \cs{fontspec}, et al., commands. It stores its value in +% \cs{zf@default@options} (initialised empty), which is +% concatenated with the individual macro choices in the +% \cs{zf@get@feature@requests} macro. +% \begin{macrocode} +\DeclareDocumentCommand \defaultfontfeatures {m} {\def\zf@default@options{#1,}} +\let\zf@default@options\@empty +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\addfontfeatures} +% In order to be able to extend the feature selection of +% a given font, two things need to be known: the currently selected +% features, and the currently selected font. Every time a font +% family is created, this information is saved inside a control +% sequence with the name of the font family itself. +% +% This macro extracts this information, then appends the requested +% font features to add to the already existing ones, and calls the +% font again with the top level \cs{fontspec} command. +% +% The default options are \emph{not} applied (which is why +% \cs{zf@default@options} is emptied inside the group; this is allowed +% as \cmd\zf@family\ is globally defined in \cmd\fontspec_select:nn), so this +% means that the only added features to the font are strictly those +% specified by this command. +% +% \cs{addfontfeature} is defined as an alias, as I found that I +% often typed this instead when adding only a single font feature. +% \begin{macrocode} +\DeclareDocumentCommand \addfontfeatures {m} { + \ifcsname zf@family@fontdef\f@family\endcsname + \begingroup + \let\zf@default@options\@empty + \use:x { + \exp_not:N\fontspec_select:nn + {\csname zf@family@options\f@family\endcsname,#1} + {\csname zf@family@fontname\f@family\endcsname} + } + \endgroup + \fontfamily\zf@family\selectfont + \else + \fontspec_warning:n {addfontfeatures-ignored} + \fi + \ignorespaces +} +\let\addfontfeature\addfontfeatures +% \end{macrocode} +% \end{macro} +% +% +% \subsubsection{Defining new font features} +% +% \begin{macro}{\newfontfeature} +% \cs{newfontfeature} takes two arguments: the name of the feature +% tag by which to reference it, and the string that is used to +% select the font feature. It uses a counter to keep track of the +% number of new features introduced; every time a new feature is +% defined, a control sequence is defined made up of the +% concatenation of |+zf-| and the new feature tag. This long-winded +% control sequence is then called upon to update the font family +% string when a new instance is requested. +% \begin{macrocode} +\DeclareDocumentCommand \newfontfeature {mm} { + \stepcounter{zf@newff} + \cs_set:cpx{+zf-#1}{+zf-\the\c@zf@newff} + \define@key[zf]{options}{#1}[]{ + \zf@update@family{\csname+zf-#1\endcsname} + \zf@update@ff{#2} + } +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\newAATfeature} +% This command assigns a new AAT feature by its code (|#2|,|#3|) to a new name (|#1|). +% Better than \cmd\newfontfeature\ because it checks if the feature exists in the +% font it's being used for. +% \begin{macrocode} +\DeclareDocumentCommand \newAATfeature {mmmm} { + \unless\ifcsname zf@options@#1\endcsname + \zf@define@font@feature{#1} + \fi + \key@ifundefined[zf]{#1}{#2}{}{ + \fontspec_warning:nxx {feature-option-overwrite}{#1}{#2} + } + \zf@define@feature@option{#1}{#2}{#3}{#4}{} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newICUfeature} +% \begin{macro}{\newopentypefeature} +% This command assigns a new OpenType feature by its abbreviation (|#2|) to a new name (|#1|). +% Better than \cmd\newfontfeature\ because it checks if the feature exists in the +% font it's being used for. +% \begin{macrocode} +\DeclareDocumentCommand \newICUfeature {mmm} { + \unless\ifcsname zf@options@#1\endcsname + \zf@define@font@feature{#1} + \fi + \key@ifundefined[zf]{#1}{#2}{}{ + \fontspec_warning:nxx {feature-option-overwrite}{#1}{#2} + } + \zf@define@feature@option{#1}{#2}{}{}{#3} +} +\cs_set_eq:NN \newopentypefeature \newICUfeature +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\aliasfontfeature} +% \begin{macro}{\aliasfontfeatureoption} +% User commands for renaming font features and font feature options. +% Provided I've been consistent, they should work for everything. +% \begin{macrocode} +\DeclareDocumentCommand \aliasfontfeature {mm} {\multi@alias@key{#1}{#2}} +\DeclareDocumentCommand \aliasfontfeatureoption {mmm} { + \keyval@alias@key[zf@feat]{#1}{#2}{#3} +} +% \end{macrocode} +% \end{macro} \end{macro} +% +% \begin{macro}{\newfontscript} +% Mostly used internally, but also possibly useful for users, to define new OpenType +% `scripts', mapping logical names to OpenType script tags. +% Iterates though the scripts in the selected font to check that it's a valid +% feature choice, and then prepends the (\XeTeX) \cmd\font\ feature string with the appropriate +% script selection tag. +% \begin{macrocode} +\DeclareDocumentCommand \newfontscript {mm} +{ + \fontspec_new_script:nn {#1} {#2} + \fontspec_new_script:nn {#2} {#2} +} +% \end{macrocode} +% +% \begin{macrocode} +\cs_new:Npn \fontspec_new_script:nn #1#2 +{ + \define@key[zf@feat]{Script}{#1}[]{ + \fontspec_check_script:nTF {#2} { + \zf@update@family{+script=#1} + \tl_set:Nn \l_fontspec_script_tl {#2} + \c@zf@script=\l_fontspec_strnum_int\relax + }{ + \fontspec_warning:nx {script-not-exist} {#1} + } + } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfontlanguage} +% Mostly used internally, but also possibly useful for users, to define new OpenType +% `languages', mapping logical names to OpenType language tags. +% Iterates though the languages in the selected font to check that it's a valid +% feature choice, and then prepends the (\XeTeX) \cmd\font\ feature string with the appropriate +% language selection tag. +% \begin{macrocode} +\DeclareDocumentCommand \newfontlanguage {mm} +{ + \fontspec_new_lang:nn {#1} {#2} + \fontspec_new_lang:nn {#2} {#2} +} +% \end{macrocode} +% +% \begin{macrocode} +\cs_new:Npn \fontspec_new_lang:nn #1#2 +{ + \define@key[zf@feat]{Lang}{#1}[]{ + \fontspec_check_lang:nTF {#2} { + \zf@update@family{+lang=#1} + \tl_set:Nn \l_fontspec_lang_tl {#2} + \c@zf@language=\l_fontspec_strnum_int\relax + }{ + \fontspec_warning:nx {language-not-exist} {#1} + } + } +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\DeclareFontsExtensions} +% \texttt{dfont} would never be uppercase, right? +% \begin{macrocode} +\DeclareDocumentCommand \DeclareFontsExtensions {m} +{ + \tl_set:Nx \l_fontspec_extensions_clist { \zap@space #1~\@empty } +} +\DeclareFontsExtensions{.otf,.ttf,.OTF,.TTF,.ttc,.TTC,.dfont} +% \end{macrocode} +% \end{macro} +% +% \subsection{Programmer's interface} +% +% These functions are not used directly by fontspec when defining fonts; +% they are designed to be used by other packages who wish to do font-related +% things on top of fontspec itself. +% +% Because I haven't fully explored how these functions will behave in +% practise, I am not giving them user-level names. As it becomes more clear +% which of these should be accessible by document writers, I'll open them up +% a little more. +% +% All functions are defined assuming that the font to be queried is +% currently selected as a fontspec font. (I.e., via \verb|\fontspec| or +% from a \verb|\newfontfamily| macro or from \verb|\setmainfont| and so on.) +% +% \begin{macro}{\fontspec_if_fontspec_font:TF} +% Returns whether the currently selected font has been loaded by fontspec. +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_fontspec_font: {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \prg_return_true: + \else + \prg_return_false: + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\fontspec_if_aat_feature:nnTF} +% Conditional to test if the currently selected font contains the \AAT\ +% feature (|#1|,|#2|). +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_aat_feature:nn {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\use:c{zf@family@fontdef\f@family}"~at~\f@size pt + \ifzf@atsui + \fontspec_make_AAT_feature_string:nn{#1}{#2} + \ifx\@tempa\@empty + \prg_return_false: + \else + \prg_return_true: + \fi + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\fontspec_if_opentype:TF} +% Returns whether the currently selected font is an OpenType font. +% Always true for LuaTeX fonts. +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_opentype: {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \prg_return_true: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_if_feature:nTF} +% Returns whether the currently selected font contains the raw OpenType +% feature |#1|. E.g.: |\fontspec_if_feature:nTF {pnum} {True} {False}| +% Returns false if the font is not loaded by fontspec or is not an OpenType +% font. +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_feature:n {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \int_set:Nn \c@zf@script + {\use:c {g_fontspec_script_num_(\zf@family)_tl}} + \int_set:Nn \c@zf@language + {\use:c {g_fontspec_lang_num_(\zf@family)_tl}} + \tl_set:Nv \l_fontspec_script_tl {g_fontspec_script_(\zf@family)_tl} + \tl_set:Nv \l_fontspec_lang_tl {g_fontspec_lang_(\zf@family)_tl} + \fontspec_check_ot_feat:nTF {#1} \prg_return_true: \prg_return_false: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_if_feature:nnnTF} +% Returns whether the currently selected font with raw OpenType script tag |#1| and raw OpenType language tag |#2| contains the raw OpenType feature tag |#3|. E.g.: |\fontspec_if_feature:nTF {latn} {ROM} {pnum} {True} {False}| +% Returns false if the font is not loaded by fontspec or is not an OpenType +% font. +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_feature:nnn {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \fontspec_iv_str_to_num:n{#1} \c@zf@script = \l_fontspec_strnum_int \relax + \fontspec_iv_str_to_num:n{#2} \c@zf@language = \l_fontspec_strnum_int \relax + \fontspec_check_ot_feat:nTF {#3} \prg_return_true: \prg_return_false: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_if_script:nTF} +% Returns whether the currently selected font contains the raw OpenType +% script |#1|. E.g.: |\fontspec_if_script:nTF {latn} {True} {False}| +% Returns false if the font is not loaded by fontspec or is not an OpenType +% font. +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_script:n {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \fontspec_check_script:nTF {#1} \prg_return_true: \prg_return_false: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_if_language:nTF} +% Returns whether the currently selected font contains the raw OpenType +% feature |#1|. E.g.: |\fontspec_if_feature:nTF {+pnum} {True} {False}| +% Returns false if the font is not loaded by fontspec or is not an OpenType +% font. +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_language:n {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \tl_set:Nv \l_fontspec_script_tl {g_fontspec_script_(\zf@family)_tl} + \int_set:Nn \c@zf@script + {\use:c {g_fontspec_script_num_(\zf@family)_tl}} + \fontspec_check_lang:nTF {#1} \prg_return_true: \prg_return_false: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_if_language:nnTF} +% Returns whether the currently selected font contains the raw OpenType +% feature |#2| in script |#1|. E.g.: |\fontspec_if_feature:nTF {+pnum} {True} {False}| +% Returns false if the font is not loaded by fontspec or is not an OpenType +% font. +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_language:nn {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \tl_set:Nn \l_fontspec_script_tl {#1} + \fontspec_iv_str_to_num:n{#1} \c@zf@script = \l_fontspec_strnum_int \relax + \fontspec_check_lang:nTF {#2} \prg_return_true: \prg_return_false: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\fontspec_if_current_script:nTF} +% Returns whether the currently loaded font is using the specified raw +% OpenType script tag |#1|. +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_current_script:n {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \tl_if_eq:nvTF {#1} {g_fontspec_script_(\zf@family)_tl} + {\prg_return_true:} {\prg_return_false:} + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_if_current_language:nTF} +% Returns whether the currently loaded font is using the specified raw +% OpenType language tag |#1|. +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_current_language:n {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \tl_if_eq:nvTF {#1} {g_fontspec_lang_(\zf@family)_tl} + {\prg_return_true:} {\prg_return_false:} + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +% \end{macrocode} +% \end{macro} +% +% Need this: +% \begin{macrocode} +\cs_generate_variant:Nn \tl_if_eq:nnTF {nv} +% \end{macrocode} +% +% +% \subsection{Internal macros} +% \label{sec:codeinternal} +% +% The macros from here in are used internally by all those defined above. +% They are not designed to remain consistent between versions. +% +% \begin{macro}{\fontspec_select:nn} +% This is the command that defines font families for use, the underlying +% procedure of all \cmd\fontspec-like commands. Given a +% list of font features (|#1|) for a requested font (|#2|, stored +% in \cs{zf@fontname} globally for the +% \cs{zf@make@aat@feature@string} macro), it will define an NFSS +% family for that font and put the family name into \cs{zf@family}. +% +% This macro does its processing inside a group, but it's a bit worthless coz +% there's all sorts of \cmd\global\ action going on. Pity. Anyway, lots of things +% are branched out for the pure reason of splitting +% the code up into logical chunks. Some of it is never even re-used, so it +% all might be a bit obfuscating. (\Eg, \cmd{\fontspec_init:} and \cmd{\fontspec_set_font_type:}.) +% +% First off, initialise some bits and pieces and run the |preparse| feature +% processing. This catches font features such as |Renderer| that can change +% the way subsequent features are processed. All font features that `slip through' +% this stage are saved in the \cmd\zf@font@feat\ macro for future processing. +% \begin{macrocode} +\cs_set:Npn \fontspec_select:nn #1#2 { + \begingroup + \fontspec_init: +% \end{macrocode} +% \cmd{\zf@fontname} is used as the generic name of the font being defined. +% \cmd{\zf@family@long} is the unique identifier of the font with all its +% features. +% \cmd{\zf@up} is the font specifically to be used as the upright font. +% \begin{macrocode} + \edef\zf@fontname{#2} + \let\zf@family@long\zf@fontname + \let\zf@up\zf@fontname +% \end{macrocode} +% Detect if external fonts are to be used, possibly automatically, and +% parse fontspec features for bold/italic fonts and their features. +% \begin{macrocode} + \fontspec_if_detect_external:nT {#2} + { \setkeys[zf]{preparse-external}{ExternalLocation} } + \fontspec_setkeys:xx {preparse-external} {\zf@default@options #1} +% \end{macrocode} +% When \cmd{\zf@fontname} is augmented with a prefix or whatever to create +% the name of the upright font (\cmd{\zf@up}), this latter is the new `general +% font name' to use. +% \begin{macrocode} + \let\zf@fontname\zf@up + \fontspec_setkeys:xx {preparse} {\XKV@rm} + \let\zf@font@feat\XKV@rm +% \end{macrocode} +% \begin{macrocode} + \global\font\zf@basefont="\fontspec_fullname:n {\zf@up}"~at~\f@size pt + \fontspec_set_font_type: + \global\font\zf@basefont="\fontspec_fullname:n {\zf@up}"~at~\f@size pt +% \end{macrocode} +% Now convert the remaining requested features to font definition +% strings. This is performed with \cs{zf@get@feature@requests}, in +% which \cs{setkeys} retrieves the requested font features and +% processes them. To build up the complex family name, it +% concatenates each font feature with the family name of the +% font. So since \cs{setkeys} is run more than once (since different +% font faces may have different feature names), we only want the +% complex family name to be built up once, hence the \cs{zf@firsttime} +% conditionals. +% \begin{macrocode} + \zf@firsttimetrue + \ifzf@icu + \fontspec_setkeys:xxx {feat} {Script} {\l_fontspec_script_name_tl} + \fontspec_setkeys:xxx {feat} {Lang} {\l_fontspec_lang_name_tl} + \fi + \fontspec_get_features:n{\zf@font@feat} + \zf@firsttimefalse +% \end{macrocode} +% Now we have a unique (in fact, too unique!) string that contains +% the family name and every option in abbreviated form. This is used +% with a counter to create a simple NFSS family name for the font we're +% selecting. +% +% The font name is fully expanded, in case it's defined in terms of macros, before having its spaces zapped. +% \begin{macrocode} + \unless\ifcsname zf@UID@\zf@family@long\endcsname + \ifcsname c@zf@famc@#2\endcsname + \expandafter\global\expandafter\advance + \csname c@zf@famc@#2\endcsname\@ne + \else + \expandafter\global\expandafter\newcount + \csname c@zf@famc@#2\endcsname + \fi + \edef\@tempa{#2~} + \cs_gset:cpx{zf@UID@\zf@family@long}{ + \expandafter\zap@space\@tempa\@empty + (\expandafter\the\csname c@zf@famc@#2\endcsname) + } + \fi + \xdef\zf@family{\@nameuse{zf@UID@\zf@family@long}} +% \end{macrocode} +% +% Now that we have the family name, we +% can check to see if the family has already been defined, and if not, +% do so. Once the family name is created, use it to create global +% macros to save the user +% string of the requested options and font name, primarily for use with +% \cs{addfontfeatures}. +% \begin{macrocode} + \unless\ifcsname zf@family@fontname\zf@family\endcsname + \fontspec_info:nxx {defining-font} {#1} {#2} + \tl_gset:cx {zf@family@fontname\zf@family} {#2} + \tl_gset:cx {zf@family@options\zf@family} {\zf@default@options #1} + \tl_gset:cx {zf@family@fontdef\zf@family} { + \fontspec_fullname:n {\zf@fontname} : \l_fontspec_pre_feat_tl \l_fontspec_rawfeatures_sclist + } + \tl_gset:cx {g_fontspec_script_num_(\zf@family)_tl} + { \int_use:N \c@zf@script } + \tl_gset:cx {g_fontspec_lang_num_(\zf@family)_tl} + { \int_use:N \c@zf@language } + \tl_gset_eq:cN {g_fontspec_script_(\zf@family)_tl} \l_fontspec_script_tl + \tl_gset_eq:cN {g_fontspec_lang_(\zf@family)_tl} \l_fontspec_lang_tl +% \end{macrocode} +% Next the font family and its shapes are defined in the NFSS. +% +% All NFSS specifications take their default values, so if any of them +% are redefined, the shapes will be selected to fit in with the +% current state. For example, if \cmd\bfdefault\ is redefined to |b|, all +% bold shapes defined by this package will also be assigned to |b|. +% +% The macros \cs{zf@bf}, et al., are used to store the name of the +% custom bold, et al., font, if requested as user options. If they are +% empty, the default fonts are used. +% +% First we define the font family and define the normal shape: (any shape-specific +% features are appended to the generic font features requested in the last argument +% of \cmd\zf@make@font@shapes.) +% \begin{macrocode} + \DeclareFontFamily{\zf@enc}{\zf@family}{} + \zf@make@font@shapes{\zf@fontname} + {\mddefault}{\updefault}{\zf@font@feat\zf@up@feat} +% \end{macrocode} +% And the different shapes are set accordingly. +% \begin{macrocode} + \fontspec_set_bold: + \fontspec_set_italic: + \fontspec_set_slanted: + \fontspec_set_bold_italic: + \fontspec_set_bold_slanted: + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\fontspec_if_detect_external:nT} +% Check if either the fontname ends with a known font extension. +% \begin{macrocode} +\prg_new_conditional:Nnn \fontspec_if_detect_external:n {T} + { + \clist_map_inline:Nn \l_fontspec_extensions_clist + { + \bool_set_false:N \l_tmpa_bool + \tl_if_in:nnT {#1 <= end_of_string} {##1 <= end_of_string} + { \bool_set_true:N \l_tmpa_bool \clist_map_break: } + } + \bool_if:NTF \l_tmpa_bool \prg_return_true: \prg_return_false: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_fullname:n} +% Constructs the complete font name based on a common piece of info. +% \begin{macrocode} +\cs_set:Npn \fontspec_fullname:n #1 { + \fontspec_namewrap:n { #1 \l_fontspec_extension_tl } + \l_fontspec_renderer_tl + \l_fontspec_optical_size_tl +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\fontspec_set_bold:} +% Again, the extra bold options defined with +% \feat{BoldFeatures} are appended to the generic font features. +% Then, the bold font is defined either as the ATS +% default (\cs{zf@make@font@shapes}' optional argument is to check if +% there actually is one; if not, the bold NFSS series is left +% undefined) or with the font specified with the \feat{BoldFont} feature. +% \begin{macrocode} +\cs_new:Npn \fontspec_set_bold: { + \unless\ifzf@nobf + \ifx\zf@bf\@empty + \zf@make@font@shapes[\zf@fontname]{/B} + {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat} + \else + \zf@make@font@shapes{\zf@bf} + {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat} + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_set_italic:} +% And italic in the same way: +% \begin{macrocode} +\cs_new:Npn \fontspec_set_italic: { + \unless\ifzf@noit + \ifx\zf@it\@empty + \zf@make@font@shapes[\zf@fontname]{/I} + {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat} + \else + \zf@make@font@shapes{\zf@it} + {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat} + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_set_slanted:} +% And slanted but only if requested: +% \begin{macrocode} +\cs_new:Npn \fontspec_set_slanted: { + \ifx\zf@sl\@empty\else + \zf@make@font@shapes{\zf@sl} + {\mddefault}{\sldefault}{\zf@font@feat\zf@sl@feat} + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_set_bold_italic:} +% % If requested, the custom fonts take precedence when choosing the +% bold italic font. When both italic and bold fonts are requested and +% the bold italic font hasn't been explicitly specified (a rare +% occurance, presumably), the new bold font is used to define the new +% bold italic font. +% \begin{macrocode} +\cs_new:Npn \fontspec_set_bold_italic: { + \@tempswatrue + \ifzf@nobf\@tempswafalse\fi + \ifzf@noit\@tempswafalse\fi + \if@tempswa + \ifx\zf@bfit\@empty + \ifx\zf@bf\@empty + \ifx\zf@it\@empty + \zf@make@font@shapes[\zf@fontname]{/BI} + {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat} + \else + \zf@make@font@shapes[\zf@it]{/B} + {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat} + \fi + \else + \zf@make@font@shapes[\zf@bf]{/I} + {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat} + \fi + \else + \zf@make@font@shapes{\zf@bfit} + {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat} + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_set_bold_slanted:} +% And bold slanted, again, only if requested: +% \begin{macrocode} +\cs_new:Npn \fontspec_set_bold_slanted: { + \ifx\zf@bfsl\@empty + \ifx\zf@sl\@empty\else + \zf@make@font@shapes[\zf@sl]{/B} + {\bfdefault}{\sldefault}{\zf@font@feat\zf@bfsl@feat} + \fi + \else + \zf@make@font@shapes{\zf@bfsl} + {\bfdefault}{\sldefault}{\zf@font@feat\zf@bfsl@feat} + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% \subsubsection{Fonts} +% +% \begin{macro}{\fontspec_set_font_type:} +% Now check if the font is to be rendered with ATSUI or ICU. This will either +% be automatic (based on the font type), or specified by the user via a font feature. +% +% This macro sets \cs{zf@atsui} or \cs{zf@icu} or \cs{zf@mm} booleans +% accordingly depending if the font in \cmd\zf@basefont\ is an \AAT\ +% font or an OpenType font or a font with feature axes (either \AAT\ or +% Multiple Master), respectively. +% \begin{macrocode} +\xetex_or_luatex:nnn { \cs_new:Npn \fontspec_set_font_type: } + { + \zf@tfmfalse \zf@atsuifalse \zf@icufalse \zf@mmfalse \zf@graphitefalse + \ifcase\XeTeXfonttype\zf@basefont + \zf@tfmtrue + \or + \zf@atsuitrue + \ifnum\XeTeXcountvariations\zf@basefont > \c_zero + \zf@mmtrue + \fi + \or + \zf@icutrue + \fi +% \end{macrocode} +% If automatic, the \cmd{\l_fontspec_renderer_tl} token list will still be +% empty (other suffices that could be added will be later in the feature +% processing), and if it is indeed still empty, assign it a value so that the +% other weights of the font are specifically loaded with the same renderer. +% \begin{macrocode} + \tl_if_empty:NT \l_fontspec_renderer_tl { + \ifzf@atsui + \tl_set:Nn \l_fontspec_renderer_tl {/AAT} + \else\ifzf@icu + \tl_set:Nn \l_fontspec_renderer_tl {/ICU} + \fi\fi + } + } + { + \zf@icutrue + } +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\zf@make@font@shapes} +% \doarg{Font name prefix} +% \darg{Font name} +% \darg{Font series} +% \darg{Font shape} +% \darg{Font features} +% This macro eventually uses \cs{DeclareFontShape} to define the font shape in +% question. +% +% The optional first +% argument is used when making the font shapes for bold, italic, and +% bold italic fonts using \XeTeX's auto-recognition with |#2| as |/B|, |/I|, +% and |/BI| font name suffixes. If no such font is found, it falls +% back to the original font name, in which case this macro doesn't +% proceed and the font shape is not created for the NFSS. +% \begin{macrocode} +\newcommand*\zf@make@font@shapes[5][]{ + \begingroup + \edef\@tempa{#1} + \unless\ifx\@tempa\@empty + \font\@tempfonta="\fontspec_fullname:n {#1}"~at~\f@size pt + \edef\@tempa{\fontname\@tempfonta} + \fi + \font\@tempfontb="\fontspec_fullname:n {#1#2}"~at~\f@size pt + \edef\@tempb{\fontname\@tempfontb} + \ifx\@tempa\@tempb + \fontspec_info:nx {no-font-shape} {#1#2} + \else + \edef\zf@fontname{#1#2} + \let\zf@basefont\@tempfontb + \zf@DeclareFontShape{#3}{#4}{#5} +% \end{macrocode} +% Next, the small caps are defined. \cs{zf@make@smallcaps} is used to +% define the appropriate string for activating small caps in the font, +% if they exist. If we are defining small caps for the upright shape, +% then the small caps shape default is used. For an \emph{italic} +% font, however, the shape parameter is overloaded and we must call +% italic small caps by their own identifier. See \vref{sec:sishape} +% for the code that enables this usage. +% \begin{macrocode} + \ifx\zf@sc\@empty + \unless\ifzf@nosc + \zf@make@smallcaps + \unless\ifx\zf@smallcaps\@empty + \zf@DeclareFontShape[\zf@smallcaps]{#3} + {\ifx#4\itdefault\sidefault\else\scdefault\fi}{#5\zf@sc@feat} + \fi + \fi + \else + \edef\zf@fontname{\zf@sc} + \zf@DeclareFontShape{#3} + {\ifx#4\itdefault\sidefault\else\scdefault\fi}{#5\zf@sc@feat} + \fi + \fi + \endgroup +} +% \end{macrocode} +% Note that the test for italics to choose the \cmd\sidefault\ shape +% only works while \cmd\fontspec_select:nn\ passes single tokens to this macro\dots +% \end{macro} +% +% \begin{macro}{\zf@DeclareFontShape} +% \doarg{Raw appended font feature} +% \darg{Font series} +% \darg{Font shape} +% \darg{Font features} +% Wrapper for \cmd\DeclareFontShape. +% \begin{macrocode} +\newcommand\zf@DeclareFontShape[4][]{ + \clist_if_empty:NTF \l_fontspec_sizefeat_clist + { + \fontspec_get_features:n{#4} + \tl_set:Nx \l_fontspec_nfss_tl { + <-> \l_fontspec_scale_tl " + \fontspec_fullname:n {\zf@fontname} : + \l_fontspec_pre_feat_tl \l_fontspec_rawfeatures_sclist #1 " + } + } +% \end{macrocode} +% Default code, above, sets things up for no optical size fonts or features. +% On the other hand, loop through \feat{SizeFeatures} arguments, which +% are of the form +% {\par\centering |SizeFeatures={{<one>},{<two>},{<three>}}|.\par} +% \begin{macrocode} + { + \tl_clear:N \l_fontspec_nfss_tl + \clist_map_inline:Nn \l_fontspec_sizefeat_clist { + \tl_clear:N \l_fontspec_size_tl + \tl_set_eq:NN \l_fontspec_sizedfont_tl \zf@fontname + \fontspec_setkeys:xx {sizing} { \expandafter \@firstofone ##1 } + \tl_if_empty:NT \l_fontspec_size_tl { \fontspec_error:n {no-size-info} } + \fontspec_get_features:n{#4,\XKV@rm} + \tl_put_right:Nx \l_fontspec_nfss_tl { + <\l_fontspec_size_tl> \l_fontspec_scale_tl + " \fontspec_fullname:n { \l_fontspec_sizedfont_tl } + : \l_fontspec_pre_feat_tl \l_fontspec_rawfeatures_sclist #1 " + } + } + } +% \end{macrocode} +% And finally the actual font shape declaration using \cmd\l_fontspec_nfss_tl\ defined above. +% \cmd\zf@adjust\ is defined in various places to deal with things like the hyphenation +% character and interword spacing. +% \begin{macrocode} + \use:x{ + \exp_not:N\DeclareFontShape{\zf@enc}{\zf@family}{#2}{#3} + {\l_fontspec_nfss_tl}{\zf@adjust} + } +% \end{macrocode} +% This extra stuff for the slanted shape substitution is a little bit awkward, +% but I'd rather have it here than break out yet another macro. Alternatively, +% one day I might just redefine \cmd\slshape. Why not, eh? +% \begin{macrocode} + \tl_if_eq:xxT {#3} {\itdefault} + { + \use:x { + \exp_not:N \DeclareFontShape {\zf@enc}{\zf@family}{#2}{\sldefault} + {<->ssub*\zf@family/#2/\itdefault}{\zf@adjust} + } + } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l_fontspec_pre_feat_tl} +% These are the features always applied to a font selection before other +% features. +% \begin{macrocode} +\xetex_or_luatex:nnn { \tl_set:Nn \l_fontspec_pre_feat_tl } + { + \ifzf@icu + script = \l_fontspec_script_tl ; + language = \l_fontspec_lang_tl ; + \fi + } + { + mode = \l_fontspec_mode_tl ; + script = \l_fontspec_script_tl ; + language = \l_fontspec_lang_tl ; + } +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\zf@update@family} +% This macro is used to build up a complex family name based on its +% features. +% +% \cmd{\zf@firsttime} is set true in \cmd{\fontspec_select:nn} only the first +% time \cmd{zf@get@feature@requests} is called, so that the family +% name is only created once. +% \begin{macrocode} +\newcommand*{\zf@update@family}[1]{ + \ifzf@firsttime + \xdef\zf@family@long{\zf@family@long#1} + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% \subsubsection{Features} +% +% \begin{macro}{\fontspec_get_features:n} +% This macro is a wrapper for |\setkeys| which expands and adds a +% default specification to the original passed options. It begins by +% initialising the commands used to hold font-feature specific +% strings. +% \begin{macrocode} +\cs_set:Npn \fontspec_get_features:n #1 { + \let\l_fontspec_rawfeatures_sclist \@empty + \tl_clear:N \l_fontspec_scale_tl + \let\zf@adjust \@empty + \fontspec_setkeys:xx {options} {#1} + \tl_if_empty:NF \XKV@rm { + \fontspec_error:nx {unknown-options} { \exp_not:V \XKV@rm } + } + \PackageInfo{fontspec}{Raw~ font~ features~ "\l_fontspec_rawfeatures_sclist"} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_init:} +% Initialisations that either need to occur globally: +% (all setting of these variables is done locally inside a group) +% \begin{macrocode} +\tl_clear:N \zf@bf +\tl_clear:N \zf@it +\tl_clear:N \zf@bfit +\tl_clear:N \zf@sl +\tl_clear:N \zf@bfsl +\tl_clear:N \zf@sc +\tl_clear:N \zf@up@feat +\tl_clear:N \zf@bf@feat +\tl_clear:N \zf@it@feat +\tl_clear:N \zf@bfit@feat +\tl_clear:N \zf@sl@feat +\tl_clear:N \zf@bfsl@feat +\tl_clear:N \zf@sc@feat +\clist_clear:N \l_fontspec_sizefeat_clist +% \end{macrocode} +% Or once per fontspec font invocation: +% (Some of these may be redundant. +% Check whether they're assigned to globally or not.) +% \begin{macrocode} +\newcommand*\fontspec_init:{ + \zf@icufalse + \cs_set_eq:NN \fontspec_namewrap:n \use:n + \tl_clear:N \l_fontspec_optical_size_tl + \tl_clear:N \l_fontspec_renderer_tl + \tl_set:Nn \l_fontspec_script_name_tl {Latin} + \tl_set:Nn \l_fontspec_script_tl {latn} + \tl_set:Nn \l_fontspec_lang_name_tl {Default} + \tl_set:Nn \l_fontspec_lang_tl {DFLT} + \luatex_if_engine:T { + \tl_set:Nn \l_fontspec_mode_tl {node} + \luatexprehyphenchar =`\- % fixme + \luatexposthyphenchar = 0 % fixme + \luatexpreexhyphenchar = 0 % fixme + \luatexpostexhyphenchar= 0 % fixme + } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zf@make@smallcaps}\label{mac:zf@make@smallcaps} +% This macro checks if the font contains small caps, and if so +% creates the string for accessing them in \cmd{\zf@smallcaps}. +% \begin{macrocode} +\newcommand*\zf@make@smallcaps{ + \let\zf@smallcaps\@empty + \xetex_or_luatex:nn + { + \ifzf@atsui + \fontspec_make_AAT_feature_string:nn{3}{3} + \unless\ifx\@tempa\@empty + \edef\zf@smallcaps{\@tempa;} + \fi + \fi + \ifzf@icu + \fontspec_check_ot_feat:nT {+smcp} {\edef\zf@smallcaps{+smcp;}} + \fi + } + { + \fontspec_check_ot_feat:nT {+smcp} {\edef\zf@smallcaps{+smcp;}} + } +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\sclist_put_right:Nn} +% I'm hardly going to write an `sclist' module but a couple of functions are +% necessary. +% \begin{macrocode} +\cs_new:Npn \sclist_put_right:Nn #1#2 { + \tl_if_empty:NT #1 { + + } +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\zf@update@ff} +% \cmd{\l_fontspec_rawfeatures_sclist} is the string used to define the list of specific +% font features. Each time another font feature is requested, this +% macro is used to add that feature to the list. Font features are +% separated by semicolons. +% \begin{macrocode} +\newcommand*\zf@update@ff[1]{ + \unless\ifzf@firsttime + \xdef\l_fontspec_rawfeatures_sclist{\l_fontspec_rawfeatures_sclist #1;} + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\fontspec_make_feature:nnn} +% This macro is called by each feature key selected, and runs +% according to which type of font is selected. +% \begin{macrocode} +\cs_new:Npn \fontspec_make_feature:nnn #1#2#3 { + \xetex_or_luatex:nn + { + \ifzf@atsui + \fontspec_make_AAT_feature:nn {#1}{#2} + \fi + \ifzf@icu + \fontspec_make_ICU_feature:n {#3} + \fi + } + { + \fontspec_make_ICU_feature:n {#3} + } +} +\cs_new:Npn \fontspec_make_AAT_feature:nn #1#2 { + \tl_if_empty:nTF {#1} + { + \fontspec_warning:n {aat-feature-not-exist} + } + { + \fontspec_make_AAT_feature_string:nn {#1}{#2} + \ifx\@tempa\@empty + \fontspec_warning:nx {aat-feature-not-exist-in-font} {#1,#2} + \else + \zf@update@family{+#1,#2} + \zf@update@ff\@tempa + \fi + } +} +\cs_new:Npn \fontspec_make_ICU_feature:n #1 { + \tl_if_empty:nTF {#1} + { + \fontspec_warning:n {icu-feature-not-exist} + } + { + \fontspec_check_ot_feat:nTF {#1} { + \zf@update@family{#1} + \zf@update@ff{#1} + }{ + \fontspec_warning:nx {icu-feature-not-exist-in-font} {#1} + } + } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zf@define@font@feature} +% \begin{macro}{\zf@define@feature@option} +% These macros are used in order to simplify font feature definition later on. +% \begin{macrocode} +\newcommand*\zf@define@font@feature[1]{ + \define@key[zf]{options}{#1}{{\setkeys[zf@feat]{#1}{##1}}} +} +\newcommand*\zf@define@feature@option[5]{ + \define@key[zf@feat]{#1}{#2}[]{\fontspec_make_feature:nnn{#3}{#4}{#5}} +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\keyval@alias@key} +% This macro maps one \pkg{xkeyval} key to another. +% \begin{macrocode} +\newcommand*\keyval@alias@key[4][KV]{ + \cs_set_eq:cc{#1@#2@#4}{#1@#2@#3} + \cs_set_eq:cc{#1@#2@#4@default}{#1@#2@#3@default} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\multi@alias@key} +% This macro iterates through families to map one key to another, +% regardless of which family it's contained within. +% \begin{macrocode} +\newcommand*\multi@alias@key[2]{ + \key@ifundefined[zf]{options}{#1} + { + \key@ifundefined[zf]{preparse}{#1} + { + \key@ifundefined[zf]{preparse-external}{#1} + { \fontspec_warning:nx {rename-feature-not-exist} {#1} } + { \keyval@alias@key[zf]{preparse-external}{#1}{#2} } + } + { \keyval@alias@key[zf]{preparse}{#1}{#2} } + } + { \keyval@alias@key[zf]{options}{#1}{#2} } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_make_AAT_feature_string:nn} +% This macro takes the numerical codes for a font feature and +% creates a specified macro containing the string required in the +% font definition to turn that feature on or off. Used primarily in +% \cmd\zf@make@aat@feature, but also used to check if small caps +% exists in the requested font (see page~\pageref{mac:zf@make@smallcaps}). +% +% \begin{macrocode} +\cs_new:Npn \fontspec_make_AAT_feature_string:nn #1#2 { + \edef\@tempa{\XeTeXfeaturename\zf@basefont #1} + \unless\ifx\@tempa\@empty +% \end{macrocode} +% For exclusive selectors, it's easy; just grab the string: +% \begin{macrocode} + \ifnum\XeTeXisexclusivefeature\zf@basefont #1>0 + \edef\@tempb{\XeTeXselectorname\zf@basefont #1\space #2} +% \end{macrocode} +% For \emph{non}-exclusive selectors, it's a little more complex. +% If the selector is even, it corresponds to switching the feature on: +% \begin{macrocode} + \else + \unless\ifodd #2 + \edef\@tempb{\XeTeXselectorname\zf@basefont #1\space #2} +% \end{macrocode} +% If the selector is \emph{odd}, it corresponds to switching the feature off. +% But \XeTeX\ doesn't return a selector string for this number, since the +% feature is defined for the `switching on' value. So we need to check the +% selector of the previous number, and then prefix the feature string with |!| +% to denote the switch. +% \begin{macrocode} + \else + \edef\@tempb{ + \XeTeXselectorname\zf@basefont #1\space \numexpr#2-1\relax + } + \unless\ifx\@tempb\@empty + \edef\@tempb{!\@tempb} + \fi + \fi + \fi +% \end{macrocode} +% Finally, save out the complete feature string in \cmd\@tempa. +% If the selector doesn't exist, re-initialise the feature string to empty. +% \begin{macrocode} + \unless\ifx\@tempb\@empty + \edef\@tempa{\@tempa=\@tempb} + \else + \let\@tempa\@empty + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_iv_str_to_num:n} +% \begin{macro}{\fontspec_v_str_to_num:n} +% This macro takes a four character string and converts it to the +% numerical representation required for \XeTeX\ OpenType script/language/feature +% purposes. The output is stored in \cmd\l_fontspec_strnum_int. +% +% The reason it's ugly is because the input can be of the form of any of these: +% `|abcd|', `|abc|', `|abc |', `|ab|', `|ab |', \etc. +% (It is assumed the first two chars are \emph{always} not spaces.) So this macro +% reads in the string, delimited by a space; this input is padded with \cmd\@empty s +% and anything beyond four chars is snipped. The \cmd\@empty s then are used to reconstruct +% the spaces in the string to number calculation. +% +% The variant \cmd\fontspec_v_str_to_num:n\ is used when looking at features, which are passed around +% with prepended plus and minus signs (\eg, \texttt{+liga}, \texttt{-dlig}); it +% simply strips off the first char of the input before calling the normal \cmd\fontspec_iv_str_to_num:n. +% +% It's probable that all OpenType features \emph{are} in fact four characters long, but +% not impossible that they aren't. So I'll leave the less efficient parsing stage in there +% even though it's not strictly necessary for now. +% \begin{macrocode} +\cs_set:Npn \fontspec_iv_str_to_num:n #1 { + \fontspec_iv_str_to_num:w #1 \@empty \@empty \q_nil +} +\cs_set:Npn \fontspec_iv_str_to_num:w #1#2#3#4#5 \q_nil { + \int_set:Nn \l_fontspec_strnum_int { + `#1 * "1000000 + + `#2 * "10000 + + \ifx \@empty #3 32 \else `#3 \fi * "100 + + \ifx \@empty #4 32 \else `#4 \fi + } +} +\cs_set:Npn \fontspec_v_str_to_num:n #1 { + \bool_if:nTF + { + \tl_if_head_eq_charcode_p:nN {#1} {+} || + \tl_if_head_eq_charcode_p:nN {#1} {-} + } + { + \exp_after:wN \fontspec_iv_str_to_num:n + \exp_after:wN { \use_none:n #1 } + } + { \fontspec_iv_str_to_num:n {#1} } +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\fontspec_check_script:nTF} +% This macro takes an OpenType script tag and checks if it exists in the current +% font. The output boolean is \cmd\@tempswatrue. \cmd\l_fontspec_strnum_int\ is used to store +% the number corresponding to the script tag string. +% \begin{macrocode} +\xetex_or_luatex:nnn {\prg_new_conditional:Nnn \fontspec_check_script:n {TF}} + { + \fontspec_iv_str_to_num:n{#1} + \@tempcntb\XeTeXOTcountscripts\zf@basefont + \c@zf@index\z@ \@tempswafalse + \loop\ifnum\c@zf@index<\@tempcntb + \ifnum\XeTeXOTscripttag\zf@basefont\c@zf@index=\l_fontspec_strnum_int + \@tempswatrue + \c@zf@index\@tempcntb + \else + \advance\c@zf@index\@ne + \fi + \repeat + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } + { + \directlua{fontspec.check_ot_script("zf@basefont", "#1")} + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_check_lang:nTF} +% This macro takes an OpenType language tag and checks if it exists in the current +% font/script. The output boolean is \cmd\@tempswatrue. \cmd\l_fontspec_strnum_int\ is used to store +% the number corresponding to the language tag string. +% The script used is whatever's held in \cmd\c@zf@script. By default, that's the +% number corresponding to `|latn|'. +% \begin{macrocode} +\xetex_or_luatex:nnn {\prg_new_conditional:Nnn \fontspec_check_lang:n {TF}} + { + \fontspec_iv_str_to_num:n{#1} + \@tempcntb\XeTeXOTcountlanguages\zf@basefont\c@zf@script + \c@zf@index\z@ + \@tempswafalse + \loop\ifnum\c@zf@index<\@tempcntb + \ifnum\XeTeXOTlanguagetag\zf@basefont\c@zf@script\c@zf@index=\l_fontspec_strnum_int + \@tempswatrue + \c@zf@index\@tempcntb + \else + \advance\c@zf@index\@ne + \fi + \repeat + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } + { + \directlua{ + fontspec.check_ot_lang( "zf@basefont", "#1", "\l_fontspec_script_tl" ) + } + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fontspec_check_ot_feat:nTF} +% \begin{macro}{\fontspec_check_ot_feat:nT} +% This macro takes an OpenType feature tag and checks if it exists in the current +% font/script/language. +% The output boolean is \cmd\@tempswa. \cmd\l_fontspec_strnum_int\ is used to store +% the number corresponding to the feature tag string. +% The script used is whatever's held in \cmd\c@zf@script. By default, that's the +% number corresponding to `|latn|'. The language used is \cmd\c@zf@language, +% by default |0|, the `default language'. +% \begin{macrocode} +\xetex_or_luatex:nnn + { \prg_new_conditional:Nnn \fontspec_check_ot_feat:n {TF,T} } + { + \@tempcntb\XeTeXOTcountfeatures\zf@basefont\c@zf@script\c@zf@language + \fontspec_v_str_to_num:n {#1} + \c@zf@index\z@ + \@tempswafalse + \loop\ifnum\c@zf@index<\@tempcntb + \ifnum\XeTeXOTfeaturetag\zf@basefont\c@zf@script\c@zf@language + \c@zf@index=\l_fontspec_strnum_int + \@tempswatrue + \c@zf@index\@tempcntb + \else + \advance\c@zf@index\@ne + \fi + \repeat + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } + { + \directlua{ + fontspec.check_ot_feat( + "zf@basefont", "#1", + "\l_fontspec_lang_tl", "\l_fontspec_script_tl" + ) + } + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{\pkg{keyval} definitions} +% +% This is the tedious section where we correlate all possible +% (eventually) font feature requests with their \XeTeX\ representations. +% +% \subsubsection{Pre-parsing naming information} +% +% These features are extracted from the font feature list before all others, using +% \pkg{xkeyval}'s \cmd\setkeys|*|. +% +% \paragraph{\feat{ExternalLocation}} +% For fonts that aren't installed in the system. If no argument is given, the font is located +% with |kpsewhich|; it's either in the current directory or the \TeX\ tree. Otherwise, the +% argument given defines the file path of the font. +% \begin{macrocode} +\bool_new:N \l_fontspec_external_bool +\define@key[zf]{preparse-external}{ExternalLocation}[]{ + \zf@nobftrue + \zf@noittrue + \bool_set_true:N \l_fontspec_external_bool + \cs_gset:Npn \fontspec_namewrap:n ##1 { [ #1 ##1 ] } + \xetex_if_engine:T { \setkeys[zf]{preparse}{Renderer=ICU} } +} +\aliasfontfeature{ExternalLocation}{Path} +% \end{macrocode} +% +% \paragraph{\feat{Extension}} +% For fonts that aren't installed in the system. Specifies the font extension +% to use. +% \begin{macrocode} +\define@key[zf]{preparse-external}{Extension}{ + \tl_set:Nn \l_fontspec_extension_tl {#1} + \bool_if:NF \l_fontspec_external_bool { + \setkeys*[zf]{preparse-external}{ExternalLocation} + } +} +\tl_clear:N \l_fontspec_extension_tl +% \end{macrocode} +% +% \subsubsection{Pre-parsed features} +% +% After the font name(s) have been sorted out, now need to extract any +% renderer/font configuration features that need to be processed before +% all other font features. +% +% \paragraph{\feat{Renderer}} +% This feature must be processed before all others (the other font shape and features options are also pre-parsed for convenience) because the renderer determines the format of the features and even whether certain features are available. +% \begin{macrocode} +\define@choicekey[zf]{preparse}{Renderer}[\l_tmpa_tl\l_tmpa_num] + {AAT,ICU,Graphite,Full,Basic}{ + \zf@update@family{+rend:#1} + \intexpr_compare:nTF {\l_tmpa_num < 3} { + \xetex_or_luatex:nn + { + \tl_set:Nv \l_fontspec_renderer_tl {g_fontspec_renderer_tag_\l_tmpa_tl} + } + { + \fontspec_warning:nx {only-xetex-feature} {Renderer=AAT/ICU/Graphite} + } + }{ + \xetex_or_luatex:nn + { \fontspec_warning:nx {only-luatex-feature} {Renderer=Full/Basic} } + { \tl_set:Nv \l_fontspec_mode_tl {g_fontspec_mode_tag_\l_tmpa_tl} } + } +} +\tl_set:cn {g_fontspec_renderer_tag_AAT} {/AAT} +\tl_set:cn {g_fontspec_renderer_tag_ICU} {/ICU} +\tl_set:cn {g_fontspec_renderer_tag_Graphite} {/GR} +\tl_set:cn {g_fontspec_mode_tag_Full} {node} +\tl_set:cn {g_fontspec_mode_tag_Basic} {base} +% \end{macrocode} +% +% \paragraph{OpenType script/language} +% See later for the resolutions from \pkg{fontspec} features to OpenType definitions. +% \begin{macrocode} +\define@key[zf]{preparse}{Script}{ + \xetex_if_engine:T { \setkeys[zf]{preparse}{Renderer=ICU} } + \tl_set:Nn \l_fontspec_script_name_tl {#1} + \zf@update@family{+script:#1} +} +% \end{macrocode} +% Exactly the same: +% \begin{macrocode} +\define@key[zf]{preparse}{Language}{ + \xetex_if_engine:T { \setkeys[zf]{preparse}{Renderer=ICU} } + \tl_set:Nn \l_fontspec_lang_name_tl {#1} + \zf@update@family{+language:#1} +} +% \end{macrocode} +% +% \subsubsection{Bold/italic choosing options} +% +% The \feat{Bold}, \feat{Italic}, and \feat{BoldItalic} +% features are for defining explicitly the bold and italic fonts used +% in a font family. +% +% \paragraph{Fonts} +% Upright: +% \begin{macrocode} +\define@key[zf]{preparse-external}{UprightFont}{ + \fontspec_complete_fontname:Nn \zf@up {#1} + \zf@update@family{up:#1} +} +% \end{macrocode} +% Bold: +% \begin{macrocode} +\define@key[zf]{preparse-external}{BoldFont}{ + \edef\@tempa{#1} + \ifx\@tempa\@empty + \zf@nobftrue + \zf@update@family{nobf} + \else + \zf@nobffalse + \fontspec_complete_fontname:Nn \zf@bf {#1} + \zf@update@family{bf:#1} + \fi +} +% \end{macrocode} +% Same for italic: +% \begin{macrocode} +\define@key[zf]{preparse-external}{ItalicFont}{ + \edef\@tempa{#1} + \ifx\@tempa\@empty + \zf@noittrue + \zf@update@family{noit} + \else + \zf@noitfalse + \fontspec_complete_fontname:Nn \zf@it {#1} + \zf@update@family{it:#1} + \fi +} +% \end{macrocode} +% Simpler for bold+italic \& slanted: +% \begin{macrocode} +\define@key[zf]{preparse-external}{BoldItalicFont}{ + \fontspec_complete_fontname:Nn \zf@bfit {#1} + \zf@update@family{bfit:#1} +} +\define@key[zf]{preparse-external}{SlantedFont}{ + \fontspec_complete_fontname:Nn \zf@sl {#1} + \zf@update@family{sl:#1} +} +\define@key[zf]{preparse-external}{BoldSlantedFont}{ + \fontspec_complete_fontname:Nn \zf@bfsl {#1} + \zf@update@family{bfsl:#1} +} +% \end{macrocode} +% Small caps isn't pre-parsed because it can vary with others above: +% \begin{macrocode} +\define@key[zf]{options}{SmallCapsFont}{ + \edef\@tempa{#1} + \ifx\@tempa\@empty + \zf@nosctrue + \zf@update@family{nosc} + \else + \zf@noscfalse + \fontspec_complete_fontname:Nn \zf@sc {#1} + \zf@update@family{sc:\zap@space #1~\@empty} + \fi +} +% \end{macrocode} +% +% \begin{macro}{\fontspec_complete_fontname:Nn} +% This macro defines |#1| as the input with any |*| tokens of its input +% replaced by the font name. This lets us define supplementary fonts in full +% (``\texttt{Baskerville Semibold}'') or in abbreviation (``\texttt{* Semibold}''). +% \begin{macrocode} +\cs_set:Npn \fontspec_complete_fontname:Nn #1#2 { + \tl_set:Nn #1 {#2} + \tl_replace_all_in:Nnx #1 {*} {\zf@fontname} +} +\cs_generate_variant:Nn \tl_replace_all_in:Nnn {Nnx} +% \end{macrocode} +% \end{macro} +% +% \paragraph{Features} +% \begin{macrocode} +\define@key[zf]{preparse}{UprightFeatures}{ + \def\zf@up@feat{, #1} + \zf@update@family{rmfeat:#1} +} +\define@key[zf]{preparse}{BoldFeatures}{ + \def\zf@bf@feat{, #1} + \zf@update@family{bffeat:#1} +} +\define@key[zf]{preparse}{ItalicFeatures}{ + \def\zf@it@feat{, #1} + \zf@update@family{itfeat:#1} +} +\define@key[zf]{preparse}{BoldItalicFeatures}{ + \def\zf@bfit@feat{, #1} + \zf@update@family{bfitfeat:#1} +} +\define@key[zf]{preparse}{SlantedFeatures}{ + \def\zf@sl@feat{, #1} + \zf@update@family{slfeat:#1} +} +\define@key[zf]{preparse}{BoldSlantedFeatures}{ + \def\zf@bfsl@feat{, #1} + \zf@update@family{bfslfeat:#1} +} +% \end{macrocode} +% Note that small caps features can vary by shape, so these in fact \emph{aren't} pre-parsed. +% \begin{macrocode} +\define@key[zf]{options}{SmallCapsFeatures}{ + \unless\ifzf@firsttime\def\zf@sc@feat{, #1}\fi + \zf@update@family{scfeat:\zap@space #1~\@empty} +} +% \end{macrocode} +% +% paragraph{Features varying by size} +% TODO: sizezfeatures and italicfont (etc) don't play nice +% \begin{macrocode} +\define@key[zf]{preparse}{SizeFeatures}{ + \unless\ifzf@firsttime\def\l_fontspec_sizefeat_clist{#1}\fi + \zf@update@family{sizefeat:\zap@space #1~\@empty} +} +% \end{macrocode} +% +% \begin{macrocode} +\define@key[zf]{sizing}{Size}{ \tl_set:Nn \l_fontspec_size_tl {#1} } +\define@key[zf]{sizing}{Font}{ + \fontspec_complete_fontname:Nn \l_fontspec_sizedfont_tl {#1} +} +% \end{macrocode} +% +% \subsubsection{Font-independent features} +% +% These features can be applied to any font. +% +% \paragraph{Scale} +% If the input isn't one of the pre-defined string options, then +% it's gotta be numerical. \cs{fontspec_calc_scale:n} does all the work in +% the auto-scaling cases. +% \begin{macrocode} +\define@key[zf]{options}{Scale}{ + \prg_case_str:nnn {#1} + { + {MatchLowercase} { \fontspec_calc_scale:n {5} } + {MatchUppercase} { \fontspec_calc_scale:n {8} } + } + { \tl_set:Nx \l_fontspec_scale_tl {#1} } + \zf@update@family{+scale:\l_fontspec_scale_tl} + \tl_set:Nx \l_fontspec_scale_tl { s*[\l_fontspec_scale_tl] } +} +% \end{macrocode} +% +% \begin{macro}{\fontspec_calc_scale:n} +% This macro calculates the amount of scaling between the default +% roman font and the (default shape of) the font being selected such +% that the font dimension that is input is equal for both. The only +% font dimensions that justify this are 5 (lowercase height) +% and 8 (uppercase height in \XeTeX). +% +% This script is executed for every extra shape, which seems wasteful, +% but allows alternate italic shapes from a separate font, say, to +% be loaded and to be auto-scaled correctly. Even if this would be ugly. +% \begin{macrocode} +\cs_new:Npn \fontspec_calc_scale:n #1 { + \group_begin: + \rmfamily + \fontspec_set_font_dimen:NnN \@tempdima {#1} \font + \fontspec_set_font_dimen:NnN \@tempdimb {#1} \zf@basefont + \dim_set:Nn \@tempdimc { 1pt*\@tempdima/\@tempdimb } + \tl_gset:Nx \l_fontspec_scale_tl {\strip@pt\@tempdimc} + \fontspec_info:n {set-scale} + \group_end: +} +% \end{macrocode} +% This function sets the dimension |#1| (for font |#3|) to what would be known +% as the `fontdimen' |#2| in \TeX\ but apparently isn't set that way in +% \LuaTeX. +% \begin{macrocode} +\xetex_or_luatex:nnn { \cs_new:Npn \fontspec_set_font_dimen:NnN #1#2#3 } +{ + \dim_set:Nn #1 { \fontdimen #2 #3 } +} +{ + \dim_set:Nn #1 { \directlua{ fontspec.get_dimen(#2, "\cs_to_str:N #3") } } +} +% \end{macrocode} +% \end{macro} +% +% \paragraph{Inter-word space} +% These options set the relevant \cmd\fontdimen s for the +% font being loaded. +% \begin{macrocode} +\define@key[zf]{options}{WordSpace}{ + \zf@update@family{+wordspace:#1} + \unless\ifzf@firsttime + \zf@wordspace@parse#1,\zf@@ii,\zf@@iii,\zf@@ + \fi +} +% \end{macrocode} +% +% \begin{macro}{\zf@wordspace@parse} +% This macro determines if the input to \feat{WordSpace} is +% of the form |{X}| or |{X,Y,Z}| and executes the font scaling. +% If the former input, it executes |{X,X,X}|. +% \begin{macrocode} +\def\zf@wordspace@parse#1,#2,#3,#4\zf@@{ + \def\@tempa{#4} + \ifx\@tempa\@empty + \setlength\@tempdima{#1\fontdimen2\zf@basefont} + \@tempdimb\@tempdima + \@tempdimc\@tempdima + \else + \setlength\@tempdima{#1\fontdimen2\zf@basefont} + \setlength\@tempdimb{#2\fontdimen3\zf@basefont} + \setlength\@tempdimc{#3\fontdimen4\zf@basefont} + \fi + \edef\zf@adjust{ + \zf@adjust + \fontdimen2\font\the\@tempdima + \fontdimen3\font\the\@tempdimb + \fontdimen4\font\the\@tempdimc + } +} +% \end{macrocode} +% \end{macro} +% +% \paragraph{Punctuation space} +% Scaling factor for the nominal \cmd\fontdimen \#7. +% \begin{macrocode} +\define@key[zf]{options}{PunctuationSpace}{ + \zf@update@family{+punctspace:#1} + \setlength\@tempdima{#1\fontdimen7\zf@basefont} + \edef\zf@adjust{\zf@adjust\fontdimen7\font\the\@tempdima} +} +% \end{macrocode} +% +% \paragraph{Letterspacing} +% \begin{macrocode} +\define@key[zf]{options}{LetterSpace}{ + \zf@update@family{+tracking:#1} + \zf@update@ff{letterspace=#1} +} +% \end{macrocode} +% +% \paragraph{Hyphenation character} +% This feature takes one of three arguments: `\opt{None}', +% \meta{glyph}, or \meta{slot}. If the input isn't the first, +% and it's one character, then it's the second; otherwise, it's +% the third. +% \begin{macrocode} +\define@key[zf]{options}{HyphenChar}{ + \zf@update@family{+hyphenchar:#1} + \edef\@tempa{#1} + \edef\@tempb{None} + \ifx\@tempa\@tempb + \xetex_or_luatex:nnn { \g@addto@macro\zf@adjust } + { \hyphenchar\font-1\relax } + { \luatexprehyphenchar=-1\relax } + \else + \zf@check@one@char#1\zf@@ + \ifx\@tempb\@empty + \xetex_or_luatex:nn { + {\zf@basefont\expandafter\ifnum\expandafter\XeTeXcharglyph + \expandafter`#1 > \z@ + \g@addto@macro\zf@adjust{% + {\expandafter\hyphenchar\expandafter + \font\expandafter`#1}}% + \else + \fontspec_error:nx {no-glyph}{#1} + \fi}% + }{ + \ifnum\directlua{ + fontspec.sprint(fontspec.charglyph('#1', 'zf@basefont')) + } > \z@ + \g@addto@macro\zf@adjust{\luatexprehyphenchar=`#1\relax} + \else + \fontspec_error:nx {no-glyph}{#1} + \fi + } + \else + \xetex_or_luatex:nn { + {\zf@basefont\ifnum\XeTeXcharglyph#1 > \z@ + \g@addto@macro\zf@adjust{\hyphenchar\font#1\relax}% + \else + \fontspec_error:nx {no-glyph}{#1} + \fi}% + }{ + \ifnum\directlua{ + fontspec.sprint(fontspec.charglyph('#1', 'zf@basefont')) + } > \z@ + \g@addto@macro\zf@adjust{\luatexprehyphenchar=#1\relax} + \else + \fontspec_error:nx {no-glyph}{#1} + \fi + } + \fi + \fi +} +\def\zf@check@one@char#1#2\zf@@{\def\@tempb{#2}} +% \end{macrocode} +% +% \paragraph{Color} +% \begin{macrocode} +\define@key[zf]{options}{Color}{ + \zf@update@family{+col:#1} + \zf@update@ff{color=#1} +} +\keyval@alias@key[zf]{options}{Color}{Colour} +% \end{macrocode} +% +% \paragraph{Mapping} +% \begin{macrocode} +\xetex_or_luatex:nnn { + \define@key[zf]{options}{Mapping} +}{ + \zf@update@family{+map:#1} + \zf@update@ff{mapping=#1} +}{ + \tl_if_eq:nnTF {#1} {tex-text} { + \fontspec_warning:n {no-mapping-ligtex} + \msg_redirect_name:nnn {fontspec} {no-mapping-ligtex} {none} + \setkeys[zf]{options}{ Ligatures=TeX } + }{ + \fontspec_warning:n {no-mapping} + } +} +% \end{macrocode} +% +% \paragraph{FeatureFile} +% \begin{macrocode} +\define@key[zf]{options}{FeatureFile}{ + \zf@update@family{+fea:#1} + \zf@update@ff{featurefile=#1} +} +% \end{macrocode} +% +% +% \subsubsection{Continuous font axes} +% +% \begin{macrocode} +\define@key[zf]{options}{Weight}{ + \zf@update@family{+weight:#1} + \zf@update@ff{weight=#1} +} +\define@key[zf]{options}{Width}{ + \zf@update@family{+width:#1} + \zf@update@ff{width=#1} +} +\define@key[zf]{options}{OpticalSize}{ + \xetex_or_luatex:nn { + \ifzf@icu + \tl_set:Nn \l_fontspec_optical_size_tl {/ S = #1} + \zf@update@family{+size:#1} + \fi + \ifzf@mm + \zf@update@family{+size:#1} + \zf@update@ff{optical size=#1} + \fi + \ifzf@icu\else + \ifzf@mm\else + \ifzf@firsttime + \fontspec_warning:n {no-opticals} + \fi + \fi + \fi + }{ + \tl_set:Nn \l_fontspec_optical_size_tl {/ S = #1} + \zf@update@family{+size:#1} + } +} +% \end{macrocode} +% +% \subsubsection{Font transformations} +% \begin{macrocode} +\define@key[zf]{options}{FakeSlant}{ + \zf@update@family{+slant:#1} + \zf@update@ff{slant=#1} +} +\define@key[zf]{options}{FakeStretch}{ + \zf@update@family{+extend:#1} + \zf@update@ff{extend=#1} +} +\define@key[zf]{options}{FakeBold}{ + \zf@update@family{+embolden:#1} + \zf@update@ff{embolden=#1} +} +% \end{macrocode} +% +% +% \subsubsection{Ligatures} +% The call to the nested keyval family must be wrapped in braces to +% hide the parent list (this later requires the use of global +% definitions (|\xdef|) in |\zf@update@...|). Both \AAT\ and OpenType +% names are offered to chose |Rare|/|Discretionary| ligatures. +% \begin{macrocode} +\zf@define@font@feature{Ligatures} +\zf@define@feature@option{Ligatures}{Required} {1}{0}{+rlig} +\zf@define@feature@option{Ligatures}{NoRequired} {1}{1}{-rlig} +\zf@define@feature@option{Ligatures}{Common} {1}{2}{+liga} +\zf@define@feature@option{Ligatures}{NoCommon} {1}{3}{-liga} +\zf@define@feature@option{Ligatures}{Rare} {1}{4}{+dlig} +\zf@define@feature@option{Ligatures}{NoRare} {1}{5}{-dlig} +\zf@define@feature@option{Ligatures}{Discretionary} {1}{4}{+dlig} +\zf@define@feature@option{Ligatures}{NoDiscretionary}{1}{5}{-dlig} +\zf@define@feature@option{Ligatures}{Contextual} {}{} {+clig} +\zf@define@feature@option{Ligatures}{NoContextual} {}{} {-clig} +\zf@define@feature@option{Ligatures}{Historical} {}{} {+hlig} +\zf@define@feature@option{Ligatures}{NoHistorical} {}{} {-hlig} +\zf@define@feature@option{Ligatures}{Logos} {1}{6} {} +\zf@define@feature@option{Ligatures}{NoLogos} {1}{7} {} +\zf@define@feature@option{Ligatures}{Rebus} {1}{8} {} +\zf@define@feature@option{Ligatures}{NoRebus} {1}{9} {} +\zf@define@feature@option{Ligatures}{Diphthong} {1}{10}{} +\zf@define@feature@option{Ligatures}{NoDiphthong} {1}{11}{} +\zf@define@feature@option{Ligatures}{Squared} {1}{12}{} +\zf@define@feature@option{Ligatures}{NoSquared} {1}{13}{} +\zf@define@feature@option{Ligatures}{AbbrevSquared} {1}{14}{} +\zf@define@feature@option{Ligatures}{NoAbbrevSquared}{1}{15}{} +\zf@define@feature@option{Ligatures}{Icelandic} {1}{32}{} +\zf@define@feature@option{Ligatures}{NoIcelandic} {1}{33}{} +% \end{macrocode} +% Emulate CM extra ligatures. +% \begin{macrocode} +\define@key[zf@feat]{Ligatures}{TeX}[]{ + \xetex_or_luatex:nn { + \zf@update@family{+map:tex-text} + \zf@update@ff{mapping=tex-text} + }{ + \zf@update@family{+tlig+trep} + \zf@update@ff{+tlig;+trep} + } +} +% \end{macrocode} +% +% \subsubsection{Letters} +% \begin{macrocode} +\zf@define@font@feature{Letters} +\zf@define@feature@option{Letters}{Normal} {3}{0}{} +\zf@define@feature@option{Letters}{Uppercase} {3}{1}{+case} +\zf@define@feature@option{Letters}{Lowercase} {3}{2}{} +\zf@define@feature@option{Letters}{SmallCaps} {3}{3}{+smcp} +\zf@define@feature@option{Letters}{PetiteCaps} {} {} {+pcap} +\zf@define@feature@option{Letters}{UppercaseSmallCaps} {} {} {+c2sc} +\zf@define@feature@option{Letters}{UppercasePetiteCaps}{} {} {+c2pc} +\zf@define@feature@option{Letters}{InitialCaps} {3}{4}{} +\zf@define@feature@option{Letters}{Unicase} {} {} {+unic} +% \end{macrocode} +% +% \subsubsection{Numbers} +% +% These were originally separated into \feat{NumberCase} and +% \feat{NumberSpacing} following \AAT, but it makes more sense to +% combine them. +% +% Both naming conventions are offered to select the number case. +% +% \begin{macrocode} +\zf@define@font@feature{Numbers} +\zf@define@feature@option{Numbers}{Monospaced} {6} {0}{+tnum} +\zf@define@feature@option{Numbers}{Proportional} {6} {1}{+pnum} +\zf@define@feature@option{Numbers}{Lowercase} {21}{0}{+onum} +\zf@define@feature@option{Numbers}{OldStyle} {21}{0}{+onum} +\zf@define@feature@option{Numbers}{Uppercase} {21}{1}{+lnum} +\zf@define@feature@option{Numbers}{Lining} {21}{1}{+lnum} +\zf@define@feature@option{Numbers}{SlashedZero} {14}{5}{+zero} +\zf@define@feature@option{Numbers}{NoSlashedZero}{14}{4}{-zero} +% \end{macrocode} +% +% |luaotload| provides a custom |anum| feature for replacing Latin +% (AKA Arabic) numbers with Arabic (AKA Indic-Arabic). The same feature +% maps to Farsi (Persian) numbers if font language is Farsi. +% +% \begin{macrocode} +\luatex_if_engine:T { + \zf@define@feature@option{Numbers}{Arabic}{}{}{+anum} + \zf@define@feature@option{Numbers}{Farsi} {}{}{+anum} +} +% \end{macrocode} +% +% \subsubsection{Contextuals} +% \begin{macrocode} +\zf@define@font@feature {Contextuals} +\zf@define@feature@option{Contextuals}{Swash} {} {} {+cswh} +\zf@define@feature@option{Contextuals}{NoSwash} {} {} {-cswh} +\zf@define@feature@option{Contextuals}{Alternate} {} {} {+calt} +\zf@define@feature@option{Contextuals}{NoAlternate} {} {} {-calt} +\zf@define@feature@option{Contextuals}{WordInitial} {8}{0}{+init} +\zf@define@feature@option{Contextuals}{NoWordInitial}{8}{1}{-init} +\zf@define@feature@option{Contextuals}{WordFinal} {8}{2}{+fina} +\zf@define@feature@option{Contextuals}{NoWordFinal} {8}{3}{-fina} +\zf@define@feature@option{Contextuals}{LineInitial} {8}{4}{} +\zf@define@feature@option{Contextuals}{NoLineInitial}{8}{5}{} +\zf@define@feature@option{Contextuals}{LineFinal} {8}{6}{+falt} +\zf@define@feature@option{Contextuals}{NoLineFinal} {8}{7}{-falt} +\zf@define@feature@option{Contextuals}{Inner} {8}{8}{+medi} +\zf@define@feature@option{Contextuals}{NoInner} {8}{9}{-medi} +% \end{macrocode} +% +% \subsubsection{Diacritics} +% \begin{macrocode} +\zf@define@font@feature{Diacritics} +\zf@define@feature@option{Diacritics}{Show} {9}{0}{} +\zf@define@feature@option{Diacritics}{Hide} {9}{1}{} +\zf@define@feature@option{Diacritics}{Decompose} {9}{2}{} +\zf@define@feature@option{Diacritics}{MarkToBase} {}{}{+mark} +\zf@define@feature@option{Diacritics}{NoMarkToBase}{}{}{-mark} +\zf@define@feature@option{Diacritics}{MarkToMark} {}{}{+mkmk} +\zf@define@feature@option{Diacritics}{NoMarkToMark}{}{}{-mkmk} +\zf@define@feature@option{Diacritics}{AboveBase} {}{}{+abvm} +\zf@define@feature@option{Diacritics}{NoAboveBase} {}{}{-abvm} +\zf@define@feature@option{Diacritics}{BelowBase} {}{}{+blwm} +\zf@define@feature@option{Diacritics}{NoBelowBase} {}{}{-blwm} +% \end{macrocode} +% +% \subsubsection{Kerning} +% \begin{macrocode} +\zf@define@font@feature{Kerning} +\zf@define@feature@option{Kerning}{Uppercase}{}{}{+cpsp} +\zf@define@feature@option{Kerning}{On} {}{}{+kern} +\zf@define@feature@option{Kerning}{Off} {}{}{-kern} +%\zf@define@feature@option{Kerning}{Vertical}{}{}{+vkrn} +%\zf@define@feature@option{Kerning} +% {VerticalAlternateProportional}{}{}{+vpal} +%\zf@define@feature@option{Kerning}{VerticalAlternateHalfWidth}{}{}{+vhal} +% \end{macrocode} +% +% \subsubsection{Vertical position} +% \begin{macrocode} +\zf@define@font@feature{VerticalPosition} +\zf@define@feature@option{VerticalPosition}{Normal} {10}{0}{} +\zf@define@feature@option{VerticalPosition}{Superior} {10}{1}{+sups} +\zf@define@feature@option{VerticalPosition}{Inferior} {10}{2}{+subs} +\zf@define@feature@option{VerticalPosition}{Ordinal} {10}{3}{+ordn} +\zf@define@feature@option{VerticalPosition}{Numerator} {} {} {+numr} +\zf@define@feature@option{VerticalPosition}{Denominator}{} {} {+dnom} +\zf@define@feature@option{VerticalPosition}{ScientificInferior}{}{}{+sinf} +% \end{macrocode} +% +% \subsubsection{Fractions} +% \begin{macrocode} +\zf@define@font@feature{Fractions} +\zf@define@feature@option{Fractions}{On} {11}{1}{+frac} +\zf@define@feature@option{Fractions}{Off} {11}{0}{-frac} +\zf@define@feature@option{Fractions}{Diagonal} {11}{2}{} +\zf@define@feature@option{Fractions}{Alternate}{} {} {+afrc} +% \end{macrocode} +% +% \subsubsection{Alternates and variants} +% Selected numerically because they don't have standard names. Very +% easy to process, very annoying for the user! +% +% \begin{macrocode} +\define@key[zf]{options}{Alternate}[0]{ + \setkeys*[zf@feat]{Alternate}{#1} + \unless\ifx\XKV@rm\@empty + \def\XKV@tfam{Alternate} + \fontspec_make_feature:nnn{17}{#1}{+salt=#1} + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\define@key[zf]{options}{Variant}{ + \setkeys*[zf@feat]{Variant}{#1} + \unless\ifx\XKV@rm\@empty + \def\XKV@tfam{Variant} + \fontspec_make_feature:nnn{18}{#1}{+ss\two@digits{#1}} + \fi +} +\aliasfontfeature{Variant}{StylisticSet} +% \end{macrocode} +% +% \subsubsection{Style} +% \begin{macrocode} +\zf@define@font@feature{Style} +\zf@define@feature@option{Style}{Alternate} {} {} {+salt} +\zf@define@feature@option{Style}{Italic} {32}{2}{+ital} +\zf@define@feature@option{Style}{Ruby} {28}{2}{+ruby} +\zf@define@feature@option{Style}{Swash} {} {} {+swsh} +\zf@define@feature@option{Style}{Historic} {} {} {+hist} +\zf@define@feature@option{Style}{Display} {19}{1}{} +\zf@define@feature@option{Style}{Engraved} {19}{2}{} +\zf@define@feature@option{Style}{TitlingCaps} {19}{4}{+titl} +\zf@define@feature@option{Style}{TallCaps} {19}{5}{} +\zf@define@feature@option{Style}{HorizontalKana}{} {} {+hkna} +\zf@define@feature@option{Style}{VerticalKana} {} {} {+vkna} +% \end{macrocode} +% +% \subsubsection{CJK shape} +% \begin{macrocode} +\zf@define@font@feature{CJKShape} +\zf@define@feature@option{CJKShape}{Traditional}{20}{0} {+trad} +\zf@define@feature@option{CJKShape}{Simplified} {20}{1} {+smpl} +\zf@define@feature@option{CJKShape}{JIS1978} {20}{2} {+jp78} +\zf@define@feature@option{CJKShape}{JIS1983} {20}{3} {+jp83} +\zf@define@feature@option{CJKShape}{JIS1990} {20}{4} {+jp90} +\zf@define@feature@option{CJKShape}{Expert} {20}{10}{+expt} +\zf@define@feature@option{CJKShape}{NLC} {20}{13}{+nlck} +% \end{macrocode} +% +% \subsubsection{Character width} +% \begin{macrocode} +\zf@define@font@feature{CharacterWidth} +\zf@define@feature@option{CharacterWidth}{Proportional}{22}{0}{+pwid} +\zf@define@feature@option{CharacterWidth}{Full}{22}{1}{+fwid} +\zf@define@feature@option{CharacterWidth}{Half}{22}{2}{+hwid} +\zf@define@feature@option{CharacterWidth}{Third}{22}{3}{+twid} +\zf@define@feature@option{CharacterWidth}{Quarter}{22}{4}{+qwid} +\zf@define@feature@option{CharacterWidth}{AlternateProportional}{22}{5}{+palt} +\zf@define@feature@option{CharacterWidth}{AlternateHalf}{22}{6}{+halt} +\zf@define@feature@option{CharacterWidth}{Default}{22}{7}{} +% \end{macrocode} +% +% \subsubsection{Annotation} +% \begin{macrocode} +\zf@define@font@feature{Annotation} +\zf@define@feature@option{Annotation}{Off}{24}{0}{-nalt} +\zf@define@feature@option{Annotation}{On}{}{}{+nalt} +\zf@define@feature@option{Annotation}{Box}{24}{1}{} +\zf@define@feature@option{Annotation}{RoundedBox}{24}{2}{} +\zf@define@feature@option{Annotation}{Circle}{24}{3}{} +\zf@define@feature@option{Annotation}{BlackCircle}{24}{4}{} +\zf@define@feature@option{Annotation}{Parenthesis}{24}{5}{} +\zf@define@feature@option{Annotation}{Period}{24}{6}{} +\zf@define@feature@option{Annotation}{RomanNumerals}{24}{7}{} +\zf@define@feature@option{Annotation}{Diamond}{24}{8}{} +\zf@define@feature@option{Annotation}{BlackSquare}{24}{9}{} +\zf@define@feature@option{Annotation}{BlackRoundSquare}{24}{10}{} +\zf@define@feature@option{Annotation}{DoubleCircle}{24}{11}{} +% \end{macrocode} +% +% +% \subsubsection{Vertical} +% \begin{macrocode} +\zf@define@font@feature{Vertical} +\define@key[zf@feat]{Vertical}{RotatedGlyphs}[]{ + \ifzf@icu + \fontspec_make_feature:nnn{}{}{+vrt2} + \zf@update@family{+vert} + \zf@update@ff{vertical} + \else + \zf@update@family{+vert} + \zf@update@ff{vertical} + \fi +} +% \end{macrocode} +% +% \subsubsection{Script} +% \begin{macrocode} +\newfontscript{Arabic}{arab} \newfontscript{Armenian}{armn} +\newfontscript{Balinese}{bali} \newfontscript{Bengali}{beng} +\newfontscript{Bopomofo}{bopo} \newfontscript{Braille}{brai} +\newfontscript{Buginese}{bugi} \newfontscript{Buhid}{buhd} +\newfontscript{Byzantine~Music}{byzm} \newfontscript{Canadian~Syllabics}{cans} +\newfontscript{Cherokee}{cher} +\newfontscript{CJK~Ideographic}{hani} \newfontscript{Coptic}{copt} +\newfontscript{Cypriot~Syllabary}{cprt} \newfontscript{Cyrillic}{cyrl} +\newfontscript{Default}{DFLT} \newfontscript{Deseret}{dsrt} +\newfontscript{Devanagari}{deva} \newfontscript{Ethiopic}{ethi} +\newfontscript{Georgian}{geor} \newfontscript{Glagolitic}{glag} +\newfontscript{Gothic}{goth} \newfontscript{Greek}{grek} +\newfontscript{Gujarati}{gujr} \newfontscript{Gurmukhi}{guru} +\newfontscript{Hangul~Jamo}{jamo} \newfontscript{Hangul}{hang} +\newfontscript{Hanunoo}{hano} \newfontscript{Hebrew}{hebr} +\newfontscript{Hiragana~and~Katakana}{kana} +\newfontscript{Javanese}{java} \newfontscript{Kannada}{knda} +\newfontscript{Kharosthi}{khar} \newfontscript{Khmer}{khmr} +\newfontscript{Lao}{lao~} \newfontscript{Latin}{latn} +\newfontscript{Limbu}{limb} \newfontscript{Linear~B}{linb} +\newfontscript{Malayalam}{mlym} \newfontscript{Math}{math} +\newfontscript{Mongolian}{mong} +\newfontscript{Musical~Symbols}{musc} \newfontscript{Myanmar}{mymr} +\newfontscript{N'ko}{nko~} \newfontscript{Ogham}{ogam} +\newfontscript{Old~Italic}{ital} +\newfontscript{Old~Persian~Cuneiform}{xpeo} +\newfontscript{Oriya}{orya} \newfontscript{Osmanya}{osma} +\newfontscript{Phags-pa}{phag} \newfontscript{Phoenician}{phnx} +\newfontscript{Runic}{runr} \newfontscript{Shavian}{shaw} +\newfontscript{Sinhala}{sinh} +\newfontscript{Sumero-Akkadian~Cuneiform}{xsux} +\newfontscript{Syloti~Nagri}{sylo} \newfontscript{Syriac}{syrc} +\newfontscript{Tagalog}{tglg} \newfontscript{Tagbanwa}{tagb} +\newfontscript{Tai~Le}{tale} \newfontscript{Tai~Lu}{talu} +\newfontscript{Tamil}{taml} \newfontscript{Telugu}{telu} +\newfontscript{Thaana}{thaa} \newfontscript{Thai}{thai} +\newfontscript{Tibetan}{tibt} \newfontscript{Tifinagh}{tfng} +\newfontscript{Ugaritic~Cuneiform}{ugar}\newfontscript{Yi}{yi~~} +% \end{macrocode} +% For convenience: +% \begin{macrocode} +\newfontscript{Kana}{kana} +\newfontscript{Maths}{math} +\newfontscript{CJK}{hani} +% \end{macrocode} +% +% \subsubsection{Language} +% \begin{macrocode} +\newfontlanguage{Abaza}{ABA}\newfontlanguage{Abkhazian}{ABK} +\newfontlanguage{Adyghe}{ADY}\newfontlanguage{Afrikaans}{AFK} +\newfontlanguage{Afar}{AFR}\newfontlanguage{Agaw}{AGW} +\newfontlanguage{Altai}{ALT}\newfontlanguage{Amharic}{AMH} +\newfontlanguage{Arabic}{ARA}\newfontlanguage{Aari}{ARI} +\newfontlanguage{Arakanese}{ARK}\newfontlanguage{Assamese}{ASM} +\newfontlanguage{Athapaskan}{ATH}\newfontlanguage{Avar}{AVR} +\newfontlanguage{Awadhi}{AWA}\newfontlanguage{Aymara}{AYM} +\newfontlanguage{Azeri}{AZE}\newfontlanguage{Badaga}{BAD} +\newfontlanguage{Baghelkhandi}{BAG}\newfontlanguage{Balkar}{BAL} +\newfontlanguage{Baule}{BAU}\newfontlanguage{Berber}{BBR} +\newfontlanguage{Bench}{BCH}\newfontlanguage{Bible~Cree}{BCR} +\newfontlanguage{Belarussian}{BEL}\newfontlanguage{Bemba}{BEM} +\newfontlanguage{Bengali}{BEN}\newfontlanguage{Bulgarian}{BGR} +\newfontlanguage{Bhili}{BHI}\newfontlanguage{Bhojpuri}{BHO} +\newfontlanguage{Bikol}{BIK}\newfontlanguage{Bilen}{BIL} +\newfontlanguage{Blackfoot}{BKF}\newfontlanguage{Balochi}{BLI} +\newfontlanguage{Balante}{BLN}\newfontlanguage{Balti}{BLT} +\newfontlanguage{Bambara}{BMB}\newfontlanguage{Bamileke}{BML} +\newfontlanguage{Breton}{BRE}\newfontlanguage{Brahui}{BRH} +\newfontlanguage{Braj~Bhasha}{BRI}\newfontlanguage{Burmese}{BRM} +\newfontlanguage{Bashkir}{BSH}\newfontlanguage{Beti}{BTI} +\newfontlanguage{Catalan}{CAT}\newfontlanguage{Cebuano}{CEB} +\newfontlanguage{Chechen}{CHE}\newfontlanguage{Chaha~Gurage}{CHG} +\newfontlanguage{Chattisgarhi}{CHH}\newfontlanguage{Chichewa}{CHI} +\newfontlanguage{Chukchi}{CHK}\newfontlanguage{Chipewyan}{CHP} +\newfontlanguage{Cherokee}{CHR}\newfontlanguage{Chuvash}{CHU} +\newfontlanguage{Comorian}{CMR}\newfontlanguage{Coptic}{COP} +\newfontlanguage{Cree}{CRE}\newfontlanguage{Carrier}{CRR} +\newfontlanguage{Crimean~Tatar}{CRT}\newfontlanguage{Church~Slavonic}{CSL} +\newfontlanguage{Czech}{CSY}\newfontlanguage{Danish}{DAN} +\newfontlanguage{Dargwa}{DAR}\newfontlanguage{Woods~Cree}{DCR} +\newfontlanguage{German}{DEU} +\newfontlanguage{Dogri}{DGR}\newfontlanguage{Divehi}{DIV} +\newfontlanguage{Djerma}{DJR}\newfontlanguage{Dangme}{DNG} +\newfontlanguage{Dinka}{DNK}\newfontlanguage{Dungan}{DUN} +\newfontlanguage{Dzongkha}{DZN}\newfontlanguage{Ebira}{EBI} +\newfontlanguage{Eastern~Cree}{ECR}\newfontlanguage{Edo}{EDO} +\newfontlanguage{Efik}{EFI}\newfontlanguage{Greek}{ELL} +\newfontlanguage{English}{ENG}\newfontlanguage{Erzya}{ERZ} +\newfontlanguage{Spanish}{ESP}\newfontlanguage{Estonian}{ETI} +\newfontlanguage{Basque}{EUQ}\newfontlanguage{Evenki}{EVK} +\newfontlanguage{Even}{EVN}\newfontlanguage{Ewe}{EWE} +\newfontlanguage{French~Antillean}{FAN}\newfontlanguage{Farsi}{FAR} +\newfontlanguage{Finnish}{FIN}\newfontlanguage{Fijian}{FJI} +\newfontlanguage{Flemish}{FLE}\newfontlanguage{Forest~Nenets}{FNE} +\newfontlanguage{Fon}{FON}\newfontlanguage{Faroese}{FOS} +\newfontlanguage{French}{FRA}\newfontlanguage{Frisian}{FRI} +\newfontlanguage{Friulian}{FRL}\newfontlanguage{Futa}{FTA} +\newfontlanguage{Fulani}{FUL}\newfontlanguage{Ga}{GAD} +\newfontlanguage{Gaelic}{GAE}\newfontlanguage{Gagauz}{GAG} +\newfontlanguage{Galician}{GAL}\newfontlanguage{Garshuni}{GAR} +\newfontlanguage{Garhwali}{GAW}\newfontlanguage{Ge'ez}{GEZ} +\newfontlanguage{Gilyak}{GIL}\newfontlanguage{Gumuz}{GMZ} +\newfontlanguage{Gondi}{GON}\newfontlanguage{Greenlandic}{GRN} +\newfontlanguage{Garo}{GRO}\newfontlanguage{Guarani}{GUA} +\newfontlanguage{Gujarati}{GUJ}\newfontlanguage{Haitian}{HAI} +\newfontlanguage{Halam}{HAL}\newfontlanguage{Harauti}{HAR} +\newfontlanguage{Hausa}{HAU}\newfontlanguage{Hawaiin}{HAW} +\newfontlanguage{Hammer-Banna}{HBN}\newfontlanguage{Hiligaynon}{HIL} +\newfontlanguage{Hindi}{HIN}\newfontlanguage{High~Mari}{HMA} +\newfontlanguage{Hindko}{HND}\newfontlanguage{Ho}{HO} +\newfontlanguage{Harari}{HRI}\newfontlanguage{Croatian}{HRV} +\newfontlanguage{Hungarian}{HUN}\newfontlanguage{Armenian}{HYE} +\newfontlanguage{Igbo}{IBO}\newfontlanguage{Ijo}{IJO} +\newfontlanguage{Ilokano}{ILO}\newfontlanguage{Indonesian}{IND} +\newfontlanguage{Ingush}{ING}\newfontlanguage{Inuktitut}{INU} +\newfontlanguage{Irish}{IRI}\newfontlanguage{Irish~Traditional}{IRT} +\newfontlanguage{Icelandic}{ISL}\newfontlanguage{Inari~Sami}{ISM} +\newfontlanguage{Italian}{ITA}\newfontlanguage{Hebrew}{IWR} +\newfontlanguage{Javanese}{JAV}\newfontlanguage{Yiddish}{JII} +\newfontlanguage{Japanese}{JAN}\newfontlanguage{Judezmo}{JUD} +\newfontlanguage{Jula}{JUL}\newfontlanguage{Kabardian}{KAB} +\newfontlanguage{Kachchi}{KAC}\newfontlanguage{Kalenjin}{KAL} +\newfontlanguage{Kannada}{KAN}\newfontlanguage{Karachay}{KAR} +\newfontlanguage{Georgian}{KAT}\newfontlanguage{Kazakh}{KAZ} +\newfontlanguage{Kebena}{KEB}\newfontlanguage{Khutsuri~Georgian}{KGE} +\newfontlanguage{Khakass}{KHA}\newfontlanguage{Khanty-Kazim}{KHK} +\newfontlanguage{Khmer}{KHM}\newfontlanguage{Khanty-Shurishkar}{KHS} +\newfontlanguage{Khanty-Vakhi}{KHV}\newfontlanguage{Khowar}{KHW} +\newfontlanguage{Kikuyu}{KIK}\newfontlanguage{Kirghiz}{KIR} +\newfontlanguage{Kisii}{KIS}\newfontlanguage{Kokni}{KKN} +\newfontlanguage{Kalmyk}{KLM}\newfontlanguage{Kamba}{KMB} +\newfontlanguage{Kumaoni}{KMN}\newfontlanguage{Komo}{KMO} +\newfontlanguage{Komso}{KMS}\newfontlanguage{Kanuri}{KNR} +\newfontlanguage{Kodagu}{KOD}\newfontlanguage{Korean~Old~Hangul}{KOH} +\newfontlanguage{Konkani}{KOK}\newfontlanguage{Kikongo}{KON} +\newfontlanguage{Komi-Permyak}{KOP}\newfontlanguage{Korean}{KOR} +\newfontlanguage{Komi-Zyrian}{KOZ}\newfontlanguage{Kpelle}{KPL} +\newfontlanguage{Krio}{KRI}\newfontlanguage{Karakalpak}{KRK} +\newfontlanguage{Karelian}{KRL}\newfontlanguage{Karaim}{KRM} +\newfontlanguage{Karen}{KRN}\newfontlanguage{Koorete}{KRT} +\newfontlanguage{Kashmiri}{KSH}\newfontlanguage{Khasi}{KSI} +\newfontlanguage{Kildin~Sami}{KSM}\newfontlanguage{Kui}{KUI} +\newfontlanguage{Kulvi}{KUL}\newfontlanguage{Kumyk}{KUM} +\newfontlanguage{Kurdish}{KUR}\newfontlanguage{Kurukh}{KUU} +\newfontlanguage{Kuy}{KUY}\newfontlanguage{Koryak}{KYK} +\newfontlanguage{Ladin}{LAD}\newfontlanguage{Lahuli}{LAH} +\newfontlanguage{Lak}{LAK}\newfontlanguage{Lambani}{LAM} +\newfontlanguage{Lao}{LAO}\newfontlanguage{Latin}{LAT} +\newfontlanguage{Laz}{LAZ}\newfontlanguage{L-Cree}{LCR} +\newfontlanguage{Ladakhi}{LDK}\newfontlanguage{Lezgi}{LEZ} +\newfontlanguage{Lingala}{LIN}\newfontlanguage{Low~Mari}{LMA} +\newfontlanguage{Limbu}{LMB}\newfontlanguage{Lomwe}{LMW} +\newfontlanguage{Lower~Sorbian}{LSB}\newfontlanguage{Lule~Sami}{LSM} +\newfontlanguage{Lithuanian}{LTH}\newfontlanguage{Luba}{LUB} +\newfontlanguage{Luganda}{LUG}\newfontlanguage{Luhya}{LUH} +\newfontlanguage{Luo}{LUO}\newfontlanguage{Latvian}{LVI} +\newfontlanguage{Majang}{MAJ}\newfontlanguage{Makua}{MAK} +\newfontlanguage{Malayalam~Traditional}{MAL}\newfontlanguage{Mansi}{MAN} +\newfontlanguage{Marathi}{MAR}\newfontlanguage{Marwari}{MAW} +\newfontlanguage{Mbundu}{MBN}\newfontlanguage{Manchu}{MCH} +\newfontlanguage{Moose~Cree}{MCR}\newfontlanguage{Mende}{MDE} +\newfontlanguage{Me'en}{MEN}\newfontlanguage{Mizo}{MIZ} +\newfontlanguage{Macedonian}{MKD}\newfontlanguage{Male}{MLE} +\newfontlanguage{Malagasy}{MLG}\newfontlanguage{Malinke}{MLN} +\newfontlanguage{Malayalam~Reformed}{MLR}\newfontlanguage{Malay}{MLY} +\newfontlanguage{Mandinka}{MND}\newfontlanguage{Mongolian}{MNG} +\newfontlanguage{Manipuri}{MNI}\newfontlanguage{Maninka}{MNK} +\newfontlanguage{Manx~Gaelic}{MNX}\newfontlanguage{Moksha}{MOK} +\newfontlanguage{Moldavian}{MOL}\newfontlanguage{Mon}{MON} +\newfontlanguage{Moroccan}{MOR}\newfontlanguage{Maori}{MRI} +\newfontlanguage{Maithili}{MTH}\newfontlanguage{Maltese}{MTS} +\newfontlanguage{Mundari}{MUN}\newfontlanguage{Naga-Assamese}{NAG} +\newfontlanguage{Nanai}{NAN}\newfontlanguage{Naskapi}{NAS} +\newfontlanguage{N-Cree}{NCR}\newfontlanguage{Ndebele}{NDB} +\newfontlanguage{Ndonga}{NDG}\newfontlanguage{Nepali}{NEP} +\newfontlanguage{Newari}{NEW}\newfontlanguage{Nagari}{NGR} +\newfontlanguage{Norway~House~Cree}{NHC}\newfontlanguage{Nisi}{NIS} +\newfontlanguage{Niuean}{NIU}\newfontlanguage{Nkole}{NKL} +\newfontlanguage{N'ko}{NKO}\newfontlanguage{Dutch}{NLD} +\newfontlanguage{Nogai}{NOG}\newfontlanguage{Norwegian}{NOR} +\newfontlanguage{Northern~Sami}{NSM}\newfontlanguage{Northern~Tai}{NTA} +\newfontlanguage{Esperanto}{NTO}\newfontlanguage{Nynorsk}{NYN} +\newfontlanguage{Oji-Cree}{OCR}\newfontlanguage{Ojibway}{OJB} +\newfontlanguage{Oriya}{ORI}\newfontlanguage{Oromo}{ORO} +\newfontlanguage{Ossetian}{OSS}\newfontlanguage{Palestinian~Aramaic}{PAA} +\newfontlanguage{Pali}{PAL}\newfontlanguage{Punjabi}{PAN} +\newfontlanguage{Palpa}{PAP}\newfontlanguage{Pashto}{PAS} +\newfontlanguage{Polytonic~Greek}{PGR}\newfontlanguage{Pilipino}{PIL} +\newfontlanguage{Palaung}{PLG}\newfontlanguage{Polish}{PLK} +\newfontlanguage{Provencal}{PRO}\newfontlanguage{Portuguese}{PTG} +\newfontlanguage{Chin}{QIN}\newfontlanguage{Rajasthani}{RAJ} +\newfontlanguage{R-Cree}{RCR}\newfontlanguage{Russian~Buriat}{RBU} +\newfontlanguage{Riang}{RIA}\newfontlanguage{Rhaeto-Romanic}{RMS} +\newfontlanguage{Romanian}{ROM}\newfontlanguage{Romany}{ROY} +\newfontlanguage{Rusyn}{RSY}\newfontlanguage{Ruanda}{RUA} +\newfontlanguage{Russian}{RUS}\newfontlanguage{Sadri}{SAD} +\newfontlanguage{Sanskrit}{SAN}\newfontlanguage{Santali}{SAT} +\newfontlanguage{Sayisi}{SAY}\newfontlanguage{Sekota}{SEK} +\newfontlanguage{Selkup}{SEL}\newfontlanguage{Sango}{SGO} +\newfontlanguage{Shan}{SHN}\newfontlanguage{Sibe}{SIB} +\newfontlanguage{Sidamo}{SID}\newfontlanguage{Silte~Gurage}{SIG} +\newfontlanguage{Skolt~Sami}{SKS}\newfontlanguage{Slovak}{SKY} +\newfontlanguage{Slavey}{SLA}\newfontlanguage{Slovenian}{SLV} +\newfontlanguage{Somali}{SML}\newfontlanguage{Samoan}{SMO} +\newfontlanguage{Sena}{SNA}\newfontlanguage{Sindhi}{SND} +\newfontlanguage{Sinhalese}{SNH}\newfontlanguage{Soninke}{SNK} +\newfontlanguage{Sodo~Gurage}{SOG}\newfontlanguage{Sotho}{SOT} +\newfontlanguage{Albanian}{SQI}\newfontlanguage{Serbian}{SRB} +\newfontlanguage{Saraiki}{SRK}\newfontlanguage{Serer}{SRR} +\newfontlanguage{South~Slavey}{SSL}\newfontlanguage{Southern~Sami}{SSM} +\newfontlanguage{Suri}{SUR}\newfontlanguage{Svan}{SVA} +\newfontlanguage{Swedish}{SVE}\newfontlanguage{Swadaya~Aramaic}{SWA} +\newfontlanguage{Swahili}{SWK}\newfontlanguage{Swazi}{SWZ} +\newfontlanguage{Sutu}{SXT}\newfontlanguage{Syriac}{SYR} +\newfontlanguage{Tabasaran}{TAB}\newfontlanguage{Tajiki}{TAJ} +\newfontlanguage{Tamil}{TAM}\newfontlanguage{Tatar}{TAT} +\newfontlanguage{TH-Cree}{TCR}\newfontlanguage{Telugu}{TEL} +\newfontlanguage{Tongan}{TGN}\newfontlanguage{Tigre}{TGR} +\newfontlanguage{Tigrinya}{TGY}\newfontlanguage{Thai}{THA} +\newfontlanguage{Tahitian}{THT}\newfontlanguage{Tibetan}{TIB} +\newfontlanguage{Turkmen}{TKM}\newfontlanguage{Temne}{TMN} +\newfontlanguage{Tswana}{TNA}\newfontlanguage{Tundra~Nenets}{TNE} +\newfontlanguage{Tonga}{TNG}\newfontlanguage{Todo}{TOD} +\newfontlanguage{Tsonga}{TSG}\newfontlanguage{Turoyo~Aramaic}{TUA} +\newfontlanguage{Tulu}{TUL}\newfontlanguage{Tuvin}{TUV} +\newfontlanguage{Twi}{TWI}\newfontlanguage{Udmurt}{UDM} +\newfontlanguage{Ukrainian}{UKR}\newfontlanguage{Urdu}{URD} +\newfontlanguage{Upper~Sorbian}{USB}\newfontlanguage{Uyghur}{UYG} +\newfontlanguage{Uzbek}{UZB}\newfontlanguage{Venda}{VEN} +\newfontlanguage{Vietnamese}{VIT}\newfontlanguage{Wa}{WA} +\newfontlanguage{Wagdi}{WAG}\newfontlanguage{West-Cree}{WCR} +\newfontlanguage{Welsh}{WEL}\newfontlanguage{Wolof}{WLF} +\newfontlanguage{Tai~Lue}{XBD}\newfontlanguage{Xhosa}{XHS} +\newfontlanguage{Yakut}{YAK}\newfontlanguage{Yoruba}{YBA} +\newfontlanguage{Y-Cree}{YCR}\newfontlanguage{Yi~Classic}{YIC} +\newfontlanguage{Yi~Modern}{YIM}\newfontlanguage{Chinese~Hong~Kong}{ZHH} +\newfontlanguage{Chinese~Phonetic}{ZHP}\newfontlanguage{Chinese~Simplified}{ZHS} +\newfontlanguage{Chinese~Traditional}{ZHT}\newfontlanguage{Zande}{ZND} +\newfontlanguage{Zulu}{ZUL} +% \end{macrocode} +% +% \paragraph{Turkish} Turns out that many fonts use `TUR' as their Turkish language tag rather than the specified `TRK'. So we check for both: +% \begin{macrocode} +\define@key[zf@feat]{Lang}{Turkish}[]{ + \fontspec_check_lang:nTF {TRK} { + \c@zf@language\l_fontspec_strnum_int\relax + \zf@update@family{+lang=Turkish} + \tl_set:Nn \l_fontspec_lang_tl {TRK} + }{ + \fontspec_check_lang:nTF {TUR} { + \c@zf@language\l_fontspec_strnum_int\relax + \zf@update@family{+lang=Turkish} + \tl_set:Nn \l_fontspec_lang_tl {TUR} + }{ + \fontspec_warning:nx {language-not-exist} {#1} + } + } +} +% \end{macrocode} +% +% \paragraph{Default} +% +% \begin{macrocode} +\define@key[zf@feat]{Lang}{Default}[]{ + \zf@update@family{+lang=dflt} + \tl_set:Nn \l_fontspec_lang_tl {DFLT} + \c@zf@language=0\relax +} +% \end{macrocode} +% +% \subsubsection{Raw feature string} +% This allows savvy \XeTeX-ers to input font features manually if they have +% already memorised the OpenType abbreviations and don't mind not having error checking. +% \begin{macrocode} +\define@key[zf]{options}{RawFeature}{ + \zf@update@family{+Raw:#1} + \zf@update@ff{#1} +} +% \end{macrocode} +% +% +% +% \subsection{Italic small caps} \label{sec:sishape} +% The following code for utilising italic small caps sensibly is +% inspired from Philip Lehman's \textit{The Font Installation +% Guide}. Note that |\upshape| needs to be used \emph{twice} to get +% from italic small caps to regular upright (it always goes to small +% caps, then regular upright). +% \begin{macro}{\sishape} +% \begin{macro}{\textsi} +% First, the commands for actually selecting italic small caps are +% defined. I use |si| as the NFSS shape for italic small caps, but +% I have seen |itsc| and |slsc| also used. |\sidefault| may be +% redefined to one of these if required for compatibility. +% \begin{macrocode} +\providecommand*{\sidefault}{si} +\DeclareRobustCommand{\sishape}{ + \not@math@alphabet\sishape\relax + \fontshape\sidefault\selectfont +} +\DeclareTextFontCommand{\textsi}{\sishape} +% \end{macrocode} +% \end{macro} \end{macro} +% \begin{macro}{\zf@merge@shape} +% This is the macro which enables the overload on the |\..shape| +% commands. It takes three such arguments. In essence, the macro +% selects the first argument, unless the second argument is already +% selected, in which case it selects the third. +% \begin{macrocode} +\newcommand*{\zf@merge@shape}[3]{ + \edef\@tempa{#1} + \edef\@tempb{#2} + \ifx\f@shape\@tempb + \ifcsname\f@encoding/\f@family/\f@series/#3\endcsname + \edef\@tempa{#3} + \fi + \fi + \fontshape{\@tempa}\selectfont +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\itshape} \begin{macro}{\scshape} \begin{macro}{\upshape} +% Here the original |\..shape| commands are redefined to use the +% merge shape macro. +% \begin{macrocode} +\DeclareRobustCommand \itshape { + \not@math@alphabet\itshape\mathit + \zf@merge@shape\itdefault\scdefault\sidefault +} +\DeclareRobustCommand \slshape { + \not@math@alphabet\slshape\relax + \zf@merge@shape\sldefault\scdefault\sidefault +} +\DeclareRobustCommand \scshape { + \not@math@alphabet\scshape\relax + \zf@merge@shape\scdefault\itdefault\sidefault +} +\DeclareRobustCommand \upshape { + \not@math@alphabet\upshape\relax + \zf@merge@shape\updefault\sidefault\scdefault +} +% \end{macrocode} +% \end{macro} \end{macro} \end{macro} +% +% \subsection{Selecting maths fonts} +% Here, the fonts used in math mode are redefined to correspond to the +% default roman, sans serif and typewriter fonts. Unfortunately, you +% can only define maths fonts in the preamble, otherwise I'd run this +% code whenever \cs{setmainfont} and friends was run. +% +% \begin{macro}{\zf@math} +% Everything here is performed \cs{AtBeginDocument} in order to +% overwrite \pkg{euler}'s attempt. This means \pkg{fontspec} must be +% loaded \emph{after} \pkg{euler}. We set up a conditional to return +% an error if this rule is violated. +% +% Since every maths setup is slightly different, we also take +% different paths for defining various math glyphs depending which +% maths font package has been loaded. +% +% \begin{macrocode} +\@ifpackageloaded{euler}{\zf@package@euler@loadedtrue} + {\zf@package@euler@loadedfalse} +\def\zf@math{ + \let\zf@font@warning\@font@warning + \let\@font@warning\@font@info + \@ifpackageloaded{euler}{ + \ifzf@package@euler@loaded + \zf@math@eulertrue + \else + \fontspec_error:n {euler-too-late} + \fi + }{} + \@ifpackageloaded{lucbmath}{\zf@math@lucidatrue}{} + \@ifpackageloaded{lucidabr}{\zf@math@lucidatrue}{} + \@ifpackageloaded{lucimatx}{\zf@math@lucidatrue}{} +% \end{macrocode} +% Knuth's CM fonts fonts are all squashed together, combining letters, +% accents, text symbols and maths symbols all in the one font, +% \texttt{cmr}, plus other things in other fonts. Because we are +% changing the roman font in the document, we need to redefine all of +% the maths glyphs in \LaTeX's \texttt{operators} maths font to still +% go back to the legacy \texttt{cmr} font for all these random glyphs, +% unless a separate maths font package has been loaded instead. +% +% In every case, the maths accents are always taken from the +% \texttt{operators} font, which is generally the main text +% font. (Actually, there is a \cmd\hat\ accent in +% \texttt{EulerFractur}, but it's \emph{ugly}. So I ignore it. Sorry +% if this causes inconvenience.) +% \begin{macrocode} + \DeclareSymbolFont{legacymaths}{OT1}{cmr}{m}{n} + \SetSymbolFont{legacymaths}{bold}{OT1}{cmr}{bx}{n} + \DeclareMathAccent{\acute} {\mathalpha}{legacymaths}{19} + \DeclareMathAccent{\grave} {\mathalpha}{legacymaths}{18} + \DeclareMathAccent{\ddot} {\mathalpha}{legacymaths}{127} + \DeclareMathAccent{\tilde} {\mathalpha}{legacymaths}{126} + \DeclareMathAccent{\bar} {\mathalpha}{legacymaths}{22} + \DeclareMathAccent{\breve} {\mathalpha}{legacymaths}{21} + \DeclareMathAccent{\check} {\mathalpha}{legacymaths}{20} + \DeclareMathAccent{\hat} {\mathalpha}{legacymaths}{94} % too bad, euler + \DeclareMathAccent{\dot} {\mathalpha}{legacymaths}{95} + \DeclareMathAccent{\mathring}{\mathalpha}{legacymaths}{23} +% \end{macrocode} +% \paragraph{\cmd\colon: what's going on?} Okay, so \verb":" and \cmd\colon\ in maths mode are defined in a few places, so I need to work out what does what. Respectively, we have: +% \begin{Verbatim} +% % fontmath.ltx: +% \DeclareMathSymbol{\colon}{\mathpunct}{operators}{"3A} +% \DeclareMathSymbol{:}{\mathrel}{operators}{"3A} +% +% % amsmath.sty: +% \renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript +% \mkern-\thinmuskip{:}\mskip6muplus1mu\relax} +% +% % euler.sty: +% \DeclareMathSymbol{:}\mathrel {EulerFraktur}{"3A} +% +% % lucbmath.sty: +% \DeclareMathSymbol{\@tempb}{\mathpunct}{operators}{58} +% \ifx\colon\@tempb +% \DeclareMathSymbol{\colon}{\mathpunct}{operators}{58} +% \fi +% \DeclareMathSymbol{:}{\mathrel}{operators}{58} +% \end{Verbatim} +% ($\mathrm{3A_{16}}=\mathrm{58_{10}}$) So I think, based on this summary, that it is fair to tell \pkg{fontspec} to `replace' the operators font with legacymaths for this symbol, except when \pkg{amsmath} is loaded since we want to keep its definition. +% +% +% \begin{macrocode} + \begingroup + \mathchardef\@tempa="603A \relax + \let\next\egroup + \ifx\colon\@tempa + \DeclareMathSymbol{\colon}{\mathpunct}{legacymaths}{58} + \fi + \endgroup +% \end{macrocode} +% The following symbols are only defined specifically in \pkg{euler}, so skip them +% if that package is loaded. +% \begin{macrocode} + \ifzf@math@euler\else + \DeclareMathSymbol{!}{\mathclose}{legacymaths}{33} + \DeclareMathSymbol{:}{\mathrel} {legacymaths}{58} + \DeclareMathSymbol{;}{\mathpunct}{legacymaths}{59} + \DeclareMathSymbol{?}{\mathclose}{legacymaths}{63} +% \end{macrocode} +% And these ones are defined both in \pkg{euler} and \pkg{lucbmath}, +% so we only need to run this code if no extra maths package has been +% loaded. +% \begin{macrocode} + \ifzf@math@lucida\else + \DeclareMathSymbol{0}{\mathalpha}{legacymaths}{`0} + \DeclareMathSymbol{1}{\mathalpha}{legacymaths}{`1} + \DeclareMathSymbol{2}{\mathalpha}{legacymaths}{`2} + \DeclareMathSymbol{3}{\mathalpha}{legacymaths}{`3} + \DeclareMathSymbol{4}{\mathalpha}{legacymaths}{`4} + \DeclareMathSymbol{5}{\mathalpha}{legacymaths}{`5} + \DeclareMathSymbol{6}{\mathalpha}{legacymaths}{`6} + \DeclareMathSymbol{7}{\mathalpha}{legacymaths}{`7} + \DeclareMathSymbol{8}{\mathalpha}{legacymaths}{`8} + \DeclareMathSymbol{9}{\mathalpha}{legacymaths}{`9} + \DeclareMathSymbol{\Gamma}{\mathalpha}{legacymaths}{0} + \DeclareMathSymbol{\Delta}{\mathalpha}{legacymaths}{1} + \DeclareMathSymbol{\Theta}{\mathalpha}{legacymaths}{2} + \DeclareMathSymbol{\Lambda}{\mathalpha}{legacymaths}{3} + \DeclareMathSymbol{\Xi}{\mathalpha}{legacymaths}{4} + \DeclareMathSymbol{\Pi}{\mathalpha}{legacymaths}{5} + \DeclareMathSymbol{\Sigma}{\mathalpha}{legacymaths}{6} + \DeclareMathSymbol{\Upsilon}{\mathalpha}{legacymaths}{7} + \DeclareMathSymbol{\Phi}{\mathalpha}{legacymaths}{8} + \DeclareMathSymbol{\Psi}{\mathalpha}{legacymaths}{9} + \DeclareMathSymbol{\Omega}{\mathalpha}{legacymaths}{10} + \DeclareMathSymbol{+}{\mathbin}{legacymaths}{43} + \DeclareMathSymbol{=}{\mathrel}{legacymaths}{61} + \DeclareMathDelimiter{(}{\mathopen} {legacymaths}{40}{largesymbols}{0} + \DeclareMathDelimiter{)}{\mathclose}{legacymaths}{41}{largesymbols}{1} + \DeclareMathDelimiter{[}{\mathopen} {legacymaths}{91}{largesymbols}{2} + \DeclareMathDelimiter{]}{\mathclose}{legacymaths}{93}{largesymbols}{3} + \DeclareMathDelimiter{/}{\mathord}{legacymaths}{47}{largesymbols}{14} + \DeclareMathSymbol{\mathdollar}{\mathord}{legacymaths}{36} + \fi + \fi +% \end{macrocode} +% Finally, we change the font definitions for \cmd\mathrm\ and so +% on. These are defined using the \cmd\zf@rmmaths\ (\dots) macros, +% which default to \cmd\rmdefault\ but may be specified with the +% \cmd\setmathrm\ (\dots) commands in the preamble. +% +% Since \LaTeX\ only generally defines one level of boldness, we omit +% \cmd\mathbf\ in the \textsf{bold} maths series. It can be specified +% as per usual with \cmd\setboldmathrm, which stores the appropriate +% family name in \cmd\zf@rmboldmaths. +% \begin{macrocode} + \DeclareSymbolFont{operators}\zf@enc\zf@rmmaths\mddefault\updefault + \SetSymbolFont{operators}{normal}\zf@enc\zf@rmmaths\mddefault\updefault + \SetMathAlphabet\mathrm{normal}\zf@enc\zf@rmmaths\mddefault\updefault + \SetMathAlphabet\mathit{normal}\zf@enc\zf@rmmaths\mddefault\itdefault + \SetMathAlphabet\mathbf{normal}\zf@enc\zf@rmmaths\bfdefault\updefault + \SetMathAlphabet\mathsf{normal}\zf@enc\zf@sfmaths\mddefault\updefault + \SetMathAlphabet\mathtt{normal}\zf@enc\zf@ttmaths\mddefault\updefault + \SetSymbolFont{operators}{bold}\zf@enc\zf@rmmaths\bfdefault\updefault + \ifdefined\zf@rmboldmaths + \SetMathAlphabet\mathrm{bold}\zf@enc\zf@rmboldmaths\mddefault\updefault + \SetMathAlphabet\mathbf{bold}\zf@enc\zf@rmboldmaths\bfdefault\updefault + \SetMathAlphabet\mathit{bold}\zf@enc\zf@rmboldmaths\mddefault\itdefault + \else + \SetMathAlphabet\mathrm{bold}\zf@enc\zf@rmmaths\bfdefault\updefault + \SetMathAlphabet\mathit{bold}\zf@enc\zf@rmmaths\bfdefault\itdefault + \fi + \SetMathAlphabet\mathsf{bold}\zf@enc\zf@sfmaths\bfdefault\updefault + \SetMathAlphabet\mathtt{bold}\zf@enc\zf@ttmaths\bfdefault\updefault + \let\font@warning\zf@font@warning} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zf@math@maybe} +% We're a little less sophisticated about not executing the \cmd\zf@maths\ macro if various other maths font packages are loaded. This list is based on the wonderful `\LaTeX Font Catalogue': \url{http://www.tug.dk/FontCatalogue/mathfonts.html}. I'm sure there are more I've missed. Do the \TeX\ Gyre fonts have maths support yet? +% +% Untested: would |\unless\ifnum\Gamma=28672\relax\@zf@mathfalse\fi| be a better test? +% This needs more cooperation with euler and lucida, I think. +% \begin{macrocode} +\def\zf@math@maybe{ + \@ifpackageloaded{anttor}{ + \ifx\define@antt@mathversions a\@zf@mathfalse\fi}{} + \@ifpackageloaded{arev}{\@zf@mathfalse}{} + \@ifpackageloaded{eulervm}{\@zf@mathfalse}{} + \@ifpackageloaded{mathdesign}{\@zf@mathfalse}{} + \@ifpackageloaded{concmath}{\@zf@mathfalse}{} + \@ifpackageloaded{cmbright}{\@zf@mathfalse}{} + \@ifpackageloaded{mathesf}{\@zf@mathfalse}{} + \@ifpackageloaded{gfsartemisia}{\@zf@mathfalse}{} + \@ifpackageloaded{gfsneohellenic}{\@zf@mathfalse}{} + \@ifpackageloaded{iwona}{ + \ifx\define@iwona@mathversions a\@zf@mathfalse\fi}{} + \@ifpackageloaded{kpfonts}{\@zf@mathfalse}{} + \@ifpackageloaded{kmath}{\@zf@mathfalse}{} + \@ifpackageloaded{kurier}{ + \ifx\define@kurier@mathversions a\@zf@mathfalse\fi}{} + \@ifpackageloaded{fouriernc}{\@zf@mathfalse}{} + \@ifpackageloaded{fourier}{\@zf@mathfalse}{} + \@ifpackageloaded{mathpazo}{\@zf@mathfalse}{} + \@ifpackageloaded{mathptmx}{\@zf@mathfalse}{} + \@ifpackageloaded{MinionPro}{\@zf@mathfalse}{} + \@ifpackageloaded{unicode-math}{\@zf@mathfalse}{} + \@ifpackageloaded{breqn}{\@zf@mathfalse}{} + \if@zf@math + \fontspec_info:n {setup-math} + \zf@math + \fi +} +\AtBeginDocument{\zf@math@maybe} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Finishing up} +% Now we just want to set up loading the \texttt{.cfg} file, if it exists. +% \begin{macrocode} +\if@zf@configfile + \InputIfFileExists{fontspec.cfg} + {\typeout{fontspec.cfg~ loaded.}} + {\typeout{No~ fontspec.cfg~ file~ found;~ no~ configuration~ loaded.}} +\fi +% \end{macrocode} +% +% The end! Thanks for coming. +% +% \iffalse +%</fontspec> +%<*lua> +% \fi +% +% \clearpage +% \part{fontspec.lua} +% +% First we define some metadata. +% \begin{macrocode} +fontspec = { } + +fontspec.module = { + name = "fontspec", + version = 2.0, + date = "2009/12/04", + description = "Advanced font selection for LuaLaTeX.", + author = "Khaled Hosny", + copyright = "Khaled Hosny", + license = "LPPL" +} + +luatexbase.provides_module(fontspec.module) + +% \end{macrocode} +% Some utility functions +% \begin{macrocode} + +utf = unicode.utf8 + +function fontspec.log (...) luatexbase.module_log (fontspec.module.name, string.format(...)) end +function fontspec.warning(...) luatexbase.module_warning(fontspec.module.name, string.format(...)) end +function fontspec.error (...) luatexbase.module_error (fontspec.module.name, string.format(...)) end + +function fontspec.sprint (...) tex.sprint(luatexbase.catcodetables['latex-package'], ...) end + +% \end{macrocode} +% The following functions check for exsitence of certain script, language or +% feature in a given font. +% \begin{macrocode} + +local function check_script(id, script) + local s = string.lower(script) + if id and id > 0 then + local otfdata = fonts.ids[id].shared.otfdata + if otfdata then + local features = otfdata.luatex.features + for i,_ in pairs(features) do + for j,_ in pairs(features[i]) do + if features[i][j][s] then + fontspec.log("script '%s' exists in font '%s'", + script, fonts.ids[id].fullname) + return true + end + end + end + end + end +end + +local function check_language(id, language, script) + local s = string.lower(script) + local l = string.lower(language) + if id and id > 0 then + local otfdata = fonts.ids[id].shared.otfdata + if otfdata then + local features = otfdata.luatex.features + for i,_ in pairs(features) do + for j,_ in pairs(features[i]) do + if features[i][j][s] and features[i][j][s][l] then + fontspec.log("language '%s' for script '%s' exists in font '%s'", + language, script, fonts.ids[id].fullname) + return true + end + end + end + end + end +end + +local function check_feature(id, feature, language, script) + local s = string.lower(script) + local l = string.lower(language) + local f = string.lower(feature:gsub("^[+-]", "")) + if id and id > 0 then + local otfdata = fonts.ids[id].shared.otfdata + if otfdata then + local features = otfdata.luatex.features + for i,_ in pairs(features) do + if features[i][f] and features[i][f][s] then + if features[i][f][s][l] == true then + fontspec.log("feature '%s' for language '%s' and script '%s' exists in font '%s'", + feature, language, script, fonts.ids[id].fullname) + return true + end + end + end + end + end +end + +% \end{macrocode} +% This function takes a font csname (without the leading slash) and returns its +% internal font id. Since \LuaTeX~0.47, there is a built in \texttt{font.id()} +% function. +% \begin{macrocode} + +local function font_id(str) + local id + if tex.luatexversion >= 47 then + id = font.id(str) + else + id = token.create(str)[2] + end + return id +end + +% \end{macrocode} +% The following are the function that get called from \TeX\ end. +% \begin{macrocode} + +local function tempswatrue() fontspec.sprint([[\@tempswatrue]]) end +local function tempswafalse() fontspec.sprint([[\@tempswafalse]]) end + +function fontspec.check_ot_script(fnt, script) + if check_script(font_id(fnt), script) then + tempswatrue() + else + tempswafalse() + end +end + +function fontspec.check_ot_lang(fnt, lang, script) + if check_language(font_id(fnt), lang, script) then + tempswatrue() + else + tempswafalse() + end +end + +function fontspec.check_ot_feat(fnt, feat, lang, script) + for _, f in ipairs { "+trep", "+tlig", "+anum" } do + if feat == f then + tempswatrue() + return + end + end + if check_feature(font_id(fnt), feat, lang, script) then + tempswatrue() + else + tempswafalse() + end +end + +% \end{macrocode} +% Get font dimens for \cs{fontspec_calc_scale:n} (despite the name of this function, +% it doesn't return any arbitrary font dimen, only \cmd\dimen5 and \cmd\dimen8.) +% \begin{macrocode} + +function fontspec.get_dimen(fontdimen, csname) + local id, h, em, pt + if csname == "font" then + id = font.current() + else + id = font_id(csname) + end + if fontdimen == 8 then + h = fonts.ids[id].shared.otfdata.pfminfo.os2_capheight + elseif fontdimen == 5 then + h = fonts.ids[id].shared.otfdata.pfminfo.os2_xheight + end + em = fonts.ids[id].shared.otfdata.metadata.units_per_em + pt = fonts.ids[id].size / 65536 + tex.sprint(string.format("%spt", (h/em)*pt)) +end + +function fontspec.charglyph(char, csname) + local id, c + if char then + if utf.len(char) > 1 then + c = utf.byte(utf.char(char:gsub('"', '0x'))) + else + c = utf.byte(char) + end + + if csname then + id = font_id(csname) + else + id = font.current() + end + + if font.fonts[id]["characters"][c] then + return font.fonts[id]["characters"][c].index + else + return 0 + end + else + return 0 + end +end + +% \end{macrocode} +% +% \iffalse +%</lua> +% \fi +% +% \clearpage +% \part{fontspec-patches.sty} +% +% \iffalse +%<*patches> +% \fi +% +% \begin{macrocode} +\ExplSyntaxOn +% \end{macrocode} +% +% \subsection{Unicode footnote symbols} +% \begin{macrocode} +\RequirePackage{fixltx2e}[2006/03/24] +% \end{macrocode} +% \subsection{Emph} +% +% \begin{macro}{\em} +% \begin{macro}{\emph} +% \begin{macro}{\emshape} +% \begin{macro}{\eminnershape} +% Redefinition of |{\em ...}| and |\emph{...}| to use \textsc{nfss} info to detect when the inner shape should be used. +% \begin{macrocode} +\DeclareRobustCommand \em { + \@nomath\em + \tl_if_eq:xxTF \f@shape \itdefault \eminnershape \emshape +} +\DeclareTextFontCommand{\emph}{\em} +\let\emshape\itshape +\let\eminnershape\upshape +% \end{macrocode} +% \end{macro} \end{macro} +% \end{macro} \end{macro} +% +% \subsection{\cmd\-} +% +% \begin{macro}{\-} +% This macro is courtesy of Frank Mittelbach and the \LaTeXe\ source code. +% \begin{macrocode} +\DeclareRobustCommand{\-}{% + \discretionary{% + \char\ifnum\hyphenchar\font<\z@ + \xlx@defaulthyphenchar + \else + \hyphenchar\font + \fi}{}{}} +\def\xlx@defaulthyphenchar{`\-} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Verbatims} +% +% Many thanks to Apostolos Syropoulos for discovering this problem and writing the redefinion of \LaTeX's |verbatim| environment and \cs{verb*} command. +% +% \begin{macro}{\xxt@visiblespace} +% Print \unichar{2434}{Open box}, which is used to visibly display a space character. +% \begin{macrocode} +\def\xxt@visiblespace{ + \iffontchar\font"2423 + \expandafter\textvisiblespace + \else + \expandafter\xxt@visiblespace@fallback + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\xxt@visiblespace@fallback} +% If the current font doesn't have u2434, use Latin Modern Mono instead. +% \begin{macrocode} +\def\xxt@visiblespace@fallback{ + { + \usefont{EU1}{lmtt}{\f@series}{\f@shape} + \textvisiblespace + } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\xxt@vprintspaces} +% Helper macro to turn spaces active and print visible space instead. +% \begin{macrocode} +\begingroup + \catcode`\~=\active + \gdef\xxt@vprintspaces{\catcode`\~\active\let \xxt@visiblespace} +\endgroup +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\verb} +% \begin{macro}{\verb*} +% Redefine \cmd\verb\ to use \cmd\xxt@vprintspaces. +% \begin{macrocode} +\def\verb{ + \relax\ifmmode\hbox\else\leavevmode\null\fi + \bgroup + \verb@eol@error \let\do\@makeother \dospecials + \verbatim@font\@noligs + \@ifstar\@@sverb\@verb +} +\def\@@sverb{\xxt@vprintspaces\@sverb} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% It's better to put small things into \cmd\AtBeginDocument, so here we go: +% \begin{macrocode} +\AtBeginDocument{ + \fontspec_patch_verbatim: + \fontspec_patch_moreverb: + \fontspec_patch_fancyvrb: + \fontspec_patch_listings: +} +% \end{macrocode} +% +% \begin{environment}{verbatim*} +% With the \pkg{verbatim} package. +% \begin{macrocode} +\cs_set:Npn \fontspec_patch_verbatim: { + \@ifpackageloaded{verbatim}{ + \@namedef{verbatim*}{ + \begingroup\@verbatim\xxt@vprintspaces\verbatim@start + } + }{ +% \end{macrocode} +% This is for vanilla LaTeX. +% \begin{macrocode} + \@namedef{verbatim*}{\@verbatim\xxt@vprintspaces\@sxverbatim} + } +} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{listingcont*} +% This is for \pkg{moreverb}. +% The main |listing*| environment inherits this definition. +% \begin{macrocode} +\cs_set:Npn \fontspec_patch_moreverb: { + \@ifpackageloaded{moreverb}{ + \@namedef{listingcont*}{ + \def\verbatim@processline{ + \thelisting@line \global\advance\listing@line\c_one + \the\verbatim@line\par + } + \@verbatim\xxt@vprintspaces\verbatim@start + } + }{}} +% \end{macrocode} +% \end{environment} +% +% \pkg{listings} and \pkg{fancvrb} make things nice and easy: +% \begin{macrocode} +\cs_set:Npn \fontspec_patch_fancyvrb: { + \@ifpackageloaded{fancyvrb}{ + \let\FancyVerbSpace\xxt@visiblespace + }{} +} +% \end{macrocode} +% +% \begin{macrocode} +\cs_set:Npn \fontspec_patch_listings: { + \@ifpackageloaded{listings}{ + \let\lst@visiblespace\xxt@visiblespace + }{} +} +% \end{macrocode} +% +% \iffalse +%</patches> +% \fi +% +% \clearpage +% \part{fontspec.cfg} +% +% \iffalse +%<*cfg> +% \fi +% +% As an example, and to avoid upsetting people as much as possible, +% I'm populating the default \texttt{fontspec.cfg} file with +% backwards compatibility feature aliases. +% \begin{macrocode} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% FOR BACKWARDS COMPATIBILITY WITH PREVIOUS VERSIONS %%% + +% Nothing here! +% I have absolutely no idea whether backwards compatibility, +% of the sort that was previously populated here, is important +% for version 2. + +% \end{macrocode} +% +% \iffalse +%</cfg> +%<*example> +% \fi +% +% \clearpage +% \part{Example documents} +% +% \begin{macrocode} +%<luatex>% !TEX TS-program = LuaLaTeX +%<xetex>% !TEX TS-program = XeLaTeX + +\documentclass{article} + +%<luatex>\usepackage{fontspec} +%<xetex>\usepackage{xltxtra} + +\setmainfont[Ligatures=TeX]{TeX Gyre Pagella} +\setsansfont[Ligatures=TeX,Scale=MatchLowercase]{TeX Gyre Heros} +\setmonofont[Scale=MatchLowercase]{Inconsolata} + +\frenchspacing % TeX's default is a little old-fashioned... + +\begin{document} +\pagestyle{empty} + +\section*{The basics of the \textsf{fontspec} package} + +The \textsf{fontspec} package enables automatic font selection +for \LaTeX{} documents typeset with Xe\TeX{} or \LuaTeX. +The basic command is + +{\centering \verb|\fontspec[font features]{font display name}|.\par} + +The default, sans serif, and typewriter fonts may be set with the +\verb|\setmainfont|, \verb|\setsansfont| and \verb|\setmonofont| +commands, respectively, as shown in the preamble. They take the +same syntax as the \verb|\fontspec| package. All expected font +shapes are available: + +\begin{center} + {\itshape Italics and \scshape small caps\dots}\\ + {\sffamily\bfseries Bold sans serif and \itshape bold italic sans serif\dots} +\end{center} + +Text fonts in maths mode are also changed (e.g., notice the cosine function in +`$\cos(n\pi)=\pm 1$') but only if the roman and sans serif fonts are set in +the preamble; \verb|\setmainfont| will not affect these maths mode fonts when +called mid-document. +Maths symbols themselves are not affected. + +Notice the font features used to load the default fonts in the preamble. +The first, \verb|Ligatures=TeX|, enables regular \TeX{} ligatures like +\verb|``---''| for ``---''. +The second, \verb|Scale=MatchLowercase|, automatically scales the fonts to +the same x-height. + +Please see the complete \textsf{fontspec} documentation for further +information. + +\end{document} +% \end{macrocode} +% +% \iffalse +%</example> +% \fi +% +% \clearpage +% \PrintChanges +% +% \clearpage +% \setcounter{IndexColumns}{2} +% \PrintIndex +% +% \Finale +% +% \iffalse +%<*doc-style> +% \begin{macrocode} +\ProvidesPackage{fontspec-style} + +\usepackage{booktabs,calc,color,enumitem,fancyvrb,hologo,graphicx,ifthen,url,varioref,varwidth} +\fvset{gobble=2} +\newcommand\XeTeX{\hologo{XeTeX}} +\newcommand\XeLaTeX{\hologo{XeLaTeX}} +\newcommand\LuaTeX{\hologo{LuaTeX}} +\usepackage{tgpagella,eulervm} +\usepackage{inconsolata} +\usepackage[ + bookmarks=true, + colorlinks=true, + linkcolor=niceblue, + urlcolor=niceblue, + citecolor=niceblue, + pdftitle={The fontspec package}, + pdfsubject={Advanced font selection for XeLaTeX/LuaLaTeX}, + pdfauthor={Will Robertson}, + pdfkeywords={xetex, xelatex, luatex, lualatex, unicode, opentype, aat} + ]{hyperref} + +%% ToC +\def\@dotsep{1000} +\setcounter{tocdepth}{2} +\setlength\columnseprule{0.4pt} +\renewcommand\tableofcontents{\relax + \begin{multicols}{2}[\section*{\contentsname}]\relax + \@starttoc{toc}\relax + \end{multicols}} + +%% Index +\setcounter{IndexColumns}{2} +\renewenvironment{theglossary} + {\small\list{}{} + \item\relax + \glossary@prologue\GlossaryParms + \let\item\@idxitem \ignorespaces + \def\pfill{\hspace*{\fill}}} + {\endlist} + +%% varioref definitions: +\labelformat{table}{Table~#1} +\labelformat{section}{Section~#1} +\labelformat{subsection}{Section~#1} + +%% verbatim examples: +\definecolor{niceblue}{rgb}{0.1,0.2,0.8} +\newenvironment{example} + {\VerbatimEnvironment + \begin{VerbatimOut}{\examplefilename}} + {\end{VerbatimOut}\relax + \begingroup + \color{niceblue} + \typesetexample + \endgroup} + +\newlength\examplewidth\newlength\verbatimwidth +\newlength\exoutdent \newlength\exverbgap +\setlength\exverbgap{1em} +\setlength\exoutdent{-0.15\textwidth} +\newsavebox\verbatimbox +\edef\examplefilename{\jobname.example} + +\newcommand\typesetexample{\relax + \begin{lrbox}{\verbatimbox}\relax + \BVerbatimInput[fontsize=\small,firstline=\firstline,lastline=\lastline]{\examplefilename}\relax + \end{lrbox} + \begin{list}{}{\setlength\itemindent{0pt} + \setlength\leftmargin\exoutdent + \setlength\rightmargin{0pt}}\item + \ifx\auxwidth\relax + \setlength\verbatimwidth{\wd\verbatimbox}\relax + \else + \setlength\verbatimwidth{\auxwidth}\relax + \let\auxwidth\relax + \fi +% \begin{minipage}[c]{\textwidth-\exoutdent-\verbatimwidth-\exverbgap} +% \catcode`\%=14\centering\examplesize\input\examplefilename\relax +% \end{minipage}\hfill + \centering + \begin{minipage}[c]{\verbatimwidth} + \usebox\verbatimbox + \end{minipage} + \end{list} + \global\let\examplesize\normalsize + \gdef\firstline{1}\gdef\lastline{}\par\noindent} + +\let\examplesize\normalsize +\let\auxwidth\relax +\def\firstline{1} +\def\lastline{} + +\let\aatexample\example +\let\endaatexample\endexample +\let\opentypeexample\example +\let\endopentypeexample\endexample + +\newcommand*\setexsize[1]{\let\examplesize#1} +\newcommand*\setverbwidth[1]{\def\auxwidth{#1}} + +%% Various labelling commands: +\newcommand*\name[1]{{#1}} +\newcommand*\pkg[1]{\textsf{#1}} +\newcommand*\opt[1]{\texttt{#1}} +\newcommand*\feat[1]{\texttt{#1}} + +\let\latin\textit +\def\eg{\latin{e.g.}} +\def\ie{\latin{i.e.}} +\def\Eg{\latin{E.g.}} +\def\Ie{\latin{I.e.}} +\def\etc{\@ifnextchar.{\latin{etc}}{\latin{etc.}\@}} + +\newcommand\note[1]{\unskip\footnote{#1}} + +\def\MacOSX{Mac~OS~X} +\def\AAT{\textsc{aat}} +\def\LuaTeX{L\kern-0.08emu\kern-0.03ema\kern-0.12em\TeX} + +%% (La)TeX font-related declarations: +\linespread{1.05} % Pagella needs more space between lines +\frenchspacing % Remove ugly extra space after punctuation + +\makeatletter +\newcounter{argument} +\g@addto@macro\endmacro{\setcounter{argument}{0}} +\newcommand*\darg[1]{% + \stepcounter{argument}% + \noindent{\ttfamily\char`\#\theargument~:~}#1\par} +\newcommand*\doarg[1]{% + \stepcounter{argument}% + \noindent{\ttfamily\makebox[0pt][r]{[}\char`\#\theargument]:~}#1\par} +\makeatother + +\newcommand\unichar[2]{\textsc{\MakeLowercase{u+#1: #2}}} + +\newcommand\cmdbox[1]{% + \smallskip\par\noindent + \fbox{\begin{varwidth}{\linewidth} + #1% + \end{varwidth}}% + \smallskip +} +\def\CMD#1{\texttt{\null#1\unskip}} + +\usepackage{xparse} +\NewDocumentCommand \otf {somm} {% + \IfBooleanTF #1 + {% + \gdef\NOTE{\par\smallskip {$\ast$ \footnotesize This feature is activated by default.}}% + \IfNoValueTF {#2} {\gdef\offname{No#3}}{\gdef\offname{#2}}% + \featname&$\ast$&\texttt{#4}\\ + \featname&\offname&&\texttt{#4}~~{\footnotesize(\textit{deactivate})}\\ + } + {\featname&&\texttt{#4}\\}% +} +\newenvironment{features}[1]{% + \def\NOTE{} + \def\thisfeatname{#1}% + \def\featname{\thisfeatname~~\texttt=~~\null\gdef\featname{}}% + \begin{table} + \centering + \begin{tabular}{@{}l@{}l@{\hspace{0.5\tabcolsep}}l@{\hspace{0.5\tabcolsep}}l@{}} + \toprule + Feature & Option && Tag \\ + \midrule +}{ + \bottomrule + \end{tabular} + \NOTE + \caption{Options for the OpenType font feature `\thisfeatname'.} + \edef\@tempa{\noexpand\label{feat:\thisfeatname}}\@tempa + \end{table} +} + +%%%%%%%%%%% + +\def \MakePrivateLetters {% + \catcode `\@ = 11 + \catcode `\_ = 11 + \catcode `\: = 11 +} + +%% for LaTeX3 csnames +\catcode `\_= 11 + +\renewcommand\partname{Part} + +% \end{macrocode} +%</doc-style> +% \fi +\endinput diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec.ins b/Master/texmf-dist/source/latex/fontspec/fontspec.ins new file mode 100644 index 00000000000..546ccbce69d --- /dev/null +++ b/Master/texmf-dist/source/latex/fontspec/fontspec.ins @@ -0,0 +1,44 @@ +\input docstrip.tex +\keepsilent +\usedir{tex/latex/fontspec} +\let\MetaPrefix\relax +\preamble + + _________________________________________ + The fontspec package for XeLaTeX/LuaLaTeX + (C) 2004--2010 Will Robertson and Khaled Hosny + + License information appended. + +\endpreamble +\postamble + +Copyright 2004--2010 Will Robertson <wspr81@gmail.com> +Copyright 2009--2010 Khaled Hosny <khaledhosny@eglug.org> + +Distributable under the LaTeX Project Public License, +version 1.3c or higher (your choice). The latest version of +this license is at: http://www.latex-project.org/lppl.txt + +This work is "author-maintained" by Will Robertson. + +This work consists of this file fontspec.dtx + and the derived files fontspec.sty, + fontspec.lua, + fontspec.cfg, + fontspec.ins, + fontspec-example.ltx, + and fontspec.pdf. + +\endpostamble +\askforoverwritefalse +\def\MetaPrefix{-- } +\generate{\file{fontspec.lua} {\from{fontspec.dtx}{lua}}} +\let\MetaPrefix\DoubleperCent +\generate{\file{fontspec.sty} {\from{fontspec.dtx}{fontspec}}} +\generate{\file{fontspec-patches.sty} {\from{fontspec.dtx}{patches}}} +\nopreamble\nopostamble +\generate{\file{fontspec.cfg} {\from{fontspec.dtx}{cfg}}} +\generate{\file{fontspec-xetex.tex} {\from{fontspec.dtx}{example,xetex}}} +\generate{\file{fontspec-luatex.tex} {\from{fontspec.dtx}{example,luatex}}} +\endbatchfile diff --git a/Master/texmf-dist/source/xelatex/fontspec/fontspec.dtx b/Master/texmf-dist/source/xelatex/fontspec/fontspec.dtx deleted file mode 100644 index 825e4742e49..00000000000 --- a/Master/texmf-dist/source/xelatex/fontspec/fontspec.dtx +++ /dev/null @@ -1,4507 +0,0 @@ -% \iffalse -%<*internal> -\iffalse -%</internal> -%<*readme> --------------------------- -THE FONTSPEC PACKAGE v1.18 - -The fontspec package only works with XeTeX, -a unicode capable TeX-variant. It provides -an automatic and unified interface for loading -fonts in LaTeX. XeTeX allows a direct interface -to system-installed fonts, so no manual font -installation is required. - -This package also provides access to the large -number of font features available with AAT and -OpenType fonts, including upper and lower case -numbers, proportional and monospaced numbers, -swash letters, vulgar fractions, ligature -control, and many others. - -It also provides an interface to set the XeTeX -font mappings, font colour, relative font -scaling, inter-word space scaling, and more. - ------------------------- -SUMMARY OF USER COMMANDS - -Font families may be selected individually with the command - \fontspec[<font options>]{<font name>} - -Commands for selecting fonts efficiently can be created with - \newfontfamily\myfamily[<font options>]{<font name>} - \newfontface\myfont[<font options>]{<font name>} - -Default document fonts are selected with - \setmainfont[<font options>]{<font name>} - \setsansfont[<font options>]{<font name>} - \setmonofont[<font options>]{<font name>} - -Fonts to be used in maths are defined with - \setmathrm[<font options>]{<font name>} - \setmathsf[<font options>]{<font name>} - \setmathtt[<font options>]{<font name>} - \setboldmathrm[<font options>]{<font name>} - -Features to be used for every subsequently defined font are specified with - \defaultfontfeatures{<default font options>} - -Features may be added to the font currently in use with - \addfontfeatures{<font options to add>} - \addfontfeature{<...>} does the same thing - -Features not provided for out of the box may be defined with - \newAATfeature{<feature tag>}{<feature code>}{<selector code>} - \newICUfeature{<feature tag>}{[+|-]<4 letter feature string>} - \newfontfeature{<feature tag>}{<arbitrary XeTeX font options>} - -Features can be renamed and feature options can be renamed with - \aliasfontfeature{<current feature>}{<new feature>} - \aliasfontfeatureoption{<feature>}{<current option>}{<new option>} - --------------- -Will Robertson -2004--2008 -%</readme> -%<*internal> -\fi -%</internal> -% -%<*internal> -\begingroup -%</internal> -%<*batchfile> -\input docstrip.tex -\keepsilent -\usedir{tex/xelatex/fontspec} -\preamble - - ________________________________ - The fontspec package for XeLaTeX - (C) 2004--2008 Will Robertson - - License information appended. - - -\endpreamble -\postamble - -Copyright 2004--2008 by Will Robertson <wspr81@gmail.com> - -Distributable under the LaTeX Project Public License, -version 1.3c or higher (your choice). The latest version of -this license is at: http://www.latex-project.org/lppl.txt - -This work is "maintained" (as per LPPL maintenance status) -by Will Robertson. - -This work consists of this file fontspec.dtx - and the derived files fontspec.sty, - fontspec.cfg, - fontspec.ins, - fontspec-example.ltx, - and fontspec.pdf. - -\endpostamble -\askforoverwritefalse -\generate{\file{fontspec.sty}{\from{fontspec.dtx}{fontspec}}} -\generate{\file{fontspec.cfg}{\from{fontspec.dtx}{cfg}}} -\generate{\file{fontspec-example.ltx}{\from{fontspec.dtx}{example}}} -%</batchfile> -%<batchfile>\endbatchfile -%<*internal> -\generate{\file{fontspec.ins}{\from{fontspec.dtx}{batchfile}}} -\nopreamble\nopostamble -\generate{\file{README.txt}{\from{\jobname.dtx}{readme}}} -\generate{\file{fontspec-doc-style.sty}{\from{fontspec.dtx}{doc-style}}} -\endgroup -%</internal> -% -%<*driver> -\documentclass[a4paper]{ltxdoc} -\usepackage{fontspec-doc-style} -\EnableCrossrefs -\CodelineIndex -\RecordChanges -%\OnlyDescription -\begin{document} -\makeatletter ^^A% To document @-cmds -\errorcontextlines=999 ^^A% Show up all my mistakes - -\GetFileInfo{fontspec.sty} - -\title{The {\fontspec[Scale=0.82,Variant=3]{Zapfino}{\addfontfeature{Variant=4}f}ontspec} package} -\author{\scshape Will Robertson} -\date{\filedate \qquad \fileversion} - -\maketitle -\tableofcontents - -\newpage -\section{Introduction} -With the introduction of \name{Jonathan Kew}'s -\XeTeX,\footnote{\texttt{http://scripts.sil.org/xetex}} users can -now easily access system-wide fonts directly in a \TeX\ -variant, providing a best of both worlds environment. \XeTeX\ -eliminates the need for all those files required for installing -fonts (|.tfm|, |.vf|, |.map|, \dots) and provides an easy -way to select fonts in Plain \TeX: |\font\tenrm="Times New Roman" at 10pt|. - -Before \pkg{fontspec}, it was still necessary to write cumbersome font definition -files for \LaTeX, since the NFSS had a lot more going on behind the -scenes to allow easy commands like \cmd\emph\ or \cmd\bfseries. - -This package provides a -completely automatic way to select font families in \LaTeX\ for -arbitrary fonts. Furthermore, it allows very flexible -control over the selection of advanced font features such as number case -and fancy ligatures (and many more!) present in most modern fonts. - -\subsection{Usage} -For basic use, no package options are required: -\begin{Verbatim}[gobble=2] - \usepackage{fontspec}% provides font selecting commands - \usepackage{xunicode}% provides unicode character macros - \usepackage{xltxtra} % provides some fixes/extras -\end{Verbatim} -\name{Ross Moore}'s \pkg{xunicode} package is highly recommended, as it -provides access \LaTeX's various methods for accessing extra -characters and accents (for example, |\%|, |\$|, |\textbullet|, |\"u|, and -so on), plus many more unicode characters. - -The \pkg{xltxtra} package adds a couple of general improvements to \LaTeX\ under -\XeTeX; it also provides the \cmd\XeTeX\ macro to typeset the \XeTeX\ logo. - -\emph{The \pkg{babel} package is not really supported!} Especially Vietnamese, -Greek, and Hebrew at least might not work correctly, as far as I can tell. -There's a better chance with Cyrillic and Latin-based languages, however---\pkg{fontspec} ensures -at least that fonts should load correctly, but hyphenation and other matters -aren't guaranteed. - -The rest of this section documents \pkg{fontspec}'s package options, which are (briefly): -\begin{description}[nolistsep,font=\ttfamily] -\item [cm-default] Don't load the Latin Modern fonts; -\item [no-math] Don't change any maths fonts; -\item [no-config] Don't load \pkg{fontspec.cfg}; and, -\item [quiet] Output \pkg{fontspec} warnings in the log file rather than the console output. -\end{description} - -\subsubsection{Latin Modern defaults} -\pkg{fontspec} defines a new \LaTeX\ font encoding for its purposes to allow -the Latin Modern fonts to be used by default \new{v1.12}. This has three implications: -\begin{enumerate} -\item Unicode fonts are loaded by default; it didn't make sense to have the legacy Computer Modern fonts in the Unicode-enabled \XeTeX. -\item If you don't have the Latin Modern OpenType fonts installed, you might want to consider doing so. -\item \pkg{fontspec} also requires the \pkg{euenc} package\footnote{\url{http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=euenc}} to be installed. -\end{enumerate} -Another package option is provided for controlling this behaviour: |[cm-default]| -will ignore the Latin Modern fonts and go about things as it used to. Use this -option if you don't have the Latin Modern fonts installed or you (Mac-specifically) -want to use the `default \TeX\ font' without using the |xdvipdfmx| driver. - -\subsubsection{Maths `fiddling'} -\new{v1.14} -By default, \pkg{fontspec} adjusts \LaTeX's default maths setup in order to maintain the correct Computer Modern symbols when the roman font changes. However, it will attempt to avoid doing this if another maths font package is loaded (such as \pkg{mathpazo} or my upcoming \pkg{unicode-math} package). - -If you find that it is incorrectly changing the maths font when it should be leaving well enough alone, apply the |[no-math]| package option to manually suppress its maths font. - -\subsubsection{Configuration} -If you wish to customise any part of the \pkg{fontspec} interface (see later -in this manual, \vref{sec:newfeatures} and~\ref{sec:aliasfontfeature}), -this should be done by creating your own \texttt{fontspec.cfg} file, - \note{An example is distributed with the package.} -which will be automatically loaded if it is found by \XeTeX. Either place it -in the same folder as the main document for isolated cases, or in a location that -\XeTeX\ searches by default, \eg, \url{~/Library/texmf/xelatex/}. -The package option |[no-config]| will suppress this behaviour -under all circumstances. -\warn{v1.14}{Used to be \texttt{[noconfig]}, which still works.} - -\subsubsection{Warnings}\label{sec:quiet-warnings} -This package can give many warnings that can be -harmless if you know what you're doing. -Use the |[quiet]| package option to write -these warnings to the transcript (\texttt{.log}) file instead. - -Use the |[silent]| package option to completely suppress these warnings if you don't even want the |.log| file cluttered up. - -\subsection{About this manual} -\warn{v1.6}{An example warning!} -In the unfortunate case that I need to make backwards incompatible changes (you're probably pretty safe these days), such things, and some other comments, are noted in the margin of this document as shown here, with a red star if the -change is relevant to the current release of the package. (New features -are denoted similarly in blue.) - -This document has been typeset with \XeTeX\ using a variety of fonts -to display various features that the package supports. You will not -be able to typeset the documentation if you do not have all of these -fonts, many of which are distributed with \MacOSX\ or are otherwise -commercial. - -Many examples are shown in this manual. These are typeset -side-by-side with their verbatim source code, although various -size-altering commands (\cs{large}, \cs{Huge}, \etc) are omitted for -clarity. Since the package supports font features for both AAT and -OpenType fonts (whose feature sets only overlap to some extent), -examples are distinguished by colour: blue and red, respectively. -Examples whose font type is irrelevant are typeset in green. - -\section{Brief overview} -This manual can get rather in-depth, as there are a lot of font features -to cover. A basic preamble set-up is shown below, to simply select some default -document fonts. See the file \url{fontspec-example.tex} for a more detailed -example. -\begin{Verbatim}[gobble=2] - \usepackage{fontspec} - \defaultfontfeatures{Scale=MatchLowercase} - \setmainfont[Mapping=tex-text]{Baskerville} - \setsansfont[Mapping=tex-text]{Skia} - \setmonofont{Courier} -\end{Verbatim} - -\section{Font selection} - -\DescribeMacro{\fontspec} -\cmd{\fontspec}\oarg{font features}\marg{font name} -is the base command of the package, used -for selecting the specified \meta{font name} in a \LaTeX\ family. -The font features argument -accepts comma separated \meta{font feature}=\meta{option} lists; these will -not be fully described until \vref{sec:features}. - -As our first example, look how easy it is to select the -Hoefler Text typeface with the \pkg{fontspec} package: -\begin{example} - \def\pangram{The five boxing - wizards jump quickly.\\} - \fontspec{Hoefler Text} \pangram - {\itshape \pangram} - {\scshape \pangram} - {\scshape\itshape \pangram} - \bfseries \pangram - {\itshape \pangram} - {\scshape \pangram} - {\itshape\scshape \pangram} -\end{example} -The \pkg{fontspec} package takes care of the necessary font -definitions for those shapes as shown above -\emph{automatically}. Furthermore, it is not necessary to install -the font for \XeTeX\ in any way whatsoever: every font that is -installed in the operating system may be accessed. - -\subsection{Default font families}\label{sec:setxxfont} -\DescribeMacro{\setmainfont} \DescribeMacro{\setsansfont} -\DescribeMacro{\setmonofont} The \cs{setmainfont}, -\note{Or \cmd\setromanfont, a historical name that doesn't make much sense when you're, say, typesetting Greek.} -\cs{setsansfont}, and \cs{setmonofont} commands are used to select -the default font families for the entire document. They take the -same arguments as \cmd{\fontspec}. For example: - \def\pangram{Pack my box with five - dozen liquor jugs.} -\begin{example} - \setmainfont{Baskerville} - \setsansfont[Scale=0.86]{Skia} - \setmonofont[Scale=0.8]{Monaco} - \rmfamily\pangram\par - \sffamily\pangram\par - \ttfamily\pangram -\end{example} -Here, the scales of the fonts have been chosen to equalise their -lowercase letter heights. The \feat{Scale} font feature will be discussed -further in \vref{sec:font-ind-features}, including methods for automatic -scaling. - -\subsection{Font instances for efficiency} -\DescribeMacro{\newfontfamily} -For cases when a specific font with a specific feature set is going -to be re-used many times in a document, it is inefficient to keep -calling \cs{fontspec} for every use. While the command does not -define a new font instance after the first call, the feature options -must still be parsed and processed. - -For this reason, \emph{instances} -of a font may be created with the \cmd\newfontfamily\ command, -\warn{v1.11}{This macro used to be called \cmd\newfontinstance. - Backwards compatibility is preserved via \texttt{fontspec.cfg}.} -as shown in the following example: -\begin{example} - \newfontfamily\notefont{Didot} - \notefont This is a \emph{note}. -\end{example} -This macro should be used to create commands that would be used in -the same way as \cmd\rmfamily, for example. - -\DescribeMacro{\newfontface} -Sometimes only a specific font face is desired, without accompanying italic or bold variants. -This is common when selecting a fancy italic font, say, that has swash features unavailable -in the upright forms. \cmd\newfontface\ is used for this purpose: \new{v1.11} -\begin{example} - \newfontface\fancy - [Contextuals={WordInitial,WordFinal}] - {Hoefler Text Italic} - \fancy where is all the vegemite -\end{example} -\noindent This example is repeated in \vref{sec:contextuals}. - -\subsection{Arbitrary bold/italic/small caps fonts} \label{sec:bfitfonts} -The automatic bold, italic, and bold italic font selections will not be -adequate for the needs of every font: while some fonts mayn't even -have bold or italic shapes, in which case a skilled (or lucky) -designer may be able to chose well-matching accompanying shapes from -a different font altogether, others can have a range of bold and -italic fonts to chose between. The \feat{BoldFont} and -\feat{ItalicFont} features~\warn{v1.6}{These features used to be called - \feat{Bold} and \feat{Italic}, and these shorter names may still be - used if you desire.} are provided for these situations. If only -one of these is used, the bold italic font is requested as the -default from the \emph{new} font. -\begin{example} - \fontspec[BoldFont={Helvetica Neue}] - {Helvetica Neue UltraLight} - Helvetica Neue UltraLight \\ - {\itshape Helvetica Neue UltraLight Italic} \\ - {\bfseries Helvetica Neue } \\ - {\bfseries\itshape Helvetica Neue Italic} \\ -\end{example} -If a bold italic shape is not defined, or you want to specify -\emph{both} custom bold and italic shapes, the \feat{BoldItalicFont} -feature is provided~\warn{v1.6}{\opt{BoldItalic} also works}. - -For those cases that the base font name is repeated, you can -replace it with an asterisk (first character only). For example, -some space can be saved instead of writing `\texttt{Baskerville SemiBold}': -\begin{example} - \fontspec[BoldFont={* SemiBold}]{Baskerville} - Baskerville \textit{Italic} - \bfseries SemiBold \textit{Italic} -\end{example} - -As a matter of fact, this feature can also be used for the upright font too: -\begin{example} - \fontspec[UprightFont={* SemiBold}, - BoldFont={* Bold}]{Baskerville} - Upright \textit{Italic} - \bfseries Bold \textit{Bold Italic} -\end{example} - -Old-fashioned font families used to distribute their small caps -glyphs in separate fonts due to the limitations on the number -of glyphs allowed in the PostScript Type~1 format. Such fonts may be used -by declaring the \feat{SmallCapsFont} of the family you are specifying: -\begin{Verbatim} - \fontspec[ - SmallCapsFont={Minion MM Small Caps & Oldstyle Figures}, - ]{Minion MM Roman} - Roman 123 \\ \textsc{Small caps 456} -\end{Verbatim} - - -\subsection{Math(s) fonts} - -When \cmd\setmainfont, \cmd\setsansfont\ and \cmd\setmonofont\ are -used in the preamble, they also define the fonts to be used in maths -mode inside the \cmd\mathrm-type commands. This only occurs in the -preamble because \LaTeX\ freezes the maths fonts after this stage of -the processing. The \pkg{fontspec} package must also be loaded after -any maths font packages (\eg, \pkg{euler}) to be -successful. (Actually, it is \emph{only} \pkg{euler} that is the -problem.\footnote{Speaking of \pkg{euler}, if you want to use its \texttt{[mathbf]} option, it won't work, and you'll need to put this after \pkg{fontspec} is loaded instead:\ttfamily\cmd\AtBeginDocument\char`\{\cmd\DeclareMathAlphabet\cmd\mathbf\char`\{U\char`\}\char`\{eur\char`\}\char`\{b\char`\}\char`\{n\char`\}}) - -Note that you may find that loading some maths packages won't be as smooth as you expect since \pkg{fontspec} (and \XeTeX\ in general) breaks many of the assumptions of \TeX\ as to where maths characters and accents can be found. Contact me if you have troubles, but I can't guarantee to be able to fix any incompatibilities. The Lucida and Euler maths fonts (the latter loaded with \pkg{euler} rather than \pkg{eulervm}) should be fine; for all others keep an eye out for problems. - -\DescribeMacro{\setmathrm} \DescribeMacro{\setboldmathrm} -\DescribeMacro{\setmathsf} \DescribeMacro{\setmathtt} -However, the default text fonts may not necessarily be the ones you -wish to use when typesetting maths (especially with the use of fancy -ligatures and so on). For this reason, you may optionally use those -commands listed in the margin (in the same way as our other -\cmd\fontspec-like commands) to explicitly state which fonts to use -inside such commands as \cmd\mathrm. Additionally, the -\cmd\setboldmathrm\ command allows you define the font used for -\cmd\mathrm\ when in bold maths mode (which is activated with, among -others, \cmd\boldmath). - -For example, if you were using Optima with the Euler maths font, you -might have this in your preamble: -\begin{Verbatim}[gobble=2] - \usepackage{mathpazo} - \usepackage{fontspec,xunicode} - \setmainfont{Optima} - \setmathrm{Optima} - \setboldmathrm[BoldFont=Optima ExtraBlack]{Optima Bold} -\end{Verbatim} -and this would allow you to typeset something like this: -\begingroup -\setmainfont{Optima Regular} -\begin{example} - $ X \rightarrow \mathrm{X} \rightarrow \mathbf{X} $ - \\\boldmath - $ X \rightarrow \mathrm{X} \rightarrow \mathbf{X} $ -\end{example} -\endgroup - -\subsection{External fonts} -\XeTeX\ v0.995 introduced the feature of loading -fonts not installed through the operating system (`external' fonts). This feature is currently -only available through the |xdvipdfmx| driver, which is notably \emph{not} -the default on \MacOSX. - -This feature is handled in \pkg{fontspec} with the font feature \feat{ExternalLocation}. -When this feature is used, the main argument to \cmd\fontspec\ is the \emph{file name} of the -font (in contrast to the usual syntax which requires the font display name) and the argument -to the feature is the (absolute) path to the font. For example: -\begin{verbatim} - \fontspec[ExternalLocation=/Users/will/Fonts/]{CODE2000.TTF} -\end{verbatim} - -If no path is given, then the font will be found in a location normally searched by -\XeTeX, including the current directory. For example, the following declaration -could load either the Latin Modern roman font in the current directory or, say, -in \path{$TEXMF/fonts/opentype/public/lm/}: -\begin{verbatim} - \fontspec[ExternalLocation]{lmroman10-regular} -\end{verbatim} - -Bold and italic fonts cannot be automatically selected when external fonts -are being used; they must be explicitly declared using the methods -described in \vref{sec:bfitfonts}. - -\subsection{Miscellaneous font selecting details} - -By the way, from v1.9, \cmd\fontspec\ and \cmd\addfontfeatures\ -will now ignore following spaces as if it were a `naked' control -sequence; \eg, `|M. \fontspec{...} N|' and `|M. \fontspec{...}N|' -are the same. - -Note that this package redefines the \cs{itshape} and \cs{scshape} -commands in order to allow them to select italic small caps in -conjunction. (This was implicitly shown in the first example, -but it's worth mentioning now, too.) - - -\section{Selecting font features} \label{sec:selectingfeature} - -The commands discussed so far each take an optional argument for -accessing the font features of the requested font. These features -are generally unavailable or harder to access in regular \LaTeX. The -font features and their options are described in -\vref{sec:features}, but before we look at the range of available -font features, it is necessary to discuss how they can be applied. - -\subsection{Default settings} \label{sec:defaults} -\DescribeMacro{\defaultfontfeatures} It is desirable to define -options that are applied to every subsequent font selection command: -a default feature set, so to speak. This may be defined with the -\cmd{\defaultfontfeatures}\marg{font features} command. -New calls of \cs{defaultfontfeatures} overwrite previous ones. -\begin{example} - \fontspec{Didot} - Some `default' Didot 0123456789 \\ - \defaultfontfeatures{Numbers=OldStyle, Colour=888888} - \fontspec{Didot} - Now grey, with old-style figures: 0123456789 -\end{example} - -\subsection{Changing the currently selected features} -\label{sec:addfontfeatures} -\DescribeMacro{\addfontfeatures} -The \cs{addfontfeatures}\marg{font features} -command allows font features to be changed without -knowing what features are currently selected or even what font is -being used. A good example of this could be to add a hook to all -tabular material to use monospaced numbers, as shown in the -following example: -\begin{example} - \fontspec[Numbers=OldStyle]{Skia} - `In 1842, 999 people sailed 97 miles in - 13 boats. In 1923, 111 people sailed 54 - miles in 56 boats.' \bigskip - - {\addfontfeatures{Numbers={Monospaced,Lining}} - \begin{tabular}{@{} cccc @{}} - \toprule Year & People & Miles & Boats \\ - \midrule 1842 & 999 & 75 & 13 \\ - 1923 & 111 & 54 & 56 \\ - \bottomrule - \end{tabular}} -\end{example} -\DescribeMacro{\addfontfeature} -This command may also be executed under the alias \cmd{\addfontfeature}. - -\subsection{Priority of feature selection} -Features defined with \cs{addfontfeatures} override features -specified by \cs{fontspec}, which in turn override features -specified by \cs{defaultfontfeatures}. If in doubt, whenever a -new font is chosen for the first time, an entry is made in the -transcript (\texttt{.log}) file displaying the font name and the -features requested. - -\subsection{Different features for different font shapes} - -It is entirely possible that separate fonts in a family will require -separate options; \eg, Hoefler Text Italic contains various swash -feature options that are completely unavailable in the upright shapes. - -The font features defined at the top level of the optional \cmd\fontspec\ -argument are applied to \emph{all} shapes of the family. -Using \feat{Upright-}, \feat{SmallCaps-}, \feat{Bold-}, -\feat{Italic-}, and \feat{BoldItalicFeatures}, -separate font features may be defined to their respective shapes -\emph{in addition} to, and with precedence over, the `global' font features. -\begin{aatexample} - \fontspec{Hoefler Text} \itshape \scshape - Attention All Martini Drinkers \\ - \addfontfeature{ItalicFeatures={Alternate = 1}} - Attention All Martini Drinkers \\ -\end{aatexample} -Combined with the options for selecting arbitrary \emph{fonts} for -the different shapes, these separate feature options allow the -selection of arbitrary weights in the Skia typeface, for example: -\begin{aatexample} - \fontspec[BoldFont={Skia}, - BoldFeatures={Weight=2}]{Skia} - Skia \\ \bfseries Skia `Bold' -\end{aatexample} - -Note that because most fonts include their small caps glyphs -within the main font, these features are applied \emph{in addition} to -any other shape-specific features as defined above, and hence \feat{SmallCapsFeatures} -can be nested within \feat{ItalicFeatures} and friends. Every combination -of upright, italic, bold and small caps can thus be assigned individual -features, as shown in the following ludicrous example. -\begin{example} - \fontspec[ - UprightFeatures={Colour = 220022, - SmallCapsFeatures = {Colour=115511}}, - ItalicFeatures={Colour = 2244FF, - SmallCapsFeatures = {Colour=112299}}, - BoldFeatures={Colour = FF4422, - SmallCapsFeatures = {Colour=992211}}, - BoldItalicFeatures={Colour = 888844, - SmallCapsFeatures = {Colour=444422}}, - ]{Hoefler Text} - Upright {\scshape Small Caps}\\ - \itshape Italic {\scshape Italic Small Caps}\\ - \upshape\bfseries Bold {\scshape Bold Small Caps}\\ - \itshape Bold Italic {\scshape Bold Italic Small Caps} -\end{example} - -\subsection{Different features for different font sizes} -\label{sec:sizefeature} - -The \feat{SizeFeature} feature \new{v1.13} is a little more complicated -than the previous features discussed. It allows different fonts -and different font features to be selected for a given font -family as the point size varies. - -It takes a comma separated list of braced, comma separated lists of features for each size range. -Each sub-list must contain the \opt{Size} option -to declare the size range, and optionally \opt{Font} to change the -font based on size. Other (regular) fontspec features that are added -are used on top of the font features that would be used anyway. - -\begin{example} - \fontspec[ SizeFeatures={ - {Size={-8}, Font=Apple Chancery, Colour=AA0000}, - {Size={8-14}, Colour=00AA00}, - {Size={14-}, Colour=0000AA}} ]{Skia} - {\scriptsize Small\par} Normal size\par {\Large Large\par} -\end{example} -A less trivial example is shown in the context of optical font sizes -in \vref{sec:opticalsize}. - -To be precise, the \opt{Size} sub-feature accepts arguments in the form shown in \vref{tab:sizing}. -Braces around the size range are optional. For an exact font size (|Size=X|) -font sizes chosen near that size will `snap'. For example, for size definitions -at exactly 11pt and 14pt, if a 12pt font is requested \emph{actually} the -11pt font will be selected. This is a remnant of the past when fonts were designed -in metal (at obviously rigid sizes) and later when bitmap fonts were similarly -designed for fixed sizes. - -If additional features are only required for a single size, the other sizes -must still be specified. As in: -\begin{verbatim} - SizeFeatures={ - {Size=-10,Numbers=Uppercase}, - {Size=10-}} -\end{verbatim} -Otherwise, the font sizes greater than 10 won't be defined! - -\begin{table} -\centering -\begin{tabular}{@{}ll@{}} -\toprule -Input & Font size, $s$ \\ -\midrule - |Size = X-| & $s \geq \texttt{X}$ \\ - |Size = -Y| & $s < \texttt{Y}$ \\ - |Size = X-Y| & $\texttt{X} \leq s < \texttt{Y}$ \\ - |Size = X| & $s = \texttt{X}$ \\ -\bottomrule -\end{tabular} -\caption{Syntax for specifying the size to apply custom font features.}\label{tab:sizing} -\end{table} - - -\section{Font independent options} \label{sec:font-ind-features} - -Features introduced in this section may be used with any font. - -\subsection{Scale} - -In its explicit form, \feat{Scale} takes a single -numeric argument for linearly scaling the font, as demonstrated -in \vref{sec:setxxfont}. -Since version 0.99 of \XeTeX, however, it is now possible to -measure the correct dimensions of the fonts loaded, and hence -calculate values to scale them automatically. - -The \feat{Scale} feature now \warn{v1.9}{As of Dec.\,2005} -also takes the options \opt{MatchLowercase} -and \opt{MatchUppercase}, which will scale the font being selected to match -the current default roman font to either the height of the lowercase or -uppercase letters, respectively. -\begin{example} - \setmainfont{Georgia} - \newfontfamily\lc[Scale=MatchLowercase]{Verdana} - The perfect match {\lc is hard to find.}\\ - \newfontfamily\uc[Scale=MatchUppercase]{Arial} - L O G O \uc F O N T -\end{example} -The amount of scaling used in each instance is reported in the \texttt{.log} file. -Since there is some subjectivity about the exact scaling to be used, these values -should be used to fine-tune the results. - -\subsection{Mapping} - -\feat{Mapping} enables a \XeTeX\ text-mapping scheme. -\begin{example} - \fontspec[Mapping=tex-text]{Cochin} - ``!`A small amount of---text!'' -\end{example} - -\subsection{Colour} - -\feat{Colour} (or \feat{Color}), also shown in \vref{sec:defaults} and -\vref{sec:features}, uses \XeTeX\ font specifications to set the colour of -the text. The colour is defined as a triplet of two-digit Hex RGB -values, with optionally another value for the transparency (where -|00| is completely transparent and |FF| is opaque.) -\begin{example} - \fontsize{48}{48} - \fontspec{Hoefler Text Black} - {\addfontfeature{Color=FF000099}W}\kern-1ex - {\addfontfeature{Color=0000FF99}S}\kern-0.8ex - {\addfontfeature{Color=DDBB2299}P}\kern-0.8ex - {\addfontfeature{Color=00BB3399}R} -\end{example} - -\subsection{Interword space} - -While the space between words can be varied on an individual -basis with the \TeX\ primitive \cmd\spaceskip\ command, it is -more convenient to specify this information when the font is -first defined. - -The space in between words in a paragraph will be chosen automatically -by \XeTeX, and generally will not need to be adjusted. For those -times when the precise details are important, the \feat{WordSpace} -features is -provided, which takes either a single scaling factor to scale the -value that \XeTeX\ has already chosen, or a triplet of comma-separated -values for the nominal value, the stretch, and the shrink of the -interword space, respectively. \Ie, |WordSpace=0.8| is the same as -|WordSpace={0.8,0.8,0.8}|. - -For example, I believe that the Cochin font, as distributed with \MacOSX, -is too widely spaced. Now, this can be rectified, as shown below. -\begingroup -\let\centering\relax -\def\fillertext{Some filler text for our example to take up some - space, and to demonstrate the large default interword space in \textit{Cochin}.} -\begin{example} - \fontspec{Cochin} - \fillertext - \vspace{1em} - - \fontspec[ WordSpace = {0.7 , 0.8 , 0.9} ]{Cochin} - \fillertext -\end{example} -\endgroup -Be careful with the unpredictable things that the AAT font renderer -can do with the text! Unlike \TeX, \MacOSX\ will allow -fonts to letterspace themselves, which can be seen above; OpenType fonts, however, will not -show this tendency, as they do not support this arguably dubious feature. - -\subsection{Post-punctuation space} - -If \cmd\frenchspacing\ is \emph{not} in effect, \TeX\ will allow extra -space after some punctuation in its goal of justifying the lines of text. -Generally, this is considered old-fashioned, but occasionally in small amounts the -effect can be justified, pardon the pun. - -The \feat{PunctuationSpace} feature takes a scaling factor by which to -adjust the nominal value chosen for the font. Note that |PunctuationSpace=0| -is \emph{not} equivalent to \cmd\frenchspacing, although the difference -will only be apparent when a line of text is under-full. -\begingroup -\let\centering\relax -\begin{example} - \nonfrenchspacing - \fontspec{Baskerville} - Letters, Words. Sentences. \par - \fontspec[PunctuationSpace=0.5]{Baskerville} - Letters, Words. Sentences. \par - \fontspec[PunctuationSpace=0]{Baskerville} - Letters, Words. Sentences. -\end{example} -\endgroup - -Also be aware that the above caveat for interword space also applies here, -so after the last line in the above example, the \feat{PunctuationSpace} -for \emph{all} Baskerville instances will be |0|. - -\subsection{Letter spacing} -Letter spacing, or tracking, is the term given to adding (or subtracting) a small amount of horizontal space in between adjacent characters. It is specified with the \feat{LetterSpace}, which takes a numeric argument. - -The letter spacing parameter is a normalised additive factor (not a scaling factor); it is defined as a percentage of the font size. That is, for a 10\,pt font, a letter spacing parameter of `|1.0|' will add 0.1\,pt between each letter. -\begin{example} - \fontspec{Didot} - \addfontfeature{LetterSpace=0.0} - USE TRACKING FOR DISPLAY CAPS TEXT \\ - \addfontfeature{LetterSpace=2.0} - USE TRACKING FOR DISPLAY CAPS TEXT -\end{example} -This functionality \emph{should not be used for lowercase text}, which is spacing correctly to begin with, but it can be very useful, in small amounts, when setting small caps or all caps titles. -Also see the OpenType \opt{Uppercase} -option of the \feat{Letters} feature (\vref*{sec:letters}). - - -\subsection{The hyphenation character} - -The letter used for hyphenation may be chosen with the \feat{HyphenChar} -feature. It takes three types of input, which are chosen according to some -simple rules. If the input is the string \opt{None}, then hyphenation is -suppressed for this font. If the input is a single character, then this -character is used. Finally, if the input is longer than a single character -it must be the UTF-8 slot number of the hyphen character you desire. - -Below, Adobe Garamond Pro's uppercase hyphenation character - \note{I found the character, and its number, in \MacOSX's Character Palette.} -is used to demonstrate a possible use for this feature. -The second example redundantly demonstrates the default behaviour -of using the hyphen as the hyphenation character. -\begingroup -\let\centering\relax -\begin{example} - \def\text - {A MULTITUDE OF OBSTREPEROUSLY HYPHENATED ENTITIES - \par\vspace{1ex}} - \fontspec[HyphenChar=None]{Adobe Garamond Pro} \text - \fontspec[HyphenChar={-}]{Adobe Garamond Pro} \text - \fontspec[HyphenChar="F6BA]{Adobe Garamond Pro} \text -\end{example} -\endgroup -Note that in an actual situation, the \opt{Uppercase} option of the \feat{Letters} feature -would probably supply this for you (see \vref{sec:letters}). - -The \pkg{xltxtra} package redefines \LaTeX's \cmd\-\ macro -such that it adjusts along with the above changes. - - -\subsection{Font transformations} - -In rare situations users may want to mechanically distort the shapes of the glyphs in the current font. Please don't overuse these features; they can be extremely ugly if overused. - -\begin{example} - \fontspec{Charis SIL} \emph{ABCxyz} \quad - \fontspec[FakeSlant=0.2]{Charis SIL} ABCxyz -\end{example} - -\begin{example} - \fontspec{Charis SIL} ABCxyz \quad - \fontspec[FakeStretch=1.2]{Charis SIL} ABCxyz -\end{example} - -\begin{example} - \fontspec{Charis SIL} \textbf{ABCxyz} \quad - \fontspec[FakeBold=1.5]{Charis SIL} ABCxyz -\end{example} - -If values are omitted, their defaults are as shown above. - -\section{Font-dependent features} \label{sec:features} - -This section covers each and every font feature catered for by this -package. Some, in fact, have already be seen in previous -sections. There are too many to list in this introduction, but for a -first taste of what is available, here is an example of the Apple -Chancery typeface: -\setexsize\Large -\begin{aatexample} - \fontspec[ - Colour=CC00CC, - Numbers=OldStyle, - VerticalPosition=Ordinal, - Variant=2]{Apple Chancery} - My 1st example of\\ Apple Chancery -\end{aatexample} -Multiple options may be given to -any feature that accepts non-numerical input, although doing so will -not always work. Some options will override others in generally -obvious ways; \Verb|Numbers={OldStyle,Lining}| doesn't make much -sense because the two options are mutually exclusive, and \XeTeX\ -will simply use the last option that is specified (in this case -using \opt{Lining} over \opt{OldStyle}). - -If a feature or an option is requested that the font does not have, -a warning is given in the console output. As mentioned in \vref{sec:quiet-warnings} -these warnings can be suppressed by selecting the \texttt{[quiet]} package option. - -\subsection{Different font technologies: AAT and ICU}\label{sec:renderer} - -\XeTeX\ supports two rendering technologies for typesetting, selected with -the \feat{Renderer} font feature. The first, \opt{AAT}, is -that provided (only) by \MacOSX\ itself. The second, \opt{ICU}, -is an open source OpenType interpreter. It provides much greater support for -OpenType features, notably contextual arrangement, over \opt{AAT}. - -In general, this feature will not need to be explicitly called: for OpenType -fonts, the \opt{ICU} renderer is used automatically, and for AAT fonts, -\opt{AAT} is chosen by default. Some fonts, however, will contain font tables -for \emph{both} rendering technologies, such as the Hiragino Japanese fonts -distributed with \MacOSX, and in these cases the choice may be required. - -Among some other font features only available through a specific renderer, -\opt{ICU} provides for the \feat{Script} and \feat{Language} features, which allow -different font behaviour for different alphabets and languages; see \vref{sec:ot} -for the description of these features. {\em Because these font features can -change which features are able to be selected for the font instance, they are selected -by \pkg{fontspec} before all others and will automatically and without warning -select the \opt{ICU} renderer.} - - -\subsection{Optical font sizes} \label{sec:opticalsize} - -Optically scaled fonts thicken out as the font size decreases -in order to make the glyph shapes more robust (less prone to losing -detail), which improves legibility. Conversely, at large optical -sizes the serifs and other small details may be more delicately -rendered. - -Optically sized fonts can be seen in either OpenType or Multiple -Master varieties. The differences when dealing with these two are -quite significant. OpenType fonts with optical scaling will exist in -several discrete sizes, and these will be selected by \XeTeX\ -\emph{automatically} determined by the current font size. The -\opt{OpticalSize} option may be used to specify a different optical -size. - -For the OpenType font Warnock Pro, we have three optically sized -variants: caption, subhead, and display. With \opt{OpticalSize} set -to zero, no optical size font substitution is performed: -\begin{opentypeexample} - \fontspec[OpticalSize=0]{Warnock Pro Caption} - Warnock Pro optical sizes \\ - \fontspec[OpticalSize=0]{Warnock Pro} - Warnock Pro optical sizes \\ - \fontspec[OpticalSize=0]{Warnock Pro Subhead} - Warnock Pro optical sizes \\ - \fontspec[OpticalSize=0]{Warnock Pro Display} - Warnock Pro optical sizes -\end{opentypeexample} - -Automatic OpenType optical scaling is shown in the following -example, in which we've scaled down some large text in order to be -able to compare the difference for equivalent font sizes: (this -gives the same output as we saw in the previous example for Warnock -Pro Display) -\begin{opentypeexample} - \fontspec{Warnock Pro} - Automatic optical size \\ - \scalebox{0.4}{\Huge - Automatic optical size} -\end{opentypeexample} - -Multiple Master fonts, on the other hand, are parameterised over -orthogonal font axes, allowing continuous selection along such -features as weight, width, and optical size~(see \vref{sec:mm} for -further details). Whereas an OpenType font will have only a few separate -optical sizes, a Multiple Master font's optical size can be -specified over a continuous range. Unfortunately, this flexibility makes -it harder to create an automatic interface through \LaTeX, and the -optical size for a Multiple Master font must always be specified -explicitly. -\begin{Verbatim} - \fontspec[OpticalSize=11]{Minion MM Roman} - MM optical size test \\ - \fontspec[OpticalSize=47]{Minion MM Roman} - MM optical size test \\ - \fontspec[OpticalSize=71]{Minion MM Roman} - MM optical size test \\ -\end{Verbatim} - -The \feat{SizeFeatures} feature (\vref{sec:sizefeature}) can be -used to specify exactly which optical sizes will be used for ranges -of font size. For example, something like -\begin{verbatim} - \fontspec[ - SizeFeatures={ - {Size=-10, OpticalSize=8 }, - {Size= 10-14, OpticalSize=10}, - {Size= 14-18, OpticalSize=14}, - {Size= 18-, OpticalSize=18}} - ]{Warnock Pro} -\end{verbatim} - -\subsection{Ligatures} - -\feat{Ligatures} refer to the replacement of two separate characters -with a specially drawn glyph for functional or \ae sthetic reasons. -For AAT fonts, you may choose from any combination of \opt{Required}, -\opt{Common}, \opt{Rare} (or \opt{Discretionary}), \opt{Logos}, \opt{Rebus}, -\opt{Diphthong}, \opt{Squared}, \opt{AbbrevSquared}, and \opt{Icelandic}. - -The first three are also supported in OpenType fonts, which may also -use \opt{Historical} and \opt{Contextual}. To turn a ligature option -\emph{off}, prefix its name with \opt{No}: \eg, \opt{NoDiphthong}. -\setexsize\Large -\begin{opentypeexample} - \fontspec[Ligatures=Rare]{Adobe Garamond Pro} - \textit{strict firefly} \\ - \fontspec[Ligatures=NoCommon]{Adobe Garamond Pro} - \textit{strict firefly} -\end{opentypeexample} -Some other Apple AAT fonts have those `Rare' ligatures contained in -the \opt{Icelandic} feature. Notice also that the old \TeX\ trick of -splitting up a ligature with an empty brace pair does not work in -\XeTeX; you must use a 0\,pt kern or \cs{hbox} (\eg, \cs{null}) to -split the characters up. - -\subsection{Letters} \label{sec:letters} -The \opt{Letters} feature~\warn{v1.6}{This feature has changed names - along with its options, \textbf{breaking} backwards - compatibility!} specifies how the letters in the current font -will look. For AAT fonts, you may choose from \opt{Normal}, -\opt{Uppercase}, \opt{Lowercase}, \opt{SmallCaps}, and -\opt{InitialCaps}. - -OpenType fonts have some different options: -\opt{Uppercase}, \opt{SmallCaps}, \opt{PetiteCaps}, -\opt{UppercaseSmallCaps}, \opt{UppercasePetiteCaps}, and -\opt{Unicase}. - \warn{v1.9}{The \texttt{Uppercase...} variants have changed - (\eg, from \opt{SMALLCAPS}) to allow for more flexible - option handling in the future. The old forms still work, for now\dots} -Petite caps are smaller than small caps. Mixed case -commands turn lowercase letters into the smaller caps letters, -whereas uppercase options turn the capital letters to the smaller -caps (good, \eg, for applying to already uppercase acronyms like -`NASA'). `Unicase' is a weird hybrid of upper and lower case -letters. -\begin{opentypeexample} - \fontspec[Letters=SmallCaps]{TeX Gyre Adventor} - THIS SENTENCE no verb \\ - \fontspec[Letters=UppercaseSmallCaps]{TeX Gyre Adventor} - THIS SENTENCE no verb -\end{opentypeexample} -The \opt{Uppercase} option is also provided \emph{but} it will (probably) -not actually map letters to uppercase. - \note{If you want automatic uppercase letters, look to \LaTeX's - \cmd\MakeUppercase\ command.} -It will, however, select various -uppercase forms for glyphs such as accents and dashes. -\begin{opentypeexample} - \fontspec{Warnock Pro} - UPPER-CASE EXAMPLE \\ - \addfontfeature{Letters=Uppercase} - UPPER-CASE EXAMPLE -\end{opentypeexample} -The \feat{Kerning} feature also contains an \opt{Uppercase} option, -which adds a small amount of spacing in between letters (see \vref{sec:kerning}). -This feature was originally planned to be included with the one above (so \feat{Letters=}\opt{Uppercase} would do both punctuation \emph{and} tracking), but I decided -that it would be a bad idea to break the one-to-one correspondence with \pkg{fontspec} -and OpenType features. (Sorry TUGboat readers!) - -\subsection{Numbers} -The \feat{Numbers} feature defines how numbers will look in the -selected font. For both AAT and OpenType fonts, they may be a -combination of \opt{Lining} or \opt{OldStyle} and \opt{Proportional} or -\opt{Monospaced} (the latter is good for tabular material). The synonyms -\opt{Uppercase} and \opt{Lowercase} are equivalent to \opt{Lining} and -\opt{OldStyle}, respectively. The differences have been shown previously -in \vref{sec:addfontfeatures}. - -For OpenType fonts, there is also the \opt{SlashedZero} option which -replaces the default zero with a slashed version to prevent -confusion with an uppercase `O'. -\begin{opentypeexample} - \fontspec[Numbers=Lining]{TeX Gyre Bonum} - 0123456789 - \fontspec[Numbers=SlashedZero]{TeX Gyre Bonum} - 0123456789 -\end{opentypeexample} - -\subsection{Contextuals} \label{sec:contextuals} -This feature refers to glyph substitution that vary by their position; -things like contextual swashes are implemented here - \warn{v1.9}{This feature used to be called \feat{Swashes}. This name still works, for now.}. -The options for AAT fonts are -\opt{WordInitial}, \opt{WordFinal}, \opt{LineInitial}, -\opt{LineFinal}, and \opt{Inner} (also called `non-final' sometimes). As -non-exclusive selectors, like the ligatures, you can turn them off -by prefixing their name with \opt{No}. -\begin{aatexample} - \newfontface\fancy - [Contextuals={WordInitial,WordFinal}] - {Hoefler Text Italic} - \fancy where is all the vegemite -\end{aatexample} -\begin{aatexample} - \fontspec[Contextuals=Inner]{Hoefler Text} - `Inner' swashes can \emph{sometimes} \\ - contain the archaic long~s. -\end{aatexample} -For OpenType fonts, all feature options as above but the \opt{LineInitial} feature are supported, -and \opt{Swash} turns on contextual -swashes \warn{v1.9}{Used to be \opt{Contextual}; still works.}. -\begin{opentypeexample} - \fontspec{Warnock Pro} \itshape - Without Contextual Swashes \\ - \fontspec[Contextuals=Swash]{Warnock Pro} - With Contextual Swashes; cf. W C S -\end{opentypeexample} -Historic forms (\eg, long~s as shown above) are accessed in OpenType -fonts via the feature \feat{Style=Historic}; this is generally \emph{not} -contextual in OpenType, which is why it is not included here. - -New option \opt{Alternate} corresponds to the raw feature |calt| \new{v1.18}. It should usually be activated by default. - - -\subsection{Vertical position} -The \feat{VerticalPosition} feature is used to access things like -subscript (\opt{Inferior}) and superscript (\opt{Superior}) numbers and -letters (and a small amount of punctuation, sometimes). -The \opt{Ordinal} option is (supposed to be) -contextually sensitive to only raise characters that appear directly -after a number. -\begin{aatexample} - \fontspec{Skia} - Normal - \fontspec[VerticalPosition=Superior]{Skia} - Superior - \fontspec[VerticalPosition=Inferior]{Skia} - Inferior \\ - \fontspec[VerticalPosition=Ordinal]{Skia} - 1st 2nd 3rd 4th 0th 8abcde -\end{aatexample} -OpenType fonts also have the option \opt{ScientificInferior} which -extends further below the baseline than \opt{Inferior}s, as well as -\opt{Numerator} and \opt{Denominator} for creating arbitrary fractions (see -next section). Beware, the \opt{Ordinal} feature will not work -correctly for all OpenType fonts! -\begin{opentypeexample} - \fontspec[VerticalPosition=Superior]{Warnock Pro} - Sup: abdehilmnorst (-\$12,345.67) \\ - \fontspec[VerticalPosition=Numerator]{Warnock Pro} - Numerator: 12345 \\ - \fontspec[VerticalPosition=Denominator]{Warnock Pro} - Denominator: 12345 \\ - \fontspec[VerticalPosition=ScientificInferior]{Warnock Pro} - Scientific Inferior: 12345 \\ - \fontspec[VerticalPosition=Ordinal]{Warnock Pro} - `Ordinals': 1st 2nd 3rd 4th 0th -\end{opentypeexample} - -The \pkg{xltxtra} package redefines the \cmd\textsubscript\ and -\cmd\textsuperscript\ commands to use the above font features. - -\subsection{Fractions} -Many fonts come with the capability to typeset various forms of -fractional material. This is accessed in \pkg{fontspec} with the -\feat{Fractions} feature, which may be turned \opt{On} or \opt{Off} -in both AAT and OpenType fonts.~\warn{v1.7}{This feature has - changed: no backwards compatibility!} - -In AAT fonts, the `fraction slash' or solidus character, which may -be obtained by typing `{\fontspec{Lucida Grande}⌥⇧\,1}', is -to be used to create fractions. When \feat{Fractions} are turned -\opt{On}, then only pre-drawn fractions will be used. -\begingroup\setmonofont[Scale=0.8]{Monaco} -\begin{aatexample} - \fontspec[Fractions=On]{Skia} - 1⁄2 \quad 5⁄6 \\ % fraction slash - 1/2 \quad 5/6 % regular slash -\end{aatexample} -\endgroup -Using the \opt{Diagonal} option (AAT only), the font will attempt -to create the fraction from superscript and subscript -characters. This is shown in the following example: -\begingroup\setmonofont[Scale=0.8]{Monaco} -\begin{aatexample} - \fontspec[Fractions=Diagonal]{Skia} - 13579⁄24680 \\ % fraction slash - \quad 13579/24680 % regular slash -\end{aatexample} -\endgroup -OpenType fonts simply use a regular text slash to create fractions: -\begin{opentypeexample} - \fontspec{Hiragino Maru Gothic Pro W4} - 1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\ - \addfontfeature{Fractions=On} - 1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\ -\end{opentypeexample} -Some (Asian fonts predominantly) also provide for the -\opt{Alternate} feature: -\begin{opentypeexample} - \fontspec{Hiragino Maru Gothic Pro W4} - 1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\ - \addfontfeature{Fractions=Alternate} - 1/2 \quad 1/4 \quad 5/6 \quad 13579/24680 \\ -\end{opentypeexample} -The \pkg{xltxtra} package provides a \cmd\vfrac\ command -for creating arbitrary so-called `vulgar' fractions: -\begin{opentypeexample} - \fontspec{Warnock Pro} - \vfrac{13579}{24680} -\end{opentypeexample} - - -\subsection{Variants} -The \feat{Variant} feature takes a single numerical input for -choosing different alphabetic shapes. Don't mind my fancy example -\texttt{:)} I'm just looping through the nine~(\,!\,) variants of -Zapfino. -\setexsize\Huge -\def\firstline{2}\def\lastline{9} -\begin{aatexample} - \rule{0pt}{2cm}% - \newcounter{var}\newcounter{trans} - \whiledo{\value{var}<9}{% - \stepcounter{trans}% - \fontspec[Variant=\thevar, - Colour=005599\thetrans\thetrans]{Zapfino}% - \makebox[0.75\width]{d}% - \stepcounter{var}} -\end{aatexample} -For OpenType fonts, \opt{Variant} selects a `Stylistic Set', again -specified numerically. I don't have a font to -demonstrate this feature with, unfortunately. -See \vref{sec:newfeatures} for a way to assign names to variants, -which should be done on a per-font basis. - -\subsection{Alternates} - -Selection of \feat{Alternate}s \emph{again} -must be done numerically. Here's an example with an AAT font: -\begin{aatexample} - \fontspec[Alternate=0]{Hoefler Text Italic} - Sphinx Of Black Quartz, {\scshape Judge My Vow} \\ - \fontspec[Alternate=1]{Hoefler Text Italic} - Sphinx Of Black Quartz, {\scshape Judge My Vow} -\end{aatexample} -See \vref{sec:newfeatures} for a way to assign names to alternates, -which should be done on a per-font basis. - -For OpenType fonts, this option is used to access numerical -variations of the raw |salt| feature \new{v1.18}. I can't show an example, -but here's how it would be used: -\begin{verbatim} - \fontspec[Alternate=1]{Garamond Premier Pro} -\end{verbatim} -Numbering starts from |0| for the first stylistic alternate. -Note that the \texttt{Style=Alternate} option is equivalent -to \texttt{Alternate=0} to access the default case. - -\subsection{Style} -The options of the \feat{Style} feature -are defined in AAT as one of the following: \opt{Display}, -\opt{Engraved}, \opt{IlluminatedCaps}, \opt{Italic}, -\opt{Ruby},\footnotemark\ \opt{TallCaps}, or \opt{TitlingCaps}. -\footnotetext{`Ruby' refers to a small optical size, used in -Japanese typography for annotations.} -\let\savemark\@thefnmark - -ICU supported options are \opt{Alternate}, -\opt{Italic}, \opt{Historic}, -\opt{Ruby},\footnotemark[\savemark] -\opt{Swash}, \opt{TitlingCaps}, \opt{HorizontalKana}, and \opt{VerticalKana}. -\setexsize\Large - \begin{opentypeexample} - \fontspec{Warnock Pro} - K Q R k v w y \\ - \addfontfeature{Style=Alternate} - K Q R k v w y -\end{opentypeexample} -Note the occasional inconsistency with which font features are labelled; a long-tailed `Q' could turn up anywhere! -\setexsize\Large -\begin{opentypeexample} - \fontspec{Adobe Jenson Pro} - M Q Z \\ - \addfontfeature{Style=Historic} - M Q Z -\end{opentypeexample} -\setexsize\Large -\begin{example} - \fontspec{Adobe Garamond Pro} - TITLING CAPS \\ - \addfontfeature{Style=TitlingCaps} - TITLING CAPS -\end{example} -Two features in one example; \opt{Italic} affects the Latin text and \opt{Ruby} the Japanese: -\setexsize\Large -\begin{opentypeexample} - \fontspec{Hiragino Mincho Pro W3} - Latin ようこそ ワカヨタレソ \\ - \addfontfeature{Style={Italic, Ruby}} - Latin ようこそ ワカヨタレソ -\end{opentypeexample} -Note the difference here between the default and the horizontal style kana: -\setexsize\Large -\begin{aatexample} - \fontspec{Hiragino Mincho Pro} - ようこそ ワカヨタレソ \\ - {\addfontfeature{Style=HorizontalKana} - ようこそ ワカヨタレソ} \\ - {\addfontfeature{Style=VerticalKana} - ようこそ ワカヨタレソ} -\end{aatexample} - -\subsection{Diacritics} -Diacritics refer to characters that include extra marks that usually -indicate pronunciation; \eg, accented letters. You may either choose -to \opt{Show}, \opt{Hide} or \opt{Decompose} them in AAT fonts. - -Some fonts include |O/| \etc\ as diacritics for writing \O. You'll -want to turn this feature off (imagine typing |hello/goodbye| and -getting `hell\o goodbye' instead!) by decomposing the two characters -in the diacritic into the ones you actually -want. I would recommend using -the proper \TeX\ input conventions for obtaining such characters -instead. - -The \opt{Hide} option is for Arabic-like fonts which may be -displayed either with or without vowel markings. - -No options for OpenType fonts. - -\subsection{Kerning}\label{sec:kerning} -Well designed fonts contain kerning information that controls the spacing between -letter pairs, on an individual basis. The \feat{Kerning} feature provides -options to control this, for OpenType fonts only. - -The options provided for now are \opt{On}, \opt{Off} (don't know why you'd want to), and \opt{Uppercase}. -\begin{opentypeexample} - \fontspec{Warnock Pro} - Ta AV \\ - \fontspec[Kerning=Off]{Warnock Pro} - Ta AV -\end{opentypeexample} - -As briefly mentioned previously at the end of \vref{sec:letters}, -the \opt{Uppercase} option will add a small amount of tracking between uppercase letters: -\begin{opentypeexample} - \fontspec{Warnock Pro} - UPPER-CASE EXAMPLE \\ - \addfontfeature{Kerning=Uppercase} - UPPER-CASE EXAMPLE -\end{opentypeexample} - -\subsection{CJK shape} -There have been many standards for how CJK ideographic -glyphs are `supposed' to look. Some fonts will contain many alternate -glyphs available in order to be able to display these gylphs -correctly in whichever form is appropriate. Both AAT and OpenType -fonts support the following \feat{CJKShape} options - \warn{v1.9}{Was \feat{CharacterShape}, which wasn't very descriptive. - \textbf{No} backwards compatibility.}: -\opt{Traditional}, \opt{Simplified}, \opt{JIS1978}, \opt{JIS1983}, -\opt{JIS1990}, and \opt{Expert}. OpenType also supports the \opt{NLC} option. -\setexsize\LARGE -\begin{opentypeexample} - \fontspec{Hiragino Mincho Pro} - {\addfontfeature{CJKShape=Traditional} - 唖噛躯 妍并訝 } \\ - {\addfontfeature{CJKShape=NLC} - 唖噛躯 妍并訝 } \\ - {\addfontfeature{CJKShape=Expert} - 唖噛躯 妍并訝 } -\end{opentypeexample} - -\subsection{Character width}\label{sec:CharacterWidth} -Many Asian fonts are equipped with variously spaced characters for -shoe-horning into their generally monospaced text. -These are -accessed through the \feat{CharacterWidth} feature. - \note{Apple - seems to be adapting its AAT features in this regard (at least in - the fonts it distributes with \MacOSX) to have a one-to-one - correspondence with the equivalent OpenType features. Previously - AAT was more fine grained, but naturally they're not documenting - their AAT tables any more, so if the following features don't work - for a specific font let me know and I'll try and see if anything - can be salvaged from the situation.} - \warn{v1.9}{Was \feat{TextSpacing}, which wasn't very descriptive. - \textbf{No} backwards compatibility.} -For now, OpenType and AAT -share the same six options for this feature: \opt{Proportional}, -\opt{Full}, \opt{Half}, \opt{Third}, -\opt{Quarter}, \opt{AlternateProportional}, and -\opt{AlternateHalf}. AAT also allows \opt{Default} to return to -whatever was originally specified. - -Japanese alphabetic glyphs (in Hiragana or Katakana) may be typeset -proportionally, to better fit horizontal measures, or monospaced, to -fit into the rigid grid imposed by ideographic typesetting. In this -latter case, there are also half-width forms for squeezing more kana -glyphs (which are less complex than the kanji they are amongst) into -a given block of space. The same features are given to roman letters -in Japanese fonts, for typesetting foreign words in the same style -as the surrounding text. -\begin{opentypeexample} - \def\test{\makebox[2cm][l]{ようこそ}% - \makebox[2.5cm][l]{ワカヨタレソ}% - \makebox[2.5cm][l]{abcdef}} - \fontspec{Hiragino Mincho Pro} - {\addfontfeature{CharacterWidth=Proportional}\test}\\ - {\addfontfeature{CharacterWidth=Full}\test}\\ - {\addfontfeature{CharacterWidth=Half}\test} -\end{opentypeexample} -The same situation occurs with numbers, which are provided in -increasingly illegible compressed forms: -\setexsize\large -\begin{aatexample} - \fontspec[Renderer=AAT]{Hiragino Mincho Pro} - {\addfontfeature{CharacterWidth=Full} - ---12321---}\\ - {\addfontfeature{CharacterWidth=Half} - ---1234554321---}\\ - {\addfontfeature{CharacterWidth=Third} - ---123456787654321---}\\ - {\addfontfeature{CharacterWidth=Quarter} - ---12345678900987654321---} -\end{aatexample} -The option \opt{CharacterWidth=Full} doesn't work with the -default OpenType font renderer (ICU) due to a bug in the Hiragino fonts. - - -\subsection{Annotation} -Various Asian fonts are equipped with a more extensive range of -numbers and numerals in different forms. These are accessed through -the \feat{Annotation} feature with the following options: \opt{Off}, -\opt{Box}, \opt{RoundedBox}, \opt{Circle}, \opt{BlackCircle}, -\opt{Parenthesis}, \opt{Period}, \opt{RomanNumerals}, \opt{Diamond}, -\opt{BlackSquare}, \opt{BlackRoundSquare}, and \opt{DoubleCircle}. -\begin{aatexample} - \fontspec{Hei Regular} - 1 2 3 4 5 6 7 8 9 \\ - \fontspec[Annotation=Circle]{Hei Regular} - 1 2 3 4 5 6 7 8 9 \\ - \fontspec[Annotation=Parenthesis]{Hei Regular} - 1 2 3 4 5 6 7 8 9 \\ - \fontspec[Annotation=Period]{Hei Regular} - 1 2 3 4 5 6 7 8 9 -\end{aatexample} -For OpenType fonts, the only option supported is \opt{On} and \opt{Off}: -\begin{opentypeexample} - \fontspec{Hiragino Maru Gothic Pro} - 1 2 3 4 5 6 7 8 9 \\ - \addfontfeature{Annotation=On} - 1 2 3 4 5 6 7 8 9 -\end{opentypeexample} -I'm not sure if \XeTeX\ can access alternate annotation -forms, even if they exist (as in this case) in the font. - -\subsection{Vertical typesetting} - -\XeTeX\ provides for vertical typesetting simply with the ability to rotate -the individual glyphs as a font is used for typesetting. - -\begin{aatexample} - \fontspec{Hiragino Mincho Pro} - 共産主義者は - - \fontspec[Renderer=AAT,Vertical=RotatedGlyphs]{Hiragino Mincho Pro} - \rotatebox{-90}{共産主義者は}% requires the graphicx package -\end{aatexample} - -No actual provision is made for typesetting top-to-bottom -languages; for an example of how to do this, see the vertical Chinese -example provided in the \XeTeX\ documentation. - -\subsection{AAT \& Multiple Master font axes} \label{sec:mm} - -Multiple Master and AAT font specifications both provide continuous -variation along font parameters. For example, they don't have just -regular and bold weights, they can have any bold weight you like between -the two extremes. - -\opt{Weight}, \opt{Width}, and \opt{OpticalSize} are supported by this -package. Skia, which is distributed with -Mac~OS~X, has two of these variable parameters, allowing for a -demonstration: -\begin{aatexample} - \fontspec[Weight=0.5,Width=3]{Skia} - Really light and extended Skia \\ - \fontspec[Weight=2,Width=0.5]{Skia} - Really fat and condensed Skia -\end{aatexample} -Variations along a multiple master font's optical size axis has been -shown previously in \vref{sec:opticalsize}. - - -\subsection{OpenType scripts and languages}\label{sec:ot} - -When dealing with fonts that include glyphs for various languages, -they may contain different font features for the different character -sets and languages it supports. These may be selected with the -\feat{Script} and \feat{Language} features. The possible options are -tabulated in \vref{tab:ot-scpt} and \vref{tab:ot-lang}, -respectively. When a script or language is requested that is not -supported by the current font, a warning is printed in the console output. - -Because these font features can -change which features are able to be selected for the font, they are selected -by \pkg{fontspec} before all others and will specifically select the \opt{ICU} -renderer for this font, as described in \vref{sec:renderer}. - -\subsubsection{\feat{Script} examples} - -In the following examples, the same font is used to typeset the -verbatim input and the \XeTeX\ output. Because the \opt{Script} is -only specified for the output, the text is rendered incorrectly in -the verbatim input. Many examples of incorrect diacritic spacing as -well as a lack of contextual ligatures and rearrangement can be -seen. Thanks to \name{Jonathan Kew}, \name{Yves Codet} and -\name{Gildas Hamel} for their contributions towards these examples. - -\begingroup\setmonofont{Code2000} -\setverbwidth{0.5\textwidth} -\begin{opentypeexample} - \fontspec[Script=Arabic]{Code2000} - العربي -\end{opentypeexample} -\begin{opentypeexample} - \fontspec[Script=Devanagari]{Code2000} - हिन्दी -\end{opentypeexample} -\begin{opentypeexample} - \fontspec[Script=Bengali]{Code2000} - লেখ -\end{opentypeexample} -\begin{opentypeexample} - \fontspec[Script=Gujarati]{Code2000} - મર્યાદા-સૂચક નિવેદન -\end{opentypeexample} -\begin{opentypeexample} - \fontspec[Script=Malayalam]{Code2000} - നമ്മുടെ പാരബര്യ -\end{opentypeexample} -\begin{opentypeexample} - \fontspec[Script=Gurmukhi]{Code2000} - ਆਦਿ ਸਚੁ ਜੁਗਾਦਿ ਸਚੁ -\end{opentypeexample} -\begin{opentypeexample} - \fontspec[Script=Tamil]{Code2000} - தமிழ் தேடி -\end{opentypeexample} -\begin{opentypeexample} - \fontspec[Script=Hebrew]{Code2000} - רִדְתָּֽהּ -\end{opentypeexample} -\endgroup - -\subsubsection{\feat{Language} examples} - -Vietnamese requires careful diacritic placement: -\begingroup -\setmonofont[Scale=MatchLowercase]{Monaco} -\setexsize\Large -\begin{opentypeexample} - \fontspec{Doulos SIL} - cấp số mỗi \\ - \addfontfeature{Language=Vietnamese} - cấp số mỗi -\end{opentypeexample} -\noindent Moldavian, as a typical example from Ralf Stubner's FPL Neu font: -\setexsize\Large -\begin{opentypeexample} - \fontspec{FPL Neu} - Ş ş Ţ ţ \\ - \addfontfeature{Language=Moldavian} - Ş ş Ţ ţ -\end{opentypeexample} -\endgroup - -\subsubsection{Defining new scripts and languages} - -\DescribeMacro{\newfontscript} -\DescribeMacro{\newfontlanguage} -Further scripts and languages may be added with the \cmd\newfontscript\ -and \cmd\newfontlanguage\ commands. For example, -\begin{Verbatim}[gobble=2] - \newfontscript{Arabic}{arab} - \newfontlanguage{Turkish}{TUR} -\end{Verbatim} -The first argument is the \pkg{fontspec} name, the second the OpenType -definition. The advantage to using these commands rather than \cmd\newfontfeature\ -(see \vref{sec:newfeatures}) is the error-checking that is performed when -the script or language is requested. - -\begin{table}[!hbp] -\def\dup{\makebox[0pt][r]{\textcolor{red}{\P}}}% -\setlength\columnseprule{0pt} - \hrule - \begin{multicols}{4}\setlength\parindent{0pt} - \sffamily\scriptsize - Arabic \par Armenian \par Balinese \par Bengali \par Bopomofo \par Braille \par Buginese \par Buhid \par Byzantine Music \par Canadian Syllabics \par Cherokee \par \dup CJK \par \dup CJK Ideographic \par Coptic \par Cypriot Syllabary \par Cyrillic \par Default \par Deseret \par Devanagari \par Ethiopic \par Georgian \par Glagolitic \par Gothic \par Greek \par Gujarati \par Gurmukhi \par Hangul Jamo \par Hangul \par Hanunoo \par Hebrew \par \dup Hiragana and Katakana \par \dup Kana \par Javanese \par Kannada \par Kharosthi \par Khmer \par Lao \par Latin \par Limbu \par Linear B \par Malayalam \par \dup Math \par \dup Maths \par Mongolian \par Musical Symbols \par Myanmar \par N'ko \par Ogham \par Old Italic \par Old Persian Cuneiform \par Oriya \par Osmanya \par Phags-pa \par Phoenician \par Runic \par Shavian \par Sinhala \par Sumero-Akkadian Cuneiform \par Syloti Nagri \par Syriac \par Tagalog \par Tagbanwa \par Tai Le \par Tai Lu \par Tamil \par Telugu \par Thaana \par Thai \par Tibetan \par Tifinagh \par Ugaritic Cuneiform \par Yi - \end{multicols} - \hrule - \caption{Defined \opt{Script}s for OpenType fonts. Aliased names are shown in adjacent positions marked with red pilcrows ({\sffamily\textcolor{red}{\P}}), defined in \texttt{fontspec.cfg}.} - \label{tab:ot-scpt} -\end{table} - -\begin{table}[p] - \vspace*{-3cm} - \hspace{-3cm} - \begin{minipage}{\linewidth+4cm} - \setlength\columnseprule{0pt} - \hrule - \begin{multicols}{6} - \everypar{\setlength\parindent{0pt}\setlength\hangindent{2em}} - \fontspec{Optima}\footnotesize\raggedright - Abaza \par Abkhazian \par Adyghe \par Afrikaans \par Afar \par Agaw \par Altai \par Amharic \par Arabic \par Aari \par Arakanese \par Assamese \par Athapaskan \par Avar \par Awadhi \par Aymara \par Azeri \par Badaga \par Baghelkhandi \par Balkar \par Baule \par Berber \par Bench \par Bible Cree \par Belarussian \par Bemba \par Bengali \par Bulgarian \par Bhili \par Bhojpuri \par Bikol \par Bilen \par Blackfoot \par Balochi \par Balante \par Balti \par Bambara \par Bamileke \par Breton \par Brahui \par Braj Bhasha \par Burmese \par Bashkir \par Beti \par Catalan \par Cebuano \par Chechen \par Chaha Gurage \par Chattisgarhi \par Chichewa \par Chukchi \par Chipewyan \par Cherokee \par Chuvash \par Comorian \par Coptic \par Cree \par Carrier \par Crimean Tatar \par Church Slavonic \par Czech \par Danish \par Dargwa \par Woods Cree \par German \par Default \par Dogri \par Divehi \par Djerma \par Dangme \par Dinka \par Dungan \par Dzongkha \par Ebira \par Eastern Cree \par Edo \par Efik \par Greek \par English \par Erzya \par Spanish \par Estonian \par Basque \par Evenki \par Even \par Ewe \par French Antillean \par Farsi \par Finnish \par Fijian \par Flemish \par Forest Nenets \par Fon \par Faroese \par French \par Frisian \par Friulian \par Futa \par Fulani \par Ga \par Gaelic \par Gagauz \par Galician \par Garshuni \par Garhwali \par Ge'ez \par Gilyak \par Gumuz \par Gondi \par Greenlandic \par Garo \par Guarani \par Gujarati \par Haitian \par Halam \par Harauti \par Hausa \par Hawaiin \par Hammer-Banna \par Hiligaynon \par Hindi \par High Mari \par Hindko \par Ho \par Harari \par Croatian \par Hungarian \par Armenian \par Igbo \par Ijo \par Ilokano \par Indonesian \par Ingush \par Inuktitut \par Irish \par Irish Traditional \par Icelandic \par Inari Sami \par Italian \par Hebrew \par Javanese \par Yiddish \par Japanese \par Judezmo \par Jula \par Kabardian \par Kachchi \par Kalenjin \par Kannada \par Karachay \par Georgian \par Kazakh \par Kebena \par Khutsuri Georgian \par Khakass \par Khanty-Kazim \par Khmer \par Khanty-Shurishkar \par Khanty-Vakhi \par Khowar \par Kikuyu \par Kirghiz \par Kisii \par Kokni \par Kalmyk \par Kamba \par Kumaoni \par Komo \par Komso \par Kanuri \par Kodagu \par Korean Old Hangul \par Konkani \par Kikongo \par Komi-Permyak \par Korean \par Komi-Zyrian \par Kpelle \par Krio \par Karakalpak \par Karelian \par Karaim \par Karen \par Koorete \par Kashmiri \par Khasi \par Kildin Sami \par Kui \par Kulvi \par Kumyk \par Kurdish \par Kurukh \par Kuy \par Koryak \par Ladin \par Lahuli \par Lak \par Lambani \par Lao \par Latin \par Laz \par L-Cree \par Ladakhi \par Lezgi \par Lingala \par Low Mari \par Limbu \par Lomwe \par Lower Sorbian \par Lule Sami \par Lithuanian \par Luba \par Luganda \par Luhya \par Luo \par Latvian \par Majang \par Makua \par Malayalam Traditional \par Mansi \par Marathi \par Marwari \par Mbundu \par Manchu \par Moose Cree \par Mende \par Me'en \par Mizo \par Macedonian \par Male \par Malagasy \par Malinke \par Malayalam Reformed \par Malay \par Mandinka \par Mongolian \par Manipuri \par Maninka \par Manx Gaelic \par Moksha \par Moldavian \par Mon \par Moroccan \par Maori \par Maithili \par Maltese \par Mundari \par Naga-Assamese \par Nanai \par Naskapi \par N-Cree \par Ndebele \par Ndonga \par Nepali \par Newari \par Nagari \par Norway House Cree \par Nisi \par Niuean \par Nkole \par N'ko \par Dutch \par Nogai \par Norwegian \par Northern Sami \par Northern Tai \par Esperanto \par Nynorsk \par Oji-Cree \par Ojibway \par Oriya \par Oromo \par Ossetian \par Palestinian Aramaic \par Pali \par Punjabi \par Palpa \par Pashto \par Polytonic Greek \par Pilipino \par Palaung \par Polish \par Provencal \par Portuguese \par Chin \par Rajasthani \par R-Cree \par Russian Buriat \par Riang \par Rhaeto-Romanic \par Romanian \par Romany \par Rusyn \par Ruanda \par Russian \par Sadri \par Sanskrit \par Santali \par Sayisi \par Sekota \par Selkup \par Sango \par Shan \par Sibe \par Sidamo \par Silte Gurage \par Skolt Sami \par Slovak \par Slavey \par Slovenian \par Somali \par Samoan \par Sena \par Sindhi \par Sinhalese \par Soninke \par Sodo Gurage \par Sotho \par Albanian \par Serbian \par Saraiki \par Serer \par South Slavey \par Southern Sami \par Suri \par Svan \par Swedish \par Swadaya Aramaic \par Swahili \par Swazi \par Sutu \par Syriac \par Tabasaran \par Tajiki \par Tamil \par Tatar \par TH-Cree \par Telugu \par Tongan \par Tigre \par Tigrinya \par Thai \par Tahitian \par Tibetan \par Turkmen \par Temne \par Tswana \par Tundra Nenets \par Tonga \par Todo \par Turkish \par Tsonga \par Turoyo Aramaic \par Tulu \par Tuvin \par Twi \par Udmurt \par Ukrainian \par Urdu \par Upper Sorbian \par Uyghur \par Uzbek \par Venda \par Vietnamese \par Wa \par Wagdi \par West-Cree \par Welsh \par Wolof \par Tai Lue \par Xhosa \par Yakut \par Yoruba \par Y-Cree \par Yi Classic \par Yi Modern \par Chinese Hong Kong \par Chinese Phonetic \par Chinese Simplified \par Chinese Traditional \par Zande \par Zulu - \end{multicols} - \hspace{4pt} - \hrule - \caption{Defined \opt{Language}s for OpenType fonts. - Note that they are sorted alphabetically \emph{not} - by name but by OpenType tag, which is a little irritating, really.} - \label{tab:ot-lang} - \end{minipage} -\end{table} - -\section{Defining new features} \label{sec:newfeatures} -This package cannot hope to contain every possible font -feature. Three commands are provided for selecting font features -that are not provided for out of the box. If you are using -them a lot, chances are I've left something out, so please let me -know. - -\DescribeMacro{\newAATfeature} -New AAT features may be created with this command:\par -{\centering\cmd\newAATfeature\marg{feature}\marg{option}\marg{feature code}\marg{selector code}\par}\noindent -Use the \XeTeX\ file \path{AAT-info.tex} to obtain the code numbers. For example: -\begin{aatexample} - \newAATfeature{Alternate}{HoeflerSwash}{17}{1} - \fontspec[Alternate=HoeflerSwash]{Hoefler Text Italic} - This is XeTeX by Jonathan Kew. -\end{aatexample} -This command replaces \cmd\newfeaturecode, which is provided -for backwards compatibility via \texttt{fontspec.cfg}. - -\DescribeMacro{\newICUfeature} -New OpenType features may be created with this command:\par -{\centering\cmd\newICUfeature\marg{feature}\marg{option}\marg{feature tag}\par} -In the following example, the Moldavian language (see \vref{sec:ot}) must be activated to achieve the effect shown. -\setexsize\Large -\begingroup -\setmonofont[Scale=MatchLowercase]{Monaco} -\begin{opentypeexample} - \newICUfeature{Style}{NoLocalForms}{-locl} - \fontspec[Language=Moldavian]{FPL Neu} - Ş ş Ţ ţ \\ - \addfontfeature{Style=NoLocalForms} - Ş ş Ţ ţ -\end{opentypeexample} -\endgroup - -\DescribeMacro{\newfontfeature} -In case the above commands do not accommodate the desired font feature -(perhaps a new \XeTeX\ feature that \pkg{fontspec} hasn't been updated -to support), a command is provided to pass arbitrary input into the -font selection string:\par -{\centering\cmd{\newfontfeature}\marg{name}\marg{input string}\par} - -For example, Zapfino -contains the feature `Avoid d-collisions'. To access it -with this package, you could do the following: -\begin{aatexample} - \newfontfeature{AvoidD}{Special=Avoid d-collisions} - \newfontfeature{NoAvoidD}{Special=!Avoid d-collisions} - \fontspec[AvoidD,Variant=1]{Zapfino} - sockdolager rubdown \\ - \fontspec[NoAvoidD,Variant=1]{Zapfino} - sockdolager rubdown -\end{aatexample} - -The advantage to using the \cmd\newAATfeature\ and \cmd\newICUfeature\ -commands is that they check if the selected font actually contains the font -feature. By contrast, \cmd\newfontfeature\ will not give a warning -for improper input. - -\subsection{Renaming existing features \& options}\label{sec:aliasfontfeature} - -\DescribeMacro{\aliasfontfeature} -If you don't like the name of a particular font feature, -it may be aliased to another with the -\cs{aliasfontfeature}\marg{existing name}\marg{new name} command: -\begin{aatexample} - \aliasfontfeature{ItalicFeatures}{IF} - \fontspec[IF = {Alternate=1}]{Hoefler Text} - Roman Letters \itshape And Swash -\end{aatexample} - -Spaces in feature (and option names, see below) \emph{are} allowed. (You may have -noticed this already in the lists of OpenType scripts and languages). - -\DescribeMacro{\aliasfontfeatureoption} -If you wish to change the name of a font feature option, -it can be aliased to another with the command -\cs{aliasfontfeatureoption}\marg{font feature}\marg{existing name}\marg{new name}: -\begin{opentypeexample} - \aliasfontfeature{VerticalPosition}{Vert Pos} - \aliasfontfeatureoption{VerticalPosition}{ScientificInferior}{Sci Inf} - \fontspec[Vert Pos=Sci Inf]{Warnock Pro} - Scientific Inferior: 12345 -\end{opentypeexample} -This example demonstrates an important point: when aliasing the feature -options, the \emph{original} feature name must be used when declaring -to which feature the option belongs. - -Only feature options that exist as sets of fixed strings may be altered in -this way. That is, \opt{Proportional} can be aliased to \opt{Prop} in the -\feat{Letters} feature, but \opt{550099BB} cannot be substituted for \opt{Purple} -in a \feat{Colour} specification. For this type of thing, the \cmd\newfontfeature\ -command should be used to declare a new, \eg, \feat{PurpleColour} feature: -\begin{Verbatim}[gobble=2] - \newfontfeature{PurpleColour}{color=550099BB} -\end{Verbatim} - -\subsection{Going behind \pkg{fontspec}'s back} -Expert users may wish not to use \pkg{fontspec}'s feature handling at all, -while still taking advantage of its \LaTeX\ font selection conveniences. The -\feat{RawFeature} \new{v1.13} font feature allows literal \XeTeX\ font feature selection -when you happen to have the OpenType feature tag memorised. -\begin{example} - \fontspec[RawFeature=+smcp]{FPL Neu} - FPL Neu small caps -\end{example} -Multiple features can either be included in a single declaration:\par -{\centering|[RawFeature=+smcp;+onum]|\par} -\noindent or with multiple declarations:\par -{\centering|[RawFeature=+smcp, RawFeature=+onum]|\par} - - -%\section{Programming interface} -%This is the beginning of some work to provide some hooks that use -%\pkg{fontspec} for various macro programming purposes. - -%In some cases, it is useful to know what the \LaTeX\ font family -%of a specific \pkg{fontspec} font is. After a \cmd\fontspec-like -%command, this is stored inside the \cmd\zf@family\ macro. -%Otherwise, \LaTeX's own \cmd\f@family\ macro can be useful here, -%too. - -\StopEventually{} - -\clearpage -\part{fontspec.sty} - -\DocInput{fontspec.dtx} -\end{document} -%</driver> -% -%<*fontspec> -\ProvidesPackage{fontspec} - [2008/08/09 v1.18 Advanced font selection for XeLaTeX] -%</fontspec> -% -% \fi -% -% \section{Implementation} -% Herein lie the implementation details of this package. Welcome! -% It's my first. -% -% \changes{v1.0}{2004/10/16}{Initial version.} -% \changes{v1.1}{2004/10/18}{Name change to fontspec.} -% \changes{v1.2}{2004/10/22}{Initial OpenType support.} -% \changes{v1.3}{2004/10/25}{More OpenType support.} -% -% For some reason, I decided to prefix all the package internal -% command names and variables with |zf|. I don't know why I chose -% those letters, but I guess I just liked the look/feel of them -% together at the time. (Possibly inspired by Hermann \emph{Z}ap\emph{f}.) -% -% \iffalse -%<*fontspec> -% \fi -% Only proceed if it is \XeTeX\ that is doing the typesetting. -% \begin{macrocode} -\RequirePackage{ifxetex} -\RequireXeTeX -% \end{macrocode} -% \subsection{Bits and pieces} -% \paragraph{Conditionals} -% \begin{macrocode} -\newif\ifzf@firsttime -\newif\ifzf@nobf -\newif\ifzf@noit -\newif\ifzf@nosc -\newif\ifzf@tfm -\newif\ifzf@atsui -\newif\ifzf@icu -\newif\ifzf@mm -% \end{macrocode} -% For dealing with legacy maths -% \begin{macrocode} -\newif\ifzf@math@euler -\newif\ifzf@math@lucida -\newif\ifzf@package@euler@loaded -% \end{macrocode} -% For package options: -% \begin{macrocode} -\newif\if@zf@configfile -\newif\if@zf@euenc -\newif\if@zf@math -% \end{macrocode} -% \paragraph{Counters} -% \begin{macrocode} -\newcount\c@zf@newff -\newcount\c@zf@index -\newcount\c@zf@script -\newcount\c@zf@language -% \end{macrocode} -% \pkg{fontspec} shorthands: -% \begin{macrocode} -\def\zf@nl{^^J\space\space\space\space} -\newcommand\zf@PackageError[2]{% - \PackageError{fontspec}{{\zf@nl #1}^^J}{#2}} -\newcommand\zf@PackageWarning[1]{% - \PackageWarning{fontspec}{\zf@nl #1^^JThis warning occured}} -\newcommand\zf@PackageInfo[1]{\PackageInfo{fontspec}{#1}} -% \end{macrocode} -% -% \begin{macro}{\def@cx} -% \begin{macro}{\gdef@cx} -% \begin{macro}{\let@cc} -% \LaTeX3--like syntax for various low level commands. -% Makes life much easier; can't wait for the official interface |:)| -% \begin{macrocode} -\providecommand\def@cx[2]{\expandafter\edef\csname#1\endcsname{#2}} -\providecommand\gdef@cx[2]{\expandafter\xdef\csname#1\endcsname{#2}} -\providecommand\let@cc[2]{% - \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \subsection{Option processing} -% -% \begin{macrocode} -\DeclareOption{cm-default}{\@zf@euencfalse} -\DeclareOption{lm-default}{\@zf@euenctrue} -\DeclareOption{math}{\@zf@mathtrue} -\DeclareOption{no-math}{\@zf@mathfalse} -\DeclareOption{config}{\@zf@configfiletrue} -\DeclareOption{no-config}{\@zf@configfilefalse} -\DeclareOption{noconfig}{\@zf@configfilefalse} -\DeclareOption{quiet}{% - \let\zf@PackageWarning\zf@PackageInfo - \let\zf@PackageInfo\@gobble} -\DeclareOption{silent}{% - \let\zf@PackageWarning\@gobble - \let\zf@PackageInfo\@gobble} -\ExecuteOptions{config,lm-default,math} -\ProcessOptions* -% \end{macrocode} -% \changes{v1.12}{2006/10/24}{Package option for disabling the EU1 encoding.} -% \changes{v1.17}{2008/02/13}{\texttt{[quiet]} now suppresses warnings.} -% \changes{v1.17}{2008/02/13}{New package option \texttt{[silent]}.} -% Only proceed if it is \XeTeX\ that is doing the typesetting: -% \begin{macrocode} -\RequirePackage{ifxetex} -\RequireXeTeX -% \end{macrocode} -% -% \subsection{Packages} -% We require the \pkg{calc} package for autoscaling and a recent version of the -% \pkg{xkeyval} package for option processing. -% \begin{macrocode} -\RequirePackage{calc} -\RequirePackage{xkeyval}[2005/05/07] -% \end{macrocode} -% \changes{v1.6}{2005/03/03}{\textsf{utf8accents} is no longer loaded -% by this package!} -% -% \subsection{Encodings} -% Frank Mittelbach has recommended using the `\texttt{EU}$x$' family of font encodings -% to experiment with unicode. -% Now that \XeTeX\ can find fonts in the |texmf| tree, the Latin Modern OpenType fonts -% can be used as the defaults. See the |euenc| collection of files for how this is implemented. -% \begin{macrocode} -\if@zf@euenc - \def\zf@enc{EU1} - \renewcommand{\rmdefault}{lmr} - \renewcommand{\sfdefault}{lmss} - \renewcommand{\ttdefault}{lmtt} - \RequirePackage[\zf@enc]{fontenc} -\else - \def\zf@enc{U} - \let\encodingdefault\zf@enc -\fi -\let\UTFencname\zf@enc -% \end{macrocode} -% \changes{v1.12}{2006/08/21}{Finally, use the \texttt{EU1} font encoding.} -% Dealing with a couple of the problems introduced by \pkg{babel}: -% \begin{macrocode} -\let\cyrillicencoding\zf@enc -\let\latinencoding\zf@enc -\g@addto@macro\document{% - \let\cyrillicencoding\zf@enc - \let\latinencoding\zf@enc} -% \end{macrocode} -% That latin encoding definition is repeated to suppress font warnings. -% Something to do with \cmd\select@language\ ending up in the \texttt{.aux} -% file which is read at the beginning of the document. -% -% \changes{v1.10}{2006/05/04}{Some \pkg{babel} encoding problems resolved.} -% -% -% -% \subsection{User commands}\label{sec:codeuser} -% This section contains the definitions of the commands detailed in -% the user documentation. Only the `top level' definitions of the -% commands are contained herein; they all use or define macros which -% are defined or used later on in \vref{sec:codeinternal}. -% -% \subsubsection{Font selection} -% \begin{macro}{\fontspec} -% This is the main command of the package that -% selects fonts with various features. It takes two arguments: the -% Mac OS X font name and the optional requested features of that -% font. It simply runs \cs{zf@fontspec}, which takes the same -% arguments as the top level macro and puts the new-fangled font -% family name into the global \cmd{\zf@family}. Then this new font -% family is selected. -% \begin{macrocode} -\newcommand*\fontspec[2][]{% - \zf@fontspec{#1}{#2}% - \fontfamily\zf@family\selectfont - \ignorespaces} -% \end{macrocode} -% \changes{v1.6}{2005/01/25}{Removed \cs{zf@currfont} (unnecessary)} -% \changes{v1.9}{2005/12/14}{Added \cs{ignorespaces} to make it invisible.} -% \end{macro} -% -% \begin{macro}{\setmainfont} -% \begin{macro}{\setsansfont} -% \begin{macro}{\setmonofont} -% The following three macros perform equivalent operations setting -% the default font (using \cs{let} rather than \cs{renewcommand} -% because \cs{zf@family} will change in the future) for a -% particular family: `roman', sans serif, or typewriter -% (monospaced). I end them with |\normalfont| so that if they're -% used in the document, the change registers immediately. -% \begin{macrocode} -\newcommand*\setmainfont[2][]{% - \zf@fontspec{#1}{#2}% - \let\rmdefault\zf@family - \normalfont} -\let\setromanfont\setmainfont -\newcommand*\setsansfont[2][]{% - \zf@fontspec{#1}{#2}% - \let\sfdefault\zf@family - \normalfont} -\newcommand*\setmonofont[2][]{% - \zf@fontspec{#1}{#2}% - \let\ttdefault\zf@family - \normalfont} -% \end{macrocode} -% \end{macro} \end{macro} -% \changes{v1.1}{2004/10/18}{Implemented (with friends).} -% \changes{v1.6}{2005/01/25}{Changed \cs{rmdefault}, etc., assigning to use \cs{let} directly.} -% \end{macro} -% -% \begin{macro}{\setmathrm} -% \begin{macro}{\setmathsf} -% \begin{macro}{\setboldmathrm} -% \begin{macro}{\setmathtt} -% These commands are analogous to \cmd\setromanfont\ and others, -% but for selecting the font used for \cmd\mathrm, \etc. They -% can only be used in the preamble of the -% document. \cmd\setboldmathrm\ is used for specifying which -% fonts should be used in \cmd\boldmath. -% \begin{macrocode} -\newcommand*\setmathrm[2][]{% - \zf@fontspec{#1}{#2}% - \let\zf@rmmaths\zf@family} -\newcommand*\setboldmathrm[2][]{% - \zf@fontspec{#1}{#2}% - \let\zf@rmboldmaths\zf@family} -\newcommand*\setmathsf[2][]{% - \zf@fontspec{#1}{#2}% - \let\zf@sfmaths\zf@family} -\newcommand*\setmathtt[2][]{% - \zf@fontspec{#1}{#2}% - \let\zf@ttmaths\zf@family} -\@onlypreamble\setmathrm -\@onlypreamble\setboldmathrm -\@onlypreamble\setmathsf -\@onlypreamble\setmathtt -% \end{macrocode} -% If the commands above are not executed, then \cmd\rmdefault\ (\etc) -% will be used. -% \begin{macrocode} -\def\zf@rmmaths{\rmdefault} -\def\zf@sfmaths{\sfdefault} -\def\zf@ttmaths{\ttdefault} -% \end{macrocode} -% \end{macro} \end{macro} \end{macro} -% \changes{v1.8}{2005/07/04}{Implemented (with friends).} -% \end{macro} -% -% \begin{macro}{\newfontfamily} -% \begin{macro}{\newfontface} -% This macro takes the arguments of \cs{fontspec} with a prepended -% \meta{instance cmd} (code for middle optional argument generated -% by \name{Scott Pakin}'s \textsf{newcommand.py}). This command is used -% when a specific font instance needs to be referred to repetitively -% (\eg, in a section heading) since continuously calling -% \cs{zf@fontspec} is inefficient because it must parse the -% option arguments every time. -% -% \cs{zf@fontspec} defines a font family and saves its name in -% \cs{zf@family}. This family is then used in a typical NFSS \cmd\fontfamily\ -% declaration, saved in the macro name specified. -% \begin{macrocode} -\newcommand*\newfontfamily[1]{% - \@ifnextchar[{\newfontfamily@i#1}{\newfontfamily@i#1[]}} -\def\newfontfamily@i#1[#2]#3{% - \zf@fontspec{#2}{#3}% - \edef\@tempa{% - \noexpand\DeclareRobustCommand\noexpand#1 - {\noexpand\fontfamily{\zf@family}\noexpand\selectfont}}% - \@tempa} -% \end{macrocode} -% \cmd\newfontface\ uses an undocumented feature of the \feat{BoldFont} -% feature; if its argument is empty (\ie, |BoldFont={}|), then no bold -% font is searched for. -% \begin{macrocode} -\newcommand*\newfontface[1]{% - \@ifnextchar[{\newfontface@i#1}{\newfontface@i#1[]}} -\def\newfontface@i#1[#2]#3{% - \zf@fontspec{BoldFont={},ItalicFont={},SmallCapsFont={},#2}{#3}% - \edef\@tempa{% - \noexpand\DeclareRobustCommand\noexpand#1 - {\noexpand\fontfamily{\zf@family}\noexpand\selectfont}}% - \@tempa} -% \end{macrocode} -% \changes{v1.6}{2005/01/02}{Implemented.} -% \changes{v1.11}{2006/08/01}{Name change from \cmd\newfontfamily.} -% \end{macro} -% \end{macro} -% -% \subsubsection{Font feature selection} -% -% \begin{macro}{\defaultfontfeatures} -% This macro takes one argument that consists of all of feature -% options that will be applied by default to all subsequent -% \cs{fontspec}, et al., commands. It stores its value in -% \cs{zf@default@options} (initialised empty), which is -% concatenated with the individual macro choices in the -% \cs{zf@get@feature@requests} macro. -% \begin{macrocode} -\newcommand*\defaultfontfeatures[1]{\def\zf@default@options{#1,}} -\let\zf@default@options\@empty -% \end{macrocode} -% \changes{v1.3}{2004/10/25}{Implemented.} -% \changes{v1.4}{2004/11/25}{Name changed from \cs{setdefaultoptions}.} -% \end{macro} -% -% -% -% \begin{macro}{\addfontfeatures} -% In order to be able to extend the feature selection of -% a given font, two things need to be known: the currently selected -% features, and the currently selected font. Every time a font -% family is created, this information is saved inside a control -% sequence with the name of the font family itself. -% -% This macro extracts this information, then appends the requested -% font features to add to the already existing ones, and calls the -% font again with the top level \cs{fontspec} command. -% -% The default options are \emph{not} applied (which is why -% \cs{zf@default@options} is emptied inside the group; this is allowed -% as \cmd\zf@family\ is globally defined in \cmd\zf@fontspec), so this -% means that the only added features to the font are strictly those -% specified by this command. -% -% \cs{addfontfeature} is defined as an alias, as I found that I -% often typed this instead when adding only a single font feature. -% \begin{macrocode} -\newcommand*\addfontfeatures[1]{% - \ifcsname zf@family@fontdef\f@family\endcsname - \begingroup - \let\zf@default@options\@empty - \edef\@tempa{% - \noexpand\zf@fontspec - {\csname zf@family@options\f@family\endcsname,#1}% - {\csname zf@family@fontname\f@family\endcsname}}% - \@tempa - \endgroup - \fontfamily\zf@family\selectfont - \else - \zf@PackageWarning{% - \protect\addfontfeature (s) ignored;\zf@nl - it cannot be used with a font that wasn't selected by fontspec.}% - \fi - \ignorespaces} -\let\addfontfeature\addfontfeatures -% \end{macrocode} -% \changes{v1.5}{2004/11/29}{Implemented.} -% \changes{v1.6}{2005/02/03}{Removed \cs{relax}ing of temporary macros.} -% \changes{v1.9}{2005/12/14}{Added \cs{ignorespaces} to make it invisible.} -% \changes{v1.9}{2005/12/14}{Changed \cs{fontspec} call to \cs{@fontspec} so that \cs{ignorespaces} isn't called unnecessarily.} -% \changes{v1.9}{2005/12/15}{Removed space in \texttt{, \#1}; can't believe I made this mistake again!} -% \changes{v1.10}{2006/04/14}{Saved family information macro changes.} -% \changes{v1.12}{2006/10/31}{Now use grouping to restore \cmd\zf@default@option\ change.} -% \end{macro} -% -% -% \subsubsection{Defining new font features} -% -% \begin{macro}{\newfontfeature} -% \cs{newfontfeature} takes two arguments: the name of the feature -% tag by which to reference it, and the string that is used to -% select the font feature. It uses a counter to keep track of the -% number of new features introduced; every time a new feature is -% defined, a control sequence is defined made up of the -% concatenation of |+zf-| and the new feature tag. This long-winded -% control sequence is then called upon to update the font family -% string when a new instance is requested. -% \begin{macrocode} -\newcommand*\newfontfeature[2]{% - \stepcounter{zf@newff}% - \def@cx{+zf-#1}{+zf-\the\c@zf@newff}% - \define@key[zf]{options}{#1}[]{% - \zf@update@family{\csname+zf-#1\endcsname}% - \zf@update@ff{#2}}} -% \end{macrocode} -% \changes{v1.3}{2004/10/25}{Implemented.} -% \changes{v1.6}{2005/01/25}{\textsf{newff} counter now uses LaTeX -% methods rather than primitive TeX. I don't know if there is any -% advantage to this.} -% \end{macro} -% -% -% \begin{macro}{\newAATfeature} -% This command assigns a new AAT feature by its code (|#2|,|#3|) to a new name (|#1|). -% Better than \cmd\newfontfeature\ because it checks if the feature exists in the -% font it's being used for. -% \begin{macrocode} -\newcommand*\newAATfeature[4]{% - \unless\ifcsname zf@options@#1\endcsname - \zf@define@font@feature{#1}% - \fi - \key@ifundefined[zf]{#1}{#2}{}{% - \zf@PackageWarning{Option '#2' of font feature '#1' overwritten.}}% - \zf@define@feature@option{#1}{#2}{#3}{#4}{}} -% \end{macrocode} -% \changes{v1.3}{2004/10/25}{Implemented.} -% \changes{v1.9}{2006/02/12}{Replacement for \cmd\newfeaturecode.} -% \end{macro} -% -% \begin{macro}{\newICUfeature} -% This command assigns a new OpenType feature by its abbreviation (|#2|) to a new name (|#1|). -% Better than \cmd\newfontfeature\ because it checks if the feature exists in the -% font it's being used for. -% \begin{macrocode} -\newcommand*\newICUfeature[3]{% - \unless\ifcsname zf@options@#1\endcsname - \zf@define@font@feature{#1}% - \fi - \key@ifundefined[zf]{#1}{#2}{}{% - \zf@PackageWarning{Option '#2' of font feature '#1' overwritten.}}% - \zf@define@feature@option{#1}{#2}{}{}{#3}} -% \end{macrocode} -% \changes{v1.9}{2006/02/12}{Implemented.} -% \end{macro} -% -% -% \begin{macro}{\aliasfontfeature} -% \begin{macro}{\aliasfontfeatureoption} -% User commands for renaming font features and font feature options. -% Provided I've been consistent, they should work for everything. -% \begin{macrocode} -\newcommand*\aliasfontfeature[2]{\multi@alias@key{#1}{#2}} -\newcommand*\aliasfontfeatureoption[3]{% - \keyval@alias@key[zf@feat]{#1}{#2}{#3}} -% \end{macrocode} -% \changes{v1.9}{2005/12/09}{Implemented.} -% \end{macro} -% \changes{v1.9}{2005/12/09}{Implemented.} -% \end{macro} -% -% \begin{macro}{\newfontscript} -% Mostly used internally, but also possibly useful for users, to define new OpenType -% `scripts', mapping logical names to OpenType script tags. -% Iterates though the scripts in the selected font to check that it's a valid -% feature choice, and then prepends the (\XeTeX) \cmd\font\ feature string with the appropriate -% script selection tag. -% \begin{macrocode} -\newcommand*\newfontscript[2]{% - \define@key[zf@feat]{Script}{#1}[]{% - \zf@check@ot@script{#2}% - \if@tempswa - \global\c@zf@script\@tempcnta\relax - \xdef\zf@script@name{#1}% - \xdef\zf@family@long{\zf@family@long+script=#1}% - \xdef\zf@pre@ff{script=#2,\zf@pre@ff}% - \else - \zf@PackageWarning{Font \fontname\zf@basefont\space does not contain script '#1'}% - \fi}} -% \end{macrocode} -% \changes{v1.9}{2006/02/12}{Implemented.} -% \changes{v1.11}{2006/08/12}{Fixed \cmd\c@zf@script\ setting not being global.} -% \end{macro} -% -% \begin{macro}{\newfontlanguage} -% Mostly used internally, but also possibly useful for users, to define new OpenType -% `languages', mapping logical names to OpenType language tags. -% Iterates though the languages in the selected font to check that it's a valid -% feature choice, and then prepends the (\XeTeX) \cmd\font\ feature string with the appropriate -% language selection tag. -% \begin{macrocode} -\newcommand*\newfontlanguage[2]{% - \define@key[zf@feat]{Lang}{#1}[]{% - \zf@check@ot@lang{#2}% - \if@tempswa - \global\c@zf@language\@tempcnta\relax - \xdef\zf@language@name{#1}% - \xdef\zf@family@long{\zf@family@long+lang=#1}% - \xdef\zf@pre@ff{\zf@pre@ff language=#2,}% - \else - \zf@PackageWarning{% - Font \fontname\zf@basefont\space does not contain - language '#1' for script '\zf@script@name'}% - \fi}} -% \end{macrocode} -% \changes{v1.9}{2006/02/12}{Implemented.} -% \changes{v1.11}{2006/08/12}{Fixed \cmd\c@zf@language\ setting not being global.} -% \end{macro} -% -% \subsection{Internal macros}\label{sec:codeinternal} -% -% \begin{macro}{\zf@fontspec} -% This is the command that defines font families for use, the underlying -% procedure of all \cmd\fontspec-like commands. Given a -% list of font features (|#1|) for a requested font (|#2|, stored -% in \cs{zf@fontname} globally for the -% \cs{zf@make@aat@feature@string} macro), it will define an NFSS -% family for that font and put the family name into \cs{zf@family}. -% -% This macro does its processing inside a group, but it's a bit worthless coz -% there's all sorts of \cmd\global\ action going on. Pity. Anyway, lots of things -% are branched out for the pure reason of splitting -% the code up into logical chunks. Some of it is never even re-used, so it -% all might be a bit obfuscating. (\Eg, \cmd\zf@init\ and \cmd\zf@set@font@type.) -% -% First off, initialise some bits and pieces and run the |preparse| feature -% processing. This catches font features such as |Renderer| that can change -% the way subsequent features are processed. All font features that `slip through' -% this stage are saved in the \cmd\zf@font@feat\ macro for future processing. -% \begin{macrocode} -\newcommand*\zf@fontspec[2]{% - \begingroup - \zf@init - \edef\zf@fontname{#2}% - \let\zf@family@long\zf@fontname - \setkeys*[zf]{prepreparse}{#1}% - \let\zf@up\zf@fontname - \edef\@tempa{\noexpand\setkeys*[zf]{preparse}{\XKV@rm}}\@tempa - \let\zf@fontname\zf@up - \let\zf@font@feat\XKV@rm -% \end{macrocode} -% Now check if the font is to be rendered with ATSUI or ICU. This will either -% be automatic (based on the font type), or specified by the user via a font feature. -% If automatic, the \cmd\zf@suffix\ macro will still be empty (other suffices that could -% be added will be later in the feature processing), and if it is indeed still empty, -% assign it a value so that the other weights of the font are specifically loaded with the -% same renderer. This fixes a bug in v1.10 for a mishmash of Lucida fonts. -% \begin{macrocode} - \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt - \unless\ifzf@icu - \zf@set@font@type - \fi - \ifx\zf@suffix\@empty - \ifzf@atsui - \def\zf@suffix{/AAT}% - \else - \ifzf@icu - \def\zf@suffix{/ICU}% - \fi - \fi - \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt - \fi -% \end{macrocode} -% Now convert the remaining requested features to font definition -% strings. This is performed with \cs{zf@get@feature@requests}, in -% which \cs{setkeys} retrieves the requested font features and -% processes them. To build up the complex family name, it -% concatenates each font feature with the family name of the -% font. So since \cs{setkeys} is run more than once (since different -% font faces may have different feature names), we only want the -% complex family name to be built up once, hence the \cs{zf@firsttime} -% conditionals. -% -% In the future, this will be replaced by a dedicated \texttt{makefamily} -% \pkg{xkeyval} \cmd\setkeys\ declaration. Probably. -% \begin{macrocode} - \zf@firsttimetrue - \zf@get@feature@requests{\zf@font@feat}% - \zf@firsttimefalse -% \end{macrocode} -% Now we have a unique (in fact, too unique!) string that contains -% the family name and every option in abbreviated form. This is used -% with a counter to create a simple NFSS family name for the font we're -% selecting. -% -% The font name is fully expanded, in case it's defined in terms of macros, before having its spaces zapped. -% \begin{macrocode} - \unless\ifcsname zf@UID@\zf@family@long\endcsname - \edef\@tempa{#2}% - \ifcsname c@zf@famc@\@tempa\endcsname - \expandafter\stepcounter\else - \expandafter\newcounter\fi - {zf@famc@\@tempa}% - \gdef@cx{zf@UID@\zf@family@long}{% - \expandafter\expandafter\expandafter - \zap@space\expandafter\@tempa\space\@empty - (\expandafter\the\csname c@zf@famc@\@tempa\endcsname)}% - \fi - \xdef\zf@family{\@nameuse{zf@UID@\zf@family@long}}% -% \end{macrocode} -% \changes{v1.18}{2008/07/12}{Fully expand the font name (in case it's a macro) before zapping the space in its name in the \LaTeX\ font family.} -% -% Now that we have the family name, we -% can check to see if the family has already been defined, and if not, -% do so. Once the family name is created, use it to create global -% macros to save the user -% string of the requested options and font name, primarily for use with -% \cs{addfontfeatures}. -% \begin{macrocode} - \unless\ifcsname zf@family@fontname\zf@family\endcsname - \zf@PackageInfo{Defining font family for '#2' - with options [\zf@default@options #1]}% - \gdef@cx{zf@family@fontname\zf@family}{\zf@fontname}% - \gdef@cx{zf@family@options\zf@family}{\zf@default@options #1}% - \gdef@cx{zf@family@fontdef\zf@family} - {\zf@fontname\zf@suffix:\zf@pre@ff\zf@ff}% -% \end{macrocode} -% Next the font family and its shapes are defined in the NFSS. -% -% All NFSS specifications take their default values, so if any of them -% are redefined, the shapes will be selected to fit in with the -% current state. For example, if \cmd\bfdefault\ is redefined to |b|, all -% bold shapes defined by this package will also be assigned to |b|. -% -% The macros \cs{zf@bf}, et al., are used to store the name of the -% custom bold, et al., font, if requested as user options. If they are -% empty, the default fonts are used. -% -% First we define the font family and define the normal shape: (any shape-specific -% features are appended to the generic font features requested in the last argument -% of \cmd\zf@make@font@shapes.) -% \begin{macrocode} - \DeclareFontFamily{\zf@enc}{\zf@family}{}% - \zf@make@font@shapes{\zf@fontname} - {\mddefault}{\updefault}{\zf@font@feat\zf@up@feat}% -% \end{macrocode} -% Secondly, bold. Again, the extra bold options defined with -% \feat{BoldFeatures} are appended to the generic font features. -% Then, the bold font is defined either as the ATS -% default (\cs{zf@make@font@shapes}' optional argument is to check if -% there actually is one; if not, the bold NFSS series is left -% undefined) or with the font specified with the \feat{BoldFont} feature. -% \begin{macrocode} - \unless\ifzf@nobf - \ifx\zf@bf\@empty - \zf@make@font@shapes[\zf@fontname]{/B} - {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat}% - \else - \zf@make@font@shapes{\zf@bf} - {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat}% - \fi - \fi -% \end{macrocode} -% And italic in the same way: -% \begin{macrocode} - \unless\ifzf@noit - \ifx\zf@it\@empty - \zf@make@font@shapes[\zf@fontname]{/I} - {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat}% - \else - \zf@make@font@shapes{\zf@it} - {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat}% - \fi - \fi -% \end{macrocode} -% If requested, the custom fonts take precedence when choosing the -% bold italic font. When both italic and bold fonts are requested and -% the bold italic font hasn't been explicitly specified (a rare -% occurance, presumably), the new bold font is used to define the new -% bold italic font. -% \begin{macrocode} - \@tempswatrue - \ifzf@nobf\@tempswafalse\fi - \ifzf@noit\@tempswafalse\fi - \if@tempswa - \ifx\zf@bfit\@empty - \ifx\zf@bf\@empty - \ifx\zf@it\@empty - \zf@make@font@shapes[\zf@fontname]{/BI} - {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}% - \else - \zf@make@font@shapes[\zf@it]{/B} - {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}% - \fi - \else - \zf@make@font@shapes[\zf@bf]{/I} - {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}% - \fi - \else - \zf@make@font@shapes{\zf@bfit} - {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}% - \fi - \fi - \fi - \endgroup} -% \end{macrocode} -% \changes{v1.5}{2004/11/29}{NFSS specifiers now take the default values.} -% \changes{v1.5}{2004/11/29}{Added code for choosing arbitrary bold/italic fonts.} -% \changes{v1.5}{2004/12/01}{Checks if the font family has already been defined.} -% \changes{v1.6}{2005/01/25}{Writes some info to the \texttt{.log} file} -% \changes{v1.6}{2005/02/09}{Added code for choosing arbitrary bold/italic font features.} -% \changes{v1.7}{2005/03/22}{Optional argument now mandatory.} -% \changes{v1.9}{2005/08/07}{Incorporated \cmd{\zf@get@feature@requests} argument change.} -% \changes{v1.9}{2005/08/07}{Incorporated \cmd{\zf@make@font@shapes} change; removed \cmd{\zf@options} storage macro.} -% \changes{v1.9}{2005/08/07}{\cmd{\zf@current@options} -> \cs{zf@default@options #1}} -% \changes{v1.9}{2005/08/07}{Absorbed the comma into \cmd{\zf@..@options} as to be more efficient when they are not defined.} -% \changes{v1.9}{2005/12/11}{Abstracted the long family name so the NFSS family is simple.} -% \changes{v1.10}{2006/04/14}{Saved family info split into two (now three!) macros.} -% \changes{v1.10}{2006/05/03}{Space zapped from \LaTeX\ family name due to various problems.} -% \changes{v1.11}{2006/06/29}{Ensure bold/italic fonts are loaded with the same renderer as the regular font even if unspecified.} -% \changes{v1.16}{2007/09/17}{\cmd{\zf@UID...} wasn't being defined globally. gah!} -% \changes{v1.17}{2008/02/03}{New feature: \feat{UprightFont}.} -% \end{macro} -% -% -% \subsubsection{Fonts} -% -% \begin{macro}{\zf@set@font@type} -% This macro sets \cs{zf@atsui} or \cs{zf@icu} or \cs{zf@mm} booleans -% accordingly depending if the font in \cmd\zf@basefont\ is an AAT -% font or an OpenType font or a font with feature axes (either AAT or -% Multiple Master), respectively. -% \begin{macrocode} -\newcommand*\zf@set@font@type{% - \zf@tfmfalse \zf@atsuifalse \zf@icufalse \zf@mmfalse - \ifcase\XeTeXfonttype\zf@basefont - \zf@tfm - \or - \zf@atsuitrue - \ifnum\XeTeXcountvariations\zf@basefont > 0 - \zf@mmtrue - \fi - \or - \zf@icutrue - \fi} -% \end{macrocode} -% \changes{v1.7}{2005/04/18}{Removed exclusivity from font type -% (AAT, OpenType) check, since fonts can be both.} -% \changes{v1.7}{2005/06/18}{Added `MM' font type; tests true, \eg, -% with Skia \& Minion MM. Used with the \feat{OpticalSize} feature.} -% \changes{v1.7}{2005/06/18}{Removed various \cmd{\count255}s.} -% \end{macro} -% -% -% -% \begin{macro}{\zf@make@font@shapes} -% \doarg{Font name prefix} -% \darg{Font name} -% \darg{Font series} -% \darg{Font shape} -% \darg{Font features} -% This macro eventually uses \cs{DeclareFontShape} to define the font shape in -% question. -% -% The optional first -% argument is used when making the font shapes for bold, italic, and -% bold italic fonts using \XeTeX's auto-recognition with |#2| as |/B|, |/I|, -% and |/BI| font name suffixes. If no such font is found, it falls -% back to the original font name, in which case this macro doesn't -% proceed and the font shape is not created for the NFSS. -% \begin{macrocode} -\newcommand*\zf@make@font@shapes[5][]{% - \begingroup - \edef\@tempa{#1}% - \unless\ifx\@tempa\@empty - \font\@tempfonta="\zf@font@wrap{#1}\zf@suffix" at \f@size pt - \edef\@tempa{\fontname\@tempfonta}% - \fi - \font\@tempfontb="\zf@font@wrap{#1#2}\zf@suffix" at \f@size pt - \edef\@tempb{\fontname\@tempfontb}% - \ifx\@tempa\@tempb - \zf@PackageInfo{Could not resolve font #1#2 (it might not exist)}% - \else - \edef\zf@fontname{#1#2}% - \let\zf@basefont\@tempfontb - \zf@DeclareFontShape{#3}{#4}{#5}% -% \end{macrocode} -% Next, the small caps are defined. \cs{zf@make@smallcaps} is used to -% define the appropriate string for activating small caps in the font, -% if they exist. If we are defining small caps for the upright shape, -% then the small caps shape default is used. For an \emph{italic} -% font, however, the shape parameter is overloaded and we must call -% italic small caps by their own identifier. See \vref{sec:sishape} -% for the code that enables this usage. -% \begin{macrocode} - \ifx\zf@sc\@empty - \unless\ifzf@nosc - \zf@make@smallcaps - \unless\ifx\zf@smallcaps\@empty - \zf@DeclareFontShape[\zf@smallcaps]{#3} - {\ifx#4\itdefault\sidefault\else\scdefault\fi}{#5\zf@sc@feat}% - \fi - \fi - \else - \edef\zf@fontname{\zf@sc}% - \zf@DeclareFontShape{#3} - {\ifx#4\itdefault\sidefault\else\scdefault\fi}{#5\zf@sc@feat}% - \fi - \fi - \endgroup} -% \end{macrocode} -% Note that the test for italics to choose the \cmd\sidefault\ shape -% only works while \cmd\zf@fontspec\ passes single tokens to this macro\dots -% \changes{v1.5}{2004/11/29}{Absorbed font-checking from \cs{zf@fontspec}.} -% \changes{v1.7}{2005/03/22}{Changed some \cs{edef}s to \cs{let}.} -% \changes{v1.7}{2005/04/02}{Support for the \feat{OpticalSize} feature.} -% \changes{v1.9}{2005/08/07}{Absorbed \cs{IfEqFonts}.} -% \changes{v1.9}{2005/08/07}{Changed input syntax.} -% \changes{v1.9}{2005/08/07}{Added argument for \cs{zf@get@feature@requests} change.} -% \changes{v1.9}{2005/12/08} -% {Added logging of \texttt{/B}, \texttt{/I}, \texttt{/BI} failure.} -% \changes{v1.9}{2005/12/08}{Removed \cs{nfss@catcodes} wrapper.} -% \changes{v1.9}{2005/12/09}{\cs{zf@scale@str} eliminated.} -% \changes{v1.9}{2005/08/07}{Removed \cmd{\zf@scshape} macro.} -% \changes{v1.9}{2005/12/11}{Incorporated \cmd\sidefault\ test into the -% \cmd\DeclareFontShape\ argument directly now that it's fully expanded.} -% \changes{v1.9}{2005/12/11}{Added code for \feat{SmallCaps...} features.} -% \changes{v1.9}{2005/12/20}{Made local to hide \cs{zf@fontname} changes.} -% \changes{v1.12}{2006/10/28}{\cmd\bgroup\ changed to \cmd\begingroup. Thanks Chris!} -% \end{macro} -% -% \begin{macro}{\zf@DeclareFontShape} -% \doarg{Raw appended font feature} -% \darg{Font series} -% \darg{Font shape} -% \darg{Font features} -% Wrapper for \cmd\DeclareFontShape. -% \begin{macrocode} -\newcommand\zf@DeclareFontShape[4][]{% - \ifx\zf@size@feat\@empty - \zf@get@feature@requests{#4}% - \edef\zf@font@str{<->\zf@scale"\zf@font@wrap\zf@fontname\zf@suffix:% - \zf@pre@ff\zf@ff#1"}% - \else -% \end{macrocode} -% Default code, above, sets things up for no optical size fonts or features. -% On the other hand, loop through \feat{SizeFeatures} arguments, which -% are of the form -% {\par\centering |SizeFeatures={{<one>},{<two>},{<three>}}|.\par} -% \begin{macrocode} - \@for\zf@this@size:=\zf@size@feat\do{% - \let\zf@size\@empty - \let\zf@size@fnt\zf@fontname - \edef\@tempa{\noexpand - \setkeys*[zf]{sizing}{\expandafter\@firstofone\zf@this@size}}% - \@tempa - \ifx\zf@size\@empty\zf@PackageError - {Size information must be supplied} - {For example, SizeFeatures={Size={8-12},...},...}% - \fi - \zf@get@feature@requests{#4,\XKV@rm}% - \edef\zf@font@str{\zf@font@str <\zf@size>% - \zf@scale"\zf@size@fnt\zf@suffix:\zf@pre@ff\zf@ff#1"}}% - \fi -% \end{macrocode} -% And finally the actual font shape declaration using \cmd\zf@font@str\ defined above. -% \cmd\zf@adjust\ is defined in various places to deal with things like the hyphenation -% character and interword spacing. -% \begin{macrocode} - \edef\@tempa{\noexpand - \DeclareFontShape{\zf@enc}{\zf@family}{#2}{#3} - {\zf@font@str}{\zf@adjust}}% - \@tempa -% \end{macrocode} -% This extra stuff for the slanted shape substitution is a little bit awkward, -% but I'd rather have it here than break out yet another macro. Alternatively, -% one day I might just redefine \cmd\slshape. Why not, eh? -% \begin{macrocode} - \edef\@tempa{#3}% - \edef\@tempb{\itdefault}% - \ifx\@tempa\@tempb - \edef\@tempa{\noexpand - \DeclareFontShape{\zf@enc}{\zf@family}{#2}{\sldefault} - {<->ssub*\zf@family/#2/\itdefault}{\zf@adjust}}% - \@tempa - \fi} -% \end{macrocode} -% \changes{v1.9}{2005/12/11}{Implemented as wrapper for \cmd\DeclareFontShape.} -% \changes{v1.9}{2006/01/15}{Slanted/italic shape substitution implemented.} -% \changes{v1.13}{2006/11/12}{New feature \feat{SizeFeatures} implemented.} -% \changes{v1.17}{2008/04/28}{slshape substitution bug fix (thanks Ulrike!).} -% \changes{v1.17}{2008/04/30}{slshape substitution is now silent.} -% \end{macro} -% -% -% \begin{macro}{\zf@update@family} -% This macro is used to build up a complex family name based on its -% features. -% -% \cmd{\zf@firsttime} is set true in \cmd{\zf@fontspec} only the first -% time \cmd{zf@get@feature@requests} is called, so that the family -% name is only created once. -% \begin{macrocode} -\newcommand*{\zf@update@family}[1]{% - \ifzf@firsttime - \xdef\zf@family@long{\zf@family@long#1}% - \fi} -% \end{macrocode} -% \changes{v1.9}{2005/12/09}{Now fully expands arguments.} -% \end{macro} -% -% -% \subsubsection{Features} -% -% \begin{macro}{\zf@get@feature@requests} -% This macro is a wrapper for |\setkeys| which expands and adds a -% default specification to the original passed options. It begins by -% initialising the commands used to hold font-feature specific -% strings. -% \begin{macrocode} -\newcommand*\zf@get@feature@requests[1]{% - \let\zf@ff \@empty - \let\zf@scale \@empty - \let\zf@adjust \@empty - \edef\@tempa{\noexpand\setkeys[zf]{options}{\zf@default@options#1}}% - \@tempa} -% \end{macrocode} -% \changes{v1.6}{2005/01/25}{Removed the space between the comma and -% \cs{zf@options} when it's concatenated with the defaults.} -% \changes{v1.9}{2005/08/07}{Added an argument to eliminate the \cs{zf@options} macro.} -% \changes{v1.9}{2005/08/07}{Absorbed comma into \cmd{\zf@default@options}, -% making \cmd{\zf@current@options} redundant.} -% \changes{v1.9}{2005/12/20}{Removed init stuff.} -% -% \end{macro} -% -% \begin{macro}{\zf@init} -% This functionality has been removed from \cmd\zf@get@feature@requests\ -% because it's no longer the first thing that can affect these things. -% \begin{macrocode} -\newcommand*\zf@init{% - \zf@icufalse - \let\zf@pre@ff \@empty - \let\zf@font@feat \@empty - \let\zf@font@str \@empty - \let\zf@font@wrap \@firstofone - \let\zf@suffix \@empty - \let\zf@bf \@empty - \let\zf@it \@empty - \let\zf@bfit \@empty - \let\zf@sc \@empty - \let\zf@up@feat \@empty - \let\zf@bf@feat \@empty - \let\zf@it@feat \@empty - \let\zf@bfit@feat \@empty - \let\zf@sc@feat \@empty - \let\zf@size \@empty - \let\zf@size@feat \@empty - \let\zf@size@fnt \@empty - \c@zf@script 1818326126\relax - \def\zf@script@name{Latin}% - \c@zf@language 0\relax - \def\zf@language@name{Default}% -} -% \end{macrocode} -% \changes{v1.9}{2005/12/20}{Taken from \cs{zf@get@feature@requests}.} -% \end{macro} -% -% \begin{macro}{\zf@make@smallcaps}\label{mac:zf@make@smallcaps} -% This macro checks if the font contains small caps, and if so -% creates the string for accessing them in \cmd{\zf@smallcaps}. -% \begin{macrocode} -\newcommand*\zf@make@smallcaps{% - \let\zf@smallcaps\@empty - \ifzf@atsui - \zf@make@aat@feature@string{3}{3}% - \unless\ifx\@tempa\@empty - \edef\zf@smallcaps{\@tempa;}% - \fi - \fi - \ifzf@icu - \zf@check@ot@feat{+smcp}% - \if@tempswa - \edef\zf@smallcaps{+smcp,}% - \fi - \fi} -% \end{macrocode} -% \changes{v1.7}{2005/03/27}{Accommodation of the \cs{zf@thisfontfeature} change.} -% \changes{v1.9}{2005/12/15}{Now uses \cs{zf@check@ot@feat}.} -% \end{macro} -% -% -% -% \begin{macro}{\zf@update@ff} -% \cmd{\zf@ff} is the string used to define the list of specific -% font features. Each time another font feature is requested, this -% macro is used to add that feature to the list. AAT features are -% separated by semicolons, OpenType features by commas. -% \begin{macrocode} -\newcommand*\zf@update@ff[1]{% - \unless\ifzf@firsttime - \xdef\zf@ff{\zf@ff #1\ifzf@icu,\else;\fi}% - \fi} -% \end{macrocode} -% \changes{v1.7}{2005/05/30}{Fix for featureless fonts (\eg, the MS fonts) being ignored.} -% \changes{v1.9}{2006/02/12}{Removed ridiculous \cs{zf@feature@separator} code.} -% \end{macro} -% -% -% -% \begin{macro}{\zf@make@feature} -% This macro is called by each feature key selected, and runs -% according to which type of font is selected. -% \begin{macrocode} -\newcommand*\zf@make@feature[3]{% -% \end{macrocode} -% For AAT fonts: -% \begin{macrocode} - \ifzf@atsui - \def\@tempa{#1}% - \ifx\@tempa\@empty - \zf@PackageWarning{% - '\XKV@tfam=\XKV@tkey' feature not supported - for AAT font \fontname\zf@basefont}% - \else - \zf@make@aat@feature@string{#1}{#2}% - \ifx\@tempa\@empty - \zf@PackageWarning{% - AAT feature '\XKV@tfam=\XKV@tkey' (#1,#2) not available\zf@nl - in font \fontname\zf@basefont}% - \else - \zf@update@family{+#1,#2}% - \zf@update@ff\@tempa - \fi - \fi - \fi -% \end{macrocode} -% For OpenType fonts: -% \begin{macrocode} - \ifzf@icu - \edef\@tempa{#3}% - \ifx\@tempa\@empty - \zf@PackageWarning{% - '\XKV@tfam=\XKV@tkey' feature not supported - for ICU font \fontname\zf@basefont}% - \else - \expandafter\zf@check@ot@feat\expandafter{\@tempa}% - \if@tempswa - \zf@update@family{#3}% - \zf@update@ff{#3}% - \else - \zf@PackageWarning{% - OpenType feature '\XKV@tfam=\XKV@tkey' (#3) - not available\zf@nl - for font \fontname\zf@basefont, \zf@nl - with script '\zf@script@name',\zf@nl - and language '\zf@language@name'.}% - \fi - \fi - \fi} -% \end{macrocode} -% \changes{v1.7}{2005/03/27}{Accommodation of the \cs{zf@thisfontfeature} change.} -% \changes{v1.9}{2006/02/12}{Now checks for OpenType feature.} -% \changes{v1.10}{2006/04/04}{Removed embarrassing space after warnings.} -% \changes{v1.13}{2006/12/24}{Warns (and fixes bug) when an AAT feature is requested for an ICU font and vice versa.} -% \end{macro} -% -% \begin{macro}{\zf@define@font@feature} -% \begin{macro}{\zf@define@feature@option} -% These macros are used in order to simplify font feature definition later on. -% \begin{macrocode} -\newcommand*\zf@define@font@feature[1]{% - \define@key[zf]{options}{#1}{{\setkeys[zf@feat]{#1}{##1}}}} -\newcommand*\zf@define@feature@option[5]{% - \define@key[zf@feat]{#1}{#2}[]{\zf@make@feature{#3}{#4}{#5}}} -% \end{macrocode} -% \changes{v1.7}{2005/03/27}{Implemented for the bulk of the feature processing code.} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\keyval@alias@key} -% This macro maps one \pkg{xkeyval} key to another. -% \begin{macrocode} -\newcommand*\keyval@alias@key[4][KV]{% - \let@cc{#1@#2@#4}{#1@#2@#3}% - \let@cc{#1@#2@#4@default}{#1@#2@#3@default}} -% \end{macrocode} -% \changes{v1.9}{2005/12/09}{Implemented.} -% \end{macro} -% -% \begin{macro}{\multi@alias@key} -% This macro iterates through families to map one key to another, -% regardless of which family it's contained within. -% \begin{macrocode} -\newcommand*\multi@alias@key[2]{% - \key@ifundefined[zf]{preparse}{#1} - {\key@ifundefined[zf]{options}{#1} - {\zf@PackageError{The feature #1 doesn't appear to be defined} - {It looks like you're trying to rename a feature that doesn't exist.}} - {\keyval@alias@key[zf]{options}{#1}{#2}}} - {\keyval@alias@key[zf]{preparse}{#1}{#2}}} -% \end{macrocode} -% \changes{v1.9}{2005/12/20}{Implemented for \cmd\aliasfontfeature.} -% \end{macro} -% -% \begin{macro}{\zf@make@aat@feature@string} -% This macro takes the numerical codes for a font feature and -% creates a specified macro containing the string required in the -% font definition to turn that feature on or off. Used primarily in -% \cmd\zf@make@aat@feature, but also used to check if small caps -% exists in the requested font (see page~\pageref{mac:zf@make@smallcaps}). -% -% \begin{macrocode} -\newcommand*\zf@make@aat@feature@string[2]{% - \edef\@tempa{\XeTeXfeaturename\zf@basefont #1}% - \unless\ifx\@tempa\@empty -% \end{macrocode} -% For exclusive selectors, it's easy; just grab the string: -% \begin{macrocode} - \ifnum\XeTeXisexclusivefeature\zf@basefont #1>0 - \edef\@tempb{\XeTeXselectorname\zf@basefont #1 #2}% -% \end{macrocode} -% For \emph{non}-exclusive selectors, it's a little more complex. -% If the selector is even, it corresponds to switching the feature on: -% \begin{macrocode} - \else - \unless\ifodd #2 - \edef\@tempb{\XeTeXselectorname\zf@basefont #1 #2}% -% \end{macrocode} -% If the selector is \emph{odd}, it corresponds to switching the feature off. -% But \XeTeX\ doesn't return a selector string for this number, since the -% feature is defined for the `switching on' value. So we need to check the -% selector of the previous number, and then prefix the feature string with |!| -% to denote the switch. -% \begin{macrocode} - \else - \edef\@tempb{\XeTeXselectorname\zf@basefont #1 \numexpr#2-1\relax}% - \unless\ifx\@tempb\@empty - \edef\@tempb{!\@tempb}% - \fi - \fi - \fi -% \end{macrocode} -% Finally, save out the complete feature string in \cmd\@tempa. -% If the selector doesn't exist, re-initialise the feature string to empty. -% \begin{macrocode} - \unless\ifx\@tempb\@empty - \edef\@tempa{\@tempa=\@tempb}% - \else - \let\@tempa\@empty - \fi - \fi} -% \end{macrocode} -% \changes{v1.7}{2005/03/22}{Changed some \cs{edef}s to \cs{let}} -% \changes{v1.7}{2005/03/27}{Removed third argument; always saves -% the feature string in \cs{zf@thisfontfeature}} -% \changes{v1.12}{2006/08/19}{Fixed result of \cmd\XeTeXfeaturename\ output change (empty string if odd non-exclusive selector).} -% \changes{v1.12}{2006/08/20}{Removed \cmd\@thisfontfeature\ macro; replaced with \cmd\@tempa.} -% \end{macro} -% -% \begin{macro}{\zf@iv@strnum} -% \begin{macro}{\zf@v@strnum} -% This macro takes a four character string and converts it to the -% numerical representation required for \XeTeX\ OpenType script/language/feature -% purposes. The output is stored in \cmd\@tempcnta. -% -% The reason it's ugly is because the input can be of the form of any of these: -% `|abcd|', `|abc|', `|abc |', `|ab|', `|ab |', \etc. -% (It is assumed the first two chars are \emph{always} not spaces.) So this macro -% reads in the string, delimited by a space; this input is padded with \cmd\@empty s -% and anything beyond four chars is snipped. The \cmd\@empty s then are used to reconstruct -% the spaces in the string to number calculation. -% -% The variant \cmd\zf@v@strnum\ is used when looking at features, which are passed around -% with prepended plus and minus signs (\eg, \texttt{+liga}, \texttt{-dlig}); it -% simply strips off the first char of the input before calling the normal \cmd\zf@iv@strnum. -% -% It's probable that all OpenType features \emph{are} in fact four characters long, but -% not impossible that they aren't. So I'll leave the less efficient parsing stage in there -% even though it's not strictly necessary for now. -% \begin{macrocode} -\newcommand\zf@iv@strnum[1]{% - \zf@iv@strnum@i#1 \@nil} -\def\zf@iv@strnum@i#1 \@nil{% - \zf@iv@strnum@ii#1\@empty\@empty\@nil} -\def\zf@iv@strnum@ii#1#2#3#4#5\@nil{% - \@tempcnta\z@ - \@tempcntb`#1\relax - \multiply\@tempcntb"1000000\advance\@tempcnta\@tempcntb - \@tempcntb`#2 - \multiply\@tempcntb"10000\advance\@tempcnta\@tempcntb - \expandafter\@tempcntb\ifx\@empty#332\else`#3\fi - \multiply\@tempcntb"100\advance\@tempcnta\@tempcntb - \expandafter\@tempcntb\ifx\@empty#432\else`#4\fi - \advance\@tempcnta\@tempcntb} -\newcommand\zf@v@strnum[1]{% - \expandafter\zf@iv@strnum@i\@gobble#1 \@nil} -% \end{macrocode} -% \changes{v1.9}{2005/12/24}{Implemented.} -% TODO: convert to \cmd\numexpr -% \end{macro} -% \end{macro} -% -% \begin{macro}{\zf@check@ot@script} -% This macro takes an OpenType script tag and checks if it exists in the current -% font. The output boolean is \cmd\@tempswatrue. \cmd\@tempcnta\ is used to store -% the number corresponding to the script tag string. -% \begin{macrocode} -\newcommand\zf@check@ot@script[1]{% - \zf@iv@strnum{#1}% - \@tempcntb\XeTeXOTcountscripts\zf@basefont - \c@zf@index\z@ \@tempswafalse - \loop\ifnum\c@zf@index<\@tempcntb - \ifnum\XeTeXOTscripttag\zf@basefont\c@zf@index=\@tempcnta - \@tempswatrue - \c@zf@index\@tempcntb - \else - \advance\c@zf@index\@ne - \fi - \repeat} -% \end{macrocode} -% \changes{v1.9}{2006/02/12}{Implemented.} -% \end{macro} -% -% \begin{macro}{\zf@check@ot@lang} -% This macro takes an OpenType language tag and checks if it exists in the current -% font/script. The output boolean is \cmd\@tempswatrue. \cmd\@tempcnta\ is used to store -% the number corresponding to the language tag string. -% The script used is whatever's held in \cmd\c@zf@script. By default, that's the -% number corresponding to `|latn|'. -% \begin{macrocode} -\newcommand\zf@check@ot@lang[1]{% - \zf@iv@strnum{#1}% - \@tempcntb\XeTeXOTcountlanguages\zf@basefont\c@zf@script - \c@zf@index\z@ \@tempswafalse - \loop\ifnum\c@zf@index<\@tempcntb - \ifnum\XeTeXOTlanguagetag\zf@basefont\c@zf@script\c@zf@index=\@tempcnta - \@tempswatrue - \c@zf@index\@tempcntb - \else - \advance\c@zf@index\@ne - \fi - \repeat} -% \end{macrocode} -% \changes{v1.9}{2006/02/12}{Implemented.} -% \end{macro} -% -% \begin{macro}{\zf@check@ot@feat} -% This macro takes an OpenType feature tag and checks if it exists in the current -% font/script/language. -% The output boolean is \cmd\@tempswa. \cmd\@tempcnta\ is used to store -% the number corresponding to the feature tag string. -% The script used is whatever's held in \cmd\c@zf@script. By default, that's the -% number corresponding to `|latn|'. The language used is \cmd\c@zf@language, -% by default |0|, the `default language'. -% \begin{macrocode} -\newcommand*\zf@check@ot@feat[1]{% - \@tempcntb\XeTeXOTcountfeatures\zf@basefont\c@zf@script\c@zf@language - \zf@v@strnum{#1}% - \c@zf@index\z@ \@tempswafalse - \loop\ifnum\c@zf@index<\@tempcntb - \ifnum\XeTeXOTfeaturetag\zf@basefont\c@zf@script\c@zf@language - \c@zf@index=\@tempcnta - \@tempswatrue - \c@zf@index\@tempcntb - \else - \advance\c@zf@index\@ne - \fi - \repeat} -% \end{macrocode} -% \changes{v1.9}{2006/02/12}{Implemented.} -% \end{macro} -% -% \subsection{\pkg{keyval} definitions} -% -% This is the tedious section where we correlate all possible -% (eventually) font feature requests with their \XeTeX\ representations. -% -% \subsubsection{Pre-parsed features} -% -% These features are extracted from the font feature list before all others, using -% \pkg{xkeyval}'s \cmd\setkeys|*|. -% -% \paragraph{\feat{ExternalLocation}} -% For fonts that aren't installed in the system. If no argument is given, the font is located -% with |kpsewhich|; it's either in the current directory or the \TeX\ tree. Otherwise, the -% argument given defines the file path of the font. -% \begin{macrocode} -\define@key[zf]{prepreparse}{ExternalLocation}[]{% - \zf@icutrue - \zf@nobftrue\zf@noittrue - \gdef\zf@font@wrap##1{[#1##1]}} -% \end{macrocode} -% \changes{v1.12}{2006/11/02}{New feature \feat{ExternalLocation} for loading external fonts.} -% -% \paragraph{\feat{Renderer}} -% This feature must be processed before all others (the other font shape and features options are also pre-parsed for convenience) because the renderer determines the format of the features and even whether certain features are available. -% \begin{macrocode} -\define@choicekey[zf]{preparse}{Renderer}{AAT,ICU}{% - \edef\zf@suffix{\zf@suffix/#1}% - \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt - \edef\zf@family@long{\zf@family@long +rend:#1}} -% \end{macrocode} -% -% \paragraph{OpenType script/language} -% See later for the resolutions from \pkg{fontspec} features to OpenType definitions. -% \begin{macrocode} -\define@key[zf]{preparse}{Script}{% - \zf@icutrue - \edef\zf@suffix{\zf@suffix/ICU}% - \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt - \edef\zf@family@long{\zf@family@long +script:#1}% - {\setkeys[zf@feat]{Script}{#1}}} -% \end{macrocode} -% Exactly the same: -% \begin{macrocode} -\define@key[zf]{preparse}{Language}{% - \zf@icutrue - \edef\zf@suffix{\zf@suffix/ICU}% - \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt - \edef\zf@family@long{\zf@family@long +language:#1}% - {\setkeys[zf@feat]{Lang}{#1}}} -% \end{macrocode} -% -% \subsubsection{Bold/italic choosing options} -% -% The \feat{Bold}, \feat{Italic}, and \feat{BoldItalic} -% features are for defining explicitly the bold and italic fonts used -% in a font family. \textsf{v1.6} introduced arbitrary font features -% for these shapes (\feat{BoldFeatures}, etc.), so the names of the -% shape-selecting options were appended with \opt{Font} for -% consistency. -% -% \changes{v1.5}{2004/11/29}{New options for arbitrary bold/italic shapes.} -% \changes{v1.6}{2005/02/09}{\opt{Bold} option aliased to \opt{BoldFont}.} -% \changes{v1.9}{2005/12/11}{New feature \feat{UprightFeatures}.} -% \changes{v1.9}{2005/12/11}{New features \feat{SmallCapsFont} and \feat{SmallCapsFeatures}.} -% \changes{v1.12}{2006/11/02}{\feat{BoldFont}, etc., flags \cmd\zf@nobf\ conditional false rather than assuming it implicitly. This allows, \eg, empty \feat{BoldFont} to be overloaded.} -% -% \paragraph{Fonts} -% Upright: -% \begin{macrocode} -\define@key[zf]{preparse}{UprightFont}{% - \edef\@tempa{#1}% - \zf@partial@fontname#1\@nil=\zf@up - \edef\zf@family@long{\zf@family@long up:#1}} -% \end{macrocode} -% Bold: -% \begin{macrocode} -\define@key[zf]{preparse}{BoldFont}{% - \edef\@tempa{#1}% - \ifx\@tempa\@empty - \zf@nobftrue - \edef\zf@family@long{\zf@family@long nobf}% - \else - \zf@nobffalse - \zf@partial@fontname#1\@nil=\zf@bf - \edef\zf@family@long{\zf@family@long bf:#1}% - \fi} -% \end{macrocode} -% Same for italic: -% \begin{macrocode} -\define@key[zf]{preparse}{ItalicFont}{% - \edef\@tempa{#1}% - \ifx\@tempa\@empty - \zf@noittrue - \edef\zf@family@long{\zf@family@long noit}% - \else - \zf@noitfalse - \zf@partial@fontname#1\@nil=\zf@it - \edef\zf@family@long{\zf@family@long it:#1}% - \fi} -% \end{macrocode} -% Simpler for bold+italic: -% \begin{macrocode} -\define@key[zf]{preparse}{BoldItalicFont}{% - \zf@partial@fontname#1\@nil=\zf@bfit - \edef\zf@family@long{\zf@family@long bfit:#1}} -% \end{macrocode} -% Small caps isn't pre-parsed because it can vary with others above: -% \begin{macrocode} -\define@key[zf]{options}{SmallCapsFont}{% - \edef\@tempa{#1}% - \ifx\@tempa\@empty - \zf@nosctrue - \edef\zf@family@long{\zf@family@long nosc}% - \else - \zf@noscfalse - \zf@partial@fontname#1\@nil=\zf@sc - \zf@update@family{sc:\zap@space #1 \@empty}% - \fi} -% \end{macrocode} -% -% \begin{macro}{\zf@partial@fontname} -% This macro takes the first token of its input and ends up defining |#3| -% to the name of the font depending if it's been specified in full -% (``\texttt{Baskerville Semibold}'') or in abbreviation (``\texttt{* Semibold}''). -% -% This could be done more flexibly by making |*| active; I'll change it later if I need to. -% \begin{macrocode} -\def\zf@partial@fontname#1#2\@nil=#3{% - \if#1*\relax - \edef#3{\zf@fontname#2}% - \else - \edef#3{#1#2}% - \fi} -% \end{macrocode} -% \changes{v1.9}{2006/02/03}{Implemented.} -% \changes{v1.13}{2006/12/20}{Folded in the \cmd\@tempa\ \cmd\let\ command, changing the syntax.} -% \end{macro} -% -% \paragraph{Features} -% \begin{macrocode} -\define@key[zf]{preparse}{UprightFeatures}{% - \def\zf@up@feat{,#1}% - \edef\zf@family@long{\zf@family@long rmfeat:#1}} -\define@key[zf]{preparse}{BoldFeatures}{% - \def\zf@bf@feat{,#1}% - \edef\zf@family@long{\zf@family@long bffeat:#1}} -\define@key[zf]{preparse}{ItalicFeatures}{% - \def\zf@it@feat{,#1}% - \edef\zf@family@long{\zf@family@long itfeat:#1}} -\define@key[zf]{preparse}{BoldItalicFeatures}{% - \def\zf@bfit@feat{,#1}% - \edef\zf@family@long{\zf@family@long bfitfeat:#1}} -% \end{macrocode} -% Note that small caps features can vary by shape, so these in fact \emph{aren't} pre-parsed. -% \begin{macrocode} -\define@key[zf]{options}{SmallCapsFeatures}{% - \unless\ifzf@firsttime\def\zf@sc@feat{,#1}\fi - \zf@update@family{scfeat:\zap@space #1 \@empty}} -% \end{macrocode} -% -% paragraph{Features varying by size} -% TODO: sizezfeatures and italicfont (etc) don't play nice -% \begin{macrocode} -\define@key[zf]{preparse}{SizeFeatures}{% - \unless\ifzf@firsttime\def\zf@size@feat{#1}\fi - \zf@update@family{sizefeat:\zap@space #1 \@empty}} -% \end{macrocode} -% -% \begin{macrocode} -\define@key[zf]{sizing}{Size}{\def\zf@size{#1}} -\define@key[zf]{sizing}{Font}{\def\zf@size@fnt{#1}} -% \end{macrocode} -% \changes{v1.13}{2006/11/12}{\feat{SizeFeatures}: Beginnings of support for different font features for different font sizes, required by \pkg{unicode-math}.} -% -% -% \subsubsection{Font-independent features} -% -% These features can be applied to any font. -% -% \paragraph{Scale} -% \changes{v1.2}{2004/10/22}{Support for \feat{Scale}.} -% \changes{v1.6}{2005/01/04}{\feat{Scale} feature now updates family name.} -% \changes{v1.9}{2005/12/09}{New \feat{Scale} options: \opt{MatchLowercase} and \opt{MatchUppercase}.} -% If the input isn't one of the pre-defined string options, then -% it's gotta be numerical. \cmd\zf@calc@scale\ does all the work in -% the auto-scaling cases. -% \begin{macrocode} -\define@key[zf]{options}{Scale}{% - \edef\@tempa{#1}% - \edef\@tempb{MatchLowercase}% - \ifx\@tempa\@tempb - \zf@calc@scale{5}% - \else - \edef\@tempb{MatchUppercase}% - \ifx\@tempa\@tempb - \zf@calc@scale{8}% - \else - \edef\zf@scale{#1}% - \fi - \fi - \zf@update@family{+scale:\zf@scale}% - \edef\zf@scale{s*[\zf@scale]}} -% \end{macrocode} -% -% \begin{macro}{\zf@calc@scale} -% This macro calculates the amount of scaling between the default -% roman font and the (default shape of) the font being selected such -% that the font dimension that is input is equal for both. The only -% font dimensions that justify this are 5 (lowercase height) -% and 8 (uppercase height in \XeTeX). -% -% This script is executed for every extra shape, which seems wasteful, -% but allows alternate italic shapes from a separate font, say, to -% be loaded and to be auto-scaled correctly. Even if this would be ugly. -% \begin{macrocode} -\newcommand\zf@calc@scale[1]{% - \begingroup - \rmfamily - \setlength\@tempdima{\fontdimen#1\font}% - \setlength\@tempdimb{\fontdimen#1\zf@basefont}% - \setlength\@tempdimc{1pt*\ratio{\@tempdima}{\@tempdimb}}% - \xdef\zf@scale{\strip@pt\@tempdimc}% - \zf@PackageInfo{\zf@fontname\space scale = \zf@scale}% - \endgroup} -% \end{macrocode} -% \changes{v1.9}{2005/12/09}{Implemented for auto-scaling options.} -% \end{macro} -% -% \paragraph{Inter-word space} -% \changes{v1.9}{2005/12/09}{New feature \feat{WordSpace}.} -% These options set the relevant \cmd\fontdimen s for the -% font being loaded. -% \begin{macrocode} -\define@key[zf]{options}{WordSpace}{% - \zf@update@family{+wordspace:#1}% - \unless\ifzf@firsttime - \zf@wordspace@parse#1,\zf@@ii,\zf@@iii,\zf@@ - \fi} -% \end{macrocode} -% -% \begin{macro}{\zf@wordspace@parse} -% This macro determines if the input to \feat{WordSpace} is -% of the form |{X}| or |{X,Y,Z}| and executes the font scaling. -% If the former input, it executes |{X,X,X}|. -% \begin{macrocode} -\def\zf@wordspace@parse#1,#2,#3,#4\zf@@{% - \def\@tempa{#4}% - \ifx\@tempa\@empty - \setlength\@tempdima{#1\fontdimen2\zf@basefont}% - \@tempdimb\@tempdima - \@tempdimc\@tempdima - \else - \setlength\@tempdima{#1\fontdimen2\zf@basefont}% - \setlength\@tempdimb{#2\fontdimen3\zf@basefont}% - \setlength\@tempdimc{#3\fontdimen4\zf@basefont}% - \fi - \edef\zf@adjust{\zf@adjust - \fontdimen2\font\the\@tempdima - \fontdimen3\font\the\@tempdimb - \fontdimen4\font\the\@tempdimc}} -% \end{macrocode} -% \changes{v1.9}{2005/12/12}{Implemented.} -% \changes{v1.11}{2006/08/13}{Improved saving \cmd\fontdimen\ stuff to \cmd\zd@adjust (also see \feat{PunctuationSpace}).} -% \end{macro} -% -% \paragraph{Punctuation space} -% \changes{v1.9}{2005/12/11}{New feature \feat{PunctuationSpace}.} -% Scaling factor for the nominal \cmd\fontdimen \#7. -% \begin{macrocode} -\define@key[zf]{options}{PunctuationSpace}{% - \zf@update@family{+punctspace:#1}% - \setlength\@tempdima{#1\fontdimen7\zf@basefont}% - \edef\zf@adjust{\zf@adjust\fontdimen7\font\the\@tempdima}} -% \end{macrocode} -% -% \paragraph{Letterspacing} -% \changes{v1.10}{2006/06/07}{New feature \feat{LetterSpace}.} -% \begin{macrocode} -\define@key[zf]{options}{LetterSpace}{% - \zf@update@family{+tracking:#1}% - \zf@update@ff{letterspace=#1}} -% \end{macrocode} -% -% \paragraph{Hyphenation character} -% \changes{v1.9}{2005/12/11}{New feature \feat{HyphenChar}.} -% \changes{v1.11}{2006/08/14}{\feat{HyphenChar} checks its input now.} -% This feature takes one of three arguments: `\opt{None}', -% \meta{glyph}, or \meta{slot}. If the input isn't the first, -% and it's one character, then it's the second; otherwise, it's -% the third. -% \begin{macrocode} -\define@key[zf]{options}{HyphenChar}{% - \zf@update@family{+hyphenchar:#1}% - \edef\@tempa{#1}% - \edef\@tempb{None}% - \ifx\@tempa\@tempb - \g@addto@macro\zf@adjust{\hyphenchar\font-1\relax}% - \else - \zf@check@one@char#1\zf@@ - \ifx\@tempb\@empty - {\zf@basefont\expandafter\ifnum\expandafter\XeTeXcharglyph - \expandafter`#1 > 0 - \g@addto@macro\zf@adjust{% - {\expandafter\hyphenchar\expandafter - \font\expandafter`#1}}% - \else - \zf@PackageError - {\fontname\zf@basefont\space doesn't appear to have the glyph - corresponding to #1.} - {You can't hyphenate with a character that's not available!} - \fi}% - \else - {\zf@basefont\ifnum\XeTeXcharglyph#1 > 0 - \g@addto@macro\zf@adjust{\hyphenchar\font#1\relax}% - \else - \zf@PackageError - {\fontname\zf@basefont\space doesn't appear to have the glyph - corresponding to #1.} - {You can't hyphenate with a character that's not available!}% - \fi}% - \fi - \fi} -\def\zf@check@one@char#1#2\zf@@{\def\@tempb{#2}} -% \end{macrocode} -% -% \paragraph{Colour} -% \changes{v1.3}{2004/10/25}{Support for \feat{Mapping} and \feat{Colour}.} -% \changes{v1.10}{2006/02/17}{\feat{Color} brought back into the \texttt{.sty}} -% \begin{macrocode} -\define@key[zf]{options}{Colour}{% - \zf@update@family{+col:#1}% - \zf@update@ff{color=#1}} -\keyval@alias@key[zf]{options}{Colour}{Color} -% \end{macrocode} -% -% \paragraph{Mapping} -% \begin{macrocode} -\define@key[zf]{options}{Mapping}{% - \zf@update@family{+map:#1}% - \zf@update@ff{mapping=#1}} -% \end{macrocode} -% -% -% \subsubsection{Continuous font axes} -% -% \changes{v1.4}{2004/11/25}{Support for \opt{Weight} and \opt{Width} -% AAT features.} -% \changes{v1.7}{2005/04/18}{Removed AAT check for weight/width axes -% (could also be Multiple Master)} -% \changes{v1.7}{2005/04/02}{New feature: \feat{OpticalSize}; works -% with both OpenType and MM fonts.} -% -% \begin{macrocode} -\define@key[zf]{options}{Weight}{% - \zf@update@family{+weight:#1}% - \zf@update@ff{weight=#1}} -\define@key[zf]{options}{Width}{% - \zf@update@family{+width:#1}% - \zf@update@ff{width=#1}} -\define@key[zf]{options}{OpticalSize}{% - \ifzf@icu - \edef\zf@suffix{\zf@suffix/S=#1}% - \zf@update@family{+size:#1}% - \fi - \ifzf@mm - \zf@update@family{+size:#1}% - \zf@update@ff{optical size=#1}% - \fi - \ifzf@icu\else - \ifzf@mm\else - \ifzf@firsttime - \zf@PackageWarning - {\fontname\zf@basefont\space doesn't appear - to have an Optical Size axis}% - \fi - \fi - \fi} -% \end{macrocode} -% -% \subsubsection{Font transformations} -% \changes{v1.17}{2008/03/17}{New features \feat{FakeSlant}, \feat{FakeStretch}, \feat{FakeBold}.} -% \begin{macrocode} -\define@key[zf]{options}{FakeSlant}{% - \zf@update@family{+slant:#1}% - \zf@update@ff{slant=#1}} -\define@key[zf]{options}{FakeStretch}{% - \zf@update@family{+extend:#1}% - \zf@update@ff{extend=#1}} -\define@key[zf]{options}{FakeBold}{% - \zf@update@family{+embolden:#1}% - \zf@update@ff{embolden=#1}} -% \end{macrocode} -% -% -% \subsubsection{Ligatures} -% The call to the nested keyval family must be wrapped in braces to -% hide the parent list (this later requires the use of global -% definitions (|\xdef|) in |\zf@update@...|). Both AAT and OpenType -% names are offered to chose |Rare|/|Discretionary| ligatures. -% \changes{v1.6}{2004/12/07}{OpenType ligature features: \opt{Contextual} -% and \opt{Historical}.} -% \begin{macrocode} -\zf@define@font@feature{Ligatures} -\zf@define@feature@option{Ligatures}{Required} {1}{0}{+rlig} -\zf@define@feature@option{Ligatures}{NoRequired} {1}{1}{-rlig} -\zf@define@feature@option{Ligatures}{Common} {1}{2}{+liga} -\zf@define@feature@option{Ligatures}{NoCommon} {1}{3}{-liga} -\zf@define@feature@option{Ligatures}{Rare} {1}{4}{+dlig} -\zf@define@feature@option{Ligatures}{NoRare} {1}{5}{-dlig} -\zf@define@feature@option{Ligatures}{Discretionary} {1}{4}{+dlig} -\zf@define@feature@option{Ligatures}{NoDiscretionary}{1}{5}{-dlig} -\zf@define@feature@option{Ligatures}{Contextual} {}{} {+clig} -\zf@define@feature@option{Ligatures}{NoContextual} {}{} {-clig} -\zf@define@feature@option{Ligatures}{Historical} {}{} {+hlig} -\zf@define@feature@option{Ligatures}{NoHistorical} {}{} {-hlig} -\zf@define@feature@option{Ligatures}{Logos} {1}{6} {} -\zf@define@feature@option{Ligatures}{NoLogos} {1}{7} {} -\zf@define@feature@option{Ligatures}{Rebus} {1}{8} {} -\zf@define@feature@option{Ligatures}{NoRebus} {1}{9} {} -\zf@define@feature@option{Ligatures}{Diphthong} {1}{10}{} -\zf@define@feature@option{Ligatures}{NoDiphthong} {1}{11}{} -\zf@define@feature@option{Ligatures}{Squared} {1}{12}{} -\zf@define@feature@option{Ligatures}{NoSquared} {1}{13}{} -\zf@define@feature@option{Ligatures}{AbbrevSquared} {1}{14}{} -\zf@define@feature@option{Ligatures}{NoAbbrevSquared}{1}{15}{} -\zf@define@feature@option{Ligatures}{Icelandic} {1}{32}{} -\zf@define@feature@option{Ligatures}{NoIcelandic} {1}{33}{} -% \end{macrocode} -% -% \subsubsection{Letters} -% \changes{v1.3a}{2004/10/29}{Bug fix for OpenType small caps.} -% \changes{v1.6}{2005/01/02}{\feat{LetterCase} is now \feat{Letters} -% and options changed appropriately.} -% \changes{v1.6}{2004/12/01}{OpenType letters features: -% \opt{PetiteCaps} and \opt{PETITECAPS}.} -% \changes{v1.9}{2005/12/07}{\opt{SMALLCAPS} option changed to \opt{UppercaseSmallCaps} -% to facilitate option normalisation (to come). Similarly for \opt{PETITECAPS}.} -% \begin{macrocode} -\zf@define@font@feature{Letters} -\zf@define@feature@option{Letters}{Normal} {3}{0}{} -\zf@define@feature@option{Letters}{Uppercase} {3}{1}{+case} -\zf@define@feature@option{Letters}{Lowercase} {3}{2}{} -\zf@define@feature@option{Letters}{SmallCaps} {3}{3}{+smcp} -\zf@define@feature@option{Letters}{PetiteCaps} {} {} {+pcap} -\zf@define@feature@option{Letters}{UppercaseSmallCaps} {} {} {+c2sc} -\zf@define@feature@option{Letters}{UppercasePetiteCaps}{} {} {+c2pc} -\zf@define@feature@option{Letters}{InitialCaps} {3}{4}{} -\zf@define@feature@option{Letters}{Unicase} {} {} {+unic} -% \end{macrocode} -% -% \subsubsection{Numbers} -% -% These were originally separated into \feat{NumberCase} and -% \feat{NumberSpacing} following AAT, but it makes more sense to -% combine them. -% -% Both naming conventions are offered to select the number case. -% -% \changes{v1.7}{2005/04/18}{AAT \feat{Numbers}:\opt{SlashedZero}.} -% \begin{macrocode} -\zf@define@font@feature{Numbers} -\zf@define@feature@option{Numbers}{Monospaced} {6} {0}{+tnum} -\zf@define@feature@option{Numbers}{Proportional} {6} {1}{+pnum} -\zf@define@feature@option{Numbers}{Lowercase} {21}{0}{+onum} -\zf@define@feature@option{Numbers}{OldStyle} {21}{0}{+onum} -\zf@define@feature@option{Numbers}{Uppercase} {21}{1}{+lnum} -\zf@define@feature@option{Numbers}{Lining} {21}{1}{+lnum} -\zf@define@feature@option{Numbers}{SlashedZero} {14}{5}{+zero} -\zf@define@feature@option{Numbers}{NoSlashedZero}{14}{4}{-zero} -% \end{macrocode} -% -% \subsubsection{Contextuals} -% \begin{macrocode} -\zf@define@font@feature {Contextuals} -\zf@define@feature@option{Contextuals}{Swash} {} {} {+cswh} -\zf@define@feature@option{Contextuals}{NoSwash} {} {} {-cswh} -\zf@define@feature@option{Contextuals}{Alternate} {} {} {+calt} -\zf@define@feature@option{Contextuals}{NoAlternate} {} {} {-calt} -\zf@define@feature@option{Contextuals}{WordInitial} {8}{0}{+init} -\zf@define@feature@option{Contextuals}{NoWordInitial}{8}{1}{-init} -\zf@define@feature@option{Contextuals}{WordFinal} {8}{2}{+fina} -\zf@define@feature@option{Contextuals}{NoWordFinal} {8}{3}{-fina} -\zf@define@feature@option{Contextuals}{LineInitial} {8}{4}{} -\zf@define@feature@option{Contextuals}{NoLineInitial}{8}{5}{} -\zf@define@feature@option{Contextuals}{LineFinal} {8}{6}{+falt} -\zf@define@feature@option{Contextuals}{NoLineFinal} {8}{7}{-falt} -\zf@define@feature@option{Contextuals}{Inner} {8}{8}{+medi} -\zf@define@feature@option{Contextuals}{NoInner} {8}{9}{-medi} -% \end{macrocode} -% \changes{v1.9}{2005/12/21}{\feat{Swashes} feature changed to \feat{Contextuals}. Option of this feature \opt{Contextual} changed to \opt{Swash}, for obvious reasons.} -% \changes{v1.18}{2008/07/12}{New \feat{Contextuals} option: \opt{Alternate}.} -% -% \subsubsection{Diacritics} -% \begin{macrocode} -\zf@define@font@feature{Diacritics} -\zf@define@feature@option{Diacritics}{Show} {9}{0}{} -\zf@define@feature@option{Diacritics}{Hide} {9}{1}{} -\zf@define@feature@option{Diacritics}{Decompose}{9}{2}{} -% \end{macrocode} -% -% \subsubsection{Kerning} -% \changes{v1.9}{2006/02/12}{New feature \feat{Kerning}.} -% \begin{macrocode} -\zf@define@font@feature{Kerning} -\zf@define@feature@option{Kerning}{Uppercase}{}{}{+cpsp} -\zf@define@feature@option{Kerning}{On} {}{}{+kern} -\zf@define@feature@option{Kerning}{Off} {}{}{-kern} -%\zf@define@feature@option{Kerning}{Vertical}{}{}{+vkrn} -%\zf@define@feature@option{Kerning} -% {VerticalAlternateProportional}{}{}{+vpal} -%\zf@define@feature@option{Kerning}{VerticalAlternateHalfWidth}{}{}{+vhal} -% \end{macrocode} -% -% \subsubsection{Vertical position} -% \begin{macrocode} -\zf@define@font@feature{VerticalPosition} -\zf@define@feature@option{VerticalPosition}{Normal} {10}{0}{} -\zf@define@feature@option{VerticalPosition}{Superior} {10}{1}{+sups} -\zf@define@feature@option{VerticalPosition}{Inferior} {10}{2}{+subs} -\zf@define@feature@option{VerticalPosition}{Ordinal} {10}{3}{+ordn} -\zf@define@feature@option{VerticalPosition}{Numerator} {} {} {+numr} -\zf@define@feature@option{VerticalPosition}{Denominator}{} {} {+dnom} -\zf@define@feature@option{VerticalPosition}{ScientificInferior}{}{}{+sinf} -% \end{macrocode} -% -% \subsubsection{Fractions} -% \changes{v1.6}{2005/03/05}{All AAT \feat{Fractions} features offered.} -% \changes{v1.7}{2005/03/25}{OpenType \opt{Alternate} \feat{Fractions} feature.} -% \begin{macrocode} -\zf@define@font@feature{Fractions} -\zf@define@feature@option{Fractions}{On} {11}{1}{+frac} -\zf@define@feature@option{Fractions}{Off} {11}{0}{-frac} -\zf@define@feature@option{Fractions}{Diagonal} {11}{2}{} -\zf@define@feature@option{Fractions}{Alternate}{} {} {+afrc} -% \end{macrocode} -% -% \subsubsection{Alternates and variants} -% Selected numerically because they don't have standard names. Very -% easy to process, very annoying for the user! -% -% \changes{v1.6}{2005/03/05}{OpenType stylistic sets supports under the \feat{Variant} option.} -% \changes{v1.7}{2005/03/26}{OpenType \feat{Alternate} now only AAT.} -% \changes{v1.9}{2006/02/12}{Alternate/Variant options can be assigned names.} -% \changes{v1.11}{2006/06/17}{OpenType \feat{Variant} fixed.} -% \changes{v1.18}{2008/07/12}{OpenType \feat{Alternate} now uses \texttt{salt}.} -% -% \begin{macrocode} -\define@key[zf]{options}{Alternate}[0]{% - \setkeys*[zf@feat]{Alternate}{#1}% - \unless\ifx\XKV@rm\@empty - \def\XKV@tfam{Alternate}% - \zf@make@feature{17}{#1}{+salt=#1}% - \fi} -% \end{macrocode} -% -% \begin{macrocode} -\define@key[zf]{options}{Variant}{% - \setkeys*[zf@feat]{Variant}{#1}% - \unless\ifx\XKV@rm\@empty - \def\XKV@tfam{Variant}% - \zf@make@feature{18}{#1}{+ss\two@digits{#1}}% - \fi} -% \end{macrocode} -% -% \subsubsection{Style} -% \begin{macrocode} -\zf@define@font@feature{Style} -\zf@define@feature@option{Style}{Alternate} {} {} {+salt} -\zf@define@feature@option{Style}{Italic} {32}{2}{+ital} -\zf@define@feature@option{Style}{Ruby} {28}{2}{+ruby} -\zf@define@feature@option{Style}{Swash} {} {} {+swsh} -\zf@define@feature@option{Style}{Historic} {} {} {+hist} -\zf@define@feature@option{Style}{Display} {19}{1}{} -\zf@define@feature@option{Style}{Engraved} {19}{2}{} -\zf@define@feature@option{Style}{TitlingCaps} {19}{4}{+titl} -\zf@define@feature@option{Style}{TallCaps} {19}{5}{} -\zf@define@feature@option{Style}{HorizontalKana}{} {} {+hkna} -\zf@define@feature@option{Style}{VerticalKana} {} {} {+vkna} -% \end{macrocode} -% \changes{v1.7}{2005/03/26} -% {\feat{Style} feature renamed from \feat{StyleOptions}.} -% -% \subsubsection{CJK shape} -% \begin{macrocode} -\zf@define@font@feature{CJKShape} -\zf@define@feature@option{CJKShape}{Traditional}{20}{0} {+trad} -\zf@define@feature@option{CJKShape}{Simplified} {20}{1} {+smpl} -\zf@define@feature@option{CJKShape}{JIS1978} {20}{2} {+jp78} -\zf@define@feature@option{CJKShape}{JIS1983} {20}{3} {+jp83} -\zf@define@feature@option{CJKShape}{JIS1990} {20}{4} {+jp90} -\zf@define@feature@option{CJKShape}{Expert} {20}{10}{+expt} -\zf@define@feature@option{CJKShape}{NLC} {20}{13}{+nlck} -% \end{macrocode} -% \changes{v1.7}{2005/03/26}{New feature: \feat{CharacterShape}} -% \changes{v1.9}{2006/02/12}{\feat{CharacterShape} now \feat{CJKShape}} -% -% \subsubsection{Character width} -% \changes{v1.7}{2005/04/18}{New feature: \feat{CharacterWidth}} -% \changes{v1.9}{2006/02/12}{\feat{TextSpacing} now \feat{CharacterWidth}, with associated option names' change.} -% \begin{macrocode} -\zf@define@font@feature{CharacterWidth} -\zf@define@feature@option{CharacterWidth}{Proportional}{22}{0}{+pwid} -\zf@define@feature@option{CharacterWidth}{Full}{22}{1}{+fwid} -\zf@define@feature@option{CharacterWidth}{Half}{22}{2}{+hwid} -\zf@define@feature@option{CharacterWidth}{Third}{22}{3}{+twid} -\zf@define@feature@option{CharacterWidth}{Quarter}{22}{4}{+qwid} -\zf@define@feature@option{CharacterWidth}{AlternateProportional}{22}{5}{+palt} -\zf@define@feature@option{CharacterWidth}{AlternateHalf}{22}{6}{+halt} -\zf@define@feature@option{CharacterWidth}{Default}{22}{7}{} -% \end{macrocode} -% -% \subsubsection{Annotation} -% \changes{v1.7}{2005/03/26}{New feature: \feat{Annotation}} -% \begin{macrocode} -\zf@define@font@feature{Annotation} -\zf@define@feature@option{Annotation}{Off}{24}{0}{-nalt} -\zf@define@feature@option{Annotation}{On}{}{}{+nalt} -\zf@define@feature@option{Annotation}{Box}{24}{1}{} -\zf@define@feature@option{Annotation}{RoundedBox}{24}{2}{} -\zf@define@feature@option{Annotation}{Circle}{24}{3}{} -\zf@define@feature@option{Annotation}{BlackCircle}{24}{4}{} -\zf@define@feature@option{Annotation}{Parenthesis}{24}{5}{} -\zf@define@feature@option{Annotation}{Period}{24}{6}{} -\zf@define@feature@option{Annotation}{RomanNumerals}{24}{7}{} -\zf@define@feature@option{Annotation}{Diamond}{24}{8}{} -\zf@define@feature@option{Annotation}{BlackSquare}{24}{9}{} -\zf@define@feature@option{Annotation}{BlackRoundSquare}{24}{10}{} -\zf@define@feature@option{Annotation}{DoubleCircle}{24}{11}{} -% \end{macrocode} -% -% -% \subsubsection{Vertical} -% \changes{v1.9}{2006/02/12}{New feature \feat{Vertical}.} -% \changes{v1.15}{2007/08/27}{\opt{RotatedGlyphs} now works for ICU fonts.} -% \begin{macrocode} -\zf@define@font@feature{Vertical} -\define@key[zf@feat]{Vertical}{RotatedGlyphs}[]{% - \ifzf@icu - \zf@make@feature{}{}{+vrt2}% - \zf@update@family{+vert}% - \zf@update@ff{vertical}% - \else - \zf@update@family{+vert}% - \zf@update@ff{vertical}% - \fi} -% \end{macrocode} -% -% \subsubsection{Script} -% \changes{v1.6}{2005/02/28}{New OpenType feature: \opt{Script}} -% \begin{macrocode} -\newfontscript{Arabic}{arab} \newfontscript{Armenian}{armn} -\newfontscript{Balinese}{bali} \newfontscript{Bengali}{beng} -\newfontscript{Bopomofo}{bopo} \newfontscript{Braille}{brai} -\newfontscript{Buginese}{bugi} \newfontscript{Buhid}{buhd} -\newfontscript{Byzantine Music}{byzm} \newfontscript{Canadian Syllabics}{cans} -\newfontscript{Cherokee}{cher} -\newfontscript{CJK Ideographic}{hani} \newfontscript{Coptic}{copt} -\newfontscript{Cypriot Syllabary}{cprt} \newfontscript{Cyrillic}{cyrl} -\newfontscript{Default}{DFLT} \newfontscript{Deseret}{dsrt} -\newfontscript{Devanagari}{deva} \newfontscript{Ethiopic}{ethi} -\newfontscript{Georgian}{geor} \newfontscript{Glagolitic}{glag} -\newfontscript{Gothic}{goth} \newfontscript{Greek}{grek} -\newfontscript{Gujarati}{gujr} \newfontscript{Gurmukhi}{guru} -\newfontscript{Hangul Jamo}{jamo} \newfontscript{Hangul}{hang} -\newfontscript{Hanunoo}{hano} \newfontscript{Hebrew}{hebr} -\newfontscript{Hiragana and Katakana}{kana} -\newfontscript{Javanese}{java} \newfontscript{Kannada}{knda} -\newfontscript{Kharosthi}{khar} \newfontscript{Khmer}{khmr} -\newfontscript{Lao}{lao } \newfontscript{Latin}{latn} -\newfontscript{Limbu}{limb} \newfontscript{Linear B}{linb} -\newfontscript{Malayalam}{mlym} \newfontscript{Math}{math} -\newfontscript{Mongolian}{mong} -\newfontscript{Musical Symbols}{musc} \newfontscript{Myanmar}{mymr} -\newfontscript{N'ko}{nko } \newfontscript{Ogham}{ogam} -\newfontscript{Old Italic}{ital} -\newfontscript{Old Persian Cuneiform}{xpeo} -\newfontscript{Oriya}{orya} \newfontscript{Osmanya}{osma} -\newfontscript{Phags-pa}{phag} \newfontscript{Phoenician}{phnx} -\newfontscript{Runic}{runr} \newfontscript{Shavian}{shaw} -\newfontscript{Sinhala}{sinh} -\newfontscript{Sumero-Akkadian Cuneiform}{xsux} -\newfontscript{Syloti Nagri}{sylo} \newfontscript{Syriac}{syrc} -\newfontscript{Tagalog}{tglg} \newfontscript{Tagbanwa}{tagb} -\newfontscript{Tai Le}{tale} \newfontscript{Tai Lu}{talu} -\newfontscript{Tamil}{taml} \newfontscript{Telugu}{telu} -\newfontscript{Thaana}{thaa} \newfontscript{Thai}{thai} -\newfontscript{Tibetan}{tibt} \newfontscript{Tifinagh}{tfng} -\newfontscript{Ugaritic Cuneiform}{ugar}\newfontscript{Yi}{yi } -% \end{macrocode} -% -% \subsubsection{Language} -% \changes{v1.6}{2005/03/02}{New OpenType feature: \opt{Language}} -% \begin{macrocode} -\newfontlanguage{Abaza}{ABA}\newfontlanguage{Abkhazian}{ABK} -\newfontlanguage{Adyghe}{ADY}\newfontlanguage{Afrikaans}{AFK} -\newfontlanguage{Afar}{AFR}\newfontlanguage{Agaw}{AGW} -\newfontlanguage{Altai}{ALT}\newfontlanguage{Amharic}{AMH} -\newfontlanguage{Arabic}{ARA}\newfontlanguage{Aari}{ARI} -\newfontlanguage{Arakanese}{ARK}\newfontlanguage{Assamese}{ASM} -\newfontlanguage{Athapaskan}{ATH}\newfontlanguage{Avar}{AVR} -\newfontlanguage{Awadhi}{AWA}\newfontlanguage{Aymara}{AYM} -\newfontlanguage{Azeri}{AZE}\newfontlanguage{Badaga}{BAD} -\newfontlanguage{Baghelkhandi}{BAG}\newfontlanguage{Balkar}{BAL} -\newfontlanguage{Baule}{BAU}\newfontlanguage{Berber}{BBR} -\newfontlanguage{Bench}{BCH}\newfontlanguage{Bible Cree}{BCR} -\newfontlanguage{Belarussian}{BEL}\newfontlanguage{Bemba}{BEM} -\newfontlanguage{Bengali}{BEN}\newfontlanguage{Bulgarian}{BGR} -\newfontlanguage{Bhili}{BHI}\newfontlanguage{Bhojpuri}{BHO} -\newfontlanguage{Bikol}{BIK}\newfontlanguage{Bilen}{BIL} -\newfontlanguage{Blackfoot}{BKF}\newfontlanguage{Balochi}{BLI} -\newfontlanguage{Balante}{BLN}\newfontlanguage{Balti}{BLT} -\newfontlanguage{Bambara}{BMB}\newfontlanguage{Bamileke}{BML} -\newfontlanguage{Breton}{BRE}\newfontlanguage{Brahui}{BRH} -\newfontlanguage{Braj Bhasha}{BRI}\newfontlanguage{Burmese}{BRM} -\newfontlanguage{Bashkir}{BSH}\newfontlanguage{Beti}{BTI} -\newfontlanguage{Catalan}{CAT}\newfontlanguage{Cebuano}{CEB} -\newfontlanguage{Chechen}{CHE}\newfontlanguage{Chaha Gurage}{CHG} -\newfontlanguage{Chattisgarhi}{CHH}\newfontlanguage{Chichewa}{CHI} -\newfontlanguage{Chukchi}{CHK}\newfontlanguage{Chipewyan}{CHP} -\newfontlanguage{Cherokee}{CHR}\newfontlanguage{Chuvash}{CHU} -\newfontlanguage{Comorian}{CMR}\newfontlanguage{Coptic}{COP} -\newfontlanguage{Cree}{CRE}\newfontlanguage{Carrier}{CRR} -\newfontlanguage{Crimean Tatar}{CRT}\newfontlanguage{Church Slavonic}{CSL} -\newfontlanguage{Czech}{CSY}\newfontlanguage{Danish}{DAN} -\newfontlanguage{Dargwa}{DAR}\newfontlanguage{Woods Cree}{DCR} -\newfontlanguage{German}{DEU}\newfontlanguage{Default}{DFLT} -\newfontlanguage{Dogri}{DGR}\newfontlanguage{Divehi}{DIV} -\newfontlanguage{Djerma}{DJR}\newfontlanguage{Dangme}{DNG} -\newfontlanguage{Dinka}{DNK}\newfontlanguage{Dungan}{DUN} -\newfontlanguage{Dzongkha}{DZN}\newfontlanguage{Ebira}{EBI} -\newfontlanguage{Eastern Cree}{ECR}\newfontlanguage{Edo}{EDO} -\newfontlanguage{Efik}{EFI}\newfontlanguage{Greek}{ELL} -\newfontlanguage{English}{ENG}\newfontlanguage{Erzya}{ERZ} -\newfontlanguage{Spanish}{ESP}\newfontlanguage{Estonian}{ETI} -\newfontlanguage{Basque}{EUQ}\newfontlanguage{Evenki}{EVK} -\newfontlanguage{Even}{EVN}\newfontlanguage{Ewe}{EWE} -\newfontlanguage{French Antillean}{FAN}\newfontlanguage{Farsi}{FAR} -\newfontlanguage{Finnish}{FIN}\newfontlanguage{Fijian}{FJI} -\newfontlanguage{Flemish}{FLE}\newfontlanguage{Forest Nenets}{FNE} -\newfontlanguage{Fon}{FON}\newfontlanguage{Faroese}{FOS} -\newfontlanguage{French}{FRA}\newfontlanguage{Frisian}{FRI} -\newfontlanguage{Friulian}{FRL}\newfontlanguage{Futa}{FTA} -\newfontlanguage{Fulani}{FUL}\newfontlanguage{Ga}{GAD} -\newfontlanguage{Gaelic}{GAE}\newfontlanguage{Gagauz}{GAG} -\newfontlanguage{Galician}{GAL}\newfontlanguage{Garshuni}{GAR} -\newfontlanguage{Garhwali}{GAW}\newfontlanguage{Ge'ez}{GEZ} -\newfontlanguage{Gilyak}{GIL}\newfontlanguage{Gumuz}{GMZ} -\newfontlanguage{Gondi}{GON}\newfontlanguage{Greenlandic}{GRN} -\newfontlanguage{Garo}{GRO}\newfontlanguage{Guarani}{GUA} -\newfontlanguage{Gujarati}{GUJ}\newfontlanguage{Haitian}{HAI} -\newfontlanguage{Halam}{HAL}\newfontlanguage{Harauti}{HAR} -\newfontlanguage{Hausa}{HAU}\newfontlanguage{Hawaiin}{HAW} -\newfontlanguage{Hammer-Banna}{HBN}\newfontlanguage{Hiligaynon}{HIL} -\newfontlanguage{Hindi}{HIN}\newfontlanguage{High Mari}{HMA} -\newfontlanguage{Hindko}{HND}\newfontlanguage{Ho}{HO} -\newfontlanguage{Harari}{HRI}\newfontlanguage{Croatian}{HRV} -\newfontlanguage{Hungarian}{HUN}\newfontlanguage{Armenian}{HYE} -\newfontlanguage{Igbo}{IBO}\newfontlanguage{Ijo}{IJO} -\newfontlanguage{Ilokano}{ILO}\newfontlanguage{Indonesian}{IND} -\newfontlanguage{Ingush}{ING}\newfontlanguage{Inuktitut}{INU} -\newfontlanguage{Irish}{IRI}\newfontlanguage{Irish Traditional}{IRT} -\newfontlanguage{Icelandic}{ISL}\newfontlanguage{Inari Sami}{ISM} -\newfontlanguage{Italian}{ITA}\newfontlanguage{Hebrew}{IWR} -\newfontlanguage{Javanese}{JAV}\newfontlanguage{Yiddish}{JII} -\newfontlanguage{Japanese}{JAN}\newfontlanguage{Judezmo}{JUD} -\newfontlanguage{Jula}{JUL}\newfontlanguage{Kabardian}{KAB} -\newfontlanguage{Kachchi}{KAC}\newfontlanguage{Kalenjin}{KAL} -\newfontlanguage{Kannada}{KAN}\newfontlanguage{Karachay}{KAR} -\newfontlanguage{Georgian}{KAT}\newfontlanguage{Kazakh}{KAZ} -\newfontlanguage{Kebena}{KEB}\newfontlanguage{Khutsuri Georgian}{KGE} -\newfontlanguage{Khakass}{KHA}\newfontlanguage{Khanty-Kazim}{KHK} -\newfontlanguage{Khmer}{KHM}\newfontlanguage{Khanty-Shurishkar}{KHS} -\newfontlanguage{Khanty-Vakhi}{KHV}\newfontlanguage{Khowar}{KHW} -\newfontlanguage{Kikuyu}{KIK}\newfontlanguage{Kirghiz}{KIR} -\newfontlanguage{Kisii}{KIS}\newfontlanguage{Kokni}{KKN} -\newfontlanguage{Kalmyk}{KLM}\newfontlanguage{Kamba}{KMB} -\newfontlanguage{Kumaoni}{KMN}\newfontlanguage{Komo}{KMO} -\newfontlanguage{Komso}{KMS}\newfontlanguage{Kanuri}{KNR} -\newfontlanguage{Kodagu}{KOD}\newfontlanguage{Korean Old Hangul}{KOH} -\newfontlanguage{Konkani}{KOK}\newfontlanguage{Kikongo}{KON} -\newfontlanguage{Komi-Permyak}{KOP}\newfontlanguage{Korean}{KOR} -\newfontlanguage{Komi-Zyrian}{KOZ}\newfontlanguage{Kpelle}{KPL} -\newfontlanguage{Krio}{KRI}\newfontlanguage{Karakalpak}{KRK} -\newfontlanguage{Karelian}{KRL}\newfontlanguage{Karaim}{KRM} -\newfontlanguage{Karen}{KRN}\newfontlanguage{Koorete}{KRT} -\newfontlanguage{Kashmiri}{KSH}\newfontlanguage{Khasi}{KSI} -\newfontlanguage{Kildin Sami}{KSM}\newfontlanguage{Kui}{KUI} -\newfontlanguage{Kulvi}{KUL}\newfontlanguage{Kumyk}{KUM} -\newfontlanguage{Kurdish}{KUR}\newfontlanguage{Kurukh}{KUU} -\newfontlanguage{Kuy}{KUY}\newfontlanguage{Koryak}{KYK} -\newfontlanguage{Ladin}{LAD}\newfontlanguage{Lahuli}{LAH} -\newfontlanguage{Lak}{LAK}\newfontlanguage{Lambani}{LAM} -\newfontlanguage{Lao}{LAO}\newfontlanguage{Latin}{LAT} -\newfontlanguage{Laz}{LAZ}\newfontlanguage{L-Cree}{LCR} -\newfontlanguage{Ladakhi}{LDK}\newfontlanguage{Lezgi}{LEZ} -\newfontlanguage{Lingala}{LIN}\newfontlanguage{Low Mari}{LMA} -\newfontlanguage{Limbu}{LMB}\newfontlanguage{Lomwe}{LMW} -\newfontlanguage{Lower Sorbian}{LSB}\newfontlanguage{Lule Sami}{LSM} -\newfontlanguage{Lithuanian}{LTH}\newfontlanguage{Luba}{LUB} -\newfontlanguage{Luganda}{LUG}\newfontlanguage{Luhya}{LUH} -\newfontlanguage{Luo}{LUO}\newfontlanguage{Latvian}{LVI} -\newfontlanguage{Majang}{MAJ}\newfontlanguage{Makua}{MAK} -\newfontlanguage{Malayalam Traditional}{MAL}\newfontlanguage{Mansi}{MAN} -\newfontlanguage{Marathi}{MAR}\newfontlanguage{Marwari}{MAW} -\newfontlanguage{Mbundu}{MBN}\newfontlanguage{Manchu}{MCH} -\newfontlanguage{Moose Cree}{MCR}\newfontlanguage{Mende}{MDE} -\newfontlanguage{Me'en}{MEN}\newfontlanguage{Mizo}{MIZ} -\newfontlanguage{Macedonian}{MKD}\newfontlanguage{Male}{MLE} -\newfontlanguage{Malagasy}{MLG}\newfontlanguage{Malinke}{MLN} -\newfontlanguage{Malayalam Reformed}{MLR}\newfontlanguage{Malay}{MLY} -\newfontlanguage{Mandinka}{MND}\newfontlanguage{Mongolian}{MNG} -\newfontlanguage{Manipuri}{MNI}\newfontlanguage{Maninka}{MNK} -\newfontlanguage{Manx Gaelic}{MNX}\newfontlanguage{Moksha}{MOK} -\newfontlanguage{Moldavian}{MOL}\newfontlanguage{Mon}{MON} -\newfontlanguage{Moroccan}{MOR}\newfontlanguage{Maori}{MRI} -\newfontlanguage{Maithili}{MTH}\newfontlanguage{Maltese}{MTS} -\newfontlanguage{Mundari}{MUN}\newfontlanguage{Naga-Assamese}{NAG} -\newfontlanguage{Nanai}{NAN}\newfontlanguage{Naskapi}{NAS} -\newfontlanguage{N-Cree}{NCR}\newfontlanguage{Ndebele}{NDB} -\newfontlanguage{Ndonga}{NDG}\newfontlanguage{Nepali}{NEP} -\newfontlanguage{Newari}{NEW}\newfontlanguage{Nagari}{NGR} -\newfontlanguage{Norway House Cree}{NHC}\newfontlanguage{Nisi}{NIS} -\newfontlanguage{Niuean}{NIU}\newfontlanguage{Nkole}{NKL} -\newfontlanguage{N'ko}{NKO}\newfontlanguage{Dutch}{NLD} -\newfontlanguage{Nogai}{NOG}\newfontlanguage{Norwegian}{NOR} -\newfontlanguage{Northern Sami}{NSM}\newfontlanguage{Northern Tai}{NTA} -\newfontlanguage{Esperanto}{NTO}\newfontlanguage{Nynorsk}{NYN} -\newfontlanguage{Oji-Cree}{OCR}\newfontlanguage{Ojibway}{OJB} -\newfontlanguage{Oriya}{ORI}\newfontlanguage{Oromo}{ORO} -\newfontlanguage{Ossetian}{OSS}\newfontlanguage{Palestinian Aramaic}{PAA} -\newfontlanguage{Pali}{PAL}\newfontlanguage{Punjabi}{PAN} -\newfontlanguage{Palpa}{PAP}\newfontlanguage{Pashto}{PAS} -\newfontlanguage{Polytonic Greek}{PGR}\newfontlanguage{Pilipino}{PIL} -\newfontlanguage{Palaung}{PLG}\newfontlanguage{Polish}{PLK} -\newfontlanguage{Provencal}{PRO}\newfontlanguage{Portuguese}{PTG} -\newfontlanguage{Chin}{QIN}\newfontlanguage{Rajasthani}{RAJ} -\newfontlanguage{R-Cree}{RCR}\newfontlanguage{Russian Buriat}{RBU} -\newfontlanguage{Riang}{RIA}\newfontlanguage{Rhaeto-Romanic}{RMS} -\newfontlanguage{Romanian}{ROM}\newfontlanguage{Romany}{ROY} -\newfontlanguage{Rusyn}{RSY}\newfontlanguage{Ruanda}{RUA} -\newfontlanguage{Russian}{RUS}\newfontlanguage{Sadri}{SAD} -\newfontlanguage{Sanskrit}{SAN}\newfontlanguage{Santali}{SAT} -\newfontlanguage{Sayisi}{SAY}\newfontlanguage{Sekota}{SEK} -\newfontlanguage{Selkup}{SEL}\newfontlanguage{Sango}{SGO} -\newfontlanguage{Shan}{SHN}\newfontlanguage{Sibe}{SIB} -\newfontlanguage{Sidamo}{SID}\newfontlanguage{Silte Gurage}{SIG} -\newfontlanguage{Skolt Sami}{SKS}\newfontlanguage{Slovak}{SKY} -\newfontlanguage{Slavey}{SLA}\newfontlanguage{Slovenian}{SLV} -\newfontlanguage{Somali}{SML}\newfontlanguage{Samoan}{SMO} -\newfontlanguage{Sena}{SNA}\newfontlanguage{Sindhi}{SND} -\newfontlanguage{Sinhalese}{SNH}\newfontlanguage{Soninke}{SNK} -\newfontlanguage{Sodo Gurage}{SOG}\newfontlanguage{Sotho}{SOT} -\newfontlanguage{Albanian}{SQI}\newfontlanguage{Serbian}{SRB} -\newfontlanguage{Saraiki}{SRK}\newfontlanguage{Serer}{SRR} -\newfontlanguage{South Slavey}{SSL}\newfontlanguage{Southern Sami}{SSM} -\newfontlanguage{Suri}{SUR}\newfontlanguage{Svan}{SVA} -\newfontlanguage{Swedish}{SVE}\newfontlanguage{Swadaya Aramaic}{SWA} -\newfontlanguage{Swahili}{SWK}\newfontlanguage{Swazi}{SWZ} -\newfontlanguage{Sutu}{SXT}\newfontlanguage{Syriac}{SYR} -\newfontlanguage{Tabasaran}{TAB}\newfontlanguage{Tajiki}{TAJ} -\newfontlanguage{Tamil}{TAM}\newfontlanguage{Tatar}{TAT} -\newfontlanguage{TH-Cree}{TCR}\newfontlanguage{Telugu}{TEL} -\newfontlanguage{Tongan}{TGN}\newfontlanguage{Tigre}{TGR} -\newfontlanguage{Tigrinya}{TGY}\newfontlanguage{Thai}{THA} -\newfontlanguage{Tahitian}{THT}\newfontlanguage{Tibetan}{TIB} -\newfontlanguage{Turkmen}{TKM}\newfontlanguage{Temne}{TMN} -\newfontlanguage{Tswana}{TNA}\newfontlanguage{Tundra Nenets}{TNE} -\newfontlanguage{Tonga}{TNG}\newfontlanguage{Todo}{TOD} -\newfontlanguage{Tsonga}{TSG}\newfontlanguage{Turoyo Aramaic}{TUA} -\newfontlanguage{Tulu}{TUL}\newfontlanguage{Tuvin}{TUV} -\newfontlanguage{Twi}{TWI}\newfontlanguage{Udmurt}{UDM} -\newfontlanguage{Ukrainian}{UKR}\newfontlanguage{Urdu}{URD} -\newfontlanguage{Upper Sorbian}{USB}\newfontlanguage{Uyghur}{UYG} -\newfontlanguage{Uzbek}{UZB}\newfontlanguage{Venda}{VEN} -\newfontlanguage{Vietnamese}{VIT}\newfontlanguage{Wa}{WA} -\newfontlanguage{Wagdi}{WAG}\newfontlanguage{West-Cree}{WCR} -\newfontlanguage{Welsh}{WEL}\newfontlanguage{Wolof}{WLF} -\newfontlanguage{Tai Lue}{XBD}\newfontlanguage{Xhosa}{XHS} -\newfontlanguage{Yakut}{YAK}\newfontlanguage{Yoruba}{YBA} -\newfontlanguage{Y-Cree}{YCR}\newfontlanguage{Yi Classic}{YIC} -\newfontlanguage{Yi Modern}{YIM}\newfontlanguage{Chinese Hong Kong}{ZHH} -\newfontlanguage{Chinese Phonetic}{ZHP}\newfontlanguage{Chinese Simplified}{ZHS} -\newfontlanguage{Chinese Traditional}{ZHT}\newfontlanguage{Zande}{ZND} -\newfontlanguage{Zulu}{ZUL} -% \end{macrocode} -% -% \paragraph{Turkish} Turns out that many fonts use `TUR' as their Turkish language tag rather than the specified `TRK'. So we check for both: -% \begin{macrocode} -\define@key[zf@feat]{Lang}{Turkish}[]{% - \zf@check@ot@lang{TRK}% - \if@tempswa - \c@zf@language\@tempcnta\relax - \xdef\zf@language@name{Turkish}% - \xdef\zf@family@long{\zf@family@long+lang=Turkish}% - \xdef\zf@pre@ff{\zf@pre@ff language=TRK,}% - \else - \zf@check@ot@lang{TUR}% - \if@tempswa - \c@zf@language\@tempcnta\relax - \xdef\zf@language@name{Turkish}% - \xdef\zf@family@long{\zf@family@long+lang=Turkish}% - \xdef\zf@pre@ff{\zf@pre@ff language=TUR,}% - \else - \zf@PackageWarning{Language '#1' not available\zf@nl - for font \fontname\zf@basefont\zf@nl - with script '\zf@script@name'.}% - \fi - \fi} -% \end{macrocode} -% \changes{v1.11}{2006/07/08}{Added better support for Turkish language selection.} -% -% \subsubsection{Raw feature string} -% This allows savvy \XeTeX-ers to input font features manually if they have -% already memorised the OpenType abbreviations and don't mind not having error checking. -% \begin{macrocode} -\define@key[zf]{options}{RawFeature}{% - \zf@update@family{+Raw:#1}% - \zf@update@ff{#1}} -% \end{macrocode} -% \changes{v1.13}{2006/12/24}{\feat{RawFeature} added} -% -% \subsection{Italic small caps} \label{sec:sishape} -% The following code for utilising italic small caps sensibly is -% inspired from Philip Lehman's \textit{The Font Installation -% Guide}. Note that |\upshape| needs to be used \emph{twice} to get -% from italic small caps to regular upright (it always goes to small -% caps, then regular upright). -% \begin{macro}{\sishape} -% \begin{macro}{\textsi} -% First, the commands for actually selecting italic small caps are -% defined. I use |si| as the NFSS shape for italic small caps, but -% I have seen |itsc| and |slsc| also used. |\sidefault| may be -% redefined to one of these if required for compatibility. -% \begin{macrocode} -\providecommand*{\sidefault}{si} -\DeclareRobustCommand{\sishape}{% - \not@math@alphabet\sishape\relax - \fontshape\sidefault\selectfont} -\DeclareTextFontCommand{\textsi}{\sishape} -% \end{macrocode} -% \end{macro} \end{macro} -% \begin{macro}{\zf@merge@shape} -% This is the macro which enables the overload on the |\..shape| -% commands. It takes three such arguments. In essence, the macro -% selects the first argument, unless the second argument is already -% selected, in which case it selects the third. -% \begin{macrocode} -\newcommand*{\zf@merge@shape}[3]{% - \edef\@tempa{#1}% - \edef\@tempb{#2}% - \ifx\f@shape\@tempb - \ifcsname\f@encoding/\f@family/\f@series/#3\endcsname - \edef\@tempa{#3}% - \fi - \fi - \fontshape{\@tempa}\selectfont} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\itshape} \begin{macro}{\scshape} \begin{macro}{\upshape} -% Here the original |\..shape| commands are redefined to use the -% merge shape macro. -% \begin{macrocode} -\DeclareRobustCommand{\itshape}{% - \not@math@alphabet\itshape\mathit - \zf@merge@shape\itdefault\scdefault\sidefault} -\DeclareRobustCommand{\slshape}{% - \not@math@alphabet\slshape\relax - \zf@merge@shape\sldefault\scdefault\sidefault} -\DeclareRobustCommand{\scshape}{% - \not@math@alphabet\scshape\relax - \zf@merge@shape\scdefault\itdefault\sidefault} -\DeclareRobustCommand{\upshape}{% - \not@math@alphabet\upshape\relax - \zf@merge@shape\updefault\sidefault\scdefault} -% \end{macrocode} -% \end{macro} \end{macro} \end{macro} -% -% \begin{macro}{\em} -% \begin{macro}{\emph} -% Redefinitions moved to the \pkg{xltxtra} package. -% \changes{v1.9}{2005/10/27}{Redefined \cmd\em\ in order for nested emphases to work.} -% \changes{v1.11}{2006/08/12}{Redefinitions moved to \pkg{xltxtra}.} -% \end{macro} \end{macro} -% -% \subsection{Selecting maths fonts} -% Here, the fonts used in math mode are redefined to correspond to the -% default roman, sans serif and typewriter fonts. Unfortunately, you -% can only define maths fonts in the preamble, otherwise I'd run this -% code whenever \cs{setmainfont} and friends was run. -% -% \begin{macro}{\zf@math} -% \changes{v1.4}{2004/11/25}{Selects the default \cs{mathXX} fonts.} -% \changes{v1.5a}{2004/12/03}{Added fix for Computer Modern maths.} -% \changes{v1.6}{2005/02/25}{Removed mathtime support since XeTeX -% doesn't handle virtual fonts. Why did I put it in in the first place?} -% \changes{v1.8}{2005/07/04}{Finally fixed legacy maths font -% issues. Also checks that euler.sty is loaded in the right order.} -% \changes{v1.8}{2005/07/04}{Added support for user-specified -% \cmd\mathrm\ and others.} -% \changes{v1.8a}{2005/07/15}{Added conditional to \cmd\colon\ math symbol (incompatibility with lucida and amsmath)} -% \changes{v1.9}{2005/07/18}{Maths hex numbers converted to decimal.} -% \changes{v1.10}{2006/04/25}{Added \pkg{lucimatx} checking. (Not really tested, though.)} -% \changes{v1.10}{2006/04/25}{Fixed Lucida bug (missing \cmd\else!)} -% -% Everything here is performed \cs{AtBeginDocument} in order to -% overwrite \pkg{euler}'s attempt. This means \pkg{fontspec} must be -% loaded \emph{before} \pkg{euler}. We set up a conditional to return -% an error if this rule is violated. -% -% Since every maths setup is slightly different, we also take -% different paths for defining various math glyphs depending which -% maths font package has been loaded. As far as I am aware, the only -% two options for \XeTeX\ are \pkg{euler} and \pkg{lucbmath}. Unless -% I've got all confused and the mathtime fonts are not virtual fonts -% either. But I'm pretty sure they are. -% -% \begin{macrocode} -\@ifpackageloaded{euler}{\zf@package@euler@loadedtrue} - {\zf@package@euler@loadedfalse} -\def\zf@math{% - \let\zf@font@warning\@font@warning - \let\@font@warning\@font@info - \@ifpackageloaded{euler}{% - \ifzf@package@euler@loaded - \zf@math@eulertrue - \else - \zf@PackageError{The euler package must be loaded BEFORE fontspec} - {fontspec only overwrites euler's attempt to ^^J - define the maths text fonts if fontspec is ^^J - loaded after euler. Type <return> to proceed ^^J - with incorrect \protect\mathit, \protect\mathbf, etc} - \fi}{} - \@ifpackageloaded{lucbmath}{\zf@math@lucidatrue}{} - \@ifpackageloaded{lucidabr}{\zf@math@lucidatrue}{} - \@ifpackageloaded{lucimatx}{\zf@math@lucidatrue}{} -% \end{macrocode} -% Knuth's CM fonts fonts are all squashed together, combining letters, -% accents, text symbols and maths symbols all in the one font, -% \texttt{cmr}, plus other things in other fonts. Because we are -% changing the roman font in the document, we need to redefine all of -% the maths glyphs in \LaTeX's \texttt{operators} maths font to still -% go back to the legacy \texttt{cmr} font for all these random glyphs, -% unless a separate maths font package has been loaded instead. -% -% In every case, the maths accents are always taken from the -% \texttt{operators} font, which is generally the main text -% font. (Actually, there is a \cmd\hat\ accent in -% \texttt{EulerFractur}, but it's \emph{ugly}. So I ignore it. Sorry -% if this causes inconvenience.) -% \begin{macrocode} - \DeclareSymbolFont{legacymaths}{OT1}{cmr}{m}{n} - \SetSymbolFont{legacymaths}{bold}{OT1}{cmr}{bx}{n} - \DeclareMathAccent{\acute} {\mathalpha}{legacymaths}{19} - \DeclareMathAccent{\grave} {\mathalpha}{legacymaths}{18} - \DeclareMathAccent{\ddot} {\mathalpha}{legacymaths}{127} - \DeclareMathAccent{\tilde} {\mathalpha}{legacymaths}{126} - \DeclareMathAccent{\bar} {\mathalpha}{legacymaths}{22} - \DeclareMathAccent{\breve} {\mathalpha}{legacymaths}{21} - \DeclareMathAccent{\check} {\mathalpha}{legacymaths}{20} - \DeclareMathAccent{\hat} {\mathalpha}{legacymaths}{94} % too bad, euler - \DeclareMathAccent{\dot} {\mathalpha}{legacymaths}{95} - \DeclareMathAccent{\mathring}{\mathalpha}{legacymaths}{23} -% \end{macrocode} -% \paragraph{\cmd\colon: what's going on?} Okay, so \verb":" and \cmd\colon\ in maths mode are defined in a few places, so I need to work out what does what. Respectively, we have: -% \begin{Verbatim}[gobble=2] -% % fontmath.ltx: -% \DeclareMathSymbol{\colon}{\mathpunct}{operators}{"3A} -% \DeclareMathSymbol{:}{\mathrel}{operators}{"3A} -% -% % amsmath.sty: -% \renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript -% \mkern-\thinmuskip{:}\mskip6muplus1mu\relax} -% -% % euler.sty: -% \DeclareMathSymbol{:}\mathrel {EulerFraktur}{"3A} -% -% % lucbmath.sty: -% \DeclareMathSymbol{\@tempb}{\mathpunct}{operators}{58} -% \ifx\colon\@tempb -% \DeclareMathSymbol{\colon}{\mathpunct}{operators}{58} -% \fi -% \DeclareMathSymbol{:}{\mathrel}{operators}{58} -% \end{Verbatim} -% ($\mathrm{3A_{16}}=\mathrm{58_{10}}$) So I think, based on this summary, that it is fair to tell \pkg{fontspec} to `replace' the operators font with legacymaths for this symbol, except when \pkg{amsmath} is loaded since we want to keep its definition. -% -% -% \begin{macrocode} - \begingroup - \mathchardef\@tempa="603A % - \let\next\egroup - \ifx\colon\@tempa - \DeclareMathSymbol{\colon}{\mathpunct}{legacymaths}{58} - \fi - \endgroup -% \end{macrocode} -% The following symbols are only defined specifically in \pkg{euler}, so skip them -% if that package is loaded. -% \begin{macrocode} - \ifzf@math@euler\else - \DeclareMathSymbol{!}{\mathclose}{legacymaths}{33} - \DeclareMathSymbol{:}{\mathrel} {legacymaths}{58} - \DeclareMathSymbol{;}{\mathpunct}{legacymaths}{59} - \DeclareMathSymbol{?}{\mathclose}{legacymaths}{63} -% \end{macrocode} -% And these ones are defined both in \pkg{euler} and \pkg{lucbmath}, -% so we only need to run this code if no extra maths package has been -% loaded. -% \begin{macrocode} - \ifzf@math@lucida\else - \DeclareMathSymbol{0}{\mathalpha}{legacymaths}{`0} - \DeclareMathSymbol{1}{\mathalpha}{legacymaths}{`1} - \DeclareMathSymbol{2}{\mathalpha}{legacymaths}{`2} - \DeclareMathSymbol{3}{\mathalpha}{legacymaths}{`3} - \DeclareMathSymbol{4}{\mathalpha}{legacymaths}{`4} - \DeclareMathSymbol{5}{\mathalpha}{legacymaths}{`5} - \DeclareMathSymbol{6}{\mathalpha}{legacymaths}{`6} - \DeclareMathSymbol{7}{\mathalpha}{legacymaths}{`7} - \DeclareMathSymbol{8}{\mathalpha}{legacymaths}{`8} - \DeclareMathSymbol{9}{\mathalpha}{legacymaths}{`9} - \DeclareMathSymbol{\Gamma}{\mathalpha}{legacymaths}{0} - \DeclareMathSymbol{\Delta}{\mathalpha}{legacymaths}{1} - \DeclareMathSymbol{\Theta}{\mathalpha}{legacymaths}{2} - \DeclareMathSymbol{\Lambda}{\mathalpha}{legacymaths}{3} - \DeclareMathSymbol{\Xi}{\mathalpha}{legacymaths}{4} - \DeclareMathSymbol{\Pi}{\mathalpha}{legacymaths}{5} - \DeclareMathSymbol{\Sigma}{\mathalpha}{legacymaths}{6} - \DeclareMathSymbol{\Upsilon}{\mathalpha}{legacymaths}{7} - \DeclareMathSymbol{\Phi}{\mathalpha}{legacymaths}{8} - \DeclareMathSymbol{\Psi}{\mathalpha}{legacymaths}{9} - \DeclareMathSymbol{\Omega}{\mathalpha}{legacymaths}{10} - \DeclareMathSymbol{+}{\mathbin}{legacymaths}{43} - \DeclareMathSymbol{=}{\mathrel}{legacymaths}{61} - \DeclareMathDelimiter{(}{\mathopen} {legacymaths}{40}{largesymbols}{0} - \DeclareMathDelimiter{)}{\mathclose}{legacymaths}{41}{largesymbols}{1} - \DeclareMathDelimiter{[}{\mathopen} {legacymaths}{91}{largesymbols}{2} - \DeclareMathDelimiter{]}{\mathclose}{legacymaths}{93}{largesymbols}{3} - \DeclareMathDelimiter{/}{\mathord}{legacymaths}{47}{largesymbols}{14} - \DeclareMathSymbol{\mathdollar}{\mathord}{legacymaths}{36} - \fi - \fi -% \end{macrocode} -% Finally, we change the font definitions for \cmd\mathrm\ and so -% on. These are defined using the \cmd\zf@rmmaths\ (\dots) macros, -% which default to \cmd\rmdefault\ but may be specified with the -% \cmd\setmathrm\ (\dots) commands in the preamble. -% -% Since \LaTeX\ only generally defines one level of boldness, we omit -% \cmd\mathbf\ in the \textsf{bold} maths series. It can be specified -% as per usual with \cmd\setboldmathrm, which stores the appropriate -% family name in \cmd\zf@rmboldmaths. -% \begin{macrocode} - \DeclareSymbolFont{operators}\zf@enc\zf@rmmaths\mddefault\updefault - \SetSymbolFont{operators}{normal}\zf@enc\zf@rmmaths\mddefault\updefault - \SetMathAlphabet\mathrm{normal}\zf@enc\zf@rmmaths\mddefault\updefault - \SetMathAlphabet\mathit{normal}\zf@enc\zf@rmmaths\mddefault\itdefault - \SetMathAlphabet\mathbf{normal}\zf@enc\zf@rmmaths\bfdefault\updefault - \SetMathAlphabet\mathsf{normal}\zf@enc\zf@sfmaths\mddefault\updefault - \SetMathAlphabet\mathtt{normal}\zf@enc\zf@ttmaths\mddefault\updefault - \SetSymbolFont{operators}{bold}\zf@enc\zf@rmmaths\bfdefault\updefault - \ifdefined\zf@rmboldmaths - \SetMathAlphabet\mathrm{bold}\zf@enc\zf@rmboldmaths\mddefault\updefault - \SetMathAlphabet\mathbf{bold}\zf@enc\zf@rmboldmaths\bfdefault\updefault - \SetMathAlphabet\mathit{bold}\zf@enc\zf@rmboldmaths\mddefault\itdefault - \else - \SetMathAlphabet\mathrm{bold}\zf@enc\zf@rmmaths\bfdefault\updefault - \SetMathAlphabet\mathit{bold}\zf@enc\zf@rmmaths\bfdefault\itdefault - \fi - \SetMathAlphabet\mathsf{bold}\zf@enc\zf@sfmaths\bfdefault\updefault - \SetMathAlphabet\mathtt{bold}\zf@enc\zf@ttmaths\bfdefault\updefault - \let\font@warning\zf@font@warning} -% \end{macrocode} -% \changes{v1.9}{2006/01/31}{Suppresses harmless maths font encoding warnings.} -% \end{macro} -% \begin{macro}{\zf@math@maybe} -% We're a little less sophisticated about not executing the \cmd\zf@maths\ macro if various other maths font packages are loaded. This list is based on the wonderful `\LaTeX Font Catalogue': \url{http://www.tug.dk/FontCatalogue/mathfonts.html}. I'm sure there are more I've missed. Do the \TeX\ Gyre fonts have maths support yet? -% -% Untested: would |\unless\ifnum\Gamma=28672\relax\@zf@mathfalse\fi| be a better test? -% This needs more cooperation with euler and lucida, I think. -% \begin{macrocode} -\def\zf@math@maybe{% - \@ifpackageloaded{anttor}{% - \ifx\define@antt@mathversions a\@zf@mathfalse\fi}{} - \@ifpackageloaded{arev}{\@zf@mathfalse}{} - \@ifpackageloaded{eulervm}{\@zf@mathfalse}{} - \@ifpackageloaded{mathdesign}{\@zf@mathfalse}{} - \@ifpackageloaded{concmath}{\@zf@mathfalse}{} - \@ifpackageloaded{cmbright}{\@zf@mathfalse}{} - \@ifpackageloaded{mathesf}{\@zf@mathfalse}{} - \@ifpackageloaded{gfsartemisia}{\@zf@mathfalse}{} - \@ifpackageloaded{gfsneohellenic}{\@zf@mathfalse}{} - \@ifpackageloaded{iwona}{% - \ifx\define@iwona@mathversions a\@zf@mathfalse\fi}{} - \@ifpackageloaded{kpfonts}{\@zf@mathfalse}{} - \@ifpackageloaded{kmath}{\@zf@mathfalse}{} - \@ifpackageloaded{kurier}{% - \ifx\define@kurier@mathversions a\@zf@mathfalse\fi}{} - \@ifpackageloaded{fouriernc}{\@zf@mathfalse}{} - \@ifpackageloaded{fourier}{\@zf@mathfalse}{} - \@ifpackageloaded{mathpazo}{\@zf@mathfalse}{} - \@ifpackageloaded{mathptmx}{\@zf@mathfalse}{} - \@ifpackageloaded{MinionPro}{\@zf@mathfalse}{} - \@ifpackageloaded{unicode-math}{\@zf@mathfalse}{} - \if@zf@math - \zf@PackageInfo{% - Adjusting the maths setup (use [no-math] to avoid this).} - \zf@math - \fi} -\AtBeginDocument{\zf@math@maybe} -% \end{macrocode} -% \changes{v1.16}{2007/09/01}{Maths setup warning sent to the log file instead.} -% \end{macro} -% -% -% \subsection{Finishing up} -% Now we just want to set up loading the \texttt{.cfg} file, if it exists. -% \begin{macrocode} -\if@zf@configfile - \InputIfFileExists{fontspec.cfg} - {\typeout{fontspec.cfg loaded.}} - {\typeout{No fontspec.cfg file found; no configuration loaded.}} -\fi -% \end{macrocode} -% \changes{v1.9}{2006/01/31}{Package options \opt{(no)config}, \opt{quiet} implemented.} -% -% The end! Thanks for coming. -% -% \iffalse -%</fontspec> -%<*cfg> -% \fi -% -% \clearpage -% \part{fontspec.cfg} -% As an example, and to avoid upsetting people as much as possible, -% I'm populating the default \texttt{fontspec.cfg} file with -% backwards compatibility feature aliases. -% \begin{macrocode} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% FOR BACKWARDS COMPATIBILITY WITH PREVIOUS VERSIONS %%% - -\let\newfontinstance\newfontfamily - -\newcommand\newfeaturecode[3]{% - \define@key{zf}{#1}[]{\zf@make@feature{#2}{#3}{}}} - -\aliasfontfeature{BoldFont}{Bold} -\aliasfontfeature{ItalicFont}{Italic} -\aliasfontfeature{BoldItalicFont}{BoldItalic} -\aliasfontfeature{SmallCapsFont}{SmallCaps} -\aliasfontfeature{Style}{StyleOptions} -\aliasfontfeature{Contextuals}{Swashes} -\aliasfontfeatureoption{Contextuals}{Swash}{Contextual} -\aliasfontfeatureoption{Letters}{UppercaseSmallCaps}{SMALLCAPS} -\aliasfontfeatureoption{Letters}{UppercasePetiteCaps}{PETITECAPS} - -%%%%%%%%%%%%%%%%%%%%%%% -%%% FOR CONVENIENCE %%% - -\newfontscript{Kana}{kana} -\newfontscript{Maths}{math} -\newfontscript{CJK}{hani} - -% \end{macrocode} -% -% \iffalse -%</cfg> -%<*example> -% \fi -% -% \part{fontspec-example.ltx} -% -% \begin{macrocode} -\documentclass{article} - -\usepackage{euler} -\usepackage[cm-default]{fontspec} -\usepackage{xltxtra} - -\defaultfontfeatures{Scale=MatchLowercase,Mapping=tex-text} -\setmainfont[Numbers=Lowercase]{FPL Neu} -\setsansfont{Lucida Sans} -\setmonofont{Lucida Sans Typewriter} - -\frenchspacing % TeX's default is a little old-fashioned... - -\begin{document} -\pagestyle{empty} - -\section*{The basics of the \textsf{fontspec} package} - -The \textsf{fontspec} package enables automatic font selection -for \LaTeX{} documents typeset with \XeTeX{}. The basic command is\\ -\indent \verb|\fontspec[font features]{font display name}|.\\ -As an example: - -\begin{center} - \Large - \fontspec[ - Colour = 0000CC, - Numbers = OldStyle, - VerticalPosition = Ordinal, - Variant = 2 - ]{Apple Chancery} - My 1st example of Apple Chancery -\end{center} - -The default, sans serif, and typewriter fonts may be set with the -\verb|\setmainfont|, \verb|\setsansfont| and \verb|\setmonofont| -commands, respectively, as shown in the preamble. They take the -same syntax as the \verb|\fontspec| package. All expected font -shapes are available: - -\begin{center} - {\itshape Italics and \scshape small caps\dots}\\ - {\sffamily\bfseries Bold sans serif and \itshape bold italic sans serif\dots} -\end{center} - -With the roman and sans serif fonts set in the preamble, text fonts -in math mode are also changed: $\cos(n\pi)=\pm 1$. The maths -typeface `Euler' has been used in this document (with the \textsf{euler} -package---or the \textsf{eulervm} package if the |xpdfdvimx| driver -is being used), since the default Computer Modern maths font is rather light. -\[ - \mathcal F(s) = \int^\infty_0 f(t) \exp(-st)\,\mathrm{d}t -\] - -You'll also notice the \verb|\defaultfontfeatures| command in the preamble. -This command takes a single argument of font features that are then -applied to every subsequent instance of font selection. The first argument -in this case, \verb|Mapping=tex-text|, enables regular \TeX{} ligatures -like \verb|``---''| for ``---''. The second automatically scales the fonts -to the same x-height. - -Please see the documentation for font feature explanation and further -package niceties. - -\end{document} -% \end{macrocode} -% -% \iffalse -%</example> -% \fi -% -% \clearpage -% \PrintChanges -% -% \clearpage -% \setcounter{IndexColumns}{2} -% \PrintIndex -% -% \Finale -% -% \iffalse -%<*doc-style> -% \begin{macrocode} -\ProvidesPackage{fontspec-doc-style} - -\RequirePackage{booktabs,calc,color,enumitem,fancyvrb,fontspec, - graphicx,ifthen,ifxetex,url,varioref,xltxtra,xunicode} - -%% Titlepage -\renewcommand\maketitle{% - \begin{titlepage}% - \null\vfil - \vskip 60\p@ - \begin{center}% - {\LARGE \@title \par}% - \vskip 3em% - {\large - \lineskip .75em% - \begin{tabular}[t]{c}% - \@author - \end{tabular}\par}% - \vskip 1.5em% - {\large \@date \par}% - \end{center}\par - \vfil\null - \end{titlepage}% - \setcounter{footnote}{0}% - \global\let\thanks\relax - \global\let\maketitle\relax - \global\let\@thanks\@empty - \global\let\@author\@empty - \global\let\@date\@empty - \global\let\@title\@empty - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\and\relax} - -%% ToC -\def\@dotsep{1000} -\setcounter{tocdepth}{2} -\setlength\columnseprule{0.4pt} -\renewcommand\tableofcontents{% - \begin{multicols}{2}[\section*{\contentsname}]% - \small - \@starttoc{toc}% - \end{multicols}} - -%% Index -\renewenvironment{theglossary} - {\small\list{}{} - \item\relax - \glossary@prologue\GlossaryParms - \let\item\@idxitem \ignorespaces - \def\pfill{\hspace*{\fill}}} - {\endlist} - -%% varioref definitions: -\labelformat{table}{Table~#1} -\labelformat{section}{Section~#1} -\labelformat{subsection}{Section~#1} - -%% verbatim examples: -\newlength\examplewidth\newlength\verbatimwidth -\newlength\exoutdent \newlength\exverbgap -\setlength\exverbgap{1em} -\setlength\exoutdent{-0.15\textwidth} -\newsavebox\verbatimbox -\edef\examplefilename{\jobname.example} - -\newenvironment{example} - {\VerbatimEnvironment - \begingroup - \begin{VerbatimOut}[gobble=2]{\examplefilename}} - {\end{VerbatimOut} - \defaultfontfeatures{Mapping=tex-text,Colour=228833}% - \typesetexample - \endgroup} -\newenvironment{aatexample} - {\VerbatimEnvironment - \begingroup - \begin{VerbatimOut}[gobble=2]{\examplefilename}} - {\end{VerbatimOut} - \defaultfontfeatures{Mapping=tex-text,Colour=005599}% - \typesetexample - \endgroup} -\newenvironment{opentypeexample} - {\VerbatimEnvironment - \begingroup - \begin{VerbatimOut}[gobble=2]{\examplefilename}} - {\end{VerbatimOut} - \defaultfontfeatures{Mapping=tex-text,Colour=AA0000}% - \typesetexample - \endgroup} - -\newcommand\typesetexample{% - \begin{lrbox}{\verbatimbox}% - \BVerbatimInput[fontsize=\small,firstline=\firstline,lastline=\lastline]{\examplefilename}\relax - \end{lrbox} - \begin{list}{}{\setlength\itemindent{0pt} - \setlength\leftmargin\exoutdent - \setlength\rightmargin{0pt}}\item - \ifx\auxwidth\relax - \setlength\verbatimwidth{\wd\verbatimbox}% - \else - \setlength\verbatimwidth{\auxwidth}% - \let\auxwidth\relax - \fi - \begin{minipage}[c]{\textwidth-\exoutdent-\verbatimwidth-\exverbgap} - \catcode`\%=14\centering\examplesize\input\examplefilename\relax - \end{minipage}\hfill - \begin{minipage}[c]{\verbatimwidth} - \usebox\verbatimbox - \end{minipage} - \end{list} - \global\let\examplesize\normalsize - \gdef\firstline{1}\gdef\lastline{}\par\noindent} - -\let\examplesize\normalsize -\let\auxwidth\relax -\def\firstline{1} -\def\lastline{} - -\newcommand*\setexsize[1]{\let\examplesize#1} -\newcommand*\setverbwidth[1]{\def\auxwidth{#1}} - -%% Sidenotes: -\newcommand\warn[2]{% - \edef\thisversion{#1}% - \leavevmode\unskip\null\marginpar{\raggedleft - \small% - {\ifx\thisversion\fileversion\color{red}\fi$\star$}% - \,{\notefont #1:~#2}}\ignorespaces} - -\newcommand\new[2][New!]{% - \edef\thisversion{#2}% - \leavevmode\unskip\null\marginpar{\raggedleft - \small\ifx\thisversion\fileversion\color{blue}\else\color[gray]{0.5}\fi - $\star$\,{\notefont #2:~#1}}\ignorespaces} - -%% Sidenote font -\newfontfamily\notefont[Scale=MatchLowercase]{Optima} - -%% Various labelling commands: -\newcommand*\name[1]{{#1}} -\newcommand*\pkg[1]{\textsf{#1}} -\newcommand*\opt[1]{\texttt{#1}} -\newcommand*\feat[1]{\texttt{#1}} - -\let\latin\textit -\def\eg{\latin{e.g.}} -\def\ie{\latin{i.e.}} -\def\Eg{\latin{E.g.}} -\def\Ie{\latin{I.e.}} -\def\etc{\@ifnextchar.{\latin{etc}}{\latin{etc.}\@}} - -\newcommand\note[1]{\unskip\footnote{#1}} - -%% LOGOS, tuned for Palatino: -\TeX@logo@spacing{-0.12em}{-0.12em}% - {0.5ex}{-0.3em}{-0.12em}{-0.1em} - -\def\MacOSX{Mac~OS~X} - -%% fontspec declarations: -\setmainfont[Mapping=tex-text,Numbers=OldStyle]{FPL Neu} -\defaultfontfeatures{Scale=MatchLowercase} -\setsansfont[Weight=1.2, Width=1.1, - Mapping=tex-text, - BoldFont={Skia}, - BoldFeatures={Weight=1.7}]{Skia} -\setmonofont{Osaka-Mono} -\setmathrm{Optima Regular} -\setboldmathrm[BoldFont=Optima ExtraBlack]{Optima Bold} -\defaultfontfeatures{Mapping=tex-text} - -%% (La)TeX font-related declarations: -\linespread{1.05} % Palatino needs more space between lines -\lineskiplimit=-5pt % Osaka is really tall so this prevents ugly lines -\frenchspacing % Remove ugly extra space after punctuation - -\makeatletter -\newcounter{argument} -\g@addto@macro\endmacro{\setcounter{argument}{0}} -\newcommand*\darg[1]{% - \stepcounter{argument}% - \noindent{\ttfamily\char`\#\theargument~:~}#1\par} -\newcommand*\doarg[1]{% - \stepcounter{argument}% - \noindent{\ttfamily\makebox[0pt][r]{[}\char`\#\theargument]:~}#1\par} -\makeatother - -% \end{macrocode} -%</doc-style> -% \fi -% \typeout{*************************************************************} -% \typeout{*} -% \typeout{* To finish the installation you have to move the following} -% \typeout{* file into a directory searched by XeTeX:} -% \typeout{*} -% \typeout{* \space\space\space fontspec.sty} -% \typeout{*} -% \typeout{*************************************************************} -\endinput diff --git a/Master/texmf-dist/source/xelatex/fontspec/fontspec.ins b/Master/texmf-dist/source/xelatex/fontspec/fontspec.ins deleted file mode 100644 index aa8df316ce5..00000000000 --- a/Master/texmf-dist/source/xelatex/fontspec/fontspec.ins +++ /dev/null @@ -1,70 +0,0 @@ -%% -%% This is file `fontspec.ins', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% fontspec.dtx (with options: `batchfile') -%% -%% ________________________________ -%% The fontspec package for XeLaTeX -%% (C) 2004--2008 Will Robertson -%% -%% License information appended. -%% -%% -\input docstrip.tex -\keepsilent -\usedir{tex/xelatex/fontspec} -\preamble - - ________________________________ - The fontspec package for XeLaTeX - (C) 2004--2008 Will Robertson - - License information appended. - -\endpreamble -\postamble - -Copyright 2004--2008 by Will Robertson <wspr81@gmail.com> - -Distributable under the LaTeX Project Public License, -version 1.3c or higher (your choice). The latest version of -this license is at: http://www.latex-project.org/lppl.txt - -This work is "maintained" (as per LPPL maintenance status) -by Will Robertson. - -This work consists of this file fontspec.dtx - and the derived files fontspec.sty, - fontspec.cfg, - fontspec.ins, - fontspec-example.ltx, - and fontspec.pdf. - -\endpostamble -\askforoverwritefalse -\generate{\file{fontspec.sty}{\from{fontspec.dtx}{fontspec}}} -\generate{\file{fontspec.cfg}{\from{fontspec.dtx}{cfg}}} -\generate{\file{fontspec-example.ltx}{\from{fontspec.dtx}{example}}} -\endbatchfile -%% -%% Copyright 2004--2008 by Will Robertson <wspr81@gmail.com> -%% -%% Distributable under the LaTeX Project Public License, -%% version 1.3c or higher (your choice). The latest version of -%% this license is at: http://www.latex-project.org/lppl.txt -%% -%% This work is "maintained" (as per LPPL maintenance status) -%% by Will Robertson. -%% -%% This work consists of this file fontspec.dtx -%% and the derived files fontspec.sty, -%% fontspec.cfg, -%% fontspec.ins, -%% fontspec-example.ltx, -%% and fontspec.pdf. -%% -%% -%% End of file `fontspec.ins'. diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec-patches.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-patches.sty new file mode 100644 index 00000000000..d40bb9cf370 --- /dev/null +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec-patches.sty @@ -0,0 +1,114 @@ +%% +%% This is file `fontspec-patches.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fontspec.dtx (with options: `patches') +%% +%% _________________________________________ +%% The fontspec package for XeLaTeX/LuaLaTeX +%% (C) 2004--2010 Will Robertson and Khaled Hosny +%% +%% License information appended. +%% +%% +\ProvidesPackage{fontspec-patches} + [2010/05/27 v2.0b1 Advanced font selection for XeLaTeX/LuaLaTeX] +\ExplSyntaxOn +\RequirePackage{fixltx2e}[2006/03/24] +\DeclareRobustCommand \em { + \@nomath\em + \tl_if_eq:xxTF \f@shape \itdefault \eminnershape \emshape +} +\DeclareTextFontCommand{\emph}{\em} +\let\emshape\itshape +\let\eminnershape\upshape +\DeclareRobustCommand{\-}{% + \discretionary{% + \char\ifnum\hyphenchar\font<\z@ + \xlx@defaulthyphenchar + \else + \hyphenchar\font + \fi}{}{}} +\def\xlx@defaulthyphenchar{`\-} +\def\xxt@visiblespace{ + \iffontchar\font"2423 + \expandafter\textvisiblespace + \else + \expandafter\xxt@visiblespace@fallback + \fi +} +\def\xxt@visiblespace@fallback{ + { + \usefont{EU1}{lmtt}{\f@series}{\f@shape} + \textvisiblespace + } +} +\begingroup + \catcode`\~=\active + \gdef\xxt@vprintspaces{\catcode`\~\active\let \xxt@visiblespace} +\endgroup +\def\verb{ + \relax\ifmmode\hbox\else\leavevmode\null\fi + \bgroup + \verb@eol@error \let\do\@makeother \dospecials + \verbatim@font\@noligs + \@ifstar\@@sverb\@verb +} +\def\@@sverb{\xxt@vprintspaces\@sverb} +\AtBeginDocument{ + \fontspec_patch_verbatim: + \fontspec_patch_moreverb: + \fontspec_patch_fancyvrb: + \fontspec_patch_listings: +} +\cs_set:Npn \fontspec_patch_verbatim: { + \@ifpackageloaded{verbatim}{ + \@namedef{verbatim*}{ + \begingroup\@verbatim\xxt@vprintspaces\verbatim@start + } + }{ + \@namedef{verbatim*}{\@verbatim\xxt@vprintspaces\@sxverbatim} + } +} +\cs_set:Npn \fontspec_patch_moreverb: { + \@ifpackageloaded{moreverb}{ + \@namedef{listingcont*}{ + \def\verbatim@processline{ + \thelisting@line \global\advance\listing@line\c_one + \the\verbatim@line\par + } + \@verbatim\xxt@vprintspaces\verbatim@start + } + }{}} +\cs_set:Npn \fontspec_patch_fancyvrb: { + \@ifpackageloaded{fancyvrb}{ + \let\FancyVerbSpace\xxt@visiblespace + }{} +} +\cs_set:Npn \fontspec_patch_listings: { + \@ifpackageloaded{listings}{ + \let\lst@visiblespace\xxt@visiblespace + }{} +} +%% +%% Copyright 2004--2010 Will Robertson <wspr81@gmail.com> +%% Copyright 2009--2010 Khaled Hosny <khaledhosny@eglug.org> +%% +%% Distributable under the LaTeX Project Public License, +%% version 1.3c or higher (your choice). The latest version of +%% this license is at: http://www.latex-project.org/lppl.txt +%% +%% This work is "author-maintained" by Will Robertson. +%% +%% This work consists of this file fontspec.dtx +%% and the derived files fontspec.sty, +%% fontspec.lua, +%% fontspec.cfg, +%% fontspec.ins, +%% fontspec-example.ltx, +%% and fontspec.pdf. +%% +%% +%% End of file `fontspec-patches.sty'. diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.cfg b/Master/texmf-dist/tex/latex/fontspec/fontspec.cfg new file mode 100644 index 00000000000..bc1be91d447 --- /dev/null +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.cfg @@ -0,0 +1,5 @@ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% FOR BACKWARDS COMPATIBILITY WITH PREVIOUS VERSIONS %%% + + diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.lua b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua new file mode 100644 index 00000000000..05e28c2124a --- /dev/null +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua @@ -0,0 +1,207 @@ +-- +-- This is file `fontspec.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- fontspec.dtx (with options: `lua') +-- +-- _________________________________________ +-- The fontspec package for XeLaTeX/LuaLaTeX +-- (C) 2004--2010 Will Robertson and Khaled Hosny +-- +-- License information appended. +-- +-- +fontspec = { } + +fontspec.module = { + name = "fontspec", + version = 2.0, + date = "2009/12/04", + description = "Advanced font selection for LuaLaTeX.", + author = "Khaled Hosny", + copyright = "Khaled Hosny", + license = "LPPL" +} + +luatexbase.provides_module(fontspec.module) + + +utf = unicode.utf8 + +function fontspec.log (...) luatexbase.module_log (fontspec.module.name, string.format(...)) end +function fontspec.warning(...) luatexbase.module_warning(fontspec.module.name, string.format(...)) end +function fontspec.error (...) luatexbase.module_error (fontspec.module.name, string.format(...)) end + +function fontspec.sprint (...) tex.sprint(luatexbase.catcodetables['latex-package'], ...) end + + +local function check_script(id, script) + local s = string.lower(script) + if id and id > 0 then + local otfdata = fonts.ids[id].shared.otfdata + if otfdata then + local features = otfdata.luatex.features + for i,_ in pairs(features) do + for j,_ in pairs(features[i]) do + if features[i][j][s] then + fontspec.log("script '%s' exists in font '%s'", + script, fonts.ids[id].fullname) + return true + end + end + end + end + end +end + +local function check_language(id, language, script) + local s = string.lower(script) + local l = string.lower(language) + if id and id > 0 then + local otfdata = fonts.ids[id].shared.otfdata + if otfdata then + local features = otfdata.luatex.features + for i,_ in pairs(features) do + for j,_ in pairs(features[i]) do + if features[i][j][s] and features[i][j][s][l] then + fontspec.log("language '%s' for script '%s' exists in font '%s'", + language, script, fonts.ids[id].fullname) + return true + end + end + end + end + end +end + +local function check_feature(id, feature, language, script) + local s = string.lower(script) + local l = string.lower(language) + local f = string.lower(feature:gsub("^[+-]", "")) + if id and id > 0 then + local otfdata = fonts.ids[id].shared.otfdata + if otfdata then + local features = otfdata.luatex.features + for i,_ in pairs(features) do + if features[i][f] and features[i][f][s] then + if features[i][f][s][l] == true then + fontspec.log("feature '%s' for language '%s' and script '%s' exists in font '%s'", + feature, language, script, fonts.ids[id].fullname) + return true + end + end + end + end + end +end + + +local function font_id(str) + local id + if tex.luatexversion >= 47 then + id = font.id(str) + else + id = token.create(str)[2] + end + return id +end + + +local function tempswatrue() fontspec.sprint([[\@tempswatrue]]) end +local function tempswafalse() fontspec.sprint([[\@tempswafalse]]) end + +function fontspec.check_ot_script(fnt, script) + if check_script(font_id(fnt), script) then + tempswatrue() + else + tempswafalse() + end +end + +function fontspec.check_ot_lang(fnt, lang, script) + if check_language(font_id(fnt), lang, script) then + tempswatrue() + else + tempswafalse() + end +end + +function fontspec.check_ot_feat(fnt, feat, lang, script) + for _, f in ipairs { "+trep", "+tlig", "+anum" } do + if feat == f then + tempswatrue() + return + end + end + if check_feature(font_id(fnt), feat, lang, script) then + tempswatrue() + else + tempswafalse() + end +end + + +function fontspec.get_dimen(fontdimen, csname) + local id, h, em, pt + if csname == "font" then + id = font.current() + else + id = font_id(csname) + end + if fontdimen == 8 then + h = fonts.ids[id].shared.otfdata.pfminfo.os2_capheight + elseif fontdimen == 5 then + h = fonts.ids[id].shared.otfdata.pfminfo.os2_xheight + end + em = fonts.ids[id].shared.otfdata.metadata.units_per_em + pt = fonts.ids[id].size / 65536 + tex.sprint(string.format("%spt", (h/em)*pt)) +end + +function fontspec.charglyph(char, csname) + local id, c + if char then + if utf.len(char) > 1 then + c = utf.byte(utf.char(char:gsub('"', '0x'))) + else + c = utf.byte(char) + end + + if csname then + id = font_id(csname) + else + id = font.current() + end + + if font.fonts[id]["characters"][c] then + return font.fonts[id]["characters"][c].index + else + return 0 + end + else + return 0 + end +end + +-- +-- Copyright 2004--2010 Will Robertson <wspr81@gmail.com> +-- Copyright 2009--2010 Khaled Hosny <khaledhosny@eglug.org> +-- +-- Distributable under the LaTeX Project Public License, +-- version 1.3c or higher (your choice). The latest version of +-- this license is at: http://www.latex-project.org/lppl.txt +-- +-- This work is "author-maintained" by Will Robertson. +-- +-- This work consists of this file fontspec.dtx +-- and the derived files fontspec.sty, +-- fontspec.lua, +-- fontspec.cfg, +-- fontspec.ins, +-- fontspec-example.ltx, +-- and fontspec.pdf. +-- +-- +-- End of file `fontspec.lua'. diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec.sty new file mode 100644 index 00000000000..677ae23b306 --- /dev/null +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.sty @@ -0,0 +1,1928 @@ +%% +%% This is file `fontspec.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fontspec.dtx (with options: `fontspec') +%% +%% _________________________________________ +%% The fontspec package for XeLaTeX/LuaLaTeX +%% (C) 2004--2010 Will Robertson and Khaled Hosny +%% +%% License information appended. +%% +%% +\ProvidesPackage{fontspec} + [2010/05/27 v2.0b1 Advanced font selection for XeLaTeX/LuaLaTeX] +\RequirePackage{expl3,xparse} +\ExplSyntaxOn +\msg_new:nnn {fontspec} {not-pdftex} +{ + Requires XeTeX or LuaTeX to function! +} +\xetex_if_engine:F { + \luatex_if_engine:TF { + \RequirePackage{luatextra}[2010/05/10] + \luatexRequireModule{fontspec} + }{ + \msg_error:nn {fontspec} {not-pdftex} + } +} +\xetex_if_engine:TF + { \cs_new_eq:NN \xetex_or_luatex:nn \use_i:nn } + { \luatex_if_engine:T + { \cs_new_eq:NN \xetex_or_luatex:nn \use_ii:nn } + } +\xetex_if_engine:TF + { \cs_new:Npn \xetex_or_luatex:nnn #1#2#3 {#1{#2}} } + { + \luatex_if_engine:T + { \cs_new:Npn \xetex_or_luatex:nnn #1#2#3 {#1{#3}} } + } +\newif\ifzf@firsttime +\newif\ifzf@nobf +\newif\ifzf@noit +\newif\ifzf@nosc +\newif\ifzf@tfm +\newif\ifzf@atsui +\newif\ifzf@icu +\newif\ifzf@mm +\newif\ifzf@graphite +\newif\ifzf@math@euler +\newif\ifzf@math@lucida +\newif\ifzf@package@euler@loaded +\newif\if@zf@configfile +\newif\if@zf@math +\newcount\c@zf@newff +\newcount\c@zf@index +\newcount\c@zf@script +\newcount\c@zf@language +\int_new:N \l_fontspec_strnum_int +\cs_set:Npn \use:x #1 { \edef\@tempa{#1}\@tempa } +\cs_new:Npn \fontspec_setkeys:xx #1#2 + { + \use:x { \exp_not:N \setkeys*[zf]{#1}{#2} } + } +\cs_new:Npn \fontspec_setkeys:xxx #1#2#3 + { + \use:x { \exp_not:N \setkeys*[zf@#1]{#2}{#3} } + } +\cs_new:Npn \fontspec_error:n { \msg_error:nn {fontspec} } +\cs_new:Npn \fontspec_error:nx { \msg_error:nnx {fontspec} } +\cs_new:Npn \fontspec_warning:n { \msg_warning:nn {fontspec} } +\cs_new:Npn \fontspec_warning:nx { \msg_warning:nnx {fontspec} } +\cs_new:Npn \fontspec_warning:nxx { \msg_warning:nnxx {fontspec} } +\cs_new:Npn \fontspec_info:n { \msg_info:nn {fontspec} } +\cs_new:Npn \fontspec_info:nx { \msg_info:nnx {fontspec} } +\cs_new:Npn \fontspec_info:nxx { \msg_info:nnxx {fontspec} } +\cs_new:Npn \fontspec_trace:n { \msg_trace:nn {fontspec} } +\msg_new:nnn {fontspec} {no-size-info} +{ + Size~ information~ must~ be~ supplied.\\ + For~ example,~ SizeFeatures={Size={8-12},...}. +} +\msg_new:nnnn {fontspec} {rename-feature-not-exist} +{ + The~ feature~ #1~ doesn't~ appear~ to~ be~ defined. +} +{ + It~ looks~ like~ you're~ trying~ to~ rename~ a~ feature~ that~ doesn't~ exist. +} +\msg_new:nnn {fontspec} {no-glyph} +{ + '\zf@fontname'~ doesn't~ appear~ to~ have~ the~ glyph~ corresponding~ to~ '#1'. +} +\msg_new:nnnn {fontspec} {unknown-options} +{ + The~ following~ font~ options~ are~ not~ recognised:\\ + \space\space\space\space #1 +} +{ + There~ is~ probably~ a~ typo~ in~ the~ font~ feature~ selection. +} +\msg_new:nnnn {fontspec} {euler-too-late} +{ + The~ euler~ package~ must~ be~ loaded~ BEFORE~ fontspec. +} +{ + fontspec~ only~ overwrites~ euler's~ attempt~ to\\ + define~ the~ maths~ text~ fonts~ if~ fontspec~ is\\ + loaded~ after~ euler.~ Type~ <return>~ to~ proceed\\ + with~ incorrect~ \string\mathit,~ \string\mathbf,~ etc. +} + +\msg_new:nnn {fontspec} {addfontfeatures-ignored} +{ + \string\addfontfeature (s)~ ignored;\\ + it~ cannot~ be~ used~ with~ a~ font~ that~ wasn't~ selected~ by~ fontspec. +} +\msg_new:nnn {fontspec} {feature-option-overwrite} +{ + Option~ '#2'~ of~ font~ feature~ '#1'~ overwritten. +} +\msg_new:nnn {fontspec} {script-not-exist} +{ + Font~ '\zf@fontname'~ does~ not~ contain~ script~ '#1'. +} +\msg_new:nnn {fontspec} {aat-feature-not-exist} +{ + '\XKV@tfam=\XKV@tkey'~ feature~ not~ supported\\ + for~ AAT~ font~ '\zf@fontname'. +} +\msg_new:nnn {fontspec} {aat-feature-not-exist-in-font} +{ + AAT~ feature~ '\XKV@tfam=\XKV@tkey'~ (#1)~ not~ available\\ + in~ font~ '\zf@fontname'. +} +\msg_new:nnn {fontspec} {icu-feature-not-exist} +{ + '\XKV@tfam=\XKV@tkey'~ feature~ not~ supported\\ + for~ ICU~ font~ '\zf@fontname' +} +\msg_new:nnn {fontspec} {icu-feature-not-exist-in-font} +{ + OpenType~ feature~ '\XKV@tfam=\XKV@tkey'~ (#1)~ not~ available\\ + for~ font~ '\zf@fontname', \\ + with~ script~ '\l_fontspec_script_name_tl',~ and~ language~ '\l_fontspec_lang_name_tl'. +} +\msg_new:nnn {fontspec} {no-opticals} +{ + '\zf@fontname'~ doesn't~ appear~ to~ have~ an~ Optical~ Size~ axis. +} +\msg_new:nnn {fontspec} {language-not-exist} +{ + Language~ '#1'~ not~ available\\ + for~ font~ '\zf@fontname'\\ + with~ script~ '\l_fontspec_script_name_tl'. +} +\msg_new:nnn {fontspec} {only-xetex-feature} +{ + Ignored~ XeTeX~ only~ feature:~ '#1'. +} +\msg_new:nnn {fontspec} {only-luatex-feature} +{ + Ignored~ LuaTeX~ only~ feature:~ '#1'. +} +\msg_new:nnn {fontspec} {no-mapping} +{ + Input~ mapping~ not~ (yet?)~ supported~ in~ LuaTeX. +} +\msg_new:nnn {fontspec} {no-mapping-ligtex} +{ + Input~ mapping~ not~ (yet?)~ supported~ in~ LuaTeX.\\ + Use~ "Ligatures=TeX"~ instead~ of~ "Mapping=tex-text". +} +\msg_new:nnn {fontspec} {cm-default-obsolete} +{ + The~ "cm-default"~ package~ option~ is~ obsolete. +} +\msg_new:nnn {fontspec} {defining-font} +{ + Defining~ font~ family~ for~ '#2'~ with~ options~ [\zf@default@options #1]. +} +\msg_new:nnn {fontspec} {no-font-shape} +{ + Could~ not~ resolve~ font~ #1~ (it~ probably~ doesn't~ exist). +} +\msg_new:nnn {fontspec} {set-scale} +{ + \zf@fontname\space scale ~=~ \l_fontspec_scale_tl. +} +\msg_new:nnn {fontspec} {setup-math} +{ + Adjusting~ the~ maths~ setup~ (use~ [no-math]~ to~ avoid~ this). +} +\DeclareOption{cm-default}{ + \fontspec_warning:n {cm-default-obsolete} +} +\DeclareOption{math}{\@zf@mathtrue} +\DeclareOption{no-math}{\@zf@mathfalse} +\DeclareOption{config}{\@zf@configfiletrue} +\DeclareOption{no-config}{\@zf@configfilefalse} +\DeclareOption{quiet}{ + \msg_redirect_module:nnn { fontspec } { warning } { info } + \msg_redirect_module:nnn { fontspec } { info } { none } +} +\DeclareOption{silent}{ + \msg_redirect_module:nnn { fontspec } { warning } { none } + \msg_redirect_module:nnn { fontspec } { info } { none } +} +\ExecuteOptions{config,math} +\ProcessOptions* +\RequirePackage{calc} +\RequirePackage{xkeyval}[2005/05/07] +\luatex_if_engine:T { \RequirePackage{fontspec-patches} } +\xetex_or_luatex:nnn {\tl_set:Nn \zf@enc} {EU1} {EU2} +\tl_set:Nn \rmdefault {lmr} +\tl_set:Nn \sfdefault {lmss} +\tl_set:Nn \ttdefault {lmtt} +\RequirePackage[\zf@enc]{fontenc} +\tl_set_eq:NN \UTFencname \zf@enc % for xunicode +\tl_set_eq:NN \cyrillicencoding \zf@enc +\tl_set_eq:NN \latinencoding \zf@enc +\g@addto@macro \document { + \tl_set_eq:NN \cyrillicencoding \zf@enc + \tl_set_eq:NN \latinencoding \zf@enc +} +\DeclareDocumentCommand \fontspec { O{} m } { + \fontspec_select:nn{#1}{#2} + \fontfamily\zf@family\selectfont + \ignorespaces +} +\DeclareDocumentCommand \setmainfont { O{} m } { + \fontspec_select:nn{#1}{#2} + \tl_set_eq:NN \rmdefault \zf@family + \normalfont +} +\DeclareDocumentCommand \setsansfont { O{} m } { + \fontspec_select:nn{#1}{#2} + \tl_set_eq:NN \sfdefault \zf@family + \normalfont +} +\DeclareDocumentCommand \setmonofont { O{} m } { + \fontspec_select:nn{#1}{#2} + \tl_set_eq:NN \ttdefault \zf@family + \normalfont +} +\cs_set_eq:NN \setromanfont \setmainfont +\DeclareDocumentCommand \setmathrm { O{} m } { + \fontspec_select:nn{#1}{#2} + \let\zf@rmmaths\zf@family +} +\DeclareDocumentCommand \setboldmathrm { O{} m } { + \fontspec_select:nn{#1}{#2} + \let\zf@rmboldmaths\zf@family +} +\DeclareDocumentCommand \setmathsf { O{} m } { + \fontspec_select:nn{#1}{#2} + \let\zf@sfmaths\zf@family +} +\DeclareDocumentCommand \setmathtt { O{} m } { + \fontspec_select:nn{#1}{#2} + \let\zf@ttmaths\zf@family +} +\@onlypreamble\setmathrm +\@onlypreamble\setboldmathrm +\@onlypreamble\setmathsf +\@onlypreamble\setmathtt +\def\zf@rmmaths{\rmdefault} +\def\zf@sfmaths{\sfdefault} +\def\zf@ttmaths{\ttdefault} +\DeclareDocumentCommand \newfontfamily { m O{} m } { + \fontspec_select:nn{#2}{#3} + \use:x { + \exp_not:N \DeclareRobustCommand \exp_not:N #1 { + \exp_not:N \fontfamily {\zf@family} \exp_not:N \selectfont + } + } +} +\DeclareDocumentCommand \newfontface { m O{} m } { + \newfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2 ] {#3} +} +\DeclareDocumentCommand \defaultfontfeatures {m} {\def\zf@default@options{#1,}} +\let\zf@default@options\@empty +\DeclareDocumentCommand \addfontfeatures {m} { + \ifcsname zf@family@fontdef\f@family\endcsname + \begingroup + \let\zf@default@options\@empty + \use:x { + \exp_not:N\fontspec_select:nn + {\csname zf@family@options\f@family\endcsname,#1} + {\csname zf@family@fontname\f@family\endcsname} + } + \endgroup + \fontfamily\zf@family\selectfont + \else + \fontspec_warning:n {addfontfeatures-ignored} + \fi + \ignorespaces +} +\let\addfontfeature\addfontfeatures +\DeclareDocumentCommand \newfontfeature {mm} { + \stepcounter{zf@newff} + \cs_set:cpx{+zf-#1}{+zf-\the\c@zf@newff} + \define@key[zf]{options}{#1}[]{ + \zf@update@family{\csname+zf-#1\endcsname} + \zf@update@ff{#2} + } +} +\DeclareDocumentCommand \newAATfeature {mmmm} { + \unless\ifcsname zf@options@#1\endcsname + \zf@define@font@feature{#1} + \fi + \key@ifundefined[zf]{#1}{#2}{}{ + \fontspec_warning:nxx {feature-option-overwrite}{#1}{#2} + } + \zf@define@feature@option{#1}{#2}{#3}{#4}{} +} +\DeclareDocumentCommand \newICUfeature {mmm} { + \unless\ifcsname zf@options@#1\endcsname + \zf@define@font@feature{#1} + \fi + \key@ifundefined[zf]{#1}{#2}{}{ + \fontspec_warning:nxx {feature-option-overwrite}{#1}{#2} + } + \zf@define@feature@option{#1}{#2}{}{}{#3} +} +\cs_set_eq:NN \newopentypefeature \newICUfeature +\DeclareDocumentCommand \aliasfontfeature {mm} {\multi@alias@key{#1}{#2}} +\DeclareDocumentCommand \aliasfontfeatureoption {mmm} { + \keyval@alias@key[zf@feat]{#1}{#2}{#3} +} +\DeclareDocumentCommand \newfontscript {mm} +{ + \fontspec_new_script:nn {#1} {#2} + \fontspec_new_script:nn {#2} {#2} +} +\cs_new:Npn \fontspec_new_script:nn #1#2 +{ + \define@key[zf@feat]{Script}{#1}[]{ + \fontspec_check_script:nTF {#2} { + \zf@update@family{+script=#1} + \tl_set:Nn \l_fontspec_script_tl {#2} + \c@zf@script=\l_fontspec_strnum_int\relax + }{ + \fontspec_warning:nx {script-not-exist} {#1} + } + } +} +\DeclareDocumentCommand \newfontlanguage {mm} +{ + \fontspec_new_lang:nn {#1} {#2} + \fontspec_new_lang:nn {#2} {#2} +} +\cs_new:Npn \fontspec_new_lang:nn #1#2 +{ + \define@key[zf@feat]{Lang}{#1}[]{ + \fontspec_check_lang:nTF {#2} { + \zf@update@family{+lang=#1} + \tl_set:Nn \l_fontspec_lang_tl {#2} + \c@zf@language=\l_fontspec_strnum_int\relax + }{ + \fontspec_warning:nx {language-not-exist} {#1} + } + } +} +\DeclareDocumentCommand \DeclareFontsExtensions {m} +{ + \tl_set:Nx \l_fontspec_extensions_clist { \zap@space #1~\@empty } +} +\DeclareFontsExtensions{.otf,.ttf,.OTF,.TTF,.ttc,.TTC,.dfont} +\prg_new_conditional:Nnn \fontspec_if_fontspec_font: {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \prg_return_true: + \else + \prg_return_false: + \fi +} +\prg_new_conditional:Nnn \fontspec_if_aat_feature:nn {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\use:c{zf@family@fontdef\f@family}"~at~\f@size pt + \ifzf@atsui + \fontspec_make_AAT_feature_string:nn{#1}{#2} + \ifx\@tempa\@empty + \prg_return_false: + \else + \prg_return_true: + \fi + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +\prg_new_conditional:Nnn \fontspec_if_opentype: {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \prg_return_true: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +\prg_new_conditional:Nnn \fontspec_if_feature:n {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \int_set:Nn \c@zf@script + {\use:c {g_fontspec_script_num_(\zf@family)_tl}} + \int_set:Nn \c@zf@language + {\use:c {g_fontspec_lang_num_(\zf@family)_tl}} + \tl_set:Nv \l_fontspec_script_tl {g_fontspec_script_(\zf@family)_tl} + \tl_set:Nv \l_fontspec_lang_tl {g_fontspec_lang_(\zf@family)_tl} + \fontspec_check_ot_feat:nTF {#1} \prg_return_true: \prg_return_false: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +\prg_new_conditional:Nnn \fontspec_if_feature:nnn {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \fontspec_iv_str_to_num:n{#1} \c@zf@script = \l_fontspec_strnum_int \relax + \fontspec_iv_str_to_num:n{#2} \c@zf@language = \l_fontspec_strnum_int \relax + \fontspec_check_ot_feat:nTF {#3} \prg_return_true: \prg_return_false: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +\prg_new_conditional:Nnn \fontspec_if_script:n {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \fontspec_check_script:nTF {#1} \prg_return_true: \prg_return_false: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +\prg_new_conditional:Nnn \fontspec_if_language:n {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \tl_set:Nv \l_fontspec_script_tl {g_fontspec_script_(\zf@family)_tl} + \int_set:Nn \c@zf@script + {\use:c {g_fontspec_script_num_(\zf@family)_tl}} + \fontspec_check_lang:nTF {#1} \prg_return_true: \prg_return_false: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +\prg_new_conditional:Nnn \fontspec_if_language:nn {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \tl_set:Nn \l_fontspec_script_tl {#1} + \fontspec_iv_str_to_num:n{#1} \c@zf@script = \l_fontspec_strnum_int \relax + \fontspec_check_lang:nTF {#2} \prg_return_true: \prg_return_false: + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +\prg_new_conditional:Nnn \fontspec_if_current_script:n {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \tl_if_eq:nvTF {#1} {g_fontspec_script_(\zf@family)_tl} + {\prg_return_true:} {\prg_return_false:} + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +\prg_new_conditional:Nnn \fontspec_if_current_language:n {TF,T,F} { + \ifcsname zf@family@fontdef\f@family\endcsname + \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname"~at~\f@size pt + \fontspec_set_font_type: + \ifzf@icu + \tl_if_eq:nvTF {#1} {g_fontspec_lang_(\zf@family)_tl} + {\prg_return_true:} {\prg_return_false:} + \else + \prg_return_false: + \fi + \else + \prg_return_false: + \fi +} +\cs_generate_variant:Nn \tl_if_eq:nnTF {nv} +\cs_set:Npn \fontspec_select:nn #1#2 { + \begingroup + \fontspec_init: + \edef\zf@fontname{#2} + \let\zf@family@long\zf@fontname + \let\zf@up\zf@fontname + \fontspec_if_detect_external:nT {#2} + { \setkeys[zf]{preparse-external}{ExternalLocation} } + \fontspec_setkeys:xx {preparse-external} {\zf@default@options #1} + \let\zf@fontname\zf@up + \fontspec_setkeys:xx {preparse} {\XKV@rm} + \let\zf@font@feat\XKV@rm + \global\font\zf@basefont="\fontspec_fullname:n {\zf@up}"~at~\f@size pt + \fontspec_set_font_type: + \global\font\zf@basefont="\fontspec_fullname:n {\zf@up}"~at~\f@size pt + \zf@firsttimetrue + \ifzf@icu + \fontspec_setkeys:xxx {feat} {Script} {\l_fontspec_script_name_tl} + \fontspec_setkeys:xxx {feat} {Lang} {\l_fontspec_lang_name_tl} + \fi + \fontspec_get_features:n{\zf@font@feat} + \zf@firsttimefalse + \unless\ifcsname zf@UID@\zf@family@long\endcsname + \ifcsname c@zf@famc@#2\endcsname + \expandafter\global\expandafter\advance + \csname c@zf@famc@#2\endcsname\@ne + \else + \expandafter\global\expandafter\newcount + \csname c@zf@famc@#2\endcsname + \fi + \edef\@tempa{#2~} + \cs_gset:cpx{zf@UID@\zf@family@long}{ + \expandafter\zap@space\@tempa\@empty + (\expandafter\the\csname c@zf@famc@#2\endcsname) + } + \fi + \xdef\zf@family{\@nameuse{zf@UID@\zf@family@long}} + \unless\ifcsname zf@family@fontname\zf@family\endcsname + \fontspec_info:nxx {defining-font} {#1} {#2} + \tl_gset:cx {zf@family@fontname\zf@family} {#2} + \tl_gset:cx {zf@family@options\zf@family} {\zf@default@options #1} + \tl_gset:cx {zf@family@fontdef\zf@family} { + \fontspec_fullname:n {\zf@fontname} : \l_fontspec_pre_feat_tl \l_fontspec_rawfeatures_sclist + } + \tl_gset:cx {g_fontspec_script_num_(\zf@family)_tl} + { \int_use:N \c@zf@script } + \tl_gset:cx {g_fontspec_lang_num_(\zf@family)_tl} + { \int_use:N \c@zf@language } + \tl_gset_eq:cN {g_fontspec_script_(\zf@family)_tl} \l_fontspec_script_tl + \tl_gset_eq:cN {g_fontspec_lang_(\zf@family)_tl} \l_fontspec_lang_tl + \DeclareFontFamily{\zf@enc}{\zf@family}{} + \zf@make@font@shapes{\zf@fontname} + {\mddefault}{\updefault}{\zf@font@feat\zf@up@feat} + \fontspec_set_bold: + \fontspec_set_italic: + \fontspec_set_slanted: + \fontspec_set_bold_italic: + \fontspec_set_bold_slanted: + \fi + \endgroup +} +\prg_new_conditional:Nnn \fontspec_if_detect_external:n {T} + { + \clist_map_inline:Nn \l_fontspec_extensions_clist + { + \bool_set_false:N \l_tmpa_bool + \tl_if_in:nnT {#1 <= end_of_string} {##1 <= end_of_string} + { \bool_set_true:N \l_tmpa_bool \clist_map_break: } + } + \bool_if:NTF \l_tmpa_bool \prg_return_true: \prg_return_false: + } +\cs_set:Npn \fontspec_fullname:n #1 { + \fontspec_namewrap:n { #1 \l_fontspec_extension_tl } + \l_fontspec_renderer_tl + \l_fontspec_optical_size_tl +} +\cs_new:Npn \fontspec_set_bold: { + \unless\ifzf@nobf + \ifx\zf@bf\@empty + \zf@make@font@shapes[\zf@fontname]{/B} + {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat} + \else + \zf@make@font@shapes{\zf@bf} + {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat} + \fi + \fi +} +\cs_new:Npn \fontspec_set_italic: { + \unless\ifzf@noit + \ifx\zf@it\@empty + \zf@make@font@shapes[\zf@fontname]{/I} + {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat} + \else + \zf@make@font@shapes{\zf@it} + {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat} + \fi + \fi +} +\cs_new:Npn \fontspec_set_slanted: { + \ifx\zf@sl\@empty\else + \zf@make@font@shapes{\zf@sl} + {\mddefault}{\sldefault}{\zf@font@feat\zf@sl@feat} + \fi +} +\cs_new:Npn \fontspec_set_bold_italic: { + \@tempswatrue + \ifzf@nobf\@tempswafalse\fi + \ifzf@noit\@tempswafalse\fi + \if@tempswa + \ifx\zf@bfit\@empty + \ifx\zf@bf\@empty + \ifx\zf@it\@empty + \zf@make@font@shapes[\zf@fontname]{/BI} + {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat} + \else + \zf@make@font@shapes[\zf@it]{/B} + {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat} + \fi + \else + \zf@make@font@shapes[\zf@bf]{/I} + {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat} + \fi + \else + \zf@make@font@shapes{\zf@bfit} + {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat} + \fi + \fi +} +\cs_new:Npn \fontspec_set_bold_slanted: { + \ifx\zf@bfsl\@empty + \ifx\zf@sl\@empty\else + \zf@make@font@shapes[\zf@sl]{/B} + {\bfdefault}{\sldefault}{\zf@font@feat\zf@bfsl@feat} + \fi + \else + \zf@make@font@shapes{\zf@bfsl} + {\bfdefault}{\sldefault}{\zf@font@feat\zf@bfsl@feat} + \fi +} +\xetex_or_luatex:nnn { \cs_new:Npn \fontspec_set_font_type: } + { + \zf@tfmfalse \zf@atsuifalse \zf@icufalse \zf@mmfalse \zf@graphitefalse + \ifcase\XeTeXfonttype\zf@basefont + \zf@tfmtrue + \or + \zf@atsuitrue + \ifnum\XeTeXcountvariations\zf@basefont > \c_zero + \zf@mmtrue + \fi + \or + \zf@icutrue + \fi + \tl_if_empty:NT \l_fontspec_renderer_tl { + \ifzf@atsui + \tl_set:Nn \l_fontspec_renderer_tl {/AAT} + \else\ifzf@icu + \tl_set:Nn \l_fontspec_renderer_tl {/ICU} + \fi\fi + } + } + { + \zf@icutrue + } +\newcommand*\zf@make@font@shapes[5][]{ + \begingroup + \edef\@tempa{#1} + \unless\ifx\@tempa\@empty + \font\@tempfonta="\fontspec_fullname:n {#1}"~at~\f@size pt + \edef\@tempa{\fontname\@tempfonta} + \fi + \font\@tempfontb="\fontspec_fullname:n {#1#2}"~at~\f@size pt + \edef\@tempb{\fontname\@tempfontb} + \ifx\@tempa\@tempb + \fontspec_info:nx {no-font-shape} {#1#2} + \else + \edef\zf@fontname{#1#2} + \let\zf@basefont\@tempfontb + \zf@DeclareFontShape{#3}{#4}{#5} + \ifx\zf@sc\@empty + \unless\ifzf@nosc + \zf@make@smallcaps + \unless\ifx\zf@smallcaps\@empty + \zf@DeclareFontShape[\zf@smallcaps]{#3} + {\ifx#4\itdefault\sidefault\else\scdefault\fi}{#5\zf@sc@feat} + \fi + \fi + \else + \edef\zf@fontname{\zf@sc} + \zf@DeclareFontShape{#3} + {\ifx#4\itdefault\sidefault\else\scdefault\fi}{#5\zf@sc@feat} + \fi + \fi + \endgroup +} +\newcommand\zf@DeclareFontShape[4][]{ + \clist_if_empty:NTF \l_fontspec_sizefeat_clist + { + \fontspec_get_features:n{#4} + \tl_set:Nx \l_fontspec_nfss_tl { + <-> \l_fontspec_scale_tl " + \fontspec_fullname:n {\zf@fontname} : + \l_fontspec_pre_feat_tl \l_fontspec_rawfeatures_sclist #1 " + } + } + { + \tl_clear:N \l_fontspec_nfss_tl + \clist_map_inline:Nn \l_fontspec_sizefeat_clist { + \tl_clear:N \l_fontspec_size_tl + \tl_set_eq:NN \l_fontspec_sizedfont_tl \zf@fontname + \fontspec_setkeys:xx {sizing} { \expandafter \@firstofone ##1 } + \tl_if_empty:NT \l_fontspec_size_tl { \fontspec_error:n {no-size-info} } + \fontspec_get_features:n{#4,\XKV@rm} + \tl_put_right:Nx \l_fontspec_nfss_tl { + <\l_fontspec_size_tl> \l_fontspec_scale_tl + " \fontspec_fullname:n { \l_fontspec_sizedfont_tl } + : \l_fontspec_pre_feat_tl \l_fontspec_rawfeatures_sclist #1 " + } + } + } + \use:x{ + \exp_not:N\DeclareFontShape{\zf@enc}{\zf@family}{#2}{#3} + {\l_fontspec_nfss_tl}{\zf@adjust} + } + \tl_if_eq:xxT {#3} {\itdefault} + { + \use:x { + \exp_not:N \DeclareFontShape {\zf@enc}{\zf@family}{#2}{\sldefault} + {<->ssub*\zf@family/#2/\itdefault}{\zf@adjust} + } + } +} +\xetex_or_luatex:nnn { \tl_set:Nn \l_fontspec_pre_feat_tl } + { + \ifzf@icu + script = \l_fontspec_script_tl ; + language = \l_fontspec_lang_tl ; + \fi + } + { + mode = \l_fontspec_mode_tl ; + script = \l_fontspec_script_tl ; + language = \l_fontspec_lang_tl ; + } +\newcommand*{\zf@update@family}[1]{ + \ifzf@firsttime + \xdef\zf@family@long{\zf@family@long#1} + \fi +} +\cs_set:Npn \fontspec_get_features:n #1 { + \let\l_fontspec_rawfeatures_sclist \@empty + \tl_clear:N \l_fontspec_scale_tl + \let\zf@adjust \@empty + \fontspec_setkeys:xx {options} {#1} + \tl_if_empty:NF \XKV@rm { + \fontspec_error:nx {unknown-options} { \exp_not:V \XKV@rm } + } + \PackageInfo{fontspec}{Raw~ font~ features~ "\l_fontspec_rawfeatures_sclist"} +} +\tl_clear:N \zf@bf +\tl_clear:N \zf@it +\tl_clear:N \zf@bfit +\tl_clear:N \zf@sl +\tl_clear:N \zf@bfsl +\tl_clear:N \zf@sc +\tl_clear:N \zf@up@feat +\tl_clear:N \zf@bf@feat +\tl_clear:N \zf@it@feat +\tl_clear:N \zf@bfit@feat +\tl_clear:N \zf@sl@feat +\tl_clear:N \zf@bfsl@feat +\tl_clear:N \zf@sc@feat +\clist_clear:N \l_fontspec_sizefeat_clist +\newcommand*\fontspec_init:{ + \zf@icufalse + \cs_set_eq:NN \fontspec_namewrap:n \use:n + \tl_clear:N \l_fontspec_optical_size_tl + \tl_clear:N \l_fontspec_renderer_tl + \tl_set:Nn \l_fontspec_script_name_tl {Latin} + \tl_set:Nn \l_fontspec_script_tl {latn} + \tl_set:Nn \l_fontspec_lang_name_tl {Default} + \tl_set:Nn \l_fontspec_lang_tl {DFLT} + \luatex_if_engine:T { + \tl_set:Nn \l_fontspec_mode_tl {node} + \luatexprehyphenchar =`\- % fixme + \luatexposthyphenchar = 0 % fixme + \luatexpreexhyphenchar = 0 % fixme + \luatexpostexhyphenchar= 0 % fixme + } +} +\newcommand*\zf@make@smallcaps{ + \let\zf@smallcaps\@empty + \xetex_or_luatex:nn + { + \ifzf@atsui + \fontspec_make_AAT_feature_string:nn{3}{3} + \unless\ifx\@tempa\@empty + \edef\zf@smallcaps{\@tempa;} + \fi + \fi + \ifzf@icu + \fontspec_check_ot_feat:nT {+smcp} {\edef\zf@smallcaps{+smcp;}} + \fi + } + { + \fontspec_check_ot_feat:nT {+smcp} {\edef\zf@smallcaps{+smcp;}} + } +} +\cs_new:Npn \sclist_put_right:Nn #1#2 { + \tl_if_empty:NT #1 { + + } +} +\newcommand*\zf@update@ff[1]{ + \unless\ifzf@firsttime + \xdef\l_fontspec_rawfeatures_sclist{\l_fontspec_rawfeatures_sclist #1;} + \fi +} +\cs_new:Npn \fontspec_make_feature:nnn #1#2#3 { + \xetex_or_luatex:nn + { + \ifzf@atsui + \fontspec_make_AAT_feature:nn {#1}{#2} + \fi + \ifzf@icu + \fontspec_make_ICU_feature:n {#3} + \fi + } + { + \fontspec_make_ICU_feature:n {#3} + } +} +\cs_new:Npn \fontspec_make_AAT_feature:nn #1#2 { + \tl_if_empty:nTF {#1} + { + \fontspec_warning:n {aat-feature-not-exist} + } + { + \fontspec_make_AAT_feature_string:nn {#1}{#2} + \ifx\@tempa\@empty + \fontspec_warning:nx {aat-feature-not-exist-in-font} {#1,#2} + \else + \zf@update@family{+#1,#2} + \zf@update@ff\@tempa + \fi + } +} +\cs_new:Npn \fontspec_make_ICU_feature:n #1 { + \tl_if_empty:nTF {#1} + { + \fontspec_warning:n {icu-feature-not-exist} + } + { + \fontspec_check_ot_feat:nTF {#1} { + \zf@update@family{#1} + \zf@update@ff{#1} + }{ + \fontspec_warning:nx {icu-feature-not-exist-in-font} {#1} + } + } +} +\newcommand*\zf@define@font@feature[1]{ + \define@key[zf]{options}{#1}{{\setkeys[zf@feat]{#1}{##1}}} +} +\newcommand*\zf@define@feature@option[5]{ + \define@key[zf@feat]{#1}{#2}[]{\fontspec_make_feature:nnn{#3}{#4}{#5}} +} +\newcommand*\keyval@alias@key[4][KV]{ + \cs_set_eq:cc{#1@#2@#4}{#1@#2@#3} + \cs_set_eq:cc{#1@#2@#4@default}{#1@#2@#3@default} +} +\newcommand*\multi@alias@key[2]{ + \key@ifundefined[zf]{options}{#1} + { + \key@ifundefined[zf]{preparse}{#1} + { + \key@ifundefined[zf]{preparse-external}{#1} + { \fontspec_warning:nx {rename-feature-not-exist} {#1} } + { \keyval@alias@key[zf]{preparse-external}{#1}{#2} } + } + { \keyval@alias@key[zf]{preparse}{#1}{#2} } + } + { \keyval@alias@key[zf]{options}{#1}{#2} } +} +\cs_new:Npn \fontspec_make_AAT_feature_string:nn #1#2 { + \edef\@tempa{\XeTeXfeaturename\zf@basefont #1} + \unless\ifx\@tempa\@empty + \ifnum\XeTeXisexclusivefeature\zf@basefont #1>0 + \edef\@tempb{\XeTeXselectorname\zf@basefont #1\space #2} + \else + \unless\ifodd #2 + \edef\@tempb{\XeTeXselectorname\zf@basefont #1\space #2} + \else + \edef\@tempb{ + \XeTeXselectorname\zf@basefont #1\space \numexpr#2-1\relax + } + \unless\ifx\@tempb\@empty + \edef\@tempb{!\@tempb} + \fi + \fi + \fi + \unless\ifx\@tempb\@empty + \edef\@tempa{\@tempa=\@tempb} + \else + \let\@tempa\@empty + \fi + \fi +} +\cs_set:Npn \fontspec_iv_str_to_num:n #1 { + \fontspec_iv_str_to_num:w #1 \@empty \@empty \q_nil +} +\cs_set:Npn \fontspec_iv_str_to_num:w #1#2#3#4#5 \q_nil { + \int_set:Nn \l_fontspec_strnum_int { + `#1 * "1000000 + + `#2 * "10000 + + \ifx \@empty #3 32 \else `#3 \fi * "100 + + \ifx \@empty #4 32 \else `#4 \fi + } +} +\cs_set:Npn \fontspec_v_str_to_num:n #1 { + \bool_if:nTF + { + \tl_if_head_eq_charcode_p:nN {#1} {+} || + \tl_if_head_eq_charcode_p:nN {#1} {-} + } + { + \exp_after:wN \fontspec_iv_str_to_num:n + \exp_after:wN { \use_none:n #1 } + } + { \fontspec_iv_str_to_num:n {#1} } +} +\xetex_or_luatex:nnn {\prg_new_conditional:Nnn \fontspec_check_script:n {TF}} + { + \fontspec_iv_str_to_num:n{#1} + \@tempcntb\XeTeXOTcountscripts\zf@basefont + \c@zf@index\z@ \@tempswafalse + \loop\ifnum\c@zf@index<\@tempcntb + \ifnum\XeTeXOTscripttag\zf@basefont\c@zf@index=\l_fontspec_strnum_int + \@tempswatrue + \c@zf@index\@tempcntb + \else + \advance\c@zf@index\@ne + \fi + \repeat + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } + { + \directlua{fontspec.check_ot_script("zf@basefont", "#1")} + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } +\xetex_or_luatex:nnn {\prg_new_conditional:Nnn \fontspec_check_lang:n {TF}} + { + \fontspec_iv_str_to_num:n{#1} + \@tempcntb\XeTeXOTcountlanguages\zf@basefont\c@zf@script + \c@zf@index\z@ + \@tempswafalse + \loop\ifnum\c@zf@index<\@tempcntb + \ifnum\XeTeXOTlanguagetag\zf@basefont\c@zf@script\c@zf@index=\l_fontspec_strnum_int + \@tempswatrue + \c@zf@index\@tempcntb + \else + \advance\c@zf@index\@ne + \fi + \repeat + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } + { + \directlua{ + fontspec.check_ot_lang( "zf@basefont", "#1", "\l_fontspec_script_tl" ) + } + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } +\xetex_or_luatex:nnn + { \prg_new_conditional:Nnn \fontspec_check_ot_feat:n {TF,T} } + { + \@tempcntb\XeTeXOTcountfeatures\zf@basefont\c@zf@script\c@zf@language + \fontspec_v_str_to_num:n {#1} + \c@zf@index\z@ + \@tempswafalse + \loop\ifnum\c@zf@index<\@tempcntb + \ifnum\XeTeXOTfeaturetag\zf@basefont\c@zf@script\c@zf@language + \c@zf@index=\l_fontspec_strnum_int + \@tempswatrue + \c@zf@index\@tempcntb + \else + \advance\c@zf@index\@ne + \fi + \repeat + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } + { + \directlua{ + fontspec.check_ot_feat( + "zf@basefont", "#1", + "\l_fontspec_lang_tl", "\l_fontspec_script_tl" + ) + } + \if@tempswa \prg_return_true: \else: \prg_return_false: \fi: + } +\bool_new:N \l_fontspec_external_bool +\define@key[zf]{preparse-external}{ExternalLocation}[]{ + \zf@nobftrue + \zf@noittrue + \bool_set_true:N \l_fontspec_external_bool + \cs_gset:Npn \fontspec_namewrap:n ##1 { [ #1 ##1 ] } + \xetex_if_engine:T { \setkeys[zf]{preparse}{Renderer=ICU} } +} +\aliasfontfeature{ExternalLocation}{Path} +\define@key[zf]{preparse-external}{Extension}{ + \tl_set:Nn \l_fontspec_extension_tl {#1} + \bool_if:NF \l_fontspec_external_bool { + \setkeys*[zf]{preparse-external}{ExternalLocation} + } +} +\tl_clear:N \l_fontspec_extension_tl +\define@choicekey[zf]{preparse}{Renderer}[\l_tmpa_tl\l_tmpa_num] + {AAT,ICU,Graphite,Full,Basic}{ + \zf@update@family{+rend:#1} + \intexpr_compare:nTF {\l_tmpa_num < 3} { + \xetex_or_luatex:nn + { + \tl_set:Nv \l_fontspec_renderer_tl {g_fontspec_renderer_tag_\l_tmpa_tl} + } + { + \fontspec_warning:nx {only-xetex-feature} {Renderer=AAT/ICU/Graphite} + } + }{ + \xetex_or_luatex:nn + { \fontspec_warning:nx {only-luatex-feature} {Renderer=Full/Basic} } + { \tl_set:Nv \l_fontspec_mode_tl {g_fontspec_mode_tag_\l_tmpa_tl} } + } +} +\tl_set:cn {g_fontspec_renderer_tag_AAT} {/AAT} +\tl_set:cn {g_fontspec_renderer_tag_ICU} {/ICU} +\tl_set:cn {g_fontspec_renderer_tag_Graphite} {/GR} +\tl_set:cn {g_fontspec_mode_tag_Full} {node} +\tl_set:cn {g_fontspec_mode_tag_Basic} {base} +\define@key[zf]{preparse}{Script}{ + \xetex_if_engine:T { \setkeys[zf]{preparse}{Renderer=ICU} } + \tl_set:Nn \l_fontspec_script_name_tl {#1} + \zf@update@family{+script:#1} +} +\define@key[zf]{preparse}{Language}{ + \xetex_if_engine:T { \setkeys[zf]{preparse}{Renderer=ICU} } + \tl_set:Nn \l_fontspec_lang_name_tl {#1} + \zf@update@family{+language:#1} +} +\define@key[zf]{preparse-external}{UprightFont}{ + \fontspec_complete_fontname:Nn \zf@up {#1} + \zf@update@family{up:#1} +} +\define@key[zf]{preparse-external}{BoldFont}{ + \edef\@tempa{#1} + \ifx\@tempa\@empty + \zf@nobftrue + \zf@update@family{nobf} + \else + \zf@nobffalse + \fontspec_complete_fontname:Nn \zf@bf {#1} + \zf@update@family{bf:#1} + \fi +} +\define@key[zf]{preparse-external}{ItalicFont}{ + \edef\@tempa{#1} + \ifx\@tempa\@empty + \zf@noittrue + \zf@update@family{noit} + \else + \zf@noitfalse + \fontspec_complete_fontname:Nn \zf@it {#1} + \zf@update@family{it:#1} + \fi +} +\define@key[zf]{preparse-external}{BoldItalicFont}{ + \fontspec_complete_fontname:Nn \zf@bfit {#1} + \zf@update@family{bfit:#1} +} +\define@key[zf]{preparse-external}{SlantedFont}{ + \fontspec_complete_fontname:Nn \zf@sl {#1} + \zf@update@family{sl:#1} +} +\define@key[zf]{preparse-external}{BoldSlantedFont}{ + \fontspec_complete_fontname:Nn \zf@bfsl {#1} + \zf@update@family{bfsl:#1} +} +\define@key[zf]{options}{SmallCapsFont}{ + \edef\@tempa{#1} + \ifx\@tempa\@empty + \zf@nosctrue + \zf@update@family{nosc} + \else + \zf@noscfalse + \fontspec_complete_fontname:Nn \zf@sc {#1} + \zf@update@family{sc:\zap@space #1~\@empty} + \fi +} +\cs_set:Npn \fontspec_complete_fontname:Nn #1#2 { + \tl_set:Nn #1 {#2} + \tl_replace_all_in:Nnx #1 {*} {\zf@fontname} +} +\cs_generate_variant:Nn \tl_replace_all_in:Nnn {Nnx} +\define@key[zf]{preparse}{UprightFeatures}{ + \def\zf@up@feat{, #1} + \zf@update@family{rmfeat:#1} +} +\define@key[zf]{preparse}{BoldFeatures}{ + \def\zf@bf@feat{, #1} + \zf@update@family{bffeat:#1} +} +\define@key[zf]{preparse}{ItalicFeatures}{ + \def\zf@it@feat{, #1} + \zf@update@family{itfeat:#1} +} +\define@key[zf]{preparse}{BoldItalicFeatures}{ + \def\zf@bfit@feat{, #1} + \zf@update@family{bfitfeat:#1} +} +\define@key[zf]{preparse}{SlantedFeatures}{ + \def\zf@sl@feat{, #1} + \zf@update@family{slfeat:#1} +} +\define@key[zf]{preparse}{BoldSlantedFeatures}{ + \def\zf@bfsl@feat{, #1} + \zf@update@family{bfslfeat:#1} +} +\define@key[zf]{options}{SmallCapsFeatures}{ + \unless\ifzf@firsttime\def\zf@sc@feat{, #1}\fi + \zf@update@family{scfeat:\zap@space #1~\@empty} +} +\define@key[zf]{preparse}{SizeFeatures}{ + \unless\ifzf@firsttime\def\l_fontspec_sizefeat_clist{#1}\fi + \zf@update@family{sizefeat:\zap@space #1~\@empty} +} +\define@key[zf]{sizing}{Size}{ \tl_set:Nn \l_fontspec_size_tl {#1} } +\define@key[zf]{sizing}{Font}{ + \fontspec_complete_fontname:Nn \l_fontspec_sizedfont_tl {#1} +} +\define@key[zf]{options}{Scale}{ + \prg_case_str:nnn {#1} + { + {MatchLowercase} { \fontspec_calc_scale:n {5} } + {MatchUppercase} { \fontspec_calc_scale:n {8} } + } + { \tl_set:Nx \l_fontspec_scale_tl {#1} } + \zf@update@family{+scale:\l_fontspec_scale_tl} + \tl_set:Nx \l_fontspec_scale_tl { s*[\l_fontspec_scale_tl] } +} +\cs_new:Npn \fontspec_calc_scale:n #1 { + \group_begin: + \rmfamily + \fontspec_set_font_dimen:NnN \@tempdima {#1} \font + \fontspec_set_font_dimen:NnN \@tempdimb {#1} \zf@basefont + \dim_set:Nn \@tempdimc { 1pt*\@tempdima/\@tempdimb } + \tl_gset:Nx \l_fontspec_scale_tl {\strip@pt\@tempdimc} + \fontspec_info:n {set-scale} + \group_end: +} +\xetex_or_luatex:nnn { \cs_new:Npn \fontspec_set_font_dimen:NnN #1#2#3 } +{ + \dim_set:Nn #1 { \fontdimen #2 #3 } +} +{ + \dim_set:Nn #1 { \directlua{ fontspec.get_dimen(#2, "\cs_to_str:N #3") } } +} +\define@key[zf]{options}{WordSpace}{ + \zf@update@family{+wordspace:#1} + \unless\ifzf@firsttime + \zf@wordspace@parse#1,\zf@@ii,\zf@@iii,\zf@@ + \fi +} +\def\zf@wordspace@parse#1,#2,#3,#4\zf@@{ + \def\@tempa{#4} + \ifx\@tempa\@empty + \setlength\@tempdima{#1\fontdimen2\zf@basefont} + \@tempdimb\@tempdima + \@tempdimc\@tempdima + \else + \setlength\@tempdima{#1\fontdimen2\zf@basefont} + \setlength\@tempdimb{#2\fontdimen3\zf@basefont} + \setlength\@tempdimc{#3\fontdimen4\zf@basefont} + \fi + \edef\zf@adjust{ + \zf@adjust + \fontdimen2\font\the\@tempdima + \fontdimen3\font\the\@tempdimb + \fontdimen4\font\the\@tempdimc + } +} +\define@key[zf]{options}{PunctuationSpace}{ + \zf@update@family{+punctspace:#1} + \setlength\@tempdima{#1\fontdimen7\zf@basefont} + \edef\zf@adjust{\zf@adjust\fontdimen7\font\the\@tempdima} +} +\define@key[zf]{options}{LetterSpace}{ + \zf@update@family{+tracking:#1} + \zf@update@ff{letterspace=#1} +} +\define@key[zf]{options}{HyphenChar}{ + \zf@update@family{+hyphenchar:#1} + \edef\@tempa{#1} + \edef\@tempb{None} + \ifx\@tempa\@tempb + \xetex_or_luatex:nnn { \g@addto@macro\zf@adjust } + { \hyphenchar\font-1\relax } + { \luatexprehyphenchar=-1\relax } + \else + \zf@check@one@char#1\zf@@ + \ifx\@tempb\@empty + \xetex_or_luatex:nn { + {\zf@basefont\expandafter\ifnum\expandafter\XeTeXcharglyph + \expandafter`#1 > \z@ + \g@addto@macro\zf@adjust{% + {\expandafter\hyphenchar\expandafter + \font\expandafter`#1}}% + \else + \fontspec_error:nx {no-glyph}{#1} + \fi}% + }{ + \ifnum\directlua{ + fontspec.sprint(fontspec.charglyph('#1', 'zf@basefont')) + } > \z@ + \g@addto@macro\zf@adjust{\luatexprehyphenchar=`#1\relax} + \else + \fontspec_error:nx {no-glyph}{#1} + \fi + } + \else + \xetex_or_luatex:nn { + {\zf@basefont\ifnum\XeTeXcharglyph#1 > \z@ + \g@addto@macro\zf@adjust{\hyphenchar\font#1\relax}% + \else + \fontspec_error:nx {no-glyph}{#1} + \fi}% + }{ + \ifnum\directlua{ + fontspec.sprint(fontspec.charglyph('#1', 'zf@basefont')) + } > \z@ + \g@addto@macro\zf@adjust{\luatexprehyphenchar=#1\relax} + \else + \fontspec_error:nx {no-glyph}{#1} + \fi + } + \fi + \fi +} +\def\zf@check@one@char#1#2\zf@@{\def\@tempb{#2}} +\define@key[zf]{options}{Color}{ + \zf@update@family{+col:#1} + \zf@update@ff{color=#1} +} +\keyval@alias@key[zf]{options}{Color}{Colour} +\xetex_or_luatex:nnn { + \define@key[zf]{options}{Mapping} +}{ + \zf@update@family{+map:#1} + \zf@update@ff{mapping=#1} +}{ + \tl_if_eq:nnTF {#1} {tex-text} { + \fontspec_warning:n {no-mapping-ligtex} + \msg_redirect_name:nnn {fontspec} {no-mapping-ligtex} {none} + \setkeys[zf]{options}{ Ligatures=TeX } + }{ + \fontspec_warning:n {no-mapping} + } +} +\define@key[zf]{options}{FeatureFile}{ + \zf@update@family{+fea:#1} + \zf@update@ff{featurefile=#1} +} +\define@key[zf]{options}{Weight}{ + \zf@update@family{+weight:#1} + \zf@update@ff{weight=#1} +} +\define@key[zf]{options}{Width}{ + \zf@update@family{+width:#1} + \zf@update@ff{width=#1} +} +\define@key[zf]{options}{OpticalSize}{ + \xetex_or_luatex:nn { + \ifzf@icu + \tl_set:Nn \l_fontspec_optical_size_tl {/ S = #1} + \zf@update@family{+size:#1} + \fi + \ifzf@mm + \zf@update@family{+size:#1} + \zf@update@ff{optical size=#1} + \fi + \ifzf@icu\else + \ifzf@mm\else + \ifzf@firsttime + \fontspec_warning:n {no-opticals} + \fi + \fi + \fi + }{ + \tl_set:Nn \l_fontspec_optical_size_tl {/ S = #1} + \zf@update@family{+size:#1} + } +} +\define@key[zf]{options}{FakeSlant}{ + \zf@update@family{+slant:#1} + \zf@update@ff{slant=#1} +} +\define@key[zf]{options}{FakeStretch}{ + \zf@update@family{+extend:#1} + \zf@update@ff{extend=#1} +} +\define@key[zf]{options}{FakeBold}{ + \zf@update@family{+embolden:#1} + \zf@update@ff{embolden=#1} +} +\zf@define@font@feature{Ligatures} +\zf@define@feature@option{Ligatures}{Required} {1}{0}{+rlig} +\zf@define@feature@option{Ligatures}{NoRequired} {1}{1}{-rlig} +\zf@define@feature@option{Ligatures}{Common} {1}{2}{+liga} +\zf@define@feature@option{Ligatures}{NoCommon} {1}{3}{-liga} +\zf@define@feature@option{Ligatures}{Rare} {1}{4}{+dlig} +\zf@define@feature@option{Ligatures}{NoRare} {1}{5}{-dlig} +\zf@define@feature@option{Ligatures}{Discretionary} {1}{4}{+dlig} +\zf@define@feature@option{Ligatures}{NoDiscretionary}{1}{5}{-dlig} +\zf@define@feature@option{Ligatures}{Contextual} {}{} {+clig} +\zf@define@feature@option{Ligatures}{NoContextual} {}{} {-clig} +\zf@define@feature@option{Ligatures}{Historical} {}{} {+hlig} +\zf@define@feature@option{Ligatures}{NoHistorical} {}{} {-hlig} +\zf@define@feature@option{Ligatures}{Logos} {1}{6} {} +\zf@define@feature@option{Ligatures}{NoLogos} {1}{7} {} +\zf@define@feature@option{Ligatures}{Rebus} {1}{8} {} +\zf@define@feature@option{Ligatures}{NoRebus} {1}{9} {} +\zf@define@feature@option{Ligatures}{Diphthong} {1}{10}{} +\zf@define@feature@option{Ligatures}{NoDiphthong} {1}{11}{} +\zf@define@feature@option{Ligatures}{Squared} {1}{12}{} +\zf@define@feature@option{Ligatures}{NoSquared} {1}{13}{} +\zf@define@feature@option{Ligatures}{AbbrevSquared} {1}{14}{} +\zf@define@feature@option{Ligatures}{NoAbbrevSquared}{1}{15}{} +\zf@define@feature@option{Ligatures}{Icelandic} {1}{32}{} +\zf@define@feature@option{Ligatures}{NoIcelandic} {1}{33}{} +\define@key[zf@feat]{Ligatures}{TeX}[]{ + \xetex_or_luatex:nn { + \zf@update@family{+map:tex-text} + \zf@update@ff{mapping=tex-text} + }{ + \zf@update@family{+tlig+trep} + \zf@update@ff{+tlig;+trep} + } +} +\zf@define@font@feature{Letters} +\zf@define@feature@option{Letters}{Normal} {3}{0}{} +\zf@define@feature@option{Letters}{Uppercase} {3}{1}{+case} +\zf@define@feature@option{Letters}{Lowercase} {3}{2}{} +\zf@define@feature@option{Letters}{SmallCaps} {3}{3}{+smcp} +\zf@define@feature@option{Letters}{PetiteCaps} {} {} {+pcap} +\zf@define@feature@option{Letters}{UppercaseSmallCaps} {} {} {+c2sc} +\zf@define@feature@option{Letters}{UppercasePetiteCaps}{} {} {+c2pc} +\zf@define@feature@option{Letters}{InitialCaps} {3}{4}{} +\zf@define@feature@option{Letters}{Unicase} {} {} {+unic} +\zf@define@font@feature{Numbers} +\zf@define@feature@option{Numbers}{Monospaced} {6} {0}{+tnum} +\zf@define@feature@option{Numbers}{Proportional} {6} {1}{+pnum} +\zf@define@feature@option{Numbers}{Lowercase} {21}{0}{+onum} +\zf@define@feature@option{Numbers}{OldStyle} {21}{0}{+onum} +\zf@define@feature@option{Numbers}{Uppercase} {21}{1}{+lnum} +\zf@define@feature@option{Numbers}{Lining} {21}{1}{+lnum} +\zf@define@feature@option{Numbers}{SlashedZero} {14}{5}{+zero} +\zf@define@feature@option{Numbers}{NoSlashedZero}{14}{4}{-zero} +\luatex_if_engine:T { + \zf@define@feature@option{Numbers}{Arabic}{}{}{+anum} + \zf@define@feature@option{Numbers}{Farsi} {}{}{+anum} +} +\zf@define@font@feature {Contextuals} +\zf@define@feature@option{Contextuals}{Swash} {} {} {+cswh} +\zf@define@feature@option{Contextuals}{NoSwash} {} {} {-cswh} +\zf@define@feature@option{Contextuals}{Alternate} {} {} {+calt} +\zf@define@feature@option{Contextuals}{NoAlternate} {} {} {-calt} +\zf@define@feature@option{Contextuals}{WordInitial} {8}{0}{+init} +\zf@define@feature@option{Contextuals}{NoWordInitial}{8}{1}{-init} +\zf@define@feature@option{Contextuals}{WordFinal} {8}{2}{+fina} +\zf@define@feature@option{Contextuals}{NoWordFinal} {8}{3}{-fina} +\zf@define@feature@option{Contextuals}{LineInitial} {8}{4}{} +\zf@define@feature@option{Contextuals}{NoLineInitial}{8}{5}{} +\zf@define@feature@option{Contextuals}{LineFinal} {8}{6}{+falt} +\zf@define@feature@option{Contextuals}{NoLineFinal} {8}{7}{-falt} +\zf@define@feature@option{Contextuals}{Inner} {8}{8}{+medi} +\zf@define@feature@option{Contextuals}{NoInner} {8}{9}{-medi} +\zf@define@font@feature{Diacritics} +\zf@define@feature@option{Diacritics}{Show} {9}{0}{} +\zf@define@feature@option{Diacritics}{Hide} {9}{1}{} +\zf@define@feature@option{Diacritics}{Decompose} {9}{2}{} +\zf@define@feature@option{Diacritics}{MarkToBase} {}{}{+mark} +\zf@define@feature@option{Diacritics}{NoMarkToBase}{}{}{-mark} +\zf@define@feature@option{Diacritics}{MarkToMark} {}{}{+mkmk} +\zf@define@feature@option{Diacritics}{NoMarkToMark}{}{}{-mkmk} +\zf@define@feature@option{Diacritics}{AboveBase} {}{}{+abvm} +\zf@define@feature@option{Diacritics}{NoAboveBase} {}{}{-abvm} +\zf@define@feature@option{Diacritics}{BelowBase} {}{}{+blwm} +\zf@define@feature@option{Diacritics}{NoBelowBase} {}{}{-blwm} +\zf@define@font@feature{Kerning} +\zf@define@feature@option{Kerning}{Uppercase}{}{}{+cpsp} +\zf@define@feature@option{Kerning}{On} {}{}{+kern} +\zf@define@feature@option{Kerning}{Off} {}{}{-kern} +\zf@define@font@feature{VerticalPosition} +\zf@define@feature@option{VerticalPosition}{Normal} {10}{0}{} +\zf@define@feature@option{VerticalPosition}{Superior} {10}{1}{+sups} +\zf@define@feature@option{VerticalPosition}{Inferior} {10}{2}{+subs} +\zf@define@feature@option{VerticalPosition}{Ordinal} {10}{3}{+ordn} +\zf@define@feature@option{VerticalPosition}{Numerator} {} {} {+numr} +\zf@define@feature@option{VerticalPosition}{Denominator}{} {} {+dnom} +\zf@define@feature@option{VerticalPosition}{ScientificInferior}{}{}{+sinf} +\zf@define@font@feature{Fractions} +\zf@define@feature@option{Fractions}{On} {11}{1}{+frac} +\zf@define@feature@option{Fractions}{Off} {11}{0}{-frac} +\zf@define@feature@option{Fractions}{Diagonal} {11}{2}{} +\zf@define@feature@option{Fractions}{Alternate}{} {} {+afrc} +\define@key[zf]{options}{Alternate}[0]{ + \setkeys*[zf@feat]{Alternate}{#1} + \unless\ifx\XKV@rm\@empty + \def\XKV@tfam{Alternate} + \fontspec_make_feature:nnn{17}{#1}{+salt=#1} + \fi +} +\define@key[zf]{options}{Variant}{ + \setkeys*[zf@feat]{Variant}{#1} + \unless\ifx\XKV@rm\@empty + \def\XKV@tfam{Variant} + \fontspec_make_feature:nnn{18}{#1}{+ss\two@digits{#1}} + \fi +} +\aliasfontfeature{Variant}{StylisticSet} +\zf@define@font@feature{Style} +\zf@define@feature@option{Style}{Alternate} {} {} {+salt} +\zf@define@feature@option{Style}{Italic} {32}{2}{+ital} +\zf@define@feature@option{Style}{Ruby} {28}{2}{+ruby} +\zf@define@feature@option{Style}{Swash} {} {} {+swsh} +\zf@define@feature@option{Style}{Historic} {} {} {+hist} +\zf@define@feature@option{Style}{Display} {19}{1}{} +\zf@define@feature@option{Style}{Engraved} {19}{2}{} +\zf@define@feature@option{Style}{TitlingCaps} {19}{4}{+titl} +\zf@define@feature@option{Style}{TallCaps} {19}{5}{} +\zf@define@feature@option{Style}{HorizontalKana}{} {} {+hkna} +\zf@define@feature@option{Style}{VerticalKana} {} {} {+vkna} +\zf@define@font@feature{CJKShape} +\zf@define@feature@option{CJKShape}{Traditional}{20}{0} {+trad} +\zf@define@feature@option{CJKShape}{Simplified} {20}{1} {+smpl} +\zf@define@feature@option{CJKShape}{JIS1978} {20}{2} {+jp78} +\zf@define@feature@option{CJKShape}{JIS1983} {20}{3} {+jp83} +\zf@define@feature@option{CJKShape}{JIS1990} {20}{4} {+jp90} +\zf@define@feature@option{CJKShape}{Expert} {20}{10}{+expt} +\zf@define@feature@option{CJKShape}{NLC} {20}{13}{+nlck} +\zf@define@font@feature{CharacterWidth} +\zf@define@feature@option{CharacterWidth}{Proportional}{22}{0}{+pwid} +\zf@define@feature@option{CharacterWidth}{Full}{22}{1}{+fwid} +\zf@define@feature@option{CharacterWidth}{Half}{22}{2}{+hwid} +\zf@define@feature@option{CharacterWidth}{Third}{22}{3}{+twid} +\zf@define@feature@option{CharacterWidth}{Quarter}{22}{4}{+qwid} +\zf@define@feature@option{CharacterWidth}{AlternateProportional}{22}{5}{+palt} +\zf@define@feature@option{CharacterWidth}{AlternateHalf}{22}{6}{+halt} +\zf@define@feature@option{CharacterWidth}{Default}{22}{7}{} +\zf@define@font@feature{Annotation} +\zf@define@feature@option{Annotation}{Off}{24}{0}{-nalt} +\zf@define@feature@option{Annotation}{On}{}{}{+nalt} +\zf@define@feature@option{Annotation}{Box}{24}{1}{} +\zf@define@feature@option{Annotation}{RoundedBox}{24}{2}{} +\zf@define@feature@option{Annotation}{Circle}{24}{3}{} +\zf@define@feature@option{Annotation}{BlackCircle}{24}{4}{} +\zf@define@feature@option{Annotation}{Parenthesis}{24}{5}{} +\zf@define@feature@option{Annotation}{Period}{24}{6}{} +\zf@define@feature@option{Annotation}{RomanNumerals}{24}{7}{} +\zf@define@feature@option{Annotation}{Diamond}{24}{8}{} +\zf@define@feature@option{Annotation}{BlackSquare}{24}{9}{} +\zf@define@feature@option{Annotation}{BlackRoundSquare}{24}{10}{} +\zf@define@feature@option{Annotation}{DoubleCircle}{24}{11}{} +\zf@define@font@feature{Vertical} +\define@key[zf@feat]{Vertical}{RotatedGlyphs}[]{ + \ifzf@icu + \fontspec_make_feature:nnn{}{}{+vrt2} + \zf@update@family{+vert} + \zf@update@ff{vertical} + \else + \zf@update@family{+vert} + \zf@update@ff{vertical} + \fi +} +\newfontscript{Arabic}{arab} \newfontscript{Armenian}{armn} +\newfontscript{Balinese}{bali} \newfontscript{Bengali}{beng} +\newfontscript{Bopomofo}{bopo} \newfontscript{Braille}{brai} +\newfontscript{Buginese}{bugi} \newfontscript{Buhid}{buhd} +\newfontscript{Byzantine~Music}{byzm} \newfontscript{Canadian~Syllabics}{cans} +\newfontscript{Cherokee}{cher} +\newfontscript{CJK~Ideographic}{hani} \newfontscript{Coptic}{copt} +\newfontscript{Cypriot~Syllabary}{cprt} \newfontscript{Cyrillic}{cyrl} +\newfontscript{Default}{DFLT} \newfontscript{Deseret}{dsrt} +\newfontscript{Devanagari}{deva} \newfontscript{Ethiopic}{ethi} +\newfontscript{Georgian}{geor} \newfontscript{Glagolitic}{glag} +\newfontscript{Gothic}{goth} \newfontscript{Greek}{grek} +\newfontscript{Gujarati}{gujr} \newfontscript{Gurmukhi}{guru} +\newfontscript{Hangul~Jamo}{jamo} \newfontscript{Hangul}{hang} +\newfontscript{Hanunoo}{hano} \newfontscript{Hebrew}{hebr} +\newfontscript{Hiragana~and~Katakana}{kana} +\newfontscript{Javanese}{java} \newfontscript{Kannada}{knda} +\newfontscript{Kharosthi}{khar} \newfontscript{Khmer}{khmr} +\newfontscript{Lao}{lao~} \newfontscript{Latin}{latn} +\newfontscript{Limbu}{limb} \newfontscript{Linear~B}{linb} +\newfontscript{Malayalam}{mlym} \newfontscript{Math}{math} +\newfontscript{Mongolian}{mong} +\newfontscript{Musical~Symbols}{musc} \newfontscript{Myanmar}{mymr} +\newfontscript{N'ko}{nko~} \newfontscript{Ogham}{ogam} +\newfontscript{Old~Italic}{ital} +\newfontscript{Old~Persian~Cuneiform}{xpeo} +\newfontscript{Oriya}{orya} \newfontscript{Osmanya}{osma} +\newfontscript{Phags-pa}{phag} \newfontscript{Phoenician}{phnx} +\newfontscript{Runic}{runr} \newfontscript{Shavian}{shaw} +\newfontscript{Sinhala}{sinh} +\newfontscript{Sumero-Akkadian~Cuneiform}{xsux} +\newfontscript{Syloti~Nagri}{sylo} \newfontscript{Syriac}{syrc} +\newfontscript{Tagalog}{tglg} \newfontscript{Tagbanwa}{tagb} +\newfontscript{Tai~Le}{tale} \newfontscript{Tai~Lu}{talu} +\newfontscript{Tamil}{taml} \newfontscript{Telugu}{telu} +\newfontscript{Thaana}{thaa} \newfontscript{Thai}{thai} +\newfontscript{Tibetan}{tibt} \newfontscript{Tifinagh}{tfng} +\newfontscript{Ugaritic~Cuneiform}{ugar}\newfontscript{Yi}{yi~~} +\newfontscript{Kana}{kana} +\newfontscript{Maths}{math} +\newfontscript{CJK}{hani} +\newfontlanguage{Abaza}{ABA}\newfontlanguage{Abkhazian}{ABK} +\newfontlanguage{Adyghe}{ADY}\newfontlanguage{Afrikaans}{AFK} +\newfontlanguage{Afar}{AFR}\newfontlanguage{Agaw}{AGW} +\newfontlanguage{Altai}{ALT}\newfontlanguage{Amharic}{AMH} +\newfontlanguage{Arabic}{ARA}\newfontlanguage{Aari}{ARI} +\newfontlanguage{Arakanese}{ARK}\newfontlanguage{Assamese}{ASM} +\newfontlanguage{Athapaskan}{ATH}\newfontlanguage{Avar}{AVR} +\newfontlanguage{Awadhi}{AWA}\newfontlanguage{Aymara}{AYM} +\newfontlanguage{Azeri}{AZE}\newfontlanguage{Badaga}{BAD} +\newfontlanguage{Baghelkhandi}{BAG}\newfontlanguage{Balkar}{BAL} +\newfontlanguage{Baule}{BAU}\newfontlanguage{Berber}{BBR} +\newfontlanguage{Bench}{BCH}\newfontlanguage{Bible~Cree}{BCR} +\newfontlanguage{Belarussian}{BEL}\newfontlanguage{Bemba}{BEM} +\newfontlanguage{Bengali}{BEN}\newfontlanguage{Bulgarian}{BGR} +\newfontlanguage{Bhili}{BHI}\newfontlanguage{Bhojpuri}{BHO} +\newfontlanguage{Bikol}{BIK}\newfontlanguage{Bilen}{BIL} +\newfontlanguage{Blackfoot}{BKF}\newfontlanguage{Balochi}{BLI} +\newfontlanguage{Balante}{BLN}\newfontlanguage{Balti}{BLT} +\newfontlanguage{Bambara}{BMB}\newfontlanguage{Bamileke}{BML} +\newfontlanguage{Breton}{BRE}\newfontlanguage{Brahui}{BRH} +\newfontlanguage{Braj~Bhasha}{BRI}\newfontlanguage{Burmese}{BRM} +\newfontlanguage{Bashkir}{BSH}\newfontlanguage{Beti}{BTI} +\newfontlanguage{Catalan}{CAT}\newfontlanguage{Cebuano}{CEB} +\newfontlanguage{Chechen}{CHE}\newfontlanguage{Chaha~Gurage}{CHG} +\newfontlanguage{Chattisgarhi}{CHH}\newfontlanguage{Chichewa}{CHI} +\newfontlanguage{Chukchi}{CHK}\newfontlanguage{Chipewyan}{CHP} +\newfontlanguage{Cherokee}{CHR}\newfontlanguage{Chuvash}{CHU} +\newfontlanguage{Comorian}{CMR}\newfontlanguage{Coptic}{COP} +\newfontlanguage{Cree}{CRE}\newfontlanguage{Carrier}{CRR} +\newfontlanguage{Crimean~Tatar}{CRT}\newfontlanguage{Church~Slavonic}{CSL} +\newfontlanguage{Czech}{CSY}\newfontlanguage{Danish}{DAN} +\newfontlanguage{Dargwa}{DAR}\newfontlanguage{Woods~Cree}{DCR} +\newfontlanguage{German}{DEU} +\newfontlanguage{Dogri}{DGR}\newfontlanguage{Divehi}{DIV} +\newfontlanguage{Djerma}{DJR}\newfontlanguage{Dangme}{DNG} +\newfontlanguage{Dinka}{DNK}\newfontlanguage{Dungan}{DUN} +\newfontlanguage{Dzongkha}{DZN}\newfontlanguage{Ebira}{EBI} +\newfontlanguage{Eastern~Cree}{ECR}\newfontlanguage{Edo}{EDO} +\newfontlanguage{Efik}{EFI}\newfontlanguage{Greek}{ELL} +\newfontlanguage{English}{ENG}\newfontlanguage{Erzya}{ERZ} +\newfontlanguage{Spanish}{ESP}\newfontlanguage{Estonian}{ETI} +\newfontlanguage{Basque}{EUQ}\newfontlanguage{Evenki}{EVK} +\newfontlanguage{Even}{EVN}\newfontlanguage{Ewe}{EWE} +\newfontlanguage{French~Antillean}{FAN}\newfontlanguage{Farsi}{FAR} +\newfontlanguage{Finnish}{FIN}\newfontlanguage{Fijian}{FJI} +\newfontlanguage{Flemish}{FLE}\newfontlanguage{Forest~Nenets}{FNE} +\newfontlanguage{Fon}{FON}\newfontlanguage{Faroese}{FOS} +\newfontlanguage{French}{FRA}\newfontlanguage{Frisian}{FRI} +\newfontlanguage{Friulian}{FRL}\newfontlanguage{Futa}{FTA} +\newfontlanguage{Fulani}{FUL}\newfontlanguage{Ga}{GAD} +\newfontlanguage{Gaelic}{GAE}\newfontlanguage{Gagauz}{GAG} +\newfontlanguage{Galician}{GAL}\newfontlanguage{Garshuni}{GAR} +\newfontlanguage{Garhwali}{GAW}\newfontlanguage{Ge'ez}{GEZ} +\newfontlanguage{Gilyak}{GIL}\newfontlanguage{Gumuz}{GMZ} +\newfontlanguage{Gondi}{GON}\newfontlanguage{Greenlandic}{GRN} +\newfontlanguage{Garo}{GRO}\newfontlanguage{Guarani}{GUA} +\newfontlanguage{Gujarati}{GUJ}\newfontlanguage{Haitian}{HAI} +\newfontlanguage{Halam}{HAL}\newfontlanguage{Harauti}{HAR} +\newfontlanguage{Hausa}{HAU}\newfontlanguage{Hawaiin}{HAW} +\newfontlanguage{Hammer-Banna}{HBN}\newfontlanguage{Hiligaynon}{HIL} +\newfontlanguage{Hindi}{HIN}\newfontlanguage{High~Mari}{HMA} +\newfontlanguage{Hindko}{HND}\newfontlanguage{Ho}{HO} +\newfontlanguage{Harari}{HRI}\newfontlanguage{Croatian}{HRV} +\newfontlanguage{Hungarian}{HUN}\newfontlanguage{Armenian}{HYE} +\newfontlanguage{Igbo}{IBO}\newfontlanguage{Ijo}{IJO} +\newfontlanguage{Ilokano}{ILO}\newfontlanguage{Indonesian}{IND} +\newfontlanguage{Ingush}{ING}\newfontlanguage{Inuktitut}{INU} +\newfontlanguage{Irish}{IRI}\newfontlanguage{Irish~Traditional}{IRT} +\newfontlanguage{Icelandic}{ISL}\newfontlanguage{Inari~Sami}{ISM} +\newfontlanguage{Italian}{ITA}\newfontlanguage{Hebrew}{IWR} +\newfontlanguage{Javanese}{JAV}\newfontlanguage{Yiddish}{JII} +\newfontlanguage{Japanese}{JAN}\newfontlanguage{Judezmo}{JUD} +\newfontlanguage{Jula}{JUL}\newfontlanguage{Kabardian}{KAB} +\newfontlanguage{Kachchi}{KAC}\newfontlanguage{Kalenjin}{KAL} +\newfontlanguage{Kannada}{KAN}\newfontlanguage{Karachay}{KAR} +\newfontlanguage{Georgian}{KAT}\newfontlanguage{Kazakh}{KAZ} +\newfontlanguage{Kebena}{KEB}\newfontlanguage{Khutsuri~Georgian}{KGE} +\newfontlanguage{Khakass}{KHA}\newfontlanguage{Khanty-Kazim}{KHK} +\newfontlanguage{Khmer}{KHM}\newfontlanguage{Khanty-Shurishkar}{KHS} +\newfontlanguage{Khanty-Vakhi}{KHV}\newfontlanguage{Khowar}{KHW} +\newfontlanguage{Kikuyu}{KIK}\newfontlanguage{Kirghiz}{KIR} +\newfontlanguage{Kisii}{KIS}\newfontlanguage{Kokni}{KKN} +\newfontlanguage{Kalmyk}{KLM}\newfontlanguage{Kamba}{KMB} +\newfontlanguage{Kumaoni}{KMN}\newfontlanguage{Komo}{KMO} +\newfontlanguage{Komso}{KMS}\newfontlanguage{Kanuri}{KNR} +\newfontlanguage{Kodagu}{KOD}\newfontlanguage{Korean~Old~Hangul}{KOH} +\newfontlanguage{Konkani}{KOK}\newfontlanguage{Kikongo}{KON} +\newfontlanguage{Komi-Permyak}{KOP}\newfontlanguage{Korean}{KOR} +\newfontlanguage{Komi-Zyrian}{KOZ}\newfontlanguage{Kpelle}{KPL} +\newfontlanguage{Krio}{KRI}\newfontlanguage{Karakalpak}{KRK} +\newfontlanguage{Karelian}{KRL}\newfontlanguage{Karaim}{KRM} +\newfontlanguage{Karen}{KRN}\newfontlanguage{Koorete}{KRT} +\newfontlanguage{Kashmiri}{KSH}\newfontlanguage{Khasi}{KSI} +\newfontlanguage{Kildin~Sami}{KSM}\newfontlanguage{Kui}{KUI} +\newfontlanguage{Kulvi}{KUL}\newfontlanguage{Kumyk}{KUM} +\newfontlanguage{Kurdish}{KUR}\newfontlanguage{Kurukh}{KUU} +\newfontlanguage{Kuy}{KUY}\newfontlanguage{Koryak}{KYK} +\newfontlanguage{Ladin}{LAD}\newfontlanguage{Lahuli}{LAH} +\newfontlanguage{Lak}{LAK}\newfontlanguage{Lambani}{LAM} +\newfontlanguage{Lao}{LAO}\newfontlanguage{Latin}{LAT} +\newfontlanguage{Laz}{LAZ}\newfontlanguage{L-Cree}{LCR} +\newfontlanguage{Ladakhi}{LDK}\newfontlanguage{Lezgi}{LEZ} +\newfontlanguage{Lingala}{LIN}\newfontlanguage{Low~Mari}{LMA} +\newfontlanguage{Limbu}{LMB}\newfontlanguage{Lomwe}{LMW} +\newfontlanguage{Lower~Sorbian}{LSB}\newfontlanguage{Lule~Sami}{LSM} +\newfontlanguage{Lithuanian}{LTH}\newfontlanguage{Luba}{LUB} +\newfontlanguage{Luganda}{LUG}\newfontlanguage{Luhya}{LUH} +\newfontlanguage{Luo}{LUO}\newfontlanguage{Latvian}{LVI} +\newfontlanguage{Majang}{MAJ}\newfontlanguage{Makua}{MAK} +\newfontlanguage{Malayalam~Traditional}{MAL}\newfontlanguage{Mansi}{MAN} +\newfontlanguage{Marathi}{MAR}\newfontlanguage{Marwari}{MAW} +\newfontlanguage{Mbundu}{MBN}\newfontlanguage{Manchu}{MCH} +\newfontlanguage{Moose~Cree}{MCR}\newfontlanguage{Mende}{MDE} +\newfontlanguage{Me'en}{MEN}\newfontlanguage{Mizo}{MIZ} +\newfontlanguage{Macedonian}{MKD}\newfontlanguage{Male}{MLE} +\newfontlanguage{Malagasy}{MLG}\newfontlanguage{Malinke}{MLN} +\newfontlanguage{Malayalam~Reformed}{MLR}\newfontlanguage{Malay}{MLY} +\newfontlanguage{Mandinka}{MND}\newfontlanguage{Mongolian}{MNG} +\newfontlanguage{Manipuri}{MNI}\newfontlanguage{Maninka}{MNK} +\newfontlanguage{Manx~Gaelic}{MNX}\newfontlanguage{Moksha}{MOK} +\newfontlanguage{Moldavian}{MOL}\newfontlanguage{Mon}{MON} +\newfontlanguage{Moroccan}{MOR}\newfontlanguage{Maori}{MRI} +\newfontlanguage{Maithili}{MTH}\newfontlanguage{Maltese}{MTS} +\newfontlanguage{Mundari}{MUN}\newfontlanguage{Naga-Assamese}{NAG} +\newfontlanguage{Nanai}{NAN}\newfontlanguage{Naskapi}{NAS} +\newfontlanguage{N-Cree}{NCR}\newfontlanguage{Ndebele}{NDB} +\newfontlanguage{Ndonga}{NDG}\newfontlanguage{Nepali}{NEP} +\newfontlanguage{Newari}{NEW}\newfontlanguage{Nagari}{NGR} +\newfontlanguage{Norway~House~Cree}{NHC}\newfontlanguage{Nisi}{NIS} +\newfontlanguage{Niuean}{NIU}\newfontlanguage{Nkole}{NKL} +\newfontlanguage{N'ko}{NKO}\newfontlanguage{Dutch}{NLD} +\newfontlanguage{Nogai}{NOG}\newfontlanguage{Norwegian}{NOR} +\newfontlanguage{Northern~Sami}{NSM}\newfontlanguage{Northern~Tai}{NTA} +\newfontlanguage{Esperanto}{NTO}\newfontlanguage{Nynorsk}{NYN} +\newfontlanguage{Oji-Cree}{OCR}\newfontlanguage{Ojibway}{OJB} +\newfontlanguage{Oriya}{ORI}\newfontlanguage{Oromo}{ORO} +\newfontlanguage{Ossetian}{OSS}\newfontlanguage{Palestinian~Aramaic}{PAA} +\newfontlanguage{Pali}{PAL}\newfontlanguage{Punjabi}{PAN} +\newfontlanguage{Palpa}{PAP}\newfontlanguage{Pashto}{PAS} +\newfontlanguage{Polytonic~Greek}{PGR}\newfontlanguage{Pilipino}{PIL} +\newfontlanguage{Palaung}{PLG}\newfontlanguage{Polish}{PLK} +\newfontlanguage{Provencal}{PRO}\newfontlanguage{Portuguese}{PTG} +\newfontlanguage{Chin}{QIN}\newfontlanguage{Rajasthani}{RAJ} +\newfontlanguage{R-Cree}{RCR}\newfontlanguage{Russian~Buriat}{RBU} +\newfontlanguage{Riang}{RIA}\newfontlanguage{Rhaeto-Romanic}{RMS} +\newfontlanguage{Romanian}{ROM}\newfontlanguage{Romany}{ROY} +\newfontlanguage{Rusyn}{RSY}\newfontlanguage{Ruanda}{RUA} +\newfontlanguage{Russian}{RUS}\newfontlanguage{Sadri}{SAD} +\newfontlanguage{Sanskrit}{SAN}\newfontlanguage{Santali}{SAT} +\newfontlanguage{Sayisi}{SAY}\newfontlanguage{Sekota}{SEK} +\newfontlanguage{Selkup}{SEL}\newfontlanguage{Sango}{SGO} +\newfontlanguage{Shan}{SHN}\newfontlanguage{Sibe}{SIB} +\newfontlanguage{Sidamo}{SID}\newfontlanguage{Silte~Gurage}{SIG} +\newfontlanguage{Skolt~Sami}{SKS}\newfontlanguage{Slovak}{SKY} +\newfontlanguage{Slavey}{SLA}\newfontlanguage{Slovenian}{SLV} +\newfontlanguage{Somali}{SML}\newfontlanguage{Samoan}{SMO} +\newfontlanguage{Sena}{SNA}\newfontlanguage{Sindhi}{SND} +\newfontlanguage{Sinhalese}{SNH}\newfontlanguage{Soninke}{SNK} +\newfontlanguage{Sodo~Gurage}{SOG}\newfontlanguage{Sotho}{SOT} +\newfontlanguage{Albanian}{SQI}\newfontlanguage{Serbian}{SRB} +\newfontlanguage{Saraiki}{SRK}\newfontlanguage{Serer}{SRR} +\newfontlanguage{South~Slavey}{SSL}\newfontlanguage{Southern~Sami}{SSM} +\newfontlanguage{Suri}{SUR}\newfontlanguage{Svan}{SVA} +\newfontlanguage{Swedish}{SVE}\newfontlanguage{Swadaya~Aramaic}{SWA} +\newfontlanguage{Swahili}{SWK}\newfontlanguage{Swazi}{SWZ} +\newfontlanguage{Sutu}{SXT}\newfontlanguage{Syriac}{SYR} +\newfontlanguage{Tabasaran}{TAB}\newfontlanguage{Tajiki}{TAJ} +\newfontlanguage{Tamil}{TAM}\newfontlanguage{Tatar}{TAT} +\newfontlanguage{TH-Cree}{TCR}\newfontlanguage{Telugu}{TEL} +\newfontlanguage{Tongan}{TGN}\newfontlanguage{Tigre}{TGR} +\newfontlanguage{Tigrinya}{TGY}\newfontlanguage{Thai}{THA} +\newfontlanguage{Tahitian}{THT}\newfontlanguage{Tibetan}{TIB} +\newfontlanguage{Turkmen}{TKM}\newfontlanguage{Temne}{TMN} +\newfontlanguage{Tswana}{TNA}\newfontlanguage{Tundra~Nenets}{TNE} +\newfontlanguage{Tonga}{TNG}\newfontlanguage{Todo}{TOD} +\newfontlanguage{Tsonga}{TSG}\newfontlanguage{Turoyo~Aramaic}{TUA} +\newfontlanguage{Tulu}{TUL}\newfontlanguage{Tuvin}{TUV} +\newfontlanguage{Twi}{TWI}\newfontlanguage{Udmurt}{UDM} +\newfontlanguage{Ukrainian}{UKR}\newfontlanguage{Urdu}{URD} +\newfontlanguage{Upper~Sorbian}{USB}\newfontlanguage{Uyghur}{UYG} +\newfontlanguage{Uzbek}{UZB}\newfontlanguage{Venda}{VEN} +\newfontlanguage{Vietnamese}{VIT}\newfontlanguage{Wa}{WA} +\newfontlanguage{Wagdi}{WAG}\newfontlanguage{West-Cree}{WCR} +\newfontlanguage{Welsh}{WEL}\newfontlanguage{Wolof}{WLF} +\newfontlanguage{Tai~Lue}{XBD}\newfontlanguage{Xhosa}{XHS} +\newfontlanguage{Yakut}{YAK}\newfontlanguage{Yoruba}{YBA} +\newfontlanguage{Y-Cree}{YCR}\newfontlanguage{Yi~Classic}{YIC} +\newfontlanguage{Yi~Modern}{YIM}\newfontlanguage{Chinese~Hong~Kong}{ZHH} +\newfontlanguage{Chinese~Phonetic}{ZHP}\newfontlanguage{Chinese~Simplified}{ZHS} +\newfontlanguage{Chinese~Traditional}{ZHT}\newfontlanguage{Zande}{ZND} +\newfontlanguage{Zulu}{ZUL} +\define@key[zf@feat]{Lang}{Turkish}[]{ + \fontspec_check_lang:nTF {TRK} { + \c@zf@language\l_fontspec_strnum_int\relax + \zf@update@family{+lang=Turkish} + \tl_set:Nn \l_fontspec_lang_tl {TRK} + }{ + \fontspec_check_lang:nTF {TUR} { + \c@zf@language\l_fontspec_strnum_int\relax + \zf@update@family{+lang=Turkish} + \tl_set:Nn \l_fontspec_lang_tl {TUR} + }{ + \fontspec_warning:nx {language-not-exist} {#1} + } + } +} +\define@key[zf@feat]{Lang}{Default}[]{ + \zf@update@family{+lang=dflt} + \tl_set:Nn \l_fontspec_lang_tl {DFLT} + \c@zf@language=0\relax +} +\define@key[zf]{options}{RawFeature}{ + \zf@update@family{+Raw:#1} + \zf@update@ff{#1} +} +\providecommand*{\sidefault}{si} +\DeclareRobustCommand{\sishape}{ + \not@math@alphabet\sishape\relax + \fontshape\sidefault\selectfont +} +\DeclareTextFontCommand{\textsi}{\sishape} +\newcommand*{\zf@merge@shape}[3]{ + \edef\@tempa{#1} + \edef\@tempb{#2} + \ifx\f@shape\@tempb + \ifcsname\f@encoding/\f@family/\f@series/#3\endcsname + \edef\@tempa{#3} + \fi + \fi + \fontshape{\@tempa}\selectfont +} +\DeclareRobustCommand \itshape { + \not@math@alphabet\itshape\mathit + \zf@merge@shape\itdefault\scdefault\sidefault +} +\DeclareRobustCommand \slshape { + \not@math@alphabet\slshape\relax + \zf@merge@shape\sldefault\scdefault\sidefault +} +\DeclareRobustCommand \scshape { + \not@math@alphabet\scshape\relax + \zf@merge@shape\scdefault\itdefault\sidefault +} +\DeclareRobustCommand \upshape { + \not@math@alphabet\upshape\relax + \zf@merge@shape\updefault\sidefault\scdefault +} +\@ifpackageloaded{euler}{\zf@package@euler@loadedtrue} + {\zf@package@euler@loadedfalse} +\def\zf@math{ + \let\zf@font@warning\@font@warning + \let\@font@warning\@font@info + \@ifpackageloaded{euler}{ + \ifzf@package@euler@loaded + \zf@math@eulertrue + \else + \fontspec_error:n {euler-too-late} + \fi + }{} + \@ifpackageloaded{lucbmath}{\zf@math@lucidatrue}{} + \@ifpackageloaded{lucidabr}{\zf@math@lucidatrue}{} + \@ifpackageloaded{lucimatx}{\zf@math@lucidatrue}{} + \DeclareSymbolFont{legacymaths}{OT1}{cmr}{m}{n} + \SetSymbolFont{legacymaths}{bold}{OT1}{cmr}{bx}{n} + \DeclareMathAccent{\acute} {\mathalpha}{legacymaths}{19} + \DeclareMathAccent{\grave} {\mathalpha}{legacymaths}{18} + \DeclareMathAccent{\ddot} {\mathalpha}{legacymaths}{127} + \DeclareMathAccent{\tilde} {\mathalpha}{legacymaths}{126} + \DeclareMathAccent{\bar} {\mathalpha}{legacymaths}{22} + \DeclareMathAccent{\breve} {\mathalpha}{legacymaths}{21} + \DeclareMathAccent{\check} {\mathalpha}{legacymaths}{20} + \DeclareMathAccent{\hat} {\mathalpha}{legacymaths}{94} % too bad, euler + \DeclareMathAccent{\dot} {\mathalpha}{legacymaths}{95} + \DeclareMathAccent{\mathring}{\mathalpha}{legacymaths}{23} + \begingroup + \mathchardef\@tempa="603A \relax + \let\next\egroup + \ifx\colon\@tempa + \DeclareMathSymbol{\colon}{\mathpunct}{legacymaths}{58} + \fi + \endgroup + \ifzf@math@euler\else + \DeclareMathSymbol{!}{\mathclose}{legacymaths}{33} + \DeclareMathSymbol{:}{\mathrel} {legacymaths}{58} + \DeclareMathSymbol{;}{\mathpunct}{legacymaths}{59} + \DeclareMathSymbol{?}{\mathclose}{legacymaths}{63} + \ifzf@math@lucida\else + \DeclareMathSymbol{0}{\mathalpha}{legacymaths}{`0} + \DeclareMathSymbol{1}{\mathalpha}{legacymaths}{`1} + \DeclareMathSymbol{2}{\mathalpha}{legacymaths}{`2} + \DeclareMathSymbol{3}{\mathalpha}{legacymaths}{`3} + \DeclareMathSymbol{4}{\mathalpha}{legacymaths}{`4} + \DeclareMathSymbol{5}{\mathalpha}{legacymaths}{`5} + \DeclareMathSymbol{6}{\mathalpha}{legacymaths}{`6} + \DeclareMathSymbol{7}{\mathalpha}{legacymaths}{`7} + \DeclareMathSymbol{8}{\mathalpha}{legacymaths}{`8} + \DeclareMathSymbol{9}{\mathalpha}{legacymaths}{`9} + \DeclareMathSymbol{\Gamma}{\mathalpha}{legacymaths}{0} + \DeclareMathSymbol{\Delta}{\mathalpha}{legacymaths}{1} + \DeclareMathSymbol{\Theta}{\mathalpha}{legacymaths}{2} + \DeclareMathSymbol{\Lambda}{\mathalpha}{legacymaths}{3} + \DeclareMathSymbol{\Xi}{\mathalpha}{legacymaths}{4} + \DeclareMathSymbol{\Pi}{\mathalpha}{legacymaths}{5} + \DeclareMathSymbol{\Sigma}{\mathalpha}{legacymaths}{6} + \DeclareMathSymbol{\Upsilon}{\mathalpha}{legacymaths}{7} + \DeclareMathSymbol{\Phi}{\mathalpha}{legacymaths}{8} + \DeclareMathSymbol{\Psi}{\mathalpha}{legacymaths}{9} + \DeclareMathSymbol{\Omega}{\mathalpha}{legacymaths}{10} + \DeclareMathSymbol{+}{\mathbin}{legacymaths}{43} + \DeclareMathSymbol{=}{\mathrel}{legacymaths}{61} + \DeclareMathDelimiter{(}{\mathopen} {legacymaths}{40}{largesymbols}{0} + \DeclareMathDelimiter{)}{\mathclose}{legacymaths}{41}{largesymbols}{1} + \DeclareMathDelimiter{[}{\mathopen} {legacymaths}{91}{largesymbols}{2} + \DeclareMathDelimiter{]}{\mathclose}{legacymaths}{93}{largesymbols}{3} + \DeclareMathDelimiter{/}{\mathord}{legacymaths}{47}{largesymbols}{14} + \DeclareMathSymbol{\mathdollar}{\mathord}{legacymaths}{36} + \fi + \fi + \DeclareSymbolFont{operators}\zf@enc\zf@rmmaths\mddefault\updefault + \SetSymbolFont{operators}{normal}\zf@enc\zf@rmmaths\mddefault\updefault + \SetMathAlphabet\mathrm{normal}\zf@enc\zf@rmmaths\mddefault\updefault + \SetMathAlphabet\mathit{normal}\zf@enc\zf@rmmaths\mddefault\itdefault + \SetMathAlphabet\mathbf{normal}\zf@enc\zf@rmmaths\bfdefault\updefault + \SetMathAlphabet\mathsf{normal}\zf@enc\zf@sfmaths\mddefault\updefault + \SetMathAlphabet\mathtt{normal}\zf@enc\zf@ttmaths\mddefault\updefault + \SetSymbolFont{operators}{bold}\zf@enc\zf@rmmaths\bfdefault\updefault + \ifdefined\zf@rmboldmaths + \SetMathAlphabet\mathrm{bold}\zf@enc\zf@rmboldmaths\mddefault\updefault + \SetMathAlphabet\mathbf{bold}\zf@enc\zf@rmboldmaths\bfdefault\updefault + \SetMathAlphabet\mathit{bold}\zf@enc\zf@rmboldmaths\mddefault\itdefault + \else + \SetMathAlphabet\mathrm{bold}\zf@enc\zf@rmmaths\bfdefault\updefault + \SetMathAlphabet\mathit{bold}\zf@enc\zf@rmmaths\bfdefault\itdefault + \fi + \SetMathAlphabet\mathsf{bold}\zf@enc\zf@sfmaths\bfdefault\updefault + \SetMathAlphabet\mathtt{bold}\zf@enc\zf@ttmaths\bfdefault\updefault + \let\font@warning\zf@font@warning} +\def\zf@math@maybe{ + \@ifpackageloaded{anttor}{ + \ifx\define@antt@mathversions a\@zf@mathfalse\fi}{} + \@ifpackageloaded{arev}{\@zf@mathfalse}{} + \@ifpackageloaded{eulervm}{\@zf@mathfalse}{} + \@ifpackageloaded{mathdesign}{\@zf@mathfalse}{} + \@ifpackageloaded{concmath}{\@zf@mathfalse}{} + \@ifpackageloaded{cmbright}{\@zf@mathfalse}{} + \@ifpackageloaded{mathesf}{\@zf@mathfalse}{} + \@ifpackageloaded{gfsartemisia}{\@zf@mathfalse}{} + \@ifpackageloaded{gfsneohellenic}{\@zf@mathfalse}{} + \@ifpackageloaded{iwona}{ + \ifx\define@iwona@mathversions a\@zf@mathfalse\fi}{} + \@ifpackageloaded{kpfonts}{\@zf@mathfalse}{} + \@ifpackageloaded{kmath}{\@zf@mathfalse}{} + \@ifpackageloaded{kurier}{ + \ifx\define@kurier@mathversions a\@zf@mathfalse\fi}{} + \@ifpackageloaded{fouriernc}{\@zf@mathfalse}{} + \@ifpackageloaded{fourier}{\@zf@mathfalse}{} + \@ifpackageloaded{mathpazo}{\@zf@mathfalse}{} + \@ifpackageloaded{mathptmx}{\@zf@mathfalse}{} + \@ifpackageloaded{MinionPro}{\@zf@mathfalse}{} + \@ifpackageloaded{unicode-math}{\@zf@mathfalse}{} + \@ifpackageloaded{breqn}{\@zf@mathfalse}{} + \if@zf@math + \fontspec_info:n {setup-math} + \zf@math + \fi +} +\AtBeginDocument{\zf@math@maybe} +\if@zf@configfile + \InputIfFileExists{fontspec.cfg} + {\typeout{fontspec.cfg~ loaded.}} + {\typeout{No~ fontspec.cfg~ file~ found;~ no~ configuration~ loaded.}} +\fi +%% +%% Copyright 2004--2010 Will Robertson <wspr81@gmail.com> +%% Copyright 2009--2010 Khaled Hosny <khaledhosny@eglug.org> +%% +%% Distributable under the LaTeX Project Public License, +%% version 1.3c or higher (your choice). The latest version of +%% this license is at: http://www.latex-project.org/lppl.txt +%% +%% This work is "author-maintained" by Will Robertson. +%% +%% This work consists of this file fontspec.dtx +%% and the derived files fontspec.sty, +%% fontspec.lua, +%% fontspec.cfg, +%% fontspec.ins, +%% fontspec-example.ltx, +%% and fontspec.pdf. +%% +%% +%% End of file `fontspec.sty'. diff --git a/Master/texmf-dist/tex/xelatex/fontspec/fontspec.cfg b/Master/texmf-dist/tex/xelatex/fontspec/fontspec.cfg deleted file mode 100644 index a7cb96b0ed5..00000000000 --- a/Master/texmf-dist/tex/xelatex/fontspec/fontspec.cfg +++ /dev/null @@ -1,59 +0,0 @@ -%% -%% This is file `fontspec.cfg', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% fontspec.dtx (with options: `cfg') -%% -%% ________________________________ -%% The fontspec package for XeLaTeX -%% (C) 2004--2008 Will Robertson -%% -%% License information appended. -%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% FOR BACKWARDS COMPATIBILITY WITH PREVIOUS VERSIONS %%% - -\let\newfontinstance\newfontfamily - -\newcommand\newfeaturecode[3]{% - \define@key{zf}{#1}[]{\zf@make@feature{#2}{#3}{}}} - -\aliasfontfeature{BoldFont}{Bold} -\aliasfontfeature{ItalicFont}{Italic} -\aliasfontfeature{BoldItalicFont}{BoldItalic} -\aliasfontfeature{SmallCapsFont}{SmallCaps} -\aliasfontfeature{Style}{StyleOptions} -\aliasfontfeature{Contextuals}{Swashes} -\aliasfontfeatureoption{Contextuals}{Swash}{Contextual} -\aliasfontfeatureoption{Letters}{UppercaseSmallCaps}{SMALLCAPS} -\aliasfontfeatureoption{Letters}{UppercasePetiteCaps}{PETITECAPS} - -%%%%%%%%%%%%%%%%%%%%%%% -%%% FOR CONVENIENCE %%% - -\newfontscript{Kana}{kana} -\newfontscript{Maths}{math} -\newfontscript{CJK}{hani} - -%% -%% Copyright 2004--2008 by Will Robertson <wspr81@gmail.com> -%% -%% Distributable under the LaTeX Project Public License, -%% version 1.3c or higher (your choice). The latest version of -%% this license is at: http://www.latex-project.org/lppl.txt -%% -%% This work is "maintained" (as per LPPL maintenance status) -%% by Will Robertson. -%% -%% This work consists of this file fontspec.dtx -%% and the derived files fontspec.sty, -%% fontspec.cfg, -%% fontspec.ins, -%% fontspec-example.ltx, -%% and fontspec.pdf. -%% -%% -%% End of file `fontspec.cfg'. diff --git a/Master/texmf-dist/tex/xelatex/fontspec/fontspec.sty b/Master/texmf-dist/tex/xelatex/fontspec/fontspec.sty deleted file mode 100644 index 608223f15d3..00000000000 --- a/Master/texmf-dist/tex/xelatex/fontspec/fontspec.sty +++ /dev/null @@ -1,1320 +0,0 @@ -%% -%% This is file `fontspec.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% fontspec.dtx (with options: `fontspec') -%% -%% ________________________________ -%% The fontspec package for XeLaTeX -%% (C) 2004--2008 Will Robertson -%% -%% License information appended. -%% -\ProvidesPackage{fontspec} - [2008/08/09 v1.18 Advanced font selection for XeLaTeX] -\RequirePackage{ifxetex} -\RequireXeTeX -\newif\ifzf@firsttime -\newif\ifzf@nobf -\newif\ifzf@noit -\newif\ifzf@nosc -\newif\ifzf@tfm -\newif\ifzf@atsui -\newif\ifzf@icu -\newif\ifzf@mm -\newif\ifzf@math@euler -\newif\ifzf@math@lucida -\newif\ifzf@package@euler@loaded -\newif\if@zf@configfile -\newif\if@zf@euenc -\newif\if@zf@math -\newcount\c@zf@newff -\newcount\c@zf@index -\newcount\c@zf@script -\newcount\c@zf@language -\def\zf@nl{^^J\space\space\space\space} -\newcommand\zf@PackageError[2]{% - \PackageError{fontspec}{{\zf@nl #1}^^J}{#2}} -\newcommand\zf@PackageWarning[1]{% - \PackageWarning{fontspec}{\zf@nl #1^^JThis warning occured}} -\newcommand\zf@PackageInfo[1]{\PackageInfo{fontspec}{#1}} -\providecommand\def@cx[2]{\expandafter\edef\csname#1\endcsname{#2}} -\providecommand\gdef@cx[2]{\expandafter\xdef\csname#1\endcsname{#2}} -\providecommand\let@cc[2]{% - \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname} -\DeclareOption{cm-default}{\@zf@euencfalse} -\DeclareOption{lm-default}{\@zf@euenctrue} -\DeclareOption{math}{\@zf@mathtrue} -\DeclareOption{no-math}{\@zf@mathfalse} -\DeclareOption{config}{\@zf@configfiletrue} -\DeclareOption{no-config}{\@zf@configfilefalse} -\DeclareOption{noconfig}{\@zf@configfilefalse} -\DeclareOption{quiet}{% - \let\zf@PackageWarning\zf@PackageInfo - \let\zf@PackageInfo\@gobble} -\DeclareOption{silent}{% - \let\zf@PackageWarning\@gobble - \let\zf@PackageInfo\@gobble} -\ExecuteOptions{config,lm-default,math} -\ProcessOptions* -\RequirePackage{ifxetex} -\RequireXeTeX -\RequirePackage{calc} -\RequirePackage{xkeyval}[2005/05/07] -\if@zf@euenc - \def\zf@enc{EU1} - \renewcommand{\rmdefault}{lmr} - \renewcommand{\sfdefault}{lmss} - \renewcommand{\ttdefault}{lmtt} - \RequirePackage[\zf@enc]{fontenc} -\else - \def\zf@enc{U} - \let\encodingdefault\zf@enc -\fi -\let\UTFencname\zf@enc -\let\cyrillicencoding\zf@enc -\let\latinencoding\zf@enc -\g@addto@macro\document{% - \let\cyrillicencoding\zf@enc - \let\latinencoding\zf@enc} -\newcommand*\fontspec[2][]{% - \zf@fontspec{#1}{#2}% - \fontfamily\zf@family\selectfont - \ignorespaces} -\newcommand*\setmainfont[2][]{% - \zf@fontspec{#1}{#2}% - \let\rmdefault\zf@family - \normalfont} -\let\setromanfont\setmainfont -\newcommand*\setsansfont[2][]{% - \zf@fontspec{#1}{#2}% - \let\sfdefault\zf@family - \normalfont} -\newcommand*\setmonofont[2][]{% - \zf@fontspec{#1}{#2}% - \let\ttdefault\zf@family - \normalfont} -\newcommand*\setmathrm[2][]{% - \zf@fontspec{#1}{#2}% - \let\zf@rmmaths\zf@family} -\newcommand*\setboldmathrm[2][]{% - \zf@fontspec{#1}{#2}% - \let\zf@rmboldmaths\zf@family} -\newcommand*\setmathsf[2][]{% - \zf@fontspec{#1}{#2}% - \let\zf@sfmaths\zf@family} -\newcommand*\setmathtt[2][]{% - \zf@fontspec{#1}{#2}% - \let\zf@ttmaths\zf@family} -\@onlypreamble\setmathrm -\@onlypreamble\setboldmathrm -\@onlypreamble\setmathsf -\@onlypreamble\setmathtt -\def\zf@rmmaths{\rmdefault} -\def\zf@sfmaths{\sfdefault} -\def\zf@ttmaths{\ttdefault} -\newcommand*\newfontfamily[1]{% - \@ifnextchar[{\newfontfamily@i#1}{\newfontfamily@i#1[]}} -\def\newfontfamily@i#1[#2]#3{% - \zf@fontspec{#2}{#3}% - \edef\@tempa{% - \noexpand\DeclareRobustCommand\noexpand#1 - {\noexpand\fontfamily{\zf@family}\noexpand\selectfont}}% - \@tempa} -\newcommand*\newfontface[1]{% - \@ifnextchar[{\newfontface@i#1}{\newfontface@i#1[]}} -\def\newfontface@i#1[#2]#3{% - \zf@fontspec{BoldFont={},ItalicFont={},SmallCapsFont={},#2}{#3}% - \edef\@tempa{% - \noexpand\DeclareRobustCommand\noexpand#1 - {\noexpand\fontfamily{\zf@family}\noexpand\selectfont}}% - \@tempa} -\newcommand*\defaultfontfeatures[1]{\def\zf@default@options{#1,}} -\let\zf@default@options\@empty -\newcommand*\addfontfeatures[1]{% - \ifcsname zf@family@fontdef\f@family\endcsname - \begingroup - \let\zf@default@options\@empty - \edef\@tempa{% - \noexpand\zf@fontspec - {\csname zf@family@options\f@family\endcsname,#1}% - {\csname zf@family@fontname\f@family\endcsname}}% - \@tempa - \endgroup - \fontfamily\zf@family\selectfont - \else - \zf@PackageWarning{% - \protect\addfontfeature (s) ignored;\zf@nl - it cannot be used with a font that wasn't selected by fontspec.}% - \fi - \ignorespaces} -\let\addfontfeature\addfontfeatures -\newcommand*\newfontfeature[2]{% - \stepcounter{zf@newff}% - \def@cx{+zf-#1}{+zf-\the\c@zf@newff}% - \define@key[zf]{options}{#1}[]{% - \zf@update@family{\csname+zf-#1\endcsname}% - \zf@update@ff{#2}}} -\newcommand*\newAATfeature[4]{% - \unless\ifcsname zf@options@#1\endcsname - \zf@define@font@feature{#1}% - \fi - \key@ifundefined[zf]{#1}{#2}{}{% - \zf@PackageWarning{Option '#2' of font feature '#1' overwritten.}}% - \zf@define@feature@option{#1}{#2}{#3}{#4}{}} -\newcommand*\newICUfeature[3]{% - \unless\ifcsname zf@options@#1\endcsname - \zf@define@font@feature{#1}% - \fi - \key@ifundefined[zf]{#1}{#2}{}{% - \zf@PackageWarning{Option '#2' of font feature '#1' overwritten.}}% - \zf@define@feature@option{#1}{#2}{}{}{#3}} -\newcommand*\aliasfontfeature[2]{\multi@alias@key{#1}{#2}} -\newcommand*\aliasfontfeatureoption[3]{% - \keyval@alias@key[zf@feat]{#1}{#2}{#3}} -\newcommand*\newfontscript[2]{% - \define@key[zf@feat]{Script}{#1}[]{% - \zf@check@ot@script{#2}% - \if@tempswa - \global\c@zf@script\@tempcnta\relax - \xdef\zf@script@name{#1}% - \xdef\zf@family@long{\zf@family@long+script=#1}% - \xdef\zf@pre@ff{script=#2,\zf@pre@ff}% - \else - \zf@PackageWarning{Font \fontname\zf@basefont\space does not contain script '#1'}% - \fi}} -\newcommand*\newfontlanguage[2]{% - \define@key[zf@feat]{Lang}{#1}[]{% - \zf@check@ot@lang{#2}% - \if@tempswa - \global\c@zf@language\@tempcnta\relax - \xdef\zf@language@name{#1}% - \xdef\zf@family@long{\zf@family@long+lang=#1}% - \xdef\zf@pre@ff{\zf@pre@ff language=#2,}% - \else - \zf@PackageWarning{% - Font \fontname\zf@basefont\space does not contain - language '#1' for script '\zf@script@name'}% - \fi}} -\newcommand*\zf@fontspec[2]{% - \begingroup - \zf@init - \edef\zf@fontname{#2}% - \let\zf@family@long\zf@fontname - \setkeys*[zf]{prepreparse}{#1}% - \let\zf@up\zf@fontname - \edef\@tempa{\noexpand\setkeys*[zf]{preparse}{\XKV@rm}}\@tempa - \let\zf@fontname\zf@up - \let\zf@font@feat\XKV@rm - \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt - \unless\ifzf@icu - \zf@set@font@type - \fi - \ifx\zf@suffix\@empty - \ifzf@atsui - \def\zf@suffix{/AAT}% - \else - \ifzf@icu - \def\zf@suffix{/ICU}% - \fi - \fi - \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt - \fi - \zf@firsttimetrue - \zf@get@feature@requests{\zf@font@feat}% - \zf@firsttimefalse - \unless\ifcsname zf@UID@\zf@family@long\endcsname - \edef\@tempa{#2}% - \ifcsname c@zf@famc@\@tempa\endcsname - \expandafter\stepcounter\else - \expandafter\newcounter\fi - {zf@famc@\@tempa}% - \gdef@cx{zf@UID@\zf@family@long}{% - \expandafter\expandafter\expandafter - \zap@space\expandafter\@tempa\space\@empty - (\expandafter\the\csname c@zf@famc@\@tempa\endcsname)}% - \fi - \xdef\zf@family{\@nameuse{zf@UID@\zf@family@long}}% - \unless\ifcsname zf@family@fontname\zf@family\endcsname - \zf@PackageInfo{Defining font family for '#2' - with options [\zf@default@options #1]}% - \gdef@cx{zf@family@fontname\zf@family}{\zf@fontname}% - \gdef@cx{zf@family@options\zf@family}{\zf@default@options #1}% - \gdef@cx{zf@family@fontdef\zf@family} - {\zf@fontname\zf@suffix:\zf@pre@ff\zf@ff}% - \DeclareFontFamily{\zf@enc}{\zf@family}{}% - \zf@make@font@shapes{\zf@fontname} - {\mddefault}{\updefault}{\zf@font@feat\zf@up@feat}% - \unless\ifzf@nobf - \ifx\zf@bf\@empty - \zf@make@font@shapes[\zf@fontname]{/B} - {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat}% - \else - \zf@make@font@shapes{\zf@bf} - {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat}% - \fi - \fi - \unless\ifzf@noit - \ifx\zf@it\@empty - \zf@make@font@shapes[\zf@fontname]{/I} - {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat}% - \else - \zf@make@font@shapes{\zf@it} - {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat}% - \fi - \fi - \@tempswatrue - \ifzf@nobf\@tempswafalse\fi - \ifzf@noit\@tempswafalse\fi - \if@tempswa - \ifx\zf@bfit\@empty - \ifx\zf@bf\@empty - \ifx\zf@it\@empty - \zf@make@font@shapes[\zf@fontname]{/BI} - {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}% - \else - \zf@make@font@shapes[\zf@it]{/B} - {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}% - \fi - \else - \zf@make@font@shapes[\zf@bf]{/I} - {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}% - \fi - \else - \zf@make@font@shapes{\zf@bfit} - {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}% - \fi - \fi - \fi - \endgroup} -\newcommand*\zf@set@font@type{% - \zf@tfmfalse \zf@atsuifalse \zf@icufalse \zf@mmfalse - \ifcase\XeTeXfonttype\zf@basefont - \zf@tfm - \or - \zf@atsuitrue - \ifnum\XeTeXcountvariations\zf@basefont > 0 - \zf@mmtrue - \fi - \or - \zf@icutrue - \fi} -\newcommand*\zf@make@font@shapes[5][]{% - \begingroup - \edef\@tempa{#1}% - \unless\ifx\@tempa\@empty - \font\@tempfonta="\zf@font@wrap{#1}\zf@suffix" at \f@size pt - \edef\@tempa{\fontname\@tempfonta}% - \fi - \font\@tempfontb="\zf@font@wrap{#1#2}\zf@suffix" at \f@size pt - \edef\@tempb{\fontname\@tempfontb}% - \ifx\@tempa\@tempb - \zf@PackageInfo{Could not resolve font #1#2 (it might not exist)}% - \else - \edef\zf@fontname{#1#2}% - \let\zf@basefont\@tempfontb - \zf@DeclareFontShape{#3}{#4}{#5}% - \ifx\zf@sc\@empty - \unless\ifzf@nosc - \zf@make@smallcaps - \unless\ifx\zf@smallcaps\@empty - \zf@DeclareFontShape[\zf@smallcaps]{#3} - {\ifx#4\itdefault\sidefault\else\scdefault\fi}{#5\zf@sc@feat}% - \fi - \fi - \else - \edef\zf@fontname{\zf@sc}% - \zf@DeclareFontShape{#3} - {\ifx#4\itdefault\sidefault\else\scdefault\fi}{#5\zf@sc@feat}% - \fi - \fi - \endgroup} -\newcommand\zf@DeclareFontShape[4][]{% - \ifx\zf@size@feat\@empty - \zf@get@feature@requests{#4}% - \edef\zf@font@str{<->\zf@scale"\zf@font@wrap\zf@fontname\zf@suffix:% - \zf@pre@ff\zf@ff#1"}% - \else - \@for\zf@this@size:=\zf@size@feat\do{% - \let\zf@size\@empty - \let\zf@size@fnt\zf@fontname - \edef\@tempa{\noexpand - \setkeys*[zf]{sizing}{\expandafter\@firstofone\zf@this@size}}% - \@tempa - \ifx\zf@size\@empty\zf@PackageError - {Size information must be supplied} - {For example, SizeFeatures={Size={8-12},...},...}% - \fi - \zf@get@feature@requests{#4,\XKV@rm}% - \edef\zf@font@str{\zf@font@str <\zf@size>% - \zf@scale"\zf@size@fnt\zf@suffix:\zf@pre@ff\zf@ff#1"}}% - \fi - \edef\@tempa{\noexpand - \DeclareFontShape{\zf@enc}{\zf@family}{#2}{#3} - {\zf@font@str}{\zf@adjust}}% - \@tempa - \edef\@tempa{#3}% - \edef\@tempb{\itdefault}% - \ifx\@tempa\@tempb - \edef\@tempa{\noexpand - \DeclareFontShape{\zf@enc}{\zf@family}{#2}{\sldefault} - {<->ssub*\zf@family/#2/\itdefault}{\zf@adjust}}% - \@tempa - \fi} -\newcommand*{\zf@update@family}[1]{% - \ifzf@firsttime - \xdef\zf@family@long{\zf@family@long#1}% - \fi} -\newcommand*\zf@get@feature@requests[1]{% - \let\zf@ff \@empty - \let\zf@scale \@empty - \let\zf@adjust \@empty - \edef\@tempa{\noexpand\setkeys[zf]{options}{\zf@default@options#1}}% - \@tempa} -\newcommand*\zf@init{% - \zf@icufalse - \let\zf@pre@ff \@empty - \let\zf@font@feat \@empty - \let\zf@font@str \@empty - \let\zf@font@wrap \@firstofone - \let\zf@suffix \@empty - \let\zf@bf \@empty - \let\zf@it \@empty - \let\zf@bfit \@empty - \let\zf@sc \@empty - \let\zf@up@feat \@empty - \let\zf@bf@feat \@empty - \let\zf@it@feat \@empty - \let\zf@bfit@feat \@empty - \let\zf@sc@feat \@empty - \let\zf@size \@empty - \let\zf@size@feat \@empty - \let\zf@size@fnt \@empty - \c@zf@script 1818326126\relax - \def\zf@script@name{Latin}% - \c@zf@language 0\relax - \def\zf@language@name{Default}% -} -\newcommand*\zf@make@smallcaps{% - \let\zf@smallcaps\@empty - \ifzf@atsui - \zf@make@aat@feature@string{3}{3}% - \unless\ifx\@tempa\@empty - \edef\zf@smallcaps{\@tempa;}% - \fi - \fi - \ifzf@icu - \zf@check@ot@feat{+smcp}% - \if@tempswa - \edef\zf@smallcaps{+smcp,}% - \fi - \fi} -\newcommand*\zf@update@ff[1]{% - \unless\ifzf@firsttime - \xdef\zf@ff{\zf@ff #1\ifzf@icu,\else;\fi}% - \fi} -\newcommand*\zf@make@feature[3]{% - \ifzf@atsui - \def\@tempa{#1}% - \ifx\@tempa\@empty - \zf@PackageWarning{% - '\XKV@tfam=\XKV@tkey' feature not supported - for AAT font \fontname\zf@basefont}% - \else - \zf@make@aat@feature@string{#1}{#2}% - \ifx\@tempa\@empty - \zf@PackageWarning{% - AAT feature '\XKV@tfam=\XKV@tkey' (#1,#2) not available\zf@nl - in font \fontname\zf@basefont}% - \else - \zf@update@family{+#1,#2}% - \zf@update@ff\@tempa - \fi - \fi - \fi - \ifzf@icu - \edef\@tempa{#3}% - \ifx\@tempa\@empty - \zf@PackageWarning{% - '\XKV@tfam=\XKV@tkey' feature not supported - for ICU font \fontname\zf@basefont}% - \else - \expandafter\zf@check@ot@feat\expandafter{\@tempa}% - \if@tempswa - \zf@update@family{#3}% - \zf@update@ff{#3}% - \else - \zf@PackageWarning{% - OpenType feature '\XKV@tfam=\XKV@tkey' (#3) - not available\zf@nl - for font \fontname\zf@basefont, \zf@nl - with script '\zf@script@name',\zf@nl - and language '\zf@language@name'.}% - \fi - \fi - \fi} -\newcommand*\zf@define@font@feature[1]{% - \define@key[zf]{options}{#1}{{\setkeys[zf@feat]{#1}{##1}}}} -\newcommand*\zf@define@feature@option[5]{% - \define@key[zf@feat]{#1}{#2}[]{\zf@make@feature{#3}{#4}{#5}}} -\newcommand*\keyval@alias@key[4][KV]{% - \let@cc{#1@#2@#4}{#1@#2@#3}% - \let@cc{#1@#2@#4@default}{#1@#2@#3@default}} -\newcommand*\multi@alias@key[2]{% - \key@ifundefined[zf]{preparse}{#1} - {\key@ifundefined[zf]{options}{#1} - {\zf@PackageError{The feature #1 doesn't appear to be defined} - {It looks like you're trying to rename a feature that doesn't exist.}} - {\keyval@alias@key[zf]{options}{#1}{#2}}} - {\keyval@alias@key[zf]{preparse}{#1}{#2}}} -\newcommand*\zf@make@aat@feature@string[2]{% - \edef\@tempa{\XeTeXfeaturename\zf@basefont #1}% - \unless\ifx\@tempa\@empty - \ifnum\XeTeXisexclusivefeature\zf@basefont #1>0 - \edef\@tempb{\XeTeXselectorname\zf@basefont #1 #2}% - \else - \unless\ifodd #2 - \edef\@tempb{\XeTeXselectorname\zf@basefont #1 #2}% - \else - \edef\@tempb{\XeTeXselectorname\zf@basefont #1 \numexpr#2-1\relax}% - \unless\ifx\@tempb\@empty - \edef\@tempb{!\@tempb}% - \fi - \fi - \fi - \unless\ifx\@tempb\@empty - \edef\@tempa{\@tempa=\@tempb}% - \else - \let\@tempa\@empty - \fi - \fi} -\newcommand\zf@iv@strnum[1]{% - \zf@iv@strnum@i#1 \@nil} -\def\zf@iv@strnum@i#1 \@nil{% - \zf@iv@strnum@ii#1\@empty\@empty\@nil} -\def\zf@iv@strnum@ii#1#2#3#4#5\@nil{% - \@tempcnta\z@ - \@tempcntb`#1\relax - \multiply\@tempcntb"1000000\advance\@tempcnta\@tempcntb - \@tempcntb`#2 - \multiply\@tempcntb"10000\advance\@tempcnta\@tempcntb - \expandafter\@tempcntb\ifx\@empty#332\else`#3\fi - \multiply\@tempcntb"100\advance\@tempcnta\@tempcntb - \expandafter\@tempcntb\ifx\@empty#432\else`#4\fi - \advance\@tempcnta\@tempcntb} -\newcommand\zf@v@strnum[1]{% - \expandafter\zf@iv@strnum@i\@gobble#1 \@nil} -\newcommand\zf@check@ot@script[1]{% - \zf@iv@strnum{#1}% - \@tempcntb\XeTeXOTcountscripts\zf@basefont - \c@zf@index\z@ \@tempswafalse - \loop\ifnum\c@zf@index<\@tempcntb - \ifnum\XeTeXOTscripttag\zf@basefont\c@zf@index=\@tempcnta - \@tempswatrue - \c@zf@index\@tempcntb - \else - \advance\c@zf@index\@ne - \fi - \repeat} -\newcommand\zf@check@ot@lang[1]{% - \zf@iv@strnum{#1}% - \@tempcntb\XeTeXOTcountlanguages\zf@basefont\c@zf@script - \c@zf@index\z@ \@tempswafalse - \loop\ifnum\c@zf@index<\@tempcntb - \ifnum\XeTeXOTlanguagetag\zf@basefont\c@zf@script\c@zf@index=\@tempcnta - \@tempswatrue - \c@zf@index\@tempcntb - \else - \advance\c@zf@index\@ne - \fi - \repeat} -\newcommand*\zf@check@ot@feat[1]{% - \@tempcntb\XeTeXOTcountfeatures\zf@basefont\c@zf@script\c@zf@language - \zf@v@strnum{#1}% - \c@zf@index\z@ \@tempswafalse - \loop\ifnum\c@zf@index<\@tempcntb - \ifnum\XeTeXOTfeaturetag\zf@basefont\c@zf@script\c@zf@language - \c@zf@index=\@tempcnta - \@tempswatrue - \c@zf@index\@tempcntb - \else - \advance\c@zf@index\@ne - \fi - \repeat} -\define@key[zf]{prepreparse}{ExternalLocation}[]{% - \zf@icutrue - \zf@nobftrue\zf@noittrue - \gdef\zf@font@wrap##1{[#1##1]}} -\define@choicekey[zf]{preparse}{Renderer}{AAT,ICU}{% - \edef\zf@suffix{\zf@suffix/#1}% - \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt - \edef\zf@family@long{\zf@family@long +rend:#1}} -\define@key[zf]{preparse}{Script}{% - \zf@icutrue - \edef\zf@suffix{\zf@suffix/ICU}% - \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt - \edef\zf@family@long{\zf@family@long +script:#1}% - {\setkeys[zf@feat]{Script}{#1}}} -\define@key[zf]{preparse}{Language}{% - \zf@icutrue - \edef\zf@suffix{\zf@suffix/ICU}% - \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt - \edef\zf@family@long{\zf@family@long +language:#1}% - {\setkeys[zf@feat]{Lang}{#1}}} -\define@key[zf]{preparse}{UprightFont}{% - \edef\@tempa{#1}% - \zf@partial@fontname#1\@nil=\zf@up - \edef\zf@family@long{\zf@family@long up:#1}} -\define@key[zf]{preparse}{BoldFont}{% - \edef\@tempa{#1}% - \ifx\@tempa\@empty - \zf@nobftrue - \edef\zf@family@long{\zf@family@long nobf}% - \else - \zf@nobffalse - \zf@partial@fontname#1\@nil=\zf@bf - \edef\zf@family@long{\zf@family@long bf:#1}% - \fi} -\define@key[zf]{preparse}{ItalicFont}{% - \edef\@tempa{#1}% - \ifx\@tempa\@empty - \zf@noittrue - \edef\zf@family@long{\zf@family@long noit}% - \else - \zf@noitfalse - \zf@partial@fontname#1\@nil=\zf@it - \edef\zf@family@long{\zf@family@long it:#1}% - \fi} -\define@key[zf]{preparse}{BoldItalicFont}{% - \zf@partial@fontname#1\@nil=\zf@bfit - \edef\zf@family@long{\zf@family@long bfit:#1}} -\define@key[zf]{options}{SmallCapsFont}{% - \edef\@tempa{#1}% - \ifx\@tempa\@empty - \zf@nosctrue - \edef\zf@family@long{\zf@family@long nosc}% - \else - \zf@noscfalse - \zf@partial@fontname#1\@nil=\zf@sc - \zf@update@family{sc:\zap@space #1 \@empty}% - \fi} -\def\zf@partial@fontname#1#2\@nil=#3{% - \if#1*\relax - \edef#3{\zf@fontname#2}% - \else - \edef#3{#1#2}% - \fi} -\define@key[zf]{preparse}{UprightFeatures}{% - \def\zf@up@feat{,#1}% - \edef\zf@family@long{\zf@family@long rmfeat:#1}} -\define@key[zf]{preparse}{BoldFeatures}{% - \def\zf@bf@feat{,#1}% - \edef\zf@family@long{\zf@family@long bffeat:#1}} -\define@key[zf]{preparse}{ItalicFeatures}{% - \def\zf@it@feat{,#1}% - \edef\zf@family@long{\zf@family@long itfeat:#1}} -\define@key[zf]{preparse}{BoldItalicFeatures}{% - \def\zf@bfit@feat{,#1}% - \edef\zf@family@long{\zf@family@long bfitfeat:#1}} -\define@key[zf]{options}{SmallCapsFeatures}{% - \unless\ifzf@firsttime\def\zf@sc@feat{,#1}\fi - \zf@update@family{scfeat:\zap@space #1 \@empty}} -\define@key[zf]{preparse}{SizeFeatures}{% - \unless\ifzf@firsttime\def\zf@size@feat{#1}\fi - \zf@update@family{sizefeat:\zap@space #1 \@empty}} -\define@key[zf]{sizing}{Size}{\def\zf@size{#1}} -\define@key[zf]{sizing}{Font}{\def\zf@size@fnt{#1}} -\define@key[zf]{options}{Scale}{% - \edef\@tempa{#1}% - \edef\@tempb{MatchLowercase}% - \ifx\@tempa\@tempb - \zf@calc@scale{5}% - \else - \edef\@tempb{MatchUppercase}% - \ifx\@tempa\@tempb - \zf@calc@scale{8}% - \else - \edef\zf@scale{#1}% - \fi - \fi - \zf@update@family{+scale:\zf@scale}% - \edef\zf@scale{s*[\zf@scale]}} -\newcommand\zf@calc@scale[1]{% - \begingroup - \rmfamily - \setlength\@tempdima{\fontdimen#1\font}% - \setlength\@tempdimb{\fontdimen#1\zf@basefont}% - \setlength\@tempdimc{1pt*\ratio{\@tempdima}{\@tempdimb}}% - \xdef\zf@scale{\strip@pt\@tempdimc}% - \zf@PackageInfo{\zf@fontname\space scale = \zf@scale}% - \endgroup} -\define@key[zf]{options}{WordSpace}{% - \zf@update@family{+wordspace:#1}% - \unless\ifzf@firsttime - \zf@wordspace@parse#1,\zf@@ii,\zf@@iii,\zf@@ - \fi} -\def\zf@wordspace@parse#1,#2,#3,#4\zf@@{% - \def\@tempa{#4}% - \ifx\@tempa\@empty - \setlength\@tempdima{#1\fontdimen2\zf@basefont}% - \@tempdimb\@tempdima - \@tempdimc\@tempdima - \else - \setlength\@tempdima{#1\fontdimen2\zf@basefont}% - \setlength\@tempdimb{#2\fontdimen3\zf@basefont}% - \setlength\@tempdimc{#3\fontdimen4\zf@basefont}% - \fi - \edef\zf@adjust{\zf@adjust - \fontdimen2\font\the\@tempdima - \fontdimen3\font\the\@tempdimb - \fontdimen4\font\the\@tempdimc}} -\define@key[zf]{options}{PunctuationSpace}{% - \zf@update@family{+punctspace:#1}% - \setlength\@tempdima{#1\fontdimen7\zf@basefont}% - \edef\zf@adjust{\zf@adjust\fontdimen7\font\the\@tempdima}} -\define@key[zf]{options}{LetterSpace}{% - \zf@update@family{+tracking:#1}% - \zf@update@ff{letterspace=#1}} -\define@key[zf]{options}{HyphenChar}{% - \zf@update@family{+hyphenchar:#1}% - \edef\@tempa{#1}% - \edef\@tempb{None}% - \ifx\@tempa\@tempb - \g@addto@macro\zf@adjust{\hyphenchar\font-1\relax}% - \else - \zf@check@one@char#1\zf@@ - \ifx\@tempb\@empty - {\zf@basefont\expandafter\ifnum\expandafter\XeTeXcharglyph - \expandafter`#1 > 0 - \g@addto@macro\zf@adjust{% - {\expandafter\hyphenchar\expandafter - \font\expandafter`#1}}% - \else - \zf@PackageError - {\fontname\zf@basefont\space doesn't appear to have the glyph - corresponding to #1.} - {You can't hyphenate with a character that's not available!} - \fi}% - \else - {\zf@basefont\ifnum\XeTeXcharglyph#1 > 0 - \g@addto@macro\zf@adjust{\hyphenchar\font#1\relax}% - \else - \zf@PackageError - {\fontname\zf@basefont\space doesn't appear to have the glyph - corresponding to #1.} - {You can't hyphenate with a character that's not available!}% - \fi}% - \fi - \fi} -\def\zf@check@one@char#1#2\zf@@{\def\@tempb{#2}} -\define@key[zf]{options}{Colour}{% - \zf@update@family{+col:#1}% - \zf@update@ff{color=#1}} -\keyval@alias@key[zf]{options}{Colour}{Color} -\define@key[zf]{options}{Mapping}{% - \zf@update@family{+map:#1}% - \zf@update@ff{mapping=#1}} -\define@key[zf]{options}{Weight}{% - \zf@update@family{+weight:#1}% - \zf@update@ff{weight=#1}} -\define@key[zf]{options}{Width}{% - \zf@update@family{+width:#1}% - \zf@update@ff{width=#1}} -\define@key[zf]{options}{OpticalSize}{% - \ifzf@icu - \edef\zf@suffix{\zf@suffix/S=#1}% - \zf@update@family{+size:#1}% - \fi - \ifzf@mm - \zf@update@family{+size:#1}% - \zf@update@ff{optical size=#1}% - \fi - \ifzf@icu\else - \ifzf@mm\else - \ifzf@firsttime - \zf@PackageWarning - {\fontname\zf@basefont\space doesn't appear - to have an Optical Size axis}% - \fi - \fi - \fi} -\define@key[zf]{options}{FakeSlant}{% - \zf@update@family{+slant:#1}% - \zf@update@ff{slant=#1}} -\define@key[zf]{options}{FakeStretch}{% - \zf@update@family{+extend:#1}% - \zf@update@ff{extend=#1}} -\define@key[zf]{options}{FakeBold}{% - \zf@update@family{+embolden:#1}% - \zf@update@ff{embolden=#1}} -\zf@define@font@feature{Ligatures} -\zf@define@feature@option{Ligatures}{Required} {1}{0}{+rlig} -\zf@define@feature@option{Ligatures}{NoRequired} {1}{1}{-rlig} -\zf@define@feature@option{Ligatures}{Common} {1}{2}{+liga} -\zf@define@feature@option{Ligatures}{NoCommon} {1}{3}{-liga} -\zf@define@feature@option{Ligatures}{Rare} {1}{4}{+dlig} -\zf@define@feature@option{Ligatures}{NoRare} {1}{5}{-dlig} -\zf@define@feature@option{Ligatures}{Discretionary} {1}{4}{+dlig} -\zf@define@feature@option{Ligatures}{NoDiscretionary}{1}{5}{-dlig} -\zf@define@feature@option{Ligatures}{Contextual} {}{} {+clig} -\zf@define@feature@option{Ligatures}{NoContextual} {}{} {-clig} -\zf@define@feature@option{Ligatures}{Historical} {}{} {+hlig} -\zf@define@feature@option{Ligatures}{NoHistorical} {}{} {-hlig} -\zf@define@feature@option{Ligatures}{Logos} {1}{6} {} -\zf@define@feature@option{Ligatures}{NoLogos} {1}{7} {} -\zf@define@feature@option{Ligatures}{Rebus} {1}{8} {} -\zf@define@feature@option{Ligatures}{NoRebus} {1}{9} {} -\zf@define@feature@option{Ligatures}{Diphthong} {1}{10}{} -\zf@define@feature@option{Ligatures}{NoDiphthong} {1}{11}{} -\zf@define@feature@option{Ligatures}{Squared} {1}{12}{} -\zf@define@feature@option{Ligatures}{NoSquared} {1}{13}{} -\zf@define@feature@option{Ligatures}{AbbrevSquared} {1}{14}{} -\zf@define@feature@option{Ligatures}{NoAbbrevSquared}{1}{15}{} -\zf@define@feature@option{Ligatures}{Icelandic} {1}{32}{} -\zf@define@feature@option{Ligatures}{NoIcelandic} {1}{33}{} -\zf@define@font@feature{Letters} -\zf@define@feature@option{Letters}{Normal} {3}{0}{} -\zf@define@feature@option{Letters}{Uppercase} {3}{1}{+case} -\zf@define@feature@option{Letters}{Lowercase} {3}{2}{} -\zf@define@feature@option{Letters}{SmallCaps} {3}{3}{+smcp} -\zf@define@feature@option{Letters}{PetiteCaps} {} {} {+pcap} -\zf@define@feature@option{Letters}{UppercaseSmallCaps} {} {} {+c2sc} -\zf@define@feature@option{Letters}{UppercasePetiteCaps}{} {} {+c2pc} -\zf@define@feature@option{Letters}{InitialCaps} {3}{4}{} -\zf@define@feature@option{Letters}{Unicase} {} {} {+unic} -\zf@define@font@feature{Numbers} -\zf@define@feature@option{Numbers}{Monospaced} {6} {0}{+tnum} -\zf@define@feature@option{Numbers}{Proportional} {6} {1}{+pnum} -\zf@define@feature@option{Numbers}{Lowercase} {21}{0}{+onum} -\zf@define@feature@option{Numbers}{OldStyle} {21}{0}{+onum} -\zf@define@feature@option{Numbers}{Uppercase} {21}{1}{+lnum} -\zf@define@feature@option{Numbers}{Lining} {21}{1}{+lnum} -\zf@define@feature@option{Numbers}{SlashedZero} {14}{5}{+zero} -\zf@define@feature@option{Numbers}{NoSlashedZero}{14}{4}{-zero} -\zf@define@font@feature {Contextuals} -\zf@define@feature@option{Contextuals}{Swash} {} {} {+cswh} -\zf@define@feature@option{Contextuals}{NoSwash} {} {} {-cswh} -\zf@define@feature@option{Contextuals}{Alternate} {} {} {+calt} -\zf@define@feature@option{Contextuals}{NoAlternate} {} {} {-calt} -\zf@define@feature@option{Contextuals}{WordInitial} {8}{0}{+init} -\zf@define@feature@option{Contextuals}{NoWordInitial}{8}{1}{-init} -\zf@define@feature@option{Contextuals}{WordFinal} {8}{2}{+fina} -\zf@define@feature@option{Contextuals}{NoWordFinal} {8}{3}{-fina} -\zf@define@feature@option{Contextuals}{LineInitial} {8}{4}{} -\zf@define@feature@option{Contextuals}{NoLineInitial}{8}{5}{} -\zf@define@feature@option{Contextuals}{LineFinal} {8}{6}{+falt} -\zf@define@feature@option{Contextuals}{NoLineFinal} {8}{7}{-falt} -\zf@define@feature@option{Contextuals}{Inner} {8}{8}{+medi} -\zf@define@feature@option{Contextuals}{NoInner} {8}{9}{-medi} -\zf@define@font@feature{Diacritics} -\zf@define@feature@option{Diacritics}{Show} {9}{0}{} -\zf@define@feature@option{Diacritics}{Hide} {9}{1}{} -\zf@define@feature@option{Diacritics}{Decompose}{9}{2}{} -\zf@define@font@feature{Kerning} -\zf@define@feature@option{Kerning}{Uppercase}{}{}{+cpsp} -\zf@define@feature@option{Kerning}{On} {}{}{+kern} -\zf@define@feature@option{Kerning}{Off} {}{}{-kern} -\zf@define@font@feature{VerticalPosition} -\zf@define@feature@option{VerticalPosition}{Normal} {10}{0}{} -\zf@define@feature@option{VerticalPosition}{Superior} {10}{1}{+sups} -\zf@define@feature@option{VerticalPosition}{Inferior} {10}{2}{+subs} -\zf@define@feature@option{VerticalPosition}{Ordinal} {10}{3}{+ordn} -\zf@define@feature@option{VerticalPosition}{Numerator} {} {} {+numr} -\zf@define@feature@option{VerticalPosition}{Denominator}{} {} {+dnom} -\zf@define@feature@option{VerticalPosition}{ScientificInferior}{}{}{+sinf} -\zf@define@font@feature{Fractions} -\zf@define@feature@option{Fractions}{On} {11}{1}{+frac} -\zf@define@feature@option{Fractions}{Off} {11}{0}{-frac} -\zf@define@feature@option{Fractions}{Diagonal} {11}{2}{} -\zf@define@feature@option{Fractions}{Alternate}{} {} {+afrc} -\define@key[zf]{options}{Alternate}[0]{% - \setkeys*[zf@feat]{Alternate}{#1}% - \unless\ifx\XKV@rm\@empty - \def\XKV@tfam{Alternate}% - \zf@make@feature{17}{#1}{+salt=#1}% - \fi} -\define@key[zf]{options}{Variant}{% - \setkeys*[zf@feat]{Variant}{#1}% - \unless\ifx\XKV@rm\@empty - \def\XKV@tfam{Variant}% - \zf@make@feature{18}{#1}{+ss\two@digits{#1}}% - \fi} -\zf@define@font@feature{Style} -\zf@define@feature@option{Style}{Alternate} {} {} {+salt} -\zf@define@feature@option{Style}{Italic} {32}{2}{+ital} -\zf@define@feature@option{Style}{Ruby} {28}{2}{+ruby} -\zf@define@feature@option{Style}{Swash} {} {} {+swsh} -\zf@define@feature@option{Style}{Historic} {} {} {+hist} -\zf@define@feature@option{Style}{Display} {19}{1}{} -\zf@define@feature@option{Style}{Engraved} {19}{2}{} -\zf@define@feature@option{Style}{TitlingCaps} {19}{4}{+titl} -\zf@define@feature@option{Style}{TallCaps} {19}{5}{} -\zf@define@feature@option{Style}{HorizontalKana}{} {} {+hkna} -\zf@define@feature@option{Style}{VerticalKana} {} {} {+vkna} -\zf@define@font@feature{CJKShape} -\zf@define@feature@option{CJKShape}{Traditional}{20}{0} {+trad} -\zf@define@feature@option{CJKShape}{Simplified} {20}{1} {+smpl} -\zf@define@feature@option{CJKShape}{JIS1978} {20}{2} {+jp78} -\zf@define@feature@option{CJKShape}{JIS1983} {20}{3} {+jp83} -\zf@define@feature@option{CJKShape}{JIS1990} {20}{4} {+jp90} -\zf@define@feature@option{CJKShape}{Expert} {20}{10}{+expt} -\zf@define@feature@option{CJKShape}{NLC} {20}{13}{+nlck} -\zf@define@font@feature{CharacterWidth} -\zf@define@feature@option{CharacterWidth}{Proportional}{22}{0}{+pwid} -\zf@define@feature@option{CharacterWidth}{Full}{22}{1}{+fwid} -\zf@define@feature@option{CharacterWidth}{Half}{22}{2}{+hwid} -\zf@define@feature@option{CharacterWidth}{Third}{22}{3}{+twid} -\zf@define@feature@option{CharacterWidth}{Quarter}{22}{4}{+qwid} -\zf@define@feature@option{CharacterWidth}{AlternateProportional}{22}{5}{+palt} -\zf@define@feature@option{CharacterWidth}{AlternateHalf}{22}{6}{+halt} -\zf@define@feature@option{CharacterWidth}{Default}{22}{7}{} -\zf@define@font@feature{Annotation} -\zf@define@feature@option{Annotation}{Off}{24}{0}{-nalt} -\zf@define@feature@option{Annotation}{On}{}{}{+nalt} -\zf@define@feature@option{Annotation}{Box}{24}{1}{} -\zf@define@feature@option{Annotation}{RoundedBox}{24}{2}{} -\zf@define@feature@option{Annotation}{Circle}{24}{3}{} -\zf@define@feature@option{Annotation}{BlackCircle}{24}{4}{} -\zf@define@feature@option{Annotation}{Parenthesis}{24}{5}{} -\zf@define@feature@option{Annotation}{Period}{24}{6}{} -\zf@define@feature@option{Annotation}{RomanNumerals}{24}{7}{} -\zf@define@feature@option{Annotation}{Diamond}{24}{8}{} -\zf@define@feature@option{Annotation}{BlackSquare}{24}{9}{} -\zf@define@feature@option{Annotation}{BlackRoundSquare}{24}{10}{} -\zf@define@feature@option{Annotation}{DoubleCircle}{24}{11}{} -\zf@define@font@feature{Vertical} -\define@key[zf@feat]{Vertical}{RotatedGlyphs}[]{% - \ifzf@icu - \zf@make@feature{}{}{+vrt2}% - \zf@update@family{+vert}% - \zf@update@ff{vertical}% - \else - \zf@update@family{+vert}% - \zf@update@ff{vertical}% - \fi} -\newfontscript{Arabic}{arab} \newfontscript{Armenian}{armn} -\newfontscript{Balinese}{bali} \newfontscript{Bengali}{beng} -\newfontscript{Bopomofo}{bopo} \newfontscript{Braille}{brai} -\newfontscript{Buginese}{bugi} \newfontscript{Buhid}{buhd} -\newfontscript{Byzantine Music}{byzm} \newfontscript{Canadian Syllabics}{cans} -\newfontscript{Cherokee}{cher} -\newfontscript{CJK Ideographic}{hani} \newfontscript{Coptic}{copt} -\newfontscript{Cypriot Syllabary}{cprt} \newfontscript{Cyrillic}{cyrl} -\newfontscript{Default}{DFLT} \newfontscript{Deseret}{dsrt} -\newfontscript{Devanagari}{deva} \newfontscript{Ethiopic}{ethi} -\newfontscript{Georgian}{geor} \newfontscript{Glagolitic}{glag} -\newfontscript{Gothic}{goth} \newfontscript{Greek}{grek} -\newfontscript{Gujarati}{gujr} \newfontscript{Gurmukhi}{guru} -\newfontscript{Hangul Jamo}{jamo} \newfontscript{Hangul}{hang} -\newfontscript{Hanunoo}{hano} \newfontscript{Hebrew}{hebr} -\newfontscript{Hiragana and Katakana}{kana} -\newfontscript{Javanese}{java} \newfontscript{Kannada}{knda} -\newfontscript{Kharosthi}{khar} \newfontscript{Khmer}{khmr} -\newfontscript{Lao}{lao } \newfontscript{Latin}{latn} -\newfontscript{Limbu}{limb} \newfontscript{Linear B}{linb} -\newfontscript{Malayalam}{mlym} \newfontscript{Math}{math} -\newfontscript{Mongolian}{mong} -\newfontscript{Musical Symbols}{musc} \newfontscript{Myanmar}{mymr} -\newfontscript{N'ko}{nko } \newfontscript{Ogham}{ogam} -\newfontscript{Old Italic}{ital} -\newfontscript{Old Persian Cuneiform}{xpeo} -\newfontscript{Oriya}{orya} \newfontscript{Osmanya}{osma} -\newfontscript{Phags-pa}{phag} \newfontscript{Phoenician}{phnx} -\newfontscript{Runic}{runr} \newfontscript{Shavian}{shaw} -\newfontscript{Sinhala}{sinh} -\newfontscript{Sumero-Akkadian Cuneiform}{xsux} -\newfontscript{Syloti Nagri}{sylo} \newfontscript{Syriac}{syrc} -\newfontscript{Tagalog}{tglg} \newfontscript{Tagbanwa}{tagb} -\newfontscript{Tai Le}{tale} \newfontscript{Tai Lu}{talu} -\newfontscript{Tamil}{taml} \newfontscript{Telugu}{telu} -\newfontscript{Thaana}{thaa} \newfontscript{Thai}{thai} -\newfontscript{Tibetan}{tibt} \newfontscript{Tifinagh}{tfng} -\newfontscript{Ugaritic Cuneiform}{ugar}\newfontscript{Yi}{yi } -\newfontlanguage{Abaza}{ABA}\newfontlanguage{Abkhazian}{ABK} -\newfontlanguage{Adyghe}{ADY}\newfontlanguage{Afrikaans}{AFK} -\newfontlanguage{Afar}{AFR}\newfontlanguage{Agaw}{AGW} -\newfontlanguage{Altai}{ALT}\newfontlanguage{Amharic}{AMH} -\newfontlanguage{Arabic}{ARA}\newfontlanguage{Aari}{ARI} -\newfontlanguage{Arakanese}{ARK}\newfontlanguage{Assamese}{ASM} -\newfontlanguage{Athapaskan}{ATH}\newfontlanguage{Avar}{AVR} -\newfontlanguage{Awadhi}{AWA}\newfontlanguage{Aymara}{AYM} -\newfontlanguage{Azeri}{AZE}\newfontlanguage{Badaga}{BAD} -\newfontlanguage{Baghelkhandi}{BAG}\newfontlanguage{Balkar}{BAL} -\newfontlanguage{Baule}{BAU}\newfontlanguage{Berber}{BBR} -\newfontlanguage{Bench}{BCH}\newfontlanguage{Bible Cree}{BCR} -\newfontlanguage{Belarussian}{BEL}\newfontlanguage{Bemba}{BEM} -\newfontlanguage{Bengali}{BEN}\newfontlanguage{Bulgarian}{BGR} -\newfontlanguage{Bhili}{BHI}\newfontlanguage{Bhojpuri}{BHO} -\newfontlanguage{Bikol}{BIK}\newfontlanguage{Bilen}{BIL} -\newfontlanguage{Blackfoot}{BKF}\newfontlanguage{Balochi}{BLI} -\newfontlanguage{Balante}{BLN}\newfontlanguage{Balti}{BLT} -\newfontlanguage{Bambara}{BMB}\newfontlanguage{Bamileke}{BML} -\newfontlanguage{Breton}{BRE}\newfontlanguage{Brahui}{BRH} -\newfontlanguage{Braj Bhasha}{BRI}\newfontlanguage{Burmese}{BRM} -\newfontlanguage{Bashkir}{BSH}\newfontlanguage{Beti}{BTI} -\newfontlanguage{Catalan}{CAT}\newfontlanguage{Cebuano}{CEB} -\newfontlanguage{Chechen}{CHE}\newfontlanguage{Chaha Gurage}{CHG} -\newfontlanguage{Chattisgarhi}{CHH}\newfontlanguage{Chichewa}{CHI} -\newfontlanguage{Chukchi}{CHK}\newfontlanguage{Chipewyan}{CHP} -\newfontlanguage{Cherokee}{CHR}\newfontlanguage{Chuvash}{CHU} -\newfontlanguage{Comorian}{CMR}\newfontlanguage{Coptic}{COP} -\newfontlanguage{Cree}{CRE}\newfontlanguage{Carrier}{CRR} -\newfontlanguage{Crimean Tatar}{CRT}\newfontlanguage{Church Slavonic}{CSL} -\newfontlanguage{Czech}{CSY}\newfontlanguage{Danish}{DAN} -\newfontlanguage{Dargwa}{DAR}\newfontlanguage{Woods Cree}{DCR} -\newfontlanguage{German}{DEU}\newfontlanguage{Default}{DFLT} -\newfontlanguage{Dogri}{DGR}\newfontlanguage{Divehi}{DIV} -\newfontlanguage{Djerma}{DJR}\newfontlanguage{Dangme}{DNG} -\newfontlanguage{Dinka}{DNK}\newfontlanguage{Dungan}{DUN} -\newfontlanguage{Dzongkha}{DZN}\newfontlanguage{Ebira}{EBI} -\newfontlanguage{Eastern Cree}{ECR}\newfontlanguage{Edo}{EDO} -\newfontlanguage{Efik}{EFI}\newfontlanguage{Greek}{ELL} -\newfontlanguage{English}{ENG}\newfontlanguage{Erzya}{ERZ} -\newfontlanguage{Spanish}{ESP}\newfontlanguage{Estonian}{ETI} -\newfontlanguage{Basque}{EUQ}\newfontlanguage{Evenki}{EVK} -\newfontlanguage{Even}{EVN}\newfontlanguage{Ewe}{EWE} -\newfontlanguage{French Antillean}{FAN}\newfontlanguage{Farsi}{FAR} -\newfontlanguage{Finnish}{FIN}\newfontlanguage{Fijian}{FJI} -\newfontlanguage{Flemish}{FLE}\newfontlanguage{Forest Nenets}{FNE} -\newfontlanguage{Fon}{FON}\newfontlanguage{Faroese}{FOS} -\newfontlanguage{French}{FRA}\newfontlanguage{Frisian}{FRI} -\newfontlanguage{Friulian}{FRL}\newfontlanguage{Futa}{FTA} -\newfontlanguage{Fulani}{FUL}\newfontlanguage{Ga}{GAD} -\newfontlanguage{Gaelic}{GAE}\newfontlanguage{Gagauz}{GAG} -\newfontlanguage{Galician}{GAL}\newfontlanguage{Garshuni}{GAR} -\newfontlanguage{Garhwali}{GAW}\newfontlanguage{Ge'ez}{GEZ} -\newfontlanguage{Gilyak}{GIL}\newfontlanguage{Gumuz}{GMZ} -\newfontlanguage{Gondi}{GON}\newfontlanguage{Greenlandic}{GRN} -\newfontlanguage{Garo}{GRO}\newfontlanguage{Guarani}{GUA} -\newfontlanguage{Gujarati}{GUJ}\newfontlanguage{Haitian}{HAI} -\newfontlanguage{Halam}{HAL}\newfontlanguage{Harauti}{HAR} -\newfontlanguage{Hausa}{HAU}\newfontlanguage{Hawaiin}{HAW} -\newfontlanguage{Hammer-Banna}{HBN}\newfontlanguage{Hiligaynon}{HIL} -\newfontlanguage{Hindi}{HIN}\newfontlanguage{High Mari}{HMA} -\newfontlanguage{Hindko}{HND}\newfontlanguage{Ho}{HO} -\newfontlanguage{Harari}{HRI}\newfontlanguage{Croatian}{HRV} -\newfontlanguage{Hungarian}{HUN}\newfontlanguage{Armenian}{HYE} -\newfontlanguage{Igbo}{IBO}\newfontlanguage{Ijo}{IJO} -\newfontlanguage{Ilokano}{ILO}\newfontlanguage{Indonesian}{IND} -\newfontlanguage{Ingush}{ING}\newfontlanguage{Inuktitut}{INU} -\newfontlanguage{Irish}{IRI}\newfontlanguage{Irish Traditional}{IRT} -\newfontlanguage{Icelandic}{ISL}\newfontlanguage{Inari Sami}{ISM} -\newfontlanguage{Italian}{ITA}\newfontlanguage{Hebrew}{IWR} -\newfontlanguage{Javanese}{JAV}\newfontlanguage{Yiddish}{JII} -\newfontlanguage{Japanese}{JAN}\newfontlanguage{Judezmo}{JUD} -\newfontlanguage{Jula}{JUL}\newfontlanguage{Kabardian}{KAB} -\newfontlanguage{Kachchi}{KAC}\newfontlanguage{Kalenjin}{KAL} -\newfontlanguage{Kannada}{KAN}\newfontlanguage{Karachay}{KAR} -\newfontlanguage{Georgian}{KAT}\newfontlanguage{Kazakh}{KAZ} -\newfontlanguage{Kebena}{KEB}\newfontlanguage{Khutsuri Georgian}{KGE} -\newfontlanguage{Khakass}{KHA}\newfontlanguage{Khanty-Kazim}{KHK} -\newfontlanguage{Khmer}{KHM}\newfontlanguage{Khanty-Shurishkar}{KHS} -\newfontlanguage{Khanty-Vakhi}{KHV}\newfontlanguage{Khowar}{KHW} -\newfontlanguage{Kikuyu}{KIK}\newfontlanguage{Kirghiz}{KIR} -\newfontlanguage{Kisii}{KIS}\newfontlanguage{Kokni}{KKN} -\newfontlanguage{Kalmyk}{KLM}\newfontlanguage{Kamba}{KMB} -\newfontlanguage{Kumaoni}{KMN}\newfontlanguage{Komo}{KMO} -\newfontlanguage{Komso}{KMS}\newfontlanguage{Kanuri}{KNR} -\newfontlanguage{Kodagu}{KOD}\newfontlanguage{Korean Old Hangul}{KOH} -\newfontlanguage{Konkani}{KOK}\newfontlanguage{Kikongo}{KON} -\newfontlanguage{Komi-Permyak}{KOP}\newfontlanguage{Korean}{KOR} -\newfontlanguage{Komi-Zyrian}{KOZ}\newfontlanguage{Kpelle}{KPL} -\newfontlanguage{Krio}{KRI}\newfontlanguage{Karakalpak}{KRK} -\newfontlanguage{Karelian}{KRL}\newfontlanguage{Karaim}{KRM} -\newfontlanguage{Karen}{KRN}\newfontlanguage{Koorete}{KRT} -\newfontlanguage{Kashmiri}{KSH}\newfontlanguage{Khasi}{KSI} -\newfontlanguage{Kildin Sami}{KSM}\newfontlanguage{Kui}{KUI} -\newfontlanguage{Kulvi}{KUL}\newfontlanguage{Kumyk}{KUM} -\newfontlanguage{Kurdish}{KUR}\newfontlanguage{Kurukh}{KUU} -\newfontlanguage{Kuy}{KUY}\newfontlanguage{Koryak}{KYK} -\newfontlanguage{Ladin}{LAD}\newfontlanguage{Lahuli}{LAH} -\newfontlanguage{Lak}{LAK}\newfontlanguage{Lambani}{LAM} -\newfontlanguage{Lao}{LAO}\newfontlanguage{Latin}{LAT} -\newfontlanguage{Laz}{LAZ}\newfontlanguage{L-Cree}{LCR} -\newfontlanguage{Ladakhi}{LDK}\newfontlanguage{Lezgi}{LEZ} -\newfontlanguage{Lingala}{LIN}\newfontlanguage{Low Mari}{LMA} -\newfontlanguage{Limbu}{LMB}\newfontlanguage{Lomwe}{LMW} -\newfontlanguage{Lower Sorbian}{LSB}\newfontlanguage{Lule Sami}{LSM} -\newfontlanguage{Lithuanian}{LTH}\newfontlanguage{Luba}{LUB} -\newfontlanguage{Luganda}{LUG}\newfontlanguage{Luhya}{LUH} -\newfontlanguage{Luo}{LUO}\newfontlanguage{Latvian}{LVI} -\newfontlanguage{Majang}{MAJ}\newfontlanguage{Makua}{MAK} -\newfontlanguage{Malayalam Traditional}{MAL}\newfontlanguage{Mansi}{MAN} -\newfontlanguage{Marathi}{MAR}\newfontlanguage{Marwari}{MAW} -\newfontlanguage{Mbundu}{MBN}\newfontlanguage{Manchu}{MCH} -\newfontlanguage{Moose Cree}{MCR}\newfontlanguage{Mende}{MDE} -\newfontlanguage{Me'en}{MEN}\newfontlanguage{Mizo}{MIZ} -\newfontlanguage{Macedonian}{MKD}\newfontlanguage{Male}{MLE} -\newfontlanguage{Malagasy}{MLG}\newfontlanguage{Malinke}{MLN} -\newfontlanguage{Malayalam Reformed}{MLR}\newfontlanguage{Malay}{MLY} -\newfontlanguage{Mandinka}{MND}\newfontlanguage{Mongolian}{MNG} -\newfontlanguage{Manipuri}{MNI}\newfontlanguage{Maninka}{MNK} -\newfontlanguage{Manx Gaelic}{MNX}\newfontlanguage{Moksha}{MOK} -\newfontlanguage{Moldavian}{MOL}\newfontlanguage{Mon}{MON} -\newfontlanguage{Moroccan}{MOR}\newfontlanguage{Maori}{MRI} -\newfontlanguage{Maithili}{MTH}\newfontlanguage{Maltese}{MTS} -\newfontlanguage{Mundari}{MUN}\newfontlanguage{Naga-Assamese}{NAG} -\newfontlanguage{Nanai}{NAN}\newfontlanguage{Naskapi}{NAS} -\newfontlanguage{N-Cree}{NCR}\newfontlanguage{Ndebele}{NDB} -\newfontlanguage{Ndonga}{NDG}\newfontlanguage{Nepali}{NEP} -\newfontlanguage{Newari}{NEW}\newfontlanguage{Nagari}{NGR} -\newfontlanguage{Norway House Cree}{NHC}\newfontlanguage{Nisi}{NIS} -\newfontlanguage{Niuean}{NIU}\newfontlanguage{Nkole}{NKL} -\newfontlanguage{N'ko}{NKO}\newfontlanguage{Dutch}{NLD} -\newfontlanguage{Nogai}{NOG}\newfontlanguage{Norwegian}{NOR} -\newfontlanguage{Northern Sami}{NSM}\newfontlanguage{Northern Tai}{NTA} -\newfontlanguage{Esperanto}{NTO}\newfontlanguage{Nynorsk}{NYN} -\newfontlanguage{Oji-Cree}{OCR}\newfontlanguage{Ojibway}{OJB} -\newfontlanguage{Oriya}{ORI}\newfontlanguage{Oromo}{ORO} -\newfontlanguage{Ossetian}{OSS}\newfontlanguage{Palestinian Aramaic}{PAA} -\newfontlanguage{Pali}{PAL}\newfontlanguage{Punjabi}{PAN} -\newfontlanguage{Palpa}{PAP}\newfontlanguage{Pashto}{PAS} -\newfontlanguage{Polytonic Greek}{PGR}\newfontlanguage{Pilipino}{PIL} -\newfontlanguage{Palaung}{PLG}\newfontlanguage{Polish}{PLK} -\newfontlanguage{Provencal}{PRO}\newfontlanguage{Portuguese}{PTG} -\newfontlanguage{Chin}{QIN}\newfontlanguage{Rajasthani}{RAJ} -\newfontlanguage{R-Cree}{RCR}\newfontlanguage{Russian Buriat}{RBU} -\newfontlanguage{Riang}{RIA}\newfontlanguage{Rhaeto-Romanic}{RMS} -\newfontlanguage{Romanian}{ROM}\newfontlanguage{Romany}{ROY} -\newfontlanguage{Rusyn}{RSY}\newfontlanguage{Ruanda}{RUA} -\newfontlanguage{Russian}{RUS}\newfontlanguage{Sadri}{SAD} -\newfontlanguage{Sanskrit}{SAN}\newfontlanguage{Santali}{SAT} -\newfontlanguage{Sayisi}{SAY}\newfontlanguage{Sekota}{SEK} -\newfontlanguage{Selkup}{SEL}\newfontlanguage{Sango}{SGO} -\newfontlanguage{Shan}{SHN}\newfontlanguage{Sibe}{SIB} -\newfontlanguage{Sidamo}{SID}\newfontlanguage{Silte Gurage}{SIG} -\newfontlanguage{Skolt Sami}{SKS}\newfontlanguage{Slovak}{SKY} -\newfontlanguage{Slavey}{SLA}\newfontlanguage{Slovenian}{SLV} -\newfontlanguage{Somali}{SML}\newfontlanguage{Samoan}{SMO} -\newfontlanguage{Sena}{SNA}\newfontlanguage{Sindhi}{SND} -\newfontlanguage{Sinhalese}{SNH}\newfontlanguage{Soninke}{SNK} -\newfontlanguage{Sodo Gurage}{SOG}\newfontlanguage{Sotho}{SOT} -\newfontlanguage{Albanian}{SQI}\newfontlanguage{Serbian}{SRB} -\newfontlanguage{Saraiki}{SRK}\newfontlanguage{Serer}{SRR} -\newfontlanguage{South Slavey}{SSL}\newfontlanguage{Southern Sami}{SSM} -\newfontlanguage{Suri}{SUR}\newfontlanguage{Svan}{SVA} -\newfontlanguage{Swedish}{SVE}\newfontlanguage{Swadaya Aramaic}{SWA} -\newfontlanguage{Swahili}{SWK}\newfontlanguage{Swazi}{SWZ} -\newfontlanguage{Sutu}{SXT}\newfontlanguage{Syriac}{SYR} -\newfontlanguage{Tabasaran}{TAB}\newfontlanguage{Tajiki}{TAJ} -\newfontlanguage{Tamil}{TAM}\newfontlanguage{Tatar}{TAT} -\newfontlanguage{TH-Cree}{TCR}\newfontlanguage{Telugu}{TEL} -\newfontlanguage{Tongan}{TGN}\newfontlanguage{Tigre}{TGR} -\newfontlanguage{Tigrinya}{TGY}\newfontlanguage{Thai}{THA} -\newfontlanguage{Tahitian}{THT}\newfontlanguage{Tibetan}{TIB} -\newfontlanguage{Turkmen}{TKM}\newfontlanguage{Temne}{TMN} -\newfontlanguage{Tswana}{TNA}\newfontlanguage{Tundra Nenets}{TNE} -\newfontlanguage{Tonga}{TNG}\newfontlanguage{Todo}{TOD} -\newfontlanguage{Tsonga}{TSG}\newfontlanguage{Turoyo Aramaic}{TUA} -\newfontlanguage{Tulu}{TUL}\newfontlanguage{Tuvin}{TUV} -\newfontlanguage{Twi}{TWI}\newfontlanguage{Udmurt}{UDM} -\newfontlanguage{Ukrainian}{UKR}\newfontlanguage{Urdu}{URD} -\newfontlanguage{Upper Sorbian}{USB}\newfontlanguage{Uyghur}{UYG} -\newfontlanguage{Uzbek}{UZB}\newfontlanguage{Venda}{VEN} -\newfontlanguage{Vietnamese}{VIT}\newfontlanguage{Wa}{WA} -\newfontlanguage{Wagdi}{WAG}\newfontlanguage{West-Cree}{WCR} -\newfontlanguage{Welsh}{WEL}\newfontlanguage{Wolof}{WLF} -\newfontlanguage{Tai Lue}{XBD}\newfontlanguage{Xhosa}{XHS} -\newfontlanguage{Yakut}{YAK}\newfontlanguage{Yoruba}{YBA} -\newfontlanguage{Y-Cree}{YCR}\newfontlanguage{Yi Classic}{YIC} -\newfontlanguage{Yi Modern}{YIM}\newfontlanguage{Chinese Hong Kong}{ZHH} -\newfontlanguage{Chinese Phonetic}{ZHP}\newfontlanguage{Chinese Simplified}{ZHS} -\newfontlanguage{Chinese Traditional}{ZHT}\newfontlanguage{Zande}{ZND} -\newfontlanguage{Zulu}{ZUL} -\define@key[zf@feat]{Lang}{Turkish}[]{% - \zf@check@ot@lang{TRK}% - \if@tempswa - \c@zf@language\@tempcnta\relax - \xdef\zf@language@name{Turkish}% - \xdef\zf@family@long{\zf@family@long+lang=Turkish}% - \xdef\zf@pre@ff{\zf@pre@ff language=TRK,}% - \else - \zf@check@ot@lang{TUR}% - \if@tempswa - \c@zf@language\@tempcnta\relax - \xdef\zf@language@name{Turkish}% - \xdef\zf@family@long{\zf@family@long+lang=Turkish}% - \xdef\zf@pre@ff{\zf@pre@ff language=TUR,}% - \else - \zf@PackageWarning{Language '#1' not available\zf@nl - for font \fontname\zf@basefont\zf@nl - with script '\zf@script@name'.}% - \fi - \fi} -\define@key[zf]{options}{RawFeature}{% - \zf@update@family{+Raw:#1}% - \zf@update@ff{#1}} -\providecommand*{\sidefault}{si} -\DeclareRobustCommand{\sishape}{% - \not@math@alphabet\sishape\relax - \fontshape\sidefault\selectfont} -\DeclareTextFontCommand{\textsi}{\sishape} -\newcommand*{\zf@merge@shape}[3]{% - \edef\@tempa{#1}% - \edef\@tempb{#2}% - \ifx\f@shape\@tempb - \ifcsname\f@encoding/\f@family/\f@series/#3\endcsname - \edef\@tempa{#3}% - \fi - \fi - \fontshape{\@tempa}\selectfont} -\DeclareRobustCommand{\itshape}{% - \not@math@alphabet\itshape\mathit - \zf@merge@shape\itdefault\scdefault\sidefault} -\DeclareRobustCommand{\slshape}{% - \not@math@alphabet\slshape\relax - \zf@merge@shape\sldefault\scdefault\sidefault} -\DeclareRobustCommand{\scshape}{% - \not@math@alphabet\scshape\relax - \zf@merge@shape\scdefault\itdefault\sidefault} -\DeclareRobustCommand{\upshape}{% - \not@math@alphabet\upshape\relax - \zf@merge@shape\updefault\sidefault\scdefault} -\@ifpackageloaded{euler}{\zf@package@euler@loadedtrue} - {\zf@package@euler@loadedfalse} -\def\zf@math{% - \let\zf@font@warning\@font@warning - \let\@font@warning\@font@info - \@ifpackageloaded{euler}{% - \ifzf@package@euler@loaded - \zf@math@eulertrue - \else - \zf@PackageError{The euler package must be loaded BEFORE fontspec} - {fontspec only overwrites euler's attempt to ^^J - define the maths text fonts if fontspec is ^^J - loaded after euler. Type <return> to proceed ^^J - with incorrect \protect\mathit, \protect\mathbf, etc} - \fi}{} - \@ifpackageloaded{lucbmath}{\zf@math@lucidatrue}{} - \@ifpackageloaded{lucidabr}{\zf@math@lucidatrue}{} - \@ifpackageloaded{lucimatx}{\zf@math@lucidatrue}{} - \DeclareSymbolFont{legacymaths}{OT1}{cmr}{m}{n} - \SetSymbolFont{legacymaths}{bold}{OT1}{cmr}{bx}{n} - \DeclareMathAccent{\acute} {\mathalpha}{legacymaths}{19} - \DeclareMathAccent{\grave} {\mathalpha}{legacymaths}{18} - \DeclareMathAccent{\ddot} {\mathalpha}{legacymaths}{127} - \DeclareMathAccent{\tilde} {\mathalpha}{legacymaths}{126} - \DeclareMathAccent{\bar} {\mathalpha}{legacymaths}{22} - \DeclareMathAccent{\breve} {\mathalpha}{legacymaths}{21} - \DeclareMathAccent{\check} {\mathalpha}{legacymaths}{20} - \DeclareMathAccent{\hat} {\mathalpha}{legacymaths}{94} % too bad, euler - \DeclareMathAccent{\dot} {\mathalpha}{legacymaths}{95} - \DeclareMathAccent{\mathring}{\mathalpha}{legacymaths}{23} - \begingroup - \mathchardef\@tempa="603A % - \let\next\egroup - \ifx\colon\@tempa - \DeclareMathSymbol{\colon}{\mathpunct}{legacymaths}{58} - \fi - \endgroup - \ifzf@math@euler\else - \DeclareMathSymbol{!}{\mathclose}{legacymaths}{33} - \DeclareMathSymbol{:}{\mathrel} {legacymaths}{58} - \DeclareMathSymbol{;}{\mathpunct}{legacymaths}{59} - \DeclareMathSymbol{?}{\mathclose}{legacymaths}{63} - \ifzf@math@lucida\else - \DeclareMathSymbol{0}{\mathalpha}{legacymaths}{`0} - \DeclareMathSymbol{1}{\mathalpha}{legacymaths}{`1} - \DeclareMathSymbol{2}{\mathalpha}{legacymaths}{`2} - \DeclareMathSymbol{3}{\mathalpha}{legacymaths}{`3} - \DeclareMathSymbol{4}{\mathalpha}{legacymaths}{`4} - \DeclareMathSymbol{5}{\mathalpha}{legacymaths}{`5} - \DeclareMathSymbol{6}{\mathalpha}{legacymaths}{`6} - \DeclareMathSymbol{7}{\mathalpha}{legacymaths}{`7} - \DeclareMathSymbol{8}{\mathalpha}{legacymaths}{`8} - \DeclareMathSymbol{9}{\mathalpha}{legacymaths}{`9} - \DeclareMathSymbol{\Gamma}{\mathalpha}{legacymaths}{0} - \DeclareMathSymbol{\Delta}{\mathalpha}{legacymaths}{1} - \DeclareMathSymbol{\Theta}{\mathalpha}{legacymaths}{2} - \DeclareMathSymbol{\Lambda}{\mathalpha}{legacymaths}{3} - \DeclareMathSymbol{\Xi}{\mathalpha}{legacymaths}{4} - \DeclareMathSymbol{\Pi}{\mathalpha}{legacymaths}{5} - \DeclareMathSymbol{\Sigma}{\mathalpha}{legacymaths}{6} - \DeclareMathSymbol{\Upsilon}{\mathalpha}{legacymaths}{7} - \DeclareMathSymbol{\Phi}{\mathalpha}{legacymaths}{8} - \DeclareMathSymbol{\Psi}{\mathalpha}{legacymaths}{9} - \DeclareMathSymbol{\Omega}{\mathalpha}{legacymaths}{10} - \DeclareMathSymbol{+}{\mathbin}{legacymaths}{43} - \DeclareMathSymbol{=}{\mathrel}{legacymaths}{61} - \DeclareMathDelimiter{(}{\mathopen} {legacymaths}{40}{largesymbols}{0} - \DeclareMathDelimiter{)}{\mathclose}{legacymaths}{41}{largesymbols}{1} - \DeclareMathDelimiter{[}{\mathopen} {legacymaths}{91}{largesymbols}{2} - \DeclareMathDelimiter{]}{\mathclose}{legacymaths}{93}{largesymbols}{3} - \DeclareMathDelimiter{/}{\mathord}{legacymaths}{47}{largesymbols}{14} - \DeclareMathSymbol{\mathdollar}{\mathord}{legacymaths}{36} - \fi - \fi - \DeclareSymbolFont{operators}\zf@enc\zf@rmmaths\mddefault\updefault - \SetSymbolFont{operators}{normal}\zf@enc\zf@rmmaths\mddefault\updefault - \SetMathAlphabet\mathrm{normal}\zf@enc\zf@rmmaths\mddefault\updefault - \SetMathAlphabet\mathit{normal}\zf@enc\zf@rmmaths\mddefault\itdefault - \SetMathAlphabet\mathbf{normal}\zf@enc\zf@rmmaths\bfdefault\updefault - \SetMathAlphabet\mathsf{normal}\zf@enc\zf@sfmaths\mddefault\updefault - \SetMathAlphabet\mathtt{normal}\zf@enc\zf@ttmaths\mddefault\updefault - \SetSymbolFont{operators}{bold}\zf@enc\zf@rmmaths\bfdefault\updefault - \ifdefined\zf@rmboldmaths - \SetMathAlphabet\mathrm{bold}\zf@enc\zf@rmboldmaths\mddefault\updefault - \SetMathAlphabet\mathbf{bold}\zf@enc\zf@rmboldmaths\bfdefault\updefault - \SetMathAlphabet\mathit{bold}\zf@enc\zf@rmboldmaths\mddefault\itdefault - \else - \SetMathAlphabet\mathrm{bold}\zf@enc\zf@rmmaths\bfdefault\updefault - \SetMathAlphabet\mathit{bold}\zf@enc\zf@rmmaths\bfdefault\itdefault - \fi - \SetMathAlphabet\mathsf{bold}\zf@enc\zf@sfmaths\bfdefault\updefault - \SetMathAlphabet\mathtt{bold}\zf@enc\zf@ttmaths\bfdefault\updefault - \let\font@warning\zf@font@warning} -\def\zf@math@maybe{% - \@ifpackageloaded{anttor}{% - \ifx\define@antt@mathversions a\@zf@mathfalse\fi}{} - \@ifpackageloaded{arev}{\@zf@mathfalse}{} - \@ifpackageloaded{eulervm}{\@zf@mathfalse}{} - \@ifpackageloaded{mathdesign}{\@zf@mathfalse}{} - \@ifpackageloaded{concmath}{\@zf@mathfalse}{} - \@ifpackageloaded{cmbright}{\@zf@mathfalse}{} - \@ifpackageloaded{mathesf}{\@zf@mathfalse}{} - \@ifpackageloaded{gfsartemisia}{\@zf@mathfalse}{} - \@ifpackageloaded{gfsneohellenic}{\@zf@mathfalse}{} - \@ifpackageloaded{iwona}{% - \ifx\define@iwona@mathversions a\@zf@mathfalse\fi}{} - \@ifpackageloaded{kpfonts}{\@zf@mathfalse}{} - \@ifpackageloaded{kmath}{\@zf@mathfalse}{} - \@ifpackageloaded{kurier}{% - \ifx\define@kurier@mathversions a\@zf@mathfalse\fi}{} - \@ifpackageloaded{fouriernc}{\@zf@mathfalse}{} - \@ifpackageloaded{fourier}{\@zf@mathfalse}{} - \@ifpackageloaded{mathpazo}{\@zf@mathfalse}{} - \@ifpackageloaded{mathptmx}{\@zf@mathfalse}{} - \@ifpackageloaded{MinionPro}{\@zf@mathfalse}{} - \@ifpackageloaded{unicode-math}{\@zf@mathfalse}{} - \if@zf@math - \zf@PackageInfo{% - Adjusting the maths setup (use [no-math] to avoid this).} - \zf@math - \fi} -\AtBeginDocument{\zf@math@maybe} -\if@zf@configfile - \InputIfFileExists{fontspec.cfg} - {\typeout{fontspec.cfg loaded.}} - {\typeout{No fontspec.cfg file found; no configuration loaded.}} -\fi -%% -%% Copyright 2004--2008 by Will Robertson <wspr81@gmail.com> -%% -%% Distributable under the LaTeX Project Public License, -%% version 1.3c or higher (your choice). The latest version of -%% this license is at: http://www.latex-project.org/lppl.txt -%% -%% This work is "maintained" (as per LPPL maintenance status) -%% by Will Robertson. -%% -%% This work consists of this file fontspec.dtx -%% and the derived files fontspec.sty, -%% fontspec.cfg, -%% fontspec.ins, -%% fontspec-example.ltx, -%% and fontspec.pdf. -%% -%% -%% End of file `fontspec.sty'. |