1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
XCharter Fonts
Michael Sharpe
2013-10-28
This package is an extension of Bitstream Charter, whose original license is reproduced below, as required under the terms of that license. The extension provides small caps, oldstyle figures and superior figures in all four styles, accompanied by LaTeX font support files. The font files themselves are in otf and pfb formats. The fonts are licensed as Free fonts under the same terms as the original from Bitstream. All other support files are subject to the LaTeX Project Public License. See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
for the details of that license.
Original Bitstream Free font license:
(c) Copyright 1989-1992, Bitstream Inc., Cambridge, MA.
You are hereby granted permission under all Bitstream propriety rights
to use, copy, modify, sublicense, sell, and redistribute the 4
Bitstream Charter (r) Type 1 outline fonts for any purpose and without
restriction; provided, that this notice is left intact on all copies
of such fonts and that Bitstream's trademark is acknowledged as shown
below on all unmodified copies of the 4 Charter Type 1 fonts.
BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
The font modifications are Copyright (c) 2013, Michael Sharpe.
Current version: 1.00
The otf fonts contain all the kerning and other tables. Should you wish to modify these yourself, the basic LaTeX support files may be re-created using the command
/usr/texbin/autoinst --noupdmap --noswash --notitling --noornaments --target=./texmf --encoding=TS1,T1,LY1 --vendor=public --typeface=xcharter *.otf
after cding to the folder containing just the modified otf fonts and a subfolder named texmf. You should replace the newly generated XCharter.sty with the one from the distribution in order to preserve its functionality. The names of the encoding files should also be modified appropriately from those assigned by autoinst. I used the following bash shell script, which assumed you are in the directory holding the otf files and a texmf subfolder:
#!/bin/bash
pushd texmf/fonts/map/dvips/xcharter
sed -i '' 's/<\[a_/<\[XCh_/g' XCharter.map
popd
pushd texmf/fonts/enc/dvips/xcharter
for f in *.enc; do mv ${f} XCh${f:1}; done
popd
Creating the parallel version of the osf fonts (labelled osfx) with a small 1 rather than a short I for oldstyle one was somewhat laborious:
1. Copy the relevant .enc files, providing them new names, and replace one.oldstyle to oneAlt.oldstyle in each. Change the internal encoding name as well.
2. Use afm2tfm to create a new raw tfm file for each, with names like XCharter-Roman-osfx-t1--base.tfm. The commands were
afm2tfm XCharter-Bold -T XCh_o3e.enc XCharter-Bold-osfx-ly1--base
afm2tfm XCharter-Bold -T XCh_57c.enc XCharter-Bold-osfx-t1--base
afm2tfm XCharter-Bold -T XCh_gev.enc XCharter-Bold-osfx-sc-ly1--base
afm2tfm XCharter-Bold -T XCh_7ya.enc XCharter-Bold-osfx-sc-t1--base
afm2tfm XCharter-BoldItalic -T XCh_o3e.enc XCharter-BoldItalic-osfx-ly1--base
afm2tfm XCharter-BoldItalic -T XCh_57c.enc XCharter-BoldItalic-osfx-t1--base
afm2tfm XCharter-BoldItalic -T XCh_gev.enc XCharter-BoldItalic-osfx-sc-ly1--base
afm2tfm XCharter-BoldItalic -T XCh_7ya.enc XCharter-BoldItalic-osfx-sc-t1--base
afm2tfm XCharter-Italic -T XCh_o3e.enc XCharter-Italic-osfx-ly1--base
afm2tfm XCharter-Italic -T XCh_57c.enc XCharter-Italic-osfx-t1--base
afm2tfm XCharter-Italic -T XCh_gev.enc XCharter-Italic-osfx-sc-ly1--base
afm2tfm XCharter-Italic -T XCh_7ya.enc XCharter-Italic-osfx-sc-t1--base
afm2tfm XCharter-Roman -T XCh_o3e.enc XCharter-Roman-osfx-ly1--base
afm2tfm XCharter-Roman -T XCh_57c.enc XCharter-Roman-osfx-t1--base
afm2tfm XCharter-Roman -T XCh_nhq.enc XCharter-Roman-osfx-sc-ly1--base
afm2tfm XCharter-Roman -T XCh_774.enc XCharter-Roman-osfx-sc-t1--base
Copy the resulting tfm files to the tfm folder and assemble the output with appropriate pfb files appended to XCharter.map.
3. Create virtual vpl files for each osf tfm/vf pair, using
vftovp XCharter-Roman-osf-t1 XCharter-Roman-osf-t1 XCharter-Roman-osf-t1
vftovp XCharter-Roman-osf-ly1 XCharter-Roman-osf-ly1 XCharter-Roman-osf-ly1
vftovp XCharter-Roman-osf-sc-t1 XCharter-Roman-osf-sc-t1 XCharter-Roman-osf-sc-t1
#tftopl XCharter-Roman-osf-sc-ot1 XCharter-Roman-osf-sc-ot1
vftovp XCharter-Roman-osf-sc-ly1 XCharter-Roman-osf-sc-ly1 XCharter-Roman-osf-sc-ly1
vftovp XCharter-Bold-osf-t1 XCharter-Bold-osf-t1 XCharter-Bold-osf-t1
vftovp XCharter-Bold-osf-ly1 XCharter-Bold-osf-ly1 XCharter-Bold-osf-ly1
vftovp XCharter-Bold-osf-sc-t1 XCharter-Bold-osf-sc-t1 XCharter-Bold-osf-sc-t1
vftovp XCharter-Bold-osf-sc-ly1 XCharter-Bold-osf-sc-ly1 XCharter-Bold-osf-sc-ly1
vftovp XCharter-BoldItalic-osf-t1 XCharter-BoldItalic-osf-t1 XCharter-BoldItalic-osf-t1
vftovp XCharter-BoldItalic-osf-ly1 XCharter-BoldItalic-osf-ly1 XCharter-BoldItalic-osf-ly1
vftovp XCharter-BoldItalic-osf-sc-t1 XCharter-BoldItalic-osf-sc-t1 XCharter-BoldItalic-osf-sc-t1
vftovp XCharter-BoldItalic-osf-sc-ly1 XCharter-BoldItalic-osf-sc-ly1 XCharter-BoldItalic-osf-sc-ly1
vftovp XCharter-Italic-osf-t1 XCharter-Italic-osf-t1 XCharter-Italic-osf-t1
vftovp XCharter-Italic-osf-ly1 XCharter-Italic-osf-ly1 XCharter-Italic-osf-ly1
vftovp XCharter-Italic-osf-sc-t1 XCharter-Italic-osf-sc-t1 XCharter-Italic-osf-sc-t1
vftovp XCharter-Italic-osf-sc-ly1 XCharter-Italic-osf-sc-ly1 XCharter-Italic-osf-sc-ly1
4 For each resulting vpl, change the name fragment -osf- to -osfx- and within the file, remove the two checksum lines and change the source file name similarly. That is, in the section
MAPFONT D 0
change
(FONTNAME XCharter-Bold-osf-t1--base) to (FONTNAME XCharter-Bold-osfx-t1--base)
5. Copy the resulting vpl files to a new empty folder, cd to that folder and run
apply vptovf *.vpl
to produce the required tfm/vf alternate pairs, and move them to appropriate locations.
(It would have been much easier to write a simple fontinst driver script for this, but the current version of otftotfm does not place all f-ligatures in the correct slots as specified by the T1 and LY1 encodings.)
Please send comments and bug reports or suggestions for improvement to
msharpe at ucsd dot edu
|