diff options
author | Karl Berry <karl@freefriends.org> | 2018-10-26 20:47:42 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-10-26 20:47:42 +0000 |
commit | 32bafe9feafc31ce153478becb5977a25f1b5b7d (patch) | |
tree | e22c641df4264bc99f8253ed8a88509ba3c9f2b0 | |
parent | f89b6714c88295981e892647033b2eab37d9ec10 (diff) |
firamath (26oct18)
git-svn-id: svn://tug.org/texlive/trunk@48995 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/fonts/firamath/README.TEXLIVE | 7 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/firamath/README.md | 30 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/firamath/firamath-demo.pdf | bin | 0 -> 15200 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/fonts/firamath/firamath-demo.tex | 50 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/firamath/firamath-non-unicode.txt | 527 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/firamath/firamath-specimen.pdf | bin | 0 -> 518887 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/fonts/firamath/firamath-specimen.tex | 583 | ||||
-rw-r--r-- | Master/texmf-dist/fonts/opentype/public/firamath/FiraMath-Regular.otf | bin | 171528 -> 187048 bytes | |||
-rwxr-xr-x | Master/tlpkg/libexec/ctan2tds | 1 |
9 files changed, 1174 insertions, 24 deletions
diff --git a/Master/texmf-dist/doc/fonts/firamath/README.TEXLIVE b/Master/texmf-dist/doc/fonts/firamath/README.TEXLIVE deleted file mode 100644 index 68b02d73278..00000000000 --- a/Master/texmf-dist/doc/fonts/firamath/README.TEXLIVE +++ /dev/null @@ -1,7 +0,0 @@ -The following files have been removed in the TeX Live installation of -the current package, typically due to duplication, lack of space, or -missing source code. You can find these files on CTAN at - http://mirror.ctan.org/fonts/firamath -If questions or concerns, email tex-live@tug.org. - - fira-math-specimen.pdf diff --git a/Master/texmf-dist/doc/fonts/firamath/README.md b/Master/texmf-dist/doc/fonts/firamath/README.md index 0f20daea3cd..f77d7f193d5 100644 --- a/Master/texmf-dist/doc/fonts/firamath/README.md +++ b/Master/texmf-dist/doc/fonts/firamath/README.md @@ -1,15 +1,15 @@ -# Fira Math +The Fira Math Font +================== Fira Math is a sans-serif font with Unicode math support. This font is a fork of - [FiraSans](https://github.com/bBoxType/FiraSans) - [FiraGO](https://github.com/bBoxType/FiraGO) -## Usage - -Fira Math can be used in LaTeX or Microsoft Word after installed on your OS. +Usage +----- -### LaTeX +Fira Math can be used via XeLaTeX or LuaLaTeX, with [`unicode-math`](https://ctan.org/pkg/unicode-math) package. % Compiled with XeLaTeX or LuaLaTeX \documentclass{article} @@ -19,23 +19,21 @@ Fira Math can be used in LaTeX or Microsoft Word after installed on your OS. \begin{document} \[ - \int_0^{\mathrm{\pi}} \sin x \, \mathrm{d}x = 2 + \int_0^{\mathrm{\pi}} \sin x \, \mathrm{d}x = 2 \] \end{document} -### Microsoft Word - -1. Create a new equation. Then select the little *additional settings* corner. - -1. In the menu, change the *Default font* to Fira Math. - -1. In order for the changes to take effect, you will have to create a new equation environment (the current one will not be changed). +You may try the [`firamath-otf`](https://ctan.org/pkg/firamath-otf) package as well. -1. To change the font in existing equations, select the equation text and select an OpenType math-enabled font (such as Fira Math). +Contributing +------------ -See <https://superuser.com/q/1114697>. +[Issues](https://github.com/firamath/firamath/issues) and +[pull requests](https://github.com/firamath/firamath/pulls) +are always welcome. -## License +License +------- This Font Software is licensed under the [SIL Open Font License](http://scripts.sil.org/OFL), Version 1.1. diff --git a/Master/texmf-dist/doc/fonts/firamath/firamath-demo.pdf b/Master/texmf-dist/doc/fonts/firamath/firamath-demo.pdf Binary files differnew file mode 100644 index 00000000000..5ed7ff3dbf9 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/firamath/firamath-demo.pdf diff --git a/Master/texmf-dist/doc/fonts/firamath/firamath-demo.tex b/Master/texmf-dist/doc/fonts/firamath/firamath-demo.tex new file mode 100644 index 00000000000..f9e6d896284 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/firamath/firamath-demo.tex @@ -0,0 +1,50 @@ +\documentclass[aspectratio=169]{beamer} +\usepackage{amsmath,unicode-math,physics,tensor} +\useoutertheme{metropolis} +\useinnertheme{metropolis} +\usecolortheme{metropolis} +\usefonttheme{professionalfonts} + +\setbeamerfont{title}{size=\Large, series=\bfseries} +\setbeamerfont{author}{size=\small} +\setbeamerfont{date}{size=\small} +\setbeamertemplate{footline}{\vspace*{0.3cm}} + +\unimathsetup{math-style=ISO, bold-style=ISO, mathrm=sym} + +\setsansfont{FiraGO}[BoldFont=* SemiBold, Numbers=Monospaced] +\setmathfont{Fira Math Regular} + +\title{Fira Math} +\subtitle{Sans-serif font with Unicode math support} +\author{Xiangdong Zeng} +\date{2018/10/26\quad v0.3.1} + +\begin{document} + +\maketitle + +\begin{frame}[noframenumbering]{General relativity} +\begin{itemize} + \item Covariant derivative: + \[ + \nabla \symbf{X} = \tensor{X}{^\alpha_{;\beta}} \pdv{x^\alpha} \otimes \dd{x^\beta} + = \qty(\tensor{X}{^\alpha_{,\beta}} + \Gamma^{\alpha}_{\beta\gamma} \, X^\gamma) \, + \pdv{x^\alpha} \otimes \dd{x^\beta} + \] + \item Einstein's field equations: + \[ G_{\mu\nu} \equiv R_{\mu\nu} - \frac{1}{2} R g_{\mu\nu} = \frac{8\pi G}{c^4} T_{\mu\nu} \] + %\item Conservation of energy and momentum: + % \[ \nabla_\beta T^{\alpha\beta} = \tensor{T}{^{\alpha\beta}_{;\,\beta}} = 0 \] + \item Schwarzschild metric: + \[ + c^2 \dd{\tau}^2 = \qty(1-\frac{r_{\mathrm{s}}}{r}) \, c^2 \dd{t}^2 + - \qty(1-\frac{r_{\mathrm{s}}}{r})^{-1} \dd{r}^2 + - r^2 \underbrace{\qty(\dd{\theta}^2 + \sin^2 \theta \dd{\varphi}^2)}_{\dd{\Omega}^2} + \] + \item Einstein--Hilbert action: + \[ S = \frac{1}{2\kappa} \int R \sqrt{-g} \dd[4]{x} \] +\end{itemize} +\end{frame} + +\end{document} diff --git a/Master/texmf-dist/doc/fonts/firamath/firamath-non-unicode.txt b/Master/texmf-dist/doc/fonts/firamath/firamath-non-unicode.txt new file mode 100644 index 00000000000..47d736fe1e1 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/firamath/firamath-non-unicode.txt @@ -0,0 +1,527 @@ +; Special +.notdef +; Math Script Style Alternates +uni2032.ssty1 +uni2033.ssty1 +uni2034.ssty1 +; Display Math Operators +uni220F.display +uni2210.display +uni2211.display +uni222B.display +uni222C.display +uni222D.display +uni2A0C.display +uni222E.display +uni222F.display +uni2230.display +; Large Delimiters +uni221A.size1 +uni221A.size2 +uni221A.size3 +uni221A.size4 +uni221A.size5 +uni221A.size6 +uni221A.size7 +uni221A.size8 +uni221A.size9 +uni221A.size10 +uni221A.size11 +uni221A.size12 +uni221A.size13 +uni221A.size14 +uni221A.size15 +uni221B.size1 +uni221B.size2 +uni221B.size3 +uni221B.size4 +uni221B.size5 +uni221B.size6 +uni221B.size7 +uni221B.size8 +uni221B.size9 +uni221B.size10 +uni221B.size11 +uni221B.size12 +uni221B.size13 +uni221B.size14 +uni221B.size15 +uni221C.size1 +uni221C.size2 +uni221C.size3 +uni221C.size4 +uni221C.size5 +uni221C.size6 +uni221C.size7 +uni221C.size8 +uni221C.size9 +uni221C.size10 +uni221C.size11 +uni221C.size12 +uni221C.size13 +uni221C.size14 +uni221C.size15 +uni0028.size1 +uni0028.size2 +uni0028.size3 +uni0028.size4 +uni0028.size5 +uni0028.size6 +uni0028.size7 +uni0028.size8 +uni0028.size9 +uni0028.size10 +uni0028.size11 +uni0028.size12 +uni0028.size13 +uni0028.size14 +uni0028.size15 +uni0029.size1 +uni0029.size2 +uni0029.size3 +uni0029.size4 +uni0029.size5 +uni0029.size6 +uni0029.size7 +uni0029.size8 +uni0029.size9 +uni0029.size10 +uni0029.size11 +uni0029.size12 +uni0029.size13 +uni0029.size14 +uni0029.size15 +uni005B.size1 +uni005B.size2 +uni005B.size3 +uni005B.size4 +uni005B.size5 +uni005B.size6 +uni005B.size7 +uni005B.size8 +uni005B.size9 +uni005B.size10 +uni005B.size11 +uni005B.size12 +uni005B.size13 +uni005B.size14 +uni005B.size15 +uni005D.size1 +uni005D.size2 +uni005D.size3 +uni005D.size4 +uni005D.size5 +uni005D.size6 +uni005D.size7 +uni005D.size8 +uni005D.size9 +uni005D.size10 +uni005D.size11 +uni005D.size12 +uni005D.size13 +uni005D.size14 +uni005D.size15 +uni007B.size1 +uni007B.size2 +uni007B.size3 +uni007B.size4 +uni007B.size5 +uni007B.size6 +uni007B.size7 +uni007B.size8 +uni007B.size9 +uni007B.size10 +uni007B.size11 +uni007B.size12 +uni007B.size13 +uni007B.size14 +uni007B.size15 +uni007D.size1 +uni007D.size2 +uni007D.size3 +uni007D.size4 +uni007D.size5 +uni007D.size6 +uni007D.size7 +uni007D.size8 +uni007D.size9 +uni007D.size10 +uni007D.size11 +uni007D.size12 +uni007D.size13 +uni007D.size14 +uni007D.size15 +uni27EE.size1 +uni27EE.size2 +uni27EE.size3 +uni27EE.size4 +uni27EE.size5 +uni27EE.size6 +uni27EE.size7 +uni27EE.size8 +uni27EE.size9 +uni27EE.size10 +uni27EE.size11 +uni27EE.size12 +uni27EE.size13 +uni27EE.size14 +uni27EE.size15 +uni27EF.size1 +uni27EF.size2 +uni27EF.size3 +uni27EF.size4 +uni27EF.size5 +uni27EF.size6 +uni27EF.size7 +uni27EF.size8 +uni27EF.size9 +uni27EF.size10 +uni27EF.size11 +uni27EF.size12 +uni27EF.size13 +uni27EF.size14 +uni27EF.size15 +uni27E8.size1 +uni27E8.size2 +uni27E8.size3 +uni27E8.size4 +uni27E8.size5 +uni27E8.size6 +uni27E8.size7 +uni27E8.size8 +uni27E8.size9 +uni27E8.size10 +uni27E8.size11 +uni27E8.size12 +uni27E8.size13 +uni27E8.size14 +uni27E8.size15 +uni27E9.size1 +uni27E9.size2 +uni27E9.size3 +uni27E9.size4 +uni27E9.size5 +uni27E9.size6 +uni27E9.size7 +uni27E9.size8 +uni27E9.size9 +uni27E9.size10 +uni27E9.size11 +uni27E9.size12 +uni27E9.size13 +uni27E9.size14 +uni27E9.size15 +uni27EA.size1 +uni27EA.size2 +uni27EA.size3 +uni27EA.size4 +uni27EA.size5 +uni27EA.size6 +uni27EA.size7 +uni27EA.size8 +uni27EA.size9 +uni27EA.size10 +uni27EA.size11 +uni27EA.size12 +uni27EA.size13 +uni27EA.size14 +uni27EA.size15 +uni27EB.size1 +uni27EB.size2 +uni27EB.size3 +uni27EB.size4 +uni27EB.size5 +uni27EB.size6 +uni27EB.size7 +uni27EB.size8 +uni27EB.size9 +uni27EB.size10 +uni27EB.size11 +uni27EB.size12 +uni27EB.size13 +uni27EB.size14 +uni27EB.size15 +uni007C.size1 +uni007C.size2 +uni007C.size3 +uni007C.size4 +uni007C.size5 +uni007C.size6 +uni007C.size7 +uni007C.size8 +uni007C.size9 +uni007C.size10 +uni007C.size11 +uni007C.size12 +uni007C.size13 +uni007C.size14 +uni007C.size15 +uni2016.size1 +uni2016.size2 +uni2016.size3 +uni2016.size4 +uni2016.size5 +uni2016.size6 +uni2016.size7 +uni2016.size8 +uni2016.size9 +uni2016.size10 +uni2016.size11 +uni2016.size12 +uni2016.size13 +uni2016.size14 +uni2016.size15 +uni2980.size1 +uni2980.size2 +uni2980.size3 +uni2980.size4 +uni2980.size5 +uni2980.size6 +uni2980.size7 +uni2980.size8 +uni2980.size9 +uni2980.size10 +uni2980.size11 +uni2980.size12 +uni2980.size13 +uni2980.size14 +uni2980.size15 +uni2308.size1 +uni2308.size2 +uni2308.size3 +uni2308.size4 +uni2308.size5 +uni2308.size6 +uni2308.size7 +uni2308.size8 +uni2308.size9 +uni2308.size10 +uni2308.size11 +uni2308.size12 +uni2308.size13 +uni2308.size14 +uni2308.size15 +uni2309.size1 +uni2309.size2 +uni2309.size3 +uni2309.size4 +uni2309.size5 +uni2309.size6 +uni2309.size7 +uni2309.size8 +uni2309.size9 +uni2309.size10 +uni2309.size11 +uni2309.size12 +uni2309.size13 +uni2309.size14 +uni2309.size15 +uni230A.size1 +uni230A.size2 +uni230A.size3 +uni230A.size4 +uni230A.size5 +uni230A.size6 +uni230A.size7 +uni230A.size8 +uni230A.size9 +uni230A.size10 +uni230A.size11 +uni230A.size12 +uni230A.size13 +uni230A.size14 +uni230A.size15 +uni230B.size1 +uni230B.size2 +uni230B.size3 +uni230B.size4 +uni230B.size5 +uni230B.size6 +uni230B.size7 +uni230B.size8 +uni230B.size9 +uni230B.size10 +uni230B.size11 +uni230B.size12 +uni230B.size13 +uni230B.size14 +uni230B.size15 +; Extensible Delimiters +uni221A.top +uni221A.ext +uni221A.bot +uni221B.top +uni221B.ext +uni221B.bot +uni221C.top +uni221C.ext +uni221C.bot +uni007C.ext +uni2016.ext +uni2980.ext +uni2308.top +uni2308.ext +uni2309.top +uni2309.ext +uni230A.ext +uni230A.bot +uni230B.ext +uni230B.bot +uni27EE.top +uni27EE.ext +uni27EE.bot +uni27EF.top +uni27EF.ext +uni27EF.bot +; Large Over/Under Symbols +uni23DC.size1 +uni23DC.size2 +uni23DC.size3 +uni23DC.size4 +uni23DC.size5 +uni23DC.size6 +uni23DC.size7 +uni23DC.size8 +uni23DC.size9 +uni23DC.size10 +uni23DC.size11 +uni23DC.size12 +uni23DC.size13 +uni23DC.size14 +uni23DC.size15 +uni23DD.size1 +uni23DD.size2 +uni23DD.size3 +uni23DD.size4 +uni23DD.size5 +uni23DD.size6 +uni23DD.size7 +uni23DD.size8 +uni23DD.size9 +uni23DD.size10 +uni23DD.size11 +uni23DD.size12 +uni23DD.size13 +uni23DD.size14 +uni23DD.size15 +uni23B4.size1 +uni23B4.size2 +uni23B4.size3 +uni23B4.size4 +uni23B4.size5 +uni23B4.size6 +uni23B4.size7 +uni23B4.size8 +uni23B4.size9 +uni23B4.size10 +uni23B4.size11 +uni23B4.size12 +uni23B4.size13 +uni23B4.size14 +uni23B4.size15 +uni23B5.size1 +uni23B5.size2 +uni23B5.size3 +uni23B5.size4 +uni23B5.size5 +uni23B5.size6 +uni23B5.size7 +uni23B5.size8 +uni23B5.size9 +uni23B5.size10 +uni23B5.size11 +uni23B5.size12 +uni23B5.size13 +uni23B5.size14 +uni23B5.size15 +uni23DE.size1 +uni23DE.size2 +uni23DE.size3 +uni23DE.size4 +uni23DE.size5 +uni23DE.size6 +uni23DE.size7 +uni23DE.size8 +uni23DE.size9 +uni23DE.size10 +uni23DE.size11 +uni23DE.size12 +uni23DE.size13 +uni23DE.size14 +uni23DE.size15 +uni23DF.size1 +uni23DF.size2 +uni23DF.size3 +uni23DF.size4 +uni23DF.size5 +uni23DF.size6 +uni23DF.size7 +uni23DF.size8 +uni23DF.size9 +uni23DF.size10 +uni23DF.size11 +uni23DF.size12 +uni23DF.size13 +uni23DF.size14 +uni23DF.size15 +; Extensible Over/Under Symbols +uni23DC.left +uni23DC.ext +uni23DC.right +uni23DD.left +uni23DD.ext +uni23DD.right +uni23B4.left +uni23B4.ext +uni23B4.right +uni23B5.left +uni23B5.ext +uni23B5.right +uni23DE.left +uni23DE.ext +uni23DE.mid +uni23DE.right +uni23DF.left +uni23DF.ext +uni23DF.mid +uni23DF.right +; Proportional Figures +uni0030.pnum +uni0031.pnum +uni0032.pnum +uni0033.pnum +uni0034.pnum +uni0035.pnum +uni0036.pnum +uni0037.pnum +uni0038.pnum +uni0039.pnum +u1D7CE.pnum +u1D7CF.pnum +u1D7D0.pnum +u1D7D1.pnum +u1D7D2.pnum +u1D7D3.pnum +u1D7D4.pnum +u1D7D5.pnum +u1D7D6.pnum +u1D7D7.pnum +; Stylistic Set 1: Upright Integrals +uni222B.up +uni222C.up +uni222D.up +uni2A0C.up +uni222E.up +uni222F.up +uni2230.up +uni222B.display.up +uni222C.display.up +uni222D.display.up +uni2A0C.display.up +uni222E.display.up +uni222F.display.up +uni2230.display.up +; Stylistic Set 2: Planck Constant with Bar +uni210F.ss02 +; Stylistic Set 3: Complement Alternates +uni2201.ss03 diff --git a/Master/texmf-dist/doc/fonts/firamath/firamath-specimen.pdf b/Master/texmf-dist/doc/fonts/firamath/firamath-specimen.pdf Binary files differnew file mode 100644 index 00000000000..8c65142fa9e --- /dev/null +++ b/Master/texmf-dist/doc/fonts/firamath/firamath-specimen.pdf diff --git a/Master/texmf-dist/doc/fonts/firamath/firamath-specimen.tex b/Master/texmf-dist/doc/fonts/firamath/firamath-specimen.tex new file mode 100644 index 00000000000..a4e67733d02 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/firamath/firamath-specimen.tex @@ -0,0 +1,583 @@ +\documentclass{article} + +\PassOptionsToPackage{log-declarations=false}{xparse} +\PassOptionsToPackage{no-math}{fontspec} +\PassOptionsToPackage{table}{xcolor} +\PassOptionsToPackage{titles}{tocloft} +%\PassOptionsToPackage{showframe}{geometry} +\usepackage{% + expl3,xparse, + ctexheading,geometry,fancyhdr,tocloft,fontspec,xcolor,hologo, + array,longtable,multirow,hhline, + hyperref,zref-totpages} + +\makeatletter\ExplSyntaxOn + +\clist_const:Nn \c__xfonttable_unicode_reserved_clist + { + % Greek and Coptic + 378, 379, 380, 381, 382, 383, 38B, 38D, 3A2, + % General Punctuation + 2065, + % Superscripts and Subscripts + 2072, 2073, 208F, 209D, 209E, 209F, + % Currency Symbols + 20C0, 20C1, 20C2, 20C3, 20C4, 20C5, 20C6, 20C7, 20C8, 20C9, + 20CA, 20CB, 20CC, 20CD, 20CE, 20CF, + % Combining Diacritical Marks for Symbols + 20F1, 20F2, 20F3, 20F4, 20F5, 20F6, 20F7, 20F8, 20F9, 20FA, + 20FB, 20FC, 20FD, 20FE, 20FF, + % Number Forms + 218C, 218D, 218E, 218F, + % Control Pictures + 2427, 2428, 2429, 242A, 242B, 242C, 242D, 242E, 242F, 2430, + 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 243A, + 243B, 243C, 243D, 243E, 243F, + % Optical Character Recognition + 244B, 244C, 244D, 244E, 244F, 2450, 2451, 2452, 2453, 2454, + 2455, 2456, 2457, 2458, 2459, 245A, 245B, 245C, 245D, 245E, + 245F, + % Miscellaneous Symbols and Arrows + 2B74, 2B75, 2B96, 2B97, 2BC9, 2BFF, + % Alphabetic Presentation Forms + FB07, FB08, FB09, FB0A, FB0B, FB0C, FB0D, FB0E, FB0F, FB10, + FB11, FB12, FB18, FB19, FB1A, FB1B, FB1C, FB37, FB3D, FB3F, + FB42, FB45, + % Arabic Presentation Forms-B + FE75, FEFD, FEFE, + % Mathematical Alphanumeric Symbols + 1D455, 1D49D, 1D4A0, 1D4A1, 1D4A3, 1D4A4, 1D4A7, 1D4A8, 1D4AD, 1D4BA, + 1D4BC, 1D4C4, 1D506, 1D50B, 1D50C, 1D515, 1D51D, 1D53A, 1D53F, 1D545, + 1D547, 1D548, 1D549, 1D551, 1D6A6, 1D6A7, 1D7CC, 1D7CD + } +\clist_const:Nn \c__xfonttable_unicode_control_clist + { + % C0 Controls and Basic Latin + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, + 7F, + % C1 Controls and Latin-1 Supplement + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 8A, 8B, 8C, 8D, 8E, 8F, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 9A, 9B, 9C, 9D, 9E, 9F + } + +% #1 = symbol index +\cs_new_protected:Npn \xfonttable_symbol:n #1 + { \tex_char:D \int_eval:n {#1} \scan_stop: } +\prg_new_protected_conditional:Npnn \xfonttable_if_char_exist:n #1 { T, F, TF } + { + \etex_iffontchar:D \tex_font:D \int_eval:n {#1} \scan_stop: + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +% #1 = glyph name +\sys_if_engine_xetex:TF + { + \cs_new_protected:Npn \xfonttable_glyph_from_name:n #1 + { \xetex_glyph:D \xetex_glyphindex:D "#1" \scan_stop: } + } + { + \sys_if_engine_luatex:TF + { + \cs_new_protected:Npn \xfonttable_glyph_from_name:n #1 + { \tex_char:D \luatex_glyph_index:w #1 \scan_stop: } + \cs_new_protected:Npn \luatex_glyph_index:w + { + \lua_now:n + { tex.sprint(0, font.getfont(font.current()).resources.unicodes[token.scan_string()]) } + } + } + { \BOOM } + } + +% Centering with fixed width +\newcolumntype {C} [1] { > { \centering \arraybackslash } m {#1} } +% Empty array rule +\newcolumntype {E} { ! { \skip_horizontal:N \arrayrulewidth } } + +\definecolor { encoding @ bg } { HTML } { BDBDBD } +\definecolor { reserved @ bg } { HTML } { EA4335 } +\definecolor { control @ bg } { HTML } { 4285F4 } +\definecolor { nochar @ text } { HTML } { E0E0E0 } + +\cs_set:Npn \NumberStyle { \ttfamily \footnotesize } +\cs_set:Npn \GlyphStyle { \SymbolFont \Large } +\cs_set:Npn \EncodingStyle + { \ttfamily \fontsize {4} {5} \selectfont \cellcolor { encoding@bg } } + +\cs_set:Npn \GlyphStrut { \xfonttable_set_arstrut:nn { 20 pt } { 10 pt } } +\cs_set:Npn \NonUnicodeGlyphStrut { \xfonttable_set_arstrut:nn { 32 pt } { 20 pt } } +\cs_set:Npn \NonUnicodeHighGlyphStrut { \xfonttable_set_arstrut:nn { 64 pt } { 40 pt } } +\cs_set:Npn \EncodingStrut { \xfonttable_set_arstrut:nn { 4.5 pt } { 1 pt } } + +\dim_const:Nn \c__xfonttable_cell_wd_dim { 30 pt } +\dim_const:Nn \c__xfonttable_column_sep_dim { 0 pt } +\dim_const:Nn \c__xfonttable_row_number_ht_dim { 20 pt } +\dim_const:Nn \c__xfonttable_row_number_sep_dim { 6 pt } +\dim_const:Nn \c__xfonttable_nuni_wd_dim { 87 pt } + +% The total number of glyphs. +\newcounter { glyph } +\setcounter { glyph } { -1 } + +% The main function. +\NewDocumentCommand \fonttable { s m m } + { + \IfBooleanTF {#1} + { \xfonttable_non_unicode:nn {#2} {#3} } + { \xfonttable_unicode:nn {#2} {#3} } + \clearpage + } + +% #1 = section name +% #2 = begin/end encoding +\cs_new_protected:Npn \xfonttable_unicode:nn #1#2 + { + \tl_set:Nn \l__xfonttable_glyph_count_tl + { \ref* { count: glyph @ #1 } / \ref* { count: codepoint @ #1 } } + \section { #1 ~ (\tl_use:N \l__xfonttable_glyph_count_tl) } + \cs_set_eq:NN \xfonttable_left_foot: \xfonttable_left_foot_unicode: + \xfonttable_parse_encoding:n {#2} + \int_gzero:N \g__xfonttable_glyph_int + \int_gzero:N \g__xfonttable_code_point_int + \xfonttable_make_table: + \newcounter { glyph @ #1 } + \newcounter { codepoint @ #1 } + \int_set:cn { c @ glyph @ #1 } { \g__xfonttable_glyph_int - 1 } + \int_set:cn { c @ codepoint @ #1 } { \g__xfonttable_code_point_int - 1 } + \refstepcounter { glyph @ #1 } \label { count: glyph @ #1 } + \refstepcounter { codepoint @ #1 } \label { count: codepoint @ #1 } + } +\tl_new:N \l__xfonttable_glyph_count_tl +\int_new:N \g__xfonttable_glyph_int +\int_new:N \g__xfonttable_code_point_int + +\cs_new_protected:Npn \xfonttable_left_foot_unicode: + { + \mode_leave_vertical: + \footnotesize + \xfonttable_color_box:nn { reserved @ bg } Reserved~ Code~ Points, \quad + \xfonttable_color_box:nn { control @ bg } Control~ Codes. + } +\cs_new_protected:Npn \xfonttable_color_box:nn #1#2 + { + \group_begin: + \color {#1} \rule [ -2 pt ] { 10 pt } { 10 pt } + \group_end: + \ = \ #2 + } + +% #1 = `begin` - `end` +\cs_new_protected:Npn \xfonttable_parse_encoding:n #1 + { + \seq_set_split:Nnn \l_tmpa_seq { - } {#1} + \int_set:Nn \l__xfonttable_begin_int + { \seq_item:Nn \l_tmpa_seq { 1 } } + \int_set:Nn \l__xfonttable_end_int + { \seq_item:Nn \l_tmpa_seq { 2 } } + } +\int_new:N \l__xfonttable_begin_int +\int_new:N \l__xfonttable_end_int + +\cs_new_protected:Npn \xfonttable_make_table: + { + \longtable { r | * {16} { C { \c__xfonttable_cell_wd_dim } | } } + \xfonttable_long_table_head: + \xfonttable_multi_row:nn + { \int_use:N \l__xfonttable_begin_int } + { \int_use:N \l__xfonttable_end_int } + \endlongtable + } +\dim_set_eq:NN \tabcolsep \c__xfonttable_column_sep_dim + +% These functions must be expandable: +% \xfonttable_long_table_head:, \xfonttable_first_row:, +% \xfonttable_multi_row:nn, \xfonttable_row:n, \__xfonttable_div_sixteen:n, +% \xfonttable_hline:, \xfonttable_set_arstrut:nn, \xfonttable_restore_arstrut:, etc., +% so that `noalign` can work properly. +% Hence we use `\cs_new:Npn` and `\int_step_function:nnnN` here. + +\cs_new:Npn \xfonttable_long_table_head: + { + % It's very hackable here! + % The dimension is measured by hand. Not universal at all. + \xfonttable_set_arstrut:nn { 0 pt } { 0 pt } + \multicolumn { 17 } { c } { \rule { 0 pt } { 1.29 cm } } \\ + \xfonttable_first_row: + \endhead + \xfonttable_first_row: + \endfirsthead + } + +\cs_new:Npn \xfonttable_first_row: + { + \multicolumn {17} { r } + { + \tabular + { + % Skip row number + r | + * {15} { C { \c__xfonttable_cell_wd_dim } E } + C { \c__xfonttable_cell_wd_dim } | + } + % I don't know why there are so many `#`. + \int_step_inline:nnnn { 0 } { 1 } { 15 } + { & \xfonttable_first_row_cell:n {####1} } + \endtabular + } + \\* + \xfonttable_hline: + } +\cs_new_protected:Npn \xfonttable_first_row_cell:n #1 + { \NumberStyle \int_to_Hex:n {#1} } + +\cs_new:Npn \xfonttable_multi_row:nn #1#2 + { + \int_step_function:nnnN + { \__xfonttable_div_sixteen:n {#1} * 16 } + { 16 } + { (\__xfonttable_div_sixteen:n {#2} + 1) * 16 - 1 } + \xfonttable_row:n + } +\cs_new:Npn \__xfonttable_div_sixteen:n #1 + { \int_div_truncate:nn {#1} { 16 } } + +\cs_new:Npn \xfonttable_row:n #1 + { + % Glyph row + \GlyphStrut + % Row number + \multirow { 2 } * { \xfonttable_row_nummber:n {#1} } + \int_step_inline:nnnn {#1} { 1 } { #1 + 15 } + { & \xfonttable_glyph:n {##1} } + \\* + \xfonttable_restore_arstrut: + % Encoding row + \xfonttable_hline: + \EncodingStrut + \int_step_inline:nnnn {#1} { 1 } { #1 + 15 } + { & \xfonttable_encoding:n {##1} } + \\ + \xfonttable_hline: + } + +% To skip the first column (i.e. row index). +% LaTeX3 syntax makes `~` to equal space, so we need to change its catcode temporarily. +\group_begin: + \char_set_catcode_active:N \~ + \cs_new:Npn \xfonttable_hline: + { \hhline { ~ | *{16}{-} } } +\group_end: + +\cs_new:Npn \xfonttable_set_arstrut:nn #1#2 + { + \tex_noalign:D + { + \group_begin: + % Store the old strutbox + \box_gset_eq:NN \l__xfonttable_old_arstrut_box \@arstrutbox + % Change the dimensions of \@arstrutbox + \hbox_set_to_wd:Nnn \l_tmpa_box { \c_zero_dim } { } + \box_set_ht:Nn \l_tmpa_box {#1} + \box_set_dp:Nn \l_tmpa_box {#2} + \hbox_gset:Nn \@arstrutbox { \box_use:N \l_tmpa_box } + \group_end: + } + } +\cs_new:Npn \xfonttable_restore_arstrut: + { + \tex_noalign:D + { \box_gset_eq:NN \@arstrutbox \l__xfonttable_old_arstrut_box } + } +\box_new:N \l__xfonttable_old_arstrut_box + +\cs_new_protected:Npn \xfonttable_row_nummber:n #1 + { + \raisebox { \dim_use:N \c__xfonttable_row_number_ht_dim } + { + \NumberStyle + \int_set:Nn \l_tmpa_int { #1 / 16 } + \int_compare:nNnTF { \l_tmpa_int } < { "10 } + { 00 } + { + \int_compare:nNnT { \l_tmpa_int } < { "100 } + { 0 } + } + \int_to_Hex:n { \l_tmpa_int } + \skip_horizontal:N \c__xfonttable_row_number_sep_dim + } + } + +\cs_new_protected:Npn \xfonttable_glyph:n #1 + { + \tl_set:Nx \l_tmpa_tl { \int_to_Hex:n {#1} } + \clist_if_in:NVTF \c__xfonttable_unicode_reserved_clist \l_tmpa_tl + { \cellcolor { reserved@bg } } + { + \clist_if_in:NVTF \c__xfonttable_unicode_control_clist \l_tmpa_tl + { \cellcolor { control@bg } } + { + % It must be outside `\xfonttable_if_char_exist` + \GlyphStyle + \xfonttable_if_char_exist:nTF {#1} + { + \xfonttable_symbol:n {#1} + \refstepcounter { glyph } + \int_gincr:N \g__xfonttable_glyph_int + } + { + \normalfont + \int_compare:nNnTF {#1} < { "10000 } + { \BMPFallbackFont } { \SMPFallbackFont } + \textcolor { nochar@text } { \xfonttable_symbol:n {#1} } + } + \int_gincr:N \g__xfonttable_code_point_int + } + } + } + +\cs_new_protected:Npn \xfonttable_encoding:n #1 + { + \group_begin: + \EncodingStyle + \int_compare:nNnTF {#1} < { "10 } + { 000 } + { + \int_compare:nNnTF {#1} < { "100 } + { 00 } + { + \int_compare:nNnT {#1} < { "1000 } + { 0 } + } + } + \int_to_Hex:n {#1} + \group_end: + } + +% #1 = section name +% #2 = non-unicode data file +\cs_new_protected:Npn \xfonttable_non_unicode:nn #1#2 + { + \tl_set:Nn \l__xfonttable_glyph_count_tl { \ref* { count: glyph @ nuni } } + \section { #1 ~ (\tl_use:N \l__xfonttable_glyph_count_tl) } + \cs_set_eq:NN \xfonttable_left_foot: \prg_do_nothing: + \int_gzero:N \g__xfonttable_nuni_glyph_int + \xfonttable_nuni_import:n {#2} + \xfonttable_nuni_parse: + \xfonttable_nuni_print: + \newcounter { glyph @ nuni } + \int_set:cn { c @ glyph @ nuni } { \g__xfonttable_nuni_glyph_int - 1 } + \refstepcounter { glyph @ nuni } \label { count: glyph @ nuni } + \refstepcounter { glyph } \label { count: glyph } + } +\int_new:N \g__xfonttable_nuni_glyph_int + +% #1 = file name (non-unicode.txt) +\cs_new_protected:Npn \xfonttable_nuni_import:n #1 + { + \ior_open:Nn \g__xfonttable_nuni_ior {#1} + \ior_map_inline:Nn \g__xfonttable_nuni_ior + { \seq_put_right:Nn \l__xfonttable_nuni_data_seq {##1} } + \ior_close:N \g__xfonttable_nuni_ior + } +\ior_new:N \g__xfonttable_nuni_ior +\seq_new:N \l__xfonttable_nuni_data_seq + +% `;` indicates a comment, for the glyph class. +% Each entry (glyph name) after the comment should be put into the class. +\cs_new_protected:Npn \xfonttable_nuni_parse: + { + \bool_until_do:nn { \seq_if_empty_p:N \l__xfonttable_nuni_data_seq } + { + \seq_pop_left:NN \l__xfonttable_nuni_data_seq \l_tmpa_tl + \tl_if_in:NnTF \l_tmpa_tl { ; } + { + \tl_remove_once:Nn \l_tmpa_tl { ; } + \tl_trim_spaces:N \l_tmpa_tl + \seq_put_right:NV \l__xfonttable_nuni_class_seq \l_tmpa_tl + \clist_if_empty:NF \l_tmpa_clist + { + \seq_put_right:NV \l__xfonttable_nuni_name_seq \l_tmpa_clist + \clist_clear:N \l_tmpa_clist + } + } + { \clist_put_right:NV \l_tmpa_clist \l_tmpa_tl } + } + % The last class + \clist_if_empty:NF \l_tmpa_clist + { \seq_put_right:NV \l__xfonttable_nuni_name_seq \l_tmpa_clist } + } +\seq_new:N \l__xfonttable_nuni_class_seq +\seq_new:N \l__xfonttable_nuni_name_seq + +\cs_new_protected:Npn \xfonttable_nuni_print: + { + \bool_until_do:nn { \seq_if_empty_p:N \l__xfonttable_nuni_class_seq } + { + \seq_pop_left:NN \l__xfonttable_nuni_class_seq \l_tmpa_tl + \seq_pop_left:NN \l__xfonttable_nuni_name_seq \l_tmpa_clist + \xfonttable_nuni_print_class:VV \l_tmpa_tl \l_tmpa_clist + } + } + +% #1 = class +% #2 = clist of glyph names +\cs_new_protected:Npn \xfonttable_nuni_print_class:nn #1#2 + { + \subsection { #1 ~ (\clist_count:n {#2}) } + \clist_map_inline:nn {#2} + { + \xfonttable_nuni_cell:n {##1} + \refstepcounter { glyph } + \int_gincr:N \g__xfonttable_nuni_glyph_int + } + } +\cs_generate_variant:Nn \xfonttable_nuni_print_class:nn { VV } + +\cs_new_protected:Npn \xfonttable_nuni_cell:n #1 + { + \tabular { | C { \c__xfonttable_nuni_wd_dim } | } + % Glyph + \hline + +% \hbox_set:Nn \l_tmpa_box { \GlyphStyle \xfonttable_glyph_from_name:n {#1} } +% \box_ht:N \l_tmpa_box +% \dim_compare:nNnTF + + \NonUnicodeGlyphStrut \GlyphStyle + + +% \hbox_set:Nn \l_tmpa_box { \xfonttable_glyph_from_name:n {#1} } +% \box_show:N \l_tmpa_box +% \dim_show:n { \box_dp:N \l_tmpa_box } +% \dim_show:n { \box_ht:N \l_tmpa_box } +% \dim_show:n { \box_wd:N \l_tmpa_box } + + + \xfonttable_glyph_from_name:n {#1} + \\ + \xfonttable_restore_arstrut: + % Encoding (glyph name) + \hline + \EncodingStrut \EncodingStyle + #1 + \\ + \xfonttable_restore_arstrut: + \hline + \endtabular + % A space allowing line break + \ + } + +% Header and footer. +\fancyhf { } +\fancyhead [ R ] { \thepage } +\fancyfoot [ L ] + { + \footnotesize + \int_compare:nNnTF { \int_use:c { c@page } } = { \ztotpages } + { \xfonttable_left_foot_last_page: } { \xfonttable_left_foot: } + } +\fancyfoot [ R ] + { + \footnotesize \itshape + Copyright~ \copyright{}~ 2018~ by~ Xiangdong~ Zeng + } +% `\headrulewidth` is not a dim variable. +\cs_set:Npn \headrulewidth { 0 pt } +\cs_new_protected:Npn \xfonttable_left_foot_last_page: + { + \itshape + Other~ fonts~ used~ in~ this~ document:~ + FiraGO,~ Fira~ Code,~ GNU~ Unifont. \\ + Colors~ are~ inspired~ by~ Google~ Material~ Design. + } + +\ExplSyntaxOff\makeatother + +\geometry{a4paper, hmargin=1cm, vmargin=2.5cm} +\ctexset{section/format=\Large\bfseries\centering} +\hypersetup{bookmarksnumbered=true, colorlinks=true, + linkcolor=[HTML]34A853, urlcolor=[HTML]E91E63} + +\setmainfont{FiraGO}[BoldFont=* SemiBold, Numbers=Monospaced] +\setmonofont{Fira Code}[UprightFont=* Light, BoldFont=* Regular] + +\newfontface\SymbolFont{Fira Math Regular} +\newfontface\BMPFallbackFont{Unifont} +\newfontface\SMPFallbackFont{Unifont Upper} + +\title{\bfseries\huge Fira Math\\ + \itshape\Large Sans-serif font with Unicode math support} +\author{Xiangdong Zeng} +\date{2018/10/26\quad v0.3.1} + +\begin{document} + +\newgeometry{hmargin=1.5in, vmargin=1.0in} + +\maketitle + +\begin{abstract} + \href{https://github.com/firamath/firamath}{Fira Math} is a sans-serif font + with Unicode math support. The design of this font is based on + \href{https://github.com/mozilla/Fira}{Fira Sans} and + \href{https://bboxtype.com/typefaces/FiraGO}{FiraGO}. Fira Math is distributed + in OpenType format, and can be used with + \href{https://www.ctan.org/pkg/unicode-math}{unicode-math} package under + \hologo{XeTeX} or \hologo{LuaTeX}. There are \ref*{count:glyph} glyphs in + Fira Math at present. + + Fira Math is licensed under the + \href{http://scripts.sil.org/OFL}{SIL Open Font License}, Version 1.1. +\end{abstract} + +\setlength\cftbeforesubsecskip{1ex} +\tableofcontents + +\clearpage + +\restoregeometry +\pagestyle{fancy} + +\fonttable{C0 Controls and Basic Latin}{"0-"7F} +\fonttable{C1 Controls and Latin-1 Supplement}{"80-"FF} +\fonttable{Latin Extended-A}{"100-"17F} +\fonttable{Latin Extended-B}{"180-"24F} +%\fonttable{IPA Extensions}{"250-"2AF} +%\fonttable{Spacing Modifier Letters}{"2B0-"2FF} +\fonttable{Combining Diacritical Marks}{"300-"36F} +\fonttable{Greek and Coptic}{"370-"3FF} +\fonttable{General Punctuation}{"2000-"206F} +%\fonttable{Superscripts and Subscripts}{"2070-"209F} +\fonttable{Currency Symbols}{"20A0-"20CF} +\fonttable{Combining Diacritical Marks for Symbols}{"20D0-"20FF} +\fonttable{Letterlike Symbols}{"2100-"214F} +\fonttable{Number Forms}{"2150-"218F} +\fonttable{Arrows}{"2190-"21FF} +\fonttable{Mathematical Operators}{"2200-"22FF} +\fonttable{Miscellaneous Technical}{"2300-"23FF} +%\fonttable{Control Pictures}{"2400-"243F} +%\fonttable{Optical Character Recognition}{"2440-"245F} +%\fonttable{Enclosed Alphanumerics}{"2460-"24FF} +%\fonttable{Box Drawing}{"2500-"257F} +\fonttable{Block Elements}{"2580-"259F} +\fonttable{Geometric Shapes}{"25A0-"25FF} +\fonttable{Miscellaneous Symbols}{"2600-"26FF} +%\fonttable{Dingbats}{"2700-"27BF} +\fonttable{Miscellaneous Mathematical Symbols-A}{"27C0-"27EF} +\fonttable{Supplemental Arrows-A}{"27F0-"27FF} +%\fonttable{Braille Patterns}{"2800-"28FF} +\fonttable{Supplemental Arrows-B}{"2900-"297F} +\fonttable{Miscellaneous Mathematical Symbols-B}{"2980-"29FF} +\fonttable{Supplemental Mathematical Operators}{"2A00-"2AFF} +\fonttable{Miscellaneous Symbols and Arrows}{"2B00-"2BFF} +\fonttable{Alphabetic Presentation Forms}{"FB00-"FB4F} +\fonttable{Arabic Presentation Forms-B}{"FE70-"FEFF} +\fonttable{Mathematical Alphanumeric Symbols}{"1D400-"1D7FF} + +\fonttable*{Non-Unicode Glyphs}{non-unicode.txt} + +\end{document} diff --git a/Master/texmf-dist/fonts/opentype/public/firamath/FiraMath-Regular.otf b/Master/texmf-dist/fonts/opentype/public/firamath/FiraMath-Regular.otf Binary files differindex a25899b0640..444b9d8029a 100644 --- a/Master/texmf-dist/fonts/opentype/public/firamath/FiraMath-Regular.otf +++ b/Master/texmf-dist/fonts/opentype/public/firamath/FiraMath-Regular.otf diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 71f810b4d13..2f00cd29f7d 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -3157,7 +3157,6 @@ $standardclean = '\.head|\.tmp|\.dvi|\.log|\.out|\.aux|\.toc|\.lof|\.lot' 'epslatex-fr' => 'R?Danger.eps', # unneeded, name clash 'exceltex' => 'manpage.pdf', # no source 'facture' => 'issue7.pdf', # no source - 'firamath' => 'fira-math-specimen.pdf', # no source 'flacards' => 'flacards.pdf', # no source 'gfsartemisia' => 'A*Specimen.pdf', # no source 'gfsbaskerville'=> 'B*Specimen.pdf', # no source |