• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

archive/H03-May-2021-256,858255,974

docs/H03-May-2022-

fonts/H03-May-2021-2111

source/H03-May-2022-1,736,5581,717,480

tools/H03-May-2021-234167

zipfiles/H03-May-2022-147

.gitignoreH A D03-May-202116 43

README.mdH A D03-May-202113.4 KiB248189

build.shH A D03-May-20213.6 KiB148122

requirements.iniH A D03-May-202175 66

README.md

1# stixfonts
2OpenType Unicode fonts for Scientific, Technical, and Mathematical texts
3
4## Overview
5
6* See https://www.stixfonts.org/ for background on the the STIX Fonts
7  project.
8
9* Download [zip files](zipfiles) with some or all of the fonts.
10
11* View [code charts](docs) for the
12  * [Math](docs/STIXTwoMath-Regular.pdf),
13  * [Regular text](docs/STIXTwoText-Regular.pdf),
14  fonts.
15
16### Type 1 fonts (STIX 2.0.0 only)
17
18The STIX Two fonts are OpenType fonts and are meant to be used in that
19format.  For the benefit of LaTeX users who are unable to use XeTeX or
20luaTeX, we have also provided version 2.0.0 of the STIX fonts as a
21[set of TFM files and Type 1 fonts](https://github.com/stipub/stix_type1).
22
23Note that **no further updates** are planned to the Type 1
24distribution; future development efforts will focus on improving the
25OpenType fonts.
26
27## About the STIX fonts.
28
29The Scientific and Technical Information eXchange (STIX) fonts are
30intended to satisfy the demanding needs of authors, publishers,
31printers, and others working in the scientific, medical, and technical
32fields.  They combine a comprehensive Unicode-based collection of
33mathematical symbols and alphabets with a set of text faces suitable
34for professional publishing.  The fonts are available royalty-free
35under the SIL Open Font License.
36
37Version 2 of the STIX fonts, now known as "STIX Two", is a thorough
38revision undertaken by the renowned type house Tiro Typeworks
39Ltd. (https://www.tiro.com).  The STIX Two fonts consist of one Math
40font, two variable text fonts (STIXTwoTextVF-Roman and
41STIXTwoTextVF-Italic), and eight static text fonts (Regular, Italic,
42Medium, Medium Italic, SemiBold, SemiBold Italic, Bold, and Bold
43Italic) derived from the variable fonts.  Together, they provide a
44uniform set of fonts that can be used throughout the production
45process, whether that be a traditional print-only process, an entirely
46electronic one, or a combination of the two.
47
48The [STIX project](https://www.stixfonts.org/) began through the joint
49efforts of
50[American Mathematical Society](https://www.ams.org/) (AMS),
51[American Institute of Physics](https://www.aip.org/) (AIP),
52[American Physical Society](https://www.aps.org/) (APS),
53[American Chemical Society](https://www.acs.org/) (ACS),
54The [Institute of Electrical and Electronic](https://www.ieee.org/) Engineers (IEEE),
55and [Elsevier](https://www.elsevier.com/).
56These companies are collectively known as the STI Pub companies.
57
58### A Fresh Take on Times Roman
59
60The original version of STIX was based on Times Roman, which has now
61been updated for the digital age.
62
63As is well known, Times Roman was originally intended for printing the
64*London Times*.  What is not generally appreciated is that the
65production quality of the *Times* was atypically high: It was printed
66on unusually high-quality paper on presses that operated more slowly
67than most newspaper presses.  This allowed for the design of a
68typeface that could exploit this level of care: serifs could be much
69finer and counters (enclosed areas such as that in the lowercase *e*)
70could be much smaller than in other newspaper typefaces.  These
71features of the font have not always fared well in less exacting
72environments.  At the same time, a notable quirk of the Times Roman
73family is that the bold font is, in many respects, strikingly
74dissimilar to the roman font.
75
76Tiro Typeworks explain their approach to updating the Times Roman
77basis of STIX as follows:
78
79> “Our principal goal in approaching STIX Two was to address several
80> inherent deficiencies in the Times New Roman model as well as expand
81> the typographic features. This process necessarily involved
82> diverging somewhat from Times as familiar to people who have only
83> known the common digital versions, while simultaneously restoring to
84> that typeface aspects of the size-appropriate design characteristics
85> that made it so successful in newspaper, book, and journal
86> publishing in it’s metal type incarnation. The essential
87> ‘Times-ness’ remains, but are with greater harmonisation of style
88> across the family.
89>
90> “Most digital versions of Times have been based on an optical size
91> model that appears too light and fine when scaled down to typical
92> text sizes. In the design of STIX Two, we went back to specimens of
93> size-specific designs from the metal era, and adapted proportions,
94> weights, and spacing of the 10pt and 12pt designs. The oft-noted
95> mismatch between the style of different weights of Times has been
96> resolved with a new bold design that matches the construction of the
97> regular weight.”
98
99### Font implementation decisions
100
101* The STIX fonts do not contain fixed-width or sans serif text faces.
102
103* The sans serif, fraktur, script, etc., alphabets in Plane 1
104  (U+1D400-U+1D4FF) are intended to be used only as technical symbols.
105
106* These fonts are designed to support left-to-right typesetting in
107  Latin-based scripts, with additional support for Greek and Cyrillic
108  text.  Extensions to support other writing directions have been
109  considered, but are currently deemed to be outside the scope of the
110  STIX project.
111
112### Note to TeX users
113
114These fonts have been tested with both
115[XeTeX](http://xetex.sourceforge.net/)
116and
117[luaTeX](http://www.luatex.org/)
118with good results.  For best results, XeTeX users will want to use
119version 0.999992 or later of XeTeX, which ships with
120[TeXLive 2020](https://www.tug.org/texlive/).
121This version fixes a number of bugs that were present in earlier
122versions.  Our thanks go out to Jonathan Kew and Khaled Hosny for
123their generous help in identifying and fixing these bugs.  LaTeX users
124should also make sure they have the latest version of the
125[amsmath package](https://ctan.org/pkg/amsmath).
126
127## Summary of OpenType Features and Scripts
128
129Further details these features can be found in the [font charts](docs).
130
131The text fonts implement the following OpenType script tags:
132
133    Regular   Bold      Italic    BoldItalic
134
135    DFLT      DFLT      DFLT      DFLT          Default
136
137    cyrl      cyrl      cyrl      cyrl          Cyrillic
138                        cyrl.MKD  cyrl.MKD      Cyrillic/Macedonian
139                        cyrl.SRB  cyrl.SRB      Cyrillic/Serbian
140
141    grek      grek      grek      grek          Greek
142
143    latn      latn      latn      latn          Latin
144    latn.LTH  latn.LTH  latn.LTH  latn.LTH      Latin/Lithuanian
145    latn.ROM  latn.ROM  latn.ROM  latn.ROM      Latin/Romanian
146    latn.TRK  latn.TRK  latn.TRK  latn.TRK      Latin/Turkish
147
148and the following features
149
150    c2sc    Small Capitals from Capitals
151    case    Case-Sensitive Forms
152    ccmp    Glyph Composition/Decomposition
153    dnom    Denominators
154    frac    Fractions
155    kern    Kerning
156    liga    Standard Ligatures -- latn only
157    locl    Localized Forms    -- latn.ROM and Italic/BoldItalic cyrl.MKD only
158    numr    Numerators
159    onum    Oldstyle Figures
160    pnum    Proportional Figures
161    smcp    Small Capitals
162    subs    Subscript
163    sups    Superscript
164
165All four text fonts also support the following Character Variants:
166
167    cv01    U+019B Lambda with horizontal, not slanted stroke -- latn only
168    cv02    U+0264 Rams horn with serifs -- latn only
169    cv03    U+2423 OPEN BOX curved instead of straight
170
171In addition, the Italic and BoldItalic faces support the following
172Stylistic Variants:
173
174    ss01    Replace two-story g by hooked g      -- Italic/BoldItalic only
175    ss02    Upright parens, brackets, and braces -- Italic/BoldItalic only
176
177STIX Two Math implements the following font features:
178
179    ccmp    Glyph Composition/Decomposition
180    dtls    Dotless forms of i and j
181    flac    Flattened accents
182    ssty    Math Script style alternates
183
184and the following Character Variants (note the different meaning of
185cv03 compared to the text fonts):
186
187    cv01    U+019B Lambda with horizontal, not slanted stroke -- latn only
188    cv02    U+0264 Rams horn with serifs -- latn only
189    cv03    Replace U+2205 EMPTY SET by an oblate form
190    cv04    Replace U+2216 SET MINUS by a smaller form
191
192and the following Stylistic Sets (again, note that ss01 and ss02 have
193different meanings compared to the text fonts):
194
195    ss01    Stylistic Set 1 -- Math chancery to roundhand (\mathcal -> \mathscr)
196    ss02    Stylistic Set 2 -- Alternate italic forms: g, u, v, w, z
197    ss03    Stylistic Set 3 -- Horizontal crossbar variants
198    ss04    Stylistic Set 4 -- Minute, second and primes to long variants
199    ss05    Stylistic Set 5 -- Short arrow variants
200    ss06    Stylistic Set 6 -- Short/narrow variants
201    ss07    Stylistic Set 7 -- Alternate math symbols (product, summation, etc)
202    ss08    Stylistic Set 8 -- Upright integral variants; XITS compatible
203    ss09    Stylistic Set 9 -- Vertical slash variants; XITS compatible
204    ss10    Stylistic Set 10 -- Diagonal greater/lesser combination variants
205    ss11    Stylistic Set 11 -- Long slash not-equal combination variants
206    ss12    Stylistic Set 12 -- Low contrast (sans-like) variants
207    ss13    Stylistic Set 13 -- Horizontally flipped sine wave glyph
208    ss14    Stylistic Set 14 -- Tall variants
209    ss15    Stylistic Set 15 -- Slab serif symbol variants
210    ss16    Stylistic Set 16 -- Circled operator variants
211    ss20    Stylistic Set 20 -- Miscellaneous variants
212
213## Build instructions
214
215After cloning the project, the fonts can be built using the `build.sh` script (use `--verbose` option for more detailed build log):
216
217    $ ./build.sh
218
219This may take several minutes to complete. The first time the script is called, it will create a Python virtual environment that will be also used for subsequent builds. Each time the script is called, the fonts will be rebuilt from scratch. The built fonts will be in `build` subdirectory, and should be manually copied and committed to `fonts` subdirectory.
220
221
222### Notes on source formats and build process
223
224The design masters for the STIX Two Text fonts are the **.vfj** files, a json source format used by FontLab 7. These files contain the glyph outlines, spacing, mark anchors, kerning and associated classes, font info, and variable design space info. Changes or additions to any of these things should be made in the .vfj files.
225
226The build script used to generate font files uses the **.ufo** and **.designspace** files, not the .vfj sources directly. These files can be exported from FontLab 7 using the default export profile for ‘DesignSpace + UFO’.
227
228The **.ren** files are glyph name management files used by the build script to manage the relationship of development names in the sources to the build names used in the post or CFF tables of the fonts.
229
230Because of issues with editing and managing OpenType Layout GPOS in variable font sources, the OTL projects for the STIX Two Text fonts are built in Microsoft’s [Visual OpenType Layout Tool](https://docs.microsoft.com/en-us/typography/tools/volt/) (VOLT). This means changes to OTL, including updates to mark anchors and kerning implemented in the .vfj sources need to be passed through VOLT, updated in the **.vtp** VOLT project files, and compiled in **.input.ttf** which are then used by the build script as a source for the OTL tables in the fonts.
231
232Obviously, any changes or extension to the glyph set in the .vfj design sources needs to be reflected in each of the other sources used in the build process: in the .ufo files, the .ren file glyph name lists, and especially in the .input.ttf files and .vtp project files. Fresh .input.ttf files can be exported from FontLab 7, opened in VOLT, and the .vtp project files imported and updated.
233
234Note that if changes or updates are made to mark anchors or kerning or associated classes in the .vfj sources, these need to be converted to VOLT format and imported into the projects, replacing or updating existing VOLT lookups and groups. This can be done using the [vfj-to-volt.py](https://github.com/TiroTypeworks/TiroTools/tree/master/VFJtools) tool.
235
236The revised .vtp files should then be exported for future use, and the .input.ttf fonts *shipped* from VOLT (this is important, because although the fonts will work if just compiled and saved in VOLT, they will contain private VOLT source tables and unregistered OTL features that will be then end up in the fonts generated by the build script; so use the ‘Ship Font’ option in VOLT and overwrite the .input.ttf file (save a copy with the VOLT project, if you like, but so long as you remembered to export the updated .vtp you can always reimport as needed)).
237
238**IMPORTANT** : the STIXTwoMath-Regular.input.ttf file is also the source for the MATH table and cmap table in the final font build. Care must be taken to preserve or extend these as necessary in this file when updating OpenType Layout or other aspects of the font.
239
240Once all the source files are ready, run the **build.sh** as described above. The build script describes what it is doing as it runs, and verbose mode can be used to get more detail. In overview, this is what it does:
241
2421. Pre-process the UFO files to:
243a) remove all features and kerning groups from the UFOs; b) rename the glyphs to match the TTFs (otherwise the binary tables can’t be grafted in with FontTools easily); c) extract the binary tables and add them under data/com.github.fonttools.ttx/ in the UFO font where ufo2ft expects them; d) save the modified files in build/masters to keep the sources unchanged.
2441. Build variable font with fontmake from build/masters UFOs.
2451. Build binary masters with fontmake (needed for the next step) from UFOs.
2461. Build static fonts with fontmake from UFOs, but telling it to interpolate OTL tables from the binary masters.
2471. Post-process the fonts to fix the name tables and other final touchups.
248