From 131e9c682e458d1a6cc4b188374d8e91fe057817 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 4 Sep 2023 19:46:06 +0000 Subject: arsenal (4sep23) git-svn-id: svn://tug.org/texlive/trunk@68169 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/fonts/arsenal/Makefile | 73 ++++ Master/texmf-dist/source/fonts/arsenal/arsenal.dtx | 371 +++++++++++++++++++++ Master/texmf-dist/source/fonts/arsenal/arsenal.ins | 12 + .../source/fonts/arsenal/sample-math.dtx | 127 +++++++ 4 files changed, 583 insertions(+) create mode 100644 Master/texmf-dist/source/fonts/arsenal/Makefile create mode 100644 Master/texmf-dist/source/fonts/arsenal/arsenal.dtx create mode 100644 Master/texmf-dist/source/fonts/arsenal/arsenal.ins create mode 100644 Master/texmf-dist/source/fonts/arsenal/sample-math.dtx (limited to 'Master/texmf-dist/source') diff --git a/Master/texmf-dist/source/fonts/arsenal/Makefile b/Master/texmf-dist/source/fonts/arsenal/Makefile new file mode 100644 index 00000000000..4ca8e0e4f3b --- /dev/null +++ b/Master/texmf-dist/source/fonts/arsenal/Makefile @@ -0,0 +1,73 @@ +PACKAGE=arsenal + +FONTS = \ + Arsenal-Bold.otf \ + Arsenal-BoldItalic.otf \ + Arsenal-Italic.otf \ + Arsenal-Regular.otf + +SAMPLES = sample-math-iwona.tex sample-math-kpsans.tex sample-text.tex + +PDF = $(PACKAGE).pdf ${SAMPLES:%.tex=%.pdf} + +all: ${PDF} $(PACKAGE).sty $(FONTS) LICENSE_FONTS + + +%.pdf: %.dtx $(PACKAGE).sty $(FONTS) + xelatex $< + - bibtex $* + xelatex $< + - makeindex -s gind.ist -o $*.ind $*.idx + - makeindex -s gglo.ist -o $*.gls $*.glo + xelatex $< + while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \ + do xelatex $<; done + + +%.sty: %.ins %.dtx + xelatex $< + +%.pdf: %.tex $(PACKAGE).sty $(FONTS) + xelatex $< + - bibtex $* + xelatex $< + xelatex $< + while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \ + do xelatex $<; done + +sample-math-%.tex: $(PACKAGE).ins sample-math.dtx + xelatex $< + +%.otf: arsenal-fonts/fonts/otf/%.otf + cp $< $@ + +LICENSE_FONTS: arsenal-fonts/OFL.TXT + cp $< $@ + +clean: + $(RM) *_FAMILY_* *.log *.aux \ + *.cfg *.glo *.idx *.toc \ + *.ilg *.ind *.out *.lof \ + *.lot *.bbl *.blg *.gls \ + *.dvi *.ps *.thm *.tgz *.zip *.rpi \ + *.hd *.sty sample-math-*.tex + + +distclean: clean + $(RM) $(PDF) $(PACKAGE).sty $(FONTS) LICENSE_FONTS + +# +# Archive for the distribution. Includes typeset documentation +# +archive: all clean + COPYFILE_DISABLE=1 \ + tar -C .. -czvf ../$(PACKAGE).tgz --exclude '*~' --exclude arsenal-fonts \ + --exclude '*.tgz' --exclude '*.zip' --exclude ".git*" $(PACKAGE) + mv ../$(PACKAGE).tgz . + +zip: all clean + make $(PACKAGE).sty + $(RM) $(PACKAGE).log + cd ..;\ + zip -r $(PACKAGE).zip $(PACKAGE) -x "*.ins" -x "*.gitignore" + diff --git a/Master/texmf-dist/source/fonts/arsenal/arsenal.dtx b/Master/texmf-dist/source/fonts/arsenal/arsenal.dtx new file mode 100644 index 00000000000..3607489c584 --- /dev/null +++ b/Master/texmf-dist/source/fonts/arsenal/arsenal.dtx @@ -0,0 +1,371 @@ +% \iffalse meta-comment +% +% File: arsenal.dtx +% Copyright 2023 by Boris Veytsman +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +%<*driver> +\documentclass{l3doc} +\usepackage[default]{arsenal} +\usepackage{natbib, booktabs} +\usepackage[tableposition=top]{caption} +\urlstyle{rm} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +% +% \fi +% +% \GetFileInfo{arsenal.sty} +% \title{\pkg{arsenal}---\LaTeX\ support of Arsenal fonts by Andrij Shevchenko} +% \date{\fileversion, \filedate} +% \author{Boris +% Veytsman\thanks{\href{mailto:borisv@lk.net}{borisv@lk.net}, +% \href{mailto:boris@varphi.com}{boris@varphi.com}}} +% \maketitle +% \begin{abstract} +% Arsenal is the font created by Andrij Shevchenko. It won +% Ukrainian Type Design Competition `Mystetsky Arsenal' in 2011. +% This package provides \LaTeX\ support for it and matching math +% fonts. +% \end{abstract} +% \tableofcontents +% \begin{documentation} +% +%\section{User manual} +%\label{sec:ug} +% +% +%\subsection{Introduction} +%\label{sec:ug-intro} +% +% In 2011 the Ukrainian Type Design Competition ``Mystetsky Arsenal'' +% (\url{http://www.ukrainian-type.com/about/}) was won by the font by +% Andrij Shevchenko. The competiton was aimed at the creation of a +% modern practical font based on Ukrainian traditions. The winner is +% remarkable for its clarity and clean shapes. +% +% Later the font was extended by Alexei Vanyashin \& cyreal.org, Nhung +% Nguyen, and Marc Foley (see +% \url{https://github.com/alexeiva/Arsenal}). The font now supports a +% large number of languages with Latin and Cyrillic alphabet, it has +% real small caps, historic forms, swash capitals and many other +% features. +% +% This package provides +% \LaTeX\ interface for the font and optionally math support. +% +% Since the font it in \textsc{otf} format, you do need a Unicode +% engine like \XeTeX\ or Lua\TeX\ to use it. +% +% +%\subsection{Package options} +%\label{sec:ug-options} +% +% \begin{variable}{default, sfdefault, math, scale, Scale} +% The options for the package use the key-value interface. +% The part |=true| for the boolean options can be dropped. +% +% The following options are recognized: +% \begin{description} +% \item[default] whether to make Arsenal the main font of the +% document, either |true| (the default) or |false|. +% \item[sfdefault] whether to make Arsenal the sans serif font of your +% document, either |true| or |false| (the default). +% \item[math] whether to enable math support. The currently +% recognized options are |none|, |kpsans|, and |iwona|. The +% default depends on whether Arsenal is your main font: it is +% |iwona| if yes, and |none| otherwise. If |iwona| is selected, we use +% \pkg{iwonamath}~\citep{iwonamath}. If |kpsans| is selected, +% we use \textsc{otf} version of KpSans +% fonts~\citep{kpfonts-otf}. +% \item[scale] the scale for the font, by default 0.89. The option +% |Scale| is a synonym. +% \end{description} +% \end{variable} +% +% +%\subsection{Font features} +%\label{sec:ug-families} +% +% \begin{function}{\arsenalfamily, \textarsenal} +% \begin{syntax} +% \cs{arsenalfamily} \meta{text} +% \cs{textarsenal}\Arg{text} +% \end{syntax} +% The font provides the commands \cs{arsenalfamily} and +% \cs{textarsenal} for selecting the font. Alternatively, the NFSS +% commands \cs{fontfamily}|{arsenal}|\cs{selectfont} can be used to +% select Arsenal family. +% \end{function} +% +% The font has normal and \textit{italic} shapes, as well as bolded +% \textbf{bold} and \textbf{\itshape bold italic}. It has +% \textsc{Small Caps}, \textsc{\itshape Italic Small Caps}, +% \textsc{\bfseries Bold Small Caps} and \textsc{\bfseries\itshape +% Bold Italic Small Caps}. They are selected by the standard \LaTeX\ +% commands. +% +% \begin{function}{\swshape, \textsw} +% The font has Swash shape, selected by the commands \cs{swshape} +% and \cs{textsw}. There are both normal and bold versions: +% \textsw{SWASH}, \textsw{\bfseries Bold SWASH}. Moreover, there is +% an italic version \textsw{\itshape SWASH}, +% \textsw{\bfseries\itshape Bold SWASH}, and even a small caps +% version \textsw{\scshape Swash}, \textsw{\scshape\bfseries Bold +% Swash}. +% +% \end{function} +% +% The font has other features, such are two alternate forms and +% historic style. They can be selected by the +% \pkg{fontspec}~\citep{fontspec} commands like +% |\addfontfeatures{Style=Historic}| or +% |\addfontfeautures{Alternate=1}|. +% +% +% +%\subsection{Special symbols in text} +%\label{sec:chars} +% +% \begin{function}{ +% \texthryvnia, +% \texttugrik, +% \texttenge, +% \textruble +% } +% The font has common currency characters, like \cs{textdollar} +% (\textdollar), \cs{textyen} (\textyen), \cs{textsterling} +% (\textsterling), \cs{texteuro} (\texteuro). It also defines several +% less common currency characters: +% \cs{texthryvnia} (\texthryvnia), +% \cs{texttugrik} (\texttugrik), +% \cs{texttenge} (\texttenge), +% \cs{textruble} (\textruble). +% \end{function} +% +% \begin{function}{ +% \textaldine, +% \textsmilewhite, +% \textsmileblack +% } +% The font has \cs{textnumero} sign: \textnumero. It also defines some +% less common characters: +% \cs{textaldine} (\textaldine), +% \cs{textsmilewhite} (\textsmilewhite) +% \cs{textsmileblack} (\textsmileblack). +% \end{function} +% +% \end{documentation} +% +% +% \begin{implementation} +% +% \section{Implementation} +% \label{sec:impl} +% +% +% +%\subsection{Setting up} +%\label{sec:settingup} +% +% +% +% First, we declare who we are: +% \begin{macrocode} +%<@@=arsenal> +%<*package> +\ProvidesExplPackage {arsenal} +{2023-09-03} {0.1} +{Arsenal font by Andrij Shevchenko} +% \end{macrocode} +% +% +%\subsection{Options} +%\label{sec:options} +% +% \begin{variable}{ +% default, +% sfdefault, +% math, +% scale, +% Scale, +% \l_@@_default_bool, +% \l_@@_sfdefault_bool, +% \l_@@_math_tl, +% \l_@@_scale_tl, +% } +% \begin{macrocode} +\tl_new:N \l_@@_math_tl +\keys_define:nn {arsenal} +{ + default .bool_set:N = \l_@@_default_bool, + defaul .default:n = true, + sfdefault .bool_set:N = \l_@@_sfdefault_bool, + sfdefault .default:n = true, + math .choices:nn = {none, kpsans, iwona} + {\tl_set_eq:NN \l_@@_math_tl \l_keys_choice_tl }, + scale .tl_set:N = \l_@@_scale_tl, + Scale .tl_set:N = \l_@@_scale_tl, +} +\keys_set:nn { arsenal } +{ + default=true, + sfdefault = false, + scale = 0.89, +} +\tl_clear:N \l_@@_math_tl +% \end{macrocode} +% \end{variable} +% +% Processing options +% \begin{macrocode} +\IfFormatAtLeastTF { 2022-06-01 } + { \ProcessKeyOptions [ arsenal ] } + { + \RequirePackage { l3keys2e } + \ProcessKeysOptions { arsenal } + } +% \end{macrocode} +% And setting up math +% \begin{macrocode} +\tl_if_empty:NT \l_@@_math_tl +{ + \bool_if:NTF \l_@@_default_bool + { + \tl_set:Nn \l_@@_math_tl {iwona} + } + { + \tl_set:Nn \l_@@_math_tl {none} + } +} +% \end{macrocode} +% +% +%\subsection{Setting up font} +%\label{sec:font} +% +% \begin{macrocode} +\RequirePackage{fontspec} +\newfontfamily\arsenalfamily{Arsenal-Regular.otf} +[ + NFSSFamily=arsenal, + Ligatures=TeX, + Scale=\l_@@_scale_tl, + ItalicFont = Arsenal-Italic.otf, + BoldFont = Arsenal-Bold.otf, + BoldItalicFont = Arsenal-BoldItalic.otf, + SwashFont = Arsenal-Regular.otf, + SwashFeatures={Style=Swash}, + BoldSwashFont = Arsenal-Bold.otf, + BoldSwashFeatures={Style=Swash}, + FontFace = {m}{itsw}{Font = Arsenal-Italic.otf, Style=Swash}, + FontFace = {b}{itsw}{Font = Arsenal-BoldItalic.otf, Style=Swash}, +] +% \end{macrocode} +% +% Checking whether we want the font to be default +% \begin{macrocode} +\bool_if:NT \l_@@_default_bool +{ + \renewcommand\rmdefault{arsenal} +} + +\bool_if:NT \l_@@_sfdefault_bool +{ + \renewcommand\sfdefault{arsenal} +} +% \end{macrocode} +% +% \begin{macro}{\textarsenal} +% \begin{macrocode} +\DeclareTextFontCommand{\textarsenal}{\arsenalfamily} +% \end{macrocode} +% \end{macro} +% +% Swash changing rules +% \begin{macrocode} +\DeclareFontShapeChangeRule {sw}{it} {itsw} {it} +\DeclareFontShapeChangeRule {it}{sw} {itsw} {sw} +% \end{macrocode} +% +% Special characters, absent in the default +% \begin{macro}{ +% \texthryvnia, +% \texttugrik, +% \texttenge, +% \textruble +% } +% Currency symbolse +% \begin{macrocode} +\DeclareUnicodeSymbol{\texthryvnia} {"20B4} +\DeclareUnicodeSymbol{\texttugrik} {"20AE} +\DeclareUnicodeSymbol{\texttenge} {"20B8} +\DeclareUnicodeSymbol{\textruble} {"20BD} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{ +% \textaldine, +% \textsmilewhite, +% \textsmileblack +% } +% Other symbols +% \begin{macrocode} +\DeclareUnicodeSymbol{\textaldine} {"2767} +\DeclareUnicodeSymbol{\textsmilewhite} {"263A} +\DeclareUnicodeSymbol{\textsmileblack} {"263B} +% \end{macrocode} +% \end{macro} +% +% +%\subsection{Math} +%\label{sec:math} +% +% Iwona is simple\ldots +% \begin{macrocode} +\tl_new:N \l_@@_tmp_tl +\tl_if_eq:NnT \l_@@_math_tl {iwona} +{ + \tl_set:Nn \l_@@_tmp_tl {\fp_to_tl:n {\l_@@_scale_tl * 1.1}} + \RequirePackage[Scale=\l_@@_tmp_tl, condensed, light]{iwonamath} +} +% \end{macrocode} +% +% Now kpsans. Mostly from~\citep{kpfonts-otf}. +% \begin{macrocode} +\tl_if_eq:NnT \l_@@_math_tl {kpsans} +{ + \tl_set:Ne \l_@@_tmp_tl {\fp_to_tl:n {\l_@@_scale_tl * 1.1}} + \RequirePackage[symbols]{kpfonts-otf} + \setmathfont{KpMath-Sans.otf}[ + Scale=\l_@@_tmp_tl, + BoldFont=KpMath-SansBold.otf] + + \setmathfont{KpMath-Sans.otf}[ + range={cal,bfcal}, + RawFeature=+ss01, + Scale=\l_@@_tmp_tl, + BoldFont=KpMath-SansBold.otf] + +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% \end{implementation} +% +% \bibliography{arsenal} +% \bibliographystyle{plainnat} +% +% +%\PrintIndex +% \ No newline at end of file diff --git a/Master/texmf-dist/source/fonts/arsenal/arsenal.ins b/Master/texmf-dist/source/fonts/arsenal/arsenal.ins new file mode 100644 index 00000000000..1c172fa202d --- /dev/null +++ b/Master/texmf-dist/source/fonts/arsenal/arsenal.ins @@ -0,0 +1,12 @@ +\input l3docstrip.tex +\askforoverwritefalse +\generate +{% + \file{arsenal.sty}{\from{arsenal.dtx}{package}}% +} +\generate +{% + \file{sample-math-iwona.tex}{\from{sample-math.dtx}{iwona}}% + \file{sample-math-kpsans.tex}{\from{sample-math.dtx}{kpsans}}% +} +\endbatchfile diff --git a/Master/texmf-dist/source/fonts/arsenal/sample-math.dtx b/Master/texmf-dist/source/fonts/arsenal/sample-math.dtx new file mode 100644 index 00000000000..7e84d2c398c --- /dev/null +++ b/Master/texmf-dist/source/fonts/arsenal/sample-math.dtx @@ -0,0 +1,127 @@ +\documentclass{article} +%\usepackage[default, math=iwona]{arsenal} +%\usepackage[default, math=kpsans]{arsenal} +\usepackage{natbib, hyperref, amsmath} +\usepackage{microtype} +\setcounter{secnumdepth}{0} +%\usepackage{amssymb} +\usepackage[ukrainian, english]{babel} +\providecommand\pkg[1]{\textit{#1}} +\newcommand{\abc}{abcdefghijklmnopqrstuvwxyz} +\newcommand{\ABC}{ABCDEFGHIJKLMNOPQRSTUVWXYZ} +\newcommand{\alphabeta}{\alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa\varkappa\lambda\mu\nu\xi o\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi\chi\psi\omega} +\newcommand{\AlphaBeta}{\Gamma\Delta\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega} +%% Getting version and date +\makeatletter +\def\GetFileInfo#1{% + \def\filename{#1}% + \def\@tempb##1 ##2 ##3\relax##4\relax{% + \def\filedate{##1}% + \def\fileversion{##2}% + \def\fileinfo{##3}}% + \edef\@tempa{\csname ver@#1\endcsname}% + \expandafter\@tempb\@tempa\relax? ? \relax\relax} +\makeatother +\GetFileInfo{arsenal.sty} +\begin{document} +\selectlanguage{english} +\title{Sample of Arsenal font with +% Iwona +% KpSans +math} +\author{Boris Veytsman} +\date{Arsenal package version \fileversion, \filedate} +\maketitle + +\section{Introduction} +\label{sec:intro} + + +The samples below are based on the example from~\citep{Hartke06, + free-math-font-survey}. The math fonts are scaled based on lower +case characters. + + +\section{English} +\label{sec:english} + + + +\textbf{Theorem 1 (Residue Theorem).} +Let $f$ be analytic in the region $G$ except for the isolated singularities $a_1,a_2,\ldots,a_m$. If $\gamma$ is a closed rectifiable curve in $G$ which does not pass through any of the points $a_k$ and if $\gamma\approx 0$ in $G$ then +\[ +\frac{1}{2\pi i}\int_\gamma f = \sum_{k=1}^m n(\gamma;a_k) \text{Res}(f;a_k). +\] + +\textbf{Theorem 2 (Maximum Modulus).} +\emph{Let $G$ be a bounded open set in $\mathbb{C}$ and suppose that $f$ is a continuous function on $G^-$ which is analytic in $G$. Then} +\[ +\max\{|f(z)|:z\in G^-\}=\max \{|f(z)|:z\in \partial G \}. +\] +\vspace*{-1em} + + +\ABC \quad $\ABC$ + +\abc \quad $\abc$ \quad $01234567890$ + +$\AlphaBeta$ \quad $\alphabeta$ \quad $\ell\wp\aleph\infty\propto\emptyset\nabla\partial\mho\imath\jmath\hslash\eth$ + +$\mathrm{A} \Lambda \Delta \nabla \mathrm{B C D} \Sigma \mathrm{E F} \Gamma \mathrm{G H I J K L M N O} \Theta \Omega \mho \mathrm{P} \Phi \Pi \Xi \mathrm{Q R S T U V W X Y} \Upsilon \Psi \mathrm{Z} $ $ \quad 1234567890 $ + +%$\mathit{A \Lambda \Delta B C D E F \Gamma G H I J K L M N O \Theta \Omega P \Phi \Pi \Xi Q R S T U V W X Y \Upsilon \Psi Z }$ + +% don't allow overfull boxes +{\par \tolerance=0 \emergencystretch=100em $a\alpha b \beta c \partial d \delta e \epsilon \varepsilon f \zeta \xi g \gamma h \hbar \hslash \iota i \imath j \jmath k \kappa \varkappa l \ell \lambda m n \eta \theta \vartheta o \sigma \varsigma \phi \varphi \wp p \rho \varrho q r s t \tau \pi u \mu \nu v \upsilon w \omega \varpi x \chi y \psi z$ \linebreak[3] $\infty \propto \emptyset \varnothing \mathrm{d}\eth \backepsilon$\par} + +$\mathcal{\ABC} \quad \mathbb{\ABC}$ + +{\boldmath $\alpha + b = 27$} + +\section{Ukrainian} +\label{sec:ukr} + +\selectlanguage{ukrainian} + + + +\textbf{Теорема 1 (Теорема про залишки).} +Нехай $f$ аналітична в області $G$ за винятком ізольованих +сингулярностей $a_1,a_2,\ldots,a_m$. Якщо $\gamma$ є замкнута крива в $G$, що +може бути спрямована, яка не проходить скрізь жодну з точок +$a_k$, і якщо $\gamma\approx 0$ в $G$, то +\[ +\frac{1}{2\pi i}\int_\gamma f = \sum_{k=1}^m n(\gamma;a_k) \text{Res}(f;a_k). +\] + +\textbf{Теорема 2 (Максимальне значення).} +\emph{Нехай $G$ є обмежена множина в $\mathbb{C}$, і нехай $f$ є + безперервна функція на $G^-$, аналітична в $G$. Тоді} +\[ +\max\{|f(z)|:z\in G^-\}=\max \{|f(z)|:z\in \partial G \}. +\] +\vspace*{-1em} + + +\ABC \quad $\ABC$ + +\abc \quad $\abc$ \quad $01234567890$ + +$\AlphaBeta$ \quad $\alphabeta$ \quad $\ell\wp\aleph\infty\propto\emptyset\nabla\partial\mho\imath\jmath\hslash\eth$ + +$\mathrm{A} \Lambda \Delta \nabla \mathrm{B C D} \Sigma \mathrm{E F} \Gamma \mathrm{G H I J K L M N O} \Theta \Omega \mho \mathrm{P} \Phi \Pi \Xi \mathrm{Q R S T U V W X Y} \Upsilon \Psi \mathrm{Z} $ $ \quad 1234567890 $ + +%$\mathit{A \Lambda \Delta B C D E F \Gamma G H I J K L M N O \Theta \Omega P \Phi \Pi \Xi Q R S T U V W X Y \Upsilon \Psi Z }$ + +% don't allow overfull boxes +{\par \tolerance=0 \emergencystretch=100em $a\alpha b \beta c \partial d \delta e \epsilon \varepsilon f \zeta \xi g \gamma h \hbar \hslash \iota i \imath j \jmath k \kappa \varkappa l \ell \lambda m n \eta \theta \vartheta o \sigma \varsigma \phi \varphi \wp p \rho \varrho q r s t \tau \pi u \mu \nu v \upsilon w \omega \varpi x \chi y \psi z$ \linebreak[3] $\infty \propto \emptyset \varnothing \mathrm{d}\eth \backepsilon$\par} + +$\mathcal{\ABC} \quad \mathbb{\ABC}$ + +{\boldmath $\alpha + b = 27$} + +\selectlanguage{english} +\bibliography{arsenal} +\bibliographystyle{plainnat} + +\end{document} -- cgit v1.2.3