summaryrefslogtreecommitdiff
path: root/fonts/xcharter/tex/XCharter.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-02-27 03:01:13 +0000
committerNorbert Preining <norbert@preining.info>2022-02-27 03:01:13 +0000
commita911d39178540078c8ff5bc880418478d7433c40 (patch)
treef23b6a0f6bf9f548e7e43cf2405e864eba99b21e /fonts/xcharter/tex/XCharter.sty
parent740a11f29a3551babe3d7edbb57ac3baa2280a3f (diff)
CTAN sync 202202270301
Diffstat (limited to 'fonts/xcharter/tex/XCharter.sty')
-rw-r--r--fonts/xcharter/tex/XCharter.sty814
1 files changed, 633 insertions, 181 deletions
diff --git a/fonts/xcharter/tex/XCharter.sty b/fonts/xcharter/tex/XCharter.sty
index 3165479cc4..e4106b5b8a 100644
--- a/fonts/xcharter/tex/XCharter.sty
+++ b/fonts/xcharter/tex/XCharter.sty
@@ -1,24 +1,228 @@
%% XCharter is an extension of the Bitstream Charter fonts, adding osf,
-% small caps and superior figures. Generated 2017/06/25 by Michael Sharpe.
+% small caps and superior figures. Generated 2022/02/20 by Michael Sharpe.
%%
\NeedsTeXFormat{LaTeX2e}
-\def\fileversion{1.225}
-\def\filedate{2022/01/31}
+\def\fileversion{1.22}
+\def\filedate{2022/02/25}
\ProvidesPackage{XCharter}[\filedate\space v\fileversion]
\message{`XCharter' v\fileversion, \filedate\space Text macros for XCharter, an extension of Charter (msharpe)}
-\RequirePackage[T2A,LY1,T1]{fontenc}
+\RequirePackage[T1]{fontenc}
\RequirePackage{textcomp}
-\RequirePackage{scalefnt} % for \textruble and \textcircled
\DeclareEncodingSubset{TS1}{XCharter-*}{0}
-\IfFileExists{mweights.sty}{\RequirePackage{mweights}}{}
-\RequirePackage{etoolbox} %etoolbox loads etex.sty
-\RequirePackage{xstring,ifthen} % for \textfrac
-\IfFileExists{fontaxes.sty}{
- \RequirePackage{fontaxes}
+\RequirePackage{iftex,xkeyval,etoolbox,textcomp}
+\RequirePackage{xstring,ifthen,scalefnt} % for \textfrac
+\RequirePackage{mweights,xkeyval}
+
+%KOMA check
+\newif\ifxch@KOMA
+\@ifundefined{KOMAClassName}{}{\xch@KOMAtrue}
+\@ifundefined{ver@scrextend.sty}{}{\xch@KOMAtrue}
+
+% Engine check
+\newif\ifxch@otftext
+\iftutex\xch@otftexttrue\fi
+\newif\ifxch@nofontspec
+
+% newtx check
+\newif\ifntx@newtx
+\@ifundefined{ntx@otftexttrue}{% not run from newtx.sty
+ %\newif\ifntx@otftext%
+ %\newif\ifntx@otfmath % default is type1 math
+ %iftex's \iftutex returns true for LuaTeX and XeTeX, not [pdf]latex
+ %\iftutex\ntx@otftexttrue\fi % default is otf text for unicode latex
+ %\newif\ifntx@nofontspec % default is to load fontspec iftutex
+ % might have been defined in newtx.sty
+ \def\ntx@id{12} % make it appear that newtxtext was chosen in newtx
+}{% run from newtx.sty
+ \ntx@newtxtrue%
+}
+
+%%%%%%%%%% Start Options
+\def\XCharter@altone{1}% default is to use 1, not I
+\def\XCharter@figurestyle{LF}
+\def\XCharter@figurealign{T}
+\newif\ifxch@lining\xch@liningtrue
+\newif\ifxch@tabular\xch@tabulartrue % default is tabular lining figures
+\DeclareOptionX{type1text}[true]{% use type1 packages for text
+\@nameuse{if#1}\xch@otftextfalse\fi
+}
+\DeclareOptionX{type1}[true]{% use type1 packages for text
+\@nameuse{if#1}\xch@otftextfalse\fi
+}
+\DeclareOptionX{nofontspec}[true]{% type1 + don't load fontspec
+\@nameuse{if#1}\xch@nofontspectrue\fi
+}
+\def\xch@defaultfeatures{}
+\DeclareOptionX{defaultfeatures}{\def\xch@defaultfeatures{#1}}
+
+%Figure style options
+\def\xch@dfltfigurestyle{lf}
+\def\xch@dfltfigurealign{t}
+
+\DeclareOptionX{lining}[true]{%
+\@nameuse{xch@lining#1}
+}
+\DeclareOptionX{lf}[true]{%
+\@nameuse{xch@lining#1}
+}
+\DeclareOptionX{oldstyle}[true]{%
+\@nameuse{if#1}%
+ \xch@liningfalse
+\else
+ \xch@liningtrue
+\fi
+}
+\DeclareOptionX{osf}[true]{%
+\@nameuse{if#1}%
+ \xch@liningfalse
+ \else
+ \xch@liningtrue
+\fi
+}
+
+\DeclareOptionX{oldstyleI}[true]{%
+\@nameuse{if#1}%
+ \xch@liningfalse
+ \def\XCharter@altone{}
+\else
+ \xch@liningtrue
+\fi
+}
+\DeclareOptionX{osfI}[true]{%
+\@nameuse{if#1}%
+ \xch@liningfalse
+ \def\XCharter@altone{}
+\else
+ \xch@liningtrue
+\fi
+}
+
+\DeclareOptionX{tabular}[true]{%
+\@nameuse{xch@tabular#1}
+}
+\DeclareOptionX{t}[true]{%
+\@nameuse{xch@tabular#1}
+}
+\DeclareOptionX{proportional}[true]{%
+\@nameuse{if#1}%
+ \xch@tabularfalse
+\else
+ \xch@tabulartrue
+\fi
+}
+\DeclareOptionX{p}[true]{%
+\@nameuse{if#1}%
+ \xch@tabularfalse
+\else
+ \xch@tabulartrue
+\fi
+}
+
+%Scale
+\providecommand*{\XCharter@scale}{1}% Might have been defined in newtx
+\DeclareOptionX{scale}{\renewcommand*{\XCharter@scale}{#1}}
+\DeclareOptionX{scaled}{\renewcommand*{\XCharter@scale}{#1}}
+
+%\newif\ifxch@defaultsups
+\newif\ifxch@scosf
+%\newif\ifxch@largesc % we don't use this exc. in fd, but may in future
+%\newif\ifxch@helv \xch@helvtrue % default is to load helvetica as sans serif font
+%\newif\ifxch@sl
+
+
+\let\orig@footnote=\thefootnote
+\let\orig@makefnmark=\@makefnmark
+\def\bfseries@rm{b}
+\def\mdseries@rm{m}
+
+\def\xch@thmtab{} % default is to not change to tabular
+\def\xch@thmlin{X} % default is to not change to lining
+\def\XCharter@foresolidus{0em}
+\def\XCharter@aftsolidus{0em}
+\newif\ifxch@thrm
+\newif\ifxch@sups
+%\newif\if@XCharter@scosf
+%\newif\ifxch@altQ
+%\newif\ifxch@altJ
+%\newif\ifxch@oldSS
+\def\xch@defaultfeatures{}
+\newcount\xch@cnt \xch@cnt=0
+
+
+%\DeclareOptionX{lining}{\edef\XCharter@figurestyle{LF}}
+%\DeclareOptionX{lf}{\edef\XCharter@figurestyle{LF}}
+%\DeclareOptionX{oldstyle}{\edef\XCharter@figurestyle{OsF}}
+%\DeclareOptionX{osf}{\edef\XCharter@figurestyle{OsF}}
+%\DeclareOptionX{tabular}{\edef\XCharter@figurealign{T}}
+%\DeclareOptionX{p}{\useproportional}
+%\DeclareOptionX{proportional}{\useproportional}
+%\def\xch@fnmark{}
+%\DeclareOptionX{fnmarkerfont}{\def\xch@fnmark{#1}}
+\DeclareOptionX{defaultfeatures}{\def\xch@defaultfeatures{#1}}
+\DeclareOptionX{oldSS}{\advance\xch@cnt\@ne}
+\DeclareOptionX{theoremfont}{\xch@thrmtrue}
+%\DeclareOptionX{thmtabular}{\def\xch@thmtab{t}}
+\DeclareOptionX{thmlining}{\def\xch@thmlin{l}}
+\DeclareOptionX{sups}{\xch@supstrue}
+\DeclareOptionX{scosf}{\xch@scosftrue}
+\DeclareOptionX{foresolidus}{\gdef\XCharter@foresolidus{#1}}
+\DeclareOptionX{aftsolidus}{\gdef\XCharter@aftsolidus{#1}}
+\ExecuteOptionsX{lining,tabular}
+\ProcessOptionsX\relax
+
+% Check for conflict between nofontspec and others
+\ifxch@nofontspec
+ \iftutex
+ \xch@otftextfalse
+ \fi
+\fi
+%\edef\xch@scaled{s*[\xch@scale]}% used in fd files
+
+\iftutex
+ \ifxch@nofontspec % do nothing
+ \else
+ \RequirePackage[no-math]{fontspec}
+ \fi
+\fi
+
+\ifxch@otftext%
+ \ifxetex\XeTeXtracingfonts=1\fi
+ \ifluatex % avoid possibly uncorrected "system" fonts
+ \directlua{fonts.names.set_location_precedence{
+ "local", "texmf", "system" }}
+ \fi
+ \def\xch@base{XCharter}
+ \newcommand{\textfrac}[3][]{{%
+ \mbox{%
+ \ifthenelse{\not\equal{#1}{}}%Test for integer portion [optional #1]
+ {\textlf{#1}\kern.03em}{}%
+ \textsu{#2\char"2044}% numerator
+\textde{\kern-.159em{\addfontfeature{RawFeature=+ss02}\char"2044}#3}% denominator
+}}}
+ \def\xch@dflt{}
+ %\xch@cnt will be 0..7
+ \def\xch@lst{}
+ \ifnum\xch@cnt>3 \edef\xch@lst{3}\advance\xch@cnt -4 \fi
+ \ifnum\xch@cnt>1 \edef\xch@lst{2,\xch@lst}\advance\xch@cnt -2 \fi
+ \ifnum\xch@cnt>0 \edef\xch@lst{2,\xch@lst}\fi
+ \ifthenelse{\not\equal{\xch@lst}{}}
+ {\edef\xch@dflt{\xch@dflt StylisticSet={\xch@lst} ,
+ }}{}
+ \defaultfontfeatures{
+ Ligatures = TeX ,
+ Extension = .otf ,
+ SmallCapsFeatures={Letters=SmallCaps} ,
+ \xch@dflt ,
+ \xch@defaultfeatures
+ }
+
+\else % type1
+ \RequirePackage{fontaxes}
+
\fa@naming@exception{figures}{{superior}{proportional}}{Sup}
\fa@naming@exception{figures}{{superior}{tabular}}{Sup}
\def\sufigures{\@nomath\sufigures
@@ -32,187 +236,195 @@
\fontfigurestyle{inferior}\selectfont}
\DeclareTextFontCommand{\textinf}{\infigures}
\let\textinferior\textinf
-
+
\fa@naming@exception{figures}{{numerators}{proportional}}{Numr}
\fa@naming@exception{figures}{{numerators}{tabular}}{Numr}
\def\nufigures{\@nomath\nufigures%
\fontfigurestyle{numerators}\selectfont}
\DeclareTextFontCommand{\textnu}{\nufigures}
\let\textnumerator\textnu
- \let\nustyle\nufigures
-
+
\fa@naming@exception{figures}{{denominators}{proportional}}{Dnom}
\fa@naming@exception{figures}{{denominators}{tabular}}{Dnom}
\def\defigures{\@nomath\defigures%
\fontfigurestyle{denominators}\selectfont}
\DeclareTextFontCommand{\textde}{\defigures}
\let\textdenominator\textde
- \let\destyle\defigures
-
-}{}
-\newcommand{\textfrac}[3][]{% like \textfrac[1]{7}{8}
- \mbox{%
- \ifthenelse{\not\equal{#1}{}}%Test for integer portion [optional #1]
- {\textlf{#1}\kern.05em}{}%
- \textsu{#2}% numerator
- \StrRight{#2}{1}[\@digit@]%
- % look for 1, 2, 3, 4, 7
- \ifcase\@digit@% 0
- \or% 1
- \or\kern.03em% 2
- \or\kern-.01em% 3
- \or%\kern-.01em% 4
- \or%\kern.01em% 5
- \or\kern.01em% 6
- \or\kern-.09em% 7
- \fi%
- \kern\XCh@foresolidus\textfractionsolidus\kern\XCh@aftsolidus%
- \StrLeft{#3}{1}[\@digit@]%
- % look for 1, 4, 5, 7
- \ifcase\@digit@% 0
- \or\kern -.02em% 1
- \or\kern .01em% 2
- \or\kern -.02em% 3
- \or\kern -.08em% 4
- \or\kern -.01em% 5
- \or\kern -.03em% 6
- \or\kern .02em% 7
- \fi%
- \textde{#3}% denominator [#3]
- }%
+
+ \newcommand{\textfrac}[3][]{% like \textfrac[1]{7}{8}
+ \mbox{%Test for integer portion [optional #1]
+ \ifthenelse{\not\equal{#1}{}}%
+ {\textlf{#1}\kern.05em}{}%
+ \textsu{#2}% numerator
+ \StrRight{#2}{1}[\@digit@]%
+ % look for 1, 2, 3, 4, 7
+ \ifcase\@digit@% 0
+ \or% 1
+ \or\kern.03em% 2
+ \or\kern-.01em% 3
+ \or%\kern-.01em% 4
+ \or%\kern.01em% 5
+ \or\kern.01em% 6
+ \or\kern-.09em% 7
+ \fi%
+\kern\XCharter@foresolidus\textfractionsolidus\kern\XCharter@aftsolidus%
+ \StrLeft{#3}{1}[\@digit@]%
+ % look for 1, 4, 5, 7
+ \ifcase\@digit@% 0
+ \or\kern -.02em% 1
+ \or\kern .01em% 2
+ \or\kern -.02em% 3
+ \or\kern -.08em% 4
+ \or\kern -.01em% 5
+ \or\kern -.03em% 6
+ \or\kern .02em% 7
+ \fi%
+\textde{#3}% denominator [#3]
+}%
}
+\DeclareRobustCommand{\tlfstyle}{%
+ \not@math@alphabet\tlfstyle\relax
+ \fontfamily{XCharter-TLF}\selectfont }
\DeclareRobustCommand{\lfstyle}{%
\not@math@alphabet\lfstyle\relax
- \fontfamily{XCharter-TLF}\selectfont }
+ \fontfamily{XCharter-LF}\selectfont }
+\DeclareRobustCommand{\tosfstyle}{%
+ \not@math@alphabet\tosfstyle\relax
+ \fontfamily{XCharter-TOsF}\selectfont }
\DeclareRobustCommand{\osfstyle}{%
\not@math@alphabet\osfstyle\relax
- \fontfamily{XCharter-TOsF}\selectfont }
-\def\textlf#1{{\lfstyle #1}}
-%\def\textosf#1{{\osfstyle #1}}
-\edef\XCh@dfltfigurestyle{TLF}
-
-\newcommand*{\XCharter@scale}{1}
-\IfFileExists{xkeyval.sty}{
- \RequirePackage{xkeyval}
- \DeclareOptionX{scale}{\renewcommand*{\XCharter@scale}{##1}}
- \DeclareOptionX{scaled}{\renewcommand*{\XCharter@scale}{##1}}
-}{
- \let\DeclareOptionX\DeclareOption
- \let\ExecuteOptionsX\ExecuteOptions
- \let\ProcessOptionsX\ProcessOptions
-}
-\let\orig@footnote=\thefootnote
-\let\orig@makefnmark=\@makefnmark
-\def\XCh@foresolidus{-.02em}
-\def\XCh@aftsolidus{-.02em}
-%\newif\ifXCh@babel
-%\ifdefined\bbl@tempa \XCh@babeltrue\fi
-\newif\if@XCh@scosf
-\newif\if@XCh@srb
-\newif\ifXCh@thrm
+ \fontfamily{XCharter-OsF}\selectfont }
+\fi % type1
-\def\XCharter@altone{1}% default is to use 1, not I
-\newif\if@XCh@sups
-\DeclareOptionX{foresolidus}{\gdef\XCh@foresolidus{#1}}
-\DeclareOptionX{aftsolidus}{\gdef\XCh@aftsolidus{#1}}
-\DeclareOptionX{lf}{\edef\XCharter@figurestyle{TLF}}
-\DeclareOptionX{lining}{\edef\XCharter@figurestyle{TLF}}
-\DeclareOptionX{oldstyle}{\edef\XCharter@figurestyle{TOsF}%
-\edef\XCharter@altone{1}}
-\DeclareOptionX{oldstyleI}{\edef\XCharter@figurestyle{TOsF}%
-\edef\XCharter@altone{}}
-\DeclareOptionX{theoremfont}{\XCh@thrmtrue}
-\DeclareOptionX{osf}{\edef\XCharter@figurestyle{TOsF}\edef\XCharter@altone{1}}
-\DeclareOptionX{osfI}{\edef\XCharter@figurestyle{TOsF}\edef\XCharter@altone{}}
-\DeclareOptionX{sups}{\@XCh@supstrue}
-\DeclareOptionX{scosf}{\@XCh@scosftrue}
-\DeclareOptionX{serbianc}{\@XCh@srbtrue}
-
-\edef\bfseries@rm{b}
-\edef\mdseries@rm{m}
-\ExecuteOptionsX{lining}
-\ProcessOptionsX\relax
+%\DeclareRobustCommand{\textlf}[1]{%
+% {\lfstyle #1}%
+%}% to get lf
+%\DeclareRobustCommand{\texttlf}[1]{%
+% {\tlfstyle #1}%
+%}% to get tlf
+%\DeclareRobustCommand{\textosf}[1]{%
+% {\osfstyle #1}%
+%}% to get osf
+%\DeclareRobustCommand{\texttosf}[1]{%
+% {\tosfstyle #1}%
+%}% to get tosf
+
+%\newcommand*{\XCharter@scale}{1}
+%\RequirePackage{xkeyval}
+%\DeclareOptionX{scale}{\renewcommand*{\XCharter@scale}{##1}}
+%\DeclareOptionX{scaled}{\renewcommand*{\XCharter@scale}{##1}}
+%\let\orig@footnote=\thefootnote
+%\let\orig@makefnmark=\@makefnmark
+%\def\XCh@foresolidus{-.02em}
+%\def\XCh@aftsolidus{-.02em}
+%
+%\newif\if@XCh@scosf
+%\newif\if@XCh@srb
+%\def\XCharter@altone{1}% default is to use 1, not I
+%%\newif\if@XCh@sups
+%%\DeclareOptionX{foresolidus}{\gdef\XCh@foresolidus{#1}}
+%%\DeclareOptionX{aftsolidus}{\gdef\XCh@aftsolidus{#1}}
+%%\DeclareOptionX{tabular}{\def\XCharter@figurealign{T}}
+%%\DeclareOptionX{lf}{\def\XCharter@figurestyle{LF}}
+%%\DeclareOptionX{lining}{\edef\XCharter@figurestyle{LF}}
+%%\DeclareOptionX{oldstyle}{\def\XCharter@figurestyle{OsF}%\def\XCharter@figurealign{}\def\XCharter@altone{1}}
+%\DeclareOptionX{oldstyleI}{\def\XCharter@figurestyle{OsF}\def\XCharter@figurealign{}\def\XCharter@altone{}}
+%%\DeclareOptionX{osf}{\def\XCharter@figurestyle{OsF}\def\XCharter@figurealign{}\def\XCharter@altone{1}}
+%\DeclareOptionX{osfI}{\def\XCharter@figurestyle{OsF}\def\XCharter@figurealign{}\def\XCharter@altone{}}
+%\DeclareOptionX{sups}{\@XCh@supstrue}
+%\DeclareOptionX{scosf}{\@XCh@scosftrue}
+%\DeclareOptionX{serbianc}{\@XCh@srbtrue}
+%
+%\edef\bfseries@rm{b}
+%\edef\mdseries@rm{m}
+%\ExecuteOptionsX{lining,tabular}
+%\ProcessOptionsX\relax
-\def\useosf{\edef\XCharter@figurestyle{TOsF}\def\XCharter@altone{1}}
-\def\useosfI{\edef\XCharter@figurestyle{TOsF}\def\XCharter@altone{}}
+\def\useosf{\xch@liningfalse\def\XCharter@altone{1}}
+\def\useosfI{\xch@liningfalse\def\XCharter@altone{}}
\@onlypreamble\useosf
\@onlypreamble\useosfI
+\def\useproportional{\xch@tabularfalse}
+\@onlypreamble\useproportional
%\newcommand{\textosfI}[1]{\oldstylenums{#1}}% to get XCharter osfI
-\newcommand{\textosf}[1]{{\fontencoding{T1}\fontfamily{XCharterx}\selectfont #1}}% to get XCharter osf
-\newcommand{\textosfI}[1]{{\fontencoding{T1}\fontfamily{XChartery}\selectfont #1}}% to get XCharter osfI
-
-\ifXCh@thrm
- %\RequirePackage{amsmath,amsthm} % in case of theoremfont
- \ifdefined\newtheoremstyle %amsthm and ntheorem, not theorem.sty
- \@ifpackageloaded{ntheorem}\relax{%
- \newtheoremstyle{plain}
- {\medskipamount} % ABOVESPACE, was \topsep
- {\medskipamount} % BELOWSPACE, was \topsep
- {\thfamily} % BODYFONT--\thfamily is italic with upright figures and punctuation
- {} % INDENT (empty value is the same as 0pt)
- {\bfseries} % HEADFONT--you may want to add \tlfstyle so the number is tab lining, regardless of text figure selection
- {.} % HEADPUNCT
- {5pt plus 1pt minus 1pt} % HEADSPACE
- {} % CUSTOM-HEAD-SPEC\newtheorem{thm}{Theorem}[section]
- } % end @ifpackageloaded
- \fi%
-\fi%}
+%\newcommand{\textosf}[1]{{\fontencoding{T1}\fontfamily{XCharterx}\selectfont #1}}% to get XCharter osf
+%\newcommand{\textosfI}[1]{{\fontencoding{T1}\fontfamily{XChartery}\selectfont #1}}% to get XCharter osfI
\renewcommand*{\bfdefault}{b}
\renewcommand*{\scdefault}{sc}% for better compatibility with mathdesign
% The following are provided so that we may access osf in any mode
% osfx corresponds to small 1 rather than small I
-\DeclareFontFamily{T1}{XCharterx}{}
-
-\DeclareFontShape{T1}{XCharterx}{m}{n}{
- <-> s*[\XCharter@scale] XCharter1-Roman-tosf-t1
-}{}
-\DeclareFontShape{T1}{XCharterx}{m}{it}{
- <-> s*[\XCharter@scale] XCharter1-Italic-tosf-t1
-}{}
-\DeclareFontShape{T1}{XCharterx}{b}{n}{
- <-> s*[\XCharter@scale] XCharter1-Bold-tosf-t1
-}{}
-\DeclareFontShape{T1}{XCharterx}{b}{it}{
- <-> s*[\XCharter@scale] XCharter1-BoldItalic-tosf-t1
-}{}
-% osfy corresponds to small I rather than small 1
-\DeclareFontFamily{T1}{XChartery}{}
-
-\DeclareFontShape{T1}{XChartery}{m}{n}{
- <-> s*[\XCharter@scale] XCharter-Roman-tosf-t1
-}{}
-\DeclareFontShape{T1}{XChartery}{m}{it}{
- <-> s*[\XCharter@scale] XCharter-Italic-tosf-t1
-}{}
-\DeclareFontShape{T1}{XChartery}{b}{n}{
- <-> s*[\XCharter@scale] XCharter-Bold-tosf-t1
-}{}
-\DeclareFontShape{T1}{XChartery}{b}{it}{
- <-> s*[\XCharter@scale] XCharter-BoldItalic-tosf-t1
-}{}
+%\DeclareFontFamily{T1}{XCharterx}{}
+%
+%\DeclareFontShape{T1}{XCharterx}{m}{n}{
+% <-> s*[\XCharter@scale] XCharter1-Roman-osf-t1
+%}{}
+%\DeclareFontShape{T1}{XCharterx}{m}{it}{
+% <-> s*[\XCharter@scale] XCharter1-Italic-osf-t1
+%}{}
+%\DeclareFontShape{T1}{XCharterx}{m}{sl}{
+% <-> s*[\XCharter@scale] XCharter1-Slanted-osf-t1
+%}{}
+%\DeclareFontShape{T1}{XCharterx}{b}{n}{
+% <-> s*[\XCharter@scale] XCharter1-Bold-osf-t1
+%}{}
+%\DeclareFontShape{T1}{XCharterx}{b}{it}{
+% <-> s*[\XCharter@scale] XCharter1-BoldItalic-osf-t1
+%}{}
+%\DeclareFontShape{T1}{XCharterx}{b}{sl}{
+% <-> s*[\XCharter@scale] XCharter1-BoldSlanted-osf-t1
+%}{}
+%% osfy corresponds to small I rather than small 1
+%\DeclareFontFamily{T1}{XChartery}{}
+%
+%\DeclareFontShape{T1}{XChartery}{m}{n}{
+% <-> s*[\XCharter@scale] XCharter-Roman-osf-t1
+%}{}
+%\DeclareFontShape{T1}{XChartery}{m}{it}{
+% <-> s*[\XCharter@scale] XCharter-Italic-osf-t1
+%}{}
+%DeclareFontShape{T1}{XChartery}{m}{sl}{
+% <-> s*[\XCharter@scale] XCharter-Slanted-osf-t1
+%}{}
+%\DeclareFontShape{T1}{XChartery}{b}{n}{
+% <-> s*[\XCharter@scale] XCharter-Bold-osf-t1
+%}{}
+%\DeclareFontShape{T1}{XChartery}{b}{it}{
+% <-> s*[\XCharter@scale] XCharter-BoldItalic-osf-t1
+%}{}
+%\DeclareFontShape{T1}{XChartery}{b}{sl}{
+% <-> s*[\XCharter@scale] XCharter-BoldSlanted-osf-t1
+%}{}
\renewcommand*{\rmdefault}{XCharter-TLF}
\renewcommand*{\familydefault}{\rmdefault}
-\if@XCh@scosf %
+\ifxch@scosf %
\DeclareRobustCommand{\textsc}[1]{%
-{\fontfamily{XCharter-TOsF}\fontshape{sc}\selectfont #1}%
+{\fontfamily{XCharter-OsF}\fontshape{sc}\selectfont #1}%
}\fi% use OsF in small caps
\DeclareRobustCommand{\textruble}{\rlap{\kern.03em\rule[.258em]{.1em}{.032em}}\rlap{\kern.03em\rule[.173em]{.41em}{.032em}}{\scalefont{.966}P}}
-
-\DeclareTextCommand{\textcircled}{TS1}[1]{%
-\hmode@bgroup
- \ooalign{%
- \hfil \raise .32ex\hbox {\fontencoding{T1}\fontfamily{XCharter-TOsF}\fontseries{m}\fontshape{sc}\selectfont\scalefont{.75}\lowercase{#1}}\hfil \crcr
- \char 79 %\textbigcircle
- }%
- \egroup}
+\let\textcircled\@nil
+%\let\csname TS1\textcircled\@nil
+\DeclareRobustCommand{\textcircled}[1]{%
+\hmode@bgroup%
+\ifnum`#1>`9\relax%
+\def\y{.3ex}\def\x{\scshape\lowercase{#1}}%
+\else%
+\def\y{.19ex}\def\x{\liningnums#1}%
+\fi%
+\mbox{%
+\ooalign{%
+\hfil\raise\y\hbox{\scalefont{.78}\x}\hfil\crcr%
+{\usefont{TS1}{XCharter-TLF}{m}{n}\char79}%\textbigcircle
+}}%
+\egroup}
+%\expandafter\show\csname textcircled \endcsname
%\DeclareTextCommand{\textcircled}{TS1}[1]{\hmode@bgroup
% \ooalign{%
@@ -221,7 +433,7 @@
% }%
% \egroup}
-\if@XCh@sups %
+\ifxch@sups %
\ifdefined\sufigures
\def\f@@tn@te{footnote}
\def\@makefnmark{%
@@ -237,41 +449,281 @@
\fi%
\fi
-%\AtEndPreamble{%
-%\renewcommand*{\rmdefault}{XCharter-\XCharter@figurestyle}
-%\normalfont}
+%%%% set the style for theoremfont---either osf or tlf
+\def\xch@thfigurestyle{\XCharter@figurestyle}
+\ifx\XCharter@figurestyle\xch@dfltfigurestyle
+ \def\xch@thfigurestyle{tlf}
+\else
+ \def\xch@thfigurestyle{osf}
+\fi
+\if l\xch@thmlin \def\xch@thfigurestyle{tlf}\fi% force lining
-%\ifXCh@babel
-% \renewcommand*{\rmdefault}{XCharter-\XCharter@figurestyle}
-% \normalfont
-%\else
+\ifxch@otftext
+ \ifthenelse{\equal{\xch@thfigurestyle}{tlf}}{%
+ \def\xch@fa{Monospaced}\def\xch@sty{Lining}}{%
+ \def\xch@fa{Proportional}\def\xch@sty{OldStyle}}
+% \DeclareTextFontCommand{%
+% \slshape}{\addfontfeatures{Numbers = {\xch@nft,\xch@sty}, RawFeature=+salt}\itshape} % for theorems
+ \DeclareTextFontCommand{\textsl}{\slshape}
+
+ \DeclareRobustCommand{\lfstyle}{%
+ \not@math@alphabet\lfstyle\relax
+ \addfontfeatures{Numbers={Proportional,Lining}}%
+ }
+ \DeclareRobustCommand{\tlfstyle}{%
+ \not@math@alphabet\tlfstyle\relax
+ \addfontfeatures{Numbers={Monospaced,Lining}}%
+ }
+ \DeclareRobustCommand{\osfstyle}{%
+ \not@math@alphabet\osfstyle\relax
+ \addfontfeatures{Numbers={Proportional,OldStyle}}%
+ }
+ \DeclareRobustCommand{\tosfstyle}{%
+ \not@math@alphabet\tosfstyle\relax
+ \addfontfeatures{Numbers={Monospaced,OldStyle}}%
+ }
+ \DeclareRobustCommand{\oldstylenums}{%
+ \not@math@alphabet\oldstylenums\relax
+ \addfontfeatures{Numbers=OldStyle}%
+ }
+ \DeclareRobustCommand{\liningnums}{%
+ \not@math@alphabet\liningnums\relax
+ \addfontfeatures{Numbers=Lining}%
+ }
+ \DeclareRobustCommand{\tabularnums}{%
+ \not@math@alphabet\tabularnums\relax
+ \addfontfeatures{Numbers=Monospaced}%
+ }
+ \DeclareRobustCommand{\proportionalnums}{%
+ \not@math@alphabet\proportionalnums\relax
+ \addfontfeatures{Numbers=Proportional}%
+ }
-\DeclareRobustCommand\thfamily % new family for theorem font
+%% \newfontfamily\xchTLF
+% [ %IgnoreFontspecFile ,
+% Numbers = {Monospaced,Lining},
+% Scale = \XCharter@scale ,
+% UprightFont = *-Roman ,
+% ItalicFont = *-Italic ,
+% %SlantedFont = *-Slanted ,
+% BoldFont = *-Bold ,
+% BoldItalicFont = *-BoldItalic ,
+% % BoldSlantedFont= *-BoldSlanted ,
+% ] {\xch@base}
+% \newfontfamily\xchTOsF
+% [ %IgnoreFontspecFile ,
+% Numbers = {Monospaced,OldStyle} ,
+% Scale = \XCharter@scale ,
+% UprightFont = *-Roman ,
+% ItalicFont = *-Italic ,
+% %SlantedFont = *-Slanted ,
+% BoldFont = *-Bold ,
+% BoldItalicFont = *-BoldItalic ,
+% %BoldSlantedFont= *-BoldSlanted ,
+% ] {\xch@base}
+% \newfontfamily\xchOsF
+% [ %IgnoreFontspecFile ,
+% Numbers = {Proportional,OldStyle} ,
+% Scale = \XCharter@scale ,
+% UprightFont = *-Roman ,
+% ItalicFont = *-Italic ,
+% %SlantedFont = *-Slanted ,
+% BoldFont = *-Bold ,
+% BoldItalicFont = *-BoldItalic ,
+% %BoldSlantedFont= *-BoldSlanted ,
+% ] {\xch@base}
+% \newfontfamily\xchLF
+% [ %IgnoreFontspecFile ,
+% Numbers = {Proportional,Lining} ,
+% Scale = \XCharter@scale ,
+% UprightFont = *-Roman ,
+% ItalicFont = *-Italic ,
+% %SlantedFont = *-Slanted ,
+% BoldFont = *-Bold ,
+% BoldItalicFont = *-BoldItalic ,
+% %BoldSlantedFont= *-BoldSlanted ,
+% ] {\xch@base}
+ \providecommand\nufigures{\addfontfeatures{RawFeature=+numr}}
+ \providecommand\sufigures{\addfontfeatures{VerticalPosition=Superior}}
+ \providecommand\defigures{\addfontfeatures{RawFeature=+dnom}}
+\providecommand\infigures{\addfontfeatures{VerticalPosition=Inferior}}
+ \let\nustyle\nufigures
+ \DeclareTextFontCommand{\textnu}{\nufigures}
+ \let\destyle\defigures
+ \DeclareTextFontCommand{\textsu}{\sufigures}
+ \let\textsuperior\textsu
+ \DeclareTextFontCommand{\textde}{\defigures}
+ \let\textdenominator\textde
+ \DeclareTextFontCommand{\textinf}{\infigures}
+ \let\textinferior\textinf
+
+ \ifxch@sups %
+ \usepackage{realscripts}
+ %\newfontfamily\Timessu{TeXGyreTermesX}
+
+ \ifxch@KOMA
+ \setkomafont{footnotelabel}{\normalfont}
+ \else
+ \renewcommand*{\footnotemarkfont}{\normalfont}
+ \fi
+ \fi
+% \newcommand{\thfamily}%{\@nameuse{ntx\ntx@figurestyle}%
+% {\itshape\addfontfeatures{%
+% Numbers={\XCharter@figurealign,\xch@sty} ,
+% RawFeature=+ss05}
+ %} % for theorems
+\else % type1
+ \DeclareRobustCommand{\thfamily} % new family for theorem font
{\not@math@alphabet\thfamily\relax
- \fontfamily\thdefault\fontshape{it}\selectfont}
-\DeclareRobustCommand{\textth}[1]{%
- {\thfamily #1}%
-}
+ \fontfamily\thdefault\selectfont}
+% \DeclareRobustCommand{\textth}[1]{%
+% {\thfamily #1}%
+%}
+%\let\textthit\textth
+ \renewcommand*{\rmdefault}{XCharter-TLF} % always TLF in math
+ \renewcommand*{\familydefault}{\rmdefault}
+
+ \ifxch@sups %
+ \ifxch@KOMA %
+ \else % not KOMA
+ \ifdefined\sufigures
+ \def\f@@tn@te{footnote}
+ \def\@makefnmark{%
+ \ifx\@mpfn\f@@tn@te%
+ \ifx\thefootnote\orig@footnote%
+ \hbox{\sufigures\hspace*{.04em}\@thefnmark\hspace*{.04em}}%
+ \else%
+ \orig@makefnmark%
+ \fi
+ \else%
+ \orig@makefnmark%
+ \fi}%
+ \fi%
+ \fi
+ \fi
+\fi % type1
+
+\ifxch@otftext
+% \AtEndPreamble{%
+ \ifxch@lining
+ \def\xch@figurestyle{Lining}
+ \else
+ \def\xch@figurestyle{OldStyle}
+ \fi
+ \ifxch@tabular
+ \def\xch@figurealign{Monospaced}
+ \else
+ \def\xch@figurealign{Proportional}
+ \fi
+
+ \setmainfont
+ [%IgnoreFontspecFile ,
+ Extension = .otf ,
+ %Path = ./ ,
+ Numbers = {\xch@figurealign,\xch@figurestyle},
+ Scale = \XCharter@scale ,
+ UprightFont = *-Roman ,
+ ItalicFont = *-Italic ,
+ SlantedFont = *-Slanted ,
+ BoldFont = *-Bold ,
+ BoldItalicFont = *-BoldItalic ,
+ BoldSlantedFont= *-BoldSlanted ,
+ SmallCapsFeatures={Letters=SmallCaps} ,
+ ] {\xch@base}
+\def\xch@sty{\xch@figurestyle}\def\xch@fa{\xch@figurealign}
+ \if l\xch@thmlin\def\xch@sty{Lining}\def\xch@fa{Tabular}\fi
+ \newcommand{\thfamily}%{\@nameuse{ntx\ntx@figurestyle}%
+ {\itshape\addfontfeatures{%
+ Numbers={\xch@fa,\xch@sty} ,
+ RawFeature=+ss05}
+ } % for theorems
+\newfontface\circledtxt{\xch@base-Roman}
+ [%IgnoreFontspecFile ,
+ Scale = \XCharter@scale ,
+ %Numbers = {Monospaced,OldStyle} ,
+ SmallCapsFeatures={Letters=SmallCaps} ,
+ ]
+ \ifxch@scosf%
+ \edef\xch@fnt{\expandafter\csname xch\ifxch@tabular T\fi OsF\endcsname}
+ \DeclareRobustCommand{\textsc}[1]{%
+ {\xch@fnt \addfontfeatures{RawFeature=+smcp}#1}}%
+%\show\xch@fnt
+ \fi
+\let\textthit\textth
+%}
+\else % type1
+ \AtEndPreamble{%
+ \ifxch@tabular
+ \def\XCharter@figurealign{T}
+ \else
+ \def\XCharter@figurealign{}
+ \fi
+ \ifxch@lining
+ \def\XCharter@figurestyle{LF}
+ \else
+ \def\XCharter@figurestyle{OsF}
+ \fi
+ \DeclareRobustCommand{\oldstylenums}{%
+ \not@math@alphabet\oldstylenums\relax
+ \fontfamily{XCharter-\XCharter@figurealign OsF}\selectfont }
+ \DeclareRobustCommand{\liningnums}{%
+ \not@math@alphabet\liningnums\relax
+ \fontfamily{XCharter-\XCharter@figurealign LF}\selectfont }
+ \DeclareRobustCommand{\tabularnums}{%
+ \not@math@alphabet\tabularnums\relax
+ \fontfamily{XCharter-T\XCharter@figurestyle}\selectfont }
+ \DeclareRobustCommand{\proportionalnums}{%
+ \not@math@alphabet\proportionalnums\relax
+ \fontfamily{XCharter-\XCharter@figurestyle}\selectfont }
+% \DeclareRobustCommand{\textosfI}[1]{%
+%{\fontfamily{XCharter-OsF}\fontshape{sc}\selectfont #1}%
+%}
+ \ifxch@scosf %
+ \DeclareRobustCommand{\textsc}[1]{%
+ {\fontfamily{XCharter-\XCharter@figurealign%
+ OsF}\fontshape{sc}\selectfont #1}%
+ }\fi% use OsF in small caps
+ \renewcommand*{\rmdefault}{XCharter-\XCharter@figurealign%
+ \XCharter@figurestyle}
+
+ \newcommand*{\thdefault}{XCharterTH-\xch@thfigurestyle}
+ \normalfont
+ \renewcommand*{\familydefault}{\rmdefault}
\let\textthit\textth
+ }
+\fi
-\AtEndPreamble{%
-\renewcommand*{\rmdefault}{XCharter-\XCharter@figurestyle}
-%\def\XCharter@thfigurestyle{\XCharter@figurestyle}
-\ifx\XCharter@figurestyle\XCh@dfltfigurestyle
- \def\XCharter@thfigurestyle{tlf}
-\else
- \def\XCharter@thfigurestyle{osf}
-\fi % there just two possible figure styles for the theorem font
+%both
+\DeclareTextFontCommand{\textosf}{\osfstyle}
+\DeclareTextFontCommand{\texttosf}{\tosfstyle}
+\DeclareTextFontCommand{\texttlf}{\tlfstyle}
+\DeclareTextFontCommand{\textlf}{\lfstyle}
-\newcommand*{\thdefault}{XCharterTH-\XCharter@thfigurestyle}
-\ifXCh@thrm
- \@ifundefined{theoremstyle}{}{%
+\ifxch@thrm
+ \@ifundefined{theoremstyle}{}{%
\theoremstyle{plain}
- \patchcmd{\th@plain}{\itshape}{\thfamily}{\message{Replaced itshape by thfamily in theorem style plain.}}{\message{Unable to replace itshape by thfamily in theorem style plain.}}
-}
+ \patchcmd{\th@plain}{\itshape}{\thfamily}{%
+ %\message{Replaced itshape by thfamily in theorem style plain.}
+ }{%
+ %\message{Unable to replace itshape by thfamily in theorem style plain.}
+ }}
+ \ifdefined\newtheoremstyle %amsthm and ntheorem, not theorem.sty
+ \@ifpackageloaded{ntheorem}\relax{%
+ \newtheoremstyle{plain}
+ {\medskipamount} % ABOVESPACE, was \topsep
+ {\medskipamount} % BELOWSPACE, was \topsep
+ {\thfamily} % BODYFONT--\thfamily is italic with upright figures and punctuation
+ {} % INDENT (empty value is the same as 0pt)
+ {\bfseries} % HEADFONT--you may want to add \tlfstyle so the number is tab lining, regardless of text figure selection
+ {.} % HEADPUNCT
+ {5pt plus 1pt minus 1pt} % HEADSPACE
+ {} % CUSTOM-HEAD-SPEC\newtheorem{thm}{Theorem}[section]
+ } % end @ifpackageloaded
+ \fi%
\fi
-\normalfont}
-%\fi
-
+\DeclareRobustCommand{\textth}[1]{%
+ {\thfamily #1}%
+}
+%
\endinput