From 8379012d545fd6a59fae8842d97d14ec0c2b27d7 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 13 Feb 2020 03:00:51 +0000 Subject: CTAN sync 202002130300 --- macros/luatex/optex/README | 7 + macros/luatex/optex/alloc.opm | 116 + macros/luatex/optex/basics-a.opm | 47 + macros/luatex/optex/basics-macros.opm | 50 + macros/luatex/optex/catcodes.opm | 137 + macros/luatex/optex/csplain-params.opm | 24 + macros/luatex/optex/demo.tex | 125 + macros/luatex/optex/f-adventor.opm | 26 + macros/luatex/optex/f-antt.opm | 30 + macros/luatex/optex/f-baskerville.opm | 26 + macros/luatex/optex/f-bonum.opm | 26 + macros/luatex/optex/f-cursor.opm | 26 + macros/luatex/optex/f-gfsbodoni.opm | 25 + macros/luatex/optex/f-heros.opm | 191 + macros/luatex/optex/f-libertine-s.opm | 55 + macros/luatex/optex/f-libertine.opm | 62 + macros/luatex/optex/f-lmfonts.opm | 194 + macros/luatex/optex/f-pagella.opm | 26 + macros/luatex/optex/f-schola.opm | 26 + macros/luatex/optex/f-technika.opm | 35 + macros/luatex/optex/f-termes.opm | 26 + macros/luatex/optex/f-xcharter.opm | 27 + macros/luatex/optex/fams-ini.opm | 132 + macros/luatex/optex/fonts-catalog.opm | 71 + macros/luatex/optex/fonts-opmac.opm | 169 + macros/luatex/optex/fonts-preload.opm | 37 + macros/luatex/optex/fonts-resize.opm | 214 + macros/luatex/optex/fonts-select.opm | 460 + macros/luatex/optex/hyphen-lan.opm | 107 + macros/luatex/optex/if-macros.opm | 95 + macros/luatex/optex/logos.opm | 41 + macros/luatex/optex/luatex-ini.opm | 145 + macros/luatex/optex/margins.opm | 135 + macros/luatex/optex/math-macros.opm | 868 ++ macros/luatex/optex/math-preload.opm | 149 + macros/luatex/optex/opmac-rest.opm | 1420 +++ macros/luatex/optex/optex.ini | 101 + macros/luatex/optex/outlines.opm | 62 + macros/luatex/optex/output.opm | 104 + macros/luatex/optex/parameters.opm | 167 + macros/luatex/optex/pdfuni-string.opm | 63 + macros/luatex/optex/plain-macros.opm | 295 + macros/luatex/optex/prefixed.opm | 133 + macros/luatex/optex/ring.png | Bin 0 -> 1294292 bytes macros/luatex/optex/uni-lcuc.opm | 15928 +++++++++++++++++++++++++++++++ 45 files changed, 22203 insertions(+) create mode 100644 macros/luatex/optex/README create mode 100644 macros/luatex/optex/alloc.opm create mode 100644 macros/luatex/optex/basics-a.opm create mode 100644 macros/luatex/optex/basics-macros.opm create mode 100644 macros/luatex/optex/catcodes.opm create mode 100644 macros/luatex/optex/csplain-params.opm create mode 100644 macros/luatex/optex/demo.tex create mode 100644 macros/luatex/optex/f-adventor.opm create mode 100644 macros/luatex/optex/f-antt.opm create mode 100644 macros/luatex/optex/f-baskerville.opm create mode 100644 macros/luatex/optex/f-bonum.opm create mode 100644 macros/luatex/optex/f-cursor.opm create mode 100644 macros/luatex/optex/f-gfsbodoni.opm create mode 100644 macros/luatex/optex/f-heros.opm create mode 100644 macros/luatex/optex/f-libertine-s.opm create mode 100644 macros/luatex/optex/f-libertine.opm create mode 100644 macros/luatex/optex/f-lmfonts.opm create mode 100644 macros/luatex/optex/f-pagella.opm create mode 100644 macros/luatex/optex/f-schola.opm create mode 100644 macros/luatex/optex/f-technika.opm create mode 100644 macros/luatex/optex/f-termes.opm create mode 100644 macros/luatex/optex/f-xcharter.opm create mode 100644 macros/luatex/optex/fams-ini.opm create mode 100644 macros/luatex/optex/fonts-catalog.opm create mode 100644 macros/luatex/optex/fonts-opmac.opm create mode 100644 macros/luatex/optex/fonts-preload.opm create mode 100644 macros/luatex/optex/fonts-resize.opm create mode 100644 macros/luatex/optex/fonts-select.opm create mode 100644 macros/luatex/optex/hyphen-lan.opm create mode 100644 macros/luatex/optex/if-macros.opm create mode 100644 macros/luatex/optex/logos.opm create mode 100644 macros/luatex/optex/luatex-ini.opm create mode 100644 macros/luatex/optex/margins.opm create mode 100644 macros/luatex/optex/math-macros.opm create mode 100644 macros/luatex/optex/math-preload.opm create mode 100644 macros/luatex/optex/opmac-rest.opm create mode 100644 macros/luatex/optex/optex.ini create mode 100644 macros/luatex/optex/outlines.opm create mode 100644 macros/luatex/optex/output.opm create mode 100644 macros/luatex/optex/parameters.opm create mode 100644 macros/luatex/optex/pdfuni-string.opm create mode 100644 macros/luatex/optex/plain-macros.opm create mode 100644 macros/luatex/optex/prefixed.opm create mode 100644 macros/luatex/optex/ring.png create mode 100644 macros/luatex/optex/uni-lcuc.opm (limited to 'macros/luatex') diff --git a/macros/luatex/optex/README b/macros/luatex/optex/README new file mode 100644 index 0000000000..066037a0f9 --- /dev/null +++ b/macros/luatex/optex/README @@ -0,0 +1,7 @@ +OpTeX: the LuaTeX format based on Plain TeX and OPmac + +Author: Petr Olsak, + +This software is in public domain. + +See http://petr.olsak.net/optex diff --git a/macros/luatex/optex/alloc.opm b/macros/luatex/optex/alloc.opm new file mode 100644 index 0000000000..1e27d0cc23 --- /dev/null +++ b/macros/luatex/optex/alloc.opm @@ -0,0 +1,116 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \newdimen {Allocators for registers <2020-01-23>} + +\_chardef\_maicount = 65535 % Max Allocation Index for counts registers in LuaTeX +\_let\_maidimen = \_maicount +\_let\_maiskip = \_maicount +\_let\_maimuskip = \_maicount +\_let\_maibox = \_maicount +\_let\_maitoks = \_maicount +\_chardef\_mairead = 15 +\_chardef\_maiwrite = 15 +\_chardef\_maifam = 255 + +\_countdef\_countalloc=10 \_countalloc=255 +\_countdef\_dimenalloc=11 \_dimenalloc=255 +\_countdef\_skipalloc=12 \_skipalloc=255 +\_countdef\_muskipalloc=13 \_muskipalloc=255 +\_countdef\_boxalloc=14 \_boxalloc=255 +\_countdef\_toksalloc=15 \_toksalloc=255 +\_countdef\_readalloc=16 \_readalloc=-1 +\_countdef\_writealloc=17 \_writealloc=-1 +\_countdef\_mathalloc=18 \_mathalloc=3 + +\_def\_allocator #1#2#3{% + \_global\_advance\_cs{_#2alloc}by1 + \_ifnum\_cs{_#2alloc}>\_cs{_mai#2}% + \errmessage{No room for a new \_ea\_string\_csname #2\_endcsname}% + \_else + \_global#3#1=\_cs{_#2alloc}% + \_wlog{\_string#1=\_ea\_string\_csname #2\_endcsname\_the\_cs{_#2alloc}}% + \fi +} + +\_def\_newcount #1{\_allocator #1{count}\_countdef} +\_def\_newdimen #1{\_allocator #1{dimen}\_dimendef} +\_def\_newskip #1{\_allocator #1{skip}\_skipdef} +\_def\_newmuskip #1{\_allocator #1{muskip}\_muskipdef} +\_def\_newbox #1{\_allocator #1{box}\_chardef} +\_def\_newtoks #1{\_allocator #1{toks}\_toksdef} +\_def\_newread #1{\_allocator #1{read}\_chardef} +\_def\_newwrite #1{\_allocator #1{write}\_chardef} +\_def\_newmath #1{\_allocator #1{fam}\_chardef} + +\_newcount\_insertalloc \_insertalloc=255 +\_chardef\_insertmin = 201 + +\_def\_newinsert #1{% + \_advance\_insertalloc by-1 + \_ifnum\_insertalloc <\_insertmin + \_errmessage {No room for a new \_string\insert}% + \_else + \_global\_chardef#1=\_insertalloc + \_wlog {\_string#1=\_string\_insert\_the\_insertalloc}% + \_fi +} + +\_newcount \tmpnum \_newcount \_tmpnum +\_newdimen \tmpdim \_newdimen \_tmpdim + +\_newdimen\_maxdimen \_maxdimen=16383.99999pt % the largest legal +\_newskip\_hideskip \_hideskip=-1000pt plus 1fill % negative but can grow +\_newskip\_centering \_centering=0pt plus 1000pt minus 1000pt +\_newskip\_zoskip \_zoskip=0pt plus0pt minus0pt +\_newbox\_voidbox % permanently void box register + +\_public + \maicount \maidimen \maiskip \maimuskip \maibox \maitoks \mairead \maiwrite \maimath + \newcount \newdimen \newskip \newmuskip \newbox \newtoks \newread \newwrite \newmath + \insertmin \newinsert + \maxdimen \hideskip \centering \zoskip \voidbox ; + +\_endcode %--------------------------------------------------- + +Like plain\TeX, the allocators `\newcount`, `\newwrite`, etc. are defined. +The registers are allocated from 256 to `\mai` which is 65535 in +LuaTeX. + +Unlike in Plain\TeX/, the mentioned allocators are not `\outer`. + +User can use `\dimen0` to `\dimen200` and similarly for `\skip`, +`\muskip`, `\box` and `\toks` directly. User can use +`\count20` to `\count200` directly too. This is the same +philosophy like in old plain\TeX/, but the range of directly used registers +is wider. + +Inserts are allocated form 254 to 201 using `\newinsert`. + +You can define your own allocation concept (for example for allocation of +arrays) from top of registers array. For example for counts: + +\begtt +\newcount \_maicount % redefine maximal allocation index as variable +\_maicount = \maicount % first value is top of the array + +\def\newcountarray #1[#2]{% \newcountarray \foo[100] + \advance\_maicount by -#2\relax + \ifnum \_countalloc > \_maicount + \errmessage{No room for a new array of \string\count}% + \else + \chardef#1=\_maicount + \fi +} +\def\usecount #1[#2]{% \usecount \foo[2] + \count\numexpr#1+#2\relax +} +\endtt + +The `\tmpnum` and `\tmpdim` are allocated, individual instance for internal +macros and for user's macros. + +A few registers are initialized like in plain\TeX/. Note that `\z@` and `\z@skip` from +plain\TeX/ is `\zo` and `\zoskip` because we don't support the `@` category dance. +Note that `\p@` is not defined because we can write 1pt which is more +legible. + diff --git a/macros/luatex/optex/basics-a.opm b/macros/luatex/optex/basics-a.opm new file mode 100644 index 0000000000..988457837d --- /dev/null +++ b/macros/luatex/optex/basics-a.opm @@ -0,0 +1,47 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \sdef {Basic macros for OpTeX <2019-05-21>} + +\let\_bgroup={ \let\_egroup=} + +\_bgroup \_lccode`\.=`\\ \_lowercase{\_egroup \_def\_nbackslash {.}} +\_def\_empty {} +\_def\_wlog {\_immediate\_write-1 } % write on log file (only) + +\_def\_sdef #1{\_ea\_def \_csname#1\_endcsname} +\_def\_sxdef #1{\_ea\_xdef \_csname#1\_endcsname} +\_def\_slet#1#2{\_ea\_let \_csname#1\_ea\_endcsname \_csname#2\_endcsname} +\_def\_adef#1{\_catcode`#1=13 \_begingroup \_lccode`\~=`#1\_lowercase{\_endgroup\_def~}} +\_def\_cs #1{\_csname#1\_endcsname} + +\_long\_def \_addto #1#2{\_ea\_def\_ea#1\_ea{#1#2}} +\_ea\_def \_ea\_meaningsepare \_ea#\_ea1\_string m#2:#3->#4^{{#1}{#3}{#4}} + +\_long\_def\_isinlist #1#2#3{% \isinlist \list{word}\iftrue + \_long\_def\_isinlistA ##1#2##2\_end{% + \_def\_isinlistA {##2}% + \_unless\_ifx\_isinlistA\_empty + }% + \_ea \_isinlistA #1\_endlistsep#2\_end +} +\_bgroup \_catcode`!=3 \_catcode`?=3 +\_gdef\_replstring #1#2#3{% \replstring #1{stringA}{stringB} + \_long\_def\_replacestringsA##1#2{\_def #1{##1}\_replacestringsB}% + \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_addto #1{#3##1}% + \_ea\_replacestringsB\_fi}% + \_ea\_replacestringsA #1?#2!#2% + \_long\_def\_replacestringsA##1?{\_def #1{##1}}\_ea\_replacestringsA #1} +\_egroup + +\_def\_loggingall{\_tracingcommands=3 \tracingstats=2 \tracingassigns=1 + \tracingpages=1 \tracingoutput=1 \tracinglostchars=1 + \tracingmacros=2 \tracingparagraphs=1 \tracingrestores=1 } +\_def\_tracingall{\tracingonline=1 \loggingall} + +\_public + \bgroup \egroup \nbackslash \sdef \sxdef \slet \adef + \addto \meaningsepare \wlog \empty + \isinlist \replstring \loggingall \tracingall ; + +\_endcode % ------------------------------------- + diff --git a/macros/luatex/optex/basics-macros.opm b/macros/luatex/optex/basics-macros.opm new file mode 100644 index 0000000000..368b9bd332 --- /dev/null +++ b/macros/luatex/optex/basics-macros.opm @@ -0,0 +1,50 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \sdef {Basic macros for OpTeX <2019-05-21>} + +\let\_bgroup={ \let\_egroup=} + +\_bgroup \_lccode`\.=`\\ \_lowercase{\_egroup \_def\_nbackslash {.}} +\_edef \_nbb {\_nbackslash\_nbackslash} +\_edef \_pcent{\_xstring\%} +\_def \_empty {} +\_def \_space { } +\_def \_null {\_hbox{}} +\_def \_wlog {\_immediate\_write-1 } % write on log file (only) +\_def \_wterm {\_immediate\_write16 } +\_def \_opwarning #1{\_wterm{WARNING: #1.}} + +\_def \_sdef #1{\_ea\_def \_csname#1\_endcsname} +\_def \_sxdef #1{\_ea\_xdef \_csname#1\_endcsname} +\_def \_slet #1#2{\_ea\_let \_csname#1\_ea\_endcsname \_csname#2\_endcsname} +\_def \_adef #1{\_catcode`#1=13 \_begingroup \_lccode`\~=`#1\_lowercase{\_endgroup\_def~}} +\_def \_cs #1{\_csname#1\_endcsname} + +\_long\_def \_addto #1#2{\_ea\_def\_ea#1\_ea{#1#2}} +\_ea\_def \_ea\_meaningsepare \_ea#\_ea1\_string m#2:#3->#4^{{#1}{#3}{#4}} + +\_bgroup \_catcode`!=3 \_catcode`?=3 +\_gdef\_replstring #1#2#3{% \replstring #1{stringA}{stringB} + \_long\_def\_replacestringsA##1#2{\_def #1{##1}\_replacestringsB}% + \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_addto #1{#3##1}% + \_ea\_replacestringsB\_fi}% + \_ea\_replacestringsA #1?#2!#2% + \_long\_def\_replacestringsA##1?{\_def #1{##1}}\_ea\_replacestringsA #1} +\_egroup + +\_def\_loggingall{\_tracingcommands=3 \tracingstats=2 \tracingassigns=1 + \tracingpages=1 \tracingoutput=1 \tracinglostchars=1 + \tracingmacros=2 \tracingparagraphs=1 \tracingrestores=1 } +\_def\_tracingall{\tracingonline=1 \loggingall} + +\_def\_remfirstunderscore#1{\_ea\_remfirstunderscoreA#1\_relax#1} +\_def\_remfirstunderscoreA#1#2\_relax#3{\_if _#1\_def#3{#2}\_fi} + +\_public + \bgroup \egroup \nbackslash \sdef \sxdef \slet \cs \adef + \addto \meaningsepare \wlog \wterm \opwarning + \empty \space \null \nbb \pcent \ncaret + \isinlist \replstring \remfirstunderscore \loggingall \tracingall ; + +\_endcode % ------------------------------------- + diff --git a/macros/luatex/optex/catcodes.opm b/macros/luatex/optex/catcodes.opm new file mode 100644 index 0000000000..d675e482be --- /dev/null +++ b/macros/luatex/optex/catcodes.opm @@ -0,0 +1,137 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \setcatcode {Initialization category codes <2020-01-23>} + +\_def \_optexcatcodes {% + \_setcatcode `\\=0 % backlslash starts control sequences + \_setcatcode `\{=1 % left brace is begin-group character + \_setcatcode `\}=2 % right brace is end-group character + \_setcatcode `\$=3 % dollar sign is math shift + \_setcatcode `\&=4 % ampersand is alignment tab + \_setcatcode `\^^M=5 % ascii return is end-line + \_setcatcode `\#=6 % hash mark is macro parameter character + \_setcatcode `\^=7 + \_setcatcode `\^^K=7 % circumflex and uparrow are for superscripts + \_setcatcode `\^^A=8 % downarrow is for subscripts + \_setcatcode `\ =10 % ascii space is blank space + \_setcatcode `\^^I=10 % ascii tab is a blank space + \_setcatcode `\_=11 % underline can be used in control sequences + \_setcatcode `\~=13 % tilde is active + \_setcatcode `\%=14 % percent sign is comment character + \_setcatcode 127=12 % normal character +} +\_let \_setcatcode =\catcode \_optexcatcodes % catcode initialization + +\_def \_normalasciicatcodes {% + \_setcatcodes 33-34: 12 + \_setcatcodes 39-64: 12 + \_setcatcodes 65-90: 11 + \_setcatcode `\[=12 + \_setcatcode `\]=12 + \_setcatcode `\`=12 + \_setcatcodes 97-122: 11 + \_setcatcode `\|=12 + \_optexcatcodes +} +\_def \_setcatcodes #1-#2: #3 {% + \_tmpnum=#1 + \_loop + \_setcatcode \_the\_tmpnum =#3 + \_advance \_tmpnum by1 + \_unless \_ifnum \_tmpnum >#2 \_repeat +} +\_def \_setcatcode #1=#2 {% + \_ifx \_setcatcode \_empty \_errmessage {Use \_noexpand\savecatcode before \_noexpand\setcatcode}\_fi + \_unless \_ifnum \_catcode #1=#2 + \_ea \_setcatcodeA \_catcodelist \_end {#1}% + \_catcode #1=#2 + \_fi +} +\_def \_setcatcodeA #1#2\_end #3{\_edef \_catcodelist{{#1}\_catcode #3=\_the\_catcode #3 #2}} +\_def \_savecatcodes {\_edef\_catcodelist {{\_catcodelist}}} +\_def \_restorecatcodes {\_ea\_def \_ea\_catcodelist \_catcodelist} +\_def \_catcodelist{{}} + +\_chardef\_active=13 \_catcode`\~=\_active % tilde is active +%\catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par", obsolete + +\public + \optexcatcodes \normalasciicatcodes \setcatcodes \setcatcode + \savecatcodes \restorecatcodes \active ; + +\_endcode % ---------------------------------------- + +Basic category codes inspired by plain \TeX/ are set here. The only +difference is underline: it can be used in control sequences in \SpTeX/, so +its category code is 11. But plain \TeX/ sets it to 8 for subscripts. We'll +define `_` subscript only in math mode, see `math-basics.spm`. + +Second differnece from plain \TeX/ is `\catcode127`, which is set to invalid +character in plain \TeX/ but we set it as normal character. + +`\normalasciicatodes` sets catcodes of all ascii visible characters to its +"normal" values used in \SpTeX/. + +We implement catcodes stack by three macros: `\savecatcodes`, `\setcatcode` +and `\restorecatcodes` which bahaves with catcode values like +`\begingroup`, `\catcode` and `\endgroup` but it does not +open/close any \TeX/ group. You can use it for eaxample + +\begtt +\savecatcodes \normalasciicatcodes \input macrofile.tex \restorecatcodes +\endtt +% +and you are sure that + +\begitems +* `macrofile.tex` is read with normal catodes, +* previous catcode setting is restored after the `macrofile.tex` is read. +\enditems + +The catcodes stack cannot be crossed by \TeX/ groups. But it is not +problem to re-implement it to global setting if you want. + +You can use `\setcatcodes -: ` to set a range of characters. +This macro uses `\setcatcode` repeatedly. + + +\sec Implemetation details: + +First, we define `\_plaintexcatcodes` and use it macro with +`\_let\_setcatcode=\catcode`. This code sets the "normal" catcodes. + +The main idea of catcode stack implementation is that the macro +`\_setcatcode` does nothing if previus catcode value is the same as desired +value. Else it saves previous value into `\_catcodelist` and sets desired +value. Finally `\_restorecatcodes` restores values from the `\_catcodelist`. + +We need to support stack behavior, it means that nested pairs +`\_savecatcodes` and `\_restorecatcodes` work well. This is a reason why the +current value of the `\_catcodelist` looks like this: + +\begtt +{data actual before last \_savecatcodes} currently generated data +\endtt +% +Then `\_restorecatcodes` does + +\begtt +\_def \_catcodelist {data actual before savecatcodes} apply currently generated data +\endtt + +We need to apply currently generated data in reverse order. This is done by +the macro `\setcatcodeA` (invoked by the `\setcatcode`) which inserts new +data HERE-NEW: + +\begtt +{data actual before last savecatdodes} HERE-NEW currently generated data +\endtt + +One record of data is in the form `\catode char-code=previous-value`, so we +need simply to "run" the currently generated data in order to restore +values. + +Notice: the `\_codedecl` and `\_endcode` macros are redefined and explained in basic.opm + + + diff --git a/macros/luatex/optex/csplain-params.opm b/macros/luatex/optex/csplain-params.opm new file mode 100644 index 0000000000..f92d19ffce --- /dev/null +++ b/macros/luatex/optex/csplain-params.opm @@ -0,0 +1,24 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \uv {CSplain settings for backward compatibiity <2020-01-23>} + + +% for compatibility with csplain: + +\_chardef\clqq=8222 \_chardef\crqq=8220 +\_chardef\flqq=171 \_chardef\frqq=187 +\_chardef\promile=8240 + +\_def\uv#1{\clqq#1\crqq} + +\_let\uslang=\enlang \_let\ehyph=\enlang +\_let\chyph=\cslang \_let\shyph=\sklang +\_let\csUnicode=\csPatt \_let\czUnicode=\csPatt \_let\skUnicode=\skPatt + +\_let \letfont = \_fontlet + +\_endcode + +These codes are usable only after Unicode font is loaded using \fontfam. +If you don't use Unicode fonts then more characters from Czech language stay +unavailable (ř, ů, for example). See the notice in `fonts-preoad.opm`. diff --git a/macros/luatex/optex/demo.tex b/macros/luatex/optex/demo.tex new file mode 100644 index 0000000000..458f44257a --- /dev/null +++ b/macros/luatex/optex/demo.tex @@ -0,0 +1,125 @@ +\fontfam[LMfonts] + +\margins/1 a5 (1,1,1,1.4)cm % A5 paper + 1cm margins +\typosize[9/10.5] % 9pt font / 10.5pt baselineskip +\parindent=10pt % typesetting parameters +\hyperlinks \Blue\Blue % active hyperlinks +\activettchar` % in-text verbatim by `...` +\def\intthook{\localcolor\Red} % in-text verbatim Red + +\tit Demonstration + +\nonum\notoc\sec Contents + +\maketoc % Table of Contents is auto-generated here + +\sec Lists + +The lists have to be surrounded by `\begitems` +and `\enditems` sequences. + +\begitems +* First item. +* Second item. + \begitems \style i + * Nested item list, + * numbered by roman numerals. + \enditems +* Last item. +\enditems + +\secc Title of Subsection + +The subsection text\dots + +\sec References + +There is a numbered equation. +The number is auto-generated by `\eqmark` sequence. +$$\label[my-eq] + a^2 + b^2 = c^2 \eqmark +$$ +We can refer to Equation~\ref[my-eq] +on page~\pgref[my-eq]. +We can refer to Table~\ref[my-tab] in +Section~\ref[tab-sec] too. And Figure~\ref[my-pic] +is on page~\pgref[my-pic]. + +\sec Hyperlinks + +You can refer to \url{http://petr.olsak.net} using `\url`. +Or use `\ulink` if the raw URL needs to be hidden: +\ulink[http://petr.olsak.net/optex]{\OpTeX/ page}. +The parameter text is colorized and it becomes +an active link if the `\hyperlinks` sequence +is used at the beginning of the document. +Internal links are activated too. + +\label[tab-sec] +\sec Tables + +The `\table` sequence can be used +instead of ``low level'' `\halign`. +The following table is framed by `\frame` sequence +in order to get a double frame. + +\label[my-tab] +\medskip +\caption/t Testing table. +\smallskip\nobreak +\centerline{% + \frame{\table{|r|c|l|}{\crl + \bf Title A & \bf Title B & \bf Title C \crll + first & second & third \cr + next & text & last \crl }}} + +\sec Images + +The images (PDF, JPG, PNG, TIFF) can be inserted +by `\inspic` sequence. The `\label` and `\caption/f` +can be added if you need to refer to a figure. + +\centerline {\picwidth=2.7cm \inspic ring.png } +\label[my-pic] +\nobreak +\caption/f The nonempty ideal of a simple ring -- + the ring itself. + +\sec Verbatim + +In-text verbatim is surrounded by the character declared +by `\activettchar` sequence. The listing can be surrounded +by `\begtt` and `\endtt` sequences +\begtt +This is verbatim. + All characters are printed $$, \, # etc. +\endtt +or it can be included by `\verbinput` from external file. + +\verbinput (95-97) demo.tex + +\sec Math + +The Math alphabets +`\mit`, `\cal`, `\script`, `\frak`, `\bbchar`, `\bi` +are provided. For example: +$$ + {\bi A} = \pmatrix {\cal C & \script C \cr + \frak M & \bbchar R }. +$$ +Hundreds of AMS symbols are available: +$\sphericalangle, \Finv, \boxplus, \Cup, \Cap, \ldots$ + +\sec Others + +The `\typosize` or `\typoscale` sequences set the size +and baselineskip of used fonts (including math fonts). +The `\fnote` generates a footnote\fnote{Like this} and +`\mnote` generates a margin note. +The `\margins` sets margins and paper dimensions. +The `\cite` sequence can be used for bibliographic citations. +The `\bib` sequence creates one bibliography record. Or +you can use `\usebib` for direct access to the {\tt.bib} files. +The list of features does not end here\dots + +\bye diff --git a/macros/luatex/optex/f-adventor.opm b/macros/luatex/optex/f-adventor.opm new file mode 100644 index 0000000000..54986c0512 --- /dev/null +++ b/macros/luatex/optex/f-adventor.opm @@ -0,0 +1,26 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Adventor] \Adventor {TeX Gyre Adventor based on Avantgarde Book} + {\caps} {\rm \bf \it \bi} {TX} + "[texgyreadventor-regular]" + +\_wlog{\_detokenize{% +Modifier:^^J + \caps ...... caps & small caps^^J +}} + +\_protected\_def \Adventor {% + \_def \_currfamily {Adventor}% + \_def \_fontnamegen {"[texgyreadventor-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/f-antt.opm b/macros/luatex/optex/f-antt.opm new file mode 100644 index 0000000000..6a1fe50688 --- /dev/null +++ b/macros/luatex/optex/f-antt.opm @@ -0,0 +1,30 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Antykwa Torunska] \Antt {Traditional Polish font family} + {\cond \medium \light \caps} {\rm \bf \it \bi} {TX} + "[AntykwaTorunska-Regular]" + +\_wlog{\_detokenize{% +Modifier:^^J + \caps ...... caps & small caps^^J +}} + +\_protected\def \Antt {% + \_def \_currfamily {Antt}% + \_def \_fontnamegen {"[AntykwaTorunska\_sfamxV\_sfamyV-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV sfamx={},sfamy={},caps={} \_fvars Regular Bold Italic BoldItalic } +\_moddef \cond {\_fsetV sfamx=Cond \_fvars Regular . Italic . + \_onlyif sfamy={}: {\_fvars Regular Bold Italic BoldItalic }} +\_moddef \medium {\_fsetV sfamy=Med \_fvars Regular . Italic . } +\_moddef \light {\_fsetV sfamy=Light \_fvars Regular . Italic . } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/f-baskerville.opm b/macros/luatex/optex/f-baskerville.opm new file mode 100644 index 0000000000..9d8974939d --- /dev/null +++ b/macros/luatex/optex/f-baskerville.opm @@ -0,0 +1,26 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Baskerville] \Baskerville {Free vaiants of classical Baskerville} + {\caps} {\rm \bf \it \bi} {TX} + "[BaskervilleF-Regular]" + +\_wlog{\_detokenize{% +Modifier:^^J + \caps ...... caps & small caps^^J +}} + +\_protected\def \Baskerville {% + \_def \_currfamily {Baskerville}% + \_def \_fontnamegen {"[BaskervilleF-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV caps={} \_fvars Regular Bold Italic BoldItalic } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/f-bonum.opm b/macros/luatex/optex/f-bonum.opm new file mode 100644 index 0000000000..89131175a0 --- /dev/null +++ b/macros/luatex/optex/f-bonum.opm @@ -0,0 +1,26 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Bonum] \Bonum {TeX Gyre Bonum fonts based on Bookman} + {\caps} {\rm \bf \it \bi} {TX} + "[texgyrebonum-regular]" + +\_wlog{\_detokenize{% +Modifier:^^J + \caps ...... caps & small caps^^J +}} + +\_protected\def \Bonum {% + \_def \_currfamily {Bonum}% + \_def \_fontnamegen {"[texgyrebonum-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/f-cursor.opm b/macros/luatex/optex/f-cursor.opm new file mode 100644 index 0000000000..00097831a6 --- /dev/null +++ b/macros/luatex/optex/f-cursor.opm @@ -0,0 +1,26 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Cursor] \Cursor {TeX Gyre Cursor fonts based on Courier} + {\caps} {\rm \bf \it \bi} {TX} + "[texgyrecursor-regular]" + +\_wlog{\_detokenize{% +Modifier:^^J + \caps ...... caps & small caps^^J +}} + +\_protected\def \Cursor {% + \_def \_currfamily {Cursor}% + \_def \_fontnamegen {"[texgyrecursor-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/f-gfsbodoni.opm b/macros/luatex/optex/f-gfsbodoni.opm new file mode 100644 index 0000000000..ccdef2126d --- /dev/null +++ b/macros/luatex/optex/f-gfsbodoni.opm @@ -0,0 +1,25 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [GFS Bodoni] \GFSBodoni {Based on Bodoni with greek letters} + {} {\rm \bf \it \bi} {TX} + "[GFSBodoni]" + +\_wlog{\_detokenize{% +Modifier:^^J + \caps ...... doesn't work even though otfinfo -f lists cmcp^^J +}} + +\_protected\def \GFSBodoni {% + \_def \_currfamily {GFSBodoni}% + \_def \_fontnamegen {"[GFSBodoni\_currV]:\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fvars {} Bold It BoldIt } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/f-heros.opm b/macros/luatex/optex/f-heros.opm new file mode 100644 index 0000000000..7e466432a3 --- /dev/null +++ b/macros/luatex/optex/f-heros.opm @@ -0,0 +1,191 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Heros] \Heros {TeX Gyre Heros fonts based on Helvetica} + {\caps \cond} {\rm \bf \it \bi} {TX} + "[texgyreheros-regular]" + +\_wlog{\_detokenize{% +Modifiers:^^J + \caps ...... caps & small caps^^J + \cond ...... condensed variants^^J +}} + +\_protected\_def \Heros {% + \_def \_currfamily {Heros}% + \_def \_fontnamegen {"[texgyreheros\_condV-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV caps={},cond={} \_fvars regular bold italic bolditalic } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } +\_moddef \nocaps {\_fsetV caps={} } +\_moddef \cond {\_fsetV cond=cn } +\_moddef \nocond {\_fsetV cond={} } + +\_initfontfamily % new font family must be initialized + +\_endcode + + +The usage of font \OpTeX/ selection system is described in the +fonts-select.opm file. + + +\sec How to write font-macro-file for \OpTeX/ like this file +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The font-macro-file declares a font family for selecting a font from such +family at arbitrary size and with various shapes. Unicode fonts (OTF) +are preferred. If we want to write such font file, we need to keep following +rules. + +\begitems +* Use +\begtt +\_fontdecl [] \ {} + {} {} {} + "" +\endtt + as first command in this file. This writes information about font family at + terminal and prevents loading such file twice. Moreover, it probes + existence of `` in your system. If it isn't exist, the + file loading is skipped with a warning on the terminal. + The \_ifexistfam macro returns false in such case. +* You can use `\_wlog{\_detokenize{...` to write aditional information into + log file. +* Define `\` (the commend `\Heros` here) as a `\_protected` + macro. This macro initializes the family and it must do: + \begitems + * Define `\_currfamily` as a short name of the font family. It must be + exactly the same as `` name but without backslash + (it is case sensitive). + * Define `\_fontfeatures` if they are something special. + * Define `\_fontnamegen` as a template of generic font name used as file + names (or font names) of OTF fonts. The rules about `\_fontnamegen` macro + are documented below. + * Use \_resetmod modifier to initialize values. + \enditems +* You can declare optical sizes using `\_regoptsizes` if there are more font files + with different optical sizes (like in Latin Modern). See `f-lmfonts.ofm` + file for more information about this special feature. +* Declare font modifiers using `\_moddef` if they are present. The + \_resetmod must be declared in each font family. +* Check if all your declared modifiers does not produce any space in + horizontal mode. For example check: X\caps Y, the letters XY must + be printed without any space. Do the same test with \ + before releasing your font file, for example X\Heros Y. +* Run `\_initfontfamily` in order to start the family. +\enditems + +The font file must declare `\_fontnamegen` macro which must expand (at +expand processor level only) to a file name of loaded font (or to its font +name) and to optional fontfeatures appended. The font selection +system uses this macro at primitive level in the following sense: + +\begtt + \font \_fontnamegen \space \_sizespec +\endtt + +For example, using macros from `f-heros.opm` the `\font` command expands its +parameters to: + +\begtt + \font "[texgyreheros-regular]:+tlig;" at10pt +\endtt + +if the `\rm` variant is processed and if no additional font modifiers are +activated. Of course, you need to know something about fontname syntax for +extended `\font` primitive used with OTF fonts. The `"` characters are at +outside boundary of font name. The `[` `]` brackets tell us that the file +name (no font name) is specified inside such brackets. This file (with +additional `.otf` extension) must be accessible in your filesystem. Without +spaces, there are font features appended to file name (or font name) divided +by semicolon. The `+tlig` font feature means that TeX like ligatures +(minus minus = endash, for example) are active. Normal ligatures are active +by default. You can list font features of given font by +`otfinfo -f fontfile.otf`. + +You can use any expandable macros or expandable primitives in `\fontnamegen` +macro. The simple macros in it with names `\_V` are preferred. They +expand typically to their content. The macro `\_fsetV =` +(terminated by a space) is equivalent to `\def\_V{}` and you +can use it in font modifiers. You can use the `\_fsetV` macro in more +general form: + +\begtt + \_fsetV =,= ...etc. terminated by a space +\endtt + +with obvious result `\def\_V{}\def\_V{} etc. + +There is one special macro `\_currV` which expands to one of four variants +depending on which variant selector is in process. Four strings can be +saved by `\_fvars rm-variant bf-variant it-variant bi-varaiant` (all four strings +must be terminated by a space). One of these +string is used as expansion output of `\_currV` macro. Because we store + +\begtt + \_fvars regular bold italic bolditalic +\endtt + +in `\resetmod` modifier then the `\_currV` expands (for example) +to `italic` if the `\it` variant selector is in process. + +Example: if both modifiers `\caps` and `\cond` were applied from this family +Heros and `\bf` variant is needed at 11pt then + +\begtt + \font "[texgyreheroscn-bold]:+smcp;+tlig;" at11pt +\endtt + +is processed. We assume that a font file texgyreheroscn-bold.otf is present +in your TeX system. + +Define all modifiers using `\_moddef` macro. +The `\_moddef` macro does more things than simple `\_def`: + +\begitems +* The modifier macros are defined as `\_protected`. +* The modifier macros are defined as family-dependent. If user loads more + families then `\LMfonts \caps` does somewhat different job than + `\Heros \caps`, for example. +\enditems + +Finally the `\_initfontfamily` must be run. It runs \. +So, the `\_resetmod` macro (declared as `\resetmod`) is processed. Finally it +runs `\_rm`, so first font from new family is loaded and is ready to use it. + +\secc Name conventions +%--------------------- + +Create modificators, new variants and `\` only as public, i.e. +without `_` prefix. We assume that if user re-defines them then he/she need +not them, so we have no problems. + +If you need to declare your private modifier (because it is used in another +modifiers or macros, for example), use the name `\_wordM`. You can be +sure that such name does not influence the private name space used by \OpTeX/. + +The private variant `\_resetmod` must be used in your +`\` but you need not to declare it as private, +it is done automatically. Declare only `\restmod` by `\_moddef` macro. + +The name of `\` should begin with uppercase letter. + +See font-macro-file `f_libertine-s.opm` which is another example where no +font files but font names are used. + +\secc Additional notes +%--------------------- + +In very rare situations we have more files with almost the same font but +designed for different optimal sizes (so called "optical sizes"). See a +collection of lmroman*.otf files, for example. You can declare such font +files for various optical sizes using `\_optname` macro in the +`\_fontnamegen` macro. See the file `f-lmfonts.opm` for more details. + +If you need to create font-macro-file with non unicode font, you can do it. +The `\_fontnamegen` must expand to the name of TFM file in such case. But we +don't prefer such font-macro-files, because they are usable only with +laguages with alphabet subset to ISO-8859-1 (unicodes are equal to letter +codes of such alphabets), but middle or east Europe use languages where +such condition is not true. diff --git a/macros/luatex/optex/f-libertine-s.opm b/macros/luatex/optex/f-libertine-s.opm new file mode 100644 index 0000000000..351a55fc57 --- /dev/null +++ b/macros/luatex/optex/f-libertine-s.opm @@ -0,0 +1,55 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Linux Libertine] \libertine {Free Linux Libertine fonts} + {\sans \mono \caps} {\rm \bf \it \bi \initials \displ \keybr} {TX} + "Linux Libertine O" + +\_wlog{\_detokenize{% +Modifiers^^J + \sans ...... smaller serifs^^J + \caps ...... caps & small caps^^J +Special variants:^^J + \initials .. special initials (only uppercase letters)^^J + \displ ..... display variant, suitable at big sizes^^J + \mono ...... non-proportional^^J + \keybr ..... keyboard, emulates keyboard buttons^^J +}} + +\_protected\_def \_libertine {% + \_def \_currfamily {libertine}% + \_def\_fontnamegen {"Linux \_mainfamV\_V\_subfamV O/\_currV:\_capsV\_fontfeatures"}% + \_resetmod +} + +\_moddef \resetmod {\_fsetV mainfam=Libertine,subfam={},caps={} \_fvars {} B I BI } +\_moddef \sans {\_fsetV mainfam=Biolinum,subfam={} } +\_moddef \mono {\_fsetV mainfam=Libertine,subfam={Mono } \_fvars {} . . . } +\_moddef \caps {\_fsetV caps=+smcp; } +\_moddef \nocaps {\_fsetV caps={} } + +\_famvardef \initials {\_fsetV mainfam=Libertine,subfam={Initials } \_fvars {} . . . \rm} +\_famvardef \displ {\_fsetV mainfam=Libertine,subfam={Display } \_fvars {} . . . \rm} +\_famvardef \keybr {\_fsetV mainfam=Biolinum,subfam={Keyboard } \_fvars {} . . . \rm} + +\_initfontfamily % new font family must be initialized + +\_endcode + +This is another example where the font names (no font files) are declared. +Linux Libertine font is typically installed on Linux systems. +The \_V macro generates a space. We provide following fonts: + +normal: "Linux Libertine O:\_fontfeatures" + "Linux Libertine O/B:\_fontfeatures" + "Linux Libertine O/I:\_fontfeatures" + "Linux Libertine O/BI:\_fontfeatures" +mono : "Linux Libertine Mono O:\_fontfeatures" +sans: "Linux Biolinum O:\_fontfeatures" + "Linux Biolinum O/B:\_fontfeatures" + "Linux Biolinum O/I:\_fontfeatures" + "Linux Biolinum O/BI:\_fontfeatures" +special: "Linux Libertine Initials O:\_fontfeatures" + "Linux Libertine Display O:\_fontfeatures" + "Linux Biolinum Keyboard O:\_fontfeatures" + +Another file f-libertine.opm declares Linux Libertine family from font files. \ No newline at end of file diff --git a/macros/luatex/optex/f-libertine.opm b/macros/luatex/optex/f-libertine.opm new file mode 100644 index 0000000000..8b45f06e7c --- /dev/null +++ b/macros/luatex/optex/f-libertine.opm @@ -0,0 +1,62 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Linux Libertine] \Libertine {Free Linux Libertine fonts} + {\sans \mono \caps \semi} {\rm \bf \it \bi \initials \displ \keybr} {TX} + "[LinLibertine_R]" + +\_wlog{\_detokenize{% +Modifiers:^^J + \sans ...... smaller serifs^^J + \mono ...... non-proportional^^J + \semi ...... semi-bold variants (\rm, \it)^^J + \caps ...... caps & small caps^^J +Special variants:^^J + \initials .. special initials (only uppercase letters)^^J + \displ ..... display variant, suitable at big sizes^^J + \keybr ..... keyboard, emulates keyboard buttons^^J +}} + +\_protected\_def \Libertine {% + \_def \_currfamily {Libertine}% + \_def\_fontnamegen {"[Lin\_subfamV _\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV subfam=Libertine,caps={} \_fvars R RB RI RBI } +\_moddef \sans {\_fsetV subfam=Biolinum \_fvars R RB RI RBO } +\_moddef \mono {\_fsetV subfam=Libertine \_fvars M MB MO MBO } +\_moddef \semi {\_fsetV subfam=Libertine \_fvars RZ . RZI . } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } +\_moddef \nocaps {\_fsetV caps={} } + +\_famvardef \initials {\_fsetV subfam=Libertine \_fvars I . . . \rm} +\_famvardef \displ {\_fsetV subfam=Libertine \_fvars DR . . . \rm} +\_famvardef \keybr {\_fsetV subfam=Biolinum \_fvars K . . . \rm} + +\_initfontfamily % new font family must be initialized + +\_endcode + +This file declares Linux Libertine font family from font files. The +following fonts are provided: + +normal: "[LinLibertine_R]:\_fontfeatures" + "[LinLibertine_RB]:\_fontfeatures" + "[LinLibertine_RI]:\_fontfeatures" + "[LinLibertine_RBI ]:\_fontfeatures" + "[LinLibertine_RZI]:\_fontfeatures" + "[LinLibertine_RZ]:\_fontfeatures" +mono: "[LinLibertine_M]:\_fontfeatures" + "[LinLibertine_MB]:\_fontfeatures" + "[LinLibertine_MO]:\_fontfeatures" + "[LinLibertine_MBO]:\_fontfeatures" +sans: "[LinBiolinum_RB]:\_fontfeatures" + "[LinBiolinum_RBO]:\_fontfeatures" + "[LinBiolinum_R]:\_fontfeatures" + "[LinBiolinum_RI]:\_fontfeatures" +special: "[LinLibertine_I]:\_fontfeatures" + "[LinLibertine_DR]:\_fontfeatures" + "[LinBiolinum_K]:\_fontfeatures" + +See an alternative `f-libertine-s.opm` where the same font family is +declared using font names used in operating system. + diff --git a/macros/luatex/optex/f-lmfonts.opm b/macros/luatex/optex/f-lmfonts.opm new file mode 100644 index 0000000000..bfd63fd00f --- /dev/null +++ b/macros/luatex/optex/f-lmfonts.opm @@ -0,0 +1,194 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Latin Modern] \LMfonts {TeX Gyre fonts based on Coputer Modern} + {\roman \sans \quotset \ttset \ttprop \ttlight \ttcond \upital + \dunhill submods:\caps \slant \nbold \bolder} {\rm \bf \it \bi \tt} {CM+AMS} + "[lmroman10-regular]" + +\_wlog{\_detokenize{% +Modifiers (selects subfamily):^^J + \modreset .. implicit values (serif, bold extended, nocaps)^^J + \sans ...... sans serif subfamily^^J + \quotset ... quotation subfamily^^J + \ttset ..... typewriter subfamily^^J + \ttprop .... proportional typewriter-like subfamily^^J + \ttlight ... light typewriter subfamily^^J + \ttcond .... condensed typewriter subfamily^^J + \upital .... upright italic (only \rm)^^J + \dunhill ... dunhill roman subfamily (only \rm, \it)^^J +Submodifiers (setlects special variants of given subfamily):^^J + \caps ...... caps & small caps (available only at limited shapes)^^J + \slant ..... slanted (default in some subfamilies)^^J + \nbold ..... normal bold (\roman gives extended bold by default)^^J + \bolder .... extended bold^^J +}} + +\_protected\_def \LMfonts {% + \_def \_currfamily {LMfonts}% + \_def \_fontnamegen {[\_optname{lm\_subfamV.\_currV}]:\_fontfeatures}% + \_resetmod +} + +\_def\_LMregfont #1 #2 #3{% + \_edef\_tmp {\_noexpand\_regoptsizes #1 #2 \_ea\_detokenize\_ea{#3}}% + \_lowercase\_ea{\_tmp}% OTF file names are lowercase +} +\_def \_regoptFS {5 <5.5 6 <6.5 7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <15 17 <*} +\_def \_regoptFT {5 <5.5 6 <6.5 7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <*} +\_def \_regoptST {7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <*} +\_def \_regoptES {8 <8.5 9 <9.5 10 <11.1 12 <15 17 <*} +\_def \_regoptET {8 <8.5 9 <9.5 10 <11.1 12 <*} +\_def \_regoptT {10 <*} +\_def \_regoptE {8 <*} + +\_LMregfont lmrm.r LMRoman?-Regular \_regoptFS % 5-17 +\_LMregfont lmrm.bx LMRoman?-Bold \_regoptFT % 5-12 +\_LMregfont lmrm.i LMRoman?-Italic \_regoptST % 7-12 +\_LMregfont lmrm.bxi LMRoman?-BoldItalic \_regoptT % 10 +\_LMregfont lmrm.isl LMRomanSlant?-Regular \_regoptES % 8-17 +\_LMregfont lmrm.bxisl LMRomanSlant?-Bold \_regoptT % 10 +\_LMregfont lmrm.b LMRomanDemi?-Regular \_regoptT % 10 +\_LMregfont lmrm.bi LMRomanDemi?-Oblique \_regoptT % 10 + +\_LMregfont lmss.r LMSans?-Regular \_regoptES % 8-17 +\_LMregfont lmss.bx LMSans?-Bold \_regoptT % 10 +\_LMregfont lmss.i LMSans?-Oblique \_regoptES % 8-17 +\_LMregfont lmss.bxi LMSans?-BoldOblique \_regoptT % 10 +\_LMregfont lmss.b LMSansDemiCond?-Regular \_regoptT % 10 +\_LMregfont lmss.bi LMSansDemiCond?-Oblique \_regoptT % 10 + +\_LMregfont lmsq.r LMSansQuot?-Regular \_regoptE % 8 +\_LMregfont lmsq.b LMSansQuot?-Bold \_regoptE % 8 +\_LMregfont lmsq.i LMSansQuot?-Oblique \_regoptE % 8 +\_LMregfont lmsq.bi LMSansQuot?-BoldOblique \_regoptE % 8 + +\_LMregfont lmtt.r LMMono?-Regular \_regoptET % 8-12 +\_LMregfont lmtt.b LMMonoLt?-Bold \_regoptT % 10 +\_LMregfont lmtt.i LMMono?-Italic \_regoptT % 10 +\_LMregfont lmtt.bi LMMonoLt?-BoldOblique \_regoptT % 10 +\_LMregfont lmtt.isl LMMonoSlant?-Regular \_regoptT % 10 +\_optfontalias {lmtt.bisl} {lmtt.bi} + +\_LMregfont lmtp.r LMMonoPropLt?-Regular \_regoptT % 10 +\_LMregfont lmtp.bx LMMonoPropLt?-Bold \_regoptT % 10 +\_LMregfont lmtp.i LMMonoPropLt?-Oblique \_regoptT % 10 +\_LMregfont lmtp.bxi LMMonoPropLt?-BoldOblique \_regoptT % 10 +\_LMregfont lmtp.b LMMonoProp?-Regular \_regoptT % 10 +\_LMregfont lmtp.bi LMMonoProp?-Oblique \_regoptT % 10 + +\_LMregfont lmtl.r LMMonoLt?-Regular \_regoptT % 10 +\_LMregfont lmtl.i LMMonoLt?-Oblique \_regoptT % 10 + +\_LMregfont lmtc.r LMMonoLtCond?-Regular \_regoptT % 10 +\_LMregfont lmtc.i LMMonoLtCond?-Oblique \_regoptT % 10 + +\_LMregfont lmrm.rc LMRomanCaps?-Regular \_regoptT % 10 +\_LMregfont lmrm.ic LMRomanCaps?-Oblique \_regoptT % 10 +\_LMregfont lmtt.rc LMMonoCaps?-Regular \_regoptT % 10 +\_LMregfont lmtt.ic LMMonoCaps?-Oblique \_regoptT % 10 + +\_LMregfont lmmu.r LMRomanUnsl?-Regular \_regoptT % 10 +\_LMregfont lmdu.r LMRomanDunh?-Regular \_regoptT % 10 +\_LMregfont lmdu.sl LMRomanDunh?-Oblique \_regoptT % 10 + +% main modifiers (they select a subfamily) +\_moddef \resetmod {\_fsetV subfam=rm \_fvars r bx i bxi } +\_moddef \sans {\_fsetV subfam=ss \_fvars r bx i bxi } +\_moddef \quotset {\_fsetV subfam=sq \_fvars r b i bi } +\_moddef \ttset {\_fsetV subfam=tt \_fvars r b i bi } +\_moddef \ttprop {\_fsetV subfam=tp \_fvars r b i bi } +\_moddef \ttlight {\_fsetV subfam=tl \_fvars r . i . } +\_moddef \ttcond {\_fsetV subfam=tc \_fvars r . i . } +\_moddef \upital {\_fsetV subfam=mu \_fvars r . . . } +\_moddef \dunhill {\_fsetV subfam=du \_fvars r . sl . } + +% submodifiers (they select special vaiants in a subfamily) +\_moddef \nbold {\_onlyif subfam=rm,ss,tp: {\_fvars r b i bi }} +\_moddef \bolder {\_onlyif subfam=rm,ss,tp: {\_fvars r bx i bxi }} +\_moddef \slant {\_onlyif subfam=rm: {\_fvars r bx isl bxisl }% + \_onlyif subfam=tt: {\_fvars r b isl bisl }} +\_moddef \caps {\_onlyif subfam=rm,tt: {\_fvars rc . ic . }} + +\_def \_tryloadtt {\_fontdef\_tentt{\_LMfonts \_addto\_fontfeatures{-tlig;}\_ttset \_rm}} +\_private \LMfonts \ttset ; % \tt variant selector re-defined + +\_initfontfamily % new font family must be initialized + +\_endcode + +\sec How to wite font-macro-file with optical sizes for \OpTeX/ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +First, look at more clear example in `f-hermes.opm`. The basic documentation +is there. + +You can use `\_optname` macro in upur `\_fontnamegen`. This macro is fully +expandable and its input is `` and its output is a +part of your `\_fontnamegen`, i.e. it is a part of a real font file name with +`.otf` extension. Shortly speaking: + +\begtt + \_optname{} -> +\endtt + +You can declare a collection of file names for only one + by `\_regoptsizes`. The syntax is shown for one real +case: + +\begtt + \_regoptsizes lmr.r lmroman?-regular + 5 <5.5 6 <6.5 7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <15 17 <* +\endtt + +In general: + +\begtt + \_regoptsizes {} +\endtt + +Suppose our example above. Then `\_optname{lmr.r}` expands to +lmroman?-regular where the question mark is substituted by a number +depending on current `\_optsize`. If the `\_optsize` lies between two boundary +values (they are prefixed by `<` character) then the number written between +them is used. For example if $11.1 \lt \_optsize \_le 15$ then 12 is +substituted instead question mark. The virtually begins +with zero `<0`, but it is not explicitly written. The right part of + must be terminated by `<*` which means "less than infinity". + +If `\_optname` gets an argument which is not registered +then it expands to `\_failedoptname` which typically ends to error message +about missing font. You can redefine `\_failedoptname` macro to some +existing font if you fint it useful. + +We are using a special macro \_LMregfont which sets the file names to +lowercase and enables to use a shortcasts isntead real . +There are shortcats `\_regoptFS`, `\_regoptT`, etc. here. THe collection of + are declared, each of them covers a collection of real +file names. + +The modifiers redefines \_subfamV and \_currV ouput in this file +`f-lmfonts.opm`. These outputs are used in the paramater of `\_optname`, so +they decalre parts of , no parts of real file name. + +The `\optfontalias {} {} decales + wit the same meaning as previously . + +The `\_optname` macro can be used even if no otical sizes are provided by +a font family. Suppose that font file names are much more chaotic (because +artists are very creative people), so you need to declare more systematic + and do an alias from each to +. For example, you can do it as folows: + +\begtt + \def\fontalias #1 #2 {\_regoptsizes #1 ?#2 {} <*} +% alias name real font name + \fontalias crea-a-regular {Creative Font} + \fontalias crea-a-bold {Creative FontBold} + \fontalias crea-a-italic {Creative olique} + \fontalias crea-a-bolditalic {Creative Bold plus italic} + \fontalias crea-b-regular {Creative Regular subfam} + \fontalias crea-b-bold {Creative subfam bold} + \fontalias crea-b-italic {Creative-subfam Oblique} + \fontalias crea-b-bolditalic {Creative Bold subfam Oblique} +\endtt + diff --git a/macros/luatex/optex/f-pagella.opm b/macros/luatex/optex/f-pagella.opm new file mode 100644 index 0000000000..77d4d53877 --- /dev/null +++ b/macros/luatex/optex/f-pagella.opm @@ -0,0 +1,26 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Pagella] \Pagella {TeX Gyre Pagella fonts based on Palatino} + {\caps} {\rm \bf \it \bi} {TX} + "[texgyrepagella-regular]" + +\_wlog{\_detokenize{% +Modifier:^^J + \caps ...... caps & small caps^^J +}} + +\_protected\def \Pagella {% + \_def \_currfamily {Pagella}% + \_def\_fontnamegen {"[texgyrepagella-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/f-schola.opm b/macros/luatex/optex/f-schola.opm new file mode 100644 index 0000000000..b29444166c --- /dev/null +++ b/macros/luatex/optex/f-schola.opm @@ -0,0 +1,26 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Schola] \Schola {TeX Gyre Schola fonts based on New Century} + {\caps} {\rm \bf \it \bi} {TX} + "[texgyreschola-regular]" + +\_wlog{\_detokenize{% +Modifier:^^J + \caps ...... caps & small caps^^J +}} + +\_protected\def \Schola {% + \_def \_currfamily {Schola}% + \_def\_fontnamegen {"[texgyreschola-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/f-technika.opm b/macros/luatex/optex/f-technika.opm new file mode 100644 index 0000000000..d7f006d6f4 --- /dev/null +++ b/macros/luatex/optex/f-technika.opm @@ -0,0 +1,35 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Technika] \Technika {Fonts from visual style of CTU in Prague} + {\caps \light} {\rm \bf \it \bi \stencil} {TX} + "[Technika-Regular]" + +\_wlog{\_detokenize{% +Modifiers:^^J + \light ..... ligher variants: \rm\bf=light \bf\bi=normal + \book ..... semi-ligher variants: \rm\bf=book \bf\bi=bold + \caps ...... caps & small caps^^J +Special variant:^^J + \stencil ... dashed leters (only uppercase)^J +}} + +\_protected\def \Technika {% + \_def \_currfamily {Technika}% + \_def \_fontnamegen {"[Technika\_stencilV-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV stencil={},caps={} \_fvars Regular Bold Italic BoldItalic } +\_moddef \light {\_fsetV stencil={} \_fvars Light Regular LightItalic Italic } +\_moddef \book {\_fsetV stencil={} \_fvars Book Bold BookItalic BoldItalic } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } + +\_famvardef \stencil {\_fsetV stencil=Stencil \_fvars Bold . Bold . \rm} + + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/f-termes.opm b/macros/luatex/optex/f-termes.opm new file mode 100644 index 0000000000..25d9ef1911 --- /dev/null +++ b/macros/luatex/optex/f-termes.opm @@ -0,0 +1,26 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [Termes] \Termes {TeX Gyre Termes fonts based on Times} + {\caps} {\rm \bf \it \bi} {TX} + "[texgyretermes-regular]" + +\_wlog{\_detokenize{% +Modifier:^^J + \caps ...... caps & small caps^^J +}} + +\_protected\def \Termes {% + \_def \_currfamily {Termes}% + \_def \_fontnamegen {"[texgyretermes-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/f-xcharter.opm b/macros/luatex/optex/f-xcharter.opm new file mode 100644 index 0000000000..98db483ea4 --- /dev/null +++ b/macros/luatex/optex/f-xcharter.opm @@ -0,0 +1,27 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_fontdecl [XCharter] \XCharter {An extension of Bitstream Charter} + {\caps \slant} {\rm \bf \it \bi} {TX} + "[XCharter-Roman]" + +\_wlog{\_detokenize{% +Modifier:^^J + \caps ...... caps & small caps^^J +}} + +\_protected\def \XCharter {% + \_def \_currfamily {XCharter}% + \_def \_fontnamegen {"[XCharter-\_currV]:\_capsV\_fontfeatures"}% + \_resetmod +} +\_moddef \resetmod {\_fsetV caps={} \_fvars Roman Bold Italic BoldItalic } +\_moddef \slant {\_fvars Roman Bold Slanted BoldSlanted } +\_moddef \caps {\_fsetV caps=+smcp;+onum; } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/macros/luatex/optex/fams-ini.opm b/macros/luatex/optex/fams-ini.opm new file mode 100644 index 0000000000..3d9c568577 --- /dev/null +++ b/macros/luatex/optex/fams-ini.opm @@ -0,0 +1,132 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_famtext {Special name for printing a catalogue:} + +\_faminfo [Catalogue] {Catalogue of all registered font families} {fonts-catalog} {} +\_famalias [Catalog] + +\_famtext {Computer Modern like family:} + +\_faminfo [Latin Modern] {TeX Gyre fonts based on Coputer Modern} {f-lmfonts} + { -,\nbold,\sans,\sans\nbold,\slant,\ttset,\ttset\slant,\ttset\caps,% + \ttprop,\ttprop\bolder,\quotset: {\rm\bf\it\bi} + \ttlight,\ttcond,\dunhill: {\rm\it} \upital: {\rm} } +\_famalias [LMfonts] \_famalias [Latin Modern Fonts] + +\_famtext {TeX Gyre fonts based o Adobe 35:} + +\_faminfo [Termes] {TeX Gyre Termes fonts based on Times} {f-termes} + { -,\caps: {\rm\bf\it\bi} } + +\_faminfo [Heros] {TeX Gyre Heros fonts based on Helvetica} {f-heros} + { -,\caps,\cond,\caps\cond: {\rm\bf\it\bi} } + +\_faminfo [Adventor] {TeX Gyre Adventor based on Avantgarde Book} {f-adventor} + { -,\caps: {\rm\bf\it\bi} } + +\_faminfo [Bonum] {TeX Gyre Bonum fonts based on Bookman} {f-bonum} + { -,\caps: {\rm\bf\it\bi} } + +\_faminfo [Pagella] {TeX Gyre Pagella fonts based on Palatino} {f-pagella} + { -,\caps: {\rm\bf\it\bi} } + +\_faminfo [Schola] {TeX Gyre Schola fonts based on New Century} {f-schola} + { -,\caps: {\rm\bf\it\bi} } + +\_faminfo [Cursor] {TeX Gyre Cursor fonts based on Courier} {f-cursor} + { -,\caps: {\rm\bf\it\bi} } + +\_famtext {Other fonts:} + +\_faminfo [Linux Libertine] {Free fonts typicaly instaled in systems} {f-libertine} + { -: {\rm\bf\it\bi} \semi: {\rm\it} + \caps,\sans,\mono,\caps\sans: {\rm\bf\it\bi} -: {\initials\displ\keybr} } +\_famalias [Libertine] \_famalias [LinLibertine] + +\_faminfo [Antykwa Torunska] {Traditional Polish font family} {f-antt} + { -,\cond,\caps, \caps\cond: {\rm\bf\it\bi} + \medium,\cond\medium, \light, \cond\light:{\rm\it} } +\_famalias [Antt] + +\_faminfo [Baskerville] {Free vaiants of classical Baskerville} {f-baskerville} + { -,\caps: {\rm\bf\it\bi} } +\_famalias [BaskevilleF] + +\_faminfo [Technika] {Fonts from visual style of CTU in Prague} {f-technika} + { -,\light,\book, \caps, \caps\book: {\rm\bf\it\bi} -:{\stencil} } +\_famalias [CTU Technika] + +\_faminfo [XCharter] {An extension of Bitstream Charter} {f-xcharter} + { -,\slant,\caps,\caps\slant: {\rm\bf\it\bi} } + +\_faminfo [GFSBodoni] {Based on Bodoni with greek letters} {f-gfsbodoni} + { -: {\rm\bf\it\bi} } + +\_endcode + +\sec How to register your own family +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Read comments in `f-heros.opm` file if you want to prepare a font-macro-file for +your font family. + +Once you have prepared such file with the name f-famname.opm and \TeX/ is +able to see it in your filesystem then you can type \fontfam[famname] and +the file is read, so the information about font family is loaded. The name +"famname" must be lowercase and without spaces. On the other hand the +`\fontfam` command gives more tolerance: you can write uppercase letters and +spaces here. The spaces are ignored and letters are converted to lowercase. +For example \fontfam [LM Fonts] is equivalent to \fontfam [LMfonts] and both +commands load the file `f-lmfonts.opm`. + +You can use your font-macro-file in sense of previous paragraph without +registering it. But problem is that such families are not listed when +`\fontfam[?]` is used and it is not included in font catalogue when +`\fontfam[catalog]` is printed. The list of families taken in the catalogue and +listed on the terminal is declared in two files: `fams-ini.opm` and +`fams-user.opm`. The second file is optional. User can create it and write to +it the information about user-defined families using the same syntax as in +existed file `fams-ini.opm`. + +The `\_faminfo` has the following syntax: + +\begtt + \_faminfo [Name Of Family] {Comments} {file-name} + { } +\endtt + +The data is used when printing catalogue. It consists with +one or more pairs `: {} : {}` etc. +For each pair: each modifiers (separated by comma) are applied to each +and prepared sample is printed. The `-` character means no modifiers +should be applied. + +The `\_famalias` declares an alias to the last +declared family. + +The `\_famtext` writes a line to the terminal and to the log file when all +families are listed. + +For modifiers and variants declared by `\_faminfo` the sample of letters +and other characters from is printed from `\catalogsample` register. +You can redeclare the printed sample by: + +\begtt + \catalogsample={Hello world!} +\endtt + +You can restrict the families to be printed in catalogue by: + +\begtt + \catalogonly={Termes, Latin Modern, Heros} +\endtt + +If `\catalogonly` is empty (this is default value) then all families are +printed but no families listed in `\catalogexclude`, for example + +\begtt + \catalogexclude={Latin Modern, XCharter} +\endtt + +The `\cataogexclude` is empty by default. + diff --git a/macros/luatex/optex/fonts-catalog.opm b/macros/luatex/optex/fonts-catalog.opm new file mode 100644 index 0000000000..88d0d1174f --- /dev/null +++ b/macros/luatex/optex/fonts-catalog.opm @@ -0,0 +1,71 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_initunifonts +\_begingroup + +\_let\_ttfixed=\_tentt +\_suppressfontnotfounderror=1 + +\_lowercase\_ea{\_ea\_def\_ea\_cataloglist\_ea{\_the\_catalogonly}} +\_lowercase\_ea{\_ea\_def\_ea\_catalognolist\_ea{\_the\_catalogexclude}} + +\_ifx\_cataloglist\_empty \_else + \_addto\_cataloglist{ } + \_edef\_cataloglist{\_ea\_removespaces\_cataloglist{} } +\_fi +\_ifx\_catalognolist\_empty \_else + \_addto\_catalognolist{ } + \_edef\_catalognolist{\_ea\_removespaces\_catalognolist{} } +\_fi + +\_def\_faminfo [#1]#2#3#4{% + \_bgroup + \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}% + \_edef\_act{\_noexpand\_isinlist{,\_cataloglist,}{,\_famname,}}\_act + \_iftrue \def\_cataloglist{}\_fi + \_edef\_act{\_noexpand\_isinlist{,\_catalognolist,}{,\_famname,}}\_act + \_iftrue \def\_cataloglist{.}\_fi + \_ifx\_cataloglist\_empty + \_ifx^#4^\_else + \_bigskip {\_qquad\_ttfixed\_string\fontfam [#1] -- (#2)\_par} + \_fontfam[#1] + \_ifexistfam \_nobreak\_medskip \_dosamples #4:{} + \_else {\_qquad\_ttfixed ... family skipped, fonts not found in your system.} + \_fi\_fi\_fi + \_egroup +} +\_def\_dosamples #1:#2{\_ifx^#2^\_else + \_def\_printvars{#2}% + \_ea\_dosamplesA\_romannumeral-`\.#1,,% + \_ea\_dosamples\_fi +} +\_def\_dosamplesA#1,{% + \_ifx^#1^\_else + \_ifx-#1\_def\_usemodifiers{}\_else \_def\_usemodifiers{#1}\_fi + \_ea \_dosamplesB \_printvars \_relax + \_ea \_dosamplesA \_fi +} +\_def\_dosamplesB#1{% + \_ifx\_relax#1 \_else + {\_ttfixed \_detokenize\_ea{\_usemodifiers}\_detokenize{#1}\_unskip:} + {\_usemodifiers #1\_ea\_ifx\_the\_font \_nullfont + \_ttfixed ... This font isn't available in your system.% + \_else \_the\_catalogsample \_fi }\_par + \_ea \_dosamplesB \_fi +} + +\_def\0#1{\_ifnum#1<10 0\_fi\_the#1} +\_footline={\_hfil\_ttfixed\_the\_pageno\_hfil} +\_headline={\_ttfixed Font Catalogue generated by \_OpTeX/ \_hfill \_the\_year-\0\_month-\0\_day} +\_parindent=0pt +\_ttfixed + +\_input fams-ini.opm +\_isfile {fams-user.opm}\_iftrue \_input fams-user.opm \_fi + +\_vfil\_break +\_endgroup + +\_endcode % ------------------------------------- + + \ No newline at end of file diff --git a/macros/luatex/optex/fonts-opmac.opm b/macros/luatex/optex/fonts-opmac.opm new file mode 100644 index 0000000000..2224d722b0 --- /dev/null +++ b/macros/luatex/optex/fonts-opmac.opm @@ -0,0 +1,169 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \typosize {Font managing macros from OPmac <2019-05-21>} + +\_protected\_def \_typosize [#1/#2]{% + \_textfontsize{#1}\_mathfontsize{#1}\_setbaselineskip{#2}% + \_setmainvalues \_ignorespaces +} +\_protected\_def \_textfontsize #1{\_if$#1$\_else \_setfontsize{at#1\_ptunit}\_fi} + +\_def \_mathfontsize #1{\_if$#1$\_else + \_tmpdim=#1\_ptunit + \_edef\_sizemtext{\_ea\_ignorept \_the\_tmpdim \_ptmunit}% + \_tmpdim=0.7\_tmpdim + \_edef\_sizemscript{\_ea\_ignorept \_the\_tmpdim \_ptmunit}% + \_tmpdim=#1\_ptunit \_tmpdim=0.5\_tmpdim + \_edef\_sizemsscript{\_ea\_ignorept \_the\_tmpdim \_ptmunit}% + \_fi +} +\_protected\_def \_typoscale [#1/#2]{% + \_ifx$#1$\_def\_tmp{[/}\_else + \_settmpdim{#1}\_optsize + \_edef\_tmp{[\_ea\_ignorept\_the\_tmpdim/}\_fi + \_ifx$#2$\_edef\_tmp{\_tmp]}\_else + \_settmpdim{#2}\_baselineskip + \_edef\_tmp{\_tmp \_ea\_ignorept\_the\_tmpdim]}\fi + \_ea\_typosize\_tmp +} +\def\_settmpdim#1#2{% + \_tmpdim=#1pt \_divide\_tmpdim by1000 + \_tmpdim=\_ea\_ignorept \_the#2\_tmpdim +} +\_def \_setbaselineskip #1{\_if$#1$\_else + \_tmpdim=#1\_ptunit + \_baselineskip=\_tmpdim \_relax + \_bigskipamount=\_tmpdim plus.33333\_tmpdim minus.33333\_tmpdim + \_medskipamount=.5\_tmpdim plus.16666\_tmpdim minus.16666\_tmpdim + \_smallskipamount=.25\_tmpdim plus.08333\_tmpdim minus.08333\_tmpdim + \_normalbaselineskip=\_tmpdim + \_jot=.25\_tmpdim + \_maxdepth=.33333\_tmpdim + \_setbox\_strutbox=\_hbox{\_vrule height.709\_tmpdim depth.291\_tmpdim width0pt}% + \_fi +} +\_def\_setmainvalues {% + \_mainbaselineskip=\_baselineskip + \_mainfosize=\_optsize + \_bf \_it \_bi \_rm \_normalmath % load fonts if \typosize is running firstly + \_def \_setmainvalues{\_rm \_everymath={\_normalmath}\_everydisplay={\_normalmath}}% +} +\_def\_scalemain {% + \_ifdim \_mainfosize >0pt + \_optsize=\_mainfosize \_baselineskip=\_mainbaselineskip \fi +} + +\_newskip \_mainbaselineskip \_mainbaselineskip=0pt \_relax +\_newdimen \_mainfosize \_mainfosize=0pt + +\_protected\_def\_thefontsize[#1]{\_if$#1$\_else + \_tmpdim=#1\_ptunit + \_newcurrfontsize{at\_tmpdim}% + \_fi + \_ignorespaces +} +\_protected\_def\_thefontscale[#1]{\_ifx$#1$\_else + \_tmpdim=#1pt \_divide\_tmpdim by1000 + \_tmpdim=\_ea\_ea\_ea\_ignorept \_pdffontsize\_font \_tmpdim + \_newcurrfontsize{at\_tmpdim}% + \_fi + \_ignorespaces +} +\_protected\_def\_em {% + \_ea\_ifx \_the\_font \_tenit \_additcorr \_rm \_else + \_ea\_ifx \_the\_font \_tenbf \_bi\_aftergroup\_afteritcorr\_else + \_ea\_ifx \_the\_font \_tenbi \_additcorr \_bf \_else + \_it \_aftergroup\_afteritcorr\_fi\_fi\_fi +} +\_def\_additcorr{\_ifdim\_lastskip>0pt + \_skip0=\_lastskip \_unskip\_italcorr \_hskip\_skip0 \_else\_italcorr \_fi} +\_def\_afteritcorr{\_futurelet\_next\_afteritcorrA} +\_def\_afteritcorrA{\_ifx\_next.\_else\_ifx\_next,\_else \_italcorr \_fi\_fi} +\_let\_italcorr=\/ + +\_protected\_def \_boldify {% + \_let\it =\_bi \_let\rm =\_bf \_let\normalmath =\_boldmath + \_let\_it=\_bi \_let\_rm=\_bf \_let\_normalmath=\_boldmath \_rm +} +\_public \typosize \typoscale \thefontsize \thefontscale \em \boldify + \scalemain \mainfosize \mainbaselineskip ; + +\_endcode % ------------------------------------- + + +\sec Font size settings in general (high-level macros) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The commands for font size setting described here have local validity. If +you put them into a group, the described features are selected locally. Don't use +dimension unit in parameters in these commands. The dimension unit is +`\ptunit` which is set by `1pt` by default. If you set this register to +another value at begining of your document, all fonts and `\baselineskip` +will be set to different sizes. + +The command `\typosize[/]` sets the font size of text and +math fonts and baselineskip. If one of these two parameters is empty, the +corresponding feature stays unchanged. Examples: + +\begtt + \typosize[10/12] % default in plainTeX and OpTeX + \typosize[11/12.5] % font 11pt, baseline 12.5pt + \typosize[8/] % font 8pt, baseline unchanged +\endtt + +The command `\typoscale[/]` sets the text +and math fonts size and baselineskip as a multiple of the current fonts size +and baselineskip. The factor is written in `scaled`-like way, it means that +1000 means factor one. The empty parameter is equal to the parameter 1000, +i.e. the value stays unchanged. Examples: + +\begtt + \typoscale[800/800] % fonts and baselineskip re-size to 80 % + \typoscale[\magstep2/] % fonts bigger 1,44times +\endtt + +First usage of `\typosize` or `\typoscale` macro in your document sets "main +values", i.e. main font size and main baselineskip. They are saved in registers +`\mainfosize` and `\mainbaselineskip`. + +The `\typoscale` comand does scaling in respect to current values. If you +want to do it in respect to main values, type `\scalemain` immediately +before `\typoscale` command. + +\begtt + \typosize[12/14.4] % first usage in document, sets main values internally + \typosize[15/18 bigger font + \scalemain \typoscale[800/800] % reduces from main values, no from current values. +\endtt + +The size of the current text font can be changed by the command +"\thefontsize[]" or can be rescaled by +"\thefontscale[]". These macros don't change math fonts sizes nor +baselineskip. + +When you need titles in bold, you can use the `\boldify` macro with +co-operation with `\typosize` or `\typoscale` command. The `\boldify` command +sets `\rm` as `\bf`, `\it` as `\bi` a and math formulae are bolder too. +Example: + +\begtt + \def\titlefont{\boldify\typosize[15/18]} + {\titlefont Here is big bold {\it italics is bold-italics} and + math $a+b^2$ is bolder too.\par} +\endtt + +The `\em` macro acts as `\it` if the current font is `\rm`, acts as `\rm` if +the current font is `\it`, acts as `\bi` if the current font is `\bf` and +acts as `\bf` if the current font is `\bi`. The "\/" spaces are inserted +automatically. Example: + +\begtt + This is {\em important} text. % = This is {\it important\/} text. + \it This is {\em important} text. % = This is\/ {\rm important} text. + \bf This is {\em important} text. % = This is {\bi important\/} text. + \bi This is {\em important} text. % = This is\/ {\bf important} text. +\endtt + +If you are interesting in font selection system used in \OpTeX/ then see +`fonts-select.opm` file. If you are interesting in font size settings in +detail, see `font-resize.opm` file. diff --git a/macros/luatex/optex/fonts-preload.opm b/macros/luatex/optex/fonts-preload.opm new file mode 100644 index 0000000000..704b665e9b --- /dev/null +++ b/macros/luatex/optex/fonts-preload.opm @@ -0,0 +1,37 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \rm {Latin Modern fonts (EC) preloaded <2020-01-23>} + +% Only few text fonts are preloaded: + +\_font\_tenrm=ec-lmr10 % roman text +\_font\_tenbf=ec-lmbx10 % boldface extended +\_font\_tenit=ec-lmri10 % text italic +\_font\_tenbi=ec-lmbxi10 % bold italic +\_font\_tentt=ec-lmtt10 % typewriter +\_tenrm + +\_protected\_def\_rm{\_tryloadrm \_tenrm \_fam0 } +% \bf, \it, \bi, \tt are defined in math-preload.opm +\_let\_tryload=\_relax + +\_public \rm ; + +\_endcode %--------------------------------------------------- + +Format in lua\TeX/ can download only non-unicode fonts, Latin Modern EC is +loaded here. These fonts are totally unusable in LuaTeX when languages with out +of ASCII or ISO-1 alphabets are used (for example Czech). So, we load only +few fonts here for simple testing the format. But, if an user needs to do a +more serious work, he/she can use `\fontfam` macro in order to load a +selected font family of unicode fonts. + +The non-unicode fonts are not suported in op\TeX/. Use \fontfam[lmfonts] +at the begin of yor document. + +The font resizing macros are in fonts-resize.opm file. + +The `\fontfam` macro is defined in fontfam.opm file. + +The fonts for maths are preloaded in math-macros.opm file. + diff --git a/macros/luatex/optex/fonts-resize.opm b/macros/luatex/optex/fonts-resize.opm new file mode 100644 index 0000000000..4a7bf75468 --- /dev/null +++ b/macros/luatex/optex/fonts-resize.opm @@ -0,0 +1,214 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \setfontsize {Font resizing macros <2020-01-23>} + +%% resizefont variant-name \fontswitch, for example \resizefont{bf}\_tenbf + +\_def\_resizefont#1#2{% + \_edef\_whatresize{#1}% + \_ifx \_fontselector \_undefined \_doresizefont#2% + \_else \_ea \_doresizefont \_fontselector \_fi + \_slet{_tryload#1}{_relax}% +} +\_def\_doresizefont#1{\_logfont{#1}% + \_ea\_font\_ea#1\_ea\_rfontskipat + \_fontname \_cs{_ten\_whatresize} \_relax\_space \_sizespec \_relax +} +\_def\_logfont#1{} % default is no logging of used fonts + +\_def\_rfontskipat#1{\_ifx#1"\_ea\_rfskipatX \_else\_ea\_rfskipatN\_ea#1\_fi} +\_def\_rfskipatX #1" #2\_relax{"\_whichtfm{#1}"} +\_def\_rfskipatN #1 #2\_relax{\_whichtfm{#1}} + +%% \setfontsize{at} or \setfontsize{scaled} + +\_newdimen \_optsize \_optsize=10pt +\_newdimen \_defaultoptsize \_defaultoptsize=10pt + +\_def\_setfontsize #1{% + \_edef\_sizespec{#1}% + \_ea \_setoptsize \_sizespec\_relax + \_reloading +} +\_def\_reloading{\_loadf{rm}\_tenrm \_loadf{bf}\_tenbf + \_loadf{it}\_tenit \_loadf{bi}\_tenbi +} +\_def\_loadf#1#2{\sdef{_tryload#1}{\_resizefont{#1}#2}} +\_def\_tryloadtt{\fontlet\_tentt=\_tentt \_sizespec\_relax} + +\_def\_setoptsize {\_isnextchar a{\_setoptsizeA} + {\_isnextchar m{\_setoptsizeC}{\_setoptsizeB}}} +\_def\_setoptsizeA at#1\_relax{\_optsize=#1\_relax} % at +\_def\_setoptsizeB #1\_relax{\_optsize=\_defaultoptsize\_relax} % scaled +\_def\_setoptsizeC mag#1\_relax{% + \_optsize=\_pdffontsize\_font \_optsize=#1\_optsize \_edef\_sizespec{at\_the\_optsize}} + +\_setfontsize{at10pt} % default size +\_let\_tryloadrm=\_relax +\_let\_tryloadbf=\_relax +\_let\_tryloadit=\_relax +\_let\_tryloadbi=\_relax + +\_def\_regtfm #1 0 #2 *{\_ea\_def \_csname _#1:reg\_endcsname{#2 16380 \_relax}% + \_def\_tmpa{#1}\_reversetfm #2 * % +} +\_def\_reversetfm #1 #2 {% we need this data for \_setmathfamily + \_ea\_let\_csname _#1:reg\_ea\_endcsname + \_csname _\_tmpa:reg\_endcsname + \_if*#2\_else \_ea\_reversetfm \_fi +} +\_def\_whichtfm #1{% + \_ifcsname _#1:reg\_endcsname + \_ea\_ea\_ea \_dowhichtfm + \_csname _#1:reg\_ea\_endcsname + \_else + #1% + \_fi +} +\_def\_dowhichtfm #1 #2 {% + \_ifdim\_optsize<#2pt #1\_ea\_ignoretfm\_else \_ea\_dowhichtfm +\_fi +} +\_def\_ignoretfm #1\_relax{} + +% \fontdef \new {\\} +\_def \_fontdef #1#2{\_begingroup + \_ifx\_fontselector\_undefined \_def\_fontselector{#1}\_fi + #2% + \_ea \_keepmeaning \_fontselector \_endgroup +} +\_def\_fontlet#1#2{\_ifx #2=\_ea\_fontlet \_ea#1\_else + \_ea\_font\_ea#1\_ea\_rfontskipat\_fontname#2 \_relax\_space \_fi +} +\_def \_keepmeaning #1#2{\_global\_let\_keepmeaningdata=#1% + #2\_let#1=\_keepmeaningdata \_global\_let\_keepmeaningdata=\_undefined +} +\_protected \_def \_currvar{\_cs{_currvar:\_ea \_xstring \_the\_font}} +\_sdef{_currvar:_tenrm}{\_rm} +\_sdef{_currvar:_tenbf}{\_bf} +\_sdef{_currvar:_tenit}{\_it} +\_sdef{_currvar:_tenbi}{\_bi} +\_sdef{_currvar:_tentt}{\_tt} + +\_def \_newcurrfontsize #1{% \newcurrfontsize{at25pt} + \_edef\_tmp{\_ea\_xstring \_the\_font}% + \_ea \_fontlet \_csname \_tmp\_ea\_endcsname \_the\_font \_space #1\_relax + \_csname \_tmp\_endcsname +} + +\_def \_truetenrm {% used in default \footline + \_fontdef\_truetenrm{\_setfontsize{at10pt}\rm}% + \_global\_let\_truetenrm=\_truetenrm % next use will be font switch only + \_truetenrm +} + +%% Optical sizes data for preloaded Latin Modern fonts: + +\_regtfm lmr 0 ec-lmr5 5.5 ec-lmr6 6.5 ec-lmr7 7.5 ec-lmr8 8.5 ec-lmr9 9.5 + ec-lmr10 11.1 ec-lmr12 15 ec-lmr17 * +\_regtfm lmbx 0 ec-lmbx5 5.5 ec-lmbx6 6.5 ec-lmbx7 7.5 ec-lmbx8 8.5 ec-lmbx9 9.5 + ec-lmbx10 11.1 ec-lmbx12 * +\_regtfm lmri 0 ec-lmri7 7.5 ec-lmri8 8.5 ec-lmri9 9.5 ec-lmri10 11.1 ec-lmri12 * +\_regtfm lmtt 0 ec-lmtt10 11.1 ec-lmtt12 * + +\_public + \setfontsize \newcurrfontsize \fontdef \fontlet \currvar \defaultoptsize ; + +\_endcode %--------------------------------------------------- + +This code is inspired from csfontsm.tex file. + +\sec Scaling fonts to diferent sizes in text mode (low-level macros) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +There are four basic font-variant selectors `\rm`, `\bf`, `\it`, `\bi`. +Once a font family is loaded (for example fonts decalred in the format in +the `fonts-preloaded.opm` or loaded by `\fontfam`) then you can resize these +fonts using `\setfontsize{}`, for example `\setfontsize{at12pt}` +or `\setfontsize{scaled1300}`. Note that the word `at` or `scaled` must be +present here. This command itself does not rescaling, this is done at the +first moment you use next `\rm`, `\bf`, `\it` or `\bi` selectors. +Example. Assume that we are printing at 10pt and we use: + +\begtt + \setfontsize{at15pt} ...still at 10pt... \rm ...now the text is at15pt... + \bf bold is at 15pt too ... +\endtt + +More meaningful is to use first variant selector immediatelly after +`\setfontsize` command. There is a special "variant selector" `\currvar` +which reloads the font from current variant, for example + +\begtt + \it italics at10pt \setfontsize{at7pt}\currvar italics at 7pt. +\endtt + +If you are using font families by `\fontfam` then you can use more "font +modifiers". The `\setfontsize` command is only one of such font modifier. All font +modifiers does not actual change of fonts but first usage of a variant selector +takes this setting. See `fonts-select.opm` for more information about it. + +You can declare `\` which behaves as natural font switch declared +by `\font`: + +\begtt + \fontdef \ { \} + example: + \fontdef \bigfont {\setfontsize{at15pt}\bf} +\endtt + +This command runs ` \` in a group and sets the +resulting current font as `\`. + +The parameter of the `\fontdef` macro needs to be finalized by one of the +four standard variant selectors (or `\currvar`). + +We have another command for scaling: `\fontlet` which is able to resize +arbitrary font. The font must be presented by \, i.e. by +`\_tenrm`, `\_tenbf` etc. or arbitrary font switch you declared it by +`\font` primitive or `\fontdef` macro. The usage is: + +\begtt + \fontlet \ = \ + example: + \fontlet \bigfont = \_tenbf at15pt +\endtt + +The resulted `\bigfont` is the same as in previous example where `\fontdef` +was used. The advantage of `\fontdef` macro will be more clear when you load +font families by `\fontfam` and you are using more font modifiers declared +in such families. + +The `\newcurrfontsize{}` resizes immediatelly current font. +No others fonts are resized. + +The parameter of `\setfontsize` should be in the format `at` or +`scaled` or `mag`. The first two are know from +classical \TeX/. The third sets new font size to multiplied by +current font size (declared by at or mag). For example +if we have do `\setfontsize{at12pt}` and next we write +`\setfontsize{mag1.5}\rm` then the current font size is `at19pt`. You can +define a funny macro `\bigger`: + +\begtt + \def\bigger {\setfontsize{mag1.3}\currvar} + text \bigger text \bigger text \bigger text... +\endtt + +\secc Optical sizes + +There are font families with more font files where almost the same font is +implemented in various design sizes: `cmr5`, `cmr6`, `cmr7`, `cmr8`, `cmr9`, +`cmr10`, `cmr12`, `cmr17` for example. This feature is called "optical +sizes". \OpTeX/ chooses a font with an optical size closest to desired size +specified by `\setfontsize`, when `at` or `mag` is used. +When `scaled` is used then optical size is choosen using the value +of the `\defaultoptsize` register and such font is scaled by the specified +. There is `\defaultoptsize=10pt` by default. + + +\secc Implementation notes + +... to do ... + + diff --git a/macros/luatex/optex/fonts-select.opm b/macros/luatex/optex/fonts-select.opm new file mode 100644 index 0000000000..f9d6355639 --- /dev/null +++ b/macros/luatex/optex/fonts-select.opm @@ -0,0 +1,460 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \fontfam {Fonts selection system <2020-01-23>} + +\_def\_initunifonts {% + \_ea\_newcount \_csname e@alloc@attribute@count\_endcsname + \_global \_csname e@alloc@attribute@count\_endcsname=-1 + \_directlua{% + require("ltluatex") + require('luaotfload-main') local _void = luaotfload.main () + }% + \_gdef\_rfskipatX ##1" ##2\_relax{"##1"}% + \_gdef\_doresizefont ##1{\_logfont{##1}% + \_font##1=\_fontnamegen\_space \_sizespec \_relax}% + \_def \_fontnamegen{lmr10}% + \_global\_let\_initunifonts=\_relax % we need not to do this work twice +} +\_def\_fontdecl [#1]#2#3#4#5#6#7"#8"{% + \_initunifonts \_uniaccents + \_ifx #2\_undefined + \_isfont"#8"\_iffalse + \_opwarning{Family [#1] skipped, font "#7" not found}\_ea\_ea\_ea\_endinput \_else + \_def\_textfamily{#1}% + \_edef\_currfamily {\_xstring #2}% + \_def\_mainfamcommand{#2}% + \_wterm {FONT: [#1] -- \string#2 \_detokenize{(#3)^^J mods:{#4} vars:{#5} math:{#6}}}% + \_fi + \_else \_ea \_endinput \_fi +} +\_def\_regoptsizes #1 #2?#3 #4*{\_sdef{_optsizes:#1}{#2?#3 #4* }} +\_def\_optfontalias #1#2{\_slet{_optsizes:#1}{_optsizes:#2}} +\_def\_optname #1{\_ifcsname _optsizes:#1\_endcsname + \_ea\_ea\_ea \_optnameA \_csname _optsizes:#1\_ea\_endcsname + \_else \_failedoptname{#1}\_fi +} +\_def\_failedoptname #1{optname-fails:(#1)} +\_def\_optnameA #1?#2 #3 <#4 {\_ifx*#4#1#3#2\_else + \_ifdim\_optsize<#4pt #1#3#2\_optnameC + \_else \_afterfifi \_optnameA #1?#2 \_fi\_fi +} +\_def\_optnameC #1* {\_fi\_fi} +\_def\_afterfifi #1\_fi\_fi{\_fi\_fi #1} + +\_newifi \_ifexistfam +\_def\_isfont"#1"#2{% + \_begingroup + \_suppressfontnotfounderror=1 + \_font\_testfont="#1"\_relax + \_ifx\_testfont\_nullfont \_def\_tmp{\_existfamfalse \_unless} + \else \_def\_tmp{\_existfamtrue}\_fi + \_ea \_endgroup \_tmp #2% +} + +\_def\_fontfeatures{+tlig;} +\_def\_fvars #1 #2 #3 #4 {% + \_sdef{_fvar:rm}{#1}% + \_sdef{_fvar:bf}{#2}% + \_ifx.#2\_slet{_fvar:bf}{_fvar:rm}\_fi + \_sdef{_fvar:it}{#3}% + \_ifx.#3\_slet{_fvar:it}{_fvar:rm}\_fi + \_sdef{_fvar:bi}{#4}% + \_ifx.#4\_slet{_fvar:bi}{_fvar:it}\_fi +} +\_def\_currV{\_cs{_fvar:\_whatresize}} +\_def\_V{ } +\_def \_fsetV #1 {\_fsetVa #1,=,} +\_def \_fsetVa #1=#2,{\_isempty{#1}\_iffalse + \_ifx,#1\_else\_sdef{_#1V}{#2}\_ea\_ea\_ea\_fsetVa\_fi\_fi +} +\_def \_onlyif #1=#2:#3{% + \_edef\_act{\_noexpand\_isinlist{,#2,}{,\_cs{_#1V},}}\_act + \_iftrue #3\_fi +} +\_def \_moddef #1#2{\_edef\_tmp{\_xstring#1}\_remfirstunderscore\_tmp + \_sdef{_f:\_currfamily:\_tmp}{#2\_reloading}% + \_protected \_edef #1{\noexpand\_famdepend\noexpand#1{_f:\noexpand\_currfamily:\_tmp}}% + \_ea \_ifx \_csname\_tmp\_endcsname #1\_else + \_ea \_public \_csname\_tmp\_endcsname ;\_fi +} +\_protected \_def\_resetmod {\_cs{_f:\_currfamily:resetmod}} % private variant of \resetmod + +\_def\_famdepend#1#2{\_ifcsname#2\_endcsname \_csname#2\_ea\_endcsname \_else + \_opwarning{\string#1 is undeclared in current family "\_currfamily", ignored}\_fi +} +\_def\_famvardef#1{\_edef\_tmp{\_xstring#1}\_remfirstunderscore\_tmp + \_ea\_famvardefA \_ea#1\_csname _ten\_tmp\_ea\_endcsname + \_csname _tryload\_tmp\_ea\_endcsname \_csname \_tmp\_endcsname +} +\_def\_famvardefA #1#2#3#4#5{% #1=\_XX #2=\_tenXX #3=\_tryloadXX #4=\XX #5=data + \_isinlist{.\rm\bf\it\bi\currvar}#4\iftrue + \_opwarning{\string\famvardef: + You cannot re-declare standard variant selector \string#4}% + \_else + \_protected\_edef #1{\noexpand\_famdepend\noexpand#1{_f:\noexpand\_currfamily:\_tmp}}% + \_sdef{_f:\_currfamily:\_tmp}{#3#2}% + \_def#3{\_fontdef#2{\_reloading#5}}% + \_ifx#1\tt \addto#1{\_fam\_ttfam}\fi + \_sdef{_currvar:\xstring#2}{#1}% + \_ifx#1#4\_else \_public#4;\_fi + \_fi +} +\_def\_initfontfamily{% + \_mainfamcommand \_reloading \_rm +} +\def\_fontfam[#1]{% + \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}% + \_ifcsname _famf:\_famname\_endcsname \_edef\_famfile{\_cs{_famf:\_famname}}% + \_else \_edef\_famfile{f-\_famname}\_fi + \_ifx \_famfile\_empty \_listfamnames \_fi + \_isfile {f-\_famname.opm}\_iftrue + \_input "f-\_famname.opm"% + \_else \_isfile {fams-user.opm}\_iftrue \_input fams-user.opm \_fi + \_ifcsname _famf:\_famname\_endcsname \_edef\_famfile{\_cs{_famf:\_famname}}% + \_else \_edef\_famfile{f-\_famname}\_fi + \_isfile {\_famfile.opm}\_iftrue \_input "\_famfile.opm"% + \_else \_opwarning{Family [#1] undeclared, "\_famfile.opm" not found}% + \_fi \_fi \_relax +} +\_sdef{_famf:?}{} \_sdef{_famf:{} }{} +\_def\_listfamnames #1\_fi\_relax{\_fi + \_wterm{===== List of font families ======} + \_begingroup + \_let\_famtext=\_wterm + \_def\_faminfo [##1]##2##3##4{% + \_wterm{ \_space\_noexpand\_fontfam [##1] -- ##2}% + \_let\_famalias=\_famaliasA}% + \_input fams-ini.opm + \_isfile {fams-declared.opm}\_iftrue \_input fams-declared.opm \_fi + \_message{^^J}% + \_endgroup +} +\_def\_famaliasA{\_message{ \_space\_space\_space\_space -- alias:} + \_def\_famalias[##1]{\_message{[##1]}}\_famalias} + +\_def\_famtext #1{} +\_def\_faminfo [#1]#2#3#4{% + \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}% + \_sdef{_famf:\_famname}{#3}% + \_def\_famfile{#3}% +} +\_def\_famalias [#1]{% + \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}% + \_sdef{_famf:\_famname\_ea}\_ea{\_famfile}% +} +\_input fams-ini.opm +\_newtoks \_catalogsample +\_newtoks \_catalogonly +\_newtoks \_catalogexclude +\_catalogsample={ABCDabcd Qsty fi fl áéíóúüů řžč ÁÉÍÓÚ ŘŽČ 0123456789} + +\_public + \fontfam \isfont \famvardef \moddef \catalogonly \catalogexclude \catalogsample ; + +\_endcode %--------------------------------------------------- + + +\sec Usage of font selection system +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Try to write `\fontfam[?]`. All font families registered in \OpTeX/ +font selection system are listed on the terminal and in the log file. +You can choose one of them and use for example `\fontfam[Termes]` or +`\fontfam[LM Fonts]`. Then you can use four basic variant selectors `\rm` or +or `\bf` or `\it` or `\bi` and desired fonts are printed. + +You can write `\fontfam[Catalog]` and all fonts registered in \OpTeX/ are +printed with their templates. + +The fonts registered in \OpTeX/ have their macros in "font files", each family +in one font file with the name `f-famname.opm`. All families are collected +in `fams-ini.opm`. You can read the documentation in the file `fams-ini.opm` +and in the files `f-heros.opm`, `f-lmfonts.opm` for more information how +to install and to register your own font family. Note that all families +registered in such files are Unicode fonts. Non-Unicode fonts are not +preferred in \OpTeX/ but you can use them using classical `\font` primitive, +of course. + +Each font family is connected with a preferred unicode-math font. This +unicode-math is activated when font family is loaded. If you don't prefer +this and you are satisfied with 8bit math CM+AMS fonts preloaded in the +\OpTeX/ format then you can use command `\noloadmath` before you load a first +font family. + +There are two equal possibilities how to load a font family: `\fontfam[Family]` +or `\input f-fontfamily.opm`. + +There are "main family command", "font modifiers" and "variant selectors" in +each family. Each family provides four variant selectors mentioned above +(may be, in few cases a missing variant is substituded by `\rm` or +`\it`). A few families provides more than these four variant selectors. + +Mostly all families provides "font modifiers" like `\caps`, `\light`, +`\cond`. Which font modifiers are provided is listed in terminal or in the +catalogue. A font modifier does nothing with current font, but the next +variant selectors select a modified font. You can combine more than one +font modifiers followed by a variant selector. The font is reloaded at the +moment when variant selector is in its process. The following example +supposes that we are working with a font family where `\caps` and `\cond` +font modifiers are provided. + +\begtt +\rm normal font, \bf bold, \it italic. +\cond\currvar now condensed italics is active, +\rm condensed normal, \bf condensed bold. +\caps\rm condensed caps and small caps variant is used in regular variant +\bi condensed caps and small caps variant is used in bold-italic variant. +\resetmod\rm using the `\resetmod` font modifier we can return to +the normal state when no font modifier is active. +\endtt + +Of course, all font settings respect groups. The font modifiers keeps their +context until the group is closed or until another font modifier (which +negates previous setting) is used. In our example these two selectors are +independent, so there are four variants: normal, condensed, caps and +caps-condensed, all these variants are present in four standard +variants: regular, bold, italics, bold-italics. + +There is one special command `\currvar` which respects the current +variant and the font of such variant is reloaded with respect to previously +given font modifiers. + +You can use the `\setfontsize{}` command in the same sense as +other font modifiers. It means that the command itself does nothing with the +fonts but following variant selectors reload fonts to desired size. For +example: + +\begtt +\rm standard size \setfontsize{at14pt}\rm here is 14pt size \it italic is +in 14pt size too \bf bold too. +\endtt + +Note that much more comfortable is to resize fonts using OPmac-like command +`\typosize`, `\typoscale`. These commands prepare the right sizes for math +fonts too and re-calculates many internal parameters like `\baselineskip`. See +`opmac-fonts.opm` file for more information. + + +\secc More than one font families loaded +%--------------------------------------- + +You can load more font families. Then you must to know the context (what +family is currently in use) and you can switch between families using main +family comand. For example, when Heros and Termes are loaded then: + +\begtt +\rm here is Termes because it is loaded last, \it italics in Termes but +\Heros \rm here is Heros font \it italics is in Heros too. +\endtt + +Summary: To select a font you can use (in this order): + +\begtt +\ \ \ +\endtt + +You can use zero or more font modifiers, the `\setfontsize` command is a +font modifier too. Finally, the variant selector or `\currvar` loads +the desired font. + +The font modifiers (with an exception `\setfontsize`) are declared localy in +their font family as "family dependent". If you use it in the context of +another font family where it is not declared then warning is printed on the +terminal and nothing else happens. It is possible (and it is typical) that a +modifier with the same name is declared in more font families. Then such +modifiers are working in context of current used family. For example +`\LMfonts\caps\rm` or `\Termes\caps\rm` both loads small caps in specified +font family using different internal definitions. + +Maybe, one needs a context switching between `\rm`<-->`\bf` and +`\it`<-->`\bi`. This is done by `\em` macro, see opmac-fonts.ofm. + + +\secc Defining a font commands +%----------------------------- + +You can define your own font selectors as a combination of font modifiers +followed by a font selector or by `\currvar` command. + +You can declare a "font switch" like `\font` primitive does it, +but you need not to know nothing about names of font files: + +\begtt +\fontdef \newswitch { } +for example +\fontdef \titlefont {\setfontsize{at14pt}\bf} +\endtt + +This example declares \title as a font switch: it selects the bold font at +14pt and other not mentioned parameters (font family and font modifiers) are +taken from outside context when `\fontdef` is in process. +The result is a "definitive" font switch (internaly declared by `\font` primitive) +which does not respect any other current context when it is used. It means: + +\begtt +\sizespec{at8pt}\rm small roman font \titlefont bold big font \it italics +small font. +\endtt + +Such font switches sould be used in `\output` routine (headers, footers) for +example. But it should be less usable in common text. For example when +`\titlefont` defined above is used for titles, you cannot change a font +variant (to `\it`, for example). So, better idea to declare a "title font" +is to use normal `\def` instead `\fontdef` + +\begtt +\def\titlefont{\setfontsize{at14pt}\bf \let\it\bi} % Let it be (John Lennon) +... +{\titlefont here we have bold 14pt font and {\it here} was bold 14pt italics} +\endtt + +There are four standard variant selectors, but you can declare new variant +selector by `\famvardef` command: + +\begtt +\famvardef \selector { } +\endtt + +If such `\selector` is used, then it takes the current context of font family and +font modifiers, opens a group, locally adds the defined font modifiers, +applies variant selector (loads the font now), closes the group but keeps +the selected font and use it. Moreover, such `\selector` is declared as +family-dependent in the same sense as font modifiers. + +You can use `\isfont ""\iftrue` or `\isfont ""\iffalse` +to test if the specified font is present in your system. + + +\secc Example of modifying font features +%--------------------------------------- + +Each OTF fionts provides "font features". You can list these font features +by `otfinfo -f font.otf`. For example LinLibertine fonts provide `frac` font +feature. If it is active then fractions like 1/2 are printed in a special +fonrm. + +If you need to activate or deactivate a font feature then you must to +re-load the font with new collection of features. Actual collection of +features are stored in `\_fontfeatures` macro. The features are separated by +semicolon and prefixed by `+` (to activate it) or `-` (to deactivate it). +If you want to print fractions in LinLibertine create a font modifier using +`\moddef` of variant selector using `\famvardef`: + +\begtt + \fontfam[LinLibertine] + \moddef \fracmod {\addto\_fontfeatures{+frac;}} + {Compare 1/2 or 1/10 \fracmod\currvar to 1/2 or 1/10.} + or: + \famvardef \fraclig {\addto\_fontfeatures{+frac;}\currvar} + {Compare 1/2 or 1/10 \fraclig to 1/2 or 1/10.} +\endtt + +The `onum` font feature (old style digits) is connected to `\caps` macro for +Caps+SmallCaps variant in \OpTeX/ font-definition-files. So you need not to +create a new modifier, just use `{\caps\currvar 012345}`. + + +\secc Example of usage more vaiants +%---------------------------------- + +Suppose we have load Heros family where \cond font modifier is declared. +Then you can define: + +\begtt + \famvardef \rmcond {\cond\rm} + \famvardef \bfcond {\cond\bf} + \famvardef \itcond {\cond\it} + \famvardef \bicond {\cond\bi} +\endtt + +Now, you can select between eight variants. But the context between similar +variants like `\bf`--`\bfcond` is lost. Maybe you will find more usefull to +create only a two cond--nocond swithers which respect the current variant. +And use only four standard variant selectors: + +\begtt + \def\useCond {\cond\currvar} \def\useNormal {\nocond\currvar} + \Heros\rm + here is rm-normal \bf here is bold-normal \useCond here is bold-condensed + \it here is italics-condensed \useNormal here is italics-normal. +\endtt + + +\secc Example of usage more than one family +%------------------------------------------ + +Supose we have load Termes and Heros families. Then you can define + +\begtt + \def\useTermes {\Termes\currvar} % switch to Termes with respect current variant + \def\useHeros {\Heros\currvar} % switch to Heros with respect curent variant +\endtt + +Or you can declare fonts-like macros: + +\begtt + \fontdef \titlefont {\setfontsize{at14pt}\Heros\bf} + \times\rm ..... normal text in Times + \titlefont .... Titles in Heros. +\endtt + +If you are mixing fonts from various font families then the ex height can +be different and optical unfit. You can compensate exheight of such fonts +for example by: + +\begtt + \Termes + \famvardef \sansfont {\setfontsize{mag.9}\Heros\currvar} + \rm here is text in Termes \sansfont and text in Heros with compatible ex-height. +\endtt + + +\secc Fontfam processing in detail +%-----------------------/--------- + +The `\fontfam` macro lists all declared families if parameter is empty or +`?`. If not, then `\fontfam` transforms the given parameter to lowercase and +without spaces. If exists the file `f-.opm` then it is read. If +does not exists such file then `\fontfam` internally lists the families +declared by `\_faminfo` and `\_famalias`, firstly from `fams-ini.opm` file +and secondly from `fams-user.opm` (if such file exists). The last +declaration from this internal list (which mathes the given ) +wins. If the parameter does not match then font-macro-file is not found and +the warning is printed and no new family is loaded. + +When the font-macro-file is found, then `\fontfam` tries an existence of fonts in the +system. If they does not exist, a warning on the terminal is printed and no +family is loaded. + +Note, that `fams-user.opm` has higher precedence that internal +`fams-ini.file`. You can declare families with the same name as internal +names and your declaration wins. + + +\secc Implementation notes +%------------------------- + +TODO ... + +The family-dependend macros are declared by \moddef and \famvardef. The +following trick is used: + +\begtt + \protected\def\macro{\_famdepend\macro{_f:\_currfamily:macro}}% + \sdef{_f:currfamily:macro}{... definition body ...}% +\endtt + +The `\_famdepend\macro{csname}` runs `\csname` if it is defined else it writes +a warning. + +If you want to declare macros wit the same feature but wit a parameter, for +example, you have to do: + +\begtt + \protected\def\macro{\famdepend\macro{_f:\_currfamily:macro}}% + \sdef{_f:currfamily:macro}#1{... definition body ...}% +\endtt + +Of course, you must to do some `\edef...\noexpand` tricks but this is an +implementation detail. + diff --git a/macros/luatex/optex/hyphen-lan.opm b/macros/luatex/optex/hyphen-lan.opm new file mode 100644 index 0000000000..9532243eba --- /dev/null +++ b/macros/luatex/optex/hyphen-lan.opm @@ -0,0 +1,107 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \langlist {Initialization of hypenation patterns <2019-05-21>} + +\_chardef\_enPatt=0 +\_def\_pattlist{\_enPatt=0} +\_def\_langlist{en(USpreloaded)} +\_sdef{_lan:0}{en} +\_sdef{_ulan:USpreloaded}{en} +\_def\enlang{\_uselang{en}\_enPatt23} % \lefthyph=2 \righthyph=3 +\_sdef{langspecific:en}{\_nonfrenchspacing} + +\_lefthyphenmin=2 \_righthyphenmin=3 % disallow x- or -xx breaks +\_input hyphen % en(USpreloaded) patterns from TeX82 + +\_def\_preplang #1 #2 #3#4 #5 {% + \_chardef#3=#4 + \_sdef{_lan:#4}{#1}\_sdef{_ulan:#2}{#1}% + \_def\_next{\_expandafter\_noexpand\_csname #1lang\_endcsname} + \_expandafter\_edef \_csname #1lang\_endcsname {% + \_noexpand\_loadpattrs #2 #4 + \_gdef\_next{\_noexpand\_uselang{#1}#3#5}% + \_next + } + \_addto\_langlist{ #1(#2)}% +} +\_def\_loadpattrs#1 #2 {% + \_directlua{ + require("luatex-hyphen") + luatexhyphen.loadlanguage("#1",#2) + }% +} +\_def\_uselang#1#2#3#4{\_language=#2\_lefthyphenmin=#3\_righthyphenmin=#4\_relax + \_frenchspacing % \nonfrenchspacing can be set in \cs{langspecific:lan} + \_cs{langscpecific:#1}% +} +\_def\_uselanguage#1{\_cs{\_cs{_ulan:#1}lan}} + +\_preplang enus usenglishmax \_enusPatt 100 23 +\_preplang engb ukenglish \_engbPatt 101 23 +\_preplang it italian \_itPatt 102 22 +\_preplang ia interlingua \_iaPatt 103 22 +\_preplang id indonesian \_idPatt 104 22 + +\_preplang cs czech \_csPatt 115 23 +\_preplang sk slovak \_skPatt 116 23 +\_preplang de ngerman \_dePatt 121 22 +\_preplang fr french \_frPatt 122 22 +\_preplang pl polish \_plPatt 123 22 +\_preplang cy welsh \_cyPatt 124 23 +\_preplang da danish \_daPatt 125 22 +\_preplang es spanish \_esPatt 126 22 +\_preplang sl slovenian \_slPatt 128 22 +\_preplang fi finnish \_fiPatt 129 22 +\_preplang hy hungarian \_huPatt 130 22 +\_preplang tr turkish \_trPatt 131 22 +\_preplang et estoniak \_etPatt 132 23 +\_preplang eu basque \_euPatt 133 22 +\_preplang ga irish \_gaPatt 134 23 +\_preplang nb bokmal \_nbPatt 135 22 +\_preplang nn nynorsk \_nnPatt 136 22 +\_preplang nl dutch \_nlPatt 137 22 +\_preplang pt portuguese \_ptPatt 138 23 +\_preplang ro romanian \_roPatt 139 22 +\_preplang hr croatian \_hrPatt 140 22 +\_preplang zh pinyin \_zhPatt 141 11 +\_preplang is icelandic \_isPatt 142 22 +\_preplang hsb uppersorbian \_hsbPatt 143 22 +\_preplang af afrikaans \_afPatt 144 12 +\_preplang gl galician \_glPatt 145 22 +\_preplang kmr kurmanji \_kmrPatt 146 22 +\_preplang tk turkmen \_tkPatt 147 22 +\_preplang la latin \_laPatt 148 22 +\_preplang lac classiclatin \_lacPatt 149 22 +\_preplang lal liturgicallatin \_lalPatt 150 22 +\_preplang elm monogreek \_elmPatt 201 11 +\_preplang elp greek \_elpPatt 202 11 +\_preplang grc ancientgreek \_grcPatt 203 11 +\_preplang ca catalan \_caPatt 204 22 +\_preplang cop coptic \_copPatt 205 11 +\_preplang mn mongolian \_mnPatt 206 22 +\_preplang sa sanskrit \_saPatt 207 13 +\_preplang ru russian \_ruPatt 208 22 +\_preplang uk ukrainian \_ukPatt 209 22 +\_preplang hy armenian \_hyPatt 210 12 +\_preplang as assamese \_asPatt 211 11 +\_preplang hi hindi \_hiPatt 212 11 +\_preplang kn kannada \_knPatt 213 11 +\_preplang lv latvian \_lvPatt 215 22 +\_preplang lt lithuanian \_ltPatt 216 22 +\_preplang ml malayalam \_mlPatt 217 11 +\_preplang mr marathi \_mrPatt 218 11 +\_preplang or oriya \_orPatt 219 11 +\_preplang pa panjabi \_paPatt 220 11 +\_preplang ta tamil \_taPatt 221 11 +\_preplang te telugu \_tePatt 222 11 + +\message{Language hyph.patterns ready to load: \_langlist. + Use \string\lang to initialize language, + \string\cslang\space for example} + +\_public + \uselanguage \langlist ; + +\_endcode % --------------------------------------------- + + diff --git a/macros/luatex/optex/if-macros.opm b/macros/luatex/optex/if-macros.opm new file mode 100644 index 0000000000..c3e4619110 --- /dev/null +++ b/macros/luatex/optex/if-macros.opm @@ -0,0 +1,95 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \newif {Special if-macros, is-macros and loops <2020-01-23>} + +% \newif like in plain\TeX/: + +\_def\_newif #1{\_ea\_newifA \_string #1\_relax#1} +\_ea\_def \_ea\_newifA \_string\if #1\_relax#2{% + \_sdef{#1true}{\_let#2=\_iftrue}% + \_sdef{#1false}{\_let#2=\_iffalse}% + \_let#2=\_iffalse +} +\_def\_newifi #1{\_ea\_newifiA \string#1\_relax#1} +\_ea\_def \_ea\_newifiA \string\_if #1\_relax#2{% + \_sdef{_#1true}{\_let#2=\_iftrue}% + \_sdef{_#1false}{\_let#2=\_iffalse}% + \_let#2=\_iffalse +} + +% \loop like in plain\TeX/: + +\_def \_loop #1\repeat{\_def\_body{#1}\_iterate} +\_def \_iterate {\_body \_ea \_iterate \_fi} +\_let \repeat=\fi % this makes \loop...\if...\repeat skippable + +% \isempty{text}\iftrue, \isempty{text}\iffalse: + +\_def \_isempty #1#2{\_ea\_ifx\_ea\_relax\_detokenize{#1}\_relax + \_else \_ea\_unless \_fi #2} +\_def \_isnoempty #1#2{\_ea\_ifx\_ea\_relax\_detokenize{#1}\_relax + \_ea\_unless \_fi #2} +\_def \_istoksempty #1{\_ea\_isempty\_ea{\_the#1}} + +% \isinlist\list{text}\iftrue, \isinlist\list{text}\false: + +\_long\_def\_isinlist#1#2{\_begingroup + \_long\_def\_tmp##1#2##2\_end/_{\_endgroup\_isnoempty{##2}}% + \_ea\_tmp#1\_endlistsep#2\_end/_% +} + +% \isnextchar {exec if true}{exec if false} + +\_long\_def\_isnextchar#1#2#3{\_begingroup\_toks0={\_endgroup#2}\_toks1={\_endgroup#3}% + \_let\_tmp=#1\_futurelet\_next\_isnextcharA +} +\_def\_isnextcharA{\_the\_toks\_ifx\_tmp\_next0\_else1\_fi\_space} + +% \isfile{name}\iftrue + +\_newread \_testin + +\_def\_isfile #1{% + \_openin\_testin =#1 + \_ifeof\_testin \_ea\_unless + \_else \_closein\_testin + \_fi +} + +% \removespaces text with spaces {} -> textwithspaces + +\_def\_removespaces #1 {\_isempty{#1}\_iffalse #1\_ea\_removespaces\_fi} + + +\_public + \newif \loop \repeat \isempty \istoksempty \isinlist \isnextchar + \isfile \removespaces ; + +\_endcode %--------------------------------------------------------- + +The `\newif` macro works like in plain\TeX. It means that +after `\newif\ifxxx` you can use `\xxxtrue` or +`\xxxfalse` to set the boolean value and use `\ifxxx true\else false\fi` +to test this value. The defalut value is false. + +The macro `\_newifi` enables to declare `\_ifxxx` and to use `\_xxxtrue` and +`\_xxxfalse`. This means that it is usable for _prefixed macros. + +The `\loop \ifsomething \repeat` loops ` ` +until `\ifsomething` is false. Then `` is not executed and loop is +finished. This works like in plain\TeX. + +The macro `\isempty{}\iftrue \else \fi` executes +if is empty and if it is nonempty. You can use +`\isempty{}\iffalse \else \fi` too. This macro is +expandable. + +The macro `\isinlist\list{}\iftrue` acts like `\iftrue` if the +`` is included the macro body of `\list`. Else it acts like +`\ifflase`. You can write `\isinlist\list{}\iffalse` to reverse the +boolean value of this condition. THe macro is not expandable. + +The macro `\isnextchar {}{}` executes `` if next +character is equal to . Else the `` is executed. The macro is +not expandable. + diff --git a/macros/luatex/optex/logos.opm b/macros/luatex/optex/logos.opm new file mode 100644 index 0000000000..8d96d332ff --- /dev/null +++ b/macros/luatex/optex/logos.opm @@ -0,0 +1,41 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \TeX {Logos TeX, LuaTeX, etc. <2019-05-21>} + +\_protected\_def \_TeX {T\_kern-.1667em\_lower.5ex\_hbox{E}\_kern-.125emX\_ignoreslash} +\_protected\_def \_OpTeX {Op\kern-.1em\_TeX} +\_protected\_def \_LuaTeX {Lua\_TeX} +\_protected\_def \XeTeX {X\_kern-.125em\_phantom E% + \_pdfsave\_rlap{\_pdfscale{-1}{1}\_lower.5ex\_hbox{E}}\_pdfrestore \_kern-.1667em \_TeX} +\_def\_LaTeX{\_tmpdim=.42ex L\_kern-.36em \_kern \_slantcorr % slant correction + \_raise \_tmpdim \_hbox{\_thefontscale[710]A}% + \_kern-.15em \_kern-\_slantcorr \_TeX} +\_def\_slantcorr{\_ea\_ignorept \_the\_fontdimen1\_the\_font\_tmpdim} + +\_def\_ignoreslash {\_futurelet\_next \_ignoreslashA} +\_def\_ignoreslashA {\_ifx\_next/\_ea\_ignoreit\_fi} +\_def\_ignoreit#1{} +{\_lccode`\?=`\p \_lccode`\!=`\t \_lowercase{\_gdef\_ignorept#1?!{#1}}} + +\_def\_OPmac{\_leavevmode + \_lower.2ex\_hbox{\_thefontscale[1400]O}\_kern-.86em P{\_em mac}\_ignoreslash} +\_def\_CS{$\_cal C$\_kern-.1667em\_lower.5ex\_hbox{$\_cal S$}\_ignoreslash} +\_def\_csplain{\_CS plain} + + +\_public + \TeX \OpTeX \LuaTeX \XeTeX \LaTeX \OPmac \CS \csplain + \ignoreslash \ignoreit \ignorept ; + +\_endcode + +We define common logos used in \TeX. Despite plain \TeX/ each such macro +ends by `\ignoreslash`. This macro ignores next slash if it is present. +You can `use \TeX/ like this` for protecting the space following the logo. + +The `\ignoreit` macro ignores next token. The \ignorept macro used ike this: +\begtt +\ea\ignorept \the\dimen... +\endtt +consumes the "pt" phrase appended to dimen value by `\the`. + diff --git a/macros/luatex/optex/luatex-ini.opm b/macros/luatex/optex/luatex-ini.opm new file mode 100644 index 0000000000..7ce9667f79 --- /dev/null +++ b/macros/luatex/optex/luatex-ini.opm @@ -0,0 +1,145 @@ +%% This is part of SpTeX project, see http://petr.olsak.net/optex + +\_codedecl \pdfprimitive {LuaTeX initialization code <2020-01-23>} + +\_directlua { + % enable all primitives without prefixing + tex.enableprimitives('', tex.extraprimitives()) + % enable all primitives with _ prefix + tex.enableprimitives('_', tex.extraprimitives()) +} + +\_let\_pdfpagewidth \pagewidth +\_let\_pdfpageheight \pageheight +\_let\_pdfadjustspacing \adjustspacing +\_let\_pdfprotrudechars \protrudechars +\_let\_pdfnoligatures \ignoreligaturesinfont +\_let\_pdffontexpand \expandglyphsinfont +\_let\_pdfcopyfont \copyfont +\_let\_pdfxform \saveboxresource +\_let\_pdflastxform \lastsavedboxresourceindex +\_let\_pdfrefxform \useboxresource +\_let\_pdfximage \saveimageresource +\_let\_pdflastximage \lastsavedimageresourceindex +\_let\_pdflastximagepages \lastsavedimageresourcepages +\_let\_pdfrefximage \useimageresource +\_let\_pdfsavepos \savepos +\_let\_pdflastxpos \lastxpos +\_let\_pdflastypos \lastypos +\_let\_pdfoutput \outputmode +\_let\_pdfdraftmode \draftmode +\_let\_pdfpxdimen \pxdimen +\_let\_pdfinsertht \insertht +\_let\_pdfnormaldeviate \normaldeviate +\_let\_pdfuniformdeviate \uniformdeviate +\_let\_pdfsetrandomseed \setrandomseed +\_let\_pdfrandomseed \randomseed +\_let\_pdfprimitive \primitive +\_let\_ifpdfprimitive \ifprimitive +\_let\_ifpdfabsnum \ifabsnum +\_let\_ifpdfabsdim \ifabsdim + +\_public + \pdfpagewidth \pdfpageheight \pdfadjustspacing \pdfprotrudechars + \pdfnoligatures \pdffontexpand \pdfcopyfont \pdfxform \pdflastxform + \pdfrefxform \pdfximage \pdflastximage \pdflastximagepages \pdfrefximage + \pdfsavepos \pdflastxpos \pdflastypos \pdfoutput \pdfdraftmode \pdfpxdimen + \pdfinsertht \pdfnormaldeviate \pdfuniformdeviate \pdfsetrandomseed + \pdfrandomseed \pdfprimitive \ifpdfprimitive \ifpdfabsnum \ifpdfabsdim ; + +\_directlua {tex.enableprimitives('pdf',{'tracingfonts'})} + +\_protected\_def \_pdftexversion {\_numexpr 140\_relax} + \_def \_pdftexrevision {7} +\_protected\_def \_pdflastlink {\_numexpr\_pdffeedback lastlink\_relax} +\_protected\_def \_pdfretval {\_numexpr\_pdffeedback retval\_relax} +\_protected\_def \_pdflastobj {\_numexpr\_pdffeedback lastobj\_relax} +\_protected\_def \_pdflastannot {\_numexpr\_pdffeedback lastannot\_relax} + \_def \_pdfxformname {\_pdffeedback xformname} +{\_outputmode=1 + \_xdef\_pdfcreationdate {\_pdffeedback creationdate} +} + \_def \_pdffontname {\_pdffeedback fontname} + \_def \_pdffontobjnum {\_pdffeedback fontobjnum} + \_def \_pdffontsize {\_pdffeedback fontsize} + \_def \_pdfpageref {\_pdffeedback pageref} + \_def \_pdfcolorstackinit {\_pdffeedback colorstackinit} +\_protected\_def \_pdfliteral {\_pdfextension literal} +\_protected\_def \_pdfcolorstack {\_pdfextension colorstack} +\_protected\_def \_pdfsetmatrix {\_pdfextension setmatrix} +\_protected\_def \_pdfsave {\_pdfextension save\relax} +\_protected\_def \_pdfrestore {\_pdfextension restore\relax} +\_protected\_def \_pdfobj {\_pdfextension obj } +\_protected\_def \_pdfrefobj {\_pdfextension refobj } +\_protected\_def \_pdfannot {\_pdfextension annot } +\_protected\_def \_pdfstartlink {\_pdfextension startlink } +\_protected\_def \_pdfendlink {\_pdfextension endlink\relax} +\_protected\_def \_pdfoutline {\_pdfextension outline } +\_protected\_def \_pdfdest {\_pdfextension dest } +\_protected\_def \_pdfthread {\_pdfextension thread } +\_protected\_def \_pdfstartthread {\_pdfextension startthread } +\_protected\_def \_pdfendthread {\_pdfextension endthread\relax} +\_protected\_def \_pdfinfo {\_pdfextension info } +\_protected\_def \_pdfcatalog {\_pdfextension catalog } +\_protected\_def \_pdfnames {\_pdfextension names } +\_protected\_def \_pdfincludechars {\_pdfextension includechars } +\_protected\_def \_pdffontattr {\_pdfextension fontattr } +\_protected\_def \_pdfmapfile {\_pdfextension mapfile } +\_protected\_def \_pdfmapline {\_pdfextension mapline } +\_protected\_def \_pdftrailer {\_pdfextension trailer } +\_protected\_def \_pdfglyphtounicode {\_pdfextension glyphtounicode } + +\_protected\_edef\_pdfcompresslevel {\pdfvariable compresslevel} +\_protected\_edef\_pdfobjcompresslevel {\pdfvariable objcompresslevel} +\_protected\_edef\_pdfdecimaldigits {\pdfvariable decimaldigits} +\_protected\_edef\_pdfgamma {\pdfvariable gamma} +\_protected\_edef\_pdfimageresolution {\pdfvariable imageresolution} +\_protected\_edef\_pdfimageapplygamma {\pdfvariable imageapplygamma} +\_protected\_edef\_pdfimagegamma {\pdfvariable imagegamma} +\_protected\_edef\_pdfimagehicolor {\pdfvariable imagehicolor} +\_protected\_edef\_pdfimageaddfilename {\pdfvariable imageaddfilename} +\_protected\_edef\_pdfpkresolution {\pdfvariable pkresolution} +\_protected\_edef\_pdfinclusioncopyfonts {\pdfvariable inclusioncopyfonts} +\_protected\_edef\_pdfinclusionerrorlevel {\pdfvariable inclusionerrorlevel} +\_protected\_edef\_pdfgentounicode {\pdfvariable gentounicode} +\_protected\_edef\_pdfpagebox {\pdfvariable pagebox} +\_protected\_edef\_pdfminorversion {\pdfvariable minorversion} +\_protected\_edef\_pdfuniqueresname {\pdfvariable uniqueresname} +\_protected\_edef\_pdfhorigin {\pdfvariable horigin} +\_protected\_edef\_pdfvorigin {\pdfvariable vorigin} +\_protected\_edef\_pdflinkmargin {\pdfvariable linkmargin} +\_protected\_edef\_pdfdestmargin {\pdfvariable destmargin} +\_protected\_edef\_pdfthreadmargin {\pdfvariable threadmargin} +\_protected\_edef\_pdfpagesattr {\pdfvariable pagesattr} +\_protected\_edef\_pdfpageattr {\pdfvariable pageattr} +\_protected\_edef\_pdfpageresources {\pdfvariable pageresources} +\_protected\_edef\_pdfxformattr {\pdfvariable xformattr} +\_protected\_edef\_pdfxformresources {\pdfvariable xformresources} +\_protected\_edef\_pdfpkmode {\pdfvariable pkmode} + +\_public + \pdftexversion \pdftexrevision \pdflastlink \pdfretval \pdflastobj + \pdflastannot \pdfxformname \pdfcreationdate \pdffontname \pdffontobjnum + \pdffontsize \pdfpageref \pdfcolorstackinit \pdfliteral \pdfcolorstack + \pdfsetmatrix \pdfsave \pdfrestore \pdfobj \pdfrefobj \pdfannot + \pdfstartlink \pdfendlink \pdfoutline \pdfdest \pdfthread \pdfstartthread + \pdfendthread \pdfinfo \pdfcatalog \pdfnames \pdfincludechars \pdffontattr + \pdfmapfile \pdfmapline \pdftrailer \pdfglyphtounicode \pdfcompresslevel + \pdfobjcompresslevel \pdfdecimaldigits \pdfgamma \pdfimageresolution + \pdfimageapplygamma \pdfimagegamma \pdfimagehicolor \pdfimageaddfilename + \pdfpkresolution \pdfinclusioncopyfonts \pdfinclusionerrorlevel + \pdfgentounicode \pdfpagebox \pdfminorversion \pdfuniqueresname \pdfhorigin + \pdfvorigin \pdflinkmargin \pdfdestmargin \pdfthreadmargin \pdfpagesattr + \pdfpageattr \pdfpageresources \pdfxformattr \pdfxformresources \pdfpkmode ; + +\_pdfminorversion = 5 +\_pdfobjcompresslevel = 2 +\_pdfcompresslevel = 9 +\_pdfdecimaldigits = 3 +\_pdfpkresolution = 600 + +\_endcode + +Non-TeX82 primitives are initialized here in non-prefix and _prefixed form. +Macros for emulation of pdfTeX primitives are set here too. + diff --git a/macros/luatex/optex/margins.opm b/macros/luatex/optex/margins.opm new file mode 100644 index 0000000000..9503bc3940 --- /dev/null +++ b/macros/luatex/optex/margins.opm @@ -0,0 +1,135 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \margins {Macros for margins setting <2019-05-21>} + +\_newdimen\_pgwidth \_newdimen\_pgheight \_pgwidth=0pt +\_newdimen\_shiftoffset + +\_def\_margins/#1 #2 (#3,#4,#5,#6)#7 {\_def\_tmp{#7}% + \_ifx\_tmp\_empty + \_opwarning{\_string\_margins: missing unit, mm inserted}\_def\_tmp{mm}\_fi + \_setpagedimens #2 % setting \_pgwidth, \_pgheight + \_ifdim\_pgwidth=0pt \_else + \_hoffset=0pt \_voffset=0pt + \_if$#3$\_if$#4$\_hoffset =\_dimexpr (\_pgwidth -\_hsize)/2 \_relax + \_else \_hoffset =\_dimexpr \_pgwidth -\_hsize - #4\_tmp \_relax % only right margin + \_fi + \_else \_if$#4$\_hoffset = #3\_tmp \_relax % only left margin + \_else \_hsize =\_dimexpr \_pgwidth - #3\_tmp - #4\_tmp \_relax % left+right margin + \_hoffset = #3\_tmp \_relax + \_fi\_fi + \_if$#5$\_if$#6$\_voffset =\_dimexpr (\_pgheight -\_vsize)/2 \_relax + \_else \_voffset =\_dimexpr \_pgheight -\_vsize - #6\_tmp \_relax % only bottom margin + \_fi + \_else \_if$#6$\_voffset = #5\_tmp \_relax % only top margin + \_else \_vsize=\_dimexpr \_pgheight - #5\_tmp - #6\_tmp \_relax % top+bottom margin + \_voffset = #5\_tmp \_relax + \_fi\_fi + \_if 1#1\_shiftoffset=0pt \_def\_prepoffsets{}\_else \_if 2#1% double-page layout + \_shiftoffset = \_dimexpr \_pgwidth -\_hsize -2\_hoffset \_relax + \_def\_prepoffsets{\_ifodd\_pageno \_else \_advance\_hoffset \_shiftoffset \_fi}% + \_else \_opwarning{use \_string\_margins/1 or \_string\_margins/2}% + \_fi\_fi\_fi +} +\_def\_setpagedimens{\_isnextchar({\_setpagedimensB}{\_setpagedimensA}} +\_def\_setpagedimensA#1 {\_ifcsname _pgs:#1\_endcsname + \_ea\_ea\_ea\_setpagedimensB \_csname _pgs:#1\_ea\_endcsname\_space + \_else \_opwarning{page specification "#1" is undefined}\_fi} +\_def\_setpagedimensB (#1,#2)#3 {\_setpagedimensC\_pgwidth=#1:#3 + \_setpagedimensC\_pgheight=#2:#3 + \_pdfpagewidth=\_pgwidth \_pdfpageheight=\_pgheight +} +\_def\_setpagedimensC #1=#2:#3 {#1=#2\_ifx^#3^\_tmp\_else#3\_fi\_relax\_truedimen#1} + +\_sdef{_pgs:a3}{(297,420)mm} \_sdef{_pgs:a4}{(210,297)mm} \_sdef{_pgs:a5}{(148,210)mm} +\_sdef{_pgs:a3l}{(420,297)mm} \_sdef{_pgs:a4l}{(297,210)mm} \_sdef{_pgs:a5l}{(210,148)mm} +\_sdef{_pgs:b5}{(176,250)mm} \_sdef{_pgs:letter}{(8.5,11)in} + +\_def\_trueunit{} +\_def\_magscale[#1]{\_mag=#1\_def\_trueunit{true}% + \_ifdim\_pgwidth=0pt \_else \_truedimen\_pgwidth \_truedimen\_pgheight \_fi + \_truedimen\_pdfpagewidth \_truedimen\_pdfpageheight +} +\_def\_truedimen#1{\_ifx\_trueunit\_empty \_else#1=\_ea\_ignorept\_the#1truept \_fi} + +\_public + \margins \magscale ; + +\_endcode % ----------------------------------------- + + +\sec Setting the margins +%%%%%%%%%%%%%%%%%%%%%%%% + +OPmac declares paper formats a4, a4l (landscape~a4), a5, a5l, b5, letter and +user can declare another own format by "\sdef": + +\begtt +\sdef{pgs:b5l}{(250,176)mm} +\sdef{pgs:letterl}{(11,8.5)in} +\endtt + +The "\margins" command declares margins of the document. This command have +the following parameters: + +\begtt +\margins/ (,,,) + example: +\margins/1 a4 (2.5,2.5,2,2)cm +\endtt + +Parameters are: + +\begitems +* \dots\ "1" or "2" specifies one-page or two-pages design. +* \dots\ paper format (a4, a4l, a5, letter, etc. or user defined). +* , , , \dots\ gives the amount of left, right, + top and bottom margins. +* \dots\ unit used for values , , , . +\enditems + +Each of the parameters , , , can be empty. +If both and are nonempty then "\hsize" is set. Else "\hsize" +is unchanged. If both and are empty then typesetting area is +centered in the paper format. The analogical rule works when or +parameter is empty ("\vsize" instead "\hsize" is used). Examples: + +\begtt +\margins/1 a4 (,,,)mm % \hsize, \vsize untouched, + % typesetting area centered +\margins/1 a4 (,2,,)cm % right margin set to 2cm + % \hsize, \vsize untouched, vertically centered +\endtt + +If "=1" then all pages have the same margins. If "=2" then the +declared margins are true for odd pages. The margins at the even pages are +mirrored in such case, it means that is replaced by and vice +versa. + +The "" can be in the form "(,)" where "" is +optional. If it is missing then "" after margins specification is +used. For example: + +\begtt +\margins/1 (100,200) (7,7,7,7)mm +\endtt +% +declares the paper 100$\times$200\,mm with all four margins 7\,mm. The spaces +before and after "" parameter are necessery. + +The command "\magscale[]" scales the whole typesetting area. The +fixed point of such scaling is the so called the ``Knuth's point'': 1in +below and 1in right of paper sides. Typesetting (breakpoints etc.) is +unchanged. All units are relative after such scaling. Only paper formats +dimensions stays unscaled. Example: + +\begtt +\margins/2 a5 (22,17,19,21)mm +\magscale[1414] \margins/1 a4 (,,,)mm +\endtt +% +The first line sets the "\hsize" and "\vsize" and margins for final +printing at a5 format. The setting on the second line centers the scaled +typesetting area to the true a4 paper while breaking points for paragraphs +and pages are unchanged. It may be usable for +review printing. After review is done, the second line can be commented out. diff --git a/macros/luatex/optex/math-macros.opm b/macros/luatex/optex/math-macros.opm new file mode 100644 index 0000000000..a71a089ab2 --- /dev/null +++ b/macros/luatex/optex/math-macros.opm @@ -0,0 +1,868 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \sin {Math macros plus mathchardefs <2020-01-23>} + +%% The character _ as subscript prefix: + +\catcode`\_ = 8 +\let\sb = _ +\catcode`\_ = 13 +\let _ = \sb +\catcode`\_ = 11 +\_private \sb ; + +% \int_a^b -> \int _a^B, \max_M -> \max _M etc. In general: +% let be a word. Then \_ or \_ +% (in both cases terminated by non-leter) will be rewritten to +% \ _ or \ _ in preprocessor. + +\_def \_mathsbon {% + \directlua{ + callback.register("process_input_buffer", + function (str) + return string.gsub(str.." ", "(\_nbb[a-zA-Z]+)_([a-zA-Z]?[^_a-zA-Z])", "\_pcent 1 _\_pcent 2") + end) +}} +\_def \_mathsboff {% + \directlua{ callback.register("process_input_buffer", nil) }% +} +\_public \mathsboff \mathsbon ; + + +%% Mathcodes prom plainTeX: + +\_mathcode`\^^@="2201 % \cdot +\_mathcode`\^^A="3223 % \downarrow +\_mathcode`\^^B="010B % \alpha +\_mathcode`\^^C="010C % \beta +\_mathcode`\^^D="225E % \land +\_mathcode`\^^E="023A % \lnot +\_mathcode`\^^F="3232 % \in +\_mathcode`\^^G="0119 % \pi +\_mathcode`\^^H="0115 % \lambda +\_mathcode`\^^I="010D % \gamma +\_mathcode`\^^J="010E % \delta +\_mathcode`\^^K="3222 % \uparrow +\_mathcode`\^^L="2206 % \pm +\_mathcode`\^^M="2208 % \oplus +\_mathcode`\^^N="0231 % \infty +\_mathcode`\^^O="0140 % \partial +\_mathcode`\^^P="321A % \subset +\_mathcode`\^^Q="321B % \supset +\_mathcode`\^^R="225C % \cap +\_mathcode`\^^S="225B % \cup +\_mathcode`\^^T="0238 % \forall +\_mathcode`\^^U="0239 % \exists +\_mathcode`\^^V="220A % \otimes +\_mathcode`\^^W="3224 % \leftrightarrow +\_mathcode`\^^X="3220 % \leftarrow +\_mathcode`\^^Y="3221 % \rightarrow +\_mathcode`\^^Z="8000 % \ne +\_mathcode`\^^[="2205 % \diamond +\_mathcode`\^^\="3214 % \le +\_mathcode`\^^]="3215 % \ge +\_mathcode`\^^^="3211 % \equiv +\_mathcode`\^^_="225F % \lor +\_mathcode`\ ="8000 % \space +\_mathcode`\!="5021 +\_mathcode`\'="8000 % ^\prime +\_mathcode`\(="4028 +\_mathcode`\)="5029 +\_mathcode`\*="2203 % \ast +\_mathcode`\+="202B +\_mathcode`\,="613B +\_mathcode`\-="2200 +\_mathcode`\.="013A +\_mathcode`\/="013D +\_mathcode`\:="303A +\_mathcode`\;="603B +\_mathcode`\<="313C +\_mathcode`\=="303D +\_mathcode`\>="313E +\_mathcode`\?="503F +\_mathcode`\[="405B +\_mathcode`\\="026E % \backslash +\_mathcode`\]="505D +\_mathcode`\_="8000 % math-active subscript +\_mathcode`\{="4266 +\_mathcode`\|="026A +\_mathcode`\}="5267 +\_mathcode`\^^?="1273 % \smallint + +\_delcode`\(="028300 +\_delcode`\)="029301 +\_delcode`\[="05B302 +\_delcode`\]="05D303 +\_delcode`\<="26830A +\_delcode`\>="26930B +\_delcode`\/="02F30E +\_delcode`\|="26A30C +\_delcode`\\="26E30F + +%% \mathchardef's from plainTeX: + +\_mathchardef\alpha="010B +\_mathchardef\beta="010C +\_mathchardef\gamma="010D +\_mathchardef\delta="010E +\_mathchardef\epsilon="010F +\_mathchardef\zeta="0110 +\_mathchardef\eta="0111 +\_mathchardef\theta="0112 +\_mathchardef\iota="0113 +\_mathchardef\kappa="0114 +\_mathchardef\lambda="0115 +\_mathchardef\mu="0116 +\_mathchardef\nu="0117 +\_mathchardef\xi="0118 +\_mathchardef\pi="0119 +\_mathchardef\rho="011A +\_mathchardef\sigma="011B +\_mathchardef\tau="011C +\_mathchardef\upsilon="011D +\_mathchardef\phi="011E +\_mathchardef\chi="011F +\_mathchardef\psi="0120 +\_mathchardef\omega="0121 +\_mathchardef\varepsilon="0122 +\_mathchardef\vartheta="0123 +\_mathchardef\varpi="0124 +\_mathchardef\varrho="0125 +\_mathchardef\varsigma="0126 +\_mathchardef\varphi="0127 +\_mathchardef\Gamma="7000 +\_mathchardef\Delta="7001 +\_mathchardef\Theta="7002 +\_mathchardef\Lambda="7003 +\_mathchardef\Xi="7004 +\_mathchardef\Pi="7005 +\_mathchardef\Sigma="7006 +\_mathchardef\Upsilon="7007 +\_mathchardef\Phi="7008 +\_mathchardef\Psi="7009 +\_mathchardef\Omega="700A + +\_mathchardef\aleph="0240 +\_mathchardef\imath="017B +\_mathchardef\jmath="017C +\_mathchardef\ell="0160 +\_mathchardef\wp="017D +\_mathchardef\Re="023C +\_mathchardef\Im="023D +\_mathchardef\partial="0140 +\_mathchardef\infty="0231 +\_mathchardef\prime="0230 +\_mathchardef\emptyset="023B +\_mathchardef\nabla="0272 +\_protected\_def \surd{{\_mathchar"1270}} +\_mathchardef\top="023E +\_mathchardef\bot="023F +\_mathchardef\triangle="0234 +\_mathchardef\forall="0238 +\_mathchardef\exists="0239 +\_mathchardef\neg="023A \_let\lnot=\neg +\_mathchardef\flat="015B +\_mathchardef\natural="015C +\_mathchardef\sharp="015D +\_mathchardef\clubsuit="027C +\_mathchardef\diamondsuit="027D +\_mathchardef\heartsuit="027E +\_mathchardef\spadesuit="027F + +\_mathchardef\coprod="1360 +\_mathchardef\bigvee="1357 +\_mathchardef\bigwedge="1356 +\_mathchardef\biguplus="1355 +\_mathchardef\bigcap="1354 +\_mathchardef\bigcup="1353 +\_mathchardef\intop="1352 +\_protected\_def \int{\_intop\_nolimits} \private \intop; +\_mathchardef\prod="1351 +\_mathchardef\sum="1350 +\_mathchardef\bigotimes="134E +\_mathchardef\bigoplus="134C +\_mathchardef\bigodot="134A +\_mathchardef\ointop="1348 +\_protected\_def\_oint {\_ointop\_nolimits} \private \ointop; +\_mathchardef\bigsqcup="1346 +\_mathchardef\smallint="1273 + +\_mathchardef\_triangleleft="212F \public\triangleleft; +\_mathchardef\_triangleright="212E \public\trianglerigt; +\_mathchardef\bigtriangleup="2234 +\_mathchardef\bigtriangledown="2235 +\_mathchardef\wedge="225E \let\land=\wedge +\_mathchardef\vee="225F \let\lor=\vee +\_mathchardef\cap="225C +\_mathchardef\cup="225B +\_mathchardef\ddagger="227A +\_mathchardef\dagger="2279 +\_mathchardef\sqcap="2275 +\_mathchardef\sqcup="2274 +\_mathchardef\uplus="225D +\_mathchardef\amalg="2271 +\_mathchardef\diamond="2205 +\_mathchardef\bullet="220F +\_mathchardef\wr="226F +\_mathchardef\div="2204 +\_mathchardef\odot="220C +\_mathchardef\oslash="220B +\_mathchardef\otimes="220A +\_mathchardef\ominus="2209 +\_mathchardef\oplus="2208 +\_mathchardef\mp="2207 +\_mathchardef\pm="2206 +\_mathchardef\circ="220E +\_mathchardef\bigcirc="220D +\_mathchardef\setminus="226E % for set difference A\setminus B +\_mathchardef\cdot="2201 +\_mathchardef\ast="2203 +\_mathchardef\times="2202 +\_mathchardef\star="213F + +\_mathchardef\propto="322F +\_mathchardef\sqsubseteq="3276 +\_mathchardef\sqsupseteq="3277 +\_mathchardef\parallel="326B +\_mathchardef\mid="326A +\_mathchardef\dashv="3261 +\_mathchardef\vdash="3260 +\_mathchardef\nearrow="3225 +\_mathchardef\searrow="3226 +\_mathchardef\nwarrow="322D +\_mathchardef\swarrow="322E +\_mathchardef\Leftrightarrow="322C +\_mathchardef\Leftarrow="3228 +\_mathchardef\Rightarrow="3229 +\_protected\_def \neq{\_not=} \_let\ne=\neq +\_mathchardef\leq="3214 \let\le=\leq +\_mathchardef\geq="3215 \let\ge=\geq +\_mathchardef\succ="321F +\_mathchardef\prec="321E +\_mathchardef\approx="3219 +\_mathchardef\succeq="3217 +\_mathchardef\preceq="3216 +\_mathchardef\supset="321B +\_mathchardef\subset="321A +\_mathchardef\supseteq="3213 +\_mathchardef\subseteq="3212 +\_mathchardef\in="3232 +\_mathchardef\ni="3233 \let\owns=\ni +\_mathchardef\gg="321D +\_mathchardef\ll="321C +% \_mathchardef\not="3236 % defined below +\_mathchardef\leftrightarrow="3224 +\_mathchardef\leftarrow="3220 \_let\gets=\leftarrow +\_mathchardef\rightarrow="3221 \_let\to=\rightarrow +\_mathchardef\mapstochar="3237 +\_protected\_def\mapsto{\_mapstochar\_rightarrow} \_private \mapstochar \rightarrow ; +\_mathchardef\sim="3218 +\_mathchardef\simeq="3227 +\_mathchardef\perp="323F +\_mathchardef\equiv="3211 +\_mathchardef\asymp="3210 +\_mathchardef\smile="315E +\_mathchardef\frown="315F +\_mathchardef\leftharpoonup="3128 +\_mathchardef\leftharpoondown="3129 +\_mathchardef\rightharpoonup="312A +\_mathchardef\rightharpoondown="312B + +%% Math rm texts: + +\_protected\_def\log {\_mathop{\_rm log}\_nolimits} +\_protected\_def\lg {\_mathop{\_rm lg}\_nolimits} +\_protected\_def\ln {\_mathop{\_rm ln}\_nolimits} +\_protected\_def\lim {\_mathop{\_rm lim}} +\_protected\_def\limsup {\_mathop{\_rm lim\_,sup}} +\_protected\_def\liminf {\_mathop{\_rm lim\_,inf}} +\_protected\_def\sin {\_mathop{\_rm sin}\_nolimits} +\_protected\_def\arcsin {\_mathop{\_rm arcsin}\_nolimits} +\_protected\_def\sinh {\_mathop{\_rm sinh}\_nolimits} +\_protected\_def\cos {\_mathop{\_rm cos}\_nolimits} +\_protected\_def\arccos {\_mathop{\_rm arccos}\_nolimits} +\_protected\_def\cosh {\_mathop{\_rm cosh}\_nolimits} +\_protected\_def\tan {\_mathop{\_rm tan}\_nolimits} +\_protected\_def\arctan {\_mathop{\_rm arctan}\_nolimits} +\_protected\_def\tanh {\_mathop{\_rm tanh}\_nolimits} +\_protected\_def\cot {\_mathop{\_rm cot}\_nolimits} +\_protected\_def\coth {\_mathop{\_rm coth}\_nolimits} +\_protected\_def\sec {\_mathop{\_rm sec}\_nolimits} +\_protected\_def\csc {\_mathop{\_rm csc}\_nolimits} +\_protected\_def\max {\_mathop{\_rm max}} +\_protected\_def\min {\_mathop{\_rm min}} +\_protected\_def\sup {\_mathop{\_rm sup}} +\_protected\_def\inf {\_mathop{\_rm inf}} +\_protected\_def\arg {\_mathop{\_rm arg}\_nolimits} +\_protected\_def\ker {\_mathop{\_rm ker}\_nolimits} +\_protected\_def\dim {\_mathop{\_rm dim}\_nolimits} +\_protected\_def\hom {\_mathop{\_rm hom}\_nolimits} +\_protected\_def\det {\_mathop{\_rm det}} +\_protected\_def\exp {\_mathop{\_rm exp}\_nolimits} +\_protected\_def\Pr {\_mathop{\_rm Pr}} +\_protected\_def\gcd {\_mathop{\_rm gcd}} +\_protected\_def\deg {\_mathop{\_rm deg}\_nolimits} + +%% PlainTeX macros: + +\_let\_sp=^ \public \sp ; +% \sb=_ , defined at beginning of this file + +\_protected\_def\,{\_mskip\_thinmuskip} \let\_thinsk = \, +\_protected\_def\>{\_mskip\_medmuskip} \let\_medsk = \> +\_protected\_def\;{\_mskip\_thickmuskip} \let\_thicksk = \; +\_protected\_def\!{\_mskip-\_thinmuskip} \let\_thinneg = \! + +%\_def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}} % obsolete + +{\_catcode`\'=\active \_gdef'{^\_bgroup\_primes}} % primes dance +\_def\_primes{\_prime\_isnextchar'{\_primesA}% + {\_isnextchar^{\_primesB}{\_egroup}}} +\_def\_primesA #1{\_primes} +\_def\_primesB #1#2{#2\egroup} +\_private \prime ; + +%{\catcode`\^^Z=\active \gdef^^Z{\not=}} % ^^Z is like \ne in math %obsolete + +\_def\_scalebig#1#2{{\_left#1\_vbox to#2\_fontdimen6\_textfont1{}% + \_kern-\_nulldelimiterspace\_right.}} +\_protected\_def\_big#1{\_scalebig{#1}{.85}} +\_protected\_def\_Big#1{\_scalebig{#1}{1.15}} +\_protected\_def\_bigg#1{\_scalebig{#1}{1.45}} +\_protected\_def\_Bigg#1{\_scalebig{#1}{1.75}} +\_public \big \Big \bigg \Bigg ; + +\_protected\_def\_bigl{\_mathopen\_big} +\_protected\_def\_bigm{\_mathrel\_big} +\_protected\_def\_bigr{\_mathclose\_big} +\_protected\_def\_Bigl{\_mathopen\_Big} +\_protected\_def\_Bigm{\_mathrel\_Big} +\_protected\_def\_Bigr{\_mathclose\_Big} +\_protected\_def\_biggl{\_mathopen\_bigg} +\_protected\_def\_biggm{\_mathrel\_bigg} +\_protected\_def\_biggr{\_mathclose\_bigg} +\_protected\_def\_Biggl{\_mathopen\_Bigg} +\_protected\_def\_Biggm{\_mathrel\_Bigg} +\_protected\_def\_Biggr{\_mathclose\_Bigg} +\_public + \bigl \bigm \bigr \Bigl \Bigm \Bigr \biggl \biggm \biggr \Biggl \Biggm + \Biggr ; + +\_protected\_def\_joinrel{\_mathrel{\_mkern-2.5mu}} % -3mu in plainTeX +\_protected\_def\relbar{\_mathrel{\_smash-}} % \_smash, because - has the same height as + +\_protected\_def\Relbar{\_mathrel=} +\_mathchardef\lhook="312C +\_protected\_def\hookrightarrow{\_lhook\_joinrel\_rightarrow} +\_mathchardef\rhook="312D +\_protected\_def\hookleftarrow{\_leftarrow\_joinrel\_rhook} +\_protected\_def\bowtie{\_mathrel\_triangleright\_joinrel\_mathrel\_triangleleft} +\_protected\_def\models{\_mathrel|\_joinrel=} +\_protected\_def\Longrightarrow{\_Relbar\_joinrel\_Rightarrow} +\_protected\_def\longrightarrow{\_relbar\_joinrel\_rightarrow} +\_protected\_def\longleftarrow{\_leftarrow\_joinrel\_relbar} +\_protected\_def\Longleftarrow{\_Leftarrow\_joinrel\_Relbar} +\_protected\_def\longmapsto{\_mapstochar\_longrightarrow} +\_protected\_def\longleftrightarrow{\_leftarrow\_joinrel\_rightarrow} +\_protected\_def\Longleftrightarrow{\_Leftarrow\_joinrel\_Rightarrow} +\_protected\_def\iff{\_thicksk\_Longleftrightarrow\_thicksk} +\_private \lhook \rightarrow \leftarrow \rhook \triangleright \triangleleft + \Relbar \Rightarrow \relbar \rightarrow \Leftarrow \mapstochar + \longrightarrow \Longleftrightarrow ; +\_public \joinrel ; + +\_mathchardef\_ldotp="613A % ldot as a punctuation mark +\_mathchardef\_cdotp="6201 % cdot as a punctuation mark +\_mathchardef\_colon="603A % colon as a punctuation mark +\_public \ldotp \cdotp \colon ; + +\_newdimen \_pt +\_def\_setpt{\_pt=.1\_fontdimen6\_textfont1 } +\_protected\_def\_ldots{\_mathinner{\_ldotp\_ldotp\_ldotp}} +\_protected\_def\_cdots{\_mathinner{\_cdotp\_cdotp\_cdotp}} +\_protected\_def\_vdots{\_setpt \_vbox{\_baselineskip=4\_pt \_lineskiplimit=0pt + \_kern6\_pt \_hbox{.}\_hbox{.}\_hbox{.}}} +\_protected\_def\_ddots{\_mathinner{\_setpt + \_mkern1mu\_raise7\_pt\_vbox{\_kern7\_pt\_hbox{.}}\_mkern2mu + \_raise4\_pt\_hbox{.}\_mkern2mu\_raise1\_pt\_hbox{.}\_mkern1mu}} +\_public \ldots \cdots \vdots \ddots ; + +\_protected\_def\_acute{\_mathaccent"7013 } +\_protected\_def\_grave{\_mathaccent"7012 } +\_protected\_def\_ddot{\_mathaccent"707F } +\_protected\_def\_tilde{\_mathaccent"707E } +\_protected\_def\_bar{\_mathaccent"7016 } +\_protected\_def\_breve{\_mathaccent"7015 } +\_protected\_def\_check{\_mathaccent"7014 } +\_protected\_def\_hat{\_mathaccent"705E } +\_protected\_def\_vec{\_mathaccent"017E } +\_protected\_def\_dot{\_mathaccent"705F } +\_protected\_def\_widetilde{\_mathaccent"0365 } +\_protected\_def\_widehat{\_mathaccent"0362 } + +\_def\_math{\_mathsurround0pt } +\_protected\_def\_overrightarrow #1{\_vbox{\_setpt\_math\_ialign{##\_crcr + \_rightarrowfill\_crcr\_noalign{\_kern-\_pt\_nointerlineskip} + $\_hfil\_displaystyle{#1}\_hfil$\_crcr}}} +\_protected\_def\_overleftarrow #1{\_vbox{\_setpt\_math\_ialign{##\_crcr + \_leftarrowfill\_crcr\_noalign{\_kern-\_pt\_nointerlineskip} + $\_hfil\_displaystyle{#1}\_hfil$\_crcr}}} +\_protected\_def\_overbrace #1{\_mathop{\_vbox{\_setpt\_math\_ialign{##\_crcr\_noalign{\_kern3\_pt} + \_downbracefill\_crcr\_noalign{\_kern3\_pt\_nointerlineskip} + $\_hfil\_displaystyle{#1}\_hfil$\_crcr}}}\_limits} +\_protected\_def\_underbrace #1{\_mathop{\_vtop{\_setpt\_math\_ialign{##\_crcr + $\_hfil\_displaystyle{#1}\_hfil$\_crcr\_noalign{\_kern3\_pt\_nointerlineskip} + \_upbracefill\_crcr\_noalign{\_kern3\_pt}}}}\_limits} +\_protected\_def\_skew #1#2#3{{\_muskip0=#1mu\_divide\_muskip0=by2 \_mkern\_muskip0 + #2{\_mkern-\_muskip0{#3}\_mkern\_muskip0}\_mkern-\_muskip0}{}} +\_public \overrightarrow \overleftarrow \overbrace \underbrace \skew ; + +\_protected\_def\lmoustache{\_delimiter"437A340 } % top from (, bottom from ) +\_protected\_def\rmoustache{\_delimiter"537B341 } % top from ), bottom from ( +\_protected\_def\lgroup{\_delimiter"462833A } % extensible ( with sharper tips +\_protected\_def\rgroup{\_delimiter"562933B } % extensible ) with sharper tips +\_protected\_def\arrowvert{\_delimiter"26A33C } % arrow without arrowheads +\_protected\_def\Arrowvert{\_delimiter"26B33D } % double arrow without arrowheads +\_protected\_def\bracevert{\_delimiter"77C33E } % the vertical bar that extends braces +\_protected\_def\Vert{\_delimiter"26B30D } \_let\|=\_Vert +\_protected\_def\vert{\_delimiter"26A30C } +\_protected\_def\uparrow{\_delimiter"3222378 } +\_protected\_def\downarrow{\_delimiter"3223379 } +\_protected\_def\updownarrow{\_delimiter"326C33F } +\_protected\_def\Uparrow{\_delimiter"322A37E } +\_protected\_def\Downarrow{\_delimiter"322B37F } +\_protected\_def\Updownarrow{\_delimiter"326D377 } +\_protected\_def\backslash{\_delimiter"26E30F } % for double coset G\_backslash H +\_protected\_def\rangle{\_delimiter"526930B } +\_protected\_def\langle{\_delimiter"426830A } +\_protected\_def\rbrace{\_delimiter"5267309 } \_let\}=\rbrace \_let\_rbrace=\rbrace +\_protected\_def\lbrace{\_delimiter"4266308 } \_let\{=\lbrace \_let\_lbrace=\lbrace +\_protected\_def\rceil{\_delimiter"5265307 } +\_protected\_def\lceil{\_delimiter"4264306 } +\_protected\_def\rfloor{\_delimiter"5263305 } +\_protected\_def\lfloor{\_delimiter"4262304 } + +\_protected\_def\choose{\_atopwithdelims()} +\_protected\_def\brack{\_atopwithdelims[]} +\_protected\_def\brace{\_atopwithdelims\_lbrace\_rbrace} + +\_protected\_def\_sqrt{\_radical"270370 } \_public \sqrt ; + +\_def\_mathpalette#1#2{\_mathchoice{#1\_displaystyle{#2}}% + {#1\_textstyle{#2}}{#1\_scriptstyle{#2}}{#1\_scriptscriptstyle{#2}}} +\_newbox\_rootbox +\_protected\_def\root#1\of{\_setbox\_rootbox + \_hbox{$\_math\_scriptscriptstyle{#1}$}\_mathpalette\_rootA} +\_def\_rootA#1#2{\_setbox0=\_hbox{$\_math#1\_sqrt{#2}$}\_dimen0=\_ht0 + \_advance\_dimen0by-\_dp0 + \_mkern5mu\_raise.6\_dimen0\_copy\_rootbox \_mkern-10mu\_box0 } +\_newifi\_ifvp \_newifi\_ifhp +\_protected\_def\_vphantom{\_vptrue\_hpfalse\_phant} +\_protected\_def\_hphantom{\_vpfalse\_hptrue\_phant} +\_protected\_def\_phantom{\_vptrue\_hptrue\_phant} +\_def\_phant{\_ifmmode\_def\_next{\_mathpalette\_mathphant}% + \_else\_let\_next=\_makephant\_fi\_next} +\_def\_makephant#1{\_setbox0\_hbox{#1}\_finphant} +\_def\_mathphant#1#2{\_setbox0=\_hbox{$\_math#1{#2}$}\_finphant} +\_def\_finphant{\_setbox2=\_null + \_ifvp \_ht2=\_ht0 \_dp2=\_dp0 \_fi + \_ifhp \_wd2=\_wd0 \_fi \_box2 } +\_def\_mathstrut{\_vphantom(} +\_protected\_def\_smash{\_relax % \_relax, in case this comes first in \halign + \_ifmmode\_def\_next{\_mathpalette\_mathsmash}\_else\_let\_next\_makesmash + \_fi\_next} +\_def\_makesmash#1{\_setbox0=\_hbox{#1}\_finsmash} +\_def\_mathsmash#1#2{\_setbox0=\_hbox{$\_math#1{#2}$}\_finsmash} +\_def\_finsmash{\_ht0=0pt \_dp0=0pt \_box0 } +\_public \mathpalette \vphantom \hphantom \phantom \mathstrut \smash ; + +\_protected\_def\_cong{\_mathrel{\_mathpalette\_overeq\_sim}} % congruence sign +\_def\_overeq#1#2{\_setpt\_lower.5\_pt\_vbox{\_lineskiplimit\_maxdimen\_lineskip=-.5\_pt + \_ialign{$\_math#1\_hfil##\_hfil$\_crcr#2\_crcr=\_crcr}}} +\_protected\_def\_notin{\_mathrel{\_mathpalette\_cancel\_in}} +\_def\_cancel#1#2{\_math\_ooalign{$\_hfil#1\_mkern1mu/\_hfil$\_crcr$#1#2$}} +\_protected\_def\_rightleftharpoons{\_mathrel{\_mathpalette\_rlhp{}}} +\_def\_rlhp#1{\_vcenter{\_setpt\_math\_hbox{\_ooalign{\_raise2\_pt + \_hbox{$#1\_rightharpoonup$}\_crcr + $#1\_leftharpoondown$}}}} +\_protected\_def\_buildrel#1\over#2{\_mathrel{\_mathop{\_kern0pt #2}\_limits^{#1}}} +\_protected\_def\_doteq{\_buildrel\_textstyle.\over=} +\_public \cong \notin \rightleftharpoons \buildrel \doteq ; + +\_protected\_def\_bmod{\_nonscript\_mskip-\_medmuskip\_mkern5mu + \_mathbin{\_rm mod}\_penalty900\_mkern5mu\_nonscript\_mskip-\_medmuskip} +\_protected\_def\_pmod#1{\_allowbreak\_mkern18mu({\_rm mod}\_thinsk\_thinsk#1)} +\_public \bmod \pmod ; + +\_protected\_def\_cases#1{\_left\{\_thinsk\_vcenter{\_normalbaselines\_math + \_ialign{$##\_hfil$&\_quad##\_hfil\_crcr#1\_crcr}}\_right.} +\_protected\_def\_matrix#1{\_null\_,\_vcenter{\_normalbaselines\_math + \_ialign{\_hfil$##$\_hfil&&\_quad\_hfil$##$\_hfil\_crcr + \_mathstrut\_crcr\_noalign{\_kern-\_baselineskip} + #1\_crcr\_mathstrut\_crcr\_noalign{\_kern-\_baselineskip}}}\_thinsk} +\_protected\_def\_pmatrix#1{\_left(\_matrix{#1}\_right)} +\_newdimen\_ptrenwd +\_ptrenwd=0.875\fontdimen6\textfont1 % width of the big left ( +\_protected\_def\_bordermatrix#1{\_begingroup \_math\_setpt + \_setbox0=\_vbox{\_setpt + \_def\_cr{\_crcr\_noalign{\_kern2\_pt\_global\_let\_cr\_endline}}% + \_ialign{$##$\_hfil\_kern2\_pt\_kern\_ptrenwd&\_thinspace\_hfil$##$\_hfil + &&\_quad\_hfil$##$\_hfil\_crcr + \_omit\_strut\_hfil\_crcr\_noalign{\_kern-\_baselineskip}% + #1\_crcr\_omit\_strut\_cr}}% + \_setbox2=\_vbox{\_unvcopy0 \_global\_setbox1=\_lastbox}% + \_setbox2=\_hbox{\_unhbox1 \_unskip\_global\_setbox1=\_lastbox}% + \_setbox2=\_hbox{$\_kern\_wd1 \_kern-\_ptrenwd\_left(\_kern-\_wd1 + \_global\_setbox1=\_vbox{\_box1 \_kern2\_pt}% + \_vcenter{\_kern-\_ht1 \_unvbox0 \_kern-\_baselineskip}\_thinsk\_right)$}% + \_null\_thicksk\_vbox{\_kern\_ht1 \_box2}\_endgroup} +\_public \cases \matrix \pmatrix \bordermatrix ; + +\_def\_openup{\_afterassignment\_openupA\_dimen0=} +\_def\_openupA{\_advance\_lineskip by\_dimen0 + \_advance\_baselineskip by\_dimen0 + \_advance\_lineskiplimit by\_dimen0 } +\_def\_eqalign#1{\_null\_,\_vcenter{\_openup\_jot\_math + \_ialign{\_strut\_hfil$\_displaystyle{##}$&$\_displaystyle{{}##}$\_hfil + \_crcr#1\_crcr}}\_thinsk} +\_newifi\_ifdtop +\_def\_display{\_global\_dtoptrue\_openup\_jot\_math + \_everycr{\_noalign{\_ifdtop \_global\_dtopfalse \_ifdim\_prevdepth>-1000pt + \_vskip-\_lineskiplimit \_vskip\_normallineskiplimit \_fi + \_else \_penalty\_interdisplaylinepenalty \_fi}}} +\_def\_elign{\_tabskip=\_zoskip\_everycr{}} % restore inside \_display +\_def\_displaylines#1{\_display \_tabskip=\_zoskip + \_halign{\_hbox to\_displaywidth{$\_elign\_hfil\_displaystyle##\_hfil$}\_crcr + #1\_crcr}} +\_def\_eqalignno#1{\_display \_tabskip=\_centering + \_halign to\_displaywidth{\_hfil$\_elign\_displaystyle{##}$\_tabskip=\_zoskip + &$\_elign\_displaystyle{{}##}$\_hfil\_tabskip\_centering + &\_llap{$\_elign##$}\_tabskip\_zoskip\_crcr + #1\_crcr}} +\_def\_leqalignno#1{\_display \_tabskip=\_centering + \_halign to\_displaywidth{\_hfil$\_elign\_displaystyle{##}$\_tabskip=\_zoskip + &$\_elign\_displaystyle{{}##}$\_hfil\_tabskip=\_centering + &\_kern-\_displaywidth\_rlap{$\_elign##$}\_tabskip\_displaywidth\_crcr + #1\_crcr}} +\_public \openup \eqalign \displaylines \eqalignno ; + +%% Mathchardefs for AMS fonts: + +\_def\_amsafam{4} \_def\_amsbfam{5} + +\_mathchardef \boxdot "2\_amsafam 00 +\_mathchardef \boxplus "2\_amsafam 01 +\_mathchardef \boxtimes "2\_amsafam 02 +\_mathchardef \square "0\_amsafam 03 +\_mathchardef \blacksquare "0\_amsafam 04 +\_mathchardef \centerdot "2\_amsafam 05 +\_mathchardef \lozenge "0\_amsafam 06 +\_mathchardef \blacklozenge "0\_amsafam 07 +\_mathchardef \circlearrowright "3\_amsafam 08 +\_mathchardef \circlearrowleft "3\_amsafam 09 +\_mathchardef \rightleftharpoons "3\_amsafam 0A +\_mathchardef \leftrightharpoons "3\_amsafam 0B +\_mathchardef \boxminus "2\_amsafam 0C +\_mathchardef \Vdash "3\_amsafam 0D +\_mathchardef \Vvdash "3\_amsafam 0E +\_mathchardef \vDash "3\_amsafam 0F +\_mathchardef \twoheadrightarrow "3\_amsafam 10 +\_mathchardef \twoheadleftarrow "3\_amsafam 11 +\_mathchardef \leftleftarrows "3\_amsafam 12 +\_mathchardef \rightrightarrows "3\_amsafam 13 +\_mathchardef \upuparrows "3\_amsafam 14 +\_mathchardef \downdownarrows "3\_amsafam 15 +\_mathchardef \upharpoonright "3\_amsafam 16 +\_mathchardef \downharpoonright "3\_amsafam 17 +\_mathchardef \upharpoonleft "3\_amsafam 18 +\_mathchardef \downharpoonleft "3\_amsafam 19 +\_mathchardef \rightarrowtail "3\_amsafam 1A +\_mathchardef \leftarrowtail "3\_amsafam 1B +\_mathchardef \leftrightarrows "3\_amsafam 1C +\_mathchardef \rightleftarrows "3\_amsafam 1D +\_mathchardef \Lsh "3\_amsafam 1E +\_mathchardef \Rsh "3\_amsafam 1F +\_mathchardef \rightsquigarrow "3\_amsafam 20 +\_mathchardef \leftrightsquigarrow "3\_amsafam 21 +\_mathchardef \looparrowleft "3\_amsafam 22 +\_mathchardef \looparrowright "3\_amsafam 23 +\_mathchardef \circeq "3\_amsafam 24 +\_mathchardef \succsim "3\_amsafam 25 +\_mathchardef \gtrsim "3\_amsafam 26 +\_mathchardef \gtrapprox "3\_amsafam 27 +\_mathchardef \multimap "3\_amsafam 28 +\_mathchardef \therefore "3\_amsafam 29 +\_mathchardef \because "3\_amsafam 2A +\_mathchardef \doteqdot "3\_amsafam 2B +\_mathchardef \triangleq "3\_amsafam 2C +\_mathchardef \precsim "3\_amsafam 2D +\_mathchardef \lesssim "3\_amsafam 2E +\_mathchardef \lessapprox "3\_amsafam 2F +\_mathchardef \eqslantless "3\_amsafam 30 +\_mathchardef \eqslantgtr "3\_amsafam 31 +\_mathchardef \curlyeqprec "3\_amsafam 32 +\_mathchardef \curlyeqsucc "3\_amsafam 33 +\_mathchardef \preccurlyeq "3\_amsafam 34 +\_mathchardef \leqq "3\_amsafam 35 +\_mathchardef \leqslant "3\_amsafam 36 +\_mathchardef \lessgtr "3\_amsafam 37 +\_mathchardef \backprime "0\_amsafam 38 +\_mathchardef \risingdotseq "3\_amsafam 3A +\_mathchardef \fallingdotseq "3\_amsafam 3B +\_mathchardef \succcurlyeq "3\_amsafam 3C +\_mathchardef \geqq "3\_amsafam 3D +\_mathchardef \geqslant "3\_amsafam 3E +\_mathchardef \gtrless "3\_amsafam 3F +\_mathchardef \sqsubset "3\_amsafam 40 +\_mathchardef \sqsupset "3\_amsafam 41 +\_mathchardef \vartriangleright "3\_amsafam 42 +\_mathchardef \vartriangleleft "3\_amsafam 43 +\_mathchardef \trianglerighteq "3\_amsafam 44 +\_mathchardef \trianglelefteq "3\_amsafam 45 +\_mathchardef \bigstar "0\_amsafam 46 +\_mathchardef \between "3\_amsafam 47 +\_mathchardef \blacktriangledown "0\_amsafam 48 +\_mathchardef \blacktriangleright "3\_amsafam 49 +\_mathchardef \blacktriangleleft "3\_amsafam 4A +\_mathchardef \vartriangle "3\_amsafam 4D +\_mathchardef \blacktriangle "0\_amsafam 4E +\_mathchardef \triangledown "0\_amsafam 4F +\_mathchardef \eqcirc "3\_amsafam 50 +\_mathchardef \lesseqgtr "3\_amsafam 51 +\_mathchardef \gtreqless "3\_amsafam 52 +\_mathchardef \lesseqqgtr "3\_amsafam 53 +\_mathchardef \gtreqqless "3\_amsafam 54 +\_mathchardef \Rrightarrow "3\_amsafam 56 +\_mathchardef \Lleftarrow "3\_amsafam 57 +\_mathchardef \veebar "2\_amsafam 59 +\_mathchardef \barwedge "2\_amsafam 5A +\_mathchardef \doublebarwedge "2\_amsafam 5B +\_mathchardef \angle "0\_amsafam 5C +\_mathchardef \measuredangle "0\_amsafam 5D +\_mathchardef \sphericalangle "0\_amsafam 5E +\_mathchardef \varpropto "3\_amsafam 5F +\_mathchardef \smallsmile "3\_amsafam 60 +\_mathchardef \smallfrown "3\_amsafam 61 +\_mathchardef \Subset "3\_amsafam 62 +\_mathchardef \Supset "3\_amsafam 63 +\_mathchardef \Cup "2\_amsafam 64 +\_mathchardef \Cap "2\_amsafam 65 +\_mathchardef \curlywedge "2\_amsafam 66 +\_mathchardef \curlyvee "2\_amsafam 67 +\_mathchardef \leftthreetimes "2\_amsafam 68 +\_mathchardef \rightthreetimes "2\_amsafam 69 +\_mathchardef \subseteqq "3\_amsafam 6A +\_mathchardef \supseteqq "3\_amsafam 6B +\_mathchardef \bumpeq "3\_amsafam 6C +\_mathchardef \Bumpeq "3\_amsafam 6D +\_mathchardef \lll "3\_amsafam 6E +\_mathchardef \ggg "3\_amsafam 6F +\_protected\_def \ulcorner {\_delimiter"4\_amsafam 70\_amsafam 70 } +\_protected\_def \urcorner {\_delimiter"5\_amsafam 71\_amsafam 71 } +\_mathchardef \circledS "0\_amsafam 73 +\_mathchardef \pitchfork "3\_amsafam 74 +\_mathchardef \dotplus "2\_amsafam 75 +\_mathchardef \backsim "3\_amsafam 76 +\_mathchardef \backsimeq "3\_amsafam 77 +\_protected\_def \llcorner {\_delimiter"4\_amsafam 78\_amsafam 78 } +\_protected\_def \lrcorner {\_delimiter"5\_amsafam 79\_amsafam 79 } +\_mathchardef \complement "0\_amsafam 7B +\_mathchardef \intercal "2\_amsafam 7C +\_mathchardef \circledcirc "2\_amsafam 7D +\_mathchardef \circledast "2\_amsafam 7E +\_mathchardef \circleddash "2\_amsafam 7F +\_mathchardef \rhd "2\_amsafam 42 +\_mathchardef \lhd "2\_amsafam 43 +\_mathchardef \unrhd "2\_amsafam 44 +\_mathchardef \unlhd "2\_amsafam 45 + + \_let\restriction\upharpoonright + \_let\Doteq\doteqdot + \_let\doublecup\Cup + \_let\doublecap\Cap + \_let\llless\lll + \_let\gggtr\ggg + \_let\Box=\square % LaTeX symbol + \_let\Box=\square % LaTeX symbol + +\_mathchardef \lvertneqq "3\_amsbfam 00 +\_mathchardef \gvertneqq "3\_amsbfam 01 +\_mathchardef \nleq "3\_amsbfam 02 +\_mathchardef \ngeq "3\_amsbfam 03 +\_mathchardef \nless "3\_amsbfam 04 +\_mathchardef \ngtr "3\_amsbfam 05 +\_mathchardef \nprec "3\_amsbfam 06 +\_mathchardef \nsucc "3\_amsbfam 07 +\_mathchardef \lneqq "3\_amsbfam 08 +\_mathchardef \gneqq "3\_amsbfam 09 +\_mathchardef \nleqslant "3\_amsbfam 0A +\_mathchardef \ngeqslant "3\_amsbfam 0B +\_mathchardef \lneq "3\_amsbfam 0C +\_mathchardef \gneq "3\_amsbfam 0D +\_mathchardef \npreceq "3\_amsbfam 0E +\_mathchardef \nsucceq "3\_amsbfam 0F +\_mathchardef \precnsim "3\_amsbfam 10 +\_mathchardef \succnsim "3\_amsbfam 11 +\_mathchardef \lnsim "3\_amsbfam 12 +\_mathchardef \gnsim "3\_amsbfam 13 +\_mathchardef \nleqq "3\_amsbfam 14 +\_mathchardef \ngeqq "3\_amsbfam 15 +\_mathchardef \precneqq "3\_amsbfam 16 +\_mathchardef \succneqq "3\_amsbfam 17 +\_mathchardef \precnapprox "3\_amsbfam 18 +\_mathchardef \succnapprox "3\_amsbfam 19 +\_mathchardef \lnapprox "3\_amsbfam 1A +\_mathchardef \gnapprox "3\_amsbfam 1B +\_mathchardef \nsim "3\_amsbfam 1C +\_mathchardef \ncong "3\_amsbfam 1D +\_mathchardef \diagup "0\_amsbfam 1E +\_mathchardef \diagdown "0\_amsbfam 1F +\_mathchardef \varsubsetneq "3\_amsbfam 20 +\_mathchardef \varsupsetneq "3\_amsbfam 21 +\_mathchardef \nsubseteqq "3\_amsbfam 22 +\_mathchardef \nsupseteqq "3\_amsbfam 23 +\_mathchardef \subsetneqq "3\_amsbfam 24 +\_mathchardef \supsetneqq "3\_amsbfam 25 +\_mathchardef \varsubsetneqq "3\_amsbfam 26 +\_mathchardef \varsupsetneqq "3\_amsbfam 27 +\_mathchardef \subsetneq "3\_amsbfam 28 +\_mathchardef \supsetneq "3\_amsbfam 29 +\_mathchardef \nsubseteq "3\_amsbfam 2A +\_mathchardef \nsupseteq "3\_amsbfam 2B +\_mathchardef \nparallel "3\_amsbfam 2C +\_mathchardef \nmid "3\_amsbfam 2D +\_mathchardef \nshortmid "3\_amsbfam 2E +\_mathchardef \nshortparallel "3\_amsbfam 2F +\_mathchardef \nvdash "3\_amsbfam 30 +\_mathchardef \nVdash "3\_amsbfam 31 +\_mathchardef \nvDash "3\_amsbfam 32 +\_mathchardef \nVDash "3\_amsbfam 33 +\_mathchardef \ntrianglerighteq "3\_amsbfam 34 +\_mathchardef \ntrianglelefteq "3\_amsbfam 35 +\_mathchardef \ntriangleleft "3\_amsbfam 36 +\_mathchardef \ntriangleright "3\_amsbfam 37 +\_mathchardef \nleftarrow "3\_amsbfam 38 +\_mathchardef \nrightarrow "3\_amsbfam 39 +\_mathchardef \nLeftarrow "3\_amsbfam 3A +\_mathchardef \nRightarrow "3\_amsbfam 3B +\_mathchardef \nLeftrightarrow "3\_amsbfam 3C +\_mathchardef \nleftrightarrow "3\_amsbfam 3D +\_mathchardef \divideontimes "2\_amsbfam 3E +\_mathchardef \varnothing "0\_amsbfam 3F +\_mathchardef \nexists "0\_amsbfam 40 +\_mathchardef \Finv "0\_amsbfam 60 +\_mathchardef \Game "0\_amsbfam 61 +\_mathchardef \mho "0\_amsbfam 66 +\_mathchardef \eth "0\_amsbfam 67 +\_mathchardef \eqsim "3\_amsbfam 68 +\_mathchardef \beth "0\_amsbfam 69 +\_mathchardef \gimel "0\_amsbfam 6A +\_mathchardef \daleth "0\_amsbfam 6B +\_mathchardef \lessdot "2\_amsbfam 6C +\_mathchardef \gtrdot "2\_amsbfam 6D +\_mathchardef \ltimes "2\_amsbfam 6E +\_mathchardef \rtimes "2\_amsbfam 6F +\_mathchardef \shortmid "3\_amsbfam 70 +\_mathchardef \shortparallel "3\_amsbfam 71 +\_mathchardef \smallsetminus "2\_amsbfam 72 +\_mathchardef \thicksim "3\_amsbfam 73 +\_mathchardef \thickapprox "3\_amsbfam 74 +\_mathchardef \approxeq "3\_amsbfam 75 +\_mathchardef \precapprox "3\_amsbfam 76 +\_mathchardef \succapprox "3\_amsbfam 77 +\_mathchardef \curvearrowleft "3\_amsbfam 78 +\_mathchardef \curvearrowright "3\_amsbfam 79 +\_mathchardef \digamma "0\_amsbfam 7A +\_mathchardef \varkappa "0\_amsbfam 7B +\_mathchardef \Bbbk "0\_amsbfam 7C +\_mathchardef \hslash "0\_amsbfam 7D +\_mathchardef \hbar "0\_amsbfam 7E +\_mathchardef \backepsilon "3\_amsbfam 7F + +\_let\circledplus\oplus +\_let\circledminus\ominus +\_let\circledtimes\otimes +\_let\circledslash\oslash +\_let\circleddot\odot + +% \not redefined: +% \not< becomes \_nless +% \not> becomes \_ngtr +% if \_notXXX is defined, \not\XXX becomes \_notXXX; +% if \_nXXX is defined, \not\XXX becomes \_nXXX; +% otherwise, \not\XXX is done in the usual way. + +\_mathchardef \_notchar "3236 + +\_protected\_def \_not#1{% + \_ifx #1<\_nless \_else + \_ifx #1>\_ngtr \_else + \_edef\_tmpn{\_xstring#1}% + \_ifcsname _not\tmpn\_endcsname \_csname _not\tmpn\_endcsname + \_else \_ifcsname _n\tmpn\_endcsname \_csname _n\tmpn\_endcsname + \_else \_mathrel{\_mathord{\_notchar}\_mathord{#1}}% + \_fi \_fi \_fi \_fi} +\_private + \nleq \ngeq \nless \ngtr \nprec \nsucc \nleqslant \ngeqslant \npreceq + \nsucceq \nleqq \ngeqq \nsim \ncong \nsubseteqq \nsupseteqq \nsubseteq + \nsupseteq \nparallel \nmid \nshortmid \nshortparallel \nvdash \nVdash + \nvDash \nVDash \ntrianglerighteq \ntrianglelefteq \ntriangleleft + \ntriangleright \nleftarrow \nrightarrow \nLeftarrow \nRightarrow + \nLeftrightarrow \nleftrightarrow \nexists ; +\_public \not ; + +\_endcode %--------------------------------------------------- + +\secc The character `_` as subscript prefix +%------------------------------------------ + +The category code of `_` remains as letter (11) and the mathocode of `_` is +`"8000`. It means that it is active character in math mode. It is defined as +subscript prefix. + +There is a problem: The `x_n` is tokenized as `x`, `_`, `n` and it works +without problem. But `\int_a^b` is tokenized as `\int_a`, `^`, `b`. The +control sequence `\int_a` isn't defined. We m,aut write `\int _a^b`. + +The lua code presented here solves this problem. But you cannot set our own +control sequence in the form `\_` or `\_` (where + is sequence of letters) because such contol sequences are +unacessible: proprocessor rewrites them. + + +\secc Mathcodes from plain\TeX/ +%------------------------------ + +All mathcodes are set to equal values as in plain\TeX/. + + +\secc Mathchardef from plain\TeX/ +%-------------------------------- + +All control sequences declared by `\mathchardef` are supposed (by default) +only for public usage. It means that they are delcared without `_` prefix. +If such sequences are used in internal \OpTeX/ macro then their internal +prefixed form is declared using `\_private` macro only if it is explicitly +needed. + + +\secc Math rm texts +%------------------ + +The math functions like log, sin, cos are declared in tha same way as in +plain\TeX/, but they are `\protected`. + + +\secc Plain\TeX/ macros +%---------------------- + +These macros are defined similarly as in plain\TeX. Only internal macro +names from plain\TeX/ with `@` character are we-written in more readable +form. The macro `\_setpt` is introduced. This sets `\_pt` dimen to 1 pt if +10 point font is used. In another cases the appropriate scaling is applied. + + +\secc Matchchardefs from AMS fonts +%--------------------------------- + +These macros are inspired from `ams-math.tex` file. + diff --git a/macros/luatex/optex/math-preload.opm b/macros/luatex/optex/math-preload.opm new file mode 100644 index 0000000000..70cc5e798f --- /dev/null +++ b/macros/luatex/optex/math-preload.opm @@ -0,0 +1,149 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \normalmath {Math fonts CM + AMS preloaded <2020-01-23>} + +% Only few text fonts are preloaded: + +\_def\_normalmath{% + \_loadmathfamily 0 cmr % CM Roman + \_loadmathfamily 1 cmmi % CM Math Italic + \_loadmathfamily 2 cmsy % CM Standard symbols + \_loadmathfamily 3 cmex % CM extra symbols + \_loadmathfamily 4 msam % AMS symbols A + \_loadmathfamily 5 msbm % AMS symbols B + \_loadmathfamily 6 rsfs % script + \_loadmathfamily 7 eufm % fractur + \_loadmathfamily 8 bfsans % sans serif bold + \_loadmathfamily 9 bisans % sans serif bold slanted (for vectors) + \_setmathfamily 10 \_tentt + \_setmathfamily 11 \_tenit + \_setmathdimens +} +\def\_boldmath{% + \_loadmathfamily 0 cmbx % CM Roman Bold Extended + \_loadmathfamily 1 cmmib % CM Math Italic Bold + \_loadmathfamily 2 cmbsy % CM Standard symbols Bold + \_loadmathfamily 3 cmexb % CM extra symbols Bold + \_loadmathfamily 4 msam % AMS symbols A (bold not available?) + \_loadmathfamily 5 msbm % AMS symbols B (bold not available?) + \_loadmathfamily 6 rsfs % script (bold not available?) + \_loadmathfamily 7 eufb % fractur bold + \_loadmathfamily 8 bbfsans % sans serif extra bold + \_loadmathfamily 9 bbisans % sans serif extra bold slanted (for vectors) + \_setmathfamily 10 \_tentt + \_setmathfamily 11 \_tenbi + \_setmathdimens +} +\count18=11 % families declared by \newfam are 12, 13, ... + +\_chardef\_bffam = 8 +\_chardef\_bifam = 9 +\_chardef\_ttfam = 10 +\_chardef\_itfam = 11 + +\_protected\_def \_bf {\_tryloadbf \_tenbf \_fam\_bffam} +\_protected\_def \_it {\_tryloadit \_tenit \_fam\_itfam} +\_protected\_def \_bi {\_tryloadbi \_tenbi \_fam\_bifam} +\_protected\_def \_tt {\_tryloadtt \_tentt \_fam\_ttfam} + +\_protected\_def \_mit {\_fam1 } +\_protected\_def \_cal {\_fam2 } +\_protected\_def \_bbchar {\_fam5 } % double stroked letters +\_protected\_def \_frak {\_fam7 } % fraktur +\_protected\_def \_script {\_fam6 } % more extensive script than \cal + +%% CM math fonts, optical sizes: + +\_regtfm cmmi 0 cmmi5 5.5 cmmi6 6.5 cmmi7 7.5 cmmi8 8.5 cmmi9 9.5 + cmmi10 11.1 cmmi12 * +\_regtfm cmmib 0 cmmib5 5.5 cmmib6 6.5 cmmib7 7.5 cmmib8 8.5 cmmib9 9.5 cmmib10 * +\_regtfm cmtex 0 cstex8 8.5 cstex9 9.5 cstex10 * +\_regtfm cmsy 0 cmsy5 5.5 cmsy6 6.5 cmsy7 7.5 cmsy8 8.5 cmsy9 9.5 cmsy10 * +\_regtfm cmbsy 0 cmbsy5 5.5 cmbsy6 6.5 cmbsy7 7.5 cmbsy8 8.5 cmbsy9 9.5 cmbsy10 * +\_regtfm cmex 0 cmex7 7.5 cmex8 8.5 cmex9 9.5 cmex10 * +\_regtfm cmexb 0 cmexb10 * + +\_regtfm cmr 0 cmr5 5.5 cmr6 6.5 cmr7 7.5 cmr8 8.5 cmr9 9.5 + cmr10 11.1 cmr12 15 cmr17 * +\_regtfm cmbx 0 cmbx5 5.5 cmbx6 6.5 cmbx7 7.5 cmbx8 8.5 cmbx9 9.5 + cmbx10 11.1 cmbx12 * +\_regtfm cmti 0 cmti7 7.5 cmti8 8.5 cmti9 9.5 cmti10 11.1 cmti12 * +\_regtfm cmtt 0 cmtt10 11.1 cmtt12 * + + +%% AMS math fonts, optical sizes: + +\_regtfm msam 0 msam5 5.5 msam6 6.5 msam7 7.5 msam8 8.5 msam9 9.5 msam10 * +\_regtfm msbm 0 msbm5 5.5 msbm6 6.5 msbm7 7.5 msbm8 8.5 msbm9 9.5 msbm10 * + +%% fraktur, rsfs, optical sizes: + +\_regtfm eufm 0 eufm5 5.5 eufm6 6.5 eufm7 7.5 eufm8 8.5 eufm9 9.5 eufm10 * +\_regtfm eufb 0 eufb5 5.5 eufb6 6.5 eufb7 7.5 eufb8 8.5 eufb9 9.5 eufb10 * +\_regtfm rsfs 0 rsfs5 6 rsfs7 8.5 rsfs10 * + +%% bf and bi sansserif math alternatives: + +\_regtfm bfsans 0 ecsx0500 5.5 ecsx0600 6.5 ecsx0700 7.5 ecsx0800 + 8.5 ecsx0900 9.5 ecsx1000 11.1 ecsx1200 * +\_regtfm bisans 0 ecso0500 5.5 ecso0600 6.5 ecso0700 7.5 ecso0800 + 8.5 ecso0900 9.5 ecso1000 11.1 ecso1200 * +\_regtfm bbfsans 0 ecsx0500 5.5 ecsx0600 6.5 ecsx0700 7.5 ecsx0800 + 8.5 ecsx0900 9.5 ecsx1000 11.1 ecsx1200 * +\_regtfm bbisans 0 ecso0500 5.5 ecso0600 6.5 ecso0700 7.5 ecso0800 + 8.5 ecso0900 9.5 ecso1000 11.1 ecso1200 * + +%% macros: + +\_def\_corrmsizes{\_ptmunit=1\_ptunit\_relax} % for corrections of sizes in diferent fomts + +\_def\_loadmathfamily #1 #2 {\_chardef\_tmp#1\_corrmsizes + \_edef\_optsizesave{\_the\_optsize}% + \_optsize=\_sizemtext \_font\_mF=\_whichtfm{#2} at\_optsize \_textfont#1=\_mF + \_optsize=\_sizemscript \_font\_mF=\_whichtfm{#2} at\_optsize \_scriptfont#1=\_mF + \_optsize=\_sizemsscript \_font\_mF=\_whichtfm{#2} at\_optsize \_scriptscriptfont#1=\_mF + \_optsize=\_optsizesave \_relax +} +\_def\_setmathfamily #1 #2{\_let\_mF=#2\_chardef\_tmp#1\_corrmsizes + \_edef\_optsizesave{\_the\_optsize}% + \_optsize=\_sizemtext \_fontlet#2=#2 at\_optsize \_textfont#1=#2% + \_optsize=\_sizemscript \_fontlet#2=#2 at\_optsize \_scriptfont#1=#2% + \_optsize=\_sizemsscript \_fontlet#2=#2 at\_optsize \_scriptscriptfont#1=#2% + \_optsize=\_optsizesave \_let#2=\_mF +} +\_def\_setmathdimens{% PlainTeX sets these dimens for 10pt size only: + \_delimitershortfall=0.5\_fontdimen6\_textfont3 + \_nulldelimiterspace=0.12\_fontdimen6\_textfont3 + \_scriptspace=0.05\_fontdimen6\_textfont3 + \_skewchar\_textfont1=127 \_skewchar\_scriptfont1=127 + \_skewchar\_scriptscriptfont1=127 + \_skewchar\_textfont2=48 \_skewchar\_scriptfont2=48 + \_skewchar\_scriptscriptfont2=48 +} + +%% \setmathsizes: + +\_def\_setmathsizes[#1/#2/#3]{% + \_def\_sizemtext{#1\_ptmunit}\_def\_sizemscript{#2\_ptmunit}% + \_def\_sizemsscript{#3\_ptmunit}% +} +\_newdimen\_ptunit \_ptunit=1pt +\_newdimen\_ptmunit \_ptmunit=1\_ptunit + +\_setmathsizes[10/7/5]\_normalmath + +\_public \normalmath \boldmath \setmathsizes + \bf \it \bi \tt \mit \cal \bbchar \frak \script \ptunit ; + +\_endcode %--------------------------------------------------- + +The Computer Modern and AMS fonts are preloaded here in classical math-fam +concept, where each math family includes three fonts with max 256 characters. + +On the other hand, when `\fontfam` macro is used in the document then text +font family and appropriate math family is loaded with unicoded fonts, i.e. +unicoded math is used. + +The code here is inspired by `ams-math.tex file`. + + \ No newline at end of file diff --git a/macros/luatex/optex/opmac-rest.opm b/macros/luatex/optex/opmac-rest.opm new file mode 100644 index 0000000000..1e8a3415c5 --- /dev/null +++ b/macros/luatex/optex/opmac-rest.opm @@ -0,0 +1,1420 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +% I plan to re-implement all macros from this file. Something is done already. + +% OPmac +%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Petr Olsak, 2012 -- 2019 + +%% The history of versions is at the end of this file, after \endpinput + +\ifx\OPmacversion\undefined \else \endinput \fi +\def\OPmacversion{Jul. 2019} +\immediate\write16{This is OPmac (Olsak's Plain macros), version <\OPmacversion>} + +%%%%%%%%%%%%%% Basic macros, sec. 3.1 in opmac-d.pdf + +\newcount\tmpnum % auxiliary count +\newdimen\tmpdim % auxiliary dimen + +\def\opwarning#1{\immediate\write16{l.\the\inputlineno\space OPmac WARNING: #1.}} + +\long\def\addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}} + +\def\protectlist{} +\def\addprotect#1{\addto\protectlist{\doprotect#1}} +\addprotect~ + +\ifx\pdfextension\undefined \else + \let\pdfoutput=\outputmode \def\pdfcolorstackinit{\pdffeedback colorstackinit}\fi + +\newif\ifpdftex \pdftextrue +\ifx\pdfoutput\undefined \pdftexfalse \else \ifnum\pdfoutput=0 \pdftexfalse \fi \fi +\ifx\XeTeXversion\undefined \else \pdftextrue \fi + +\def\sdef#1{\expandafter\def\csname#1\endcsname} +\def\sxdef#1{\expandafter\xdef\csname#1\endcsname} +\def\slet#1#2{\expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname} + +\def\adef#1{\catcode`#1=13 \begingroup \lccode`\~=`#1\lowercase{\endgroup\def~}} + +\def\isdefined #1#2{\expandafter\ifx \csname#1\endcsname \relax + \csname iffalse\expandafter\endcsname + \else + \csname iftrue\expandafter\endcsname + \fi +} +\long\def\isinlist#1#2#3{\begingroup \long\def\tmp##1#2##2\end{\def\tmp{##2}% + \ifx\tmp\empty \endgroup \csname iffalse\expandafter\endcsname \else + \endgroup \csname iftrue\expandafter\endcsname \fi}% end of \def\tmp + \expandafter\tmp#1\endlistsep#2\end +} +\long\def\isnextchar#1#2#3{\begingroup\toks0={\endgroup#2}\toks1={\endgroup#3}% + \let\tmp=#1\futurelet\next\isnextcharA +} +\def\isnextcharA{\the\toks\ifx\tmp\next0\else1\fi\space} + +\def\eoldef#1{\def#1{\begingroup \catcode`\^^M=12 \eoldefA#1}% + \expandafter\def\csname\string#1:M\endcsname} +{\catcode`\^^M=12 \gdef\eoldefA#1#2^^M{\endgroup\csname\string#1:M\endcsname{#2}}} + +\def\maybebreak{\afterassignment\maybebreakA\tmpdim=} +\def\maybebreakA{\ifvmode \vskip0pt plus\tmpdim \penalty-130 \vskip0pt plus-\tmpdim + \else \hskip0pt plus\tmpdim \penalty-130 \hskip0pt plus-\tmpdim \fi \relax +} +%\long\def\uv#1{\clqq#1\crqq} +\let\\=\undefined +{\lccode`\?=`\% \lowercase{\gdef\percent{?}}} +{\lccode`\?=`\\ \lowercase{\gdef\bslash{?}}} +\def\,{\relax\ifmmode \mskip\thinmuskip \else \thinspace \fi} +\addprotect\percent \addprotect\bslash \addprotect\, \addprotect\exfont + +\bgroup \catcode`!=3 \catcode`?=3 +\gdef\replacestrings#1#2{\long\def\replacestringsA##1#1{\def\tmpb{##1}\replacestringsB}% + \long\def\replacestringsB##1#1{\ifx!##1\relax \else\addto\tmpb{#2##1}% + \expandafter\replacestringsB\fi}% improved version inspired + \expandafter\replacestringsA\tmpb?#1!#1% from pysyntax.tex by Petr Krajnik + \long\def\replacestringsA##1?{\def\tmpb{##1}}\expandafter\replacestringsA\tmpb +} +\egroup + +%%%%%%%%%%%%%% Global parameters, sec. 3.2 in opmac-d.pdf + +\widowpenalty=10000 +\clubpenalty=10000 +\showboxdepth=7 +\showboxbreadth=30 + +\newdimen\iindent \iindent=\parindent + % indentation of items, TOC, captions, list of bib. references +\newdimen\ttindent \ttindent=\parindent + % indentation in \begtt...\endtt and \verbinput + +\def\ttskip{\medskip} % space above and below \begtt, \verbinput +\mathchardef\ttpenalty=100 % penalty between lines in \begtt, \verbinput +\def\tthook{} % hook in \begtt, \verbinput +\def\intthook{} % hook in in-text verbatim +\def\ptthook{} % hook in \begtt, \verbinput for post-processing + +\def\iiskip{\medskip} % space above and below \begitems...\enditems +\def\itemhook{} % hook in \startitem +\def\bibskip{\smallskip} % space between bibitems + +\def\tabstrut{\strut} % strut in the \table +\def\tabiteml{\enspace} % left material before each \table item +\def\tabitemr{\enspace} % right material after each \table item +\def\vvkern{1pt} % space between vertical lines +\def\hhkern{1pt} % space between horizontal lines + +\def\multiskip{\medskip} % space above and below \begmulti...\endmulti +\newdimen\colsep \colsep=2em % space between columns + +\newdimen\mnoteindent \mnoteindent=10pt % ditance between mnote and text +\newdimen\mnotesize \mnotesize=20mm % the width of the mnote paragraph +\newskip\titskip \titskip=4em % \vglue above title printed by \tit + +\def\picdir{} % the directory with picture files +\def\bibtexhook{} % hook in \usebibtex and \usebbl macros +\def\chaphook{} % hook in \chap +\def\sechook{} % hook in \sec +\def\secchook{} % hook in \secc +\def\cnvhook{} % hook before conversion of outlines +\def\prepghook{} % hook before page building in \output routine +\def\pghook{} % next hook in \output routine +\def\toclinehook{} % hook in \tocline +\def\fnotehook{} % hook in \fnote +\def\mnotehook{} % hook in \mnote +\def\captionhook#1{} % hook in \caption (#1 is "t" or "f") + +%%%%%%%%%%%%%% OPmac, CSplain and LaTeX logos, sec. 3.3 in opmac-d.pdf + + +%%%%%%%%%%%%%% Sizes of fonts and \baselineskip, sec. 3.4 in opmac-d.pdf + + +%%%%%%%%%%%%%% Multilingual support, sec. 3.5 in opmac-d.pdf + +\def\mtext#1{\csname mt:#1:\csname _lan:\the\language\endcsname\endcsname} + +\sdef{mt:chap:en}{Chapter} \sdef{mt:chap:cs}{Kapitola} \sdef{mt:chap:sk}{Kapitola} +\sdef{mt:t:en}{Table} \sdef{mt:t:cs}{Tabulka} \sdef{mt:t:sk}{Tabu\v lka} +\sdef{mt:f:en}{Figure} \sdef{mt:f:cs}{Obr\'azek} \sdef{mt:f:sk}{Obr\'azok} +\sdef{mt:subj:en}{Subject} \sdef{mt:subj:cs}{V\v{e}c} \sdef{mt:subj:sk}{Vec} + +%%%%%%%%%%%%%% REF file, sec 3.6 in opmac-d.pdf + +\newwrite\reffile +\newread\testin + +\def\wrefrelax#1#2{} +\let\wref=\wrefrelax + +\def\inputref{ + \openin\testin=\jobname.ref + \ifeof\testin \else + \closein\testin + \input \jobname.ref + \fnotenum=0 \mnotenum=0 + \openrefA{\string\inputref}% + \fi +} +\def\openref{% + \ifx\wref\wrefrelax \openrefA{\string\openref}\fi + \gdef\openref{}% +} +\def\openrefA#1{% + \immediate\openout\reffile=\jobname.ref + \gdef\wref##1##2{\write\reffile{\string##1##2}}% + \immediate\write\reffile {\percent\percent\space OPmac - REF file (#1)}% + \immediate\wref\Xrefversion{{\REFversion}}% +} +\def\REFversion{2} +\def\Xrefversion#1{\ifnum#1=\REFversion\relax \else \endinput \fi} + +%%%%%%%%%%%%%% \label, \ref, \pgref, sec. 3.7 in opmac-d.pdf + +\def\label[#1]{\isdefined{l0:#1}% + \iftrue \opwarning{duplicated label [#1], ignored}\else \xdef\lastlabel{#1}\fi + \ignorespaces} + +\def\wlabel#1{% + \ifx\lastlabel\undefined \else + \dest[ref:\lastlabel]% + {\protectlist\edef\tmp{\wref\Xlabel{{\lastlabel}{#1}}}\expandafter}\tmp + \sxdef{lab:\lastlabel}{#1}\sxdef{l0:\lastlabel}{}% + \global\let\lastlabel=\undefined + \fi +} +\def\ref[#1]{\isdefined{lab:#1}% + \iftrue \reflink[#1]{\csname lab:#1\endcsname}% + \else ??\opwarning{label [#1] unknown. Try to TeX me again}\openref + \fi +} +\def\pgref[#1]{\isdefined{pgref:#1}% + \iftrue \pglink{\csname pgref:#1\endcsname}% + \else ??\opwarning{pg-label [#1] unknown. Try to TeX me again}\openref + \fi +} +\def\Xlabel#1#2{\sdef{lab:#1}{#2}\sxdef{pgref:#1}{\the\lastpage}} + +%%%%%%%%%%%%%% Chapters, sections, subsections -- sec. 3.8 in opmac-d.pdf + +\def\printchap#1{\vfill\supereject + {\chapfont \noindent \mtext{chap} \dotocnum{\thetocnum}\par + \nobreak\smallskip\noindent #1\nbpar}\mark{}% + \nobreak \remskip\bigskipamount \firstnoindent +} +\def\printsec#1{\par \norempenalty-400 \bigskip + {\secfont \noindent \dotocnum{\thetocnum\quad}#1\nbpar}\insertmark{#1}% + \nobreak \remskip\medskipamount \firstnoindent +} +\def\printsecc#1{\par \norempenalty-200 \medskip + {\seccfont \noindent \dotocnum{\thetocnum\quad}#1\nbpar}% + \nobreak \remskip\medskipamount \firstnoindent +} +\eoldef\tit#1{\vglue\titskip + {\leftskip=0pt plus1fill \rightskip=\leftskip + \titfont \noindent #1\par}% + \nobreak\bigskip +} +\def\titfont{\scalemain\boldify\typoscale[\magstep4/\magstep4]} +\def\chapfont{\scalemain\boldify\typoscale[\magstep3/\magstep3]} +\def\secfont{\scalemain\boldify\typoscale[\magstep2/\magstep2]} +\def\seccfont{\scalemain\boldify\typoscale[\magstep1/\magstep1]} + +\newcount\chapnum \newcount\secnum \newcount\seccnum \newcount\nonumnum +\newif\ifnotoc \notocfalse \def\notoc{\global\notoctrue} +\newif\ifnonum \nonumfalse \def\nonum{\global\nonumtrue} + +\eoldef\chap#1{\ifnonum\else \global\advance\chapnum by1 \fi + \chaphook {\globaldefs=1 \secnum=0 \seccnum=0 \tnum=0 \fnum=0 \dnum=0}\relax + \edef\thechapnum{\the\chapnum}\let\thetocnum=\thechapnum + \edef\thesecnum{\othe\chapnum.\the\secnum}% + \def\dotocnumafter{\wtotoc0\bfshape{#1}}% + \printchap{#1}\resetnonumnotoc +} +\eoldef\sec#1{\ifnonum\else \global\advance\secnum by1 \fi + \sechook {\globaldefs=1 \seccnum=0 \tnum=0 \fnum=0 \dnum=0}\relax + \edef\thesecnum{\othe\chapnum.\the\secnum}\let\thetocnum=\thesecnum + \def\dotocnumafter{\wtotoc1\rm{#1}}% + \printsec{#1}\resetnonumnotoc +} +\eoldef\secc#1{\ifnonum\else \global\advance\seccnum by1 \fi + \secchook {}\relax + \edef\theseccnum{\othe\chapnum.\the\secnum.\the\seccnum}\let\thetocnum=\theseccnum + \def\dotocnumafter{\wtotoc2\rm{#1}}% + \printsecc{#1}\resetnonumnotoc +} +\def\wtotoc#1#2#3{% #1 = level, #2 = info, #3 = titletext + \ifnotoc\else + \def\act{\wref{\Xtoc{#1}{\noexpand#2}}}% + \expandafter\act\expandafter{\expandafter{\thetocnum}{#3}{\the\pageno}}% + \fi +} +\def\wcontents#1#2{% #1 = sequence to REF, #2 = titletext + \ifnotoc\else + \expandafter\wref\expandafter#1\expandafter + {\expandafter{\thetocnum}{#2}{\the\pageno}}% + \fi +} +\def\dotocnum#1{% + \leavevmode + {\ifnonum \global\advance\nonumnum by1 \edef\thetocnum{!\the\nonumnum}\fi + \wlabel\thetocnum \dest[toc:\tocilabel.\thetocnum]% + \dotocnumafter}\ifnonum\else#1\fi + \global\let\dotocnumafter=\relax +} +\def\resetnonumnotoc{\global\notocfalse \global\nonumfalse + \ifx\dotocnumafter\relax \else + \opwarning{\noexpand\dotocnum unused in printchap/printsec/printsecc}\fi +} +\def\insertmark#1{\toks0={#1}\mark{{\ifnonum\else\thetocnum\fi} {\the\toks0}}} + +\newskip\remskipamount +\def\remskip{\afterassignment\remskipA \global\remskipamount} +\def\remskipA{\vskip\remskipamount \penalty11333 } +\def\norempenalty{\ifnum\lastpenalty=11333 + \vskip-\remskipamount \tmpnum=\else \removelastskip \penalty \fi} + +\def\othe#1.{\ifnum#1>0 \the#1.\fi} +\def\thechapnum{} \def\thesecnum{} \def\theseccnum{} + +\def\afternoindent{\global\everypar={\wipeepar\setbox7=\lastbox}} +\def\wipeepar{\global\everypar={}} +\let\firstnoindent=\afternoindent +\def\nbpar{{\interlinepenalty=10000\endgraf}} +\def\nl{\hfil\break} + +%%%%%%%%%%%%%% Captions, equations -- sec. 3.9 in opmac-d.pdf + +\newcount\tnum \newcount\fnum \newcount\dnum + +\def\thetnum{\thesecnum.\the\tnum} +\def\thefnum{\thesecnum.\the\fnum} +\def\thednum{(\the\dnum)} + +\def\caption/#1 {\isdefined{#1num}% + \iftrue \global\advance \csname #1num\endcsname by1 + \else \opwarning{Unknown caption /#1}% + \fi + \bgroup + \leftskip=\iindent plus1fil + \rightskip=\iindent plus-1fil + \parfillskip=0pt plus2fil + \def\par{\nbpar\egroup}% + \captionhook{#1}\noindent + \wlabel{\csname the#1num\endcsname}% + \printcaption{\mtext{#1}}{\csname the#1num\endcsname}% +} +\def\printcaption#1#2{{\bf#1 #2}\enspace} + +\expandafter\def\expandafter\endinsert\expandafter{\expandafter\par\endinsert} + +\def\eqmark{\global\advance\dnum by1 + \ifinner\else\eqno \fi + \wlabel\thednum \thednum +} + +%%%%%%%%%%%%%% Items -- sec. 3.10 in opmac-d.pdf + +\newcount\itemnum \itemnum=0 + +\def\begitems{\par\iiskip\bgroup + \itemnum=0 \adef*{\startitem} + \advance\leftskip by\iindent + \let\printitem=\normalitem +} +\def\enditems{\par\egroup\iiskip} + +\def\startitem{\par \advance\itemnum by1 + \itemhook \noindent\llap{\printitem}\ignorespaces} +\def\normalitem{$\bullet$\enspace} + +\def\style#1{\expandafter\let\expandafter\printitem\csname item:#1\endcsname + \ifx\printitem\relax \let\printitem=\normalitem \fi +} +\sdef{item:o}{\raise.4ex\hbox{$\scriptscriptstyle\bullet$} } +\sdef{item:-}{- } +\sdef{item:n}{\the\itemnum. } +\sdef{item:N}{\the\itemnum) } +\sdef{item:i}{(\romannumeral\itemnum) } +\sdef{item:I}{\uppercase\expandafter{\romannumeral\itemnum}\kern.5em} +\sdef{item:a}{\athe\itemnum) } +\sdef{item:A}{\uppercase\expandafter{\athe\itemnum}) } +\sdef{item:x}{\raise.3ex\fullrectangle{.6ex} } +\sdef{item:X}{\raise.2ex\fullrectangle{1ex}\kern.5em} + +\def\fullrectangle#1{\hbox{\vrule height#1 width#1}} + +\def\athe#1{\ifcase#1?\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or + m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else ?\fi +} + +%%%%%%%%%%%%%% TOC -- sec. 3.11 in opmac-d.pdf + +\def\_toclist{} \newif\ifischap \ischapfalse + +\def\Xtoc#1#2#3#4#5{\ifnum#1=0 \ischaptrue\fi \addto\_toclist{\_tocline{#1}{#2}{#3}{#4}{#5}}} +\def\Xchap{\Xtoc0\bfshape} \def\Xsec{\Xtoc1\rm} \def\Xsecc{\Xtoc2\rm} + +\def\_tocline#1#2#3#4#5{{\leftskip=#1\iindent \rightskip=2\iindent + \ifischap\advance\leftskip by\iindent\fi + \ifnum#1>1 \advance\leftskip by\iindent\fi + \toclinehook \noindent\llap{#2\toclink{#3}\enspace}% + {#2#4}\nobreak\tocdotfill\pglink{#5}\nobreak\hskip-2\iindent\null\par}} +\def\tocdotfill{\leaders\hbox to.8em{\hss.\hss}\hskip 1em plus1fill\relax} + +\def\maketoc{\par \ifx\_toclist\empty + \opwarning{\noexpand\maketoc -- data unavailable, TeX me again}\openref + \else \_toclist \fi} + +\def\toclinkA#1{\def\tmp##1!##2\end{\if^##1^\kern.8em \else##1\fi}\tmp#1!\end} + +%%%%%%%%%%%%%% Index -- sec. 3.12 on opmac-d.pdf + +\def\iindex#1{\openref\wref\Xindex{{#1}{\the\pageno}}} + +\def\ii #1 {\leavevmode\def\tmp{#1}\iiA #1,,} + +\def\iiA #1,{\if$#1$\else\def\tmpa{#1}% + \ifx\tmpa\iiatsign \expandafter\iiB\tmp,,\else\iindex{#1}\fi + \expandafter\iiA\fi} +\def\iiatsign{@} + +\def\iiB #1,{\if$#1$\else \iiC#1/\relax \expandafter\iiB\fi} +\def\iiC #1/#2\relax{\if$#2$\else\iindex{#2#1}\fi} + +\def\iid #1 {\leavevmode\iindex{#1}#1\futurelet\tmp\iiD} +\def\iiD{\ifx\tmp,\else\ifx\tmp.\else\space\fi\fi} + +\def\Xindex{\Xindexg,} +\def\Xindexg#1#2#3{\bgroup \def~{ }% #1=prefix, #2=index-item, #3=pageno + \isdefined{#1#2}\iftrue + \ifx^#3^\else + \expandafter\firstdata \csname#1#2\endcsname \XindexA + \ifnum#3=\tmpa % \ii on the same page + \else + \tmpnum=#3 \advance\tmpnum by\pgfolioB-1 + \expandafter\seconddata \csname#1#2\endcsname \XindexB + \ifx\tmp\empty + \sxdef{#1#2}{{#3/+}{\pgfolioA{#3}}} % previous item: empty page + \else + \if\tmpb+% state: the pagelist ends by a pagenumber + \ifnum\tmpnum=\tmpa % the consecutive page + \sxdef{#1#2}{{#3/-}{\tmp\iiendash}} + \else % the pages drop + \sxdef{#1#2}{{#3/+}{\tmp, \pgfolioA{#3}}} + \fi + \else % state: the pagelist ends by -- + \ifnum\tmpnum=\tmpa % the consecutive page + \sxdef{#1#2}{{#3/-}{\tmp}} + \else % the pages drop + \sxdef{#1#2}{{#3/+}{\tmp\pgfolioA{\tmpa}, \pgfolioA{#3}}} + \fi\fi\fi\fi\fi + \else % first occurrence of the index item #2 + \ifx^#3^\sxdef{#1#2}{{0/+}{}}\else \sxdef{#1#2}{{#3/+}{\pgfolioA{#3}}}\fi + \ifx,#1 + \global \expandafter\addto \expandafter\iilist \csname#1#2\endcsname + \else + \isdefined{iilist:#1}\iftrue + \global\expandafter\addto \csname iilist:#1\expandafter\endcsname \csname#1#2\endcsname + \else \sxdef{iilist:#1}{\expandafter\noexpand \csname#1#2\endcsname} + \fi\fi\fi + \egroup +} +\def\iilist{} \def\iiendash{--} + +\def\firstdata#1#2{\expandafter\expandafter\expandafter #2\expandafter\firstdataA#1} +\def\firstdataA#1#2{#1&} +\def\seconddata#1#2{\expandafter\expandafter\expandafter #2\expandafter\seconddataA#1} +\def\seconddataA#1#2{#2&} + +\def\XindexA#1/#2&{\def\tmpa{#1}\let\tmpb=#2} +\def\XindexB#1&{\def\tmp{#1}} + +\def\pgfolioA#1{\ifnum#1<0 \romannumeral-\fi#1} +\def\pgfolioB{\ifnum\tmpnum<0-\fi} + +\def\makeindex{\par + \ifx\iilist\empty \opwarning{index data-buffer is empty. TeX me again} + \else + \bgroup + \setprimarysorting + \def\act##1{\ifx##1\relax \else + \firstdata##1\XindexA \seconddata##1\XindexB + \if\tmpb+% + \preparesorting##1% converted item by sorting data in \tmpb + \xdef##1{{\tmpb}{\tmp}} + \else + \preparesorting##1% converted item by sorting data in \tmpb + \xdef##1{{\tmpb}{\tmp\pgfolioA{\tmpa}}} + \fi + \expandafter\act\fi} + \expandafter \act \iilist \relax + \egroup + \dosorting % sorting is in progress + \bgroup + \rightskip=0pt plus1fil \exhyphenpenalty=10000 \leftskip=\iindent + \def\act##1{\ifx##1\relax \else \prepii##1% + \seconddata##1\printiipages \expandafter\act \fi} + \expandafter \act \iilist \relax + \egroup + \fi +} +\def\printiipages#1&{ #1\par} + +\def\prepii #1{\isinlist \iispeclist #1\iftrue + \expandafter\expandafter\expandafter \printii \csname\string#1\endcsname&% + \else \expandafter\prepiiA\string #1&% + \fi +} +\def\prepiiA #1#2#3&{\printii#3&} + +\def\iis #1 #2{\bgroup \def~{ }% + \global\expandafter\addto\expandafter\iispeclist\csname,#1\endcsname + \global\sdef{\expandafter\string\csname,#1\endcsname}{#2}% + \egroup \ignorespaces +} +\def\iispeclist{} + +\def\printii #1&{\gdef\currii{#1}\noindent\everyii + \hskip-\iindent \ignorespaces\printiiA#1//} +\def\printiiA #1/{\if^#1^\let\previi=\currii \else + \expandafter\scanprevii\previi/&\def\tmpb{#1}\edef\tmpb{\meaning\tmpb}% + \ifx\tmpa\tmpb \iiemdash \else#1 \gdef\previi{}\fi + \expandafter\printiiA\fi +} +\def\iiemdash{\kern.1em---\space} +\def\everyii{} + +\def\scanprevii#1/#2&{\def\previi{#2}\def\tmpa{#1}\edef\tmpa{\meaning\tmpa}} +\def\previi{} % previous index item + +%%%%%%%%%%%%%% Sorting -- sec. 3.13 in opmac-d.pdf + +\def\sortingdata{% + /,{ },-,&,@,% + aA\"a\"A\'a\'A,% + bB,% + cC,% + \v c\v C,% + dD\v d\v D,% + eE\'e\'E\v e\v E,% + fF,% + gG,% + hH,% + ^^T^^U^^V,% ch Ch CH + iI\'i\'I,% + jJ,% + kK,% + lL\'l\'L\v l\v L,% + mM,% + nN\v n\v N,% + oO\"o\"O\'o\'O\^o\^O,% + pP,% + qQ,% + rR\'r\'R,% + \v r\v R,% + sS,% + \v s\v S,% + tT\v t\v T,% + uU\"u\"U\'u\'U\r u\r U,% + vV,% + wW,% + xX,% + yY\'y\'Y,% + zZ,% + \v z\v Z,% + 0,1,2,3,4,5,6,7,8,9,'.% +} +\def\setignoredchars{\setlccodes ,.;.?.!.:.'.".|.(.).[.].<.>.=.+.{}{}} +\def\specsortingdatacs {ch:^^T Ch:^^U CH:^^V} +\def\specsortingdatask {ch:^^T Ch:^^U CH:^^V} % DZ etc. are sorted normally + +\def\setprimarysorting {% + \isdefined{sortingdata\csname _lan:\the\language\endcsname}\iftrue + \expandafter \let\expandafter\sortingdata + \csname sortingdata\csname _lan:\the\language\endcsname\endcsname + \xdef\sortingmessage{using \string\sortingdata\csname _lan:\the\language\endcsname}% + \else + \xdef\sortingmessage{using internal \string\sortingdata}% + \ifx\r\undefined +% \opwarning{\noexpand\csaccents is unused, falling back to ASCII sorting}% + \global\let\asciisorting=t% + \fi\fi + \ifx\asciisorting\undefined + \xdef\sortingdata{\sortingdata}% expand sorting data now + \isdefined{specsortingdata\csname _lan:\the\language\endcsname}\iftrue + \xdef\specsortingdata{\csname specsortingdata\csname _lan:\the\language\endcsname + \endcsname\space}% + \expandafter\setprimarysortingA \meaning\specsortingdata\relax + \else \gdef\specsortingdata{}\fi + \else + \gdef\sortingdata{.}\gdef\specsortingdata{}\gdef\sortingmessage{ASCII}% + \fi + \def\act##1{\ifx##1.\else + \ifx##1,\advance\tmpnum by1 + \else \lccode`##1=\tmpnum \fi + \expandafter \act \fi}% + \tmpnum=60 \expandafter \act\sortingdata \setignoredchars +} +\def\setprimarysortingA#1->#2\relax{\gdef\specsortingdata{#2}} +\def\sortingmessage{ASCII default} + +\def\setsecondarysorting {\def\act##1{\ifx##1.\else + \ifx##1,\else \advance\tmpnum by1 \lccode`##1=\tmpnum \fi + \expandafter \act \fi}% + \tmpnum=60 \expandafter \act\sortingdata \setignoredchars +} + +\def\preparesorting#1{\expandafter\preparesortingA\string#1&} +\gdef\preparesortingA#1#2#3&{\xdef\tmpb{#3}% + \expandafter\preparesortingB\specsortingdata.:{} + \lowercase\expandafter{\expandafter\gdef\expandafter\tmpb\expandafter{\tmpb}}% + \replacestrings{.}{}% +} +\def\preparesortingB#1#2:#3 {\ifx.#1\else \replacestrings{#1#2}{#3}\expandafter\preparesortingB\fi} + +\newif \ifAleB + +\def\isAleB #1#2{% + \edef\tmp{\firstdata#1\empty\relax\firstdata#2\empty\relax \noexpand#1\noexpand#2}% + \expandafter \testAleB \tmp +} +\def\testAleB #1#2\relax #3#4\relax #5#6{% + \if #1#3\if #1&\testAleBsecondary #5#6% + \else \testAleB #2\relax #4\relax #5#6% + \fi + \else \ifnum `#1<`#3 \AleBtrue \else \AleBfalse \fi + \fi +} +\def\testAleBsecondary#1#2{% + \bgroup + \setsecondarysorting + \preparesorting#1\let\tmpa=\tmpb \preparesorting#2% + \edef\tmp{\tmpa0\relax\tmpb1\relax}% + \expandafter\testAleBsecondaryX \tmp + \egroup +} +\def\testAleBsecondaryX #1#2\relax #3#4\relax {% + \if #1#3\testAleBsecondaryX #2\relax #4\relax + \else \ifnum `#1<`#3 \global\AleBtrue \else \global \AleBfalse \fi + \fi +} +\def\dosorting{% + \message{Opmac: Sorting index (\sortingmessage)...}% + \def\act##1{\ifx##1\relax\else \addto\iilist{##1,}% + \expandafter\act\fi}% + \edef\iilist{\expandafter}\expandafter\act \iilist\relax + \edef\iilist{\expandafter}\expandafter\mergesort \iilist \end,\end +} + +\def\mergesort #1#2,#3{% by Miroslav Olsak + \ifx,#1% % prazdna-skupina,neco, (#2=neco #3=pokracovani) + \addto\iilist{#2,}% % dvojice skupin vyresena + \sortreturn{\fif\mergesort#3}% % \mergesort pokracovani + \fi + \ifx,#3% % neco,prazna-skupina, (#1#2=neco #3=,) + \addto\iilist{#1#2,}% % dvojice skupin vyresena + \sortreturn{\fif\mergesort}% % \mergesort dalsi + \fi + \ifx\end#3% % neco,konec (#1#2=neco) + \ifx\empty\iilist % neco=kompletni setrideny seznam + \def\iilist{#1#2}% + \sortreturn{\fif\fif\gobbletoend}% % koncim + \else % neco=posledni skupina nebo \end + \sortreturn{\fif\fif % spojim \indexbuffer+necoa cele znova + \edef\iilist{\expandafter}\expandafter\mergesort\iilist#1#2,#3}% + \fi\fi % zatriduji: p1+neco1,p2+neco2, (#1#2=p1+neco1 #3=p2) + \isAleB #1#3\ifAleB % p1p2 + \addto\iilist{#3}% % p2 do bufferu + \sortreturn{\fif\mergesort#1#2,}% % \mergesort p1+neco1,neco2, + \fi + \relax % zarazka, na ktere se zastavi \sortreturn +} +\def\sortreturn#1#2\fi\relax{#1} \def\fif{\fi} +\def\gobbletoend #1\end{} + +%%%%%%%%%%%%%% \begmulti ... \endmulti TBN p. 244, 245 -- sec. 3.14 in opmac-d.pdf + +\newcount\mullines +\def\corrsize #1{%% #1 := #1 + \splittopskip - \topskip + \advance #1 by \splittopskip \advance #1 by-\topskip +} +\def\begmulti #1 {\par\bgroup\wipeepar\multiskip\penalty0 \def\Ncols{#1} + \setbox6=\vbox\bgroup\penalty0 + %% \hsize := Sirka sloupce = (\hsize+\colsep) / n - \colsep + \advance\hsize by\colsep + \divide\hsize by\Ncols \advance\hsize by-\colsep + \mullines=0 + \def\par{\ifhmode\endgraf\global\advance\mullines by\prevgraf\fi}% +} +\def\endmulti{\vskip-\prevdepth\vfil + \expandafter\egroup\expandafter\baselineskip\the\baselineskip\relax + \dimen0=.8\maxdimen \tmpnum=\dimen0 \divide\tmpnum by\baselineskip + \splittopskip=\baselineskip + \setbox1=\vsplit6 to0pt + %% \dimen1 := the free space on the page + \ifdim\pagegoal=\maxdimen \dimen1=\vsize \corrsize{\dimen1} + \else \dimen1=\pagegoal \advance\dimen1 by-\pagetotal \fi + \ifdim \dimen1<2\baselineskip + \vfil\break \dimen1=\vsize \corrsize{\dimen1} \fi + \ifnum\mullines<\tmpnum \dimen0=\ht6 \else \dimen0=.8\maxdimen \fi + \divide\dimen0 by\Ncols \relax + %% split the material to more pages? + \ifdim \dimen0>\dimen1 \splitpart + \else \balancecolumns \fi % only balancing + \multiskip\egroup +} +\def\makecolumns{\bgroup % full page, destination height: \dimen1 + \vbadness=20000 \setbox1=\hbox{}\tmpnum=0 + \loop \ifnum\Ncols>\tmpnum + \advance\tmpnum by1 + \setbox1=\hbox{\unhbox1 \vsplit6 to\dimen1 \hss} + \repeat + \hbox{}\nobreak\vskip-\splittopskip \nointerlineskip + \line{\unhbox1\unskip} + \dimen0=\dimen1 \divide\dimen0 by\baselineskip \multiply\dimen0 by\Ncols + \global\advance\mullines by-\dimen0 + \egroup +} +\def\splitpart{% + \makecolumns % full page + \vskip 0pt plus 1fil minus\baselineskip \break + \ifnum\mullines<\tmpnum \dimen0=\ht6 \else \dimen0=.8\maxdimen \fi + \divide\dimen0 by\Ncols \relax + \ifx\balancecolumns\flushcolumns \advance\dimen0 by-.5\vsize \fi + \dimen1=\vsize \corrsize{\dimen1}\dimen2=\dimen1 + \advance\dimen2 by-\Ncols\baselineskip + %% split the material to more pages? + \ifvoid6 \else + \ifdim \dimen0>\dimen2 \expandafter\expandafter\expandafter \splitpart + \else \balancecolumns % last balancing + \fi \fi +} +\def\balancecolumns{\bgroup \setbox7=\copy6 % destination height: \dimen0 + \ifdim\dimen0>\baselineskip \else \dimen0=\baselineskip \fi + \vbadness=20000 + \def\tmp{% + \setbox1=\hbox{}\tmpnum=0 + \loop \ifnum\Ncols>\tmpnum + \advance\tmpnum by1 + \setbox1=\hbox{\unhbox1 + \ifvoid6 \hbox to\wd6{\hss}\else \vsplit6 to\dimen0 \fi\hss} + \repeat + \ifvoid6 \else + \advance \dimen0 by.2\baselineskip + \setbox6=\copy7 + \expandafter \tmp \fi}\tmp + \hbox{}\nobreak\vskip-\splittopskip \nointerlineskip + \hbox to\hsize{\unhbox1\unskip}% + \egroup +} + +%%%%%%%%%%%%%% Colors -- sec. 3.15 in opmac-d.pdf + +\newif\iflocalcolor \localcolorfalse +\let\localcolor=\localcolortrue + +% for backward compatibility: +\let\longlocalcolor=\localcolor \let\locpgcolor=\relax +\def\linecolor#1{} + +\def\Blue{\setcmykcolor{1 1 0 0}} +\def\Red{\setcmykcolor{0 1 1 0}} +\def\Brown{\setcmykcolor{0 0.67 0.67 0.5}} +\def\Green{\setcmykcolor{1 0 1 0}} +\def\Yellow{\setcmykcolor{0 0 1 0}} +\def\Cyan{\setcmykcolor{1 0 0 0}} +\def\Magenta{\setcmykcolor{0 1 0 0}} +\def\White{\setcmykcolor{0 0 0 0}} +\def\Grey{\setcmykcolor{0 0 0 0.5}} +\def\LightGrey{\setcmykcolor{0 0 0 0.2}} +\def\Black{\setcolor{\pdfblackcolor}} + +\def\setcmykcolor#1{\setcolor{\formatcmyk{#1}}} +\def\setrgbcolor#1{\setcolor{\formatrgb{#1}}} +\def\formatcmyk#1{#1 k #1 K} +\def\formatrgb#1{#1 rg #1 RG} + +\def\setcolor#1{\global\let\ensureblacko=\ensureblackoA + \iflocalcolor \edef\currentcolor{#1}\colorstackpush\currentcolor \aftergroup\colorstackpop + \else \xdef\currentcolor{#1}\colorstackset\currentcolor \fi +} + +\def\pdfblackcolor{0 g 0 G} +\edef\currentcolor{\pdfblackcolor} +\def\ensureblacko#1{#1} +\def\ensureblackoA#1{\colorstackpush\pdfblackcolor #1\colorstackpop} + +\ifx\pdfcolorstackinit\undefined + \def\colorstackpush#1{\pdfliteral{#1}} + \def\colorstackpop{\colorstackpush\currentcolor} + \let\colorstackset=\colorstackpush +\else + \mathchardef\colorstackcnt=0 % Implicit stack usage + \def\colorstackpush#1{\pdfcolorstack\colorstackcnt push{#1}} + \def\colorstackpop{\pdfcolorstack\colorstackcnt pop} + \def\colorstackset#1{\pdfcolorstack\colorstackcnt set{#1}} +\fi + +\addprotect\setcolor \addprotect\localcolor \addprotect\longlocalcolor + +\ifpdftex\else + \def\setcolor#1{} \def\pdfliteral#1{} +\fi + +\def\draft{\addto\prepghook{\draftbox{\_tenbf DRAFT}\nointerlineskip}} +\def\draftbox#1{\vbox to0pt{\setbox0=\hbox{\typosize[10/]#1}% + \kern.5\vsize \kern4\wd0 \hbox to0pt{\kern.5\hsize \kern-2.5\wd0 + \pdfsave \pdfrotate{55}\pdfscale{10}{10}% + \hbox to0pt{\localcolor\LightGrey \box0\hss}% + \pdfrestore + \hss}\vss}} + +\ifpdftex\else + \def\draft{\opwarning{\string\draft: Grey color is possible in pdfTeX only}} +\fi + +%%%%%%%%%%%%%% Hyperrefs -- sec. 3.16 in opmac-d.pdf + +\def\destheight{1.4em} +\def\destactive[#1:#2]{\if$#2$\else\ifvmode + \tmpdim=\prevdepth \prevdepth=-1000pt + \destbox[#1:#2]\prevdepth=\tmpdim + \else \destbox[#1:#2]% + \fi\fi +} +\def\destbox[#1]{\vbox to0pt{\kern-\destheight \pdfdest name{#1} xyz\vss}} +\def\dest[#1]{} + +\def\linkactive[#1:#2]#3#4{\leavevmode\pdfstartlink height.9em depth.3em + \pdfborder{#1} goto name{#1:#2}\relax {#3#4}\pdfendlink +} +\def\link[#1]#2#3{\leavevmode{#3}} + +\def\urllink[#1:#2]#3{{\let~=\relax \let\\=\relax \let\{=\relax \let\}=\relax + \leavevmode\pdfstartlink height.9em depth.3em + \pdfborder{#1}user{/Subtype/Link/A <>}\relax + {\def~{\nobreak\space}\_urlcolor#3}\pdfendlink}% +} +\def\toclink#1{\toclinkA{#1}} +\def\pglink#1{\leavevmode{\pgfolioA{#1}}} +\def\citelink#1#2{\leavevmode{#2}} +\def\reflink[#1]#2{\leavevmode{#2}} +\def\ulink[#1]#2{\leavevmode{#2}} +\def\_urlcolor{} + +\def\hyperlinks#1#2{% + \let\dest=\destactive \let\link=\linkactive + \def\toclink##1{\link[toc:\tocilabel.##1]{\localcolor#1}{\toclinkA{##1}}}% + \def\pglink##1{\link[pg:\pgilabel.##1]{\localcolor#1}{\pgfolioA{##1}}}% + \def\citelink##1##2{\link[cite:##1]{\localcolor#1}{##2}}% + \def\reflink[##1]##2{\link[ref:##1]{\localcolor#1}{##2}}% + \def\ulink[##1]##2{\urllink[url:##1]{##2}}% + \def\_urlcolor{\localcolor#2}% +} +\def\tocilabel{} \def\pgilabel{} + +\def\pdfborder#1{\if^#1^\else \isdefined{#1border}\iftrue + \if^\csname#1border\endcsname^\else attr{/C[\csname#1border\endcsname] /Border[0 0 .6]}\fi + \else attr{/Border[0 0 0]}\fi\fi +} + +\ifpdftex \else + \def\link[#1]#2#3{#3} + \def\urllink[#1]#2{#2} + \def\hyperlinks#1#2{\opwarning{No pdfTeX detected, \noexpand\hyperlinks ignored}} +\fi + +\def\url#1{{\def\tmpb{#1}% + \replacestrings{//}{{\urlskip\urlslashslash\urlbskip}}% + \replacestrings{/}{{\urlskip/\urlbskip}}% + \replacestrings{.}{{\urlskip.\urlbskip}}% + \replacestrings{?}{{\urlskip?\urlbskip}}% + \replacestrings{=}{{\urlskip=\urlbskip}}% + \replacestrings{~}{{\char`\~}}% + \replacestrings{_}{{\char`\_}}% + \replacestrings{^}{{\char`\^}}% + \replacestrings{\\}{\bslash}% + \replacestrings{\{}{{\char`\{}}% + \replacestrings{\}}{{\char`\}}}% + \replacestrings{&}{{\urlbskip\char`\& \urlskip}}% + \def\|{}\ulink[#1]{\urlfont\tmpb\null}% +}} +\def\urlfont{\tt \let\|=\urlspecchar} +\def\urlspecchar{\penalty10 } +\def\urlskip{\null\nobreak\hskip0pt plus0.05em\relax} +\def\urlbskip{\penalty100 \hskip0pt plus0.05em\relax} +\def\urlslashslash{/\urlskip/} +\addprotect\url + +%%%%%%%%%%%%%% Outlines -- sec. 3.17 in opmac-d.pdf + +%%%%%%%%%%%%%% Verbatim, \begtt, \endtt -- sec. 3.18 in opmac-d.pdf + +\newcount\ttline \ttline=-1 +\newcount\viline +\newread\vifile + +\def\setverb{\frenchspacing\def\do##1{\catcode`##1=12}\dospecials \catcode`\*=12 } +\def\begtt{\par \vskip\parskip \ttskip \bgroup \wipeepar + \setverb \adef{ }{\ }% + \ifx\savedttchar\undefined \else \catcode\savedttchar=12 \fi + \parindent=\ttindent \parskip=0pt + \tthook\relax + \ifnum\ttline<0 \else + \_tenrm \thefontscale[700]\ea\let\ea\sevenrm\the\font + \everypar\expandafter{\the\everypar \global\advance\ttline by1 \printttline}\fi + \def\par##1{\endgraf\ifx##1\egroup\else\penalty\ttpenalty\leavevmode\fi ##1}% + \obeylines \startverb} +{\catcode`\|=0 \catcode`\\=12 +|gdef|startverb#1\endtt{|tt|ptthook#1|egroup|par|ttskip|testparA}} +\def\testparA{\expandafter\testparB\romannumeral-`\.} +\def\testparB{\futurelet\tmpa\testparC} +\def\testparC{\ifx\tmpa\par\else\afternoindent\fi} + +\def\printttline{\llap{\sevenrm\the\ttline\kern.9em}} + +\def\activettchar#1{% + \ifx\savedttchar\undefined\else \catcode\savedttchar=\savedttcharc \fi + \chardef\savedttchar=`#1% + \chardef\savedttcharc=\catcode`#1% + \bgroup\lccode`\~=`#1% + \lowercase {\egroup\def~}{\leavevmode\hbox\bgroup\setverb\adef{ }{\ }% + \intthook\tt\readverb}% + \bgroup\lccode`\~=`#1\lowercase{\egroup\def\readverb ##1~}{##1\egroup}% + \catcode`#1=13 +} + +\def\verbinput (#1) #2 {\par \def\tmpa{#2}% + \ifx\vifilename\tmpa \else + \openin\vifile=#2 + \global\viline=0 \global\let\vifilename=\tmpa + \ifeof\vifile + \opwarning{\noexpand\verbinput - file "#2" is unable to reading} + \expandafter\expandafter\expandafter\skiptorelax + \fi + \fi + \viscanparameter #1+\relax +} +\def\skiptorelax#1\relax{} + +\def \viscanparameter #1+#2\relax{% + \if$#2$\viscanminus(#1)\else \viscanplus(#1+#2)\fi +} +\def\viscanplus(#1+#2+){% + \if$#1$\tmpnum=\viline + \else \ifnum#1<0 \tmpnum=\viline \advance\tmpnum by-#1 + \else \tmpnum=#1 + \advance\tmpnum by-1 + \ifnum\tmpnum<0 \tmpnum=0 \fi % (0+13) = (1+13) + \fi \fi + \edef\vinolines{\the\tmpnum}% + \if$#2$\def\vidolines{0}\else\edef\vidolines{#2}\fi + \doverbinput +} +\def\viscanminus(#1-#2){% + \if$#1$\tmpnum=0 + \else \tmpnum=#1 \advance\tmpnum by-1 \fi + \ifnum\tmpnum<0 \tmpnum=0 \fi % (0-13) = (1-13) + \edef\vinolines{\the\tmpnum}% + \if$#2$\tmpnum=0 + \else \tmpnum=#2 \advance\tmpnum by-\vinolines \fi + \edef\vidolines{\the\tmpnum}% + \doverbinput +} +\def\doverbinput{% + \tmpnum=\vinolines + \advance\tmpnum by-\viline + \ifnum\tmpnum<0 + \openin\vifile=\vifilename\space + \global\viline=0 + \else + \edef\vinolines{\the\tmpnum}% + \fi + \vskip\parskip \ttskip \bgroup \wipeepar + \setverb \adef{ }{\ }% + \ifx\savedttchar\undefined \else \catcode\savedttchar=12 \fi + \parindent=\ttindent \parskip=0pt + \tthook\relax + \ifnum\ttline<-1 \else + \_tenrm \thefontscale[700]\ea\let\ea\sevenrm\the\font + \everypar\expandafter{\the\everypar \glob\advance\ttline by1 \printttline}\fi + \def\par##1{\endgraf\ifx##1\egroup\else\penalty\ttpenalty\leavevmode\fi ##1}% + \obeylines \tmpnum=0 \lccode`\~=`\^^M \lowercase{\def\tmpb{~}}% + \loop \ifeof\vifile \tmpnum=\vinolines\space \fi + \ifnum\tmpnum<\vinolines\space + \vireadline \advance\tmpnum by1 \repeat %% skip line + \ifnum\ttline=-1 \ttline=\viline \let\glob=\relax \else\let\glob=\global \fi + \tmpnum=0 \ifnum\vidolines=0 \tmpnum=-1 \fi + \ifeof\vifile \tmpnum=\vidolines\space \fi + \loop \ifnum\tmpnum<\vidolines\space + \vireadline + \ifeof\vifile \tmpnum=\vidolines\space \else \viprintline \fi %% print line + \ifnum\vidolines=0 \else\advance\tmpnum by1 \fi + \repeat + \tt\expandafter\ptthook\tmpb\egroup\par\ttskip\testparA +} +\def\vireadline{\read\vifile to \tmp \global\advance\viline by1 } +\def\viprintline{\expandafter\addto\expandafter\tmpb\expandafter{\tmp}} + +%%%%%%%%%%%%%% \table -- sec. 3.19 in opmac-d.pdf + +\newtoks\tabdata +\def\tabstrutA{\tabstrut} +\newcount\colnum +\def\ddlinedata{} +\def\vvleft{} + +\def\table{\vbox\bgroup \catcode`\|=12 \tableA} +\def\tableA#1#2{\offinterlineskip \colnum=0 \def\tmpa{}\tabdata={}\scantabdata#1\relax + \halign\expandafter{\the\tabdata\cr#2\crcr}\egroup} + +\def\scantabdata#1{\let\next=\scantabdata + \ifx\relax#1\let\next=\relax + \else\ifx|#1\addtabvrule + \else\ifx(#1\def\next{\scantabdataE}% + \else\isinlist{123456789}#1\iftrue \def\next{\scantabdataC#1}% + \else \expandafter\ifx\csname tabdeclare#1\endcsname \relax + \expandafter\ifx\csname paramtabdeclare#1\endcsname \relax + \opwarning{tab-declarator "#1" unknown, ignored}% + \else \def\next{\expandafter\scantabdataB\csname paramtabdeclare#1\endcsname}\fi + \else \def\next{\expandafter\scantabdataA \csname tabdeclare#1\endcsname}% + \fi\fi\fi\fi\fi \next +} +\def\scantabdataA#1{\addtabitem \expandafter\addtabdata\expandafter{#1\tabstrutA}\scantabdata} +\def\scantabdataB#1#2{\addtabitem\expandafter\addtabdata\expandafter{#1{#2}\tabstrutA}\scantabdata} +\def\scantabdataC {\def\tmpb{}\afterassignment\scantabdataD \tmpnum=} +\def\scantabdataD#1{\loop \ifnum\tmpnum>0 \advance\tmpnum by-1 \addto\tmpb{#1}\repeat + \expandafter\scantabdata\tmpb} +\def\scantabdataE#1){\addtabdata{#1}\scantabdata} +\def\tabdeclarec{\tabiteml\hfil##\unsskip\hfil\tabitemr} +\def\tabdeclarel{\tabiteml##\unsskip\hfil\tabitemr} +\def\tabdeclarer{\tabiteml\hfil##\unsskip\tabitemr} +\def\paramtabdeclarep#1{\tabiteml\vtop{\hsize=#1\relax \baselineskip=\normalbaselineskip + \lineskiplimit=0pt \noindent##\unsskip \vbox to0pt{\vss\hbox{\tabstrutA}}}\tabitemr} + +\def\unsskip{\ifdim\lastskip>0pt \unskip\fi} +\def\addtabitem{\ifnum\colnum>0 \addtabdata{&}\addto\ddlinedata{&\dditem}\fi + \advance\colnum by1 \let\tmpa=\relax} +\def\addtabdata#1{\tabdata\expandafter{\the\tabdata#1}} +\def\addtabvrule{% + \ifx\tmpa\vrule \addtabdata{\kern\vvkern}% + \ifnum\colnum=0 \addto\vvleft{\vvitem}\else\addto\ddlinedata{\vvitem}\fi + \else \ifnum\colnum=0 \addto\vvleft{\vvitemA}\else\addto\ddlinedata{\vvitemA}\fi\fi + \let\tmpa=\vrule \addtabdata{\vrule}} + +\def\crl{\crcr\noalign{\hrule}} +\def\crll{\crcr\noalign{\hrule\kern\hhkern\hrule}} + +\def\crli{\crcr \omit + \gdef\dditem{\omit\tablinefil}\gdef\vvitem{\kern\vvkern\vrule}\gdef\vvitemA{\vrule}% + \vvleft\tablinefil\ddlinedata\crcr} +\def\crlli{\crli\noalign{\kern\hhkern}\crli} +\def\tablinefil{\leaders\hrule\hfil} + +\def\crlp#1{\crcr \noalign{\kern-\drulewidth}% + \omit \xdef\crlplist{#1}\xdef\crlplist{,\expandafter}\expandafter\crlpA\crlplist,\end,% + \global\tmpnum=0 \gdef\dditem{\omit\crlpD}% + \gdef\vvitem{\kern\vvkern\kern\drulewidth}\gdef\vvitemA{\kern\drulewidth}% + \vvleft\crlpD\ddlinedata \global\tmpnum=0 \crcr} +\def\crlpA#1,{\ifx\end#1\else \crlpB#1-\end,\expandafter\crlpA\fi} +\def\crlpB#1#2-#3,{\ifx\end#3\xdef\crlplist{\crlplist#1#2,}\else\crlpC#1#2-#3,\fi} +\def\crlpC#1-#2-#3,{\tmpnum=#1\relax + \loop \xdef\crlplist{\crlplist\the\tmpnum,}\ifnum\tmpnum<#2\advance\tmpnum by1 \repeat} +\def\crlpD{\global\advance\tmpnum by1 + \edef\tmpa{\noexpand\isinlist\noexpand\crlplist{,\the\tmpnum,}}% + \tmpa\iftrue \kern-\drulewidth \tablinefil \kern-\drulewidth\else\hfil \fi} + +\def\tskip{\afterassignment\tskipA \tmpdim} +\def\tskipA{\gdef\dditem{}\gdef\vvitem{}\gdef\vvitemA{}\gdef\tabstrutA{}% + \vbox to\tmpdim{}\ddlinedata \crcr \noalign{\gdef\tabstrutA{\tabstrut}}} + +\def\mspan{\omit \tabdata={\tabstrut}\let\tmpa=\relax \afterassignment\mspanA \_mscount=} +\def\mspanA[#1]#2{\loop \ifnum\_mscount>1 \csname span\endcsname \omit \advance\_mscount-1 \repeat + \colnum=0 \def\tmpa{}\tabdata={}\scantabdata#1\relax + \setbox0=\vbox{\halign\expandafter{\the\tabdata\cr#2\crcr}\global\setbox8=\lastbox}% + \setbox0=\hbox{\unhbox8 \unskip \global\setbox8=\lastbox}% + \unhbox8 \ignorespaces} + +\newdimen\drulewidth \drulewidth=0.4pt +\let\orihrule=\hrule \let\orivrule=\vrule +\def\rulewidth{\afterassignment\rulewidthA \drulewidth} +\def\rulewidthA{\edef\hrule{\orihrule height\the\drulewidth}% + \edef\vrule{\orivrule width\the\drulewidth}} + +\long\def\frame#1{% + \hbox{\vrule\vtop{\vbox{\hrule\kern\vvkern + \hbox{\kern\hhkern\relax#1\kern\hhkern}% + }\kern\vvkern\hrule}\vrule}} + +%%%%%%%%%%%%%% \inspic -- sec. 3.20 in opmac-d.pdf + +\newdimen\picwidth \picwidth=0pt \let\picw=\picwidth +\newdimen\picheight \picheight=0pt + +\ifpdftex + \def\inspic #1 {\hbox{% + \pdfximage \ifdim\picwidth=0pt \else width\picwidth\fi + \ifdim\picheight=0pt \else height\picheight\fi \inspicpage {\picdir#1}% + \pdfrefximage\pdflastximage}} +\else + \def\inspic #1 {\opwarning + {The \noexpand\inspic is supported for PDF output only}} +\fi +\def\inspicpage{} + +%%%%%%%%%%%%%%% transformation matrix -- sec. 3.21 in opmac-d.pdf + +\def\pdfscale#1#2{\pdfsetmatrix{#1 0 0 #2}} + +\def\pdfrotate#1{\tmpdim=#1pt + \ifdim\tmpdim=0pt + \else \ifdim\tmpdim=90pt \pdfsetmatrix{0 1 -1 0}% + \else \edef\tmp{#1}\expandafter\pdfrotateA\tmp..\relax + \fi \fi +} +\def\pdfrotateA #1.#2.#3\relax{% + \def\tmp##1.##2\relax {##1}% + \tmpnum=\expandafter \tmp \the\tmpdim \relax % round + \ifdim\tmpdim>0pt \def\tmpa{}\else\def\tmpa{-}\fi % save - + \loop \ifnum\tmpnum<0 \advance\tmpnum by360 \repeat + \loop \ifnum\tmpnum>360 \advance\tmpnum by-360 \repeat + \loop \ifnum\tmpnum>90 \pdfrotate{90}\advance\tmpnum by-90 \repeat + \ifnum\tmpnum=90 \pdfrotate{90}\else + \ifnum\tmpnum>44 \pdfsetmatrix{.7071 .7071 -.7071 .7071}% + \advance\tmpnum by-45 \fi + \ifnum\tmpnum>22 \pdfsetmatrix{.9272 .3746 -.3746 .9272}% + \advance\tmpnum by-22 \fi + \ifnum\tmpnum>0 + \pdfsetmatrix{\smallcos \smallsin -\smallsin \smallcos}% + \fi\fi + \if$#2$\else % fraction part + \tmpdim=.01745329pt % \pi/180 + \tmpdim=.#2\tmpdim % + \edef\tmp{\expandafter\ignorept\the\tmpdim\space}% + \ifx\tmpa\empty \pdfsetmatrix{1 \tmp -\tmp 1}% + \else \pdfsetmatrix{1 -\tmp \tmp 1}% + \fi\fi +} +\def\smallcos{.\ifcase\tmpnum \or9998\or9994\or9986\or9976\or9962\or9945\or + 9925\or9903\or9877\or9848\or9816\or9781\or9744\or9703\or9659\or9613\or + 9563\or9511\or9455\or9397\or9336\or9272\fi\space} +\def\smallsin{.\ifcase\tmpnum 0\or0175\or0359\or0523\or0698\or0872\or1045\or + 1219\or1391\or1564\or1736\or1908\or2079\or2250\or2419\or2588\or2756\or + 2924\or309\or3256\or342\or3584\or3746\fi\space} + +\ifpdftex \else + \def\pdfsetmatrix#1{} \def\pdfsave{} \def\pdfrestore{} +\fi + +%%%%%%%%%%%%%% \fnote, \mnote -- sec 3.22 in opmac-d.pdf + +\newcount\fnotenum \fnotenum=0 +\newcount\fnotenumlocal +\newif\iflocfnum \locfnumtrue + +\long\def\fnoteG#1#2{\global\advance \fnotenum by1 + \ifx\relax#1\relax\else\leavevmode\fi + \iflocfnum \openref\wref\Xfnote{}% + \isdefined{fn:\the\fnotenum}\iftrue + \else\opwarning{unknown \noexpand\fnote mark. TeX me again}\fi\fi + #1{\everypar={}\fnotehook\scalemain\typoscale[800/800]\vfootnote\fnmarkx{#2}}% +} +\def\fnote{\fnoteG\fnmarkx} +\def\fnotetext{\fnoteG{}} + +\def\fnotemark#1{{\advance\fnotenum by#1\relax \fnmarkx}} +\def\fnmarkx{\isdefined{fn:\the\fnotenum}\iftrue\thefnote\else$^?$\fi} +\def\thefnote{$^{\locfnum}$} +\def\locfnum{\csname fn:\the\fnotenum\endcsname} + +\def\Xfnote{\advance\fnotenumlocal by1 \advance\fnotenum by1 + \sxdef{fn:\the\fnotenum}{\the\fnotenumlocal}} + +\def\runningfnotes{\locfnumfalse\def\locfnum{\the\fnotenum}\def\fnmarkx{\thefnote}} + +\newcount\mnotenum \mnotenum=0 % global counter of mnotes +\newdimen\mnoteskip \mnoteskip=0pt + +\long\def\mnote#1{\ifvmode \hbox{\vbox to\ht\strutbox{}\mnoteA{#1}}\nobreak\vskip-\baselineskip + \else \strut\vadjust{\kern-\dp\strutbox \mnoteA{#1}\kern\dp\strutbox}% + \fi +} +\long\def\mnoteA#1{\global\advance \mnotenum by1 + \ifx\mnotesfixed\undefined + \isdefined{mn:\the\mnotenum}\iftrue + \else\opwarning{unknown \noexpand\mnote side. TeX me again}\fi + \edef\tmp{\csname mn:\the\mnotenum\endcsname}% + \openref\wref\Xmnote{}\ifvmode\nobreak\fi + \else \let\tmp=\mnotesfixed \fi + \expandafter\ifx\tmp \left + \hbox to0pt{\kern-\mnotesize \kern-\mnoteindent + \vbox to0pt{\vss \setbox0=\vtop{\hsize=\mnotesize + \leftskip=0pt plus 1fill \rightskip=0pt {\mnotehook\noindent#1\endgraf}}% + \dp0=0pt \box0 \kern\mnoteskip \global\mnoteskip=0pt}\hss}% + \else + \hbox to0pt{\kern\hsize \kern\mnoteindent + \vbox to0pt{\vss \setbox0=\vtop{\hsize=\mnotesize + \rightskip=0pt plus 1fil \leftskip=0pt {\mnotehook\noindent#1\endgraf}}% + \dp0=0pt \box0 \kern\mnoteskip \global\mnoteskip=0pt}\hss}% + \fi +} +\def\Xmnote{\advance\mnotenum by1 + \sxdef{mn:\the\mnotenum}{\ifodd\lastpage \right \else \left \fi}} + +\def\fixmnotes#1{\def\mnotesfixed{#1}} + +%%%%%%%%%%%%%% \cite, \bib, \usebibtex, \usebbl -- sec. 3.23 in opmac-d.pdf + +\newwrite\auxfile % AUX file for BibTeX +\newcount\bibnum % the bibitem counter +\newtoks\bibmark % the bibmark used if \nonumcitations +\newcount\lastcitenum \lastcitenum=0 % for \shortcitations + +\def\cite[#1]{{\citeA#1,,,[\printsavedcites]}} +\def\nocite[#1]{{\citeA#1,,,}} +\def\rcite[#1]{{\citeA#1,,,\printsavedcites}} +\def\savedcites{} + +\def\citeA #1#2,{\if#1,\else + \if *#1\addcitelist{*}\expandafter \skiptorelax \fi + \isdefined{bib:#1#2}\iftrue \else + \addcitelist{#1#2}% + \opwarning{The cite [#1#2] unknown. Try to TeX me again}\openref + \addto\savedcites{?,}\def\sortcitesA{}\lastcitenum=0 + \expandafter\gdef\csname bib:#1#2\endcsname {}% + \expandafter \skiptorelax \fi + \expandafter \ifx \csname bib:#1#2\endcsname \empty + \addto\savedcites{?,}\def\sortcitesA{}\lastcitenum=0 + \expandafter \skiptorelax \fi + \def\bibnn##1{}% + \if &\csname bib:#1#2\endcsname + \addcitelist{#1#2}% + \def\bibnn##1##2{##1}% + \sxdef{bib:#1#2}{\csname bib:#1#2\endcsname}% + \fi + \edef\savedcites{\savedcites \csname bib:#1#2\endcsname,}% + \relax + \expandafter\citeA\fi +} +\def\printsavedcites{\sortcitesA + \chardef\tmpb=0 \expandafter\citeB\savedcites,% + \ifnum\tmpb>0 \printdashcite{\the\tmpb}\fi +} +\def\sortcitesA{} +\def\sortcitations{% + \def\sortcitesA{\edef\savedcites{300000,\expandafter}\expandafter\sortcitesB\savedcites,% + \def\tmpa####1300000,{\def\savedcites{####1}}\expandafter\tmpa\savedcites}% +} +\def\sortcitesB #1,{\if $#1$% + \else + \mathchardef\tmpa=#1 + \edef\savedcites{\expandafter}\expandafter\sortcitesC \savedcites\end + \expandafter\sortcitesB + \fi +} +\def\sortcitesC#1,{\ifnum\tmpa<#1\edef\tmpa{\the\tmpa,#1}\expandafter\sortcitesD + \else\edef\savedcites{\savedcites#1,}\expandafter\sortcitesC\fi} +\def\sortcitesD#1\end{\edef\savedcites{\savedcites\tmpa,#1}} + +\def\citeB#1,{\if$#1$\else + \if?#1\relax??% + \else + \ifnum\lastcitenum=0 % only comma separated list + \printcite{#1}% + \else + \ifx\citesep\empty % first cite item + \lastcitenum=#1\relax + \printcite{#1}% + \else % next cite item + \advance\lastcitenum by1 + \ifnum\lastcitenum=#1\relax % cosecutive cite item + \mathchardef\tmpb=\lastcitenum + \else % there is a gap between cite items + \lastcitenum=#1\relax + \ifnum\tmpb=0 % previous items were printed + \printcite{#1}% + \else + \printdashcite{\the\tmpb}\printcite{#1}\chardef\tmpb=0 + \fi\fi\fi\fi\fi + \expandafter\citeB\fi +} +\def\shortcitations{\lastcitenum=1 } + +\def\printcite#1{\citesep\citelink{#1}{\citelinkA{#1}}\def\citesep{,\hskip.2em\relax}} +\def\printdashcite#1{\ifmmode-\else\hbox{--}\fi\citelink{#1}{\citelinkA{#1}}} +\def\citesep{} + +\def\nonumcitations{\lastcitenum=0\def\sortcitesA{}\def\etalchar##1{$^{##1}$}% + \def\citelinkA##1{\isdefined{bim:##1}\iftrue \csname bim:##1\endcsname + \else ##1\opwarning{\noexpand\nonumcitations + empty bibmark. Maybe bad BibTeX style}\fi} +} +\def\citelinkA{} + +\def\ecite[#1]{\bgroup\citeA#1,,,\expandafter\eciteB\savedcites;} +\def\eciteB#1,#2;#3{\if?#1\relax #3\else \citelink{#1}{#3}\fi\egroup} + +\def\bib[#1]{\def\tmp{\isnextchar={\bibA[#1]}{\bibmark={}\bibB[#1]}}% + \expandafter\tmp\romannumeral-`\.} % ignore optional space +\def\bibA[#1]=#2{\bibmark={#2}\bibB[#1]} +\def\bibB[#1]{\par \ifnum\bibnum>0 \bibskip \fi + \advance\bibnum by1 + \noindent \def\tmpb{#1}\wbib{#1}{\the\bibnum}{\the\bibmark}% + \printbib \ignorespaces +} +\def\wbib#1#2#3{\dest[cite:\the\bibnum]% + \ifx\wref\wrefrelax\else \immediate\wref\Xbib{{#1}{#2}{#3}}\fi} + +\def\Xbib#1#2#3{\sdef{bib:#1}{\bibnn{#2}&}\if^#3^\else\sdef{bim:#2}{#3}\fi\def\lastbibnum{#2}} + +\def\printbib{\hangindent=\iindent + \ifx\citelinkA\empty \noindent\hskip\iindent \llap{[\the\bibnum] }% + \else \noindent \fi +} + +\def\addcitelist#1{\global\addto\citelist{\citeI[#1]}} +\def\writeaux#1{\immediate\write\auxfile{\string\citation{#1}}} +\def\writeXcite#1{\openref\immediate\wref\Xcite{{#1}}} +\def\citelist{} \def\citelistB{} + +\def\usebibtex#1#2{% + \openref \openauxfile{#1}{#2}% + \def\citeI[##1]{\writeaux{##1}}\citelist + \global\let\addcitelist=\writeaux + \bgroup \readbblfile{\jobname}\egroup +} +\def\openauxfile#1#2{% + \immediate\openout\auxfile=\jobname.aux + \immediate\write\auxfile + {\percent\percent\space Opmac: AUX file reserved for bibtex only}% + \immediate\write\auxfile{\string\bibdata{#1}}% + \immediate\write\auxfile{\string\bibstyle{#2}}% +} +\def\readbblfile #1{% + \openin\testin=#1.bbl + \ifeof\testin + \opwarning{The `#1.bbl' file doesn't exist. Use `bibtex'..}% + \else + \closein\testin + \bibnum=0 + \long\def\begin##1\bibitem{\bibitem}\def\end##1{}% LaTeX environment + \def\httpAddr##1{\url{http:##1}}\def\\{\hfill\break}% + \def\newblock{\hskip .11em plus.33em minus.07em}% + \def\mbox{\leavevmode\hbox}\def\emph##1{{\it##1}}% + \parindent=\iindent \bibtexhook\relax + \input #1.bbl + \par + \fi +} +\def\bibitem{\isnextchar[{\bibitemB}{\bibmark={}\bibitemC}} +\def\bibitemB[#1]{\bibmark={#1}\bibitemC} +\def\bibitemC#1{\bibitemD{#1}} +\def\bibitemD#1{\par\ifnum\bibnum>0 \bibskip \fi + \advance\bibnum by1 + \noindent \def\tmpb{#1}\wbib{#1}{\the\bibnum}{\the\bibmark}% + \printbib \ignorespaces +} +\def\genbbl#1#2{\openauxfile{#1}{#2}% + \immediate\write\auxfile{\string\citation{*}}% + \bgroup + \iindent=4em + \def\bibitemC##1{\par\ifnum\bibnum>0 \bibskip \fi + \advance\bibnum by1 + \noindent \hangindent=\parindent + \indent \llap{[##1]\enspace}\ignorespaces + }% + \readbblfile{\jobname}% + \egroup +} +\def\usebbl/#1 #2 {\isdefined{bbl:#1}% + \iftrue \csname bbl:#1\endcsname {#2}\else + \opwarning{\string\usebbl/#1 #2 ... the `#1' type undefined}% + \fi +} +\sdef{bbl:a}#1{\bgroup \readbblfile{#1}\egroup} + +\sdef{bbl:b}#1{\bgroup + \let\citeI=\relax \xdef\citelist{\citelist\citelistB}% + \def\bibitemC##1 ##2\par{% + \isinlist\citelist{[##1]}\iftrue \bibitemD{##1}##2\par\fi}% + \readbblfile{#1}% + \global\let\addcitelist=\writeXcite + \egroup +} +\sdef{bbl:c}#1{\bgroup + \ifx\citelinkA\empty \else + \opwarning{\string\nonumcitations: don't use \string\usebbl/c}\fi + \let\citeI=\relax \xdef\citelist{\citelist\citelistB}% + \def\bibitemC##1 ##2\par{% + \isinlist\citelist{[##1]}\iftrue + \if^\the\bibmark^\sdef{bb:##1}{\bibitemD{##1}##2\par}% + \else \toks0={##2\par}% + \edef\tmpa{\noexpand\sdef{bb:##1}{% \the\bibmark have to expand + \noexpand\bibitemB[\the\bibmark]{##1}\the\toks0}}\tmpa + \fi\fi}% + \readbblfile{#1}% + \def\bibitemC##1{\bibitemD{##1}}% + \def\citeI[##1]{\csname bb:##1\endcsname}\citelist + \global\let\addcitelist=\writeXcite + \egroup +} +\def\Xcite#1{\addto\citelistB{\citeI[#1]}} + +\def\usebib{\par \input opmac-bib \usebib} + +%%%%%%%%%%%%%% output -- sec. 3.24 in opmac-d.pdf + +\addto\_begoutput{% + \immediate\wref\Xpage{{\the\pageno}}% + \def\nl{ }\def\fnote##1{}\def\fnotemark##1{}% +} + +\def\doprotect#1{\let#1=\relax} +\def\_pagedest{\def\destheight{25pt}\dest[pg:\pgilabel.\the\pageno]} + +%\footline={\hss\_tenrm\thefontsize[10]\folio\hss} + +\newcount\lastpage \lastpage=0 % the last page of the document +\def\Xpage#1{\lastpage=#1 \fnotenumlocal=0 } + +%%%%%%%%%%%%%% margins -- sec. 3.25 in opmac-d.pdf + + +%%%%%%%%%%%%%% Pre-defined document styles + +\def\boxlines{% + \def\boxlinesE{\ifhmode\egroup\empty\fi}\def\nl{\boxlinesE}% + \bgroup \lccode`\~=`\^^M\lowercase{\egroup\let~}\boxlinesE + \everypar{\setbox0=\lastbox\endgraf + \hbox\bgroup \catcode`\^^M=13 \let\par=\nl \aftergroup\boxlinesC}% +} +\def\boxlinesC{\futurelet\next\boxlinesD} +\def\boxlinesD{\ifx\next\empty\else\expandafter\egroup\fi} + +\def\report{ + \typosize[11/13.2] + \let\titfont=\chapfont + \titskip=3ex + \eoldef\author##1{\removelastskip\bigskip + {\leftskip=0pt plus1fill \rightskip=\leftskip \it \noindent ##1\par}\nobreak\bigskip + } + \parindent=1.2em \iindent=\parindent \ttindent=\parindent + \footline={\global\footline={\hss\_tenrm\thefontsize[10]\folio\hss}} + \runningfnotes +} +\def\letter{ + \def\address{\vtop\bgroup\boxlines \parskip=0pt \let\par=\egroup} + \def\subject{{\bf \mtext{subj}: }} + \typosize[11/14] + \parindent=0pt + \parskip=\medskipamount + \nopagenumbers +} + +\endinput + diff --git a/macros/luatex/optex/optex.ini b/macros/luatex/optex/optex.ini new file mode 100644 index 0000000000..2ec0665c85 --- /dev/null +++ b/macros/luatex/optex/optex.ini @@ -0,0 +1,101 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +%% OpTeX ini file +%% Petr Olsak + +% Basic catcodes: + +\catcode `\_=11 +\catcode `\{=1 +\catcode `\}=2 +\catcode `\#=6 +\catcode `\^=7 + +% OpTeX version + +\def\optexversion{Alpha 0.02 Feb 2020} + +% Engine testing: + +\newlinechar=`\^^J +\ifx\directlua\undefined + \message{This format is based only on LuaTeX, use luatex -ini optex.ini^^J} + \endinput \fi + +\ifx\bgroup\undefined \else + \message{This file can be used only for format initialisation, use luatex -ini^^J} + \endinput \fi + +% Basic \_codedecl / \_endcode pair: + +\let\_endcode =\endinput +\def \_codedecl #1#2{% + \ifx #1\undefined \message{#2^^J}% + \else \expandafter \endinput \fi +} + +% Initialization: + +\message{OpTeX (Olsak's Plain TeX) initialization <\optexversion>^^J} + +\input prefixed.opm % prefixed primitives and code syntax +\input luatex-ini.opm % luaTeX initialization +\input catcodes.opm % catcode setting +\input basics-macros.opm % basic macros +\input alloc.opm % allocators for registers +\input if-macros.opm % special \if-macros, \is-macros and loops +\input logos.opm % standard logos +\input parameters.opm % parameters setting +\input fonts-preload.opm % preloaded Computer Modern fonts +\input fonts-resize.opm % font resizing (low-level macros) +\input fonts-select.opm % font selection system +\input math-preload.opm % math fams CM + AMS preloaded +\input math-macros.opm % basic macros for math plus mathchardefs +\input plain-macros.opm % plainTeX macros +\input fonts-opmac.opm % font managing macros from OPmac +\input outlines.opm % PDF outlines +\input pdfuni-string.opm % PDFunicode strings for outlines +\input output.opm % output routine +\input margins.opm % macros for margins setting +\input uni-lcuc.opm % Setting lccodes and uccodes for Unicode characters +\input hyphen-lan.opm % initialization of hyphenation patterns +\input opmac-rest.opm % TODO: needs to be re-implement +\input csplain-params.opm % compatibility with CSplain + +\_everyjob = {% + \_message{This is OpTeX (Olsak's Plain TeX), version <\optexversion>^^J}% + \_mathsbon % replaces \int_a^b to \int _a^b + \inputref % inputs \jobname.ref if exists +} +\let\loadmathfonts=\relax % TODO: unicode-math + +\_dump + +\_endcode % ------------------------------ + +TODO: +- re-implement macros from opmac-rest.opm +- add unicode math support (from uni-math.tex from csplain) +- add modules support (for example opmac-bib) +- write more documentation +- ... + +DOC: +- about Font selection system: ....... files: fonts-select.opm, fonts-opmac.opm, + fonts-resize.opm, f-heros.opm, f-lmfonts.opm + fams-ini.opm +- about user/internal name spaces .... files: prefixed.opm, math-macros.opm +- additional doc is in more files... + +NOTES FOR TESTERS: +- We don't want to keep absolutely backward compatibility. For example obscurities like + \z@, \p@, \f@@t are not supported. +- The page origin is at left upper corner of the paper (no at 1in, 1in coordinates). +- The default papersize is A4 with 2cm margins (no letter with 1in margins]. + Use \margins macro to change these parameters. +- Only few 8bit fonts are preloaded in format. Use \fontfam[LMfonts] (or select another + fonts family by \fontfam[?]) at beginning of document. Unicode fonts will be loaded. +- The accents macros \v, \' are undefined, Use native characters š,č,é, etc. + If you expicitly needs this old feature, use \oldaccents macro. +- The font switchers like \_tenrm, \_tenbf have only internal names, i.e + \tenrm, \tenbf are undefined. diff --git a/macros/luatex/optex/outlines.opm b/macros/luatex/optex/outlines.opm new file mode 100644 index 0000000000..e95f4ec9c5 --- /dev/null +++ b/macros/luatex/optex/outlines.opm @@ -0,0 +1,62 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \pdfunidef {PDFunicode strings for outlines <2019-05-21>} + +\_def\_outlines#1{\_pdfcatalog{/PageMode/UseOutlines}\openref + \_ifx\_toclist\_empty + \_opwarning{\noexpand\outlines -- data unavailable. TeX me again}% + \_else + \_ifx\_urlcolor\_empty + \opwarning{\_noexpand\outlines doesn't work when \_noexpand\hyperlinks isn't declared}\_fi + {\_let\_tocline=\_outlinesA + \_count0=0 \_count1=0 \_toclist % calculate numbers o childs + \_def\_outlinelevel{#1}\_let\_tocline=\_outlinesB + \_count0=0 \_count1=0 \_toclist}% create outlines + \_fi +} +\_def\_outlinesA#1#2#3#4#5{% + \_advance\_count#1 by1 + \_ifcase#1\_or + \_addoneol{_ol:\_the\_count0}\_or + \_addoneol{_ol:\_the\_count0:\_the\_count1}\_fi +} +\_def\_addoneol#1{% + \_ifcsname #1\_endcsname + \_tmpnum=\_csname#1\_endcsname\_relax + \_advance\_tmpnum by1 \_sxdef{#1}{\_the\_tmpnum}% + \_else \_sxdef{#1}{1}% + \_fi +} +\_def\_outlinesB#1#2#3#4#5{% + \_advance\_count#1 by1 + \_ifcase#1\_tmpnum=\_csifdefined{_ol:\_the\_count0}{0}\_relax\_or + \_tmpnum=\_csifdefined{_ol:\_the\_count0:\_the\_count1}{0}\_relax\_or + \_tmpnum = 0\_relax\_fi + \_pdfunidef\_tmp{#4}% + \_outlinesC{#1}{toc:\tocilabel.#3}{\_ifnum#1<\_outlinelevel\_space\_else-\_fi}{\_tmpnum}{\_tmp}% +} +\_def\_csifdefined#1#2{\_ifcsname #1\_endcsname \_csname#1\_endcsname \_else #2\_fi} +\_def\_outlinesC#1#2#3#4#5{\_pdfoutline goto name{#2} count #3#4{#5}\_relax} + +\_newcount\_oulnum +\_def\_insertoutline#1{\_global\_advance\_oulnum by1 + \_pdfdest name{oul:\_the\_oulnum} xyz\_relax + \_pdfoutline goto name{oul:\_the\_oulnum} count0 {#1}\_relax +} + +\_public + \outlines \insertoutline ; + +\_endcode % ---------------------------- + +The PDF format provides ``outlines'' which are notes placed in the special frame of +the PDF viewer. These notes can be managed as structured and hyperlinked +table of contents of the document. The command "\outlines{}" creates +such outlines from data used for table of contents in the document. The +"" parameter gives the level of opened sub-outlines +in the default view. The deeper levels can be open by mouse click on the +triangle symbol after that. + +The command "\insertoutline{}" inserts next entry into PDF outlines at +the main level~0. This entry can be placed before table of contents (created +by "\outlines") or after it. diff --git a/macros/luatex/optex/output.opm b/macros/luatex/optex/output.opm new file mode 100644 index 0000000000..e8028abcf1 --- /dev/null +++ b/macros/luatex/optex/output.opm @@ -0,0 +1,104 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \nopagenumbers {Output routine <2019-05-21>} + +\_output={\_begoutput \_optexoutput \_endoutput} +\_def \_begoutput{\_prepoffsets} % +\_def \_endoutput{} + +\_def\_optexoutput{% + \_shipout\_vbox{% + \_istoksempty \_pgbackground + \_iffalse \_backgroundbox {\_the\_pgbackground}\_nointerlineskip \_fi + \_istoksempty \_headline \_iffalse \_ensureblack{\_makeheadline}\_fi + \_vbox to\_vsize {\_boxmaxdepth=\_maxdepth \_pagecontents}% + \_istoksempty \_footline \_iffalse \_ensureblack{\_makefootline}\_fi }% + \_advancepageno + \_ifnum\_outputpenalty>-20000 \_else\_dosupereject\_fi +} +\_def \_ensureblack #1{#1} % will be re-defined by color macros +\_def \_pagedest {} % will be re-defined by macros for references +\_def \_prepoffsets {} % will be re-defined by margins macros +\_def \_backgroundbox #1{\_moveleft\_hoffset\_vbox to0pt{\_kern-\voffset #1\_vss}} + +\_def\_makeheadline {\_vbox to0pt{\_vskip-\_headlinedist + \_line{\_copy\_strutbox \_the\_headline}\_vss}\_nointerlineskip} +\_def\_makefootline{\_baselineskip=\_footlinedist + \_lineskiplimit=-\maxdimen \_line{\_the\_footline}} +\_def\_pagecontents{\_pagedest % destination of the page + \_ifvoid\_topins \_else \_ensureblack{\_unvbox\_topins}\_fi + \_dimen0=\dp255 \_unvbox255 % open up \box255 + \_ifvoid\_footins \_else % footnote info is present + \_vskip\_skip\_footins + \_ensureblack{\_footnoterule \_unvbox\_footins}\fi + \_ifraggedbottom \kern-\_dimen0 \_vfil \_fi +} +\_def \_footnoterule {\kern-3pt \hrule width 2truein \kern 2.6pt } +\_def\_pagebody{\_vbox to\_vsize{\_boxmaxdepth\_maxdepth \_pagecontents}} + % unused, but for backward compatibility +\_newdimen\_headlinedist \_headlinedist=22.5pt +\_newdimen\_footlinedist \_footlinedist=24pt +\_newtoks\_headline \_headline={} +\_newtoks\_footline \_footline={\_hss\_truetenrm \_folio \_hss} +\_newtoks\_pgbackground \_pgbackground={} % for page background +\_public + \headlinedist \footlinedist \pgbackground + \makeheadline \makefootline \pagebody \headline \footline ; + +\_countdef\_pageno=0 \_pageno=1 % first page is number 1 +\_def \_folio {\_ifnum\_pageno<0 \_romannumeral-\_pageno \_else \_number\_pageno \_fi} +\_def \_nopagenumbers {\_footline={}} +\_def \_advancepageno {\_ifnum\_pageno<0 \_global\_advance\_pageno by-1 + \_else \_global \_advance\_pageno by1 \_fi } % increase |pageno| +\_newifi\_ifraggedbottom +\_def \_raggedbottom {\_topskip=10pt plus60pt \_raggedbottomtrue} +\_def \_normalbottom {\_topskip=10pt \_raggedbottomfalse} % undoes \raggedbottom +\_public + \pageno \folio \nopagenumbers \advancepageno \raggedbottom \normalbottom ; + +\_newinsert\_footins +\_def \_footnote #1{\_let\_osf=\_empty % parameter #2 (the text) is read later + \_ifhmode \_edef\_osf{\_spacefactor\_the\_spacefactor}\/\_fi + #1\_osf\_vfootnote{#1}} +\_def \_vfootnote #1{\_insert\_footins\_bgroup + \_interlinepenalty=\_interfootnotelinepenalty + \_splittopskip=\_ht\_strutbox % top baseline for broken footnotes + \_splitmaxdepth=\_dp\_strutbox \_floatingpenalty=20000 + \_leftskip=0pt \_rightskip=0pt \_spaceskip=0pt \_xspaceskip=0pt \_relax + \_textindent{#1}\_footstrut + \_isnextchar \_bgroup {\_bgroup \_aftergroup\_vfootA \_let\_next=}{\_vfootB}% +} +\_def\_vfootA{\_strut\_egroup} +\_def\_vfootB #1{#1\_vfootA} +\_def \_footstrut {\_vbox to\_splittopskip{}} +\_skip\_footins=\_bigskipamount % space added when footnote is present +\_count\_footins=1000 % footnote magnification factor (1 to 1) +\_dimen\_footins=8in % maximum footnotes per page +\_public + \footins \footnote \vfootnote \footstrut ; + +\_newinsert\_topins +\_newifi\_ifupage \_newifi\_ifumid +\_def \_topinsert {\_umidfalse \_upagefalse \_oins} +\_def \_midinsert {\_umidtrue \_oins} +\_def \_pageinsert {\_umidfalse \_upagetrue \_oins} +\_skip\_topins=\_zoskip % no space added when a topinsert is present +\_count\_topins=1000 % magnification factor (1 to 1) +\_dimen\_topins=\_maxdimen % no limit per page +\_def \_oins {\_par \_begingroup\_setbox0=\_vbox\_bgroup} % start a \_vbox +\_def \_endinsert {\_egroup % finish the \_vbox + \_ifumid \_dimen0=\_ht0 \_advance\_dimen0 by\_dp0 \_advance\_dimen0 by\_baselineskip + \_advance\_dimen0 by\_pagetotal \_advance\_dimen0 by-\_pageshrink + \_ifdim\_dimen0>\_pagegoal \_umidfalse \_pagefalse \_fi \_fi + \_ifumid \_bigskip \_box0 \_bigbreak + \_else \_insert \_topins {\_penalty100 % floating insertion + \_splittopskip=0pt + \_splitmaxdepth=\_maxdimen \_floatingpenalty=0 + \_ifupage \_dimen0=\_dp0 + \_vbox to\_vsize {\_unvbox0 \_kern-\_dimen0}% depth is zero + \_else \_box0 \_nobreak \_bigskip \_fi}\_fi\_endgroup} +\_public + \topins \topinsert \midinsert \pageinsert \endinsert ; + +\_endcode % ------------------------------------- + diff --git a/macros/luatex/optex/parameters.opm b/macros/luatex/optex/parameters.opm new file mode 100644 index 0000000000..96fe596691 --- /dev/null +++ b/macros/luatex/optex/parameters.opm @@ -0,0 +1,167 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \normalbaselineskip {Parameter settings <2020-01-23>} + +% Settings like in plainTeX: + +\_pretolerance=100 +\_tolerance=200 % INITEX sets this to 10000 +\_hbadness=1000 +\_vbadness=1000 +\_linepenalty=10 +\_hyphenpenalty=50 +\_exhyphenpenalty=50 +\_binoppenalty=700 +\_relpenalty=500 +\_clubpenalty=150 +\_widowpenalty=150 +\_displaywidowpenalty=50 +\_brokenpenalty=100 +\_predisplaypenalty=10000 +% \_postdisplaypenalty=0 +% \_interlinepenalty=0 +% \_floatingpenalty=0, set during \insert +% \_outputpenalty=0, set before TeX enters \output +\_doublehyphendemerits=10000 +\_finalhyphendemerits=5000 +\_adjdemerits=10000 +% \_looseness=0, cleared by TeX after each paragraph +% \_pausing=0 +% \_holdinginserts=0 +% \_tracingonline=0 +% \_tracingmacros=0 +% \_tracingstats=0 +% \_tracingparagraphs=0 +% \_tracingpages=0 +% \_tracingoutput=0 +\_tracinglostchars=1 +% \_tracingcommands=0 +% \_tracingrestores=0 +% \_language=0 +\_uchyph=1 +% \_lefthyphenmin=2 \_righthyphenmin=3 set below +% \_globaldefs=0 +% \_maxdeadcycles=25 % INITEX does this +% \_hangafter=1 % INITEX does this, also TeX after each paragraph +% \_fam=0 +% \_mag=1000 % INITEX does this +% \_escapechar=`\\ % INITEX does this +\_defaulthyphenchar=`\- +\_defaultskewchar=-1 +% \_endlinechar=`\^^M % INITEX does this +%\_newlinechar=-1 +\_delimiterfactor=901 +% \_time=now % TeX does this at beginning of job +% \_day=now % TeX does this at beginning of job +% \_month=now % TeX does this at beginning of job +% \_year=now % TeX does this at beginning of job +\_showboxbreadth=5 +\_showboxdepth=3 +\_errorcontextlines=5 + +\_hfuzz=0.1pt +\_vfuzz=0.1pt +\_overfullrule=5pt +%\_hsize=6.5in +%\_vsize=8.9in +\_maxdepth=4pt +\_splitmaxdepth=\_maxdimen +\_boxmaxdepth=\_maxdimen +% \_lineskiplimit=0pt, changed by \_normalbaselines +\_delimitershortfall=5pt +\_nulldelimiterspace=1.2pt +\_scriptspace=0.5pt +% \_mathsurround=0pt +% \_predisplaysize=0pt, set before TeX enters $$ +% \_displaywidth=0pt, set before TeX enters $$ +% \_displayindent=0pt, set before TeX enters $$ +\_parindent=20pt +% \_hangindent=0pt, zeroed by TeX after each paragraph +% \_hoffset=0pt +% \_voffset=0pt + +% \_baselineskip=0pt, changed by \normalbaselines +% \_lineskip=0pt, changed by \normalbaselines +\_parskip=0pt plus 1pt +\_abovedisplayskip=12pt plus 3pt minus 9pt +\_abovedisplayshortskip=0pt plus 3pt +\_belowdisplayskip=12pt plus 3pt minus 9pt +\_belowdisplayshortskip=7pt plus 3pt minus 4pt +% \_leftskip=0pt +% \_rightskip=0pt +\_topskip=10pt +\_splittopskip=10pt +% \_tabskip=0pt +% \_spaceskip=0pt +% \_xspaceskip=0pt +\_parfillskip=0pt plus 1fil + +\_thinmuskip=3mu +\_medmuskip=4mu plus 2mu minus 4mu +\_thickmuskip=5mu plus 5mu + +% We also define special registers that function like parameters: +\_newskip\_smallskipamount \_smallskipamount=3pt plus 1pt minus 1pt +\_newskip\_medskipamount \_medskipamount=6pt plus 2pt minus 2pt +\_newskip\_bigskipamount \_bigskipamount=12pt plus 4pt minus 4pt +\_newskip\_normalbaselineskip \_normalbaselineskip=12pt +\_newskip\_normallineskip \_normallineskip=1pt +\_newdimen\_normallineskiplimit \_normallineskiplimit=0pt +\_newdimen\_jot \_jot=3pt +\_newcount\_interdisplaylinepenalty \_interdisplaylinepenalty=100 +\_newcount\_interfootnotelinepenalty \_interfootnotelinepenalty=100 + +\_def\_normalbaselines{\_lineskip=\_normallineskip + \_baselineskip=\_normalbaselineskip \_lineskiplimit=\_normallineskiplimit} +\_def\_frenchspacing{\_sfcode`\.=1000 \sfcode`\?=1000 \sfcode`\!=1000 + \sfcode`\:=1000 \sfcode`\;=1000 \sfcode`\,=1000 } +\_def\_nonfrenchspacing{\_sfcode`\.=3000 \sfcode`\?=3000 \sfcode`\!=3000 + \sfcode`\:=2000 \sfcode`\;=1500 \sfcode`\,=1250 } +\_public + \normalbaselines \frenchspacing \nonfrenchspacing ; + +\_normalbaselines % baseline setting, + % \nonfrenchspacing is not set -- we are living in Europe + +% Different values than in plaiTeX: + +\_outputmode=1 % PDF ouput +\_pdfvorigin=0pt +\_pdfhorigin=0pt +\_hoffset=20mm +\_voffset=20mm +\_hsize=170mm % 210mm (from A4 size) - 2*20mm (default margins) +\_vsize=257mm % 297mm (from A4 size) - 2*20mm (default margins) +\_pagewidth=210 true mm +\_pageheight=297 true mm + +\_def\_plaintexsetting{% + \_pdfvorigin=1in + \_pdfhorigin=1in + \_hoffset=0pt + \_voffset=0pt + \_hsize=6.5in + \_vsize=8.9in + \_pagewidth=8.5 true in + \_pageheight=11 true in +} + +\_public + \smallskipamount \medskipamount \bigskipamount + \normalbaselineskip \normallineskip \normallineskiplimit + \jot \interdisplaylinepenalty \interfootnotelinepenalty + \plaintexsetting ; + +\_endcode %---------------------------------------------------- + + +The parameters are set to the same values as in plain\TeX, but there is one +exception: The origin is at the top-left edge of the paper (this is more +practical than the origin in positioned in non-SI units). The default +typographical mirror is derived from A4 paper size and 20mm margins, not +from letter paper size and 1in margins. The reason is that we are living in +Europe where A4 paper is common in printers. + +The macro `\plaintexsetting` removes the difference described above and sets +the typographical mirror as in old plain\TeX. + diff --git a/macros/luatex/optex/pdfuni-string.opm b/macros/luatex/optex/pdfuni-string.opm new file mode 100644 index 0000000000..d9732472f2 --- /dev/null +++ b/macros/luatex/optex/pdfuni-string.opm @@ -0,0 +1,63 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \pdfunidef {PDFunicode strings for outlines <2019-05-21>} + +\_edef\_octalprint#1#2{\_noexpand\_directlua{% #1=character-code #2=character + if ('#2'>='A' and '#2'<='Z') or ('#2'>='a' and '#2'<='z') then + tex.print(string.format('000\_pcent s',"#2")) + else + tex.print(string.format('\_pcent 03o\_nbb\_pcent03o',#1/256,#1\_pcent256)) + end +}} +\_def\_pdfunidef#1#2{% + \_begingroup + \_catcode`\\=12 \_let\\=\_nbackslash + \_ea\_def\_ea#1\_ea{\_detokenize\_ea{#2}}% + \_ea\_replstring\_ea#1\_ea{\\}{\_pdfunidefA}% + \_edef#1{#1 ^}\_replstring#1{ ^}{}% \TeX /u -> \TeX/u + \_replstring#1{ }{{ }}% text text -> text{ }text + \_edef\_out{\\376\\377}% + \_ea\_pdfunidefB#1^% text -> \_out in octal + \_ea + \_endgroup + \_ea\_def\_ea#1\_ea{\_out} +} +\_def\_pdfunidefA #1 #2{\\#1\_ifx/#2/\_else\_space \_ea#2\_fi} +\_def\_pdfunidefB#1{% + \_ifx^#1\_else + \_tmpnum=`#1 + \_ea\_ifx\_nbackslash#1\_pdfunidefC{#1#1}\_else\_pdfunidefC{#1}\_fi + \_ea\_pdfunidefB \_fi +} +\_def\_pdfunidefC #1{\_edef\_out{\_out \\\_ea\_octalprint\_ea{\_the\_tmpnum}{#1}}} + +\public \pdfunidef ; + +\_endcode % -------------------------------- + +There are only two encodings for PDF strings (used in PDFoutlines, PDFinfo +etc.). First one is PDFDocEncoding which is one-byte encoding, but most +Czech or Slovak characters are missing here. + +The second encoding is PDFunicode encoding wich is implemented in this file. +This encoding is TeX-dicomfortable, because it looks like + +\376\377\000C\000v\000i\001\015\000e\000n\000\355\000\040\000j\000e\000\040 +\000z\000\341\000t\001\033\001\176 + +This example is real encoding of the string "Cvičení je zátěž". You can see +that this is UTF-16 encoding (two bytes per character) with two starting +bytes FEFF. Moreover, each byte is encoded by three octal digits preceded by +backslash. The only exception is the visible ASCII character encoding: such +a character is encoded by its real byte preceded by \000. + +The pdfuni.tex macro implements the command + +\pdfunidef\macro{string} + +We implemented the octal string printing of one character using \directlua. +The input string is preprocessed: detokenized, converted `\word /` to +`\word/` (used in logos) preprocessed spaces using \replstring and then the +\_pdfunidefB is repeated on each character. It calls the `\directlua` chunk +to print octal numbers. + diff --git a/macros/luatex/optex/plain-macros.opm b/macros/luatex/optex/plain-macros.opm new file mode 100644 index 0000000000..f2cf66f3cb --- /dev/null +++ b/macros/luatex/optex/plain-macros.opm @@ -0,0 +1,295 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \magstep {Macros from plain TeX <2019-05-21>} + +\_def\_dospecials {\do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\^^A\do\%\do\~} +\_public + \dospecials ; + +\_def \_magstephalf{1095 } +\_def \_magstep#1{\_ifcase#1 1000\_or 1200\_or 1440\_or 1728\_or 2074\_or 2488\_fi\_space} +\_public + \magstephalf \magstep ; + +\_def\_normalbaselines{\_lineskip=\_normallineskip + \_baselineskip=\_normalbaselineskip \_lineskiplimit=\_normallineskiplimit} +\_def\_frenchspacing{\_sfcode`\.=1000 \sfcode`\?=1000 \sfcode`\!=1000 + \sfcode`\:=1000 \sfcode`\;=1000 \sfcode`\,=1000 } +\_def\_nonfrenchspacing{\_sfcode`\.=3000 \sfcode`\?=3000 \sfcode`\!=3000 + \sfcode`\:=2000 \sfcode`\;=1500 \sfcode`\,=1250 } +\_public + \normalbaselines \frenchspacing \nonfrenchspacing ; + +\_normalbaselines % baseline setting + +\_def\^^M{\ } % control = control +\_def\^^I{\ } % same for + +\_def\lq{`} \def\rq{'} +\_def\lbrack{[} \_def\rbrack{]} +\_chardef\active=13 +% \catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par" % obsolete + +\_let\_endgraf=\_par \_let\_endline=\_cr +\_public + \endgraf \endline ; + +% In \obeylines, we say `\let^^M=\par' instead of `\def^^M{\par}' +% since this allows, for example, `\let\par=\cr \obeylines \halign{...' +{\_catcode`\^^M=13 % these lines must end with % + \_gdef\_obeylines{\_catcode`\^^M=13\_let^^M\_par}% + \_global\_let^^M=\par} % this is in case ^^M appears in a \write +\_def\_obeyspaces{\_catcode`\ =13 } +{\_obeyspaces\_global\_let =\_space} +\_public + \obeylines \obeyspaces ; + +\_protected\_def\_thinspace {\_kern .16667em } +\_protected\_def\_negthinspace {\_kern-.16667em } +\_protected\_def\_enspace {\_kern.5em } +\_protected\_def\_enskip {\_hskip.5em\_relax} +\_protected\_def\_quad {\_hskip1em\_relax} +\_protected\_def\_qquad {\_hskip2em\_relax} +\_protected\_def\_smallskip {\_vskip\_smallskipamount} +\_protected\_def\_medskip {\_vskip\_medskipamount} +\_protected\_def\_bigskip {\_vskip\_bigskipamount} +\_def\_nointerlineskip {\_prevdepth=-1000pt } +\_def\_offinterlineskip {\_baselineskip=-1000pt \_lineskip=0pt \_lineskiplimit=\_maxdimen} +\_public + \thinspace \negthinspace \enspace \enskip \quad \qquad \smallskip + \medskip \bigskip \nointerlineskip \offinterlineskip ; + +\_def\_topglue {\_nointerlineskip\_vglue-\_topskip\_vglue} % for top of page +\_def\_vglue {\_afterassignment\_vglA \_skip0=} +\_def\_vglA {\_par \_dimen0=\prevdepth \_hrule height0pt + \_nobreak\_vskip\_skip0 \_prevdepth=\_dimen0 } +\_def\_hglue {\_afterassignment\_hglA \_skip0=} +\_def\_hglA {\_leavevmode \_count255=\_spacefactor \_vrule width0pt + \_nobreak\_hskip\_skip0 \_spacefactor=\_count255 } +\_protected\def~{\penalty10000 \ } % tie +\_protected\_def\_slash {/\_penalty\_exhyphenpenalty} % a `/' that acts like a `-' +\_public + \topglue \vglue \hglue \slash ; + +\_protected\_def \_break {\_penalty-10000 } +\_protected\_def \_nobreak {\_penalty10000 } +\_protected\_def \_allowbreak {\_penalty0 } +\_protected\_def \_filbreak {\_par\_vfil\_penalty-200\_vfilneg} +\_protected\_def \_goodbreak {\_par\_penalty-500 } +\_protected\_def \_eject {\_par\_break} +\_protected\_def \_supereject {\_par\_penalty-20000 } +\_protected\_def \_dosupereject {\_ifnum \_insertpenalties>0 % something is being held over + \_line{}\_kern-\_topskip \_nobreak \_vfill \_supereject \_fi} +\_def \_removelastskip {\_ifdim\_lastskip=0pt \_else \_vskip-\_lastskip \_fi} +\_def \_smallbreak {\_par\_ifdim\_lastskip<\_smallskipamount + \_removelastskip \_penalty-50 \_smallskip \_fi} +\_def \_medbreak {\_par\_ifdim\_lastskip<\_medskipamount + \_removelastskip \_penalty-100 \_medskip \_fi} +\_def \_bigbreak {\_par\_ifdim\_lastskip<\_bigskipamount + \_removelastskip \_penalty-200 \_bigskip \_fi} +\_public + \break \nobreak \allowbreak \filbreak \goodbreak \eject \supereject \dosupereject + \removelastskip \smallbreak \medbreak \bigbreak ; + +\_def \_line {\_hbox to\_hsize} +\_def \_leftline #1{\_line{#1\_hss}} +\_def \_rightline #1{\_line{\_hss#1}} +\_def \_centerline #1{\_line{\_hss#1\_hss}} +\_def \_rlap #1{\_hbox to0pt{#1\_hss}} +\_def \_llap #1{\_hbox to0pt{\_hss#1}} +\_public + \line \leftline \rightline \centerline \rlap \llap ; + +\_def\_underbar #1{$\_setbox0=\_hbox{#1}\dp0=0pt \_math \_underline{\_box0}$} +\_public + \underbar ; + +\_newbox\_strutbox +\_setbox\_strutbox=\_hbox{\_vrule height8.5pt depth3.5pt width0pt} +\_def \_strut {\_relax\_ifmmode\_copy\_strutbox\_else\_unhcopy\_strutbox\_fi} +\_public + \strutbox \strut ; + +\_def \_hidewidth {\_hskip\_hideskip} % for alignment entries that can stick out +\_def \_ialign{\_everycr={}\_tabskip=\_zoskip \_halign} % initialized \halign +\_newcount\_mscount +\_def \_multispan #1{\_omit \_mscount=#1\_relax + \_loop \_ifnum\_mscount>1 \_spanA \_repeat} +\_def \_spanA {\_span\_omit \_advance\_mscount by-1 } +\_public + \hidewidth \ialign \multispan ; + +% tabbing macros ommited + +\_def \_hang {\_hangindent\_parindent} +\_def \_textindent #1{\_indent\_llap{#1\_enspace}\_ignorespaces} +\_def \_item {\_par\_hang\_textindent} +\_def \_itemitem {\_par\_indent \_hangindent2\_parindent \_textindent} +\_def \_narrower {\_advance\_leftskip\_parindent + \_advance\_rightskip\_parindent} +\_def \_raggedright {\_rightskip=0pt plus2em + \_spaceskip=.3333em \_xspaceskip=.5em\_relax} +\_def \_ttraggedright {\_tt \_rightskip=0pt plus2em\_relax} % for use with \tt only +\_public + \hang \textindent \item \itemitem \narrower \raggedright \ttraggedright ; + +%\chardef\%=`\% +\_let\% = \_pcent % more natural, can be used in lua codes. +\_chardef\&=`\& +\_chardef\#=`\# +\_chardef\$=`\$ +\_chardef\ss="FF +\_chardef\ae="E6 +\_chardef\oe="F7 +\_chardef\o="F8 +\_chardef\AE="C6 +\_chardef\OE="D7 +\_chardef\O="D8 +\_chardef\i="11 \chardef\j="12 % dotless letters +\_chardef\aa="E5 +\_chardef\AA="C5 +\_chardef\S="9F +\_def\l{\_errmessage{\_usedirectly ł}} +\_def\L{\_errmessage{\_usedirectly Ł}} +\def\_{\_ifmmode \_kern.06em \_vbox{\hrule width.3em}\_else _\fi} % obsolete +\_def\dag{\_errmessage{\_usedirectly †}} +\_def\ddag{\_errmessage{\_usedirectly ‡}} +\_def\copyright{\_errmessage{\_usedirectly ©}} +%\_def\Orb{\_mathhexbox20D} % obsolete (part of Copyright) +%\_def\P{\_mathhexbox27B} % obsolete + +\_def \_usedirectly #1{Load Unicoded font by \string\fontfam\space and use directly #1} +\_def \_leavevmode {\_unhbox\_voidbox} % begins a paragraph, if necessary +\_def \_mathhexbox #1#2#3{\_leavevmode \_hbox{$\_math \_mathchar"#1#2#3$}} +\_public + \leavevmode \mathhexbox ; + +\_def \_oalign #1{\_leavevmode\_vtop{\_baselineskip=0pt \_lineskip=.25ex + \_ialign{##\_crcr#1\_crcr}}} +\_def \_oalignA {\_lineskiplimit=0pt \_oalign} +\_def \_ooalign {\_lineskiplimit=-\_maxdimen \_oalign} % chars over each other +\_def \_shiftx #1{\_dimen0=#1\_kern\_ea\_ignorept \_the\_fontdimen1\_font + \_dimen0 } % kern by #1 times the current slant +\_def \d #1{{\_oalignA{\_relax#1\_crcr\_hidewidth\_shiftx{-1ex}.\_hidewidth}}} +\_def \b #1{{\_oalignA{\_relax#1\_crcr\_hidewidth\_shiftx{-3ex}% + \_vbox to.2ex{\_hbox{\_char\_macron}\_vss}\_hidewidth}}} +\_def \_c #1{{\_setbox0=\_hbox{#1}\_ifdim\_ht0=1ex\_accent\_cedilla #1% + \_else\_ooalign{\_unhbox0\_crcr\_hidewidth\_cedilla\_hidewidth}\_fi}} +\_def\_dots{\_relax\_ifmmode\_ldots\_else$\_math\_ldots\_thinsk$\_fi} +\_public + \oalign \ooalign \d \b \c \dots ; + +\def \_oldaccents {% + \_def\`##1{{\_accent\_grave ##1}}% + \_def\'##1{{\_accent\_acute ##1}}% + \_def\v##1{{\_accent\_caron ##1}}% + \_def\u##1{{\_accent\_breve ##1}}% + \_def\=##1{{\_accent\_macron ##1}}% + \_def\^##1{{\_accent\_circumflex ##1}}% + \_def\.##1{{\_accent\_dotaccent ##1}}% + \_def\H##1{{\_accent\_hungarumlaut ##1}}% + \_def\~##1{{\_accent\_tilde ##1}}% + \_def\"##1{{\_accent\_dieresis ##1}}% + \_def\r##1{{\_accent\_ring ##1}}% +} +\_public + \oldaccents ; + +% ec-lmr encoding (will be changed after \fontfam macro): +\_chardef\_grave=0 +\_chardef\_acute=1 +\_chardef\_circumflex=2 +\_chardef\_tilde=3 +\_chardef\_dieresis=4 +\_chardef\_hungarumlaut=5 +\_chardef\_ring=6 +\_chardef\_caron=7 +\_chardef\_breve=8 +\_chardef\_macron=9 +\_chardef\_dotaccent=10 +\_chardef\_cedilla=11 + +\_def \_uniaccents {% accents with Unicode + \_chardef\_grave="0060 + \_chardef\_acute="00B4 + \_chardef\_circumflex="005E + \_chardef\_tilde="02DC + \_chardef\_dieresis="00A8 + \_chardef\_hungarumlaut="02DD + \_chardef\_ring="02DA + \_chardef\_caron="02C7 + \_chardef\_breve="02D8 + \_chardef\_macron="00AF + \_chardef\_dotaccent="02D9 + \_chardef\_cedilla="00B8 + \_chardef\_ogonek="02DB + \_let \_uniaccents=\_relax +} + +\_def \_hrulefill {\_leaders\_hrule\_hfill} +\_def \_dotfill {\_cleaders\_hbox{$\_math \_mkern1.5mu.\_mkern1.5mu$}\_hfill} +\_def \_rightarrowfill {$\_math\_smash-\_mkern-7mu% + \_cleaders\_hbox{$\_mkern-2mu\_smash-\_mkern-2mu$}\_hfill + \_mkern-7mu\_mathord\_rightarrow$} +\_def \_leftarrowfill {$\_math\_mathord\_leftarrow\_mkern-7mu% + \_cleaders\_hbox{$\_mkern-2mu\_smash-\_mkern-2mu$}\_hfill + \_mkern-7mu\_smash-$} +\_public + \hrulefill \dotfill \rightarrowfill \leftarrowfill ; + +% \_downbracefil \_upbracefil will be re-defined when Unicode-math is used +\_mathchardef \_braceld="37A \_mathchardef \_bracerd="37B +\_mathchardef \_bracelu="37C \_mathchardef \_braceru="37D +\_def \downbracefill {$\_math \_setbox0=\_hbox{$\_braceld$}% + \_braceld \_leaders\_vrule height\_ht0 depth0pt \_hfill \_braceru + \_bracelu \_leaders\_vrule height\_ht0 depth0pt \_hfill \_bracerd$} +\_def \upbracefill {$\_math \_setbox0=\_hbox{$\_braceld$}% + \_bracelu \_leaders\_vrule height\_ht0 depth0pt \_hfill \_bracerd + \_braceld \_leaders\_vrule height\_ht0 depth0pt \_hfill \_braceru$} + +\_def \_magnification {\_afterassignment \_magA \_count255 } +\_def \_magA {\_mag=\_count255 \_truedimen\_hsize \_truedimen\_vsize + \_dimen\_footins=8truein +} +% only for backward compatibility, but \margins macro is preferred. +\_public + \magnification ; + +\_def \_showhyphens #1{\_setbox0=\_vbox{\_parfillskip=0pt \_hsize=\_maxdimen \_tenrm + \_pretolerance=-1 \tolerance=-1 \hbadness=0 \showboxdepth=0 \ #1}} + +\_def \_bye {\_par \_vfill \_supereject \_end} +\_public + \bye ; + + +\_endcode % ------------------------------------- + +All macros from plain TeX are rewritten here. Differences are mentioned in +the documentation below. + +The `\dospecials` works like in plin TeX but does nothing with `_`. +If you need to do the same with this character, you can re-define: + +\begtt + \addto \dospecials{\do\_} +\endtt + +The shortcuts like `\chardef\@one` is not defined in \OpTeX/. Use normal +numbers instead of such obscurities. + +The `\magstep` is defined with \space, no with \relax, in order to be +expandable. + +The `\strutbox` is declared as 10pt size dependent (like in plainTeX), but +the macro `\setbaselineskip` (from OPmac) redefines it. + +Few character codes are set for backward compatibility. But old obscurities +(from plain TeX) are not supported -- an error message about directly using +of the desired character is prepared instead). User can re-define the control +sequences `\l`, `\L`, `\aa`, `\copyright` etc. of course. + +The accents commands like `\v`, `\.`, `\H`, etc. are not defined. Use the +accented characters directly -- it is best solution. But you can use the +macro `\oldaccents` which defines accented macros. diff --git a/macros/luatex/optex/prefixed.opm b/macros/luatex/optex/prefixed.opm new file mode 100644 index 0000000000..8b73052337 --- /dev/null +++ b/macros/luatex/optex/prefixed.opm @@ -0,0 +1,133 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \public {Prefixing and code syntax <2020-01-23>} + +% all TeX82 primitives have alternative control sequence \_hbox \_string, ... + +\let\_directlua = \directlua + +\_directlua { + tex.enableprimitives('_', tex.extraprimitives('tex')) +} + +\_let\_ea =\_expandafter % usefull shortcut + +\_long\_def \_xargs #1#2{\_ifx #2;\_else \_ea#1\_ea#2\_ea\_xargs \_ea #1\_fi} +\_long\_def \_xstring #1{\_ea\_xstringA \_string#1^} +\_def \_xstringA #1#2^{#2} + +\_def \_public {\_xargs \_publicA} +\_def \_publicA #1{\_ea\_let \_ea#1\_csname _\_xstring #1\_endcsname} + +\_def \_private {\_xargs \_privateA} +\_def \_privateA #1{\_ea\_let \_csname _\_xstring #1\_endcsname =#1} + +\_def \_codedecl #1#2{% + \_ifx #1\_undefined \_wterm{#2}% + \_else \_expandafter \_endinput \_fi +} +\_def \_wterm {\_immediate \_write16 } + +\_public \public \private \xargs \xstring \ea \wterm ; + +\_endcode %---------------------------------------------------- + + +\secc Prefixing control sequences + +All control sequences used in \OpTeX/ are used and defined with `_` prefix. +Then user can be sure that when he/she does \def\foo then internal macros of +\OpTeX/ nor \TeX/ primitives will be not damaged. For example +`\def\ifx{something}` will not damage maros because \OpTeX/'s macros +are using `\_ifx` instead `\ifx`. + +All \TeX/ primitives are initialzed with two representative control +sequences: `\word` and `\_word`, for example `\hbox` and `\_hbox`. +The first alternative is reserved for users or such control sequences +can be re-defined by user. + +Note that \OpTeX/ sets the character `_` as letter, so it can be used in +control sequences. When a control sequence begins with this character +then it means that it is a primitive or it is used in \OpTeX/ macros as +internal. User can redefine such control sequence only if he/she explicitly +know what happens. + +We newer change catcode of `_`, so internal macros can be +redefined by user without problems if it is desired. We need not +something like `\makealetter` from \LaTeX/. + +\OpTeX/ defines all new macros as prefixed. For public usage of such macros +we need to set non-prefixed version. This is done by + +\begtt +\_public ; +\endtt + +For example `\_public \foo \bar ;` does `\let\foo=\_foo`, `\let\bar=\_bar`. + +At the end of each code segment in \OpTeX/, the `\_public` macro is used. You +can see, what macros are defined for public usage in such code segment. + +The macro `\_private` does reverse job to `\_public` with the same syntax. +For example `\_private \foo \bar ;` does `\let\_foo=\foo`, `\let\_bar=\bar`. +This should be used when nonprefixed variant of control sequence is declared +already but we need the prefixed variant too. + + +\secc Name space of control sequences for users + +User can define or declare any control sequence with a name without any `_`. +This does not make any problem. Only one exception is the reserved control +sequence `\par` which is generated and used as internal in \TeX/. + +User can define or declare control seqquences with `_` character, for +example `\my_control_sequence`, but with the following exceptions: + +\begitems +* Control sequences which begins with one `_` and there is no second `_` in + it and all used letters are lowercase, are reserved for \TeX/ primitives and + \OpTeX/ internal macros. +* Control sequences (terminated by non-letter) in the form + `\_` or `\_`, where + is a sequence of letters, are unaccesible, because they + are interpreted as `\` followed by `_` or as `\` followed by + `_`. This is important for writing math, for example: +\begtt + \int_a^b ... is interpreted as \int _a^b + \max_M ... is interpreted as \max _M + \alpha_{ij} ... is interpreted as \alpha _{ij} +\endtt + This feature is implemented using lua code at input processor level, see + math-macro.opm for more details. You can deactivate this feature by + `\mathsboff`. After this, you can stil write `$∫_a^b$` or `$\int _a^b$` + without problems but `\int_a^b` yields to undefined control sequence + `\int_a`. You can activate this feature again by `\mathsbon` -- the + effect will take shape from next line read from input file. +* Control sequences in the form `\__` is intended for package + writers as internal macros for a package with `` identifier. +\enditems + +All other control sequences can be used in user name space. For example `\word`, +`\word_xx`, `\Word_x`, `\word_x_y`. + + +\secc Macro files syntax + +Each segment of \OpTeX/ marcos is stored in one file with `.opm` extension +(means OPtex Macros). Your macros should be in normal *.tex file. + +The code in `*.opm` files starts by `\_codedecl` and ends by `\_endcode`. +The `\_endcode` is equivalent for `\endinput`, so documentation can follow. +The `\_codedecl` has syntax: + +\begtt +\_codedecl \sequence {Name } +\endtt + +If the mentioned `\sequence` is defined, then `\_codedecl` does the same as +`\endinput`: this protect from reading the file twice. We suppose, that +`\sequence` is defined. + +We can read the `*.opm` file in documentation mode. Then the code and the +comments after `\_endcode` are printed. + diff --git a/macros/luatex/optex/ring.png b/macros/luatex/optex/ring.png new file mode 100644 index 0000000000..257146bc6d Binary files /dev/null and b/macros/luatex/optex/ring.png differ diff --git a/macros/luatex/optex/uni-lcuc.opm b/macros/luatex/optex/uni-lcuc.opm new file mode 100644 index 0000000000..3e753370d9 --- /dev/null +++ b/macros/luatex/optex/uni-lcuc.opm @@ -0,0 +1,15928 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +% A copy o uni-lcuc.tex fom csplain is here + +% uni-lcuc.tex -- sets \lccodes and \uccodes for Unicode chars, nothing more +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Petr Olsak, Jul. 2014 + +\_wterm{Setting lccodes and uccodes for Unicode characters} + +\_def\_tmp #1 #2 {\_ifx^#1^\_else + \_lccode"#1="#1 + \_ifx.#2% + \_uccode"#1="#1 + \_else + \_uccode"#2="#2 + \_lccode"#2="#1 + \_uccode"#1="#2 + \_fi + \_ea \_tmp \fi +} +\_tmp +00AA . +00B5 039C +00BA . +00E0 00C0 +00E1 00C1 +00E2 00C2 +00E3 00C3 +00E4 00C4 +00E5 00C5 +00E6 00C6 +00E7 00C7 +00E8 00C8 +00E9 00C9 +00EA 00CA +00EB 00CB +00EC 00CC +00ED 00CD +00EE 00CE +00EF 00CF +00F0 00D0 +00F1 00D1 +00F2 00D2 +00F3 00D3 +00F4 00D4 +00F5 00D5 +00F6 00D6 +00F8 00D8 +00F9 00D9 +00FA 00DA +00FB 00DB +00FC 00DC +00FD 00DD +00FE 00DE +00DF . +00FF 0178 +0101 0100 +0103 0102 +0105 0104 +0107 0106 +0109 0108 +010B 010A +010D 010C +010F 010E +0111 0110 +0113 0112 +0115 0114 +0117 0116 +0119 0118 +011B 011A +011D 011C +011F 011E +0121 0120 +0123 0122 +0125 0124 +0127 0126 +0129 0128 +012B 012A +012D 012C +012F 012E +0133 0132 +0135 0134 +0137 0136 +0138 . +013A 0139 +013C 013B +013E 013D +0140 013F +0142 0141 +0144 0143 +0146 0145 +0148 0147 +0149 . +014B 014A +014D 014C +014F 014E +0151 0150 +0153 0152 +0155 0154 +0157 0156 +0159 0158 +015B 015A +015D 015C +015F 015E +0161 0160 +0163 0162 +0165 0164 +0167 0166 +0169 0168 +016B 016A +016D 016C +016F 016E +0171 0170 +0173 0172 +0175 0174 +0177 0176 +017A 0179 +017C 017B +017E 017D +0180 0243 +0253 0181 +0183 0182 +0185 0184 +0254 0186 +0188 0187 +0256 0189 +0257 018A +018C 018B +018D . +01DD 018E +0259 018F +025B 0190 +0192 0191 +0260 0193 +0263 0194 +0195 01F6 +0269 0196 +0268 0197 +0199 0198 +019A 023D +019B . +026F 019C +0272 019D +019E 0220 +0275 019F +01A1 01A0 +01A3 01A2 +01A5 01A4 +0280 01A6 +01A8 01A7 +0283 01A9 +01AA . +01AB . +01AD 01AC +0288 01AE +01B0 01AF +028A 01B1 +028B 01B2 +01B4 01B3 +01B6 01B5 +0292 01B7 +01B9 01B8 +01BA . +01BB . +01BD 01BC +01BE . +01BF 01F7 +01C0 . +01C1 . +01C2 . +01C3 . +01C6 01C4 +01C9 01C7 +01CC 01CA +01CE 01CD +01D0 01CF +01D2 01D1 +01D4 01D3 +01D6 01D5 +01D8 01D7 +01DA 01D9 +01DC 01DB +01DF 01DE +01E1 01E0 +01E3 01E2 +01E5 01E4 +01E7 01E6 +01E9 01E8 +01EB 01EA +01ED 01EC +01EF 01EE +01F0 . +01F3 01F1 +01F5 01F4 +01F9 01F8 +01FB 01FA +01FD 01FC +01FF 01FE +0201 0200 +0203 0202 +0205 0204 +0207 0206 +0209 0208 +020B 020A +020D 020C +020F 020E +0211 0210 +0213 0212 +0215 0214 +0217 0216 +0219 0218 +021B 021A +021D 021C +021F 021E +0221 . +0223 0222 +0225 0224 +0227 0226 +0229 0228 +022B 022A +022D 022C +022F 022E +0231 0230 +0233 0232 +0234 . +0235 . +0236 . +0237 . +0238 . +0239 . +2C65 023A +023C 023B +2C66 023E +023F 2C7E +0240 2C7F +0242 0241 +0289 0244 +028C 0245 +0247 0246 +0249 0248 +024B 024A +024D 024C +024F 024E +0250 2C6F +0251 2C6D +0252 2C70 +0255 . +0258 . +025A . +025C . +025D . +025E . +025F . +0261 . +0262 . +0264 . +0265 A78D +0266 A7AA +0267 . +026A . +026B 2C62 +026C . +026D . +026E . +0270 . +0271 2C6E +0273 . +0274 . +0276 . +0277 . +0278 . +0279 . +027A . +027B . +027C . +027D 2C64 +027E . +027F . +0281 . +0282 . +0284 . +0285 . +0286 . +0287 . +028D . +028E . +028F . +0290 . +0291 . +0293 . +0294 . +0295 . +0296 . +0297 . +0298 . +0299 . +029A . +029B . +029C . +029D . +029E . +029F . +02A0 . +02A1 . +02A2 . +02A3 . +02A4 . +02A5 . +02A6 . +02A7 . +02A8 . +02A9 . +02AA . +02AB . +02AC . +02AD . +02AE . +02AF . +02B0 . +02B1 . +02B2 . +02B3 . +02B4 . +02B5 . +02B6 . +02B7 . +02B8 . +02B9 . +02BA . +02BB . +02BC . +02BD . +02BE . +02BF . +02C0 . +02C1 . +02C6 . +02C7 . +02C8 . +02C9 . +02CA . +02CB . +02CC . +02CD . +02CE . +02CF . +02D0 . +02D1 . +02E0 . +02E1 . +02E2 . +02E3 . +02E4 . +02EC . +02EE . +0371 0370 +0373 0372 +0374 . +0377 0376 +037A . +037B 03FD +037C 03FE +037D 03FF +03AC 0386 +03AD 0388 +03AE 0389 +03AF 038A +03CC 038C +03CD 038E +03CE 038F +0390 . +03B1 0391 +03B2 0392 +03B3 0393 +03B4 0394 +03B5 0395 +03B6 0396 +03B7 0397 +03B8 0398 +03B9 0399 +03BA 039A +03BB 039B +03BD 039D +03BE 039E +03BF 039F +03C0 03A0 +03C1 03A1 +03C3 03A3 +03C4 03A4 +03C5 03A5 +03C6 03A6 +03C7 03A7 +03C8 03A8 +03C9 03A9 +03CA 03AA +03CB 03AB +03B0 . +03D7 03CF +03D2 . +03D3 . +03D4 . +03D9 03D8 +03DB 03DA +03DD 03DC +03DF 03DE +03E1 03E0 +03E3 03E2 +03E5 03E4 +03E7 03E6 +03E9 03E8 +03EB 03EA +03ED 03EC +03EF 03EE +03F2 03F9 +03F3 . +03F8 03F7 +03FB 03FA +03FC . +0450 0400 +0451 0401 +0452 0402 +0453 0403 +0454 0404 +0455 0405 +0456 0406 +0457 0407 +0458 0408 +0459 0409 +045A 040A +045B 040B +045C 040C +045D 040D +045E 040E +045F 040F +0430 0410 +0431 0411 +0432 0412 +0433 0413 +0434 0414 +0435 0415 +0436 0416 +0437 0417 +0438 0418 +0439 0419 +043A 041A +043B 041B +043C 041C +043D 041D +043E 041E +043F 041F +0440 0420 +0441 0421 +0442 0422 +0443 0423 +0444 0424 +0445 0425 +0446 0426 +0447 0427 +0448 0428 +0449 0429 +044A 042A +044B 042B +044C 042C +044D 042D +044E 042E +044F 042F +0461 0460 +0463 0462 +0465 0464 +0467 0466 +0469 0468 +046B 046A +046D 046C +046F 046E +0471 0470 +0473 0472 +0475 0474 +0477 0476 +0479 0478 +047B 047A +047D 047C +047F 047E +0481 0480 +048B 048A +048D 048C +048F 048E +0491 0490 +0493 0492 +0495 0494 +0497 0496 +0499 0498 +049B 049A +049D 049C +049F 049E +04A1 04A0 +04A3 04A2 +04A5 04A4 +04A7 04A6 +04A9 04A8 +04AB 04AA +04AD 04AC +04AF 04AE +04B1 04B0 +04B3 04B2 +04B5 04B4 +04B7 04B6 +04B9 04B8 +04BB 04BA +04BD 04BC +04BF 04BE +04CF 04C0 +04C2 04C1 +04C4 04C3 +04C6 04C5 +04C8 04C7 +04CA 04C9 +04CC 04CB +04CE 04CD +04D1 04D0 +04D3 04D2 +04D5 04D4 +04D7 04D6 +04D9 04D8 +04DB 04DA +04DD 04DC +04DF 04DE +04E1 04E0 +04E3 04E2 +04E5 04E4 +04E7 04E6 +04E9 04E8 +04EB 04EA +04ED 04EC +04EF 04EE +04F1 04F0 +04F3 04F2 +04F5 04F4 +04F7 04F6 +04F9 04F8 +04FB 04FA +04FD 04FC +04FF 04FE +0501 0500 +0503 0502 +0505 0504 +0507 0506 +0509 0508 +050B 050A +050D 050C +050F 050E +0511 0510 +0513 0512 +0515 0514 +0517 0516 +0519 0518 +051B 051A +051D 051C +051F 051E +0521 0520 +0523 0522 +0525 0524 +0527 0526 +0561 0531 +0562 0532 +0563 0533 +0564 0534 +0565 0535 +0566 0536 +0567 0537 +0568 0538 +0569 0539 +056A 053A +056B 053B +056C 053C +056D 053D +056E 053E +056F 053F +0570 0540 +0571 0541 +0572 0542 +0573 0543 +0574 0544 +0575 0545 +0576 0546 +0577 0547 +0578 0548 +0579 0549 +057A 054A +057B 054B +057C 054C +057D 054D +057E 054E +057F 054F +0580 0550 +0581 0551 +0582 0552 +0583 0553 +0584 0554 +0585 0555 +0586 0556 +0559 . +0587 . +05D0 . +05D1 . +05D2 . +05D3 . +05D4 . +05D5 . +05D6 . +05D7 . +05D8 . +05D9 . +05DA . +05DB . +05DC . +05DD . +05DE . +05DF . +05E0 . +05E1 . +05E2 . +05E3 . +05E4 . +05E5 . +05E6 . +05E7 . +05E8 . +05E9 . +05EA . +05F0 . +05F1 . +05F2 . +0620 . +0621 . +0622 . +0623 . +0624 . +0625 . +0626 . +0627 . +0628 . +0629 . +062A . +062B . +062C . +062D . +062E . +062F . +0630 . +0631 . +0632 . +0633 . +0634 . +0635 . +0636 . +0637 . +0638 . +0639 . +063A . +063B . +063C . +063D . +063E . +063F . +0640 . +0641 . +0642 . +0643 . +0644 . +0645 . +0646 . +0647 . +0648 . +0649 . +064A . +066E . +066F . +0671 . +0672 . +0673 . +0674 . +0675 . +0676 . +0677 . +0678 . +0679 . +067A . +067B . +067C . +067D . +067E . +067F . +0680 . +0681 . +0682 . +0683 . +0684 . +0685 . +0686 . +0687 . +0688 . +0689 . +068A . +068B . +068C . +068D . +068E . +068F . +0690 . +0691 . +0692 . +0693 . +0694 . +0695 . +0696 . +0697 . +0698 . +0699 . +069A . +069B . +069C . +069D . +069E . +069F . +06A0 . +06A1 . +06A2 . +06A3 . +06A4 . +06A5 . +06A6 . +06A7 . +06A8 . +06A9 . +06AA . +06AB . +06AC . +06AD . +06AE . +06AF . +06B0 . +06B1 . +06B2 . +06B3 . +06B4 . +06B5 . +06B6 . +06B7 . +06B8 . +06B9 . +06BA . +06BB . +06BC . +06BD . +06BE . +06BF . +06C0 . +06C1 . +06C2 . +06C3 . +06C4 . +06C5 . +06C6 . +06C7 . +06C8 . +06C9 . +06CA . +06CB . +06CC . +06CD . +06CE . +06CF . +06D0 . +06D1 . +06D2 . +06D3 . +06D5 . +06E5 . +06E6 . +06EE . +06EF . +06FA . +06FB . +06FC . +06FF . +0710 . +0712 . +0713 . +0714 . +0715 . +0716 . +0717 . +0718 . +0719 . +071A . +071B . +071C . +071D . +071E . +071F . +0720 . +0721 . +0722 . +0723 . +0724 . +0725 . +0726 . +0727 . +0728 . +0729 . +072A . +072B . +072C . +072D . +072E . +072F . +074D . +074E . +074F . +0750 . +0751 . +0752 . +0753 . +0754 . +0755 . +0756 . +0757 . +0758 . +0759 . +075A . +075B . +075C . +075D . +075E . +075F . +0760 . +0761 . +0762 . +0763 . +0764 . +0765 . +0766 . +0767 . +0768 . +0769 . +076A . +076B . +076C . +076D . +076E . +076F . +0770 . +0771 . +0772 . +0773 . +0774 . +0775 . +0776 . +0777 . +0778 . +0779 . +077A . +077B . +077C . +077D . +077E . +077F . +0780 . +0781 . +0782 . +0783 . +0784 . +0785 . +0786 . +0787 . +0788 . +0789 . +078A . +078B . +078C . +078D . +078E . +078F . +0790 . +0791 . +0792 . +0793 . +0794 . +0795 . +0796 . +0797 . +0798 . +0799 . +079A . +079B . +079C . +079D . +079E . +079F . +07A0 . +07A1 . +07A2 . +07A3 . +07A4 . +07A5 . +07B1 . +07CA . +07CB . +07CC . +07CD . +07CE . +07CF . +07D0 . +07D1 . +07D2 . +07D3 . +07D4 . +07D5 . +07D6 . +07D7 . +07D8 . +07D9 . +07DA . +07DB . +07DC . +07DD . +07DE . +07DF . +07E0 . +07E1 . +07E2 . +07E3 . +07E4 . +07E5 . +07E6 . +07E7 . +07E8 . +07E9 . +07EA . +07F4 . +07F5 . +07FA . +0800 . +0801 . +0802 . +0803 . +0804 . +0805 . +0806 . +0807 . +0808 . +0809 . +080A . +080B . +080C . +080D . +080E . +080F . +0810 . +0811 . +0812 . +0813 . +0814 . +0815 . +081A . +0824 . +0828 . +0840 . +0841 . +0842 . +0843 . +0844 . +0845 . +0846 . +0847 . +0848 . +0849 . +084A . +084B . +084C . +084D . +084E . +084F . +0850 . +0851 . +0852 . +0853 . +0854 . +0855 . +0856 . +0857 . +0858 . +08A0 . +08A2 . +08A3 . +08A4 . +08A5 . +08A6 . +08A7 . +08A8 . +08A9 . +08AA . +08AB . +08AC . +0904 . +0905 . +0906 . +0907 . +0908 . +0909 . +090A . +090B . +090C . +090D . +090E . +090F . +0910 . +0911 . +0912 . +0913 . +0914 . +0915 . +0916 . +0917 . +0918 . +0919 . +091A . +091B . +091C . +091D . +091E . +091F . +0920 . +0921 . +0922 . +0923 . +0924 . +0925 . +0926 . +0927 . +0928 . +0929 . +092A . +092B . +092C . +092D . +092E . +092F . +0930 . +0931 . +0932 . +0933 . +0934 . +0935 . +0936 . +0937 . +0938 . +0939 . +093D . +0950 . +0958 . +0959 . +095A . +095B . +095C . +095D . +095E . +095F . +0960 . +0961 . +0971 . +0972 . +0973 . +0974 . +0975 . +0976 . +0977 . +0979 . +097A . +097B . +097C . +097D . +097E . +097F . +0985 . +0986 . +0987 . +0988 . +0989 . +098A . +098B . +098C . +098F . +0990 . +0993 . +0994 . +0995 . +0996 . +0997 . +0998 . +0999 . +099A . +099B . +099C . +099D . +099E . +099F . +09A0 . +09A1 . +09A2 . +09A3 . +09A4 . +09A5 . +09A6 . +09A7 . +09A8 . +09AA . +09AB . +09AC . +09AD . +09AE . +09AF . +09B0 . +09B2 . +09B6 . +09B7 . +09B8 . +09B9 . +09BD . +09CE . +09DC . +09DD . +09DF . +09E0 . +09E1 . +09F0 . +09F1 . +0A05 . +0A06 . +0A07 . +0A08 . +0A09 . +0A0A . +0A0F . +0A10 . +0A13 . +0A14 . +0A15 . +0A16 . +0A17 . +0A18 . +0A19 . +0A1A . +0A1B . +0A1C . +0A1D . +0A1E . +0A1F . +0A20 . +0A21 . +0A22 . +0A23 . +0A24 . +0A25 . +0A26 . +0A27 . +0A28 . +0A2A . +0A2B . +0A2C . +0A2D . +0A2E . +0A2F . +0A30 . +0A32 . +0A33 . +0A35 . +0A36 . +0A38 . +0A39 . +0A59 . +0A5A . +0A5B . +0A5C . +0A5E . +0A72 . +0A73 . +0A74 . +0A85 . +0A86 . +0A87 . +0A88 . +0A89 . +0A8A . +0A8B . +0A8C . +0A8D . +0A8F . +0A90 . +0A91 . +0A93 . +0A94 . +0A95 . +0A96 . +0A97 . +0A98 . +0A99 . +0A9A . +0A9B . +0A9C . +0A9D . +0A9E . +0A9F . +0AA0 . +0AA1 . +0AA2 . +0AA3 . +0AA4 . +0AA5 . +0AA6 . +0AA7 . +0AA8 . +0AAA . +0AAB . +0AAC . +0AAD . +0AAE . +0AAF . +0AB0 . +0AB2 . +0AB3 . +0AB5 . +0AB6 . +0AB7 . +0AB8 . +0AB9 . +0ABD . +0AD0 . +0AE0 . +0AE1 . +0B05 . +0B06 . +0B07 . +0B08 . +0B09 . +0B0A . +0B0B . +0B0C . +0B0F . +0B10 . +0B13 . +0B14 . +0B15 . +0B16 . +0B17 . +0B18 . +0B19 . +0B1A . +0B1B . +0B1C . +0B1D . +0B1E . +0B1F . +0B20 . +0B21 . +0B22 . +0B23 . +0B24 . +0B25 . +0B26 . +0B27 . +0B28 . +0B2A . +0B2B . +0B2C . +0B2D . +0B2E . +0B2F . +0B30 . +0B32 . +0B33 . +0B35 . +0B36 . +0B37 . +0B38 . +0B39 . +0B3D . +0B5C . +0B5D . +0B5F . +0B60 . +0B61 . +0B71 . +0B83 . +0B85 . +0B86 . +0B87 . +0B88 . +0B89 . +0B8A . +0B8E . +0B8F . +0B90 . +0B92 . +0B93 . +0B94 . +0B95 . +0B99 . +0B9A . +0B9C . +0B9E . +0B9F . +0BA3 . +0BA4 . +0BA8 . +0BA9 . +0BAA . +0BAE . +0BAF . +0BB0 . +0BB1 . +0BB2 . +0BB3 . +0BB4 . +0BB5 . +0BB6 . +0BB7 . +0BB8 . +0BB9 . +0BD0 . +0C05 . +0C06 . +0C07 . +0C08 . +0C09 . +0C0A . +0C0B . +0C0C . +0C0E . +0C0F . +0C10 . +0C12 . +0C13 . +0C14 . +0C15 . +0C16 . +0C17 . +0C18 . +0C19 . +0C1A . +0C1B . +0C1C . +0C1D . +0C1E . +0C1F . +0C20 . +0C21 . +0C22 . +0C23 . +0C24 . +0C25 . +0C26 . +0C27 . +0C28 . +0C2A . +0C2B . +0C2C . +0C2D . +0C2E . +0C2F . +0C30 . +0C31 . +0C32 . +0C33 . +0C35 . +0C36 . +0C37 . +0C38 . +0C39 . +0C3D . +0C58 . +0C59 . +0C60 . +0C61 . +0C85 . +0C86 . +0C87 . +0C88 . +0C89 . +0C8A . +0C8B . +0C8C . +0C8E . +0C8F . +0C90 . +0C92 . +0C93 . +0C94 . +0C95 . +0C96 . +0C97 . +0C98 . +0C99 . +0C9A . +0C9B . +0C9C . +0C9D . +0C9E . +0C9F . +0CA0 . +0CA1 . +0CA2 . +0CA3 . +0CA4 . +0CA5 . +0CA6 . +0CA7 . +0CA8 . +0CAA . +0CAB . +0CAC . +0CAD . +0CAE . +0CAF . +0CB0 . +0CB1 . +0CB2 . +0CB3 . +0CB5 . +0CB6 . +0CB7 . +0CB8 . +0CB9 . +0CBD . +0CDE . +0CE0 . +0CE1 . +0CF1 . +0CF2 . +0D05 . +0D06 . +0D07 . +0D08 . +0D09 . +0D0A . +0D0B . +0D0C . +0D0E . +0D0F . +0D10 . +0D12 . +0D13 . +0D14 . +0D15 . +0D16 . +0D17 . +0D18 . +0D19 . +0D1A . +0D1B . +0D1C . +0D1D . +0D1E . +0D1F . +0D20 . +0D21 . +0D22 . +0D23 . +0D24 . +0D25 . +0D26 . +0D27 . +0D28 . +0D29 . +0D2A . +0D2B . +0D2C . +0D2D . +0D2E . +0D2F . +0D30 . +0D31 . +0D32 . +0D33 . +0D34 . +0D35 . +0D36 . +0D37 . +0D38 . +0D39 . +0D3A . +0D3D . +0D4E . +0D60 . +0D61 . +0D7A . +0D7B . +0D7C . +0D7D . +0D7E . +0D7F . +0D85 . +0D86 . +0D87 . +0D88 . +0D89 . +0D8A . +0D8B . +0D8C . +0D8D . +0D8E . +0D8F . +0D90 . +0D91 . +0D92 . +0D93 . +0D94 . +0D95 . +0D96 . +0D9A . +0D9B . +0D9C . +0D9D . +0D9E . +0D9F . +0DA0 . +0DA1 . +0DA2 . +0DA3 . +0DA4 . +0DA5 . +0DA6 . +0DA7 . +0DA8 . +0DA9 . +0DAA . +0DAB . +0DAC . +0DAD . +0DAE . +0DAF . +0DB0 . +0DB1 . +0DB3 . +0DB4 . +0DB5 . +0DB6 . +0DB7 . +0DB8 . +0DB9 . +0DBA . +0DBB . +0DBD . +0DC0 . +0DC1 . +0DC2 . +0DC3 . +0DC4 . +0DC5 . +0DC6 . +0E01 . +0E02 . +0E03 . +0E04 . +0E05 . +0E06 . +0E07 . +0E08 . +0E09 . +0E0A . +0E0B . +0E0C . +0E0D . +0E0E . +0E0F . +0E10 . +0E11 . +0E12 . +0E13 . +0E14 . +0E15 . +0E16 . +0E17 . +0E18 . +0E19 . +0E1A . +0E1B . +0E1C . +0E1D . +0E1E . +0E1F . +0E20 . +0E21 . +0E22 . +0E23 . +0E24 . +0E25 . +0E26 . +0E27 . +0E28 . +0E29 . +0E2A . +0E2B . +0E2C . +0E2D . +0E2E . +0E2F . +0E30 . +0E32 . +0E33 . +0E40 . +0E41 . +0E42 . +0E43 . +0E44 . +0E45 . +0E46 . +0E81 . +0E82 . +0E84 . +0E87 . +0E88 . +0E8A . +0E8D . +0E94 . +0E95 . +0E96 . +0E97 . +0E99 . +0E9A . +0E9B . +0E9C . +0E9D . +0E9E . +0E9F . +0EA1 . +0EA2 . +0EA3 . +0EA5 . +0EA7 . +0EAA . +0EAB . +0EAD . +0EAE . +0EAF . +0EB0 . +0EB2 . +0EB3 . +0EBD . +0EC0 . +0EC1 . +0EC2 . +0EC3 . +0EC4 . +0EC6 . +0EDC . +0EDD . +0EDE . +0EDF . +0F00 . +0F40 . +0F41 . +0F42 . +0F43 . +0F44 . +0F45 . +0F46 . +0F47 . +0F49 . +0F4A . +0F4B . +0F4C . +0F4D . +0F4E . +0F4F . +0F50 . +0F51 . +0F52 . +0F53 . +0F54 . +0F55 . +0F56 . +0F57 . +0F58 . +0F59 . +0F5A . +0F5B . +0F5C . +0F5D . +0F5E . +0F5F . +0F60 . +0F61 . +0F62 . +0F63 . +0F64 . +0F65 . +0F66 . +0F67 . +0F68 . +0F69 . +0F6A . +0F6B . +0F6C . +0F88 . +0F89 . +0F8A . +0F8B . +0F8C . +1000 . +1001 . +1002 . +1003 . +1004 . +1005 . +1006 . +1007 . +1008 . +1009 . +100A . +100B . +100C . +100D . +100E . +100F . +1010 . +1011 . +1012 . +1013 . +1014 . +1015 . +1016 . +1017 . +1018 . +1019 . +101A . +101B . +101C . +101D . +101E . +101F . +1020 . +1021 . +1022 . +1023 . +1024 . +1025 . +1026 . +1027 . +1028 . +1029 . +102A . +103F . +1050 . +1051 . +1052 . +1053 . +1054 . +1055 . +105A . +105B . +105C . +105D . +1061 . +1065 . +1066 . +106E . +106F . +1070 . +1075 . +1076 . +1077 . +1078 . +1079 . +107A . +107B . +107C . +107D . +107E . +107F . +1080 . +1081 . +108E . +2D00 10A0 +2D01 10A1 +2D02 10A2 +2D03 10A3 +2D04 10A4 +2D05 10A5 +2D06 10A6 +2D07 10A7 +2D08 10A8 +2D09 10A9 +2D0A 10AA +2D0B 10AB +2D0C 10AC +2D0D 10AD +2D0E 10AE +2D0F 10AF +2D10 10B0 +2D11 10B1 +2D12 10B2 +2D13 10B3 +2D14 10B4 +2D15 10B5 +2D16 10B6 +2D17 10B7 +2D18 10B8 +2D19 10B9 +2D1A 10BA +2D1B 10BB +2D1C 10BC +2D1D 10BD +2D1E 10BE +2D1F 10BF +2D20 10C0 +2D21 10C1 +2D22 10C2 +2D23 10C3 +2D24 10C4 +2D25 10C5 +2D27 10C7 +2D2D 10CD +10D0 . +10D1 . +10D2 . +10D3 . +10D4 . +10D5 . +10D6 . +10D7 . +10D8 . +10D9 . +10DA . +10DB . +10DC . +10DD . +10DE . +10DF . +10E0 . +10E1 . +10E2 . +10E3 . +10E4 . +10E5 . +10E6 . +10E7 . +10E8 . +10E9 . +10EA . +10EB . +10EC . +10ED . +10EE . +10EF . +10F0 . +10F1 . +10F2 . +10F3 . +10F4 . +10F5 . +10F6 . +10F7 . +10F8 . +10F9 . +10FA . +10FC . +10FD . +10FE . +10FF . +1100 . +1101 . +1102 . +1103 . +1104 . +1105 . +1106 . +1107 . +1108 . +1109 . +110A . +110B . +110C . +110D . +110E . +110F . +1110 . +1111 . +1112 . +1113 . +1114 . +1115 . +1116 . +1117 . +1118 . +1119 . +111A . +111B . +111C . +111D . +111E . +111F . +1120 . +1121 . +1122 . +1123 . +1124 . +1125 . +1126 . +1127 . +1128 . +1129 . +112A . +112B . +112C . +112D . +112E . +112F . +1130 . +1131 . +1132 . +1133 . +1134 . +1135 . +1136 . +1137 . +1138 . +1139 . +113A . +113B . +113C . +113D . +113E . +113F . +1140 . +1141 . +1142 . +1143 . +1144 . +1145 . +1146 . +1147 . +1148 . +1149 . +114A . +114B . +114C . +114D . +114E . +114F . +1150 . +1151 . +1152 . +1153 . +1154 . +1155 . +1156 . +1157 . +1158 . +1159 . +115A . +115B . +115C . +115D . +115E . +115F . +1160 . +1161 . +1162 . +1163 . +1164 . +1165 . +1166 . +1167 . +1168 . +1169 . +116A . +116B . +116C . +116D . +116E . +116F . +1170 . +1171 . +1172 . +1173 . +1174 . +1175 . +1176 . +1177 . +1178 . +1179 . +117A . +117B . +117C . +117D . +117E . +117F . +1180 . +1181 . +1182 . +1183 . +1184 . +1185 . +1186 . +1187 . +1188 . +1189 . +118A . +118B . +118C . +118D . +118E . +118F . +1190 . +1191 . +1192 . +1193 . +1194 . +1195 . +1196 . +1197 . +1198 . +1199 . +119A . +119B . +119C . +119D . +119E . +119F . +11A0 . +11A1 . +11A2 . +11A3 . +11A4 . +11A5 . +11A6 . +11A7 . +11A8 . +11A9 . +11AA . +11AB . +11AC . +11AD . +11AE . +11AF . +11B0 . +11B1 . +11B2 . +11B3 . +11B4 . +11B5 . +11B6 . +11B7 . +11B8 . +11B9 . +11BA . +11BB . +11BC . +11BD . +11BE . +11BF . +11C0 . +11C1 . +11C2 . +11C3 . +11C4 . +11C5 . +11C6 . +11C7 . +11C8 . +11C9 . +11CA . +11CB . +11CC . +11CD . +11CE . +11CF . +11D0 . +11D1 . +11D2 . +11D3 . +11D4 . +11D5 . +11D6 . +11D7 . +11D8 . +11D9 . +11DA . +11DB . +11DC . +11DD . +11DE . +11DF . +11E0 . +11E1 . +11E2 . +11E3 . +11E4 . +11E5 . +11E6 . +11E7 . +11E8 . +11E9 . +11EA . +11EB . +11EC . +11ED . +11EE . +11EF . +11F0 . +11F1 . +11F2 . +11F3 . +11F4 . +11F5 . +11F6 . +11F7 . +11F8 . +11F9 . +11FA . +11FB . +11FC . +11FD . +11FE . +11FF . +1200 . +1201 . +1202 . +1203 . +1204 . +1205 . +1206 . +1207 . +1208 . +1209 . +120A . +120B . +120C . +120D . +120E . +120F . +1210 . +1211 . +1212 . +1213 . +1214 . +1215 . +1216 . +1217 . +1218 . +1219 . +121A . +121B . +121C . +121D . +121E . +121F . +1220 . +1221 . +1222 . +1223 . +1224 . +1225 . +1226 . +1227 . +1228 . +1229 . +122A . +122B . +122C . +122D . +122E . +122F . +1230 . +1231 . +1232 . +1233 . +1234 . +1235 . +1236 . +1237 . +1238 . +1239 . +123A . +123B . +123C . +123D . +123E . +123F . +1240 . +1241 . +1242 . +1243 . +1244 . +1245 . +1246 . +1247 . +1248 . +124A . +124B . +124C . +124D . +1250 . +1251 . +1252 . +1253 . +1254 . +1255 . +1256 . +1258 . +125A . +125B . +125C . +125D . +1260 . +1261 . +1262 . +1263 . +1264 . +1265 . +1266 . +1267 . +1268 . +1269 . +126A . +126B . +126C . +126D . +126E . +126F . +1270 . +1271 . +1272 . +1273 . +1274 . +1275 . +1276 . +1277 . +1278 . +1279 . +127A . +127B . +127C . +127D . +127E . +127F . +1280 . +1281 . +1282 . +1283 . +1284 . +1285 . +1286 . +1287 . +1288 . +128A . +128B . +128C . +128D . +1290 . +1291 . +1292 . +1293 . +1294 . +1295 . +1296 . +1297 . +1298 . +1299 . +129A . +129B . +129C . +129D . +129E . +129F . +12A0 . +12A1 . +12A2 . +12A3 . +12A4 . +12A5 . +12A6 . +12A7 . +12A8 . +12A9 . +12AA . +12AB . +12AC . +12AD . +12AE . +12AF . +12B0 . +12B2 . +12B3 . +12B4 . +12B5 . +12B8 . +12B9 . +12BA . +12BB . +12BC . +12BD . +12BE . +12C0 . +12C2 . +12C3 . +12C4 . +12C5 . +12C8 . +12C9 . +12CA . +12CB . +12CC . +12CD . +12CE . +12CF . +12D0 . +12D1 . +12D2 . +12D3 . +12D4 . +12D5 . +12D6 . +12D8 . +12D9 . +12DA . +12DB . +12DC . +12DD . +12DE . +12DF . +12E0 . +12E1 . +12E2 . +12E3 . +12E4 . +12E5 . +12E6 . +12E7 . +12E8 . +12E9 . +12EA . +12EB . +12EC . +12ED . +12EE . +12EF . +12F0 . +12F1 . +12F2 . +12F3 . +12F4 . +12F5 . +12F6 . +12F7 . +12F8 . +12F9 . +12FA . +12FB . +12FC . +12FD . +12FE . +12FF . +1300 . +1301 . +1302 . +1303 . +1304 . +1305 . +1306 . +1307 . +1308 . +1309 . +130A . +130B . +130C . +130D . +130E . +130F . +1310 . +1312 . +1313 . +1314 . +1315 . +1318 . +1319 . +131A . +131B . +131C . +131D . +131E . +131F . +1320 . +1321 . +1322 . +1323 . +1324 . +1325 . +1326 . +1327 . +1328 . +1329 . +132A . +132B . +132C . +132D . +132E . +132F . +1330 . +1331 . +1332 . +1333 . +1334 . +1335 . +1336 . +1337 . +1338 . +1339 . +133A . +133B . +133C . +133D . +133E . +133F . +1340 . +1341 . +1342 . +1343 . +1344 . +1345 . +1346 . +1347 . +1348 . +1349 . +134A . +134B . +134C . +134D . +134E . +134F . +1350 . +1351 . +1352 . +1353 . +1354 . +1355 . +1356 . +1357 . +1358 . +1359 . +135A . +1380 . +1381 . +1382 . +1383 . +1384 . +1385 . +1386 . +1387 . +1388 . +1389 . +138A . +138B . +138C . +138D . +138E . +138F . +13A0 . +13A1 . +13A2 . +13A3 . +13A4 . +13A5 . +13A6 . +13A7 . +13A8 . +13A9 . +13AA . +13AB . +13AC . +13AD . +13AE . +13AF . +13B0 . +13B1 . +13B2 . +13B3 . +13B4 . +13B5 . +13B6 . +13B7 . +13B8 . +13B9 . +13BA . +13BB . +13BC . +13BD . +13BE . +13BF . +13C0 . +13C1 . +13C2 . +13C3 . +13C4 . +13C5 . +13C6 . +13C7 . +13C8 . +13C9 . +13CA . +13CB . +13CC . +13CD . +13CE . +13CF . +13D0 . +13D1 . +13D2 . +13D3 . +13D4 . +13D5 . +13D6 . +13D7 . +13D8 . +13D9 . +13DA . +13DB . +13DC . +13DD . +13DE . +13DF . +13E0 . +13E1 . +13E2 . +13E3 . +13E4 . +13E5 . +13E6 . +13E7 . +13E8 . +13E9 . +13EA . +13EB . +13EC . +13ED . +13EE . +13EF . +13F0 . +13F1 . +13F2 . +13F3 . +13F4 . +1401 . +1402 . +1403 . +1404 . +1405 . +1406 . +1407 . +1408 . +1409 . +140A . +140B . +140C . +140D . +140E . +140F . +1410 . +1411 . +1412 . +1413 . +1414 . +1415 . +1416 . +1417 . +1418 . +1419 . +141A . +141B . +141C . +141D . +141E . +141F . +1420 . +1421 . +1422 . +1423 . +1424 . +1425 . +1426 . +1427 . +1428 . +1429 . +142A . +142B . +142C . +142D . +142E . +142F . +1430 . +1431 . +1432 . +1433 . +1434 . +1435 . +1436 . +1437 . +1438 . +1439 . +143A . +143B . +143C . +143D . +143E . +143F . +1440 . +1441 . +1442 . +1443 . +1444 . +1445 . +1446 . +1447 . +1448 . +1449 . +144A . +144B . +144C . +144D . +144E . +144F . +1450 . +1451 . +1452 . +1453 . +1454 . +1455 . +1456 . +1457 . +1458 . +1459 . +145A . +145B . +145C . +145D . +145E . +145F . +1460 . +1461 . +1462 . +1463 . +1464 . +1465 . +1466 . +1467 . +1468 . +1469 . +146A . +146B . +146C . +146D . +146E . +146F . +1470 . +1471 . +1472 . +1473 . +1474 . +1475 . +1476 . +1477 . +1478 . +1479 . +147A . +147B . +147C . +147D . +147E . +147F . +1480 . +1481 . +1482 . +1483 . +1484 . +1485 . +1486 . +1487 . +1488 . +1489 . +148A . +148B . +148C . +148D . +148E . +148F . +1490 . +1491 . +1492 . +1493 . +1494 . +1495 . +1496 . +1497 . +1498 . +1499 . +149A . +149B . +149C . +149D . +149E . +149F . +14A0 . +14A1 . +14A2 . +14A3 . +14A4 . +14A5 . +14A6 . +14A7 . +14A8 . +14A9 . +14AA . +14AB . +14AC . +14AD . +14AE . +14AF . +14B0 . +14B1 . +14B2 . +14B3 . +14B4 . +14B5 . +14B6 . +14B7 . +14B8 . +14B9 . +14BA . +14BB . +14BC . +14BD . +14BE . +14BF . +14C0 . +14C1 . +14C2 . +14C3 . +14C4 . +14C5 . +14C6 . +14C7 . +14C8 . +14C9 . +14CA . +14CB . +14CC . +14CD . +14CE . +14CF . +14D0 . +14D1 . +14D2 . +14D3 . +14D4 . +14D5 . +14D6 . +14D7 . +14D8 . +14D9 . +14DA . +14DB . +14DC . +14DD . +14DE . +14DF . +14E0 . +14E1 . +14E2 . +14E3 . +14E4 . +14E5 . +14E6 . +14E7 . +14E8 . +14E9 . +14EA . +14EB . +14EC . +14ED . +14EE . +14EF . +14F0 . +14F1 . +14F2 . +14F3 . +14F4 . +14F5 . +14F6 . +14F7 . +14F8 . +14F9 . +14FA . +14FB . +14FC . +14FD . +14FE . +14FF . +1500 . +1501 . +1502 . +1503 . +1504 . +1505 . +1506 . +1507 . +1508 . +1509 . +150A . +150B . +150C . +150D . +150E . +150F . +1510 . +1511 . +1512 . +1513 . +1514 . +1515 . +1516 . +1517 . +1518 . +1519 . +151A . +151B . +151C . +151D . +151E . +151F . +1520 . +1521 . +1522 . +1523 . +1524 . +1525 . +1526 . +1527 . +1528 . +1529 . +152A . +152B . +152C . +152D . +152E . +152F . +1530 . +1531 . +1532 . +1533 . +1534 . +1535 . +1536 . +1537 . +1538 . +1539 . +153A . +153B . +153C . +153D . +153E . +153F . +1540 . +1541 . +1542 . +1543 . +1544 . +1545 . +1546 . +1547 . +1548 . +1549 . +154A . +154B . +154C . +154D . +154E . +154F . +1550 . +1551 . +1552 . +1553 . +1554 . +1555 . +1556 . +1557 . +1558 . +1559 . +155A . +155B . +155C . +155D . +155E . +155F . +1560 . +1561 . +1562 . +1563 . +1564 . +1565 . +1566 . +1567 . +1568 . +1569 . +156A . +156B . +156C . +156D . +156E . +156F . +1570 . +1571 . +1572 . +1573 . +1574 . +1575 . +1576 . +1577 . +1578 . +1579 . +157A . +157B . +157C . +157D . +157E . +157F . +1580 . +1581 . +1582 . +1583 . +1584 . +1585 . +1586 . +1587 . +1588 . +1589 . +158A . +158B . +158C . +158D . +158E . +158F . +1590 . +1591 . +1592 . +1593 . +1594 . +1595 . +1596 . +1597 . +1598 . +1599 . +159A . +159B . +159C . +159D . +159E . +159F . +15A0 . +15A1 . +15A2 . +15A3 . +15A4 . +15A5 . +15A6 . +15A7 . +15A8 . +15A9 . +15AA . +15AB . +15AC . +15AD . +15AE . +15AF . +15B0 . +15B1 . +15B2 . +15B3 . +15B4 . +15B5 . +15B6 . +15B7 . +15B8 . +15B9 . +15BA . +15BB . +15BC . +15BD . +15BE . +15BF . +15C0 . +15C1 . +15C2 . +15C3 . +15C4 . +15C5 . +15C6 . +15C7 . +15C8 . +15C9 . +15CA . +15CB . +15CC . +15CD . +15CE . +15CF . +15D0 . +15D1 . +15D2 . +15D3 . +15D4 . +15D5 . +15D6 . +15D7 . +15D8 . +15D9 . +15DA . +15DB . +15DC . +15DD . +15DE . +15DF . +15E0 . +15E1 . +15E2 . +15E3 . +15E4 . +15E5 . +15E6 . +15E7 . +15E8 . +15E9 . +15EA . +15EB . +15EC . +15ED . +15EE . +15EF . +15F0 . +15F1 . +15F2 . +15F3 . +15F4 . +15F5 . +15F6 . +15F7 . +15F8 . +15F9 . +15FA . +15FB . +15FC . +15FD . +15FE . +15FF . +1600 . +1601 . +1602 . +1603 . +1604 . +1605 . +1606 . +1607 . +1608 . +1609 . +160A . +160B . +160C . +160D . +160E . +160F . +1610 . +1611 . +1612 . +1613 . +1614 . +1615 . +1616 . +1617 . +1618 . +1619 . +161A . +161B . +161C . +161D . +161E . +161F . +1620 . +1621 . +1622 . +1623 . +1624 . +1625 . +1626 . +1627 . +1628 . +1629 . +162A . +162B . +162C . +162D . +162E . +162F . +1630 . +1631 . +1632 . +1633 . +1634 . +1635 . +1636 . +1637 . +1638 . +1639 . +163A . +163B . +163C . +163D . +163E . +163F . +1640 . +1641 . +1642 . +1643 . +1644 . +1645 . +1646 . +1647 . +1648 . +1649 . +164A . +164B . +164C . +164D . +164E . +164F . +1650 . +1651 . +1652 . +1653 . +1654 . +1655 . +1656 . +1657 . +1658 . +1659 . +165A . +165B . +165C . +165D . +165E . +165F . +1660 . +1661 . +1662 . +1663 . +1664 . +1665 . +1666 . +1667 . +1668 . +1669 . +166A . +166B . +166C . +166F . +1670 . +1671 . +1672 . +1673 . +1674 . +1675 . +1676 . +1677 . +1678 . +1679 . +167A . +167B . +167C . +167D . +167E . +167F . +1681 . +1682 . +1683 . +1684 . +1685 . +1686 . +1687 . +1688 . +1689 . +168A . +168B . +168C . +168D . +168E . +168F . +1690 . +1691 . +1692 . +1693 . +1694 . +1695 . +1696 . +1697 . +1698 . +1699 . +169A . +16A0 . +16A1 . +16A2 . +16A3 . +16A4 . +16A5 . +16A6 . +16A7 . +16A8 . +16A9 . +16AA . +16AB . +16AC . +16AD . +16AE . +16AF . +16B0 . +16B1 . +16B2 . +16B3 . +16B4 . +16B5 . +16B6 . +16B7 . +16B8 . +16B9 . +16BA . +16BB . +16BC . +16BD . +16BE . +16BF . +16C0 . +16C1 . +16C2 . +16C3 . +16C4 . +16C5 . +16C6 . +16C7 . +16C8 . +16C9 . +16CA . +16CB . +16CC . +16CD . +16CE . +16CF . +16D0 . +16D1 . +16D2 . +16D3 . +16D4 . +16D5 . +16D6 . +16D7 . +16D8 . +16D9 . +16DA . +16DB . +16DC . +16DD . +16DE . +16DF . +16E0 . +16E1 . +16E2 . +16E3 . +16E4 . +16E5 . +16E6 . +16E7 . +16E8 . +16E9 . +16EA . +1700 . +1701 . +1702 . +1703 . +1704 . +1705 . +1706 . +1707 . +1708 . +1709 . +170A . +170B . +170C . +170E . +170F . +1710 . +1711 . +1720 . +1721 . +1722 . +1723 . +1724 . +1725 . +1726 . +1727 . +1728 . +1729 . +172A . +172B . +172C . +172D . +172E . +172F . +1730 . +1731 . +1740 . +1741 . +1742 . +1743 . +1744 . +1745 . +1746 . +1747 . +1748 . +1749 . +174A . +174B . +174C . +174D . +174E . +174F . +1750 . +1751 . +1760 . +1761 . +1762 . +1763 . +1764 . +1765 . +1766 . +1767 . +1768 . +1769 . +176A . +176B . +176C . +176E . +176F . +1770 . +1780 . +1781 . +1782 . +1783 . +1784 . +1785 . +1786 . +1787 . +1788 . +1789 . +178A . +178B . +178C . +178D . +178E . +178F . +1790 . +1791 . +1792 . +1793 . +1794 . +1795 . +1796 . +1797 . +1798 . +1799 . +179A . +179B . +179C . +179D . +179E . +179F . +17A0 . +17A1 . +17A2 . +17A3 . +17A4 . +17A5 . +17A6 . +17A7 . +17A8 . +17A9 . +17AA . +17AB . +17AC . +17AD . +17AE . +17AF . +17B0 . +17B1 . +17B2 . +17B3 . +17D7 . +17DC . +1820 . +1821 . +1822 . +1823 . +1824 . +1825 . +1826 . +1827 . +1828 . +1829 . +182A . +182B . +182C . +182D . +182E . +182F . +1830 . +1831 . +1832 . +1833 . +1834 . +1835 . +1836 . +1837 . +1838 . +1839 . +183A . +183B . +183C . +183D . +183E . +183F . +1840 . +1841 . +1842 . +1843 . +1844 . +1845 . +1846 . +1847 . +1848 . +1849 . +184A . +184B . +184C . +184D . +184E . +184F . +1850 . +1851 . +1852 . +1853 . +1854 . +1855 . +1856 . +1857 . +1858 . +1859 . +185A . +185B . +185C . +185D . +185E . +185F . +1860 . +1861 . +1862 . +1863 . +1864 . +1865 . +1866 . +1867 . +1868 . +1869 . +186A . +186B . +186C . +186D . +186E . +186F . +1870 . +1871 . +1872 . +1873 . +1874 . +1875 . +1876 . +1877 . +1880 . +1881 . +1882 . +1883 . +1884 . +1885 . +1886 . +1887 . +1888 . +1889 . +188A . +188B . +188C . +188D . +188E . +188F . +1890 . +1891 . +1892 . +1893 . +1894 . +1895 . +1896 . +1897 . +1898 . +1899 . +189A . +189B . +189C . +189D . +189E . +189F . +18A0 . +18A1 . +18A2 . +18A3 . +18A4 . +18A5 . +18A6 . +18A7 . +18A8 . +18AA . +18B0 . +18B1 . +18B2 . +18B3 . +18B4 . +18B5 . +18B6 . +18B7 . +18B8 . +18B9 . +18BA . +18BB . +18BC . +18BD . +18BE . +18BF . +18C0 . +18C1 . +18C2 . +18C3 . +18C4 . +18C5 . +18C6 . +18C7 . +18C8 . +18C9 . +18CA . +18CB . +18CC . +18CD . +18CE . +18CF . +18D0 . +18D1 . +18D2 . +18D3 . +18D4 . +18D5 . +18D6 . +18D7 . +18D8 . +18D9 . +18DA . +18DB . +18DC . +18DD . +18DE . +18DF . +18E0 . +18E1 . +18E2 . +18E3 . +18E4 . +18E5 . +18E6 . +18E7 . +18E8 . +18E9 . +18EA . +18EB . +18EC . +18ED . +18EE . +18EF . +18F0 . +18F1 . +18F2 . +18F3 . +18F4 . +18F5 . +1900 . +1901 . +1902 . +1903 . +1904 . +1905 . +1906 . +1907 . +1908 . +1909 . +190A . +190B . +190C . +190D . +190E . +190F . +1910 . +1911 . +1912 . +1913 . +1914 . +1915 . +1916 . +1917 . +1918 . +1919 . +191A . +191B . +191C . +1950 . +1951 . +1952 . +1953 . +1954 . +1955 . +1956 . +1957 . +1958 . +1959 . +195A . +195B . +195C . +195D . +195E . +195F . +1960 . +1961 . +1962 . +1963 . +1964 . +1965 . +1966 . +1967 . +1968 . +1969 . +196A . +196B . +196C . +196D . +1970 . +1971 . +1972 . +1973 . +1974 . +1980 . +1981 . +1982 . +1983 . +1984 . +1985 . +1986 . +1987 . +1988 . +1989 . +198A . +198B . +198C . +198D . +198E . +198F . +1990 . +1991 . +1992 . +1993 . +1994 . +1995 . +1996 . +1997 . +1998 . +1999 . +199A . +199B . +199C . +199D . +199E . +199F . +19A0 . +19A1 . +19A2 . +19A3 . +19A4 . +19A5 . +19A6 . +19A7 . +19A8 . +19A9 . +19AA . +19AB . +19C1 . +19C2 . +19C3 . +19C4 . +19C5 . +19C6 . +19C7 . +1A00 . +1A01 . +1A02 . +1A03 . +1A04 . +1A05 . +1A06 . +1A07 . +1A08 . +1A09 . +1A0A . +1A0B . +1A0C . +1A0D . +1A0E . +1A0F . +1A10 . +1A11 . +1A12 . +1A13 . +1A14 . +1A15 . +1A16 . +1A20 . +1A21 . +1A22 . +1A23 . +1A24 . +1A25 . +1A26 . +1A27 . +1A28 . +1A29 . +1A2A . +1A2B . +1A2C . +1A2D . +1A2E . +1A2F . +1A30 . +1A31 . +1A32 . +1A33 . +1A34 . +1A35 . +1A36 . +1A37 . +1A38 . +1A39 . +1A3A . +1A3B . +1A3C . +1A3D . +1A3E . +1A3F . +1A40 . +1A41 . +1A42 . +1A43 . +1A44 . +1A45 . +1A46 . +1A47 . +1A48 . +1A49 . +1A4A . +1A4B . +1A4C . +1A4D . +1A4E . +1A4F . +1A50 . +1A51 . +1A52 . +1A53 . +1A54 . +1AA7 . +1B05 . +1B06 . +1B07 . +1B08 . +1B09 . +1B0A . +1B0B . +1B0C . +1B0D . +1B0E . +1B0F . +1B10 . +1B11 . +1B12 . +1B13 . +1B14 . +1B15 . +1B16 . +1B17 . +1B18 . +1B19 . +1B1A . +1B1B . +1B1C . +1B1D . +1B1E . +1B1F . +1B20 . +1B21 . +1B22 . +1B23 . +1B24 . +1B25 . +1B26 . +1B27 . +1B28 . +1B29 . +1B2A . +1B2B . +1B2C . +1B2D . +1B2E . +1B2F . +1B30 . +1B31 . +1B32 . +1B33 . +1B45 . +1B46 . +1B47 . +1B48 . +1B49 . +1B4A . +1B4B . +1B83 . +1B84 . +1B85 . +1B86 . +1B87 . +1B88 . +1B89 . +1B8A . +1B8B . +1B8C . +1B8D . +1B8E . +1B8F . +1B90 . +1B91 . +1B92 . +1B93 . +1B94 . +1B95 . +1B96 . +1B97 . +1B98 . +1B99 . +1B9A . +1B9B . +1B9C . +1B9D . +1B9E . +1B9F . +1BA0 . +1BAE . +1BAF . +1BBA . +1BBB . +1BBC . +1BBD . +1BBE . +1BBF . +1BC0 . +1BC1 . +1BC2 . +1BC3 . +1BC4 . +1BC5 . +1BC6 . +1BC7 . +1BC8 . +1BC9 . +1BCA . +1BCB . +1BCC . +1BCD . +1BCE . +1BCF . +1BD0 . +1BD1 . +1BD2 . +1BD3 . +1BD4 . +1BD5 . +1BD6 . +1BD7 . +1BD8 . +1BD9 . +1BDA . +1BDB . +1BDC . +1BDD . +1BDE . +1BDF . +1BE0 . +1BE1 . +1BE2 . +1BE3 . +1BE4 . +1BE5 . +1C00 . +1C01 . +1C02 . +1C03 . +1C04 . +1C05 . +1C06 . +1C07 . +1C08 . +1C09 . +1C0A . +1C0B . +1C0C . +1C0D . +1C0E . +1C0F . +1C10 . +1C11 . +1C12 . +1C13 . +1C14 . +1C15 . +1C16 . +1C17 . +1C18 . +1C19 . +1C1A . +1C1B . +1C1C . +1C1D . +1C1E . +1C1F . +1C20 . +1C21 . +1C22 . +1C23 . +1C4D . +1C4E . +1C4F . +1C5A . +1C5B . +1C5C . +1C5D . +1C5E . +1C5F . +1C60 . +1C61 . +1C62 . +1C63 . +1C64 . +1C65 . +1C66 . +1C67 . +1C68 . +1C69 . +1C6A . +1C6B . +1C6C . +1C6D . +1C6E . +1C6F . +1C70 . +1C71 . +1C72 . +1C73 . +1C74 . +1C75 . +1C76 . +1C77 . +1C78 . +1C79 . +1C7A . +1C7B . +1C7C . +1C7D . +1CE9 . +1CEA . +1CEB . +1CEC . +1CEE . +1CEF . +1CF0 . +1CF1 . +1CF5 . +1CF6 . +1D00 . +1D01 . +1D02 . +1D03 . +1D04 . +1D05 . +1D06 . +1D07 . +1D08 . +1D09 . +1D0A . +1D0B . +1D0C . +1D0D . +1D0E . +1D0F . +1D10 . +1D11 . +1D12 . +1D13 . +1D14 . +1D15 . +1D16 . +1D17 . +1D18 . +1D19 . +1D1A . +1D1B . +1D1C . +1D1D . +1D1E . +1D1F . +1D20 . +1D21 . +1D22 . +1D23 . +1D24 . +1D25 . +1D26 . +1D27 . +1D28 . +1D29 . +1D2A . +1D2B . +1D2C . +1D2D . +1D2E . +1D2F . +1D30 . +1D31 . +1D32 . +1D33 . +1D34 . +1D35 . +1D36 . +1D37 . +1D38 . +1D39 . +1D3A . +1D3B . +1D3C . +1D3D . +1D3E . +1D3F . +1D40 . +1D41 . +1D42 . +1D43 . +1D44 . +1D45 . +1D46 . +1D47 . +1D48 . +1D49 . +1D4A . +1D4B . +1D4C . +1D4D . +1D4E . +1D4F . +1D50 . +1D51 . +1D52 . +1D53 . +1D54 . +1D55 . +1D56 . +1D57 . +1D58 . +1D59 . +1D5A . +1D5B . +1D5C . +1D5D . +1D5E . +1D5F . +1D60 . +1D61 . +1D62 . +1D63 . +1D64 . +1D65 . +1D66 . +1D67 . +1D68 . +1D69 . +1D6A . +1D6B . +1D6C . +1D6D . +1D6E . +1D6F . +1D70 . +1D71 . +1D72 . +1D73 . +1D74 . +1D75 . +1D76 . +1D77 . +1D78 . +1D79 A77D +1D7A . +1D7B . +1D7C . +1D7D 2C63 +1D7E . +1D7F . +1D80 . +1D81 . +1D82 . +1D83 . +1D84 . +1D85 . +1D86 . +1D87 . +1D88 . +1D89 . +1D8A . +1D8B . +1D8C . +1D8D . +1D8E . +1D8F . +1D90 . +1D91 . +1D92 . +1D93 . +1D94 . +1D95 . +1D96 . +1D97 . +1D98 . +1D99 . +1D9A . +1D9B . +1D9C . +1D9D . +1D9E . +1D9F . +1DA0 . +1DA1 . +1DA2 . +1DA3 . +1DA4 . +1DA5 . +1DA6 . +1DA7 . +1DA8 . +1DA9 . +1DAA . +1DAB . +1DAC . +1DAD . +1DAE . +1DAF . +1DB0 . +1DB1 . +1DB2 . +1DB3 . +1DB4 . +1DB5 . +1DB6 . +1DB7 . +1DB8 . +1DB9 . +1DBA . +1DBB . +1DBC . +1DBD . +1DBE . +1DBF . +1E01 1E00 +1E03 1E02 +1E05 1E04 +1E07 1E06 +1E09 1E08 +1E0B 1E0A +1E0D 1E0C +1E0F 1E0E +1E11 1E10 +1E13 1E12 +1E15 1E14 +1E17 1E16 +1E19 1E18 +1E1B 1E1A +1E1D 1E1C +1E1F 1E1E +1E21 1E20 +1E23 1E22 +1E25 1E24 +1E27 1E26 +1E29 1E28 +1E2B 1E2A +1E2D 1E2C +1E2F 1E2E +1E31 1E30 +1E33 1E32 +1E35 1E34 +1E37 1E36 +1E39 1E38 +1E3B 1E3A +1E3D 1E3C +1E3F 1E3E +1E41 1E40 +1E43 1E42 +1E45 1E44 +1E47 1E46 +1E49 1E48 +1E4B 1E4A +1E4D 1E4C +1E4F 1E4E +1E51 1E50 +1E53 1E52 +1E55 1E54 +1E57 1E56 +1E59 1E58 +1E5B 1E5A +1E5D 1E5C +1E5F 1E5E +1E61 1E60 +1E63 1E62 +1E65 1E64 +1E67 1E66 +1E69 1E68 +1E6B 1E6A +1E6D 1E6C +1E6F 1E6E +1E71 1E70 +1E73 1E72 +1E75 1E74 +1E77 1E76 +1E79 1E78 +1E7B 1E7A +1E7D 1E7C +1E7F 1E7E +1E81 1E80 +1E83 1E82 +1E85 1E84 +1E87 1E86 +1E89 1E88 +1E8B 1E8A +1E8D 1E8C +1E8F 1E8E +1E91 1E90 +1E93 1E92 +1E95 1E94 +1E96 . +1E97 . +1E98 . +1E99 . +1E9A . +1E9C . +1E9D . +1E9F . +1EA1 1EA0 +1EA3 1EA2 +1EA5 1EA4 +1EA7 1EA6 +1EA9 1EA8 +1EAB 1EAA +1EAD 1EAC +1EAF 1EAE +1EB1 1EB0 +1EB3 1EB2 +1EB5 1EB4 +1EB7 1EB6 +1EB9 1EB8 +1EBB 1EBA +1EBD 1EBC +1EBF 1EBE +1EC1 1EC0 +1EC3 1EC2 +1EC5 1EC4 +1EC7 1EC6 +1EC9 1EC8 +1ECB 1ECA +1ECD 1ECC +1ECF 1ECE +1ED1 1ED0 +1ED3 1ED2 +1ED5 1ED4 +1ED7 1ED6 +1ED9 1ED8 +1EDB 1EDA +1EDD 1EDC +1EDF 1EDE +1EE1 1EE0 +1EE3 1EE2 +1EE5 1EE4 +1EE7 1EE6 +1EE9 1EE8 +1EEB 1EEA +1EED 1EEC +1EEF 1EEE +1EF1 1EF0 +1EF3 1EF2 +1EF5 1EF4 +1EF7 1EF6 +1EF9 1EF8 +1EFB 1EFA +1EFD 1EFC +1EFF 1EFE +1F00 1F08 +1F01 1F09 +1F02 1F0A +1F03 1F0B +1F04 1F0C +1F05 1F0D +1F06 1F0E +1F07 1F0F +1F10 1F18 +1F11 1F19 +1F12 1F1A +1F13 1F1B +1F14 1F1C +1F15 1F1D +1F20 1F28 +1F21 1F29 +1F22 1F2A +1F23 1F2B +1F24 1F2C +1F25 1F2D +1F26 1F2E +1F27 1F2F +1F30 1F38 +1F31 1F39 +1F32 1F3A +1F33 1F3B +1F34 1F3C +1F35 1F3D +1F36 1F3E +1F37 1F3F +1F40 1F48 +1F41 1F49 +1F42 1F4A +1F43 1F4B +1F44 1F4C +1F45 1F4D +1F50 . +1F51 1F59 +1F52 . +1F53 1F5B +1F54 . +1F55 1F5D +1F56 . +1F57 1F5F +1F60 1F68 +1F61 1F69 +1F62 1F6A +1F63 1F6B +1F64 1F6C +1F65 1F6D +1F66 1F6E +1F67 1F6F +1F70 1FBA +1F71 1FBB +1F72 1FC8 +1F73 1FC9 +1F74 1FCA +1F75 1FCB +1F76 1FDA +1F77 1FDB +1F78 1FF8 +1F79 1FF9 +1F7A 1FEA +1F7B 1FEB +1F7C 1FFA +1F7D 1FFB +1F80 1F88 +1F81 1F89 +1F82 1F8A +1F83 1F8B +1F84 1F8C +1F85 1F8D +1F86 1F8E +1F87 1F8F +1F90 1F98 +1F91 1F99 +1F92 1F9A +1F93 1F9B +1F94 1F9C +1F95 1F9D +1F96 1F9E +1F97 1F9F +1FA0 1FA8 +1FA1 1FA9 +1FA2 1FAA +1FA3 1FAB +1FA4 1FAC +1FA5 1FAD +1FA6 1FAE +1FA7 1FAF +1FB0 1FB8 +1FB1 1FB9 +1FB2 . +1FB3 1FBC +1FB4 . +1FB6 . +1FB7 . +1FC2 . +1FC3 1FCC +1FC4 . +1FC6 . +1FC7 . +1FD0 1FD8 +1FD1 1FD9 +1FD2 . +1FD3 . +1FD6 . +1FD7 . +1FE0 1FE8 +1FE1 1FE9 +1FE2 . +1FE3 . +1FE4 . +1FE5 1FEC +1FE6 . +1FE7 . +1FF2 . +1FF3 1FFC +1FF4 . +1FF6 . +1FF7 . +2071 . +207F . +2090 . +2091 . +2092 . +2093 . +2094 . +2095 . +2096 . +2097 . +2098 . +2099 . +209A . +209B . +209C . +2102 . +2107 . +210A . +210B . +210C . +210D . +210E . +210F . +2110 . +2111 . +2112 . +2113 . +2115 . +2119 . +211A . +211B . +211C . +211D . +2124 . +2128 . +212C . +212D . +212F . +2130 . +2131 . +214E 2132 +2133 . +2134 . +2135 . +2136 . +2137 . +2138 . +2139 . +213C . +213D . +213E . +213F . +2145 . +2146 . +2147 . +2148 . +2149 . +2184 2183 +2C30 2C00 +2C31 2C01 +2C32 2C02 +2C33 2C03 +2C34 2C04 +2C35 2C05 +2C36 2C06 +2C37 2C07 +2C38 2C08 +2C39 2C09 +2C3A 2C0A +2C3B 2C0B +2C3C 2C0C +2C3D 2C0D +2C3E 2C0E +2C3F 2C0F +2C40 2C10 +2C41 2C11 +2C42 2C12 +2C43 2C13 +2C44 2C14 +2C45 2C15 +2C46 2C16 +2C47 2C17 +2C48 2C18 +2C49 2C19 +2C4A 2C1A +2C4B 2C1B +2C4C 2C1C +2C4D 2C1D +2C4E 2C1E +2C4F 2C1F +2C50 2C20 +2C51 2C21 +2C52 2C22 +2C53 2C23 +2C54 2C24 +2C55 2C25 +2C56 2C26 +2C57 2C27 +2C58 2C28 +2C59 2C29 +2C5A 2C2A +2C5B 2C2B +2C5C 2C2C +2C5D 2C2D +2C5E 2C2E +2C61 2C60 +2C68 2C67 +2C6A 2C69 +2C6C 2C6B +2C71 . +2C73 2C72 +2C74 . +2C76 2C75 +2C77 . +2C78 . +2C79 . +2C7A . +2C7B . +2C7C . +2C7D . +2C81 2C80 +2C83 2C82 +2C85 2C84 +2C87 2C86 +2C89 2C88 +2C8B 2C8A +2C8D 2C8C +2C8F 2C8E +2C91 2C90 +2C93 2C92 +2C95 2C94 +2C97 2C96 +2C99 2C98 +2C9B 2C9A +2C9D 2C9C +2C9F 2C9E +2CA1 2CA0 +2CA3 2CA2 +2CA5 2CA4 +2CA7 2CA6 +2CA9 2CA8 +2CAB 2CAA +2CAD 2CAC +2CAF 2CAE +2CB1 2CB0 +2CB3 2CB2 +2CB5 2CB4 +2CB7 2CB6 +2CB9 2CB8 +2CBB 2CBA +2CBD 2CBC +2CBF 2CBE +2CC1 2CC0 +2CC3 2CC2 +2CC5 2CC4 +2CC7 2CC6 +2CC9 2CC8 +2CCB 2CCA +2CCD 2CCC +2CCF 2CCE +2CD1 2CD0 +2CD3 2CD2 +2CD5 2CD4 +2CD7 2CD6 +2CD9 2CD8 +2CDB 2CDA +2CDD 2CDC +2CDF 2CDE +2CE1 2CE0 +2CE3 2CE2 +2CE4 . +2CEC 2CEB +2CEE 2CED +2CF3 2CF2 +2D30 . +2D31 . +2D32 . +2D33 . +2D34 . +2D35 . +2D36 . +2D37 . +2D38 . +2D39 . +2D3A . +2D3B . +2D3C . +2D3D . +2D3E . +2D3F . +2D40 . +2D41 . +2D42 . +2D43 . +2D44 . +2D45 . +2D46 . +2D47 . +2D48 . +2D49 . +2D4A . +2D4B . +2D4C . +2D4D . +2D4E . +2D4F . +2D50 . +2D51 . +2D52 . +2D53 . +2D54 . +2D55 . +2D56 . +2D57 . +2D58 . +2D59 . +2D5A . +2D5B . +2D5C . +2D5D . +2D5E . +2D5F . +2D60 . +2D61 . +2D62 . +2D63 . +2D64 . +2D65 . +2D66 . +2D67 . +2D6F . +2D80 . +2D81 . +2D82 . +2D83 . +2D84 . +2D85 . +2D86 . +2D87 . +2D88 . +2D89 . +2D8A . +2D8B . +2D8C . +2D8D . +2D8E . +2D8F . +2D90 . +2D91 . +2D92 . +2D93 . +2D94 . +2D95 . +2D96 . +2DA0 . +2DA1 . +2DA2 . +2DA3 . +2DA4 . +2DA5 . +2DA6 . +2DA8 . +2DA9 . +2DAA . +2DAB . +2DAC . +2DAD . +2DAE . +2DB0 . +2DB1 . +2DB2 . +2DB3 . +2DB4 . +2DB5 . +2DB6 . +2DB8 . +2DB9 . +2DBA . +2DBB . +2DBC . +2DBD . +2DBE . +2DC0 . +2DC1 . +2DC2 . +2DC3 . +2DC4 . +2DC5 . +2DC6 . +2DC8 . +2DC9 . +2DCA . +2DCB . +2DCC . +2DCD . +2DCE . +2DD0 . +2DD1 . +2DD2 . +2DD3 . +2DD4 . +2DD5 . +2DD6 . +2DD8 . +2DD9 . +2DDA . +2DDB . +2DDC . +2DDD . +2DDE . +2E2F . +3005 . +3006 . +3031 . +3032 . +3033 . +3034 . +3035 . +303B . +303C . +3041 . +3042 . +3043 . +3044 . +3045 . +3046 . +3047 . +3048 . +3049 . +304A . +304B . +304C . +304D . +304E . +304F . +3050 . +3051 . +3052 . +3053 . +3054 . +3055 . +3056 . +3057 . +3058 . +3059 . +305A . +305B . +305C . +305D . +305E . +305F . +3060 . +3061 . +3062 . +3063 . +3064 . +3065 . +3066 . +3067 . +3068 . +3069 . +306A . +306B . +306C . +306D . +306E . +306F . +3070 . +3071 . +3072 . +3073 . +3074 . +3075 . +3076 . +3077 . +3078 . +3079 . +307A . +307B . +307C . +307D . +307E . +307F . +3080 . +3081 . +3082 . +3083 . +3084 . +3085 . +3086 . +3087 . +3088 . +3089 . +308A . +308B . +308C . +308D . +308E . +308F . +3090 . +3091 . +3092 . +3093 . +3094 . +3095 . +3096 . +309D . +309E . +309F . +30A1 . +30A2 . +30A3 . +30A4 . +30A5 . +30A6 . +30A7 . +30A8 . +30A9 . +30AA . +30AB . +30AC . +30AD . +30AE . +30AF . +30B0 . +30B1 . +30B2 . +30B3 . +30B4 . +30B5 . +30B6 . +30B7 . +30B8 . +30B9 . +30BA . +30BB . +30BC . +30BD . +30BE . +30BF . +30C0 . +30C1 . +30C2 . +30C3 . +30C4 . +30C5 . +30C6 . +30C7 . +30C8 . +30C9 . +30CA . +30CB . +30CC . +30CD . +30CE . +30CF . +30D0 . +30D1 . +30D2 . +30D3 . +30D4 . +30D5 . +30D6 . +30D7 . +30D8 . +30D9 . +30DA . +30DB . +30DC . +30DD . +30DE . +30DF . +30E0 . +30E1 . +30E2 . +30E3 . +30E4 . +30E5 . +30E6 . +30E7 . +30E8 . +30E9 . +30EA . +30EB . +30EC . +30ED . +30EE . +30EF . +30F0 . +30F1 . +30F2 . +30F3 . +30F4 . +30F5 . +30F6 . +30F7 . +30F8 . +30F9 . +30FA . +30FC . +30FD . +30FE . +30FF . +3105 . +3106 . +3107 . +3108 . +3109 . +310A . +310B . +310C . +310D . +310E . +310F . +3110 . +3111 . +3112 . +3113 . +3114 . +3115 . +3116 . +3117 . +3118 . +3119 . +311A . +311B . +311C . +311D . +311E . +311F . +3120 . +3121 . +3122 . +3123 . +3124 . +3125 . +3126 . +3127 . +3128 . +3129 . +312A . +312B . +312C . +312D . +3131 . +3132 . +3133 . +3134 . +3135 . +3136 . +3137 . +3138 . +3139 . +313A . +313B . +313C . +313D . +313E . +313F . +3140 . +3141 . +3142 . +3143 . +3144 . +3145 . +3146 . +3147 . +3148 . +3149 . +314A . +314B . +314C . +314D . +314E . +314F . +3150 . +3151 . +3152 . +3153 . +3154 . +3155 . +3156 . +3157 . +3158 . +3159 . +315A . +315B . +315C . +315D . +315E . +315F . +3160 . +3161 . +3162 . +3163 . +3164 . +3165 . +3166 . +3167 . +3168 . +3169 . +316A . +316B . +316C . +316D . +316E . +316F . +3170 . +3171 . +3172 . +3173 . +3174 . +3175 . +3176 . +3177 . +3178 . +3179 . +317A . +317B . +317C . +317D . +317E . +317F . +3180 . +3181 . +3182 . +3183 . +3184 . +3185 . +3186 . +3187 . +3188 . +3189 . +318A . +318B . +318C . +318D . +318E . +31A0 . +31A1 . +31A2 . +31A3 . +31A4 . +31A5 . +31A6 . +31A7 . +31A8 . +31A9 . +31AA . +31AB . +31AC . +31AD . +31AE . +31AF . +31B0 . +31B1 . +31B2 . +31B3 . +31B4 . +31B5 . +31B6 . +31B7 . +31B8 . +31B9 . +31BA . +31F0 . +31F1 . +31F2 . +31F3 . +31F4 . +31F5 . +31F6 . +31F7 . +31F8 . +31F9 . +31FA . +31FB . +31FC . +31FD . +31FE . +31FF . +A000 . +A001 . +A002 . +A003 . +A004 . +A005 . +A006 . +A007 . +A008 . +A009 . +A00A . +A00B . +A00C . +A00D . +A00E . +A00F . +A010 . +A011 . +A012 . +A013 . +A014 . +A015 . +A016 . +A017 . +A018 . +A019 . +A01A . +A01B . +A01C . +A01D . +A01E . +A01F . +A020 . +A021 . +A022 . +A023 . +A024 . +A025 . +A026 . +A027 . +A028 . +A029 . +A02A . +A02B . +A02C . +A02D . +A02E . +A02F . +A030 . +A031 . +A032 . +A033 . +A034 . +A035 . +A036 . +A037 . +A038 . +A039 . +A03A . +A03B . +A03C . +A03D . +A03E . +A03F . +A040 . +A041 . +A042 . +A043 . +A044 . +A045 . +A046 . +A047 . +A048 . +A049 . +A04A . +A04B . +A04C . +A04D . +A04E . +A04F . +A050 . +A051 . +A052 . +A053 . +A054 . +A055 . +A056 . +A057 . +A058 . +A059 . +A05A . +A05B . +A05C . +A05D . +A05E . +A05F . +A060 . +A061 . +A062 . +A063 . +A064 . +A065 . +A066 . +A067 . +A068 . +A069 . +A06A . +A06B . +A06C . +A06D . +A06E . +A06F . +A070 . +A071 . +A072 . +A073 . +A074 . +A075 . +A076 . +A077 . +A078 . +A079 . +A07A . +A07B . +A07C . +A07D . +A07E . +A07F . +A080 . +A081 . +A082 . +A083 . +A084 . +A085 . +A086 . +A087 . +A088 . +A089 . +A08A . +A08B . +A08C . +A08D . +A08E . +A08F . +A090 . +A091 . +A092 . +A093 . +A094 . +A095 . +A096 . +A097 . +A098 . +A099 . +A09A . +A09B . +A09C . +A09D . +A09E . +A09F . +A0A0 . +A0A1 . +A0A2 . +A0A3 . +A0A4 . +A0A5 . +A0A6 . +A0A7 . +A0A8 . +A0A9 . +A0AA . +A0AB . +A0AC . +A0AD . +A0AE . +A0AF . +A0B0 . +A0B1 . +A0B2 . +A0B3 . +A0B4 . +A0B5 . +A0B6 . +A0B7 . +A0B8 . +A0B9 . +A0BA . +A0BB . +A0BC . +A0BD . +A0BE . +A0BF . +A0C0 . +A0C1 . +A0C2 . +A0C3 . +A0C4 . +A0C5 . +A0C6 . +A0C7 . +A0C8 . +A0C9 . +A0CA . +A0CB . +A0CC . +A0CD . +A0CE . +A0CF . +A0D0 . +A0D1 . +A0D2 . +A0D3 . +A0D4 . +A0D5 . +A0D6 . +A0D7 . +A0D8 . +A0D9 . +A0DA . +A0DB . +A0DC . +A0DD . +A0DE . +A0DF . +A0E0 . +A0E1 . +A0E2 . +A0E3 . +A0E4 . +A0E5 . +A0E6 . +A0E7 . +A0E8 . +A0E9 . +A0EA . +A0EB . +A0EC . +A0ED . +A0EE . +A0EF . +A0F0 . +A0F1 . +A0F2 . +A0F3 . +A0F4 . +A0F5 . +A0F6 . +A0F7 . +A0F8 . +A0F9 . +A0FA . +A0FB . +A0FC . +A0FD . +A0FE . +A0FF . +A100 . +A101 . +A102 . +A103 . +A104 . +A105 . +A106 . +A107 . +A108 . +A109 . +A10A . +A10B . +A10C . +A10D . +A10E . +A10F . +A110 . +A111 . +A112 . +A113 . +A114 . +A115 . +A116 . +A117 . +A118 . +A119 . +A11A . +A11B . +A11C . +A11D . +A11E . +A11F . +A120 . +A121 . +A122 . +A123 . +A124 . +A125 . +A126 . +A127 . +A128 . +A129 . +A12A . +A12B . +A12C . +A12D . +A12E . +A12F . +A130 . +A131 . +A132 . +A133 . +A134 . +A135 . +A136 . +A137 . +A138 . +A139 . +A13A . +A13B . +A13C . +A13D . +A13E . +A13F . +A140 . +A141 . +A142 . +A143 . +A144 . +A145 . +A146 . +A147 . +A148 . +A149 . +A14A . +A14B . +A14C . +A14D . +A14E . +A14F . +A150 . +A151 . +A152 . +A153 . +A154 . +A155 . +A156 . +A157 . +A158 . +A159 . +A15A . +A15B . +A15C . +A15D . +A15E . +A15F . +A160 . +A161 . +A162 . +A163 . +A164 . +A165 . +A166 . +A167 . +A168 . +A169 . +A16A . +A16B . +A16C . +A16D . +A16E . +A16F . +A170 . +A171 . +A172 . +A173 . +A174 . +A175 . +A176 . +A177 . +A178 . +A179 . +A17A . +A17B . +A17C . +A17D . +A17E . +A17F . +A180 . +A181 . +A182 . +A183 . +A184 . +A185 . +A186 . +A187 . +A188 . +A189 . +A18A . +A18B . +A18C . +A18D . +A18E . +A18F . +A190 . +A191 . +A192 . +A193 . +A194 . +A195 . +A196 . +A197 . +A198 . +A199 . +A19A . +A19B . +A19C . +A19D . +A19E . +A19F . +A1A0 . +A1A1 . +A1A2 . +A1A3 . +A1A4 . +A1A5 . +A1A6 . +A1A7 . +A1A8 . +A1A9 . +A1AA . +A1AB . +A1AC . +A1AD . +A1AE . +A1AF . +A1B0 . +A1B1 . +A1B2 . +A1B3 . +A1B4 . +A1B5 . +A1B6 . +A1B7 . +A1B8 . +A1B9 . +A1BA . +A1BB . +A1BC . +A1BD . +A1BE . +A1BF . +A1C0 . +A1C1 . +A1C2 . +A1C3 . +A1C4 . +A1C5 . +A1C6 . +A1C7 . +A1C8 . +A1C9 . +A1CA . +A1CB . +A1CC . +A1CD . +A1CE . +A1CF . +A1D0 . +A1D1 . +A1D2 . +A1D3 . +A1D4 . +A1D5 . +A1D6 . +A1D7 . +A1D8 . +A1D9 . +A1DA . +A1DB . +A1DC . +A1DD . +A1DE . +A1DF . +A1E0 . +A1E1 . +A1E2 . +A1E3 . +A1E4 . +A1E5 . +A1E6 . +A1E7 . +A1E8 . +A1E9 . +A1EA . +A1EB . +A1EC . +A1ED . +A1EE . +A1EF . +A1F0 . +A1F1 . +A1F2 . +A1F3 . +A1F4 . +A1F5 . +A1F6 . +A1F7 . +A1F8 . +A1F9 . +A1FA . +A1FB . +A1FC . +A1FD . +A1FE . +A1FF . +A200 . +A201 . +A202 . +A203 . +A204 . +A205 . +A206 . +A207 . +A208 . +A209 . +A20A . +A20B . +A20C . +A20D . +A20E . +A20F . +A210 . +A211 . +A212 . +A213 . +A214 . +A215 . +A216 . +A217 . +A218 . +A219 . +A21A . +A21B . +A21C . +A21D . +A21E . +A21F . +A220 . +A221 . +A222 . +A223 . +A224 . +A225 . +A226 . +A227 . +A228 . +A229 . +A22A . +A22B . +A22C . +A22D . +A22E . +A22F . +A230 . +A231 . +A232 . +A233 . +A234 . +A235 . +A236 . +A237 . +A238 . +A239 . +A23A . +A23B . +A23C . +A23D . +A23E . +A23F . +A240 . +A241 . +A242 . +A243 . +A244 . +A245 . +A246 . +A247 . +A248 . +A249 . +A24A . +A24B . +A24C . +A24D . +A24E . +A24F . +A250 . +A251 . +A252 . +A253 . +A254 . +A255 . +A256 . +A257 . +A258 . +A259 . +A25A . +A25B . +A25C . +A25D . +A25E . +A25F . +A260 . +A261 . +A262 . +A263 . +A264 . +A265 . +A266 . +A267 . +A268 . +A269 . +A26A . +A26B . +A26C . +A26D . +A26E . +A26F . +A270 . +A271 . +A272 . +A273 . +A274 . +A275 . +A276 . +A277 . +A278 . +A279 . +A27A . +A27B . +A27C . +A27D . +A27E . +A27F . +A280 . +A281 . +A282 . +A283 . +A284 . +A285 . +A286 . +A287 . +A288 . +A289 . +A28A . +A28B . +A28C . +A28D . +A28E . +A28F . +A290 . +A291 . +A292 . +A293 . +A294 . +A295 . +A296 . +A297 . +A298 . +A299 . +A29A . +A29B . +A29C . +A29D . +A29E . +A29F . +A2A0 . +A2A1 . +A2A2 . +A2A3 . +A2A4 . +A2A5 . +A2A6 . +A2A7 . +A2A8 . +A2A9 . +A2AA . +A2AB . +A2AC . +A2AD . +A2AE . +A2AF . +A2B0 . +A2B1 . +A2B2 . +A2B3 . +A2B4 . +A2B5 . +A2B6 . +A2B7 . +A2B8 . +A2B9 . +A2BA . +A2BB . +A2BC . +A2BD . +A2BE . +A2BF . +A2C0 . +A2C1 . +A2C2 . +A2C3 . +A2C4 . +A2C5 . +A2C6 . +A2C7 . +A2C8 . +A2C9 . +A2CA . +A2CB . +A2CC . +A2CD . +A2CE . +A2CF . +A2D0 . +A2D1 . +A2D2 . +A2D3 . +A2D4 . +A2D5 . +A2D6 . +A2D7 . +A2D8 . +A2D9 . +A2DA . +A2DB . +A2DC . +A2DD . +A2DE . +A2DF . +A2E0 . +A2E1 . +A2E2 . +A2E3 . +A2E4 . +A2E5 . +A2E6 . +A2E7 . +A2E8 . +A2E9 . +A2EA . +A2EB . +A2EC . +A2ED . +A2EE . +A2EF . +A2F0 . +A2F1 . +A2F2 . +A2F3 . +A2F4 . +A2F5 . +A2F6 . +A2F7 . +A2F8 . +A2F9 . +A2FA . +A2FB . +A2FC . +A2FD . +A2FE . +A2FF . +A300 . +A301 . +A302 . +A303 . +A304 . +A305 . +A306 . +A307 . +A308 . +A309 . +A30A . +A30B . +A30C . +A30D . +A30E . +A30F . +A310 . +A311 . +A312 . +A313 . +A314 . +A315 . +A316 . +A317 . +A318 . +A319 . +A31A . +A31B . +A31C . +A31D . +A31E . +A31F . +A320 . +A321 . +A322 . +A323 . +A324 . +A325 . +A326 . +A327 . +A328 . +A329 . +A32A . +A32B . +A32C . +A32D . +A32E . +A32F . +A330 . +A331 . +A332 . +A333 . +A334 . +A335 . +A336 . +A337 . +A338 . +A339 . +A33A . +A33B . +A33C . +A33D . +A33E . +A33F . +A340 . +A341 . +A342 . +A343 . +A344 . +A345 . +A346 . +A347 . +A348 . +A349 . +A34A . +A34B . +A34C . +A34D . +A34E . +A34F . +A350 . +A351 . +A352 . +A353 . +A354 . +A355 . +A356 . +A357 . +A358 . +A359 . +A35A . +A35B . +A35C . +A35D . +A35E . +A35F . +A360 . +A361 . +A362 . +A363 . +A364 . +A365 . +A366 . +A367 . +A368 . +A369 . +A36A . +A36B . +A36C . +A36D . +A36E . +A36F . +A370 . +A371 . +A372 . +A373 . +A374 . +A375 . +A376 . +A377 . +A378 . +A379 . +A37A . +A37B . +A37C . +A37D . +A37E . +A37F . +A380 . +A381 . +A382 . +A383 . +A384 . +A385 . +A386 . +A387 . +A388 . +A389 . +A38A . +A38B . +A38C . +A38D . +A38E . +A38F . +A390 . +A391 . +A392 . +A393 . +A394 . +A395 . +A396 . +A397 . +A398 . +A399 . +A39A . +A39B . +A39C . +A39D . +A39E . +A39F . +A3A0 . +A3A1 . +A3A2 . +A3A3 . +A3A4 . +A3A5 . +A3A6 . +A3A7 . +A3A8 . +A3A9 . +A3AA . +A3AB . +A3AC . +A3AD . +A3AE . +A3AF . +A3B0 . +A3B1 . +A3B2 . +A3B3 . +A3B4 . +A3B5 . +A3B6 . +A3B7 . +A3B8 . +A3B9 . +A3BA . +A3BB . +A3BC . +A3BD . +A3BE . +A3BF . +A3C0 . +A3C1 . +A3C2 . +A3C3 . +A3C4 . +A3C5 . +A3C6 . +A3C7 . +A3C8 . +A3C9 . +A3CA . +A3CB . +A3CC . +A3CD . +A3CE . +A3CF . +A3D0 . +A3D1 . +A3D2 . +A3D3 . +A3D4 . +A3D5 . +A3D6 . +A3D7 . +A3D8 . +A3D9 . +A3DA . +A3DB . +A3DC . +A3DD . +A3DE . +A3DF . +A3E0 . +A3E1 . +A3E2 . +A3E3 . +A3E4 . +A3E5 . +A3E6 . +A3E7 . +A3E8 . +A3E9 . +A3EA . +A3EB . +A3EC . +A3ED . +A3EE . +A3EF . +A3F0 . +A3F1 . +A3F2 . +A3F3 . +A3F4 . +A3F5 . +A3F6 . +A3F7 . +A3F8 . +A3F9 . +A3FA . +A3FB . +A3FC . +A3FD . +A3FE . +A3FF . +A400 . +A401 . +A402 . +A403 . +A404 . +A405 . +A406 . +A407 . +A408 . +A409 . +A40A . +A40B . +A40C . +A40D . +A40E . +A40F . +A410 . +A411 . +A412 . +A413 . +A414 . +A415 . +A416 . +A417 . +A418 . +A419 . +A41A . +A41B . +A41C . +A41D . +A41E . +A41F . +A420 . +A421 . +A422 . +A423 . +A424 . +A425 . +A426 . +A427 . +A428 . +A429 . +A42A . +A42B . +A42C . +A42D . +A42E . +A42F . +A430 . +A431 . +A432 . +A433 . +A434 . +A435 . +A436 . +A437 . +A438 . +A439 . +A43A . +A43B . +A43C . +A43D . +A43E . +A43F . +A440 . +A441 . +A442 . +A443 . +A444 . +A445 . +A446 . +A447 . +A448 . +A449 . +A44A . +A44B . +A44C . +A44D . +A44E . +A44F . +A450 . +A451 . +A452 . +A453 . +A454 . +A455 . +A456 . +A457 . +A458 . +A459 . +A45A . +A45B . +A45C . +A45D . +A45E . +A45F . +A460 . +A461 . +A462 . +A463 . +A464 . +A465 . +A466 . +A467 . +A468 . +A469 . +A46A . +A46B . +A46C . +A46D . +A46E . +A46F . +A470 . +A471 . +A472 . +A473 . +A474 . +A475 . +A476 . +A477 . +A478 . +A479 . +A47A . +A47B . +A47C . +A47D . +A47E . +A47F . +A480 . +A481 . +A482 . +A483 . +A484 . +A485 . +A486 . +A487 . +A488 . +A489 . +A48A . +A48B . +A48C . +A4D0 . +A4D1 . +A4D2 . +A4D3 . +A4D4 . +A4D5 . +A4D6 . +A4D7 . +A4D8 . +A4D9 . +A4DA . +A4DB . +A4DC . +A4DD . +A4DE . +A4DF . +A4E0 . +A4E1 . +A4E2 . +A4E3 . +A4E4 . +A4E5 . +A4E6 . +A4E7 . +A4E8 . +A4E9 . +A4EA . +A4EB . +A4EC . +A4ED . +A4EE . +A4EF . +A4F0 . +A4F1 . +A4F2 . +A4F3 . +A4F4 . +A4F5 . +A4F6 . +A4F7 . +A4F8 . +A4F9 . +A4FA . +A4FB . +A4FC . +A4FD . +A500 . +A501 . +A502 . +A503 . +A504 . +A505 . +A506 . +A507 . +A508 . +A509 . +A50A . +A50B . +A50C . +A50D . +A50E . +A50F . +A510 . +A511 . +A512 . +A513 . +A514 . +A515 . +A516 . +A517 . +A518 . +A519 . +A51A . +A51B . +A51C . +A51D . +A51E . +A51F . +A520 . +A521 . +A522 . +A523 . +A524 . +A525 . +A526 . +A527 . +A528 . +A529 . +A52A . +A52B . +A52C . +A52D . +A52E . +A52F . +A530 . +A531 . +A532 . +A533 . +A534 . +A535 . +A536 . +A537 . +A538 . +A539 . +A53A . +A53B . +A53C . +A53D . +A53E . +A53F . +A540 . +A541 . +A542 . +A543 . +A544 . +A545 . +A546 . +A547 . +A548 . +A549 . +A54A . +A54B . +A54C . +A54D . +A54E . +A54F . +A550 . +A551 . +A552 . +A553 . +A554 . +A555 . +A556 . +A557 . +A558 . +A559 . +A55A . +A55B . +A55C . +A55D . +A55E . +A55F . +A560 . +A561 . +A562 . +A563 . +A564 . +A565 . +A566 . +A567 . +A568 . +A569 . +A56A . +A56B . +A56C . +A56D . +A56E . +A56F . +A570 . +A571 . +A572 . +A573 . +A574 . +A575 . +A576 . +A577 . +A578 . +A579 . +A57A . +A57B . +A57C . +A57D . +A57E . +A57F . +A580 . +A581 . +A582 . +A583 . +A584 . +A585 . +A586 . +A587 . +A588 . +A589 . +A58A . +A58B . +A58C . +A58D . +A58E . +A58F . +A590 . +A591 . +A592 . +A593 . +A594 . +A595 . +A596 . +A597 . +A598 . +A599 . +A59A . +A59B . +A59C . +A59D . +A59E . +A59F . +A5A0 . +A5A1 . +A5A2 . +A5A3 . +A5A4 . +A5A5 . +A5A6 . +A5A7 . +A5A8 . +A5A9 . +A5AA . +A5AB . +A5AC . +A5AD . +A5AE . +A5AF . +A5B0 . +A5B1 . +A5B2 . +A5B3 . +A5B4 . +A5B5 . +A5B6 . +A5B7 . +A5B8 . +A5B9 . +A5BA . +A5BB . +A5BC . +A5BD . +A5BE . +A5BF . +A5C0 . +A5C1 . +A5C2 . +A5C3 . +A5C4 . +A5C5 . +A5C6 . +A5C7 . +A5C8 . +A5C9 . +A5CA . +A5CB . +A5CC . +A5CD . +A5CE . +A5CF . +A5D0 . +A5D1 . +A5D2 . +A5D3 . +A5D4 . +A5D5 . +A5D6 . +A5D7 . +A5D8 . +A5D9 . +A5DA . +A5DB . +A5DC . +A5DD . +A5DE . +A5DF . +A5E0 . +A5E1 . +A5E2 . +A5E3 . +A5E4 . +A5E5 . +A5E6 . +A5E7 . +A5E8 . +A5E9 . +A5EA . +A5EB . +A5EC . +A5ED . +A5EE . +A5EF . +A5F0 . +A5F1 . +A5F2 . +A5F3 . +A5F4 . +A5F5 . +A5F6 . +A5F7 . +A5F8 . +A5F9 . +A5FA . +A5FB . +A5FC . +A5FD . +A5FE . +A5FF . +A600 . +A601 . +A602 . +A603 . +A604 . +A605 . +A606 . +A607 . +A608 . +A609 . +A60A . +A60B . +A60C . +A610 . +A611 . +A612 . +A613 . +A614 . +A615 . +A616 . +A617 . +A618 . +A619 . +A61A . +A61B . +A61C . +A61D . +A61E . +A61F . +A62A . +A62B . +A641 A640 +A643 A642 +A645 A644 +A647 A646 +A649 A648 +A64B A64A +A64D A64C +A64F A64E +A651 A650 +A653 A652 +A655 A654 +A657 A656 +A659 A658 +A65B A65A +A65D A65C +A65F A65E +A661 A660 +A663 A662 +A665 A664 +A667 A666 +A669 A668 +A66B A66A +A66D A66C +A66E . +A67F . +A681 A680 +A683 A682 +A685 A684 +A687 A686 +A689 A688 +A68B A68A +A68D A68C +A68F A68E +A691 A690 +A693 A692 +A695 A694 +A697 A696 +A6A0 . +A6A1 . +A6A2 . +A6A3 . +A6A4 . +A6A5 . +A6A6 . +A6A7 . +A6A8 . +A6A9 . +A6AA . +A6AB . +A6AC . +A6AD . +A6AE . +A6AF . +A6B0 . +A6B1 . +A6B2 . +A6B3 . +A6B4 . +A6B5 . +A6B6 . +A6B7 . +A6B8 . +A6B9 . +A6BA . +A6BB . +A6BC . +A6BD . +A6BE . +A6BF . +A6C0 . +A6C1 . +A6C2 . +A6C3 . +A6C4 . +A6C5 . +A6C6 . +A6C7 . +A6C8 . +A6C9 . +A6CA . +A6CB . +A6CC . +A6CD . +A6CE . +A6CF . +A6D0 . +A6D1 . +A6D2 . +A6D3 . +A6D4 . +A6D5 . +A6D6 . +A6D7 . +A6D8 . +A6D9 . +A6DA . +A6DB . +A6DC . +A6DD . +A6DE . +A6DF . +A6E0 . +A6E1 . +A6E2 . +A6E3 . +A6E4 . +A6E5 . +A717 . +A718 . +A719 . +A71A . +A71B . +A71C . +A71D . +A71E . +A71F . +A723 A722 +A725 A724 +A727 A726 +A729 A728 +A72B A72A +A72D A72C +A72F A72E +A730 . +A731 . +A733 A732 +A735 A734 +A737 A736 +A739 A738 +A73B A73A +A73D A73C +A73F A73E +A741 A740 +A743 A742 +A745 A744 +A747 A746 +A749 A748 +A74B A74A +A74D A74C +A74F A74E +A751 A750 +A753 A752 +A755 A754 +A757 A756 +A759 A758 +A75B A75A +A75D A75C +A75F A75E +A761 A760 +A763 A762 +A765 A764 +A767 A766 +A769 A768 +A76B A76A +A76D A76C +A76F A76E +A770 . +A771 . +A772 . +A773 . +A774 . +A775 . +A776 . +A777 . +A778 . +A77A A779 +A77C A77B +A77F A77E +A781 A780 +A783 A782 +A785 A784 +A787 A786 +A788 . +A78C A78B +A78E . +A791 A790 +A793 A792 +A7A1 A7A0 +A7A3 A7A2 +A7A5 A7A4 +A7A7 A7A6 +A7A9 A7A8 +A7F8 . +A7F9 . +A7FA . +A7FB . +A7FC . +A7FD . +A7FE . +A7FF . +A800 . +A801 . +A803 . +A804 . +A805 . +A807 . +A808 . +A809 . +A80A . +A80C . +A80D . +A80E . +A80F . +A810 . +A811 . +A812 . +A813 . +A814 . +A815 . +A816 . +A817 . +A818 . +A819 . +A81A . +A81B . +A81C . +A81D . +A81E . +A81F . +A820 . +A821 . +A822 . +A840 . +A841 . +A842 . +A843 . +A844 . +A845 . +A846 . +A847 . +A848 . +A849 . +A84A . +A84B . +A84C . +A84D . +A84E . +A84F . +A850 . +A851 . +A852 . +A853 . +A854 . +A855 . +A856 . +A857 . +A858 . +A859 . +A85A . +A85B . +A85C . +A85D . +A85E . +A85F . +A860 . +A861 . +A862 . +A863 . +A864 . +A865 . +A866 . +A867 . +A868 . +A869 . +A86A . +A86B . +A86C . +A86D . +A86E . +A86F . +A870 . +A871 . +A872 . +A873 . +A882 . +A883 . +A884 . +A885 . +A886 . +A887 . +A888 . +A889 . +A88A . +A88B . +A88C . +A88D . +A88E . +A88F . +A890 . +A891 . +A892 . +A893 . +A894 . +A895 . +A896 . +A897 . +A898 . +A899 . +A89A . +A89B . +A89C . +A89D . +A89E . +A89F . +A8A0 . +A8A1 . +A8A2 . +A8A3 . +A8A4 . +A8A5 . +A8A6 . +A8A7 . +A8A8 . +A8A9 . +A8AA . +A8AB . +A8AC . +A8AD . +A8AE . +A8AF . +A8B0 . +A8B1 . +A8B2 . +A8B3 . +A8F2 . +A8F3 . +A8F4 . +A8F5 . +A8F6 . +A8F7 . +A8FB . +A90A . +A90B . +A90C . +A90D . +A90E . +A90F . +A910 . +A911 . +A912 . +A913 . +A914 . +A915 . +A916 . +A917 . +A918 . +A919 . +A91A . +A91B . +A91C . +A91D . +A91E . +A91F . +A920 . +A921 . +A922 . +A923 . +A924 . +A925 . +A930 . +A931 . +A932 . +A933 . +A934 . +A935 . +A936 . +A937 . +A938 . +A939 . +A93A . +A93B . +A93C . +A93D . +A93E . +A93F . +A940 . +A941 . +A942 . +A943 . +A944 . +A945 . +A946 . +A960 . +A961 . +A962 . +A963 . +A964 . +A965 . +A966 . +A967 . +A968 . +A969 . +A96A . +A96B . +A96C . +A96D . +A96E . +A96F . +A970 . +A971 . +A972 . +A973 . +A974 . +A975 . +A976 . +A977 . +A978 . +A979 . +A97A . +A97B . +A97C . +A984 . +A985 . +A986 . +A987 . +A988 . +A989 . +A98A . +A98B . +A98C . +A98D . +A98E . +A98F . +A990 . +A991 . +A992 . +A993 . +A994 . +A995 . +A996 . +A997 . +A998 . +A999 . +A99A . +A99B . +A99C . +A99D . +A99E . +A99F . +A9A0 . +A9A1 . +A9A2 . +A9A3 . +A9A4 . +A9A5 . +A9A6 . +A9A7 . +A9A8 . +A9A9 . +A9AA . +A9AB . +A9AC . +A9AD . +A9AE . +A9AF . +A9B0 . +A9B1 . +A9B2 . +A9CF . +AA00 . +AA01 . +AA02 . +AA03 . +AA04 . +AA05 . +AA06 . +AA07 . +AA08 . +AA09 . +AA0A . +AA0B . +AA0C . +AA0D . +AA0E . +AA0F . +AA10 . +AA11 . +AA12 . +AA13 . +AA14 . +AA15 . +AA16 . +AA17 . +AA18 . +AA19 . +AA1A . +AA1B . +AA1C . +AA1D . +AA1E . +AA1F . +AA20 . +AA21 . +AA22 . +AA23 . +AA24 . +AA25 . +AA26 . +AA27 . +AA28 . +AA40 . +AA41 . +AA42 . +AA44 . +AA45 . +AA46 . +AA47 . +AA48 . +AA49 . +AA4A . +AA4B . +AA60 . +AA61 . +AA62 . +AA63 . +AA64 . +AA65 . +AA66 . +AA67 . +AA68 . +AA69 . +AA6A . +AA6B . +AA6C . +AA6D . +AA6E . +AA6F . +AA70 . +AA71 . +AA72 . +AA73 . +AA74 . +AA75 . +AA76 . +AA7A . +AA80 . +AA81 . +AA82 . +AA83 . +AA84 . +AA85 . +AA86 . +AA87 . +AA88 . +AA89 . +AA8A . +AA8B . +AA8C . +AA8D . +AA8E . +AA8F . +AA90 . +AA91 . +AA92 . +AA93 . +AA94 . +AA95 . +AA96 . +AA97 . +AA98 . +AA99 . +AA9A . +AA9B . +AA9C . +AA9D . +AA9E . +AA9F . +AAA0 . +AAA1 . +AAA2 . +AAA3 . +AAA4 . +AAA5 . +AAA6 . +AAA7 . +AAA8 . +AAA9 . +AAAA . +AAAB . +AAAC . +AAAD . +AAAE . +AAAF . +AAB1 . +AAB5 . +AAB6 . +AAB9 . +AABA . +AABB . +AABC . +AABD . +AAC0 . +AAC2 . +AADB . +AADC . +AADD . +AAE0 . +AAE1 . +AAE2 . +AAE3 . +AAE4 . +AAE5 . +AAE6 . +AAE7 . +AAE8 . +AAE9 . +AAEA . +AAF2 . +AAF3 . +AAF4 . +AB01 . +AB02 . +AB03 . +AB04 . +AB05 . +AB06 . +AB09 . +AB0A . +AB0B . +AB0C . +AB0D . +AB0E . +AB11 . +AB12 . +AB13 . +AB14 . +AB15 . +AB16 . +AB20 . +AB21 . +AB22 . +AB23 . +AB24 . +AB25 . +AB26 . +AB28 . +AB29 . +AB2A . +AB2B . +AB2C . +AB2D . +AB2E . +ABC0 . +ABC1 . +ABC2 . +ABC3 . +ABC4 . +ABC5 . +ABC6 . +ABC7 . +ABC8 . +ABC9 . +ABCA . +ABCB . +ABCC . +ABCD . +ABCE . +ABCF . +ABD0 . +ABD1 . +ABD2 . +ABD3 . +ABD4 . +ABD5 . +ABD6 . +ABD7 . +ABD8 . +ABD9 . +ABDA . +ABDB . +ABDC . +ABDD . +ABDE . +ABDF . +ABE0 . +ABE1 . +ABE2 . +D7B0 . +D7B1 . +D7B2 . +D7B3 . +D7B4 . +D7B5 . +D7B6 . +D7B7 . +D7B8 . +D7B9 . +D7BA . +D7BB . +D7BC . +D7BD . +D7BE . +D7BF . +D7C0 . +D7C1 . +D7C2 . +D7C3 . +D7C4 . +D7C5 . +D7C6 . +D7CB . +D7CC . +D7CD . +D7CE . +D7CF . +D7D0 . +D7D1 . +D7D2 . +D7D3 . +D7D4 . +D7D5 . +D7D6 . +D7D7 . +D7D8 . +D7D9 . +D7DA . +D7DB . +D7DC . +D7DD . +D7DE . +D7DF . +D7E0 . +D7E1 . +D7E2 . +D7E3 . +D7E4 . +D7E5 . +D7E6 . +D7E7 . +D7E8 . +D7E9 . +D7EA . +D7EB . +D7EC . +D7ED . +D7EE . +D7EF . +D7F0 . +D7F1 . +D7F2 . +D7F3 . +D7F4 . +D7F5 . +D7F6 . +D7F7 . +D7F8 . +D7F9 . +D7FA . +D7FB . +F900 . +F901 . +F902 . +F903 . +F904 . +F905 . +F906 . +F907 . +F908 . +F909 . +F90A . +F90B . +F90C . +F90D . +F90E . +F90F . +F910 . +F911 . +F912 . +F913 . +F914 . +F915 . +F916 . +F917 . +F918 . +F919 . +F91A . +F91B . +F91C . +F91D . +F91E . +F91F . +F920 . +F921 . +F922 . +F923 . +F924 . +F925 . +F926 . +F927 . +F928 . +F929 . +F92A . +F92B . +F92C . +F92D . +F92E . +F92F . +F930 . +F931 . +F932 . +F933 . +F934 . +F935 . +F936 . +F937 . +F938 . +F939 . +F93A . +F93B . +F93C . +F93D . +F93E . +F93F . +F940 . +F941 . +F942 . +F943 . +F944 . +F945 . +F946 . +F947 . +F948 . +F949 . +F94A . +F94B . +F94C . +F94D . +F94E . +F94F . +F950 . +F951 . +F952 . +F953 . +F954 . +F955 . +F956 . +F957 . +F958 . +F959 . +F95A . +F95B . +F95C . +F95D . +F95E . +F95F . +F960 . +F961 . +F962 . +F963 . +F964 . +F965 . +F966 . +F967 . +F968 . +F969 . +F96A . +F96B . +F96C . +F96D . +F96E . +F96F . +F970 . +F971 . +F972 . +F973 . +F974 . +F975 . +F976 . +F977 . +F978 . +F979 . +F97A . +F97B . +F97C . +F97D . +F97E . +F97F . +F980 . +F981 . +F982 . +F983 . +F984 . +F985 . +F986 . +F987 . +F988 . +F989 . +F98A . +F98B . +F98C . +F98D . +F98E . +F98F . +F990 . +F991 . +F992 . +F993 . +F994 . +F995 . +F996 . +F997 . +F998 . +F999 . +F99A . +F99B . +F99C . +F99D . +F99E . +F99F . +F9A0 . +F9A1 . +F9A2 . +F9A3 . +F9A4 . +F9A5 . +F9A6 . +F9A7 . +F9A8 . +F9A9 . +F9AA . +F9AB . +F9AC . +F9AD . +F9AE . +F9AF . +F9B0 . +F9B1 . +F9B2 . +F9B3 . +F9B4 . +F9B5 . +F9B6 . +F9B7 . +F9B8 . +F9B9 . +F9BA . +F9BB . +F9BC . +F9BD . +F9BE . +F9BF . +F9C0 . +F9C1 . +F9C2 . +F9C3 . +F9C4 . +F9C5 . +F9C6 . +F9C7 . +F9C8 . +F9C9 . +F9CA . +F9CB . +F9CC . +F9CD . +F9CE . +F9CF . +F9D0 . +F9D1 . +F9D2 . +F9D3 . +F9D4 . +F9D5 . +F9D6 . +F9D7 . +F9D8 . +F9D9 . +F9DA . +F9DB . +F9DC . +F9DD . +F9DE . +F9DF . +F9E0 . +F9E1 . +F9E2 . +F9E3 . +F9E4 . +F9E5 . +F9E6 . +F9E7 . +F9E8 . +F9E9 . +F9EA . +F9EB . +F9EC . +F9ED . +F9EE . +F9EF . +F9F0 . +F9F1 . +F9F2 . +F9F3 . +F9F4 . +F9F5 . +F9F6 . +F9F7 . +F9F8 . +F9F9 . +F9FA . +F9FB . +F9FC . +F9FD . +F9FE . +F9FF . +FA00 . +FA01 . +FA02 . +FA03 . +FA04 . +FA05 . +FA06 . +FA07 . +FA08 . +FA09 . +FA0A . +FA0B . +FA0C . +FA0D . +FA0E . +FA0F . +FA10 . +FA11 . +FA12 . +FA13 . +FA14 . +FA15 . +FA16 . +FA17 . +FA18 . +FA19 . +FA1A . +FA1B . +FA1C . +FA1D . +FA1E . +FA1F . +FA20 . +FA21 . +FA22 . +FA23 . +FA24 . +FA25 . +FA26 . +FA27 . +FA28 . +FA29 . +FA2A . +FA2B . +FA2C . +FA2D . +FA2E . +FA2F . +FA30 . +FA31 . +FA32 . +FA33 . +FA34 . +FA35 . +FA36 . +FA37 . +FA38 . +FA39 . +FA3A . +FA3B . +FA3C . +FA3D . +FA3E . +FA3F . +FA40 . +FA41 . +FA42 . +FA43 . +FA44 . +FA45 . +FA46 . +FA47 . +FA48 . +FA49 . +FA4A . +FA4B . +FA4C . +FA4D . +FA4E . +FA4F . +FA50 . +FA51 . +FA52 . +FA53 . +FA54 . +FA55 . +FA56 . +FA57 . +FA58 . +FA59 . +FA5A . +FA5B . +FA5C . +FA5D . +FA5E . +FA5F . +FA60 . +FA61 . +FA62 . +FA63 . +FA64 . +FA65 . +FA66 . +FA67 . +FA68 . +FA69 . +FA6A . +FA6B . +FA6C . +FA6D . +FA70 . +FA71 . +FA72 . +FA73 . +FA74 . +FA75 . +FA76 . +FA77 . +FA78 . +FA79 . +FA7A . +FA7B . +FA7C . +FA7D . +FA7E . +FA7F . +FA80 . +FA81 . +FA82 . +FA83 . +FA84 . +FA85 . +FA86 . +FA87 . +FA88 . +FA89 . +FA8A . +FA8B . +FA8C . +FA8D . +FA8E . +FA8F . +FA90 . +FA91 . +FA92 . +FA93 . +FA94 . +FA95 . +FA96 . +FA97 . +FA98 . +FA99 . +FA9A . +FA9B . +FA9C . +FA9D . +FA9E . +FA9F . +FAA0 . +FAA1 . +FAA2 . +FAA3 . +FAA4 . +FAA5 . +FAA6 . +FAA7 . +FAA8 . +FAA9 . +FAAA . +FAAB . +FAAC . +FAAD . +FAAE . +FAAF . +FAB0 . +FAB1 . +FAB2 . +FAB3 . +FAB4 . +FAB5 . +FAB6 . +FAB7 . +FAB8 . +FAB9 . +FABA . +FABB . +FABC . +FABD . +FABE . +FABF . +FAC0 . +FAC1 . +FAC2 . +FAC3 . +FAC4 . +FAC5 . +FAC6 . +FAC7 . +FAC8 . +FAC9 . +FACA . +FACB . +FACC . +FACD . +FACE . +FACF . +FAD0 . +FAD1 . +FAD2 . +FAD3 . +FAD4 . +FAD5 . +FAD6 . +FAD7 . +FAD8 . +FAD9 . +FB00 . +FB01 . +FB02 . +FB03 . +FB04 . +FB05 . +FB06 . +FB13 . +FB14 . +FB15 . +FB16 . +FB17 . +FB1D . +FB1F . +FB20 . +FB21 . +FB22 . +FB23 . +FB24 . +FB25 . +FB26 . +FB27 . +FB28 . +FB2A . +FB2B . +FB2C . +FB2D . +FB2E . +FB2F . +FB30 . +FB31 . +FB32 . +FB33 . +FB34 . +FB35 . +FB36 . +FB38 . +FB39 . +FB3A . +FB3B . +FB3C . +FB3E . +FB40 . +FB41 . +FB43 . +FB44 . +FB46 . +FB47 . +FB48 . +FB49 . +FB4A . +FB4B . +FB4C . +FB4D . +FB4E . +FB4F . +FB50 . +FB51 . +FB52 . +FB53 . +FB54 . +FB55 . +FB56 . +FB57 . +FB58 . +FB59 . +FB5A . +FB5B . +FB5C . +FB5D . +FB5E . +FB5F . +FB60 . +FB61 . +FB62 . +FB63 . +FB64 . +FB65 . +FB66 . +FB67 . +FB68 . +FB69 . +FB6A . +FB6B . +FB6C . +FB6D . +FB6E . +FB6F . +FB70 . +FB71 . +FB72 . +FB73 . +FB74 . +FB75 . +FB76 . +FB77 . +FB78 . +FB79 . +FB7A . +FB7B . +FB7C . +FB7D . +FB7E . +FB7F . +FB80 . +FB81 . +FB82 . +FB83 . +FB84 . +FB85 . +FB86 . +FB87 . +FB88 . +FB89 . +FB8A . +FB8B . +FB8C . +FB8D . +FB8E . +FB8F . +FB90 . +FB91 . +FB92 . +FB93 . +FB94 . +FB95 . +FB96 . +FB97 . +FB98 . +FB99 . +FB9A . +FB9B . +FB9C . +FB9D . +FB9E . +FB9F . +FBA0 . +FBA1 . +FBA2 . +FBA3 . +FBA4 . +FBA5 . +FBA6 . +FBA7 . +FBA8 . +FBA9 . +FBAA . +FBAB . +FBAC . +FBAD . +FBAE . +FBAF . +FBB0 . +FBB1 . +FBD3 . +FBD4 . +FBD5 . +FBD6 . +FBD7 . +FBD8 . +FBD9 . +FBDA . +FBDB . +FBDC . +FBDD . +FBDE . +FBDF . +FBE0 . +FBE1 . +FBE2 . +FBE3 . +FBE4 . +FBE5 . +FBE6 . +FBE7 . +FBE8 . +FBE9 . +FBEA . +FBEB . +FBEC . +FBED . +FBEE . +FBEF . +FBF0 . +FBF1 . +FBF2 . +FBF3 . +FBF4 . +FBF5 . +FBF6 . +FBF7 . +FBF8 . +FBF9 . +FBFA . +FBFB . +FBFC . +FBFD . +FBFE . +FBFF . +FC00 . +FC01 . +FC02 . +FC03 . +FC04 . +FC05 . +FC06 . +FC07 . +FC08 . +FC09 . +FC0A . +FC0B . +FC0C . +FC0D . +FC0E . +FC0F . +FC10 . +FC11 . +FC12 . +FC13 . +FC14 . +FC15 . +FC16 . +FC17 . +FC18 . +FC19 . +FC1A . +FC1B . +FC1C . +FC1D . +FC1E . +FC1F . +FC20 . +FC21 . +FC22 . +FC23 . +FC24 . +FC25 . +FC26 . +FC27 . +FC28 . +FC29 . +FC2A . +FC2B . +FC2C . +FC2D . +FC2E . +FC2F . +FC30 . +FC31 . +FC32 . +FC33 . +FC34 . +FC35 . +FC36 . +FC37 . +FC38 . +FC39 . +FC3A . +FC3B . +FC3C . +FC3D . +FC3E . +FC3F . +FC40 . +FC41 . +FC42 . +FC43 . +FC44 . +FC45 . +FC46 . +FC47 . +FC48 . +FC49 . +FC4A . +FC4B . +FC4C . +FC4D . +FC4E . +FC4F . +FC50 . +FC51 . +FC52 . +FC53 . +FC54 . +FC55 . +FC56 . +FC57 . +FC58 . +FC59 . +FC5A . +FC5B . +FC5C . +FC5D . +FC5E . +FC5F . +FC60 . +FC61 . +FC62 . +FC63 . +FC64 . +FC65 . +FC66 . +FC67 . +FC68 . +FC69 . +FC6A . +FC6B . +FC6C . +FC6D . +FC6E . +FC6F . +FC70 . +FC71 . +FC72 . +FC73 . +FC74 . +FC75 . +FC76 . +FC77 . +FC78 . +FC79 . +FC7A . +FC7B . +FC7C . +FC7D . +FC7E . +FC7F . +FC80 . +FC81 . +FC82 . +FC83 . +FC84 . +FC85 . +FC86 . +FC87 . +FC88 . +FC89 . +FC8A . +FC8B . +FC8C . +FC8D . +FC8E . +FC8F . +FC90 . +FC91 . +FC92 . +FC93 . +FC94 . +FC95 . +FC96 . +FC97 . +FC98 . +FC99 . +FC9A . +FC9B . +FC9C . +FC9D . +FC9E . +FC9F . +FCA0 . +FCA1 . +FCA2 . +FCA3 . +FCA4 . +FCA5 . +FCA6 . +FCA7 . +FCA8 . +FCA9 . +FCAA . +FCAB . +FCAC . +FCAD . +FCAE . +FCAF . +FCB0 . +FCB1 . +FCB2 . +FCB3 . +FCB4 . +FCB5 . +FCB6 . +FCB7 . +FCB8 . +FCB9 . +FCBA . +FCBB . +FCBC . +FCBD . +FCBE . +FCBF . +FCC0 . +FCC1 . +FCC2 . +FCC3 . +FCC4 . +FCC5 . +FCC6 . +FCC7 . +FCC8 . +FCC9 . +FCCA . +FCCB . +FCCC . +FCCD . +FCCE . +FCCF . +FCD0 . +FCD1 . +FCD2 . +FCD3 . +FCD4 . +FCD5 . +FCD6 . +FCD7 . +FCD8 . +FCD9 . +FCDA . +FCDB . +FCDC . +FCDD . +FCDE . +FCDF . +FCE0 . +FCE1 . +FCE2 . +FCE3 . +FCE4 . +FCE5 . +FCE6 . +FCE7 . +FCE8 . +FCE9 . +FCEA . +FCEB . +FCEC . +FCED . +FCEE . +FCEF . +FCF0 . +FCF1 . +FCF2 . +FCF3 . +FCF4 . +FCF5 . +FCF6 . +FCF7 . +FCF8 . +FCF9 . +FCFA . +FCFB . +FCFC . +FCFD . +FCFE . +FCFF . +FD00 . +FD01 . +FD02 . +FD03 . +FD04 . +FD05 . +FD06 . +FD07 . +FD08 . +FD09 . +FD0A . +FD0B . +FD0C . +FD0D . +FD0E . +FD0F . +FD10 . +FD11 . +FD12 . +FD13 . +FD14 . +FD15 . +FD16 . +FD17 . +FD18 . +FD19 . +FD1A . +FD1B . +FD1C . +FD1D . +FD1E . +FD1F . +FD20 . +FD21 . +FD22 . +FD23 . +FD24 . +FD25 . +FD26 . +FD27 . +FD28 . +FD29 . +FD2A . +FD2B . +FD2C . +FD2D . +FD2E . +FD2F . +FD30 . +FD31 . +FD32 . +FD33 . +FD34 . +FD35 . +FD36 . +FD37 . +FD38 . +FD39 . +FD3A . +FD3B . +FD3C . +FD3D . +FD50 . +FD51 . +FD52 . +FD53 . +FD54 . +FD55 . +FD56 . +FD57 . +FD58 . +FD59 . +FD5A . +FD5B . +FD5C . +FD5D . +FD5E . +FD5F . +FD60 . +FD61 . +FD62 . +FD63 . +FD64 . +FD65 . +FD66 . +FD67 . +FD68 . +FD69 . +FD6A . +FD6B . +FD6C . +FD6D . +FD6E . +FD6F . +FD70 . +FD71 . +FD72 . +FD73 . +FD74 . +FD75 . +FD76 . +FD77 . +FD78 . +FD79 . +FD7A . +FD7B . +FD7C . +FD7D . +FD7E . +FD7F . +FD80 . +FD81 . +FD82 . +FD83 . +FD84 . +FD85 . +FD86 . +FD87 . +FD88 . +FD89 . +FD8A . +FD8B . +FD8C . +FD8D . +FD8E . +FD8F . +FD92 . +FD93 . +FD94 . +FD95 . +FD96 . +FD97 . +FD98 . +FD99 . +FD9A . +FD9B . +FD9C . +FD9D . +FD9E . +FD9F . +FDA0 . +FDA1 . +FDA2 . +FDA3 . +FDA4 . +FDA5 . +FDA6 . +FDA7 . +FDA8 . +FDA9 . +FDAA . +FDAB . +FDAC . +FDAD . +FDAE . +FDAF . +FDB0 . +FDB1 . +FDB2 . +FDB3 . +FDB4 . +FDB5 . +FDB6 . +FDB7 . +FDB8 . +FDB9 . +FDBA . +FDBB . +FDBC . +FDBD . +FDBE . +FDBF . +FDC0 . +FDC1 . +FDC2 . +FDC3 . +FDC4 . +FDC5 . +FDC6 . +FDC7 . +FDF0 . +FDF1 . +FDF2 . +FDF3 . +FDF4 . +FDF5 . +FDF6 . +FDF7 . +FDF8 . +FDF9 . +FDFA . +FDFB . +FE70 . +FE71 . +FE72 . +FE73 . +FE74 . +FE76 . +FE77 . +FE78 . +FE79 . +FE7A . +FE7B . +FE7C . +FE7D . +FE7E . +FE7F . +FE80 . +FE81 . +FE82 . +FE83 . +FE84 . +FE85 . +FE86 . +FE87 . +FE88 . +FE89 . +FE8A . +FE8B . +FE8C . +FE8D . +FE8E . +FE8F . +FE90 . +FE91 . +FE92 . +FE93 . +FE94 . +FE95 . +FE96 . +FE97 . +FE98 . +FE99 . +FE9A . +FE9B . +FE9C . +FE9D . +FE9E . +FE9F . +FEA0 . +FEA1 . +FEA2 . +FEA3 . +FEA4 . +FEA5 . +FEA6 . +FEA7 . +FEA8 . +FEA9 . +FEAA . +FEAB . +FEAC . +FEAD . +FEAE . +FEAF . +FEB0 . +FEB1 . +FEB2 . +FEB3 . +FEB4 . +FEB5 . +FEB6 . +FEB7 . +FEB8 . +FEB9 . +FEBA . +FEBB . +FEBC . +FEBD . +FEBE . +FEBF . +FEC0 . +FEC1 . +FEC2 . +FEC3 . +FEC4 . +FEC5 . +FEC6 . +FEC7 . +FEC8 . +FEC9 . +FECA . +FECB . +FECC . +FECD . +FECE . +FECF . +FED0 . +FED1 . +FED2 . +FED3 . +FED4 . +FED5 . +FED6 . +FED7 . +FED8 . +FED9 . +FEDA . +FEDB . +FEDC . +FEDD . +FEDE . +FEDF . +FEE0 . +FEE1 . +FEE2 . +FEE3 . +FEE4 . +FEE5 . +FEE6 . +FEE7 . +FEE8 . +FEE9 . +FEEA . +FEEB . +FEEC . +FEED . +FEEE . +FEEF . +FEF0 . +FEF1 . +FEF2 . +FEF3 . +FEF4 . +FEF5 . +FEF6 . +FEF7 . +FEF8 . +FEF9 . +FEFA . +FEFB . +FEFC . +FF41 FF21 +FF42 FF22 +FF43 FF23 +FF44 FF24 +FF45 FF25 +FF46 FF26 +FF47 FF27 +FF48 FF28 +FF49 FF29 +FF4A FF2A +FF4B FF2B +FF4C FF2C +FF4D FF2D +FF4E FF2E +FF4F FF2F +FF50 FF30 +FF51 FF31 +FF52 FF32 +FF53 FF33 +FF54 FF34 +FF55 FF35 +FF56 FF36 +FF57 FF37 +FF58 FF38 +FF59 FF39 +FF5A FF3A +FF66 . +FF67 . +FF68 . +FF69 . +FF6A . +FF6B . +FF6C . +FF6D . +FF6E . +FF6F . +FF70 . +FF71 . +FF72 . +FF73 . +FF74 . +FF75 . +FF76 . +FF77 . +FF78 . +FF79 . +FF7A . +FF7B . +FF7C . +FF7D . +FF7E . +FF7F . +FF80 . +FF81 . +FF82 . +FF83 . +FF84 . +FF85 . +FF86 . +FF87 . +FF88 . +FF89 . +FF8A . +FF8B . +FF8C . +FF8D . +FF8E . +FF8F . +FF90 . +FF91 . +FF92 . +FF93 . +FF94 . +FF95 . +FF96 . +FF97 . +FF98 . +FF99 . +FF9A . +FF9B . +FF9C . +FF9D . +FF9E . +FF9F . +FFA0 . +FFA1 . +FFA2 . +FFA3 . +FFA4 . +FFA5 . +FFA6 . +FFA7 . +FFA8 . +FFA9 . +FFAA . +FFAB . +FFAC . +FFAD . +FFAE . +FFAF . +FFB0 . +FFB1 . +FFB2 . +FFB3 . +FFB4 . +FFB5 . +FFB6 . +FFB7 . +FFB8 . +FFB9 . +FFBA . +FFBB . +FFBC . +FFBD . +FFBE . +FFC2 . +FFC3 . +FFC4 . +FFC5 . +FFC6 . +FFC7 . +FFCA . +FFCB . +FFCC . +FFCD . +FFCE . +FFCF . +FFD2 . +FFD3 . +FFD4 . +FFD5 . +FFD6 . +FFD7 . +FFDA . +FFDB . +FFDC . +10000 . +10001 . +10002 . +10003 . +10004 . +10005 . +10006 . +10007 . +10008 . +10009 . +1000A . +1000B . +1000D . +1000E . +1000F . +10010 . +10011 . +10012 . +10013 . +10014 . +10015 . +10016 . +10017 . +10018 . +10019 . +1001A . +1001B . +1001C . +1001D . +1001E . +1001F . +10020 . +10021 . +10022 . +10023 . +10024 . +10025 . +10026 . +10028 . +10029 . +1002A . +1002B . +1002C . +1002D . +1002E . +1002F . +10030 . +10031 . +10032 . +10033 . +10034 . +10035 . +10036 . +10037 . +10038 . +10039 . +1003A . +1003C . +1003D . +1003F . +10040 . +10041 . +10042 . +10043 . +10044 . +10045 . +10046 . +10047 . +10048 . +10049 . +1004A . +1004B . +1004C . +1004D . +10050 . +10051 . +10052 . +10053 . +10054 . +10055 . +10056 . +10057 . +10058 . +10059 . +1005A . +1005B . +1005C . +1005D . +10080 . +10081 . +10082 . +10083 . +10084 . +10085 . +10086 . +10087 . +10088 . +10089 . +1008A . +1008B . +1008C . +1008D . +1008E . +1008F . +10090 . +10091 . +10092 . +10093 . +10094 . +10095 . +10096 . +10097 . +10098 . +10099 . +1009A . +1009B . +1009C . +1009D . +1009E . +1009F . +100A0 . +100A1 . +100A2 . +100A3 . +100A4 . +100A5 . +100A6 . +100A7 . +100A8 . +100A9 . +100AA . +100AB . +100AC . +100AD . +100AE . +100AF . +100B0 . +100B1 . +100B2 . +100B3 . +100B4 . +100B5 . +100B6 . +100B7 . +100B8 . +100B9 . +100BA . +100BB . +100BC . +100BD . +100BE . +100BF . +100C0 . +100C1 . +100C2 . +100C3 . +100C4 . +100C5 . +100C6 . +100C7 . +100C8 . +100C9 . +100CA . +100CB . +100CC . +100CD . +100CE . +100CF . +100D0 . +100D1 . +100D2 . +100D3 . +100D4 . +100D5 . +100D6 . +100D7 . +100D8 . +100D9 . +100DA . +100DB . +100DC . +100DD . +100DE . +100DF . +100E0 . +100E1 . +100E2 . +100E3 . +100E4 . +100E5 . +100E6 . +100E7 . +100E8 . +100E9 . +100EA . +100EB . +100EC . +100ED . +100EE . +100EF . +100F0 . +100F1 . +100F2 . +100F3 . +100F4 . +100F5 . +100F6 . +100F7 . +100F8 . +100F9 . +100FA . +10280 . +10281 . +10282 . +10283 . +10284 . +10285 . +10286 . +10287 . +10288 . +10289 . +1028A . +1028B . +1028C . +1028D . +1028E . +1028F . +10290 . +10291 . +10292 . +10293 . +10294 . +10295 . +10296 . +10297 . +10298 . +10299 . +1029A . +1029B . +1029C . +102A0 . +102A1 . +102A2 . +102A3 . +102A4 . +102A5 . +102A6 . +102A7 . +102A8 . +102A9 . +102AA . +102AB . +102AC . +102AD . +102AE . +102AF . +102B0 . +102B1 . +102B2 . +102B3 . +102B4 . +102B5 . +102B6 . +102B7 . +102B8 . +102B9 . +102BA . +102BB . +102BC . +102BD . +102BE . +102BF . +102C0 . +102C1 . +102C2 . +102C3 . +102C4 . +102C5 . +102C6 . +102C7 . +102C8 . +102C9 . +102CA . +102CB . +102CC . +102CD . +102CE . +102CF . +102D0 . +10300 . +10301 . +10302 . +10303 . +10304 . +10305 . +10306 . +10307 . +10308 . +10309 . +1030A . +1030B . +1030C . +1030D . +1030E . +1030F . +10310 . +10311 . +10312 . +10313 . +10314 . +10315 . +10316 . +10317 . +10318 . +10319 . +1031A . +1031B . +1031C . +1031D . +1031E . +10330 . +10331 . +10332 . +10333 . +10334 . +10335 . +10336 . +10337 . +10338 . +10339 . +1033A . +1033B . +1033C . +1033D . +1033E . +1033F . +10340 . +10342 . +10343 . +10344 . +10345 . +10346 . +10347 . +10348 . +10349 . +10380 . +10381 . +10382 . +10383 . +10384 . +10385 . +10386 . +10387 . +10388 . +10389 . +1038A . +1038B . +1038C . +1038D . +1038E . +1038F . +10390 . +10391 . +10392 . +10393 . +10394 . +10395 . +10396 . +10397 . +10398 . +10399 . +1039A . +1039B . +1039C . +1039D . +103A0 . +103A1 . +103A2 . +103A3 . +103A4 . +103A5 . +103A6 . +103A7 . +103A8 . +103A9 . +103AA . +103AB . +103AC . +103AD . +103AE . +103AF . +103B0 . +103B1 . +103B2 . +103B3 . +103B4 . +103B5 . +103B6 . +103B7 . +103B8 . +103B9 . +103BA . +103BB . +103BC . +103BD . +103BE . +103BF . +103C0 . +103C1 . +103C2 . +103C3 . +103C8 . +103C9 . +103CA . +103CB . +103CC . +103CD . +103CE . +103CF . +10428 10400 +10429 10401 +1042A 10402 +1042B 10403 +1042C 10404 +1042D 10405 +1042E 10406 +1042F 10407 +10430 10408 +10431 10409 +10432 1040A +10433 1040B +10434 1040C +10435 1040D +10436 1040E +10437 1040F +10438 10410 +10439 10411 +1043A 10412 +1043B 10413 +1043C 10414 +1043D 10415 +1043E 10416 +1043F 10417 +10440 10418 +10441 10419 +10442 1041A +10443 1041B +10444 1041C +10445 1041D +10446 1041E +10447 1041F +10448 10420 +10449 10421 +1044A 10422 +1044B 10423 +1044C 10424 +1044D 10425 +1044E 10426 +1044F 10427 +10450 . +10451 . +10452 . +10453 . +10454 . +10455 . +10456 . +10457 . +10458 . +10459 . +1045A . +1045B . +1045C . +1045D . +1045E . +1045F . +10460 . +10461 . +10462 . +10463 . +10464 . +10465 . +10466 . +10467 . +10468 . +10469 . +1046A . +1046B . +1046C . +1046D . +1046E . +1046F . +10470 . +10471 . +10472 . +10473 . +10474 . +10475 . +10476 . +10477 . +10478 . +10479 . +1047A . +1047B . +1047C . +1047D . +1047E . +1047F . +10480 . +10481 . +10482 . +10483 . +10484 . +10485 . +10486 . +10487 . +10488 . +10489 . +1048A . +1048B . +1048C . +1048D . +1048E . +1048F . +10490 . +10491 . +10492 . +10493 . +10494 . +10495 . +10496 . +10497 . +10498 . +10499 . +1049A . +1049B . +1049C . +1049D . +10800 . +10801 . +10802 . +10803 . +10804 . +10805 . +10808 . +1080A . +1080B . +1080C . +1080D . +1080E . +1080F . +10810 . +10811 . +10812 . +10813 . +10814 . +10815 . +10816 . +10817 . +10818 . +10819 . +1081A . +1081B . +1081C . +1081D . +1081E . +1081F . +10820 . +10821 . +10822 . +10823 . +10824 . +10825 . +10826 . +10827 . +10828 . +10829 . +1082A . +1082B . +1082C . +1082D . +1082E . +1082F . +10830 . +10831 . +10832 . +10833 . +10834 . +10835 . +10837 . +10838 . +1083C . +1083F . +10840 . +10841 . +10842 . +10843 . +10844 . +10845 . +10846 . +10847 . +10848 . +10849 . +1084A . +1084B . +1084C . +1084D . +1084E . +1084F . +10850 . +10851 . +10852 . +10853 . +10854 . +10855 . +10900 . +10901 . +10902 . +10903 . +10904 . +10905 . +10906 . +10907 . +10908 . +10909 . +1090A . +1090B . +1090C . +1090D . +1090E . +1090F . +10910 . +10911 . +10912 . +10913 . +10914 . +10915 . +10920 . +10921 . +10922 . +10923 . +10924 . +10925 . +10926 . +10927 . +10928 . +10929 . +1092A . +1092B . +1092C . +1092D . +1092E . +1092F . +10930 . +10931 . +10932 . +10933 . +10934 . +10935 . +10936 . +10937 . +10938 . +10939 . +10980 . +10981 . +10982 . +10983 . +10984 . +10985 . +10986 . +10987 . +10988 . +10989 . +1098A . +1098B . +1098C . +1098D . +1098E . +1098F . +10990 . +10991 . +10992 . +10993 . +10994 . +10995 . +10996 . +10997 . +10998 . +10999 . +1099A . +1099B . +1099C . +1099D . +1099E . +1099F . +109A0 . +109A1 . +109A2 . +109A3 . +109A4 . +109A5 . +109A6 . +109A7 . +109A8 . +109A9 . +109AA . +109AB . +109AC . +109AD . +109AE . +109AF . +109B0 . +109B1 . +109B2 . +109B3 . +109B4 . +109B5 . +109B6 . +109B7 . +109BE . +109BF . +10A00 . +10A10 . +10A11 . +10A12 . +10A13 . +10A15 . +10A16 . +10A17 . +10A19 . +10A1A . +10A1B . +10A1C . +10A1D . +10A1E . +10A1F . +10A20 . +10A21 . +10A22 . +10A23 . +10A24 . +10A25 . +10A26 . +10A27 . +10A28 . +10A29 . +10A2A . +10A2B . +10A2C . +10A2D . +10A2E . +10A2F . +10A30 . +10A31 . +10A32 . +10A33 . +10A60 . +10A61 . +10A62 . +10A63 . +10A64 . +10A65 . +10A66 . +10A67 . +10A68 . +10A69 . +10A6A . +10A6B . +10A6C . +10A6D . +10A6E . +10A6F . +10A70 . +10A71 . +10A72 . +10A73 . +10A74 . +10A75 . +10A76 . +10A77 . +10A78 . +10A79 . +10A7A . +10A7B . +10A7C . +10B00 . +10B01 . +10B02 . +10B03 . +10B04 . +10B05 . +10B06 . +10B07 . +10B08 . +10B09 . +10B0A . +10B0B . +10B0C . +10B0D . +10B0E . +10B0F . +10B10 . +10B11 . +10B12 . +10B13 . +10B14 . +10B15 . +10B16 . +10B17 . +10B18 . +10B19 . +10B1A . +10B1B . +10B1C . +10B1D . +10B1E . +10B1F . +10B20 . +10B21 . +10B22 . +10B23 . +10B24 . +10B25 . +10B26 . +10B27 . +10B28 . +10B29 . +10B2A . +10B2B . +10B2C . +10B2D . +10B2E . +10B2F . +10B30 . +10B31 . +10B32 . +10B33 . +10B34 . +10B35 . +10B40 . +10B41 . +10B42 . +10B43 . +10B44 . +10B45 . +10B46 . +10B47 . +10B48 . +10B49 . +10B4A . +10B4B . +10B4C . +10B4D . +10B4E . +10B4F . +10B50 . +10B51 . +10B52 . +10B53 . +10B54 . +10B55 . +10B60 . +10B61 . +10B62 . +10B63 . +10B64 . +10B65 . +10B66 . +10B67 . +10B68 . +10B69 . +10B6A . +10B6B . +10B6C . +10B6D . +10B6E . +10B6F . +10B70 . +10B71 . +10B72 . +10C00 . +10C01 . +10C02 . +10C03 . +10C04 . +10C05 . +10C06 . +10C07 . +10C08 . +10C09 . +10C0A . +10C0B . +10C0C . +10C0D . +10C0E . +10C0F . +10C10 . +10C11 . +10C12 . +10C13 . +10C14 . +10C15 . +10C16 . +10C17 . +10C18 . +10C19 . +10C1A . +10C1B . +10C1C . +10C1D . +10C1E . +10C1F . +10C20 . +10C21 . +10C22 . +10C23 . +10C24 . +10C25 . +10C26 . +10C27 . +10C28 . +10C29 . +10C2A . +10C2B . +10C2C . +10C2D . +10C2E . +10C2F . +10C30 . +10C31 . +10C32 . +10C33 . +10C34 . +10C35 . +10C36 . +10C37 . +10C38 . +10C39 . +10C3A . +10C3B . +10C3C . +10C3D . +10C3E . +10C3F . +10C40 . +10C41 . +10C42 . +10C43 . +10C44 . +10C45 . +10C46 . +10C47 . +10C48 . +11003 . +11004 . +11005 . +11006 . +11007 . +11008 . +11009 . +1100A . +1100B . +1100C . +1100D . +1100E . +1100F . +11010 . +11011 . +11012 . +11013 . +11014 . +11015 . +11016 . +11017 . +11018 . +11019 . +1101A . +1101B . +1101C . +1101D . +1101E . +1101F . +11020 . +11021 . +11022 . +11023 . +11024 . +11025 . +11026 . +11027 . +11028 . +11029 . +1102A . +1102B . +1102C . +1102D . +1102E . +1102F . +11030 . +11031 . +11032 . +11033 . +11034 . +11035 . +11036 . +11037 . +11083 . +11084 . +11085 . +11086 . +11087 . +11088 . +11089 . +1108A . +1108B . +1108C . +1108D . +1108E . +1108F . +11090 . +11091 . +11092 . +11093 . +11094 . +11095 . +11096 . +11097 . +11098 . +11099 . +1109A . +1109B . +1109C . +1109D . +1109E . +1109F . +110A0 . +110A1 . +110A2 . +110A3 . +110A4 . +110A5 . +110A6 . +110A7 . +110A8 . +110A9 . +110AA . +110AB . +110AC . +110AD . +110AE . +110AF . +110D0 . +110D1 . +110D2 . +110D3 . +110D4 . +110D5 . +110D6 . +110D7 . +110D8 . +110D9 . +110DA . +110DB . +110DC . +110DD . +110DE . +110DF . +110E0 . +110E1 . +110E2 . +110E3 . +110E4 . +110E5 . +110E6 . +110E7 . +110E8 . +11103 . +11104 . +11105 . +11106 . +11107 . +11108 . +11109 . +1110A . +1110B . +1110C . +1110D . +1110E . +1110F . +11110 . +11111 . +11112 . +11113 . +11114 . +11115 . +11116 . +11117 . +11118 . +11119 . +1111A . +1111B . +1111C . +1111D . +1111E . +1111F . +11120 . +11121 . +11122 . +11123 . +11124 . +11125 . +11126 . +11183 . +11184 . +11185 . +11186 . +11187 . +11188 . +11189 . +1118A . +1118B . +1118C . +1118D . +1118E . +1118F . +11190 . +11191 . +11192 . +11193 . +11194 . +11195 . +11196 . +11197 . +11198 . +11199 . +1119A . +1119B . +1119C . +1119D . +1119E . +1119F . +111A0 . +111A1 . +111A2 . +111A3 . +111A4 . +111A5 . +111A6 . +111A7 . +111A8 . +111A9 . +111AA . +111AB . +111AC . +111AD . +111AE . +111AF . +111B0 . +111B1 . +111B2 . +111C1 . +111C2 . +111C3 . +111C4 . +11680 . +11681 . +11682 . +11683 . +11684 . +11685 . +11686 . +11687 . +11688 . +11689 . +1168A . +1168B . +1168C . +1168D . +1168E . +1168F . +11690 . +11691 . +11692 . +11693 . +11694 . +11695 . +11696 . +11697 . +11698 . +11699 . +1169A . +1169B . +1169C . +1169D . +1169E . +1169F . +116A0 . +116A1 . +116A2 . +116A3 . +116A4 . +116A5 . +116A6 . +116A7 . +116A8 . +116A9 . +116AA . +12000 . +12001 . +12002 . +12003 . +12004 . +12005 . +12006 . +12007 . +12008 . +12009 . +1200A . +1200B . +1200C . +1200D . +1200E . +1200F . +12010 . +12011 . +12012 . +12013 . +12014 . +12015 . +12016 . +12017 . +12018 . +12019 . +1201A . +1201B . +1201C . +1201D . +1201E . +1201F . +12020 . +12021 . +12022 . +12023 . +12024 . +12025 . +12026 . +12027 . +12028 . +12029 . +1202A . +1202B . +1202C . +1202D . +1202E . +1202F . +12030 . +12031 . +12032 . +12033 . +12034 . +12035 . +12036 . +12037 . +12038 . +12039 . +1203A . +1203B . +1203C . +1203D . +1203E . +1203F . +12040 . +12041 . +12042 . +12043 . +12044 . +12045 . +12046 . +12047 . +12048 . +12049 . +1204A . +1204B . +1204C . +1204D . +1204E . +1204F . +12050 . +12051 . +12052 . +12053 . +12054 . +12055 . +12056 . +12057 . +12058 . +12059 . +1205A . +1205B . +1205C . +1205D . +1205E . +1205F . +12060 . +12061 . +12062 . +12063 . +12064 . +12065 . +12066 . +12067 . +12068 . +12069 . +1206A . +1206B . +1206C . +1206D . +1206E . +1206F . +12070 . +12071 . +12072 . +12073 . +12074 . +12075 . +12076 . +12077 . +12078 . +12079 . +1207A . +1207B . +1207C . +1207D . +1207E . +1207F . +12080 . +12081 . +12082 . +12083 . +12084 . +12085 . +12086 . +12087 . +12088 . +12089 . +1208A . +1208B . +1208C . +1208D . +1208E . +1208F . +12090 . +12091 . +12092 . +12093 . +12094 . +12095 . +12096 . +12097 . +12098 . +12099 . +1209A . +1209B . +1209C . +1209D . +1209E . +1209F . +120A0 . +120A1 . +120A2 . +120A3 . +120A4 . +120A5 . +120A6 . +120A7 . +120A8 . +120A9 . +120AA . +120AB . +120AC . +120AD . +120AE . +120AF . +120B0 . +120B1 . +120B2 . +120B3 . +120B4 . +120B5 . +120B6 . +120B7 . +120B8 . +120B9 . +120BA . +120BB . +120BC . +120BD . +120BE . +120BF . +120C0 . +120C1 . +120C2 . +120C3 . +120C4 . +120C5 . +120C6 . +120C7 . +120C8 . +120C9 . +120CA . +120CB . +120CC . +120CD . +120CE . +120CF . +120D0 . +120D1 . +120D2 . +120D3 . +120D4 . +120D5 . +120D6 . +120D7 . +120D8 . +120D9 . +120DA . +120DB . +120DC . +120DD . +120DE . +120DF . +120E0 . +120E1 . +120E2 . +120E3 . +120E4 . +120E5 . +120E6 . +120E7 . +120E8 . +120E9 . +120EA . +120EB . +120EC . +120ED . +120EE . +120EF . +120F0 . +120F1 . +120F2 . +120F3 . +120F4 . +120F5 . +120F6 . +120F7 . +120F8 . +120F9 . +120FA . +120FB . +120FC . +120FD . +120FE . +120FF . +12100 . +12101 . +12102 . +12103 . +12104 . +12105 . +12106 . +12107 . +12108 . +12109 . +1210A . +1210B . +1210C . +1210D . +1210E . +1210F . +12110 . +12111 . +12112 . +12113 . +12114 . +12115 . +12116 . +12117 . +12118 . +12119 . +1211A . +1211B . +1211C . +1211D . +1211E . +1211F . +12120 . +12121 . +12122 . +12123 . +12124 . +12125 . +12126 . +12127 . +12128 . +12129 . +1212A . +1212B . +1212C . +1212D . +1212E . +1212F . +12130 . +12131 . +12132 . +12133 . +12134 . +12135 . +12136 . +12137 . +12138 . +12139 . +1213A . +1213B . +1213C . +1213D . +1213E . +1213F . +12140 . +12141 . +12142 . +12143 . +12144 . +12145 . +12146 . +12147 . +12148 . +12149 . +1214A . +1214B . +1214C . +1214D . +1214E . +1214F . +12150 . +12151 . +12152 . +12153 . +12154 . +12155 . +12156 . +12157 . +12158 . +12159 . +1215A . +1215B . +1215C . +1215D . +1215E . +1215F . +12160 . +12161 . +12162 . +12163 . +12164 . +12165 . +12166 . +12167 . +12168 . +12169 . +1216A . +1216B . +1216C . +1216D . +1216E . +1216F . +12170 . +12171 . +12172 . +12173 . +12174 . +12175 . +12176 . +12177 . +12178 . +12179 . +1217A . +1217B . +1217C . +1217D . +1217E . +1217F . +12180 . +12181 . +12182 . +12183 . +12184 . +12185 . +12186 . +12187 . +12188 . +12189 . +1218A . +1218B . +1218C . +1218D . +1218E . +1218F . +12190 . +12191 . +12192 . +12193 . +12194 . +12195 . +12196 . +12197 . +12198 . +12199 . +1219A . +1219B . +1219C . +1219D . +1219E . +1219F . +121A0 . +121A1 . +121A2 . +121A3 . +121A4 . +121A5 . +121A6 . +121A7 . +121A8 . +121A9 . +121AA . +121AB . +121AC . +121AD . +121AE . +121AF . +121B0 . +121B1 . +121B2 . +121B3 . +121B4 . +121B5 . +121B6 . +121B7 . +121B8 . +121B9 . +121BA . +121BB . +121BC . +121BD . +121BE . +121BF . +121C0 . +121C1 . +121C2 . +121C3 . +121C4 . +121C5 . +121C6 . +121C7 . +121C8 . +121C9 . +121CA . +121CB . +121CC . +121CD . +121CE . +121CF . +121D0 . +121D1 . +121D2 . +121D3 . +121D4 . +121D5 . +121D6 . +121D7 . +121D8 . +121D9 . +121DA . +121DB . +121DC . +121DD . +121DE . +121DF . +121E0 . +121E1 . +121E2 . +121E3 . +121E4 . +121E5 . +121E6 . +121E7 . +121E8 . +121E9 . +121EA . +121EB . +121EC . +121ED . +121EE . +121EF . +121F0 . +121F1 . +121F2 . +121F3 . +121F4 . +121F5 . +121F6 . +121F7 . +121F8 . +121F9 . +121FA . +121FB . +121FC . +121FD . +121FE . +121FF . +12200 . +12201 . +12202 . +12203 . +12204 . +12205 . +12206 . +12207 . +12208 . +12209 . +1220A . +1220B . +1220C . +1220D . +1220E . +1220F . +12210 . +12211 . +12212 . +12213 . +12214 . +12215 . +12216 . +12217 . +12218 . +12219 . +1221A . +1221B . +1221C . +1221D . +1221E . +1221F . +12220 . +12221 . +12222 . +12223 . +12224 . +12225 . +12226 . +12227 . +12228 . +12229 . +1222A . +1222B . +1222C . +1222D . +1222E . +1222F . +12230 . +12231 . +12232 . +12233 . +12234 . +12235 . +12236 . +12237 . +12238 . +12239 . +1223A . +1223B . +1223C . +1223D . +1223E . +1223F . +12240 . +12241 . +12242 . +12243 . +12244 . +12245 . +12246 . +12247 . +12248 . +12249 . +1224A . +1224B . +1224C . +1224D . +1224E . +1224F . +12250 . +12251 . +12252 . +12253 . +12254 . +12255 . +12256 . +12257 . +12258 . +12259 . +1225A . +1225B . +1225C . +1225D . +1225E . +1225F . +12260 . +12261 . +12262 . +12263 . +12264 . +12265 . +12266 . +12267 . +12268 . +12269 . +1226A . +1226B . +1226C . +1226D . +1226E . +1226F . +12270 . +12271 . +12272 . +12273 . +12274 . +12275 . +12276 . +12277 . +12278 . +12279 . +1227A . +1227B . +1227C . +1227D . +1227E . +1227F . +12280 . +12281 . +12282 . +12283 . +12284 . +12285 . +12286 . +12287 . +12288 . +12289 . +1228A . +1228B . +1228C . +1228D . +1228E . +1228F . +12290 . +12291 . +12292 . +12293 . +12294 . +12295 . +12296 . +12297 . +12298 . +12299 . +1229A . +1229B . +1229C . +1229D . +1229E . +1229F . +122A0 . +122A1 . +122A2 . +122A3 . +122A4 . +122A5 . +122A6 . +122A7 . +122A8 . +122A9 . +122AA . +122AB . +122AC . +122AD . +122AE . +122AF . +122B0 . +122B1 . +122B2 . +122B3 . +122B4 . +122B5 . +122B6 . +122B7 . +122B8 . +122B9 . +122BA . +122BB . +122BC . +122BD . +122BE . +122BF . +122C0 . +122C1 . +122C2 . +122C3 . +122C4 . +122C5 . +122C6 . +122C7 . +122C8 . +122C9 . +122CA . +122CB . +122CC . +122CD . +122CE . +122CF . +122D0 . +122D1 . +122D2 . +122D3 . +122D4 . +122D5 . +122D6 . +122D7 . +122D8 . +122D9 . +122DA . +122DB . +122DC . +122DD . +122DE . +122DF . +122E0 . +122E1 . +122E2 . +122E3 . +122E4 . +122E5 . +122E6 . +122E7 . +122E8 . +122E9 . +122EA . +122EB . +122EC . +122ED . +122EE . +122EF . +122F0 . +122F1 . +122F2 . +122F3 . +122F4 . +122F5 . +122F6 . +122F7 . +122F8 . +122F9 . +122FA . +122FB . +122FC . +122FD . +122FE . +122FF . +12300 . +12301 . +12302 . +12303 . +12304 . +12305 . +12306 . +12307 . +12308 . +12309 . +1230A . +1230B . +1230C . +1230D . +1230E . +1230F . +12310 . +12311 . +12312 . +12313 . +12314 . +12315 . +12316 . +12317 . +12318 . +12319 . +1231A . +1231B . +1231C . +1231D . +1231E . +1231F . +12320 . +12321 . +12322 . +12323 . +12324 . +12325 . +12326 . +12327 . +12328 . +12329 . +1232A . +1232B . +1232C . +1232D . +1232E . +1232F . +12330 . +12331 . +12332 . +12333 . +12334 . +12335 . +12336 . +12337 . +12338 . +12339 . +1233A . +1233B . +1233C . +1233D . +1233E . +1233F . +12340 . +12341 . +12342 . +12343 . +12344 . +12345 . +12346 . +12347 . +12348 . +12349 . +1234A . +1234B . +1234C . +1234D . +1234E . +1234F . +12350 . +12351 . +12352 . +12353 . +12354 . +12355 . +12356 . +12357 . +12358 . +12359 . +1235A . +1235B . +1235C . +1235D . +1235E . +1235F . +12360 . +12361 . +12362 . +12363 . +12364 . +12365 . +12366 . +12367 . +12368 . +12369 . +1236A . +1236B . +1236C . +1236D . +1236E . +13000 . +13001 . +13002 . +13003 . +13004 . +13005 . +13006 . +13007 . +13008 . +13009 . +1300A . +1300B . +1300C . +1300D . +1300E . +1300F . +13010 . +13011 . +13012 . +13013 . +13014 . +13015 . +13016 . +13017 . +13018 . +13019 . +1301A . +1301B . +1301C . +1301D . +1301E . +1301F . +13020 . +13021 . +13022 . +13023 . +13024 . +13025 . +13026 . +13027 . +13028 . +13029 . +1302A . +1302B . +1302C . +1302D . +1302E . +1302F . +13030 . +13031 . +13032 . +13033 . +13034 . +13035 . +13036 . +13037 . +13038 . +13039 . +1303A . +1303B . +1303C . +1303D . +1303E . +1303F . +13040 . +13041 . +13042 . +13043 . +13044 . +13045 . +13046 . +13047 . +13048 . +13049 . +1304A . +1304B . +1304C . +1304D . +1304E . +1304F . +13050 . +13051 . +13052 . +13053 . +13054 . +13055 . +13056 . +13057 . +13058 . +13059 . +1305A . +1305B . +1305C . +1305D . +1305E . +1305F . +13060 . +13061 . +13062 . +13063 . +13064 . +13065 . +13066 . +13067 . +13068 . +13069 . +1306A . +1306B . +1306C . +1306D . +1306E . +1306F . +13070 . +13071 . +13072 . +13073 . +13074 . +13075 . +13076 . +13077 . +13078 . +13079 . +1307A . +1307B . +1307C . +1307D . +1307E . +1307F . +13080 . +13081 . +13082 . +13083 . +13084 . +13085 . +13086 . +13087 . +13088 . +13089 . +1308A . +1308B . +1308C . +1308D . +1308E . +1308F . +13090 . +13091 . +13092 . +13093 . +13094 . +13095 . +13096 . +13097 . +13098 . +13099 . +1309A . +1309B . +1309C . +1309D . +1309E . +1309F . +130A0 . +130A1 . +130A2 . +130A3 . +130A4 . +130A5 . +130A6 . +130A7 . +130A8 . +130A9 . +130AA . +130AB . +130AC . +130AD . +130AE . +130AF . +130B0 . +130B1 . +130B2 . +130B3 . +130B4 . +130B5 . +130B6 . +130B7 . +130B8 . +130B9 . +130BA . +130BB . +130BC . +130BD . +130BE . +130BF . +130C0 . +130C1 . +130C2 . +130C3 . +130C4 . +130C5 . +130C6 . +130C7 . +130C8 . +130C9 . +130CA . +130CB . +130CC . +130CD . +130CE . +130CF . +130D0 . +130D1 . +130D2 . +130D3 . +130D4 . +130D5 . +130D6 . +130D7 . +130D8 . +130D9 . +130DA . +130DB . +130DC . +130DD . +130DE . +130DF . +130E0 . +130E1 . +130E2 . +130E3 . +130E4 . +130E5 . +130E6 . +130E7 . +130E8 . +130E9 . +130EA . +130EB . +130EC . +130ED . +130EE . +130EF . +130F0 . +130F1 . +130F2 . +130F3 . +130F4 . +130F5 . +130F6 . +130F7 . +130F8 . +130F9 . +130FA . +130FB . +130FC . +130FD . +130FE . +130FF . +13100 . +13101 . +13102 . +13103 . +13104 . +13105 . +13106 . +13107 . +13108 . +13109 . +1310A . +1310B . +1310C . +1310D . +1310E . +1310F . +13110 . +13111 . +13112 . +13113 . +13114 . +13115 . +13116 . +13117 . +13118 . +13119 . +1311A . +1311B . +1311C . +1311D . +1311E . +1311F . +13120 . +13121 . +13122 . +13123 . +13124 . +13125 . +13126 . +13127 . +13128 . +13129 . +1312A . +1312B . +1312C . +1312D . +1312E . +1312F . +13130 . +13131 . +13132 . +13133 . +13134 . +13135 . +13136 . +13137 . +13138 . +13139 . +1313A . +1313B . +1313C . +1313D . +1313E . +1313F . +13140 . +13141 . +13142 . +13143 . +13144 . +13145 . +13146 . +13147 . +13148 . +13149 . +1314A . +1314B . +1314C . +1314D . +1314E . +1314F . +13150 . +13151 . +13152 . +13153 . +13154 . +13155 . +13156 . +13157 . +13158 . +13159 . +1315A . +1315B . +1315C . +1315D . +1315E . +1315F . +13160 . +13161 . +13162 . +13163 . +13164 . +13165 . +13166 . +13167 . +13168 . +13169 . +1316A . +1316B . +1316C . +1316D . +1316E . +1316F . +13170 . +13171 . +13172 . +13173 . +13174 . +13175 . +13176 . +13177 . +13178 . +13179 . +1317A . +1317B . +1317C . +1317D . +1317E . +1317F . +13180 . +13181 . +13182 . +13183 . +13184 . +13185 . +13186 . +13187 . +13188 . +13189 . +1318A . +1318B . +1318C . +1318D . +1318E . +1318F . +13190 . +13191 . +13192 . +13193 . +13194 . +13195 . +13196 . +13197 . +13198 . +13199 . +1319A . +1319B . +1319C . +1319D . +1319E . +1319F . +131A0 . +131A1 . +131A2 . +131A3 . +131A4 . +131A5 . +131A6 . +131A7 . +131A8 . +131A9 . +131AA . +131AB . +131AC . +131AD . +131AE . +131AF . +131B0 . +131B1 . +131B2 . +131B3 . +131B4 . +131B5 . +131B6 . +131B7 . +131B8 . +131B9 . +131BA . +131BB . +131BC . +131BD . +131BE . +131BF . +131C0 . +131C1 . +131C2 . +131C3 . +131C4 . +131C5 . +131C6 . +131C7 . +131C8 . +131C9 . +131CA . +131CB . +131CC . +131CD . +131CE . +131CF . +131D0 . +131D1 . +131D2 . +131D3 . +131D4 . +131D5 . +131D6 . +131D7 . +131D8 . +131D9 . +131DA . +131DB . +131DC . +131DD . +131DE . +131DF . +131E0 . +131E1 . +131E2 . +131E3 . +131E4 . +131E5 . +131E6 . +131E7 . +131E8 . +131E9 . +131EA . +131EB . +131EC . +131ED . +131EE . +131EF . +131F0 . +131F1 . +131F2 . +131F3 . +131F4 . +131F5 . +131F6 . +131F7 . +131F8 . +131F9 . +131FA . +131FB . +131FC . +131FD . +131FE . +131FF . +13200 . +13201 . +13202 . +13203 . +13204 . +13205 . +13206 . +13207 . +13208 . +13209 . +1320A . +1320B . +1320C . +1320D . +1320E . +1320F . +13210 . +13211 . +13212 . +13213 . +13214 . +13215 . +13216 . +13217 . +13218 . +13219 . +1321A . +1321B . +1321C . +1321D . +1321E . +1321F . +13220 . +13221 . +13222 . +13223 . +13224 . +13225 . +13226 . +13227 . +13228 . +13229 . +1322A . +1322B . +1322C . +1322D . +1322E . +1322F . +13230 . +13231 . +13232 . +13233 . +13234 . +13235 . +13236 . +13237 . +13238 . +13239 . +1323A . +1323B . +1323C . +1323D . +1323E . +1323F . +13240 . +13241 . +13242 . +13243 . +13244 . +13245 . +13246 . +13247 . +13248 . +13249 . +1324A . +1324B . +1324C . +1324D . +1324E . +1324F . +13250 . +13251 . +13252 . +13253 . +13254 . +13255 . +13256 . +13257 . +13258 . +13259 . +1325A . +1325B . +1325C . +1325D . +1325E . +1325F . +13260 . +13261 . +13262 . +13263 . +13264 . +13265 . +13266 . +13267 . +13268 . +13269 . +1326A . +1326B . +1326C . +1326D . +1326E . +1326F . +13270 . +13271 . +13272 . +13273 . +13274 . +13275 . +13276 . +13277 . +13278 . +13279 . +1327A . +1327B . +1327C . +1327D . +1327E . +1327F . +13280 . +13281 . +13282 . +13283 . +13284 . +13285 . +13286 . +13287 . +13288 . +13289 . +1328A . +1328B . +1328C . +1328D . +1328E . +1328F . +13290 . +13291 . +13292 . +13293 . +13294 . +13295 . +13296 . +13297 . +13298 . +13299 . +1329A . +1329B . +1329C . +1329D . +1329E . +1329F . +132A0 . +132A1 . +132A2 . +132A3 . +132A4 . +132A5 . +132A6 . +132A7 . +132A8 . +132A9 . +132AA . +132AB . +132AC . +132AD . +132AE . +132AF . +132B0 . +132B1 . +132B2 . +132B3 . +132B4 . +132B5 . +132B6 . +132B7 . +132B8 . +132B9 . +132BA . +132BB . +132BC . +132BD . +132BE . +132BF . +132C0 . +132C1 . +132C2 . +132C3 . +132C4 . +132C5 . +132C6 . +132C7 . +132C8 . +132C9 . +132CA . +132CB . +132CC . +132CD . +132CE . +132CF . +132D0 . +132D1 . +132D2 . +132D3 . +132D4 . +132D5 . +132D6 . +132D7 . +132D8 . +132D9 . +132DA . +132DB . +132DC . +132DD . +132DE . +132DF . +132E0 . +132E1 . +132E2 . +132E3 . +132E4 . +132E5 . +132E6 . +132E7 . +132E8 . +132E9 . +132EA . +132EB . +132EC . +132ED . +132EE . +132EF . +132F0 . +132F1 . +132F2 . +132F3 . +132F4 . +132F5 . +132F6 . +132F7 . +132F8 . +132F9 . +132FA . +132FB . +132FC . +132FD . +132FE . +132FF . +13300 . +13301 . +13302 . +13303 . +13304 . +13305 . +13306 . +13307 . +13308 . +13309 . +1330A . +1330B . +1330C . +1330D . +1330E . +1330F . +13310 . +13311 . +13312 . +13313 . +13314 . +13315 . +13316 . +13317 . +13318 . +13319 . +1331A . +1331B . +1331C . +1331D . +1331E . +1331F . +13320 . +13321 . +13322 . +13323 . +13324 . +13325 . +13326 . +13327 . +13328 . +13329 . +1332A . +1332B . +1332C . +1332D . +1332E . +1332F . +13330 . +13331 . +13332 . +13333 . +13334 . +13335 . +13336 . +13337 . +13338 . +13339 . +1333A . +1333B . +1333C . +1333D . +1333E . +1333F . +13340 . +13341 . +13342 . +13343 . +13344 . +13345 . +13346 . +13347 . +13348 . +13349 . +1334A . +1334B . +1334C . +1334D . +1334E . +1334F . +13350 . +13351 . +13352 . +13353 . +13354 . +13355 . +13356 . +13357 . +13358 . +13359 . +1335A . +1335B . +1335C . +1335D . +1335E . +1335F . +13360 . +13361 . +13362 . +13363 . +13364 . +13365 . +13366 . +13367 . +13368 . +13369 . +1336A . +1336B . +1336C . +1336D . +1336E . +1336F . +13370 . +13371 . +13372 . +13373 . +13374 . +13375 . +13376 . +13377 . +13378 . +13379 . +1337A . +1337B . +1337C . +1337D . +1337E . +1337F . +13380 . +13381 . +13382 . +13383 . +13384 . +13385 . +13386 . +13387 . +13388 . +13389 . +1338A . +1338B . +1338C . +1338D . +1338E . +1338F . +13390 . +13391 . +13392 . +13393 . +13394 . +13395 . +13396 . +13397 . +13398 . +13399 . +1339A . +1339B . +1339C . +1339D . +1339E . +1339F . +133A0 . +133A1 . +133A2 . +133A3 . +133A4 . +133A5 . +133A6 . +133A7 . +133A8 . +133A9 . +133AA . +133AB . +133AC . +133AD . +133AE . +133AF . +133B0 . +133B1 . +133B2 . +133B3 . +133B4 . +133B5 . +133B6 . +133B7 . +133B8 . +133B9 . +133BA . +133BB . +133BC . +133BD . +133BE . +133BF . +133C0 . +133C1 . +133C2 . +133C3 . +133C4 . +133C5 . +133C6 . +133C7 . +133C8 . +133C9 . +133CA . +133CB . +133CC . +133CD . +133CE . +133CF . +133D0 . +133D1 . +133D2 . +133D3 . +133D4 . +133D5 . +133D6 . +133D7 . +133D8 . +133D9 . +133DA . +133DB . +133DC . +133DD . +133DE . +133DF . +133E0 . +133E1 . +133E2 . +133E3 . +133E4 . +133E5 . +133E6 . +133E7 . +133E8 . +133E9 . +133EA . +133EB . +133EC . +133ED . +133EE . +133EF . +133F0 . +133F1 . +133F2 . +133F3 . +133F4 . +133F5 . +133F6 . +133F7 . +133F8 . +133F9 . +133FA . +133FB . +133FC . +133FD . +133FE . +133FF . +13400 . +13401 . +13402 . +13403 . +13404 . +13405 . +13406 . +13407 . +13408 . +13409 . +1340A . +1340B . +1340C . +1340D . +1340E . +1340F . +13410 . +13411 . +13412 . +13413 . +13414 . +13415 . +13416 . +13417 . +13418 . +13419 . +1341A . +1341B . +1341C . +1341D . +1341E . +1341F . +13420 . +13421 . +13422 . +13423 . +13424 . +13425 . +13426 . +13427 . +13428 . +13429 . +1342A . +1342B . +1342C . +1342D . +1342E . +16800 . +16801 . +16802 . +16803 . +16804 . +16805 . +16806 . +16807 . +16808 . +16809 . +1680A . +1680B . +1680C . +1680D . +1680E . +1680F . +16810 . +16811 . +16812 . +16813 . +16814 . +16815 . +16816 . +16817 . +16818 . +16819 . +1681A . +1681B . +1681C . +1681D . +1681E . +1681F . +16820 . +16821 . +16822 . +16823 . +16824 . +16825 . +16826 . +16827 . +16828 . +16829 . +1682A . +1682B . +1682C . +1682D . +1682E . +1682F . +16830 . +16831 . +16832 . +16833 . +16834 . +16835 . +16836 . +16837 . +16838 . +16839 . +1683A . +1683B . +1683C . +1683D . +1683E . +1683F . +16840 . +16841 . +16842 . +16843 . +16844 . +16845 . +16846 . +16847 . +16848 . +16849 . +1684A . +1684B . +1684C . +1684D . +1684E . +1684F . +16850 . +16851 . +16852 . +16853 . +16854 . +16855 . +16856 . +16857 . +16858 . +16859 . +1685A . +1685B . +1685C . +1685D . +1685E . +1685F . +16860 . +16861 . +16862 . +16863 . +16864 . +16865 . +16866 . +16867 . +16868 . +16869 . +1686A . +1686B . +1686C . +1686D . +1686E . +1686F . +16870 . +16871 . +16872 . +16873 . +16874 . +16875 . +16876 . +16877 . +16878 . +16879 . +1687A . +1687B . +1687C . +1687D . +1687E . +1687F . +16880 . +16881 . +16882 . +16883 . +16884 . +16885 . +16886 . +16887 . +16888 . +16889 . +1688A . +1688B . +1688C . +1688D . +1688E . +1688F . +16890 . +16891 . +16892 . +16893 . +16894 . +16895 . +16896 . +16897 . +16898 . +16899 . +1689A . +1689B . +1689C . +1689D . +1689E . +1689F . +168A0 . +168A1 . +168A2 . +168A3 . +168A4 . +168A5 . +168A6 . +168A7 . +168A8 . +168A9 . +168AA . +168AB . +168AC . +168AD . +168AE . +168AF . +168B0 . +168B1 . +168B2 . +168B3 . +168B4 . +168B5 . +168B6 . +168B7 . +168B8 . +168B9 . +168BA . +168BB . +168BC . +168BD . +168BE . +168BF . +168C0 . +168C1 . +168C2 . +168C3 . +168C4 . +168C5 . +168C6 . +168C7 . +168C8 . +168C9 . +168CA . +168CB . +168CC . +168CD . +168CE . +168CF . +168D0 . +168D1 . +168D2 . +168D3 . +168D4 . +168D5 . +168D6 . +168D7 . +168D8 . +168D9 . +168DA . +168DB . +168DC . +168DD . +168DE . +168DF . +168E0 . +168E1 . +168E2 . +168E3 . +168E4 . +168E5 . +168E6 . +168E7 . +168E8 . +168E9 . +168EA . +168EB . +168EC . +168ED . +168EE . +168EF . +168F0 . +168F1 . +168F2 . +168F3 . +168F4 . +168F5 . +168F6 . +168F7 . +168F8 . +168F9 . +168FA . +168FB . +168FC . +168FD . +168FE . +168FF . +16900 . +16901 . +16902 . +16903 . +16904 . +16905 . +16906 . +16907 . +16908 . +16909 . +1690A . +1690B . +1690C . +1690D . +1690E . +1690F . +16910 . +16911 . +16912 . +16913 . +16914 . +16915 . +16916 . +16917 . +16918 . +16919 . +1691A . +1691B . +1691C . +1691D . +1691E . +1691F . +16920 . +16921 . +16922 . +16923 . +16924 . +16925 . +16926 . +16927 . +16928 . +16929 . +1692A . +1692B . +1692C . +1692D . +1692E . +1692F . +16930 . +16931 . +16932 . +16933 . +16934 . +16935 . +16936 . +16937 . +16938 . +16939 . +1693A . +1693B . +1693C . +1693D . +1693E . +1693F . +16940 . +16941 . +16942 . +16943 . +16944 . +16945 . +16946 . +16947 . +16948 . +16949 . +1694A . +1694B . +1694C . +1694D . +1694E . +1694F . +16950 . +16951 . +16952 . +16953 . +16954 . +16955 . +16956 . +16957 . +16958 . +16959 . +1695A . +1695B . +1695C . +1695D . +1695E . +1695F . +16960 . +16961 . +16962 . +16963 . +16964 . +16965 . +16966 . +16967 . +16968 . +16969 . +1696A . +1696B . +1696C . +1696D . +1696E . +1696F . +16970 . +16971 . +16972 . +16973 . +16974 . +16975 . +16976 . +16977 . +16978 . +16979 . +1697A . +1697B . +1697C . +1697D . +1697E . +1697F . +16980 . +16981 . +16982 . +16983 . +16984 . +16985 . +16986 . +16987 . +16988 . +16989 . +1698A . +1698B . +1698C . +1698D . +1698E . +1698F . +16990 . +16991 . +16992 . +16993 . +16994 . +16995 . +16996 . +16997 . +16998 . +16999 . +1699A . +1699B . +1699C . +1699D . +1699E . +1699F . +169A0 . +169A1 . +169A2 . +169A3 . +169A4 . +169A5 . +169A6 . +169A7 . +169A8 . +169A9 . +169AA . +169AB . +169AC . +169AD . +169AE . +169AF . +169B0 . +169B1 . +169B2 . +169B3 . +169B4 . +169B5 . +169B6 . +169B7 . +169B8 . +169B9 . +169BA . +169BB . +169BC . +169BD . +169BE . +169BF . +169C0 . +169C1 . +169C2 . +169C3 . +169C4 . +169C5 . +169C6 . +169C7 . +169C8 . +169C9 . +169CA . +169CB . +169CC . +169CD . +169CE . +169CF . +169D0 . +169D1 . +169D2 . +169D3 . +169D4 . +169D5 . +169D6 . +169D7 . +169D8 . +169D9 . +169DA . +169DB . +169DC . +169DD . +169DE . +169DF . +169E0 . +169E1 . +169E2 . +169E3 . +169E4 . +169E5 . +169E6 . +169E7 . +169E8 . +169E9 . +169EA . +169EB . +169EC . +169ED . +169EE . +169EF . +169F0 . +169F1 . +169F2 . +169F3 . +169F4 . +169F5 . +169F6 . +169F7 . +169F8 . +169F9 . +169FA . +169FB . +169FC . +169FD . +169FE . +169FF . +16A00 . +16A01 . +16A02 . +16A03 . +16A04 . +16A05 . +16A06 . +16A07 . +16A08 . +16A09 . +16A0A . +16A0B . +16A0C . +16A0D . +16A0E . +16A0F . +16A10 . +16A11 . +16A12 . +16A13 . +16A14 . +16A15 . +16A16 . +16A17 . +16A18 . +16A19 . +16A1A . +16A1B . +16A1C . +16A1D . +16A1E . +16A1F . +16A20 . +16A21 . +16A22 . +16A23 . +16A24 . +16A25 . +16A26 . +16A27 . +16A28 . +16A29 . +16A2A . +16A2B . +16A2C . +16A2D . +16A2E . +16A2F . +16A30 . +16A31 . +16A32 . +16A33 . +16A34 . +16A35 . +16A36 . +16A37 . +16A38 . +16F00 . +16F01 . +16F02 . +16F03 . +16F04 . +16F05 . +16F06 . +16F07 . +16F08 . +16F09 . +16F0A . +16F0B . +16F0C . +16F0D . +16F0E . +16F0F . +16F10 . +16F11 . +16F12 . +16F13 . +16F14 . +16F15 . +16F16 . +16F17 . +16F18 . +16F19 . +16F1A . +16F1B . +16F1C . +16F1D . +16F1E . +16F1F . +16F20 . +16F21 . +16F22 . +16F23 . +16F24 . +16F25 . +16F26 . +16F27 . +16F28 . +16F29 . +16F2A . +16F2B . +16F2C . +16F2D . +16F2E . +16F2F . +16F30 . +16F31 . +16F32 . +16F33 . +16F34 . +16F35 . +16F36 . +16F37 . +16F38 . +16F39 . +16F3A . +16F3B . +16F3C . +16F3D . +16F3E . +16F3F . +16F40 . +16F41 . +16F42 . +16F43 . +16F44 . +16F50 . +16F93 . +16F94 . +16F95 . +16F96 . +16F97 . +16F98 . +16F99 . +16F9A . +16F9B . +16F9C . +16F9D . +16F9E . +16F9F . +1B000 . +1B001 . +1D400 . +1D401 . +1D402 . +1D403 . +1D404 . +1D405 . +1D406 . +1D407 . +1D408 . +1D409 . +1D40A . +1D40B . +1D40C . +1D40D . +1D40E . +1D40F . +1D410 . +1D411 . +1D412 . +1D413 . +1D414 . +1D415 . +1D416 . +1D417 . +1D418 . +1D419 . +1D41A . +1D41B . +1D41C . +1D41D . +1D41E . +1D41F . +1D420 . +1D421 . +1D422 . +1D423 . +1D424 . +1D425 . +1D426 . +1D427 . +1D428 . +1D429 . +1D42A . +1D42B . +1D42C . +1D42D . +1D42E . +1D42F . +1D430 . +1D431 . +1D432 . +1D433 . +1D434 . +1D435 . +1D436 . +1D437 . +1D438 . +1D439 . +1D43A . +1D43B . +1D43C . +1D43D . +1D43E . +1D43F . +1D440 . +1D441 . +1D442 . +1D443 . +1D444 . +1D445 . +1D446 . +1D447 . +1D448 . +1D449 . +1D44A . +1D44B . +1D44C . +1D44D . +1D44E . +1D44F . +1D450 . +1D451 . +1D452 . +1D453 . +1D454 . +1D456 . +1D457 . +1D458 . +1D459 . +1D45A . +1D45B . +1D45C . +1D45D . +1D45E . +1D45F . +1D460 . +1D461 . +1D462 . +1D463 . +1D464 . +1D465 . +1D466 . +1D467 . +1D468 . +1D469 . +1D46A . +1D46B . +1D46C . +1D46D . +1D46E . +1D46F . +1D470 . +1D471 . +1D472 . +1D473 . +1D474 . +1D475 . +1D476 . +1D477 . +1D478 . +1D479 . +1D47A . +1D47B . +1D47C . +1D47D . +1D47E . +1D47F . +1D480 . +1D481 . +1D482 . +1D483 . +1D484 . +1D485 . +1D486 . +1D487 . +1D488 . +1D489 . +1D48A . +1D48B . +1D48C . +1D48D . +1D48E . +1D48F . +1D490 . +1D491 . +1D492 . +1D493 . +1D494 . +1D495 . +1D496 . +1D497 . +1D498 . +1D499 . +1D49A . +1D49B . +1D49C . +1D49E . +1D49F . +1D4A2 . +1D4A5 . +1D4A6 . +1D4A9 . +1D4AA . +1D4AB . +1D4AC . +1D4AE . +1D4AF . +1D4B0 . +1D4B1 . +1D4B2 . +1D4B3 . +1D4B4 . +1D4B5 . +1D4B6 . +1D4B7 . +1D4B8 . +1D4B9 . +1D4BB . +1D4BD . +1D4BE . +1D4BF . +1D4C0 . +1D4C1 . +1D4C2 . +1D4C3 . +1D4C5 . +1D4C6 . +1D4C7 . +1D4C8 . +1D4C9 . +1D4CA . +1D4CB . +1D4CC . +1D4CD . +1D4CE . +1D4CF . +1D4D0 . +1D4D1 . +1D4D2 . +1D4D3 . +1D4D4 . +1D4D5 . +1D4D6 . +1D4D7 . +1D4D8 . +1D4D9 . +1D4DA . +1D4DB . +1D4DC . +1D4DD . +1D4DE . +1D4DF . +1D4E0 . +1D4E1 . +1D4E2 . +1D4E3 . +1D4E4 . +1D4E5 . +1D4E6 . +1D4E7 . +1D4E8 . +1D4E9 . +1D4EA . +1D4EB . +1D4EC . +1D4ED . +1D4EE . +1D4EF . +1D4F0 . +1D4F1 . +1D4F2 . +1D4F3 . +1D4F4 . +1D4F5 . +1D4F6 . +1D4F7 . +1D4F8 . +1D4F9 . +1D4FA . +1D4FB . +1D4FC . +1D4FD . +1D4FE . +1D4FF . +1D500 . +1D501 . +1D502 . +1D503 . +1D504 . +1D505 . +1D507 . +1D508 . +1D509 . +1D50A . +1D50D . +1D50E . +1D50F . +1D510 . +1D511 . +1D512 . +1D513 . +1D514 . +1D516 . +1D517 . +1D518 . +1D519 . +1D51A . +1D51B . +1D51C . +1D51E . +1D51F . +1D520 . +1D521 . +1D522 . +1D523 . +1D524 . +1D525 . +1D526 . +1D527 . +1D528 . +1D529 . +1D52A . +1D52B . +1D52C . +1D52D . +1D52E . +1D52F . +1D530 . +1D531 . +1D532 . +1D533 . +1D534 . +1D535 . +1D536 . +1D537 . +1D538 . +1D539 . +1D53B . +1D53C . +1D53D . +1D53E . +1D540 . +1D541 . +1D542 . +1D543 . +1D544 . +1D546 . +1D54A . +1D54B . +1D54C . +1D54D . +1D54E . +1D54F . +1D550 . +1D552 . +1D553 . +1D554 . +1D555 . +1D556 . +1D557 . +1D558 . +1D559 . +1D55A . +1D55B . +1D55C . +1D55D . +1D55E . +1D55F . +1D560 . +1D561 . +1D562 . +1D563 . +1D564 . +1D565 . +1D566 . +1D567 . +1D568 . +1D569 . +1D56A . +1D56B . +1D56C . +1D56D . +1D56E . +1D56F . +1D570 . +1D571 . +1D572 . +1D573 . +1D574 . +1D575 . +1D576 . +1D577 . +1D578 . +1D579 . +1D57A . +1D57B . +1D57C . +1D57D . +1D57E . +1D57F . +1D580 . +1D581 . +1D582 . +1D583 . +1D584 . +1D585 . +1D586 . +1D587 . +1D588 . +1D589 . +1D58A . +1D58B . +1D58C . +1D58D . +1D58E . +1D58F . +1D590 . +1D591 . +1D592 . +1D593 . +1D594 . +1D595 . +1D596 . +1D597 . +1D598 . +1D599 . +1D59A . +1D59B . +1D59C . +1D59D . +1D59E . +1D59F . +1D5A0 . +1D5A1 . +1D5A2 . +1D5A3 . +1D5A4 . +1D5A5 . +1D5A6 . +1D5A7 . +1D5A8 . +1D5A9 . +1D5AA . +1D5AB . +1D5AC . +1D5AD . +1D5AE . +1D5AF . +1D5B0 . +1D5B1 . +1D5B2 . +1D5B3 . +1D5B4 . +1D5B5 . +1D5B6 . +1D5B7 . +1D5B8 . +1D5B9 . +1D5BA . +1D5BB . +1D5BC . +1D5BD . +1D5BE . +1D5BF . +1D5C0 . +1D5C1 . +1D5C2 . +1D5C3 . +1D5C4 . +1D5C5 . +1D5C6 . +1D5C7 . +1D5C8 . +1D5C9 . +1D5CA . +1D5CB . +1D5CC . +1D5CD . +1D5CE . +1D5CF . +1D5D0 . +1D5D1 . +1D5D2 . +1D5D3 . +1D5D4 . +1D5D5 . +1D5D6 . +1D5D7 . +1D5D8 . +1D5D9 . +1D5DA . +1D5DB . +1D5DC . +1D5DD . +1D5DE . +1D5DF . +1D5E0 . +1D5E1 . +1D5E2 . +1D5E3 . +1D5E4 . +1D5E5 . +1D5E6 . +1D5E7 . +1D5E8 . +1D5E9 . +1D5EA . +1D5EB . +1D5EC . +1D5ED . +1D5EE . +1D5EF . +1D5F0 . +1D5F1 . +1D5F2 . +1D5F3 . +1D5F4 . +1D5F5 . +1D5F6 . +1D5F7 . +1D5F8 . +1D5F9 . +1D5FA . +1D5FB . +1D5FC . +1D5FD . +1D5FE . +1D5FF . +1D600 . +1D601 . +1D602 . +1D603 . +1D604 . +1D605 . +1D606 . +1D607 . +1D608 . +1D609 . +1D60A . +1D60B . +1D60C . +1D60D . +1D60E . +1D60F . +1D610 . +1D611 . +1D612 . +1D613 . +1D614 . +1D615 . +1D616 . +1D617 . +1D618 . +1D619 . +1D61A . +1D61B . +1D61C . +1D61D . +1D61E . +1D61F . +1D620 . +1D621 . +1D622 . +1D623 . +1D624 . +1D625 . +1D626 . +1D627 . +1D628 . +1D629 . +1D62A . +1D62B . +1D62C . +1D62D . +1D62E . +1D62F . +1D630 . +1D631 . +1D632 . +1D633 . +1D634 . +1D635 . +1D636 . +1D637 . +1D638 . +1D639 . +1D63A . +1D63B . +1D63C . +1D63D . +1D63E . +1D63F . +1D640 . +1D641 . +1D642 . +1D643 . +1D644 . +1D645 . +1D646 . +1D647 . +1D648 . +1D649 . +1D64A . +1D64B . +1D64C . +1D64D . +1D64E . +1D64F . +1D650 . +1D651 . +1D652 . +1D653 . +1D654 . +1D655 . +1D656 . +1D657 . +1D658 . +1D659 . +1D65A . +1D65B . +1D65C . +1D65D . +1D65E . +1D65F . +1D660 . +1D661 . +1D662 . +1D663 . +1D664 . +1D665 . +1D666 . +1D667 . +1D668 . +1D669 . +1D66A . +1D66B . +1D66C . +1D66D . +1D66E . +1D66F . +1D670 . +1D671 . +1D672 . +1D673 . +1D674 . +1D675 . +1D676 . +1D677 . +1D678 . +1D679 . +1D67A . +1D67B . +1D67C . +1D67D . +1D67E . +1D67F . +1D680 . +1D681 . +1D682 . +1D683 . +1D684 . +1D685 . +1D686 . +1D687 . +1D688 . +1D689 . +1D68A . +1D68B . +1D68C . +1D68D . +1D68E . +1D68F . +1D690 . +1D691 . +1D692 . +1D693 . +1D694 . +1D695 . +1D696 . +1D697 . +1D698 . +1D699 . +1D69A . +1D69B . +1D69C . +1D69D . +1D69E . +1D69F . +1D6A0 . +1D6A1 . +1D6A2 . +1D6A3 . +1D6A4 . +1D6A5 . +1D6A8 . +1D6A9 . +1D6AA . +1D6AB . +1D6AC . +1D6AD . +1D6AE . +1D6AF . +1D6B0 . +1D6B1 . +1D6B2 . +1D6B3 . +1D6B4 . +1D6B5 . +1D6B6 . +1D6B7 . +1D6B8 . +1D6B9 . +1D6BA . +1D6BB . +1D6BC . +1D6BD . +1D6BE . +1D6BF . +1D6C0 . +1D6C2 . +1D6C3 . +1D6C4 . +1D6C5 . +1D6C6 . +1D6C7 . +1D6C8 . +1D6C9 . +1D6CA . +1D6CB . +1D6CC . +1D6CD . +1D6CE . +1D6CF . +1D6D0 . +1D6D1 . +1D6D2 . +1D6D3 . +1D6D4 . +1D6D5 . +1D6D6 . +1D6D7 . +1D6D8 . +1D6D9 . +1D6DA . +1D6DC . +1D6DD . +1D6DE . +1D6DF . +1D6E0 . +1D6E1 . +1D6E2 . +1D6E3 . +1D6E4 . +1D6E5 . +1D6E6 . +1D6E7 . +1D6E8 . +1D6E9 . +1D6EA . +1D6EB . +1D6EC . +1D6ED . +1D6EE . +1D6EF . +1D6F0 . +1D6F1 . +1D6F2 . +1D6F3 . +1D6F4 . +1D6F5 . +1D6F6 . +1D6F7 . +1D6F8 . +1D6F9 . +1D6FA . +1D6FC . +1D6FD . +1D6FE . +1D6FF . +1D700 . +1D701 . +1D702 . +1D703 . +1D704 . +1D705 . +1D706 . +1D707 . +1D708 . +1D709 . +1D70A . +1D70B . +1D70C . +1D70D . +1D70E . +1D70F . +1D710 . +1D711 . +1D712 . +1D713 . +1D714 . +1D716 . +1D717 . +1D718 . +1D719 . +1D71A . +1D71B . +1D71C . +1D71D . +1D71E . +1D71F . +1D720 . +1D721 . +1D722 . +1D723 . +1D724 . +1D725 . +1D726 . +1D727 . +1D728 . +1D729 . +1D72A . +1D72B . +1D72C . +1D72D . +1D72E . +1D72F . +1D730 . +1D731 . +1D732 . +1D733 . +1D734 . +1D736 . +1D737 . +1D738 . +1D739 . +1D73A . +1D73B . +1D73C . +1D73D . +1D73E . +1D73F . +1D740 . +1D741 . +1D742 . +1D743 . +1D744 . +1D745 . +1D746 . +1D747 . +1D748 . +1D749 . +1D74A . +1D74B . +1D74C . +1D74D . +1D74E . +1D750 . +1D751 . +1D752 . +1D753 . +1D754 . +1D755 . +1D756 . +1D757 . +1D758 . +1D759 . +1D75A . +1D75B . +1D75C . +1D75D . +1D75E . +1D75F . +1D760 . +1D761 . +1D762 . +1D763 . +1D764 . +1D765 . +1D766 . +1D767 . +1D768 . +1D769 . +1D76A . +1D76B . +1D76C . +1D76D . +1D76E . +1D770 . +1D771 . +1D772 . +1D773 . +1D774 . +1D775 . +1D776 . +1D777 . +1D778 . +1D779 . +1D77A . +1D77B . +1D77C . +1D77D . +1D77E . +1D77F . +1D780 . +1D781 . +1D782 . +1D783 . +1D784 . +1D785 . +1D786 . +1D787 . +1D788 . +1D78A . +1D78B . +1D78C . +1D78D . +1D78E . +1D78F . +1D790 . +1D791 . +1D792 . +1D793 . +1D794 . +1D795 . +1D796 . +1D797 . +1D798 . +1D799 . +1D79A . +1D79B . +1D79C . +1D79D . +1D79E . +1D79F . +1D7A0 . +1D7A1 . +1D7A2 . +1D7A3 . +1D7A4 . +1D7A5 . +1D7A6 . +1D7A7 . +1D7A8 . +1D7AA . +1D7AB . +1D7AC . +1D7AD . +1D7AE . +1D7AF . +1D7B0 . +1D7B1 . +1D7B2 . +1D7B3 . +1D7B4 . +1D7B5 . +1D7B6 . +1D7B7 . +1D7B8 . +1D7B9 . +1D7BA . +1D7BB . +1D7BC . +1D7BD . +1D7BE . +1D7BF . +1D7C0 . +1D7C1 . +1D7C2 . +1D7C4 . +1D7C5 . +1D7C6 . +1D7C7 . +1D7C8 . +1D7C9 . +1D7CA . +1D7CB . +1EE00 . +1EE01 . +1EE02 . +1EE03 . +1EE05 . +1EE06 . +1EE07 . +1EE08 . +1EE09 . +1EE0A . +1EE0B . +1EE0C . +1EE0D . +1EE0E . +1EE0F . +1EE10 . +1EE11 . +1EE12 . +1EE13 . +1EE14 . +1EE15 . +1EE16 . +1EE17 . +1EE18 . +1EE19 . +1EE1A . +1EE1B . +1EE1C . +1EE1D . +1EE1E . +1EE1F . +1EE21 . +1EE22 . +1EE24 . +1EE27 . +1EE29 . +1EE2A . +1EE2B . +1EE2C . +1EE2D . +1EE2E . +1EE2F . +1EE30 . +1EE31 . +1EE32 . +1EE34 . +1EE35 . +1EE36 . +1EE37 . +1EE39 . +1EE3B . +1EE42 . +1EE47 . +1EE49 . +1EE4B . +1EE4D . +1EE4E . +1EE4F . +1EE51 . +1EE52 . +1EE54 . +1EE57 . +1EE59 . +1EE5B . +1EE5D . +1EE5F . +1EE61 . +1EE62 . +1EE64 . +1EE67 . +1EE68 . +1EE69 . +1EE6A . +1EE6C . +1EE6D . +1EE6E . +1EE6F . +1EE70 . +1EE71 . +1EE72 . +1EE74 . +1EE75 . +1EE76 . +1EE77 . +1EE79 . +1EE7A . +1EE7B . +1EE7C . +1EE7E . +1EE80 . +1EE81 . +1EE82 . +1EE83 . +1EE84 . +1EE85 . +1EE86 . +1EE87 . +1EE88 . +1EE89 . +1EE8B . +1EE8C . +1EE8D . +1EE8E . +1EE8F . +1EE90 . +1EE91 . +1EE92 . +1EE93 . +1EE94 . +1EE95 . +1EE96 . +1EE97 . +1EE98 . +1EE99 . +1EE9A . +1EE9B . +1EEA1 . +1EEA2 . +1EEA3 . +1EEA5 . +1EEA6 . +1EEA7 . +1EEA8 . +1EEA9 . +1EEAB . +1EEAC . +1EEAD . +1EEAE . +1EEAF . +1EEB0 . +1EEB1 . +1EEB2 . +1EEB3 . +1EEB4 . +1EEB5 . +1EEB6 . +1EEB7 . +1EEB8 . +1EEB9 . +1EEBA . +1EEBB . +2F800 . +2F801 . +2F802 . +2F803 . +2F804 . +2F805 . +2F806 . +2F807 . +2F808 . +2F809 . +2F80A . +2F80B . +2F80C . +2F80D . +2F80E . +2F80F . +2F810 . +2F811 . +2F812 . +2F813 . +2F814 . +2F815 . +2F816 . +2F817 . +2F818 . +2F819 . +2F81A . +2F81B . +2F81C . +2F81D . +2F81E . +2F81F . +2F820 . +2F821 . +2F822 . +2F823 . +2F824 . +2F825 . +2F826 . +2F827 . +2F828 . +2F829 . +2F82A . +2F82B . +2F82C . +2F82D . +2F82E . +2F82F . +2F830 . +2F831 . +2F832 . +2F833 . +2F834 . +2F835 . +2F836 . +2F837 . +2F838 . +2F839 . +2F83A . +2F83B . +2F83C . +2F83D . +2F83E . +2F83F . +2F840 . +2F841 . +2F842 . +2F843 . +2F844 . +2F845 . +2F846 . +2F847 . +2F848 . +2F849 . +2F84A . +2F84B . +2F84C . +2F84D . +2F84E . +2F84F . +2F850 . +2F851 . +2F852 . +2F853 . +2F854 . +2F855 . +2F856 . +2F857 . +2F858 . +2F859 . +2F85A . +2F85B . +2F85C . +2F85D . +2F85E . +2F85F . +2F860 . +2F861 . +2F862 . +2F863 . +2F864 . +2F865 . +2F866 . +2F867 . +2F868 . +2F869 . +2F86A . +2F86B . +2F86C . +2F86D . +2F86E . +2F86F . +2F870 . +2F871 . +2F872 . +2F873 . +2F874 . +2F875 . +2F876 . +2F877 . +2F878 . +2F879 . +2F87A . +2F87B . +2F87C . +2F87D . +2F87E . +2F87F . +2F880 . +2F881 . +2F882 . +2F883 . +2F884 . +2F885 . +2F886 . +2F887 . +2F888 . +2F889 . +2F88A . +2F88B . +2F88C . +2F88D . +2F88E . +2F88F . +2F890 . +2F891 . +2F892 . +2F893 . +2F894 . +2F895 . +2F896 . +2F897 . +2F898 . +2F899 . +2F89A . +2F89B . +2F89C . +2F89D . +2F89E . +2F89F . +2F8A0 . +2F8A1 . +2F8A2 . +2F8A3 . +2F8A4 . +2F8A5 . +2F8A6 . +2F8A7 . +2F8A8 . +2F8A9 . +2F8AA . +2F8AB . +2F8AC . +2F8AD . +2F8AE . +2F8AF . +2F8B0 . +2F8B1 . +2F8B2 . +2F8B3 . +2F8B4 . +2F8B5 . +2F8B6 . +2F8B7 . +2F8B8 . +2F8B9 . +2F8BA . +2F8BB . +2F8BC . +2F8BD . +2F8BE . +2F8BF . +2F8C0 . +2F8C1 . +2F8C2 . +2F8C3 . +2F8C4 . +2F8C5 . +2F8C6 . +2F8C7 . +2F8C8 . +2F8C9 . +2F8CA . +2F8CB . +2F8CC . +2F8CD . +2F8CE . +2F8CF . +2F8D0 . +2F8D1 . +2F8D2 . +2F8D3 . +2F8D4 . +2F8D5 . +2F8D6 . +2F8D7 . +2F8D8 . +2F8D9 . +2F8DA . +2F8DB . +2F8DC . +2F8DD . +2F8DE . +2F8DF . +2F8E0 . +2F8E1 . +2F8E2 . +2F8E3 . +2F8E4 . +2F8E5 . +2F8E6 . +2F8E7 . +2F8E8 . +2F8E9 . +2F8EA . +2F8EB . +2F8EC . +2F8ED . +2F8EE . +2F8EF . +2F8F0 . +2F8F1 . +2F8F2 . +2F8F3 . +2F8F4 . +2F8F5 . +2F8F6 . +2F8F7 . +2F8F8 . +2F8F9 . +2F8FA . +2F8FB . +2F8FC . +2F8FD . +2F8FE . +2F8FF . +2F900 . +2F901 . +2F902 . +2F903 . +2F904 . +2F905 . +2F906 . +2F907 . +2F908 . +2F909 . +2F90A . +2F90B . +2F90C . +2F90D . +2F90E . +2F90F . +2F910 . +2F911 . +2F912 . +2F913 . +2F914 . +2F915 . +2F916 . +2F917 . +2F918 . +2F919 . +2F91A . +2F91B . +2F91C . +2F91D . +2F91E . +2F91F . +2F920 . +2F921 . +2F922 . +2F923 . +2F924 . +2F925 . +2F926 . +2F927 . +2F928 . +2F929 . +2F92A . +2F92B . +2F92C . +2F92D . +2F92E . +2F92F . +2F930 . +2F931 . +2F932 . +2F933 . +2F934 . +2F935 . +2F936 . +2F937 . +2F938 . +2F939 . +2F93A . +2F93B . +2F93C . +2F93D . +2F93E . +2F93F . +2F940 . +2F941 . +2F942 . +2F943 . +2F944 . +2F945 . +2F946 . +2F947 . +2F948 . +2F949 . +2F94A . +2F94B . +2F94C . +2F94D . +2F94E . +2F94F . +2F950 . +2F951 . +2F952 . +2F953 . +2F954 . +2F955 . +2F956 . +2F957 . +2F958 . +2F959 . +2F95A . +2F95B . +2F95C . +2F95D . +2F95E . +2F95F . +2F960 . +2F961 . +2F962 . +2F963 . +2F964 . +2F965 . +2F966 . +2F967 . +2F968 . +2F969 . +2F96A . +2F96B . +2F96C . +2F96D . +2F96E . +2F96F . +2F970 . +2F971 . +2F972 . +2F973 . +2F974 . +2F975 . +2F976 . +2F977 . +2F978 . +2F979 . +2F97A . +2F97B . +2F97C . +2F97D . +2F97E . +2F97F . +2F980 . +2F981 . +2F982 . +2F983 . +2F984 . +2F985 . +2F986 . +2F987 . +2F988 . +2F989 . +2F98A . +2F98B . +2F98C . +2F98D . +2F98E . +2F98F . +2F990 . +2F991 . +2F992 . +2F993 . +2F994 . +2F995 . +2F996 . +2F997 . +2F998 . +2F999 . +2F99A . +2F99B . +2F99C . +2F99D . +2F99E . +2F99F . +2F9A0 . +2F9A1 . +2F9A2 . +2F9A3 . +2F9A4 . +2F9A5 . +2F9A6 . +2F9A7 . +2F9A8 . +2F9A9 . +2F9AA . +2F9AB . +2F9AC . +2F9AD . +2F9AE . +2F9AF . +2F9B0 . +2F9B1 . +2F9B2 . +2F9B3 . +2F9B4 . +2F9B5 . +2F9B6 . +2F9B7 . +2F9B8 . +2F9B9 . +2F9BA . +2F9BB . +2F9BC . +2F9BD . +2F9BE . +2F9BF . +2F9C0 . +2F9C1 . +2F9C2 . +2F9C3 . +2F9C4 . +2F9C5 . +2F9C6 . +2F9C7 . +2F9C8 . +2F9C9 . +2F9CA . +2F9CB . +2F9CC . +2F9CD . +2F9CE . +2F9CF . +2F9D0 . +2F9D1 . +2F9D2 . +2F9D3 . +2F9D4 . +2F9D5 . +2F9D6 . +2F9D7 . +2F9D8 . +2F9D9 . +2F9DA . +2F9DB . +2F9DC . +2F9DD . +2F9DE . +2F9DF . +2F9E0 . +2F9E1 . +2F9E2 . +2F9E3 . +2F9E4 . +2F9E5 . +2F9E6 . +2F9E7 . +2F9E8 . +2F9E9 . +2F9EA . +2F9EB . +2F9EC . +2F9ED . +2F9EE . +2F9EF . +2F9F0 . +2F9F1 . +2F9F2 . +2F9F3 . +2F9F4 . +2F9F5 . +2F9F6 . +2F9F7 . +2F9F8 . +2F9F9 . +2F9FA . +2F9FB . +2F9FC . +2F9FD . +2F9FE . +2F9FF . +2FA00 . +2FA01 . +2FA02 . +2FA03 . +2FA04 . +2FA05 . +2FA06 . +2FA07 . +2FA08 . +2FA09 . +2FA0A . +2FA0B . +2FA0C . +2FA0D . +2FA0E . +2FA0F . +2FA10 . +2FA11 . +2FA12 . +2FA13 . +2FA14 . +2FA15 . +2FA16 . +2FA17 . +2FA18 . +2FA19 . +2FA1A . +2FA1B . +2FA1C . +2FA1D . +2170 2160 +2171 2161 +2172 2162 +2173 2163 +2174 2164 +2175 2165 +2176 2166 +2177 2167 +2178 2168 +2179 2169 +217A 216A +217B 216B +217C 216C +217D 216D +217E 216E +217F 216F +24D0 24B6 +24D1 24B7 +24D2 24B8 +24D3 24B9 +24D4 24BA +24D5 24BB +24D6 24BC +24D7 24BD +24D8 24BE +24D9 24BF +24DA 24C0 +24DB 24C1 +24DC 24C2 +24DD 24C3 +24DE 24C4 +24DF 24C5 +24E0 24C6 +24E1 24C7 +24E2 24C8 +24E3 24C9 +24E4 24CA +24E5 24CB +24E6 24CC +24E7 24CD +24E8 24CE +24E9 24CF +0300 . +0301 . +0302 . +0303 . +0304 . +0305 . +0306 . +0307 . +0308 . +0309 . +030A . +030B . +030C . +030D . +030E . +030F . +0310 . +0311 . +0312 . +0313 . +0314 . +0315 . +0316 . +0317 . +0318 . +0319 . +031A . +031B . +031C . +031D . +031E . +031F . +0320 . +0321 . +0322 . +0323 . +0324 . +0325 . +0326 . +0327 . +0328 . +0329 . +032A . +032B . +032C . +032D . +032E . +032F . +0330 . +0331 . +0332 . +0333 . +0334 . +0335 . +0336 . +0337 . +0338 . +0339 . +033A . +033B . +033C . +033D . +033E . +033F . +0340 . +0341 . +0342 . +0343 . +0344 . +0345 . +0346 . +0347 . +0348 . +0349 . +034A . +034B . +034C . +034D . +034E . +034F . +0350 . +0351 . +0352 . +0353 . +0354 . +0355 . +0356 . +0357 . +0358 . +0359 . +035A . +035B . +035C . +035D . +035E . +035F . +0360 . +0361 . +0362 . +0363 . +0364 . +0365 . +0366 . +0367 . +0368 . +0369 . +036A . +036B . +036C . +036D . +036E . +036F . +0483 . +0484 . +0485 . +0486 . +0487 . +0488 . +0489 . +0591 . +0592 . +0593 . +0594 . +0595 . +0596 . +0597 . +0598 . +0599 . +059A . +059B . +059C . +059D . +059E . +059F . +05A0 . +05A1 . +05A2 . +05A3 . +05A4 . +05A5 . +05A6 . +05A7 . +05A8 . +05A9 . +05AA . +05AB . +05AC . +05AD . +05AE . +05AF . +05B0 . +05B1 . +05B2 . +05B3 . +05B4 . +05B5 . +05B6 . +05B7 . +05B8 . +05B9 . +05BA . +05BB . +05BC . +05BD . +05BF . +05C1 . +05C2 . +05C4 . +05C5 . +05C7 . +0610 . +0611 . +0612 . +0613 . +0614 . +0615 . +0616 . +0617 . +0618 . +0619 . +061A . +064B . +064C . +064D . +064E . +064F . +0650 . +0651 . +0652 . +0653 . +0654 . +0655 . +0656 . +0657 . +0658 . +0659 . +065A . +065B . +065C . +065D . +065E . +065F . +0670 . +06D6 . +06D7 . +06D8 . +06D9 . +06DA . +06DB . +06DC . +06DF . +06E0 . +06E1 . +06E2 . +06E3 . +06E4 . +06E7 . +06E8 . +06EA . +06EB . +06EC . +06ED . +0711 . +0730 . +0731 . +0732 . +0733 . +0734 . +0735 . +0736 . +0737 . +0738 . +0739 . +073A . +073B . +073C . +073D . +073E . +073F . +0740 . +0741 . +0742 . +0743 . +0744 . +0745 . +0746 . +0747 . +0748 . +0749 . +074A . +07A6 . +07A7 . +07A8 . +07A9 . +07AA . +07AB . +07AC . +07AD . +07AE . +07AF . +07B0 . +07EB . +07EC . +07ED . +07EE . +07EF . +07F0 . +07F1 . +07F2 . +07F3 . +0816 . +0817 . +0818 . +0819 . +081B . +081C . +081D . +081E . +081F . +0820 . +0821 . +0822 . +0823 . +0825 . +0826 . +0827 . +0829 . +082A . +082B . +082C . +082D . +0859 . +085A . +085B . +08E4 . +08E5 . +08E6 . +08E7 . +08E8 . +08E9 . +08EA . +08EB . +08EC . +08ED . +08EE . +08EF . +08F0 . +08F1 . +08F2 . +08F3 . +08F4 . +08F5 . +08F6 . +08F7 . +08F8 . +08F9 . +08FA . +08FB . +08FC . +08FD . +08FE . +0900 . +0901 . +0902 . +0903 . +093A . +093B . +093C . +093E . +093F . +0940 . +0941 . +0942 . +0943 . +0944 . +0945 . +0946 . +0947 . +0948 . +0949 . +094A . +094B . +094C . +094D . +094E . +094F . +0951 . +0952 . +0953 . +0954 . +0955 . +0956 . +0957 . +0962 . +0963 . +0981 . +0982 . +0983 . +09BC . +09BE . +09BF . +09C0 . +09C1 . +09C2 . +09C3 . +09C4 . +09C7 . +09C8 . +09CB . +09CC . +09CD . +09D7 . +09E2 . +09E3 . +0A01 . +0A02 . +0A03 . +0A3C . +0A3E . +0A3F . +0A40 . +0A41 . +0A42 . +0A47 . +0A48 . +0A4B . +0A4C . +0A4D . +0A51 . +0A70 . +0A71 . +0A75 . +0A81 . +0A82 . +0A83 . +0ABC . +0ABE . +0ABF . +0AC0 . +0AC1 . +0AC2 . +0AC3 . +0AC4 . +0AC5 . +0AC7 . +0AC8 . +0AC9 . +0ACB . +0ACC . +0ACD . +0AE2 . +0AE3 . +0B01 . +0B02 . +0B03 . +0B3C . +0B3E . +0B3F . +0B40 . +0B41 . +0B42 . +0B43 . +0B44 . +0B47 . +0B48 . +0B4B . +0B4C . +0B4D . +0B56 . +0B57 . +0B62 . +0B63 . +0B82 . +0BBE . +0BBF . +0BC0 . +0BC1 . +0BC2 . +0BC6 . +0BC7 . +0BC8 . +0BCA . +0BCB . +0BCC . +0BCD . +0BD7 . +0C01 . +0C02 . +0C03 . +0C3E . +0C3F . +0C40 . +0C41 . +0C42 . +0C43 . +0C44 . +0C46 . +0C47 . +0C48 . +0C4A . +0C4B . +0C4C . +0C4D . +0C55 . +0C56 . +0C62 . +0C63 . +0C82 . +0C83 . +0CBC . +0CBE . +0CBF . +0CC0 . +0CC1 . +0CC2 . +0CC3 . +0CC4 . +0CC6 . +0CC7 . +0CC8 . +0CCA . +0CCB . +0CCC . +0CCD . +0CD5 . +0CD6 . +0CE2 . +0CE3 . +0D02 . +0D03 . +0D3E . +0D3F . +0D40 . +0D41 . +0D42 . +0D43 . +0D44 . +0D46 . +0D47 . +0D48 . +0D4A . +0D4B . +0D4C . +0D4D . +0D57 . +0D62 . +0D63 . +0D82 . +0D83 . +0DCA . +0DCF . +0DD0 . +0DD1 . +0DD2 . +0DD3 . +0DD4 . +0DD6 . +0DD8 . +0DD9 . +0DDA . +0DDB . +0DDC . +0DDD . +0DDE . +0DDF . +0DF2 . +0DF3 . +0E31 . +0E34 . +0E35 . +0E36 . +0E37 . +0E38 . +0E39 . +0E3A . +0E47 . +0E48 . +0E49 . +0E4A . +0E4B . +0E4C . +0E4D . +0E4E . +0EB1 . +0EB4 . +0EB5 . +0EB6 . +0EB7 . +0EB8 . +0EB9 . +0EBB . +0EBC . +0EC8 . +0EC9 . +0ECA . +0ECB . +0ECC . +0ECD . +0F18 . +0F19 . +0F35 . +0F37 . +0F39 . +0F3E . +0F3F . +0F71 . +0F72 . +0F73 . +0F74 . +0F75 . +0F76 . +0F77 . +0F78 . +0F79 . +0F7A . +0F7B . +0F7C . +0F7D . +0F7E . +0F7F . +0F80 . +0F81 . +0F82 . +0F83 . +0F84 . +0F86 . +0F87 . +0F8D . +0F8E . +0F8F . +0F90 . +0F91 . +0F92 . +0F93 . +0F94 . +0F95 . +0F96 . +0F97 . +0F99 . +0F9A . +0F9B . +0F9C . +0F9D . +0F9E . +0F9F . +0FA0 . +0FA1 . +0FA2 . +0FA3 . +0FA4 . +0FA5 . +0FA6 . +0FA7 . +0FA8 . +0FA9 . +0FAA . +0FAB . +0FAC . +0FAD . +0FAE . +0FAF . +0FB0 . +0FB1 . +0FB2 . +0FB3 . +0FB4 . +0FB5 . +0FB6 . +0FB7 . +0FB8 . +0FB9 . +0FBA . +0FBB . +0FBC . +0FC6 . +102B . +102C . +102D . +102E . +102F . +1030 . +1031 . +1032 . +1033 . +1034 . +1035 . +1036 . +1037 . +1038 . +1039 . +103A . +103B . +103C . +103D . +103E . +1056 . +1057 . +1058 . +1059 . +105E . +105F . +1060 . +1062 . +1063 . +1064 . +1067 . +1068 . +1069 . +106A . +106B . +106C . +106D . +1071 . +1072 . +1073 . +1074 . +1082 . +1083 . +1084 . +1085 . +1086 . +1087 . +1088 . +1089 . +108A . +108B . +108C . +108D . +108F . +109A . +109B . +109C . +109D . +135D . +135E . +135F . +1712 . +1713 . +1714 . +1732 . +1733 . +1734 . +1752 . +1753 . +1772 . +1773 . +17B4 . +17B5 . +17B6 . +17B7 . +17B8 . +17B9 . +17BA . +17BB . +17BC . +17BD . +17BE . +17BF . +17C0 . +17C1 . +17C2 . +17C3 . +17C4 . +17C5 . +17C6 . +17C7 . +17C8 . +17C9 . +17CA . +17CB . +17CC . +17CD . +17CE . +17CF . +17D0 . +17D1 . +17D2 . +17D3 . +17DD . +180B . +180C . +180D . +18A9 . +1920 . +1921 . +1922 . +1923 . +1924 . +1925 . +1926 . +1927 . +1928 . +1929 . +192A . +192B . +1930 . +1931 . +1932 . +1933 . +1934 . +1935 . +1936 . +1937 . +1938 . +1939 . +193A . +193B . +19B0 . +19B1 . +19B2 . +19B3 . +19B4 . +19B5 . +19B6 . +19B7 . +19B8 . +19B9 . +19BA . +19BB . +19BC . +19BD . +19BE . +19BF . +19C0 . +19C8 . +19C9 . +1A17 . +1A18 . +1A19 . +1A1A . +1A1B . +1A55 . +1A56 . +1A57 . +1A58 . +1A59 . +1A5A . +1A5B . +1A5C . +1A5D . +1A5E . +1A60 . +1A61 . +1A62 . +1A63 . +1A64 . +1A65 . +1A66 . +1A67 . +1A68 . +1A69 . +1A6A . +1A6B . +1A6C . +1A6D . +1A6E . +1A6F . +1A70 . +1A71 . +1A72 . +1A73 . +1A74 . +1A75 . +1A76 . +1A77 . +1A78 . +1A79 . +1A7A . +1A7B . +1A7C . +1A7F . +1B00 . +1B01 . +1B02 . +1B03 . +1B04 . +1B34 . +1B35 . +1B36 . +1B37 . +1B38 . +1B39 . +1B3A . +1B3B . +1B3C . +1B3D . +1B3E . +1B3F . +1B40 . +1B41 . +1B42 . +1B43 . +1B44 . +1B6B . +1B6C . +1B6D . +1B6E . +1B6F . +1B70 . +1B71 . +1B72 . +1B73 . +1B80 . +1B81 . +1B82 . +1BA1 . +1BA2 . +1BA3 . +1BA4 . +1BA5 . +1BA6 . +1BA7 . +1BA8 . +1BA9 . +1BAA . +1BAB . +1BAC . +1BAD . +1BE6 . +1BE7 . +1BE8 . +1BE9 . +1BEA . +1BEB . +1BEC . +1BED . +1BEE . +1BEF . +1BF0 . +1BF1 . +1BF2 . +1BF3 . +1C24 . +1C25 . +1C26 . +1C27 . +1C28 . +1C29 . +1C2A . +1C2B . +1C2C . +1C2D . +1C2E . +1C2F . +1C30 . +1C31 . +1C32 . +1C33 . +1C34 . +1C35 . +1C36 . +1C37 . +1CD0 . +1CD1 . +1CD2 . +1CD4 . +1CD5 . +1CD6 . +1CD7 . +1CD8 . +1CD9 . +1CDA . +1CDB . +1CDC . +1CDD . +1CDE . +1CDF . +1CE0 . +1CE1 . +1CE2 . +1CE3 . +1CE4 . +1CE5 . +1CE6 . +1CE7 . +1CE8 . +1CED . +1CF2 . +1CF3 . +1CF4 . +1DC0 . +1DC1 . +1DC2 . +1DC3 . +1DC4 . +1DC5 . +1DC6 . +1DC7 . +1DC8 . +1DC9 . +1DCA . +1DCB . +1DCC . +1DCD . +1DCE . +1DCF . +1DD0 . +1DD1 . +1DD2 . +1DD3 . +1DD4 . +1DD5 . +1DD6 . +1DD7 . +1DD8 . +1DD9 . +1DDA . +1DDB . +1DDC . +1DDD . +1DDE . +1DDF . +1DE0 . +1DE1 . +1DE2 . +1DE3 . +1DE4 . +1DE5 . +1DE6 . +1DFC . +1DFD . +1DFE . +1DFF . +20D0 . +20D1 . +20D2 . +20D3 . +20D4 . +20D5 . +20D6 . +20D7 . +20D8 . +20D9 . +20DA . +20DB . +20DC . +20DD . +20DE . +20DF . +20E0 . +20E1 . +20E2 . +20E3 . +20E4 . +20E5 . +20E6 . +20E7 . +20E8 . +20E9 . +20EA . +20EB . +20EC . +20ED . +20EE . +20EF . +20F0 . +2CEF . +2CF0 . +2CF1 . +2D7F . +2DE0 . +2DE1 . +2DE2 . +2DE3 . +2DE4 . +2DE5 . +2DE6 . +2DE7 . +2DE8 . +2DE9 . +2DEA . +2DEB . +2DEC . +2DED . +2DEE . +2DEF . +2DF0 . +2DF1 . +2DF2 . +2DF3 . +2DF4 . +2DF5 . +2DF6 . +2DF7 . +2DF8 . +2DF9 . +2DFA . +2DFB . +2DFC . +2DFD . +2DFE . +2DFF . +302A . +302B . +302C . +302D . +302E . +302F . +3099 . +309A . +A66F . +A670 . +A671 . +A672 . +A674 . +A675 . +A676 . +A677 . +A678 . +A679 . +A67A . +A67B . +A67C . +A67D . +A69F . +A6F0 . +A6F1 . +A802 . +A806 . +A80B . +A823 . +A824 . +A825 . +A826 . +A827 . +A880 . +A881 . +A8B4 . +A8B5 . +A8B6 . +A8B7 . +A8B8 . +A8B9 . +A8BA . +A8BB . +A8BC . +A8BD . +A8BE . +A8BF . +A8C0 . +A8C1 . +A8C2 . +A8C3 . +A8C4 . +A8E0 . +A8E1 . +A8E2 . +A8E3 . +A8E4 . +A8E5 . +A8E6 . +A8E7 . +A8E8 . +A8E9 . +A8EA . +A8EB . +A8EC . +A8ED . +A8EE . +A8EF . +A8F0 . +A8F1 . +A926 . +A927 . +A928 . +A929 . +A92A . +A92B . +A92C . +A92D . +A947 . +A948 . +A949 . +A94A . +A94B . +A94C . +A94D . +A94E . +A94F . +A950 . +A951 . +A952 . +A953 . +A980 . +A981 . +A982 . +A983 . +A9B3 . +A9B4 . +A9B5 . +A9B6 . +A9B7 . +A9B8 . +A9B9 . +A9BA . +A9BB . +A9BC . +A9BD . +A9BE . +A9BF . +A9C0 . +AA29 . +AA2A . +AA2B . +AA2C . +AA2D . +AA2E . +AA2F . +AA30 . +AA31 . +AA32 . +AA33 . +AA34 . +AA35 . +AA36 . +AA43 . +AA4C . +AA4D . +AA7B . +AAB0 . +AAB2 . +AAB3 . +AAB4 . +AAB7 . +AAB8 . +AABE . +AABF . +AAC1 . +AAEB . +AAEC . +AAED . +AAEE . +AAEF . +AAF5 . +AAF6 . +ABE3 . +ABE4 . +ABE5 . +ABE6 . +ABE7 . +ABE8 . +ABE9 . +ABEA . +ABEC . +ABED . +FB1E . +FE00 . +FE01 . +FE02 . +FE03 . +FE04 . +FE05 . +FE06 . +FE07 . +FE08 . +FE09 . +FE0A . +FE0B . +FE0C . +FE0D . +FE0E . +FE0F . +FE20 . +FE21 . +FE22 . +FE23 . +FE24 . +FE25 . +FE26 . +101FD . +10A01 . +10A02 . +10A03 . +10A05 . +10A06 . +10A0C . +10A0D . +10A0E . +10A0F . +10A38 . +10A39 . +10A3A . +10A3F . +11000 . +11001 . +11002 . +11038 . +11039 . +1103A . +1103B . +1103C . +1103D . +1103E . +1103F . +11040 . +11041 . +11042 . +11043 . +11044 . +11045 . +11046 . +11080 . +11081 . +11082 . +110B0 . +110B1 . +110B2 . +110B3 . +110B4 . +110B5 . +110B6 . +110B7 . +110B8 . +110B9 . +110BA . +11100 . +11101 . +11102 . +11127 . +11128 . +11129 . +1112A . +1112B . +1112C . +1112D . +1112E . +1112F . +11130 . +11131 . +11132 . +11133 . +11134 . +11180 . +11181 . +11182 . +111B3 . +111B4 . +111B5 . +111B6 . +111B7 . +111B8 . +111B9 . +111BA . +111BB . +111BC . +111BD . +111BE . +111BF . +111C0 . +116AB . +116AC . +116AD . +116AE . +116AF . +116B0 . +116B1 . +116B2 . +116B3 . +116B4 . +116B5 . +116B6 . +116B7 . +16F51 . +16F52 . +16F53 . +16F54 . +16F55 . +16F56 . +16F57 . +16F58 . +16F59 . +16F5A . +16F5B . +16F5C . +16F5D . +16F5E . +16F5F . +16F60 . +16F61 . +16F62 . +16F63 . +16F64 . +16F65 . +16F66 . +16F67 . +16F68 . +16F69 . +16F6A . +16F6B . +16F6C . +16F6D . +16F6E . +16F6F . +16F70 . +16F71 . +16F72 . +16F73 . +16F74 . +16F75 . +16F76 . +16F77 . +16F78 . +16F79 . +16F7A . +16F7B . +16F7C . +16F7D . +16F7E . +16F8F . +16F90 . +16F91 . +16F92 . +1D165 . +1D166 . +1D167 . +1D168 . +1D169 . +1D16D . +1D16E . +1D16F . +1D170 . +1D171 . +1D172 . +1D17B . +1D17C . +1D17D . +1D17E . +1D17F . +1D180 . +1D181 . +1D182 . +1D185 . +1D186 . +1D187 . +1D188 . +1D189 . +1D18A . +1D18B . +1D1AA . +1D1AB . +1D1AC . +1D1AD . +1D242 . +1D243 . +1D244 . +E0100 . +E0101 . +E0102 . +E0103 . +E0104 . +E0105 . +E0106 . +E0107 . +E0108 . +E0109 . +E010A . +E010B . +E010C . +E010D . +E010E . +E010F . +E0110 . +E0111 . +E0112 . +E0113 . +E0114 . +E0115 . +E0116 . +E0117 . +E0118 . +E0119 . +E011A . +E011B . +E011C . +E011D . +E011E . +E011F . +E0120 . +E0121 . +E0122 . +E0123 . +E0124 . +E0125 . +E0126 . +E0127 . +E0128 . +E0129 . +E012A . +E012B . +E012C . +E012D . +E012E . +E012F . +E0130 . +E0131 . +E0132 . +E0133 . +E0134 . +E0135 . +E0136 . +E0137 . +E0138 . +E0139 . +E013A . +E013B . +E013C . +E013D . +E013E . +E013F . +E0140 . +E0141 . +E0142 . +E0143 . +E0144 . +E0145 . +E0146 . +E0147 . +E0148 . +E0149 . +E014A . +E014B . +E014C . +E014D . +E014E . +E014F . +E0150 . +E0151 . +E0152 . +E0153 . +E0154 . +E0155 . +E0156 . +E0157 . +E0158 . +E0159 . +E015A . +E015B . +E015C . +E015D . +E015E . +E015F . +E0160 . +E0161 . +E0162 . +E0163 . +E0164 . +E0165 . +E0166 . +E0167 . +E0168 . +E0169 . +E016A . +E016B . +E016C . +E016D . +E016E . +E016F . +E0170 . +E0171 . +E0172 . +E0173 . +E0174 . +E0175 . +E0176 . +E0177 . +E0178 . +E0179 . +E017A . +E017B . +E017C . +E017D . +E017E . +E017F . +E0180 . +E0181 . +E0182 . +E0183 . +E0184 . +E0185 . +E0186 . +E0187 . +E0188 . +E0189 . +E018A . +E018B . +E018C . +E018D . +E018E . +E018F . +E0190 . +E0191 . +E0192 . +E0193 . +E0194 . +E0195 . +E0196 . +E0197 . +E0198 . +E0199 . +E019A . +E019B . +E019C . +E019D . +E019E . +E019F . +E01A0 . +E01A1 . +E01A2 . +E01A3 . +E01A4 . +E01A5 . +E01A6 . +E01A7 . +E01A8 . +E01A9 . +E01AA . +E01AB . +E01AC . +E01AD . +E01AE . +E01AF . +E01B0 . +E01B1 . +E01B2 . +E01B3 . +E01B4 . +E01B5 . +E01B6 . +E01B7 . +E01B8 . +E01B9 . +E01BA . +E01BB . +E01BC . +E01BD . +E01BE . +E01BF . +E01C0 . +E01C1 . +E01C2 . +E01C3 . +E01C4 . +E01C5 . +E01C6 . +E01C7 . +E01C8 . +E01C9 . +E01CA . +E01CB . +E01CC . +E01CD . +E01CE . +E01CF . +E01D0 . +E01D1 . +E01D2 . +E01D3 . +E01D4 . +E01D5 . +E01D6 . +E01D7 . +E01D8 . +E01D9 . +E01DA . +E01DB . +E01DC . +E01DD . +E01DE . +E01DF . +E01E0 . +E01E1 . +E01E2 . +E01E3 . +E01E4 . +E01E5 . +E01E6 . +E01E7 . +E01E8 . +E01E9 . +E01EA . +E01EB . +E01EC . +E01ED . +E01EE . +E01EF . +{} {} \_relax +\_def\_tmp #1 #2 {\_lccode"#2="#1 \_uccode"#2="#2 } +\_tmp 0069 0130 +\_tmp 03B8 03F4 +\_tmp 00DF 1E9E +\_tmp 03C9 2126 +\_tmp 006B 212A +\_tmp 00E5 212B +\_def\_tmp #1 #2 {\_lccode"#1="#1 \_uccode"#1="#2 } +\_tmp 0131 0049 +\_tmp 017F 0053 +\_tmp 03BC 039C +\_tmp 03C2 03A3 +\_tmp 03D0 0392 +\_tmp 03D1 0398 +\_tmp 03D5 03A6 +\_tmp 03D6 03A0 +\_tmp 03F0 039A +\_tmp 03F1 03A1 +\_tmp 03F5 0395 +\_tmp 1E9B 1E60 +\_tmp 1FBE 0399 +% end of file -- cgit v1.2.3