texlive[55297] trunk: fontools (27may20)
commits+karl at tug.org
commits+karl at tug.org
Wed May 27 23:40:38 CEST 2020
Revision: 55297
http://tug.org/svn/texlive?view=revision&revision=55297
Author: karl
Date: 2020-05-27 23:40:38 +0200 (Wed, 27 May 2020)
Log Message:
-----------
fontools (27may20)
Modified Paths:
--------------
trunk/Build/source/texk/texlive/linked_scripts/fontools/afm2afm
trunk/Build/source/texk/texlive/linked_scripts/fontools/autoinst
trunk/Build/source/texk/texlive/linked_scripts/fontools/ot2kpx
trunk/Master/texmf-dist/doc/man/man1/afm2afm.1
trunk/Master/texmf-dist/doc/man/man1/afm2afm.man1.pdf
trunk/Master/texmf-dist/doc/man/man1/autoinst.1
trunk/Master/texmf-dist/doc/man/man1/autoinst.man1.pdf
trunk/Master/texmf-dist/doc/man/man1/ot2kpx.1
trunk/Master/texmf-dist/doc/man/man1/ot2kpx.man1.pdf
trunk/Master/texmf-dist/doc/support/fontools/splitttc
trunk/Master/texmf-dist/scripts/fontools/afm2afm
trunk/Master/texmf-dist/scripts/fontools/autoinst
trunk/Master/texmf-dist/scripts/fontools/ot2kpx
Added Paths:
-----------
trunk/Master/texmf-dist/fonts/enc/dvips/fontools/fontools_oml.enc
Modified: trunk/Build/source/texk/texlive/linked_scripts/fontools/afm2afm
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/fontools/afm2afm 2020-05-27 21:40:08 UTC (rev 55296)
+++ trunk/Build/source/texk/texlive/linked_scripts/fontools/afm2afm 2020-05-27 21:40:38 UTC (rev 55297)
@@ -37,7 +37,7 @@
use Getopt::Long;
use Pod::Usage;
-my $VERSION = "20200511";
+my $VERSION = "20200527";
parse_commandline();
@@ -421,7 +421,7 @@
=head1 VERSION
-This document describes B<afm2afm> version 20200511.
+This document describes B<afm2afm> version 20200527.
=head1 RECENT CHANGES
Modified: trunk/Build/source/texk/texlive/linked_scripts/fontools/autoinst
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/fontools/autoinst 2020-05-27 21:40:08 UTC (rev 55296)
+++ trunk/Build/source/texk/texlive/linked_scripts/fontools/autoinst 2020-05-27 21:40:38 UTC (rev 55297)
@@ -40,7 +40,7 @@
use Pod::Usage ();
use POSIX ();
-my $VERSION = '20200511';
+my $VERSION = '20200527';
my ($d, $m, $y) = (localtime time)[3 .. 5];
my $TODAY = sprintf "%04d/%02d/%02d", $y + 1900, $m + 1, $d;
@@ -48,7 +48,7 @@
my $RUNNING_AS_MAIN = (__PACKAGE__ eq 'main');
-=begin Architecture
+=begin Comment
----------------------------------------------------------------------------
@@ -86,7 +86,7 @@
----------------------------------------------------------------------------
-=end Architecture
+=end Comment
=cut
@@ -156,8 +156,8 @@
my $basicinfo = Font::Raw::get_basicinfo($filename);
$info->process_basicinfo($basicinfo);
- my $os2_table = Font::Raw::get_os2_table($filename);
- $info->process_os2_table($os2_table);
+ my $os2_table = Font::Raw::get_classdata($filename);
+ $info->process_classdata($os2_table);
my $featuredata = Font::Raw::get_featuredata($filename);
$info->process_featuredata($featuredata);
@@ -182,6 +182,7 @@
Width: %s
Shape: %s
Size: %s-%s
+ Smallcaps: %s
END_ERR_DETAIL
@@ -359,15 +360,19 @@
$self->{family} = $1;
$self->{shape} = NFSS::unabbreviate(lc($2));
}
- # Ditto for the smallcaps shape; here we have to test both 'family'
- # and 'name' for hints that this is a small caps font, as some fonts
- # (e.g., Dolly) only mention this in their name.
+ # Ditto for the smallcaps shape; here we have to test both 'family',
+ # 'subfamily' and 'name' for hints that this is a small caps font,
+ # as some fonts (e.g., Dolly) only mention this in their name.
$shapes = join '|', Util::sort_desc_length(qw(smallcaps sc smcp caps));
- if ($self->{family} =~ m/(.+?) -? (?: $shapes) \z/xmsi) {
+ if ($self->{family} =~ m/(.+?) (?: $shapes) \z/xmsi) {
$self->{family} = $1;
$self->{is_smallcaps} = 1;
}
- if ($self->{name} =~ m/(.+?) -? (?: $shapes) \z/xmsi) {
+ if ($self->{subfamily} =~ m/(.+?) (?: $shapes) \z/xmsi) {
+ $self->{subfamily} = $1;
+ $self->{is_smallcaps} = 1;
+ }
+ if ($self->{name} =~ m/(.+?) (?: $shapes) \z/xmsi) {
$self->{name} = $1;
$self->{is_smallcaps} = 1;
}
@@ -417,12 +422,13 @@
# --------------------------------------------------------------------------
-# Extracts usWeightClass and usWidthClass from the OS/2 table.
+# Processes the usWeightClass and usWidthClass data.
# --------------------------------------------------------------------------
-sub process_os2_table {
- my ($self, $os2_table) = @_;
+sub process_classdata {
+ my ($self, $classdata) = @_;
- @{$self}{qw(weight_class width_class)} = unpack '@4n @6n', $os2_table;
+ $self->{weight_class} = $classdata->{weight_class};
+ $self->{width_class} = $classdata->{width_class};
return;
}
@@ -444,35 +450,33 @@
# Extracts 'minsize' and 'maxsize' from the optical design size info.
# --------------------------------------------------------------------------
sub process_sizedata {
- my ($self, $data) = @_;
+ my ($self, $sizedata) = @_;
- if (my ($minsize, $maxsize)
- = $data =~ m/[(] ([\d.]+) \s* pt, \s*
- ([\d.]+) \s* pt \s* [)]]/xms) {
+ my ($minsize, $maxsize) = @$sizedata;
+
# fix some known bugs
- if ($self->{name} eq 'GaramondPremrPro-It'
- && $minsize == 6 && $maxsize == 8.9) {
- ($minsize, $maxsize) = (8.9, 14.9);
- }
- elsif ($self->{family} eq 'KeplerStd'
- && $self->{subfamily} =~ m/Caption/xms
- && $minsize == 8.9 && $maxsize == 13.9) {
- ($minsize, $maxsize) = (6, 8.9);
- }
- elsif ($self->{family} eq 'KeplerStd'
- && $self->{subfamily} =~ m/Subhead/xms
- && $minsize == 8.9 && $maxsize == 13.9) {
- ($minsize, $maxsize) = (13.9, 23);
- }
- elsif ($self->{family} eq 'KeplerStd'
- && $self->{subfamily} =~ m/Display/xms
- && $minsize == 8.9 && $maxsize == 13.9) {
- ($minsize, $maxsize) = (23, 72);
- }
-
- @{$self}{qw(minsize maxsize)} = ($minsize, $maxsize);
+ if ($self->{name} eq 'GaramondPremrPro-It'
+ && $minsize == 6 && $maxsize == 8.9) {
+ ($minsize, $maxsize) = (8.9, 14.9);
}
+ elsif ($self->{family} eq 'KeplerStd'
+ && $self->{subfamily} =~ m/Caption/xms
+ && $minsize == 8.9 && $maxsize == 13.9) {
+ ($minsize, $maxsize) = (6, 8.9);
+ }
+ elsif ($self->{family} eq 'KeplerStd'
+ && $self->{subfamily} =~ m/Subhead/xms
+ && $minsize == 8.9 && $maxsize == 13.9) {
+ ($minsize, $maxsize) = (13.9, 23);
+ }
+ elsif ($self->{family} eq 'KeplerStd'
+ && $self->{subfamily} =~ m/Display/xms
+ && $minsize == 8.9 && $maxsize == 13.9) {
+ ($minsize, $maxsize) = (23, 72);
+ }
+ @{$self}{qw(minsize maxsize)} = ($minsize, $maxsize);
+
return;
}
@@ -517,9 +521,9 @@
# --------------------------------------------------------------------------
-# Returns the font's OS/2 table.
+# Returns usWeightClass and usWidthClass from the OS/2 table.
# --------------------------------------------------------------------------
-sub get_os2_table {
+sub get_classdata {
my $filename = shift;
my $os2_table;
@@ -532,7 +536,12 @@
or die "'$cmd' failed";
} or warn "[WARNING] $@";
- return $os2_table;
+ my ($weight_class, $width_class) = unpack '@4n @6n', $os2_table;
+
+ return {
+ weight_class => $weight_class,
+ width_class => $width_class,
+ };
}
@@ -579,7 +588,13 @@
close $otfinfo
or die "[ERROR] '$cmd' failed.";
- return $data;
+ my ($minsize, $maxsize)
+ = $data =~ m/[(] ([\d.]+) \s* pt, \s*
+ ([\d.]+) \s* pt \s* [])]/xms;
+
+ $minsize //= 0;
+ $maxsize //= 0;
+ return [ $minsize, $maxsize ];
}
@@ -638,7 +653,7 @@
[ $minsize, $maxsize, $workitem->{fontname} ];
}
- create_stylefile($family, \%fddata);
+ create_stylefile($nfss_mapping, $family, \%fddata);
while (my ($enc, $encdata) = each %fddata) {
while (my ($sty, $stydata) = each %$encdata) {
create_fdfile($nfss_mapping, $family, $enc, $sty, $stydata);
@@ -662,8 +677,23 @@
# Creates a LaTeX style file.
# --------------------------------------------------------------------------
sub create_stylefile {
- my ($fam, $data) = @_;
+ my ($nfss_mapping, $fam, $data) = @_;
+ my $testfont;
+ eval {
+ my $testenc = $ARGV{encoding}[0];
+ my $testfig = ( grep { exists $data->{$testenc}{$_} }
+ qw(OsF LF TOsF TLF) )[0] or die;
+ my $testweight = $nfss_mapping->{weight}{""}[0] or die;
+ my $testshape
+ = ( grep { exists $data->{$testenc}{$testfig}{$testweight}{$_} }
+ qw(n it sl sc)
+ )[0] or die;
+ $testfont
+ = $data->{$testenc}{$testfig}{$testweight}{$testshape}[0][2]
+ or die;
+ };
+
my %seen = %{Util::get_keys($data)};
my $fn = sprintf "%s.sty", $fam;
@@ -687,6 +717,7 @@
print {$STY} "\\RequirePackage{fontenc}\n";
print {$STY} "\\RequirePackage{textcomp}\n" if $seen{TS1};
+ print {$STY} "\\RequirePackage{ifthen}\n";
print {$STY} <<'END_STY_FONTAXES_START';
\IfFileExists{mweights.sty}{\RequirePackage{mweights}}{}
@@ -709,10 +740,12 @@
print {$STY} <<'END_STY_FONTAXES_SUP';
\fa at naming@exception{figures}{{superior}{proportional}}{Sup}
\fa at naming@exception{figures}{{superior}{tabular}}{Sup}
- \def\sufigures{\@nomath\sufigures
+ \def\supfigures{\@nomath\supfigures
\fontfigurestyle{superior}\selectfont}
- \DeclareTextFontCommand{\textsu}{\sufigures}
- \let\textsuperior\textsu
+ \let\sufigures\supfigures
+ \DeclareTextFontCommand{\textsup}{\supfigures}
+ \let\textsu\textsup
+ \let\textsuperior\textsup
END_STY_FONTAXES_SUP
}
@@ -721,10 +754,12 @@
print {$STY} <<'END_STY_FONTAXES_INF';
\fa at naming@exception{figures}{{inferior}{proportional}}{Inf}
\fa at naming@exception{figures}{{inferior}{tabular}}{Inf}
- \def\infigures{\@nomath\infigures
+ \def\inffigures{\@nomath\inffigures
\fontfigurestyle{inferior}\selectfont}
- \DeclareTextFontCommand{\textin}{\infigures}
- \let\textinferior\textin
+ \let\infigures\inffigures
+ \DeclareTextFontCommand{\textinf}{\inffigures}
+ \let\textin\textinf
+ \let\textinferior\textinf
END_STY_FONTAXES_INF
}
@@ -771,16 +806,10 @@
print {$STY} "}{}\n\n";
print {$STY} <<"END_STY_XKEYVAL";
-\\IfFileExists{xkeyval.sty}{
- \\newcommand*{\\$fam\@scale}{1}
- \\RequirePackage{xkeyval}
- \\DeclareOptionX{scale}{\\renewcommand*{\\$fam\@scale}{##1}}
- \\DeclareOptionX{scaled}{\\renewcommand*{\\$fam\@scale}{##1}}
-}{
- \\let\\DeclareOptionX\\DeclareOption
- \\let\\ExecuteOptionsX\\ExecuteOptions
- \\let\\ProcessOptionsX\\ProcessOptions
-}
+\\RequirePackage{xkeyval}
+\\newcommand*{\\$fam\@scale}{1}
+\\DeclareOptionX{scale}{\\renewcommand*{\\$fam\@scale}{#1}}
+\\DeclareOptionX{scaled}{\\renewcommand*{\\$fam\@scale}{#1}}
END_STY_XKEYVAL
@@ -807,12 +836,51 @@
}
END_STY_MAINFONT
+ if ($ARGV{math}) {
+ print {$STY} <<"END_STY_MATHOPTION";
+\\newif\\if$fam\@math\\$fam\@mathfalse
+\\DeclareOptionX{math}{\\$fam\@mathtrue}
+
+\\newcommand*{\\$fam\@mathstyle}{TeX}
+\\DeclareOptionX{math-style}{\\renewcommand*{\\$fam\@mathstyle}{#1}}
+
+END_STY_MATHOPTION
+
+ if ($seen{LF} or $seen{TLF}) {
+ print {$STY} "\\newcommand*{\\$fam\@mathfigurestyle}{LF}\n";
+ }
+ elsif ($seen{OsF} or $seen{TOsF}) {
+ print {$STY} "\\newcommand*{\\$fam\@mathfigurestyle}{OsF}\n";
+ }
+
+ if ($seen{OsF} or $seen{TOsF}) {
+ print {$STY}
+ "\\DeclareOptionX{matholdstyle}\n",
+ " {\\renewcommand*{\\$fam\@mathfigurestyle}{OsF}}\n";
+ }
+ if ($seen{LF} or $seen{TLF}) {
+ print {$STY}
+ "\\DeclareOptionX{mathlining}",
+ " {\\renewcommand{\\$fam\@mathfigurestyle}{LF}}\n";
+ }
+ print {$STY} "\n";
+
+ if ($seen{sw}) {
+ print {$STY} <<"END_STY_MATHCALOPTION";
+\\newif\\if$fam\@mathcal\\$fam\@mathcalfalse
+\\DeclareOptionX{mathcal}{\\$fam\@mathcaltrue}
+
+END_STY_MATHCALOPTION
+ }
+ }
+
my $defaults
= $seen{OsF} ? 'oldstyle,proportional'
: $seen{TOsF} ? 'oldstyle,tabular'
: $seen{LF} ? 'lining,proportional'
: $seen{TLF} ? 'lining,tabular'
- : die "[ERROR] Internal bug, please report!";
+ : die "[ERROR] Internal bug, please report!"
+ ;
my $default_bold;
for my $series (qw(heavy black extrabold demibold semibold bold)) {
@@ -836,17 +904,367 @@
}
$defaults .= ",$default_regular" if $default_regular;
- print {$STY} <<"END_STYLE_REST";
+ print {$STY} <<"END_STY_PROCESSOPTIONS";
\\ExecuteOptionsX{$defaults}
\\ProcessOptionsX\\relax
+END_STY_PROCESSOPTIONS
+
+ if (defined $testfont) {
+ print {$STY} <<"END_STY_MATCHLOWERCASE";
+\\ifthenelse{\\equal{\\$fam\@scale}{MatchLowercase}}
+ {\\newlength{\\$fam\@defaultx}
+ \\settoheight{\\$fam\@defaultx}{x}
+ \\newlength{\\$fam\@xheight}
+ \\settoheight{\\$fam\@xheight}
+ {{\\font\\testfont=$testfont at \\f\@size pt\\testfont x}}
+ \\renewcommand*{\\$fam\@scale}
+ {\\strip\@pt\\dimexpr\\number\\numexpr\\number\\dimexpr\\$fam\@defaultx\\relax*65536/\\number\\dimexpr\\$fam\@xheight\\relax\\relax sp\\relax}
+ }
+ {}
+
+END_STY_MATCHLOWERCASE
+ }
+
+ print {$STY} <<"END_STYLE_REST";
\\renewcommand*
{\\$ARGV{nfss}default}
{$fam-\\$fam\@figurealign\\$fam\@figurestyle}
-\\endinput
END_STYLE_REST
+ if ($ARGV{math}) {
+ print {$STY} <<"END_STY_MATH";
+\\newif\\if$fam\@mathLATINup\\$fam\@mathLATINupfalse
+\\newif\\if$fam\@mathlatinup\\$fam\@mathlatinupfalse
+\\newif\\if$fam\@mathGREEKup\\$fam\@mathGREEKupfalse
+\\newif\\if$fam\@mathgreekup\\$fam\@mathgreekupfalse
+
+\\if$fam\@math
+ \\DeclareSymbolFont{newoperators} {OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{n}
+ \\SetSymbolFont{newoperators}{bold}{OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{n}
+
+ \\DeclareSymbolFont{newletters} {OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{it}
+ \\SetSymbolFont{newletters}{bold}{OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{it}
+
+ \\DeclareSymbolFontAlphabet{\\mathrm}{newoperators}
+ \\DeclareSymbolFontAlphabet{\\mathnormal}{newletters}
+
+ \\def\\operator\@font{\\mathgroup\\symnewoperators}
+ \\SetMathAlphabet{\\mathit}{normal}{OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{it}
+ \\SetMathAlphabet{\\mathit}{bold} {OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{it}
+
+ \\SetMathAlphabet{\\mathbf}{normal}{OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{n}
+ \\SetMathAlphabet{\\mathbf}{bold} {OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{n}
+
+ \\def\\re\@DeclareMathSymbol#1#2#3#4{%
+ \\if\\relax\\noexpand#1\\let#1=\\undefined\\fi
+ \\DeclareMathSymbol{#1}{#2}{#3}{#4}}
+
+ \\def\\re\@DeclareMathDelimiter#1#2#3#4#5#6{%
+ \\let#1=\\undefined
+ \\DeclareMathDelimiter{#1}{#2}{#3}{#4}{#5}{#6}}
+
+ \\def\\re\@DeclareMathAccent#1#2#3#4{%
+ \\let#1=\\undefined
+ \\DeclareMathAccent{#1}{#2}{#3}{#4}}
+
+ \\re\@DeclareMathSymbol{0}{\\mathalpha}{newoperators}{`0}
+ \\re\@DeclareMathSymbol{1}{\\mathalpha}{newoperators}{`1}
+ \\re\@DeclareMathSymbol{2}{\\mathalpha}{newoperators}{`2}
+ \\re\@DeclareMathSymbol{3}{\\mathalpha}{newoperators}{`3}
+ \\re\@DeclareMathSymbol{4}{\\mathalpha}{newoperators}{`4}
+ \\re\@DeclareMathSymbol{5}{\\mathalpha}{newoperators}{`5}
+ \\re\@DeclareMathSymbol{6}{\\mathalpha}{newoperators}{`6}
+ \\re\@DeclareMathSymbol{7}{\\mathalpha}{newoperators}{`7}
+ \\re\@DeclareMathSymbol{8}{\\mathalpha}{newoperators}{`8}
+ \\re\@DeclareMathSymbol{9}{\\mathalpha}{newoperators}{`9}
+
+ \\re\@DeclareMathSymbol{a}{\\mathalpha}{newletters}{`a}
+ \\re\@DeclareMathSymbol{b}{\\mathalpha}{newletters}{`b}
+ \\re\@DeclareMathSymbol{c}{\\mathalpha}{newletters}{`c}
+ \\re\@DeclareMathSymbol{d}{\\mathalpha}{newletters}{`d}
+ \\re\@DeclareMathSymbol{e}{\\mathalpha}{newletters}{`e}
+ \\re\@DeclareMathSymbol{f}{\\mathalpha}{newletters}{`f}
+ \\re\@DeclareMathSymbol{g}{\\mathalpha}{newletters}{`g}
+ \\re\@DeclareMathSymbol{h}{\\mathalpha}{newletters}{`h}
+ \\re\@DeclareMathSymbol{i}{\\mathalpha}{newletters}{`i}
+ \\re\@DeclareMathSymbol{j}{\\mathalpha}{newletters}{`j}
+ \\re\@DeclareMathSymbol{k}{\\mathalpha}{newletters}{`k}
+ \\re\@DeclareMathSymbol{l}{\\mathalpha}{newletters}{`l}
+ \\re\@DeclareMathSymbol{m}{\\mathalpha}{newletters}{`m}
+ \\re\@DeclareMathSymbol{n}{\\mathalpha}{newletters}{`n}
+ \\re\@DeclareMathSymbol{o}{\\mathalpha}{newletters}{`o}
+ \\re\@DeclareMathSymbol{p}{\\mathalpha}{newletters}{`p}
+ \\re\@DeclareMathSymbol{q}{\\mathalpha}{newletters}{`q}
+ \\re\@DeclareMathSymbol{r}{\\mathalpha}{newletters}{`r}
+ \\re\@DeclareMathSymbol{s}{\\mathalpha}{newletters}{`s}
+ \\re\@DeclareMathSymbol{t}{\\mathalpha}{newletters}{`t}
+ \\re\@DeclareMathSymbol{u}{\\mathalpha}{newletters}{`u}
+ \\re\@DeclareMathSymbol{v}{\\mathalpha}{newletters}{`v}
+ \\re\@DeclareMathSymbol{w}{\\mathalpha}{newletters}{`w}
+ \\re\@DeclareMathSymbol{x}{\\mathalpha}{newletters}{`x}
+ \\re\@DeclareMathSymbol{y}{\\mathalpha}{newletters}{`y}
+ \\re\@DeclareMathSymbol{z}{\\mathalpha}{newletters}{`z}
+
+ \\re\@DeclareMathSymbol{A}{\\mathalpha}{newletters}{`A}
+ \\re\@DeclareMathSymbol{B}{\\mathalpha}{newletters}{`B}
+ \\re\@DeclareMathSymbol{C}{\\mathalpha}{newletters}{`C}
+ \\re\@DeclareMathSymbol{D}{\\mathalpha}{newletters}{`D}
+ \\re\@DeclareMathSymbol{E}{\\mathalpha}{newletters}{`E}
+ \\re\@DeclareMathSymbol{F}{\\mathalpha}{newletters}{`F}
+ \\re\@DeclareMathSymbol{G}{\\mathalpha}{newletters}{`G}
+ \\re\@DeclareMathSymbol{H}{\\mathalpha}{newletters}{`H}
+ \\re\@DeclareMathSymbol{I}{\\mathalpha}{newletters}{`I}
+ \\re\@DeclareMathSymbol{J}{\\mathalpha}{newletters}{`J}
+ \\re\@DeclareMathSymbol{K}{\\mathalpha}{newletters}{`K}
+ \\re\@DeclareMathSymbol{L}{\\mathalpha}{newletters}{`L}
+ \\re\@DeclareMathSymbol{M}{\\mathalpha}{newletters}{`M}
+ \\re\@DeclareMathSymbol{N}{\\mathalpha}{newletters}{`N}
+ \\re\@DeclareMathSymbol{O}{\\mathalpha}{newletters}{`O}
+ \\re\@DeclareMathSymbol{P}{\\mathalpha}{newletters}{`P}
+ \\re\@DeclareMathSymbol{Q}{\\mathalpha}{newletters}{`Q}
+ \\re\@DeclareMathSymbol{R}{\\mathalpha}{newletters}{`R}
+ \\re\@DeclareMathSymbol{S}{\\mathalpha}{newletters}{`S}
+ \\re\@DeclareMathSymbol{T}{\\mathalpha}{newletters}{`T}
+ \\re\@DeclareMathSymbol{U}{\\mathalpha}{newletters}{`U}
+ \\re\@DeclareMathSymbol{V}{\\mathalpha}{newletters}{`V}
+ \\re\@DeclareMathSymbol{W}{\\mathalpha}{newletters}{`W}
+ \\re\@DeclareMathSymbol{X}{\\mathalpha}{newletters}{`X}
+ \\re\@DeclareMathSymbol{Y}{\\mathalpha}{newletters}{`Y}
+ \\re\@DeclareMathSymbol{Z}{\\mathalpha}{newletters}{`Z}
+
+ \\re\@DeclareMathSymbol{\\imath}{\\mathord}{newletters}{"7B}
+ \\re\@DeclareMathSymbol{\\jmath}{\\mathord}{newletters}{"7C}
+
+ %
+ % A number of math symbol declarations have been commented out,
+ % since these characters generally do not work very well when
+ % typesetting maths (either because of spacing issues or because
+ % they don't mix with others symbols).
+ % The commented-out declarations have been left in this style file
+ % in case the user does want to re-activate those characters.
+ %
+
+ \\re\@DeclareMathSymbol{!}{\\mathclose}{newoperators}{"21}
+ % \\re\@DeclareMathSymbol{+}{\\mathbin} {newoperators}{"2B}
+ \\re\@DeclareMathSymbol{:}{\\mathrel} {newoperators}{"3A}
+ \\re\@DeclareMathSymbol{;}{\\mathpunct}{newoperators}{"3B}
+ % \\re\@DeclareMathSymbol{=}{\\mathrel} {newoperators}{"3D}
+ \\re\@DeclareMathSymbol{?}{\\mathclose}{newoperators}{"3F}
+
+ \\re\@DeclareMathSymbol{.}{\\mathord} {newletters}{"3A}
+ \\re\@DeclareMathSymbol{,}{\\mathpunct}{newletters}{"3B}
+ % \\re\@DeclareMathSymbol{<}{\\mathrel} {newletters}{"3C}
+ % \\re\@DeclareMathSymbol{/}{\\mathord} {newletters}{"3D}
+ % \\re\@DeclareMathSymbol{>}{\\mathrel} {newletters}{"3E}
+
+ \\re\@DeclareMathSymbol{\\mathdollar}{\\mathord} {newoperators}{"24}
+ \\re\@DeclareMathSymbol{\\colon} {\\mathpunct}{newoperators}{"3A}
+
+ % \\DeclareMathDelimiter{(}{\\mathopen} {newoperators}{"28}{largesymbols}{"00}
+ % \\DeclareMathDelimiter{)}{\\mathclose}{newoperators}{"29}{largesymbols}{"01}
+ % \\DeclareMathDelimiter{[}{\\mathopen} {newoperators}{"5B}{largesymbols}{"02}
+ % \\DeclareMathDelimiter{]}{\\mathclose}{newoperators}{"5D}{largesymbols}{"03}
+ % \\DeclareMathDelimiter{/}{\\mathord} {newoperators}{"2F}{largesymbols}{"0E}
+
+ \\re\@DeclareMathAccent{\\grave} {\\mathalpha}{newoperators}{"12}
+ \\re\@DeclareMathAccent{\\acute} {\\mathalpha}{newoperators}{"13}
+ \\re\@DeclareMathAccent{\\check} {\\mathalpha}{newoperators}{"14}
+ \\re\@DeclareMathAccent{\\breve} {\\mathalpha}{newoperators}{"15}
+ \\re\@DeclareMathAccent{\\bar} {\\mathalpha}{newoperators}{"16}
+ \\re\@DeclareMathAccent{\\mathring}{\\mathalpha}{newoperators}{"17}
+ \\re\@DeclareMathAccent{\\hat} {\\mathalpha}{newoperators}{"5E}
+ \\re\@DeclareMathAccent{\\dot} {\\mathalpha}{newoperators}{"5F}
+ \\re\@DeclareMathAccent{\\tilde} {\\mathalpha}{newoperators}{"7E}
+ \\re\@DeclareMathAccent{\\ddot} {\\mathalpha}{newoperators}{"7F}
+
+ \\re\@DeclareMathSymbol{\\Gamma} {\\mathalpha}{newoperators}{"00}
+ \\re\@DeclareMathSymbol{\\Delta} {\\mathalpha}{newoperators}{"01}
+ \\re\@DeclareMathSymbol{\\Theta} {\\mathalpha}{newoperators}{"02}
+ \\re\@DeclareMathSymbol{\\Lambda} {\\mathalpha}{newoperators}{"03}
+ \\re\@DeclareMathSymbol{\\Xi} {\\mathalpha}{newoperators}{"04}
+ \\re\@DeclareMathSymbol{\\Pi} {\\mathalpha}{newoperators}{"05}
+ \\re\@DeclareMathSymbol{\\Sigma} {\\mathalpha}{newoperators}{"06}
+ \\re\@DeclareMathSymbol{\\Upsilon}{\\mathalpha}{newoperators}{"07}
+ \\re\@DeclareMathSymbol{\\Phi} {\\mathalpha}{newoperators}{"08}
+ \\re\@DeclareMathSymbol{\\Psi} {\\mathalpha}{newoperators}{"09}
+ \\re\@DeclareMathSymbol{\\Omega} {\\mathalpha}{newoperators}{"0A}
+
+ \\re\@DeclareMathSymbol{\\alpha} {\\mathord}{newletters}{"0B}
+ \\re\@DeclareMathSymbol{\\beta} {\\mathord}{newletters}{"0C}
+ \\re\@DeclareMathSymbol{\\gamma} {\\mathord}{newletters}{"0D}
+ \\re\@DeclareMathSymbol{\\delta} {\\mathord}{newletters}{"0E}
+ \\re\@DeclareMathSymbol{\\epsilon} {\\mathord}{newletters}{"0F}
+ \\re\@DeclareMathSymbol{\\zeta} {\\mathord}{newletters}{"10}
+ \\re\@DeclareMathSymbol{\\eta} {\\mathord}{newletters}{"11}
+ \\re\@DeclareMathSymbol{\\theta} {\\mathord}{newletters}{"12}
+ \\re\@DeclareMathSymbol{\\iota} {\\mathord}{newletters}{"13}
+ \\re\@DeclareMathSymbol{\\kappa} {\\mathord}{newletters}{"14}
+ \\re\@DeclareMathSymbol{\\lambda} {\\mathord}{newletters}{"15}
+ \\re\@DeclareMathSymbol{\\mu} {\\mathord}{newletters}{"16}
+ \\re\@DeclareMathSymbol{\\nu} {\\mathord}{newletters}{"17}
+ \\re\@DeclareMathSymbol{\\xi} {\\mathord}{newletters}{"18}
+ \\re\@DeclareMathSymbol{\\pi} {\\mathord}{newletters}{"19}
+ \\re\@DeclareMathSymbol{\\rho} {\\mathord}{newletters}{"1A}
+ \\re\@DeclareMathSymbol{\\sigma} {\\mathord}{newletters}{"1B}
+ \\re\@DeclareMathSymbol{\\tau} {\\mathord}{newletters}{"1C}
+ \\re\@DeclareMathSymbol{\\upsilon} {\\mathord}{newletters}{"1D}
+ \\re\@DeclareMathSymbol{\\phi} {\\mathord}{newletters}{"1E}
+ \\re\@DeclareMathSymbol{\\chi} {\\mathord}{newletters}{"1F}
+ \\re\@DeclareMathSymbol{\\psi} {\\mathord}{newletters}{"20}
+ \\re\@DeclareMathSymbol{\\omega} {\\mathord}{newletters}{"21}
+ \\re\@DeclareMathSymbol{\\varepsilon}{\\mathord}{newletters}{"22}
+ \\re\@DeclareMathSymbol{\\vartheta} {\\mathord}{newletters}{"23}
+ \\re\@DeclareMathSymbol{\\varpi} {\\mathord}{newletters}{"24}
+ \\re\@DeclareMathSymbol{\\varrho} {\\mathord}{newletters}{"25}
+ \\re\@DeclareMathSymbol{\\varsigma} {\\mathord}{newletters}{"26}
+ \\re\@DeclareMathSymbol{\\varphi} {\\mathord}{newletters}{"27}
+
+ \\ifthenelse{\\equal{\\$fam\@mathstyle}{TeX}}
+ {\\$fam\@mathGREEKuptrue}
+ {}
+ \\ifthenelse{\\equal{\\$fam\@mathstyle}{french}}
+ {\\$fam\@mathLATINuptrue
+ \\$fam\@mathGREEKuptrue
+ \\$fam\@mathgreekuptrue}
+ {}
+ \\ifthenelse{\\equal{\\$fam\@mathstyle}{upright}}
+ {\\$fam\@mathLATINuptrue
+ \\$fam\@mathlatinuptrue
+ \\$fam\@mathGREEKuptrue
+ \\$fam\@mathgreekuptrue}
+ {}
+
+ \\if$fam\@mathLATINup
+ \\re\@DeclareMathSymbol{A}{\\mathalpha}{newoperators}{`A}
+ \\re\@DeclareMathSymbol{B}{\\mathalpha}{newoperators}{`B}
+ \\re\@DeclareMathSymbol{C}{\\mathalpha}{newoperators}{`C}
+ \\re\@DeclareMathSymbol{D}{\\mathalpha}{newoperators}{`D}
+ \\re\@DeclareMathSymbol{E}{\\mathalpha}{newoperators}{`E}
+ \\re\@DeclareMathSymbol{F}{\\mathalpha}{newoperators}{`F}
+ \\re\@DeclareMathSymbol{G}{\\mathalpha}{newoperators}{`G}
+ \\re\@DeclareMathSymbol{H}{\\mathalpha}{newoperators}{`H}
+ \\re\@DeclareMathSymbol{I}{\\mathalpha}{newoperators}{`I}
+ \\re\@DeclareMathSymbol{J}{\\mathalpha}{newoperators}{`J}
+ \\re\@DeclareMathSymbol{K}{\\mathalpha}{newoperators}{`K}
+ \\re\@DeclareMathSymbol{L}{\\mathalpha}{newoperators}{`L}
+ \\re\@DeclareMathSymbol{M}{\\mathalpha}{newoperators}{`M}
+ \\re\@DeclareMathSymbol{N}{\\mathalpha}{newoperators}{`N}
+ \\re\@DeclareMathSymbol{O}{\\mathalpha}{newoperators}{`O}
+ \\re\@DeclareMathSymbol{P}{\\mathalpha}{newoperators}{`P}
+ \\re\@DeclareMathSymbol{Q}{\\mathalpha}{newoperators}{`Q}
+ \\re\@DeclareMathSymbol{R}{\\mathalpha}{newoperators}{`R}
+ \\re\@DeclareMathSymbol{S}{\\mathalpha}{newoperators}{`S}
+ \\re\@DeclareMathSymbol{T}{\\mathalpha}{newoperators}{`T}
+ \\re\@DeclareMathSymbol{U}{\\mathalpha}{newoperators}{`U}
+ \\re\@DeclareMathSymbol{V}{\\mathalpha}{newoperators}{`V}
+ \\re\@DeclareMathSymbol{W}{\\mathalpha}{newoperators}{`W}
+ \\re\@DeclareMathSymbol{X}{\\mathalpha}{newoperators}{`X}
+ \\re\@DeclareMathSymbol{Y}{\\mathalpha}{newoperators}{`Y}
+ \\re\@DeclareMathSymbol{Z}{\\mathalpha}{newoperators}{`Z}
+ \\fi
+
+ \\if$fam\@mathlatinup
+ \\DeclareSymbolFont{upletters} {OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{n}
+ \\SetSymbolFont{upletters}{bold}{OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{n}
+
+ \\re\@DeclareMathSymbol{a}{\\mathord}{upletters}{`a}
+ \\re\@DeclareMathSymbol{b}{\\mathord}{upletters}{`b}
+ \\re\@DeclareMathSymbol{c}{\\mathord}{upletters}{`c}
+ \\re\@DeclareMathSymbol{d}{\\mathord}{upletters}{`d}
+ \\re\@DeclareMathSymbol{e}{\\mathord}{upletters}{`e}
+ \\re\@DeclareMathSymbol{f}{\\mathord}{upletters}{`f}
+ \\re\@DeclareMathSymbol{g}{\\mathord}{upletters}{`g}
+ \\re\@DeclareMathSymbol{h}{\\mathord}{upletters}{`h}
+ \\re\@DeclareMathSymbol{i}{\\mathord}{upletters}{`i}
+ \\re\@DeclareMathSymbol{j}{\\mathord}{upletters}{`j}
+ \\re\@DeclareMathSymbol{k}{\\mathord}{upletters}{`k}
+ \\re\@DeclareMathSymbol{l}{\\mathord}{upletters}{`l}
+ \\re\@DeclareMathSymbol{m}{\\mathord}{upletters}{`m}
+ \\re\@DeclareMathSymbol{n}{\\mathord}{upletters}{`n}
+ \\re\@DeclareMathSymbol{o}{\\mathord}{upletters}{`o}
+ \\re\@DeclareMathSymbol{p}{\\mathord}{upletters}{`p}
+ \\re\@DeclareMathSymbol{q}{\\mathord}{upletters}{`q}
+ \\re\@DeclareMathSymbol{r}{\\mathord}{upletters}{`r}
+ \\re\@DeclareMathSymbol{s}{\\mathord}{upletters}{`s}
+ \\re\@DeclareMathSymbol{t}{\\mathord}{upletters}{`t}
+ \\re\@DeclareMathSymbol{u}{\\mathord}{upletters}{`u}
+ \\re\@DeclareMathSymbol{v}{\\mathord}{upletters}{`v}
+ \\re\@DeclareMathSymbol{w}{\\mathord}{upletters}{`w}
+ \\re\@DeclareMathSymbol{x}{\\mathord}{upletters}{`x}
+ \\re\@DeclareMathSymbol{y}{\\mathord}{upletters}{`y}
+ \\re\@DeclareMathSymbol{z}{\\mathord}{upletters}{`z}
+
+ \\re\@DeclareMathSymbol{\\imath}{\\mathord}{upletters}{"7B}
+ \\re\@DeclareMathSymbol{\\jmath}{\\mathord}{upletters}{"7C}
+ \\fi
+
+ \\if$fam\@mathGREEKup
+ \\else
+ \\re\@DeclareMathSymbol{\\Gamma} {\\mathalpha}{newletters}{"00}
+ \\re\@DeclareMathSymbol{\\Delta} {\\mathalpha}{newletters}{"01}
+ \\re\@DeclareMathSymbol{\\Theta} {\\mathalpha}{newletters}{"02}
+ \\re\@DeclareMathSymbol{\\Lambda} {\\mathalpha}{newletters}{"03}
+ \\re\@DeclareMathSymbol{\\Xi} {\\mathalpha}{newletters}{"04}
+ \\re\@DeclareMathSymbol{\\Pi} {\\mathalpha}{newletters}{"05}
+ \\re\@DeclareMathSymbol{\\Sigma} {\\mathalpha}{newletters}{"06}
+ \\re\@DeclareMathSymbol{\\Upsilon}{\\mathalpha}{newletters}{"07}
+ \\re\@DeclareMathSymbol{\\Phi} {\\mathalpha}{newletters}{"08}
+ \\re\@DeclareMathSymbol{\\Psi} {\\mathalpha}{newletters}{"09}
+ \\re\@DeclareMathSymbol{\\Omega} {\\mathalpha}{newletters}{"0A}
+ \\fi
+
+ \\if$fam\@mathgreekup
+ \\DeclareSymbolFont{upletters} {OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{n}
+ \\SetSymbolFont{upletters}{bold}{OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{n}
+
+ \\re\@DeclareMathSymbol{\\alpha} {\\mathord}{upletters}{"0B}
+ \\re\@DeclareMathSymbol{\\beta} {\\mathord}{upletters}{"0C}
+ \\re\@DeclareMathSymbol{\\gamma} {\\mathord}{upletters}{"0D}
+ \\re\@DeclareMathSymbol{\\delta} {\\mathord}{upletters}{"0E}
+ \\re\@DeclareMathSymbol{\\epsilon} {\\mathord}{upletters}{"0F}
+ \\re\@DeclareMathSymbol{\\zeta} {\\mathord}{upletters}{"10}
+ \\re\@DeclareMathSymbol{\\eta} {\\mathord}{upletters}{"11}
+ \\re\@DeclareMathSymbol{\\theta} {\\mathord}{upletters}{"12}
+ \\re\@DeclareMathSymbol{\\iota} {\\mathord}{upletters}{"13}
+ \\re\@DeclareMathSymbol{\\kappa} {\\mathord}{upletters}{"14}
+ \\re\@DeclareMathSymbol{\\lambda} {\\mathord}{upletters}{"15}
+ \\re\@DeclareMathSymbol{\\mu} {\\mathord}{upletters}{"16}
+ \\re\@DeclareMathSymbol{\\nu} {\\mathord}{upletters}{"17}
+ \\re\@DeclareMathSymbol{\\xi} {\\mathord}{upletters}{"18}
+ \\re\@DeclareMathSymbol{\\pi} {\\mathord}{upletters}{"19}
+ \\re\@DeclareMathSymbol{\\rho} {\\mathord}{upletters}{"1A}
+ \\re\@DeclareMathSymbol{\\sigma} {\\mathord}{upletters}{"1B}
+ \\re\@DeclareMathSymbol{\\tau} {\\mathord}{upletters}{"1C}
+ \\re\@DeclareMathSymbol{\\upsilon} {\\mathord}{upletters}{"1D}
+ \\re\@DeclareMathSymbol{\\phi} {\\mathord}{upletters}{"1E}
+ \\re\@DeclareMathSymbol{\\chi} {\\mathord}{upletters}{"1F}
+ \\re\@DeclareMathSymbol{\\psi} {\\mathord}{upletters}{"20}
+ \\re\@DeclareMathSymbol{\\omega} {\\mathord}{upletters}{"21}
+ \\re\@DeclareMathSymbol{\\varepsilon}{\\mathord}{upletters}{"22}
+ \\re\@DeclareMathSymbol{\\vartheta} {\\mathord}{upletters}{"23}
+ \\re\@DeclareMathSymbol{\\varpi} {\\mathord}{upletters}{"24}
+ \\re\@DeclareMathSymbol{\\varrho} {\\mathord}{upletters}{"25}
+ \\re\@DeclareMathSymbol{\\varsigma} {\\mathord}{upletters}{"26}
+ \\re\@DeclareMathSymbol{\\varphi} {\\mathord}{upletters}{"27}
+ \\fi
+\\fi
+
+END_STY_MATH
+
+ if ($seen{sw}) {
+ print {$STY} <<"END_STY_MATHCAL";
+\\if$fam\@mathcal
+ \\SetMathAlphabet{\\mathcal}{normal}{OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{sw}
+ \\SetMathAlphabet{\\mathcal}{bold} {OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{sw}
+\\fi
+
+END_STY_MATHCAL
+ }
+ }
+
+ print {$STY} "\\endinput\n";
close $STY;
return;
@@ -889,7 +1307,9 @@
\\fi
\\DeclareFontFamily{$enc}{$fam-$sty}{@{[
- $ARGV{nfss} eq 'tt' ? '\hyphenchar\font=-1' : ""
+ $ARGV{nfss} eq 'tt' ? '\hyphenchar\font=-1'
+ : $enc eq 'OML' ? '\skewchar\font=127'
+ : q{}
]}}
END_FD_HEADER
@@ -1076,6 +1496,9 @@
nfssweight: @{[ join q{, }, @{$ARGV{nfssweight}} ]}
nfsswidth: @{[ join q{, }, @{$ARGV{nfsswidth}} ]}
+ math: @{[ $ARGV{math} ? 'yes' : 'no' ]}
+ mathspacing: $ARGV{mathspacing}
+
END_ARGUMENTS
if ($ARGV{fig_height} or $ARGV{fig_width}) {
@@ -1182,7 +1605,7 @@
$workitem->{encoding},
$workitem->{figurestyle},
$workitem->{fdshape},
- join(q(, ), @{$workitem->{features}});
+ join(q{, }, @{$workitem->{features}});
$prevfn = $workitem->{font}{filename};
}
@@ -1317,8 +1740,8 @@
c => [ qw( condensed ) ],
sc => [ qw( semicondensed narrow ) ],
'' => [ qw( regular ) ],
- sx => [ qw( semiextended semiexpanded ) ],
- x => [ qw( extended expanded wide ) ],
+ sx => [ qw( semiextended semiexpanded wide ) ],
+ x => [ qw( extended expanded ) ],
ex => [],
ux => [],
);
@@ -1645,7 +2068,7 @@
-defaulttabular considered 'default' for this font; see docs
-defaultproportional
- -extra="TEXT" Add TEXT to the command for 'otftotfm'
+ -extra="EXTRA" Add EXTRA to the otftotfm command for all fonts
-target="DIRECTORY" Install files into specified TEXMF tree
-vendor="VENDOR" Only used for naming directories
-typeface="TYPEFACE" Only used for naming directories
@@ -1664,6 +2087,9 @@
-verbose Print more data to log file
-version Print version number and exit
+ -math Generate basic math fonts
+ -mathspacing=AMOUNT Letterspace the math fonts by AMOUNT/1000 em
+
font[s] The fonts (.otf or .ttf format) to install.
Please report any bugs or suggestions to <marcpenninga at gmail.com>.
@@ -1700,6 +2126,8 @@
verbose => 0,
nfsswidth => [],
nfssweight => [],
+ math => 0,
+ mathspacing => 0,
);
@@ -1765,12 +2193,14 @@
NFSS::set_widths($key, @values);
$ARGV{$key} = 'user-defined';
},
+ 'math!' => \$ARGV{math},
+ 'mathspacing=i' => \$ARGV{mathspacing},
)
or die "$USAGE";
if (!@ARGV) {
Pod::Usage::pod2usage(
- -msg => '[ERROR] No font files given, nothing to do!',
+ -msg => '[ERROR] No font files given, nothing to do!',
-verbose => 1);
}
@@ -1827,6 +2257,7 @@
# The official names for various coding schemes.
my %SCHEME = (
OT1 => 'TEX TEXT',
+ OML => 'TEX MATH ITALIC',
T1 => 'EXTENDED TEX FONT ENCODING - LATIN',
TS1 => 'TEX TEXT COMPANION SYMBOLS 1---TS1',
LY1 => 'TEX TYPEWRITER AND WINDOWS ANSI',
@@ -1988,6 +2419,13 @@
extra => '',
name => '',
},
+ math => {
+ code => { n => 'n', it => 'it', sl => 'sl' },
+ reqd => [],
+ nice => [ 'onum' ],
+ extra => '--math-spacing=127',
+ name => '',
+ },
);
=begin Comment
@@ -2024,25 +2462,25 @@
reqd => [],
nice => [ 'kern', 'liga' ],
extra => '',
- styles => [ 'normal', 'smallcaps', 'swash', 'textcomp' ],
+ styles => [ qw(normal smallcaps swash textcomp math) ],
},
LF => {
reqd => [],
nice => [ 'kern', 'liga' ],
extra => '',
- styles => [ 'normal', 'smallcaps', 'swash', 'textcomp' ],
+ styles => [ qw(normal smallcaps swash textcomp math) ],
},
TOsF => {
reqd => [],
nice => [ 'kern', 'liga' ],
extra => '',
- styles => [ 'normal', 'smallcaps', 'swash', 'textcomp' ],
+ styles => [ qw(normal smallcaps swash textcomp math) ],
},
OsF => {
reqd => [],
nice => [ 'kern', 'liga' ],
extra => '',
- styles => [ 'normal', 'smallcaps', 'swash', 'textcomp' ],
+ styles => [ qw(normal smallcaps swash textcomp math) ],
},
Sup => {
reqd => [ 'sups' ],
@@ -2097,9 +2535,8 @@
sub get_styles {
my $figurestyle = shift;
- my $result = $FIGURESTYLE{$figurestyle}{styles} // [];
-
- return @{$result};
+ return grep { defined $STYLE{$_} }
+ @{$FIGURESTYLE{$figurestyle}{styles}};
}
@@ -2286,6 +2723,21 @@
delete $STYLE{textcomp};
}
+ if ($ARGV{math}) {
+ if (!( grep { $_ eq 'OT1' } @{$ARGV{encoding}} )) {
+ $ARGV{encoding} = [ 'OT1', @{$ARGV{encoding}} ];
+ }
+ }
+ else {
+ delete $STYLE{math}
+ }
+
+ if ($ARGV{mathspacing}) {
+ if (defined $STYLE{math}{extra}) {
+ $STYLE{math}{extra} .= " --letterspacing=$ARGV{mathspacing}";
+ }
+ }
+
return;
}
@@ -2566,6 +3018,7 @@
= @{$workitem}{qw(font figurestyle style)};
my @encodings = $style eq 'textcomp' ? qw(ts1)
: $figurestyle eq 'Orn' ? qw(ly1)
+ : $style eq 'math' ? qw(oml)
: @{$ARGV{encoding}}
;
@@ -2600,8 +3053,12 @@
}
}
- # Look up the NFSS code for this font's shape.
+ # Look up the NFSS code for this font's shape...
$workitem->{fdshape} = Tables::get_fdshape($style, $font->{basicshape});
+ # ... but drop this workitem if we shouldn't generate this shape.
+ if (!defined $workitem->{fdshape}) {
+ return;
+ }
# Figure out which encoding file to use for this font.
my $try = Cwd::abs_path($workitem->{encoding});
@@ -2611,7 +3068,8 @@
}
else {
($workitem->{enc_file} = $workitem->{encoding})
- =~ s/\A(OT1|T1|TS1|LY1|LGR|T2[ABC]|T3|TS3)\z/fontools_\L$1\E/xmsi;
+ =~ s{ \A (OT1|OML|T1|TS1|LY1|LGR|T2[ABC]|T3|TS3) \z }
+ {fontools_\L$1\E}xmsi;
}
# Ornaments have no text encoding, and don't need kerning and ligatures.
@@ -2631,9 +3089,9 @@
# Don't create ligatures if the user doesn't want them.
delete $feature{liga} if !$ARGV{ligatures};
- # Don't create kerns and ligatures for TS* fonts.
+ # Don't create kerns and ligatures for symbol or math fonts.
delete @feature{qw(kern liga)}
- if $workitem->{encoding} =~ m/\A TS\d \z/xmsi;
+ if $workitem->{encoding} =~ m/\A ( TS\d | OML ) \z/xmsi;
$workitem->{features} = [ sort keys %feature ];
@@ -2668,7 +3126,7 @@
To create the documentation:
- pod2man --center="Marc Penninga" --release="fontools" --section=1 \
+ pod2man --center='Marc Penninga' --release='fontools' --section=1 \
autoinst - | groff -Tps -man - | ps2pdf - autoinst.pdf
@@ -2734,7 +3192,7 @@
=item I<nw>
-"Upright swash"
+`Upright swash'
=back
@@ -2752,11 +3210,11 @@
=item -
-Families with "Titling" characters;
-these "... replace the default glyphs
+Families with `Titling' characters;
+these `... replace the default glyphs
with corresponding forms designed specifically for titling.
These may be all-capital and/or larger on the body,
-and adjusted for viewing at larger sizes"
+and adjusted for viewing at larger sizes'
(according to the OpenType Specification).
=item -
@@ -2770,7 +3228,7 @@
Of course, if your fonts don't contain italics, oldstyle digits, small caps
etc., the corresponding shapes and families are not created.
In addition, the creation of most families and shapes can be controlled
-by the user (see L</"COMMAND-LINE OPTIONS"> below).
+by the user (see L</COMMAND-LINE OPTIONS> below).
These families use the I<FontPro> project's naming scheme:
I<< <FontFamily>-<Suffix> >>, where I<< <Suffix> >> is:
@@ -2806,7 +3264,7 @@
=item I<Titl>
-Titling characters; see above.
+Titling characters; see above
=item I<Orn>
@@ -2824,55 +3282,11 @@
The individual fonts are named I<< <FontName>-<suffix>-<shape>-<enc> >>,
where I<< <suffix> >> is the same as above (but in lowercase),
-I<< <shape> >> is either empty, "sc" or "swash",
+I<< <shape> >> is either empty, `sc' or `swash',
and I<< <enc> >> is the encoding (also in lowercase).
-A typical name in this scheme would be "FiraSans-Light-osf-sc-ly1".
+A typical name in this scheme would be `FiraSans-Light-osf-sc-ly1'.
-=head2 About the log file
-
-B<autoinst> writes some info about what it thinks it's doing to a log file.
-By default this is called F<< <fontfamily>.log >>,
-but this choice can be overridden by the user;
-see the I<-logfile> command-line option in L</"COMMAND-LINE OPTIONS"> below.
-If this log file already exists, B<autoinst> will append its data to the end
-rather than overwrite it.
-Use the I<-verbose> command-line option to ask for more detailed info.
-
-
-=head2 A note for MiKTeX users
-
-Automatically installing the fonts into a suitable TEXMF tree
-(as B<autoinst> tries to do by default) only works for TeX-installations
-that use the F<kpathsea> library; with TeX distributions that implement
-their own directory searching (such as MiKTeX), B<autoinst> will complain
-that it cannot find the F<kpsewhich> program and move all generated files
-into a subdirectory C<./autoinst_output/> of the current directory.
-If you use such a TeX distribution, you should either move these files
-to their correct destinations by hand, or use the I<-target> option
-(see L</"COMMAND-LINE OPTIONS"> below) to manually specify a TEXMF tree.
-
-Also, some OpenType fonts contain so many kerning pairs that the resulting
-F<pl> and F<vpl> files are too big for MiKTeX's F<pltotf> and F<vptovf>;
-the versions that come with W32TeX (F<http://www.w32tex.org>)
-and TeXLive (F<http://tug.org/texlive>) don't seem to have this problem.
-
-
-=head2 A note for MacTeX users
-
-By default, B<autoinst> will try to install all generated files into
-the $TEXMFLOCAL tree; when this directory isn't user-writable,
-it will use the $TEXMFHOME tree instead. Unfortunately, MacTeX's version
-of C<updmap-sys> (which is called behind the scenes) doesn't search
-in $TEXMFHOME, and hence MacTeX will not find the new fonts.
-
-To remedy this, either run B<autoinst> as root (so that it can install
-everything into $TEXMFLOCAL) or manually run C<updmap -user> to tell
-TeX about the files in $TEXMFHOME.
-The latter option does, however, have some caveats;
-see F<https://tug.org/texlive/scripts-sys-user.html>.
-
-
=head2 Using the fonts in your LaTeX documents
B<autoinst> generates a style file for using the fonts in LaTeX documents,
@@ -2897,30 +3311,32 @@
=item C<lining>, C<oldstyle>, C<tabular>, C<proportional>
Choose which figure style to use.
-The defaults are "oldstyle" and "proportional" (if available).
+The defaults are `oldstyle' and `proportional' (if available).
-=item C<<< scale=I<< <number> >> >>>
+=item C<<< scale=I<< <number> >> >>>, C<scale=MatchLowercase>
Scale the font by a factor of I<< <number> >>.
E.g., to increase the size of the font by 5%, use
C<<< \usepackage[scale=1.05]{I<< <FontFamily> >>} >>>.
-May also be spelled C<scaled>.
+The special value C<MatchLowercase> may be used to scale the font
+so that its x-height matches that of the previously active font
+(which is usually Computer Modern, unless you have loaded another
+font package before this one).
+The name C<scaled> may be used as a synonym for C<scale>.
-This option is only available when you have the F<xkeyval> package installed.
-
=item C<medium>, C<book>, C<text>, C<regular>
-Select the weight that LaTeX will use as the "regular" weight;
+Select the weight that LaTeX will use as the `regular' weight;
the default is C<regular>.
=item C<heavy>, C<black>, C<extrabold>, C<demibold>, C<semibold>, C<bold>
-Select the weight that LaTeX will use as the "bold" weight;
+Select the weight that LaTeX will use as the `bold' weight;
the default is C<bold>.
=back
-The previous two groups of options will only work if
+The last two groups of options will only work if
you have the F<mweights> package installed.
The style file will also try to load the F<fontaxes> package
@@ -2935,8 +3351,8 @@
DECLARATION COMMAND SHORT FORM OF COMMAND
\tlshape \texttitling \texttl
- \sufigures \textsuperior \textsu
- \infigures \textinferior \textin
+ \supfigures \textsuperior \textsup, \textsu
+ \inffigures \textinferior \textinf, \textin
In addition, the C<\swshape> and C<\textsw> commands are redefined to place
@@ -2958,40 +3374,75 @@
By default, B<autoinst> generates text fonts with OT1, LY1 and T1
encodings, and the generated style files use T1 as the default text encoding.
Other encodings can be chosen using the I<-encoding> option
-(see L</"COMMAND-LINE OPTIONS"> below).
+(see L</COMMAND-LINE OPTIONS> below).
-=head3 Ornaments
+=head2 Maths
-Ornament fonts are regular LY1-encoded fonts, with a number of
-'regular' characters replaced by ornament glyphs.
-The OpenType specification says that fonts should only put their
-ornaments in place of the lowercase ASCII letters or the 'bullet'
-character, but some fonts put them in other positions (such as those
-of the digits) as well.
+This is an experimental feature; B<USE AT YOUR OWN RISK!>
+Test the results thoroughly before using them in real documents,
+and be warned that future versions of B<autoinst> may introduce
+incompatible changes.
-Ornament glyphs can be accessed like C<{\ornaments abc}> and
-C<{\ornaments\char"61}>, or equivalently
-C<\textornaments{abc}> and C<\textornaments{\char"61}>.
-To see which ornaments a font contains (and at which positions),
-run LaTeX on the file F<nfssfont.tex> (which is included in any
-standard LaTeX installation), supply the name of the ornament font
-(i.e., C<GaramondLibre-Regular-orn-u>) and say C<\table\bye>;
-this will create a table of all glyphs in that font.
+The I<-math> option tells B<autoinst> to generate basic math fonts.
+When enabled, the generated style file defines a few extra options
+to access these math fonts:
-Note that versions of B<autoinst> up to 20200428 handled ornaments
-differently, and fonts and style files generated by those versions
-are not compatible with files generated by newer versions.
+=over 4
+=item C<math>
+Use these fonts for the maths in your document.
+
+=item C<mathlining>, C<matholdstyle>
+
+Choose which figure style to use in maths.
+The default is `mathlining'.
+
+=item C<mathcal>
+
+Use the swash characters from your fonts as the C<\mathcal> alphabet.
+(This option only exists if your fonts actually contain swash characters
+and a C<swsh> feature to access them).
+
+=item C<<< math-style=I<< <style> >> >>>
+
+Choose the `math style' to use.
+With C<math-style=ISO>, all latin and greek letters in math are italic;
+with C<math-style=TeX> (the default), uppercase greek is upright;
+with C<math-style=french>, all greek as well as uppercase latin is upright;
+and with C<math-style=upright> all letters are upright.
+
+=back
+
+Note that this `math' option only changes digits, latin and greek letters,
+plus a few basic punctuation characters; all other mathematical symbols,
+operators, delimiters etc. are left as they were before.
+If you don't want to use TeX's default versions of those symbols,
+load another math package (such as F<mathdesign> or F<newtxmath>)
+before loading the B<autoinst>-generated style file.
+
+Finally, note that B<autoinst> doesn't check if your fonts actually contains
+all of the required characters;
+it just assumes that they do and sets up the style file accordingly.
+Even if your fonts contain greek, characters such as C<\varepsilon>
+may be missing.
+You may also find that some glyphs I<are> present in your fonts,
+but don't work well in equations or don't match with other symbols;
+edit the generated style file to remove the declarations of
+these offending characters.
+Once again: test the results before using them!
+If the characters themselves are fine but spaced too tightly,
+you may try increasing the side bearings in math fonts with
+the I<-mathspacing> option (see below), e.g. C<-mathspacing=100>.
+
+
=head2 NFSS codes
LaTeX's New Font Selection System (NFSS)
identifies fonts by a combination of family,
series (the concatenation of weight and width), shape and size.
-B<autoinst> parses the font's metadata
-(more precisely: the output of C<otfinfo --info>)
-to determine these parameters.
+B<autoinst> parses the font's metadata to determine these parameters.
When this fails (usually because the font family contains uncommon weights,
widths or shapes),
B<autoinst> ends up with different fonts having the I<same> values
@@ -3013,16 +3464,16 @@
Oblique, Slant(ed), Incline(d) sl
(I<Exception:> Adobe Silentium Pro contains two Roman shapes;
-we map the first of these to "n", for the second one we (ab)use the "it" code
+we map the first of these to `n', for the second one we (ab)use the `it' code
as this family doesn't contain an Italic shape.)
The mapping of weights and widths to NFSS codes is a more complex,
two-step proces.
-In the first step, all fonts are assigned a "series" name that is simply
+In the first step, all fonts are assigned a `series' name that is simply
the concatenation of its weight and width
(after expanding any abbreviations and converting to lowercase).
-A font with "Cond" width and "Ultra" weight will then be known
-as "ultrablackcondensed".
+A font with `Cond' width and `Ultra' weight will then be known
+as `ultrablackcondensed'.
In the second step, B<autoinst> tries to map all combinations of NFSS codes
(ul, el, l, sl, m, sb, b, eb and ub for weights;
@@ -3033,11 +3484,11 @@
a unique code in a sane way (especially for the weights, some font families
offer more choices or finer granularity than NFSS's codes can handle;
e.g., Fira Sans contains fifteen(!) different weights,
-including an additional "Medium" weight between Regular and Semibold).
+including an additional `Medium' weight between Regular and Semibold).
B<autoinst> tries hard to ensure that the most common NFSS codes
(and high-level commands such as C<\bfseries>,
-which are built on top of those codes) will "just work".
+which are built on top of those codes) will `just work'.
To see exactly which NFSS codes map to which fonts, see the log file
(pro tip: run B<autoinst> with the I<-dryrun> option
@@ -3050,6 +3501,28 @@
(i.e., C<\fontseries{demibold}\selectfont>).
+=head2 Ornaments
+
+Ornament fonts are regular LY1-encoded fonts, with a number of
+`regular' characters replaced by ornament glyphs.
+The OpenType specification says that fonts should only put their
+ornaments in place of the lowercase ASCII letters, but some fonts
+put them in other positions (such as those of the digits) as well.
+
+Ornaments can be accessed like C<{\ornaments a}> and
+C<{\ornaments\char"61}>, or equivalently
+C<\textornaments{a}> and C<\textornaments{\char"61}>.
+To see which ornaments a font contains (and at which positions),
+run LaTeX on the file F<nfssfont.tex> (which is included in any
+standard LaTeX installation), supply the name of the ornament font
+(i.e., C<GaramondLibre-Regular-orn-u>) and give the command C<\table\bye>;
+this will create a table of all glyphs in that font.
+
+Note that versions of B<autoinst> up to 20200428 handled ornaments
+differently, and fonts and style files generated by those versions
+are not compatible with files generated by newer versions.
+
+
=head1 COMMAND-LINE OPTIONS
B<autoinst> tries hard to do The Right Thing (TM) by default,
@@ -3091,7 +3564,7 @@
Generate the specified encoding(s) for the text fonts.
Multiple encodings may be specified as a comma-separated list
-(without spaces!); the default choice of encodings is "OT1,LY1,T1".
+(without spaces!); the default choice of encodings is `OT1,LY1,T1'.
For each specified encoding XYZ, B<autoinst> will first see if there is
an encoding file F<XYZ.enc> in the current directory, and if found it will
@@ -3099,7 +3572,7 @@
Currently B<autoinst> comes with support for the OT1, T1/TS1, LY1, LGR,
T2A/B/C and T3/TS3 encodings.
(These files are called F<fontools_ot1.enc> etc. to avoid name clashes
-with other packages; the "fontools_" prefix may be omitted.)
+with other packages; the `fontools_' prefix may be omitted.)
=item B<-ts1>/B<-nots1>
@@ -3118,15 +3591,15 @@
it will - by default - turn off the use of f-ligatures
(though this can be overridden with the I<-ligatures> option),
and it will disable hyphenation for this font.
-This latter effect cannot be disabled in B<autoinst>;
+This latter effect cannot be re-enabled in B<autoinst>;
if you want typewriter text to be hyphenated, use the F<hyphenat> package.
If none of these options is specified, B<autoinst> tries to guess:
-if the font's filename contains the string "mono"
+if the font's filename contains the string `mono'
or if the field C<isFixedPitch> in the font's I<post> table is True,
it will select B<-typewriter>;
-else if the filename contains "sans" it selects B<-sanserif>;
-and otherwise it will opt for B<-serif>.
+else if the filename contains `sans' it will select B<-sanserif>;
+otherwise it will opt for B<-serif>.
=item B<-lining>/B<-nolining>
@@ -3171,12 +3644,12 @@
=item B<-inferiors> [= B<none> | B<auto> | B<subs> | B<sinf> | B<dnom> ]
The OpenType standard defines several kinds of digits that might be used
-as inferiors or subscripts: "Subscripts" (OpenType feature "subs"),
-"Scientific Inferiors" ("sinf"), and "Denominators" ("dnom").
+as inferiors or subscripts: `Subscripts' (OpenType feature `subs'),
+`Scientific Inferiors' ('sinf'), and `Denominators' ('dnom').
This option allows the user to determine which of these styles B<autoinst>
should use for the inferior characters.
-Alternatively, the value "auto" tells B<autoinst> to use the first value
-in "sinf", "subs" or "dnom" that is supported by the font.
+Alternatively, the value `auto' tells B<autoinst> to use the first value
+in `sinf', `subs' or `dnom' that is supported by the font.
Saying just B<-inferiors> is equivalent to B<-inferiors=auto>;
otherwise the default is B<-noinferiors>.
@@ -3196,7 +3669,7 @@
=item B<-ligatures>/B<-noligatures>
Some fonts create glyphs for the standard f-ligatures (ff, fi, fl, ffi, ffl),
-but don't provide a "liga" feature to access these.
+but don't provide a `liga' feature to access these.
This option tells B<autoinst> to add extra C<LIGKERN> rules to
the generated fonts to enable the use of these ligatures.
The default is B<-ligatures>,
@@ -3203,8 +3676,19 @@
unless the user specified the I<-typewriter> option.
Specify B<-noligatures> to disable the generation of ligatures even for fonts
-that do contain a "liga" feature.
+that do contain a `liga' feature.
+=item B<-math>
+
+Tells B<autoinst> to create basic math fonts (see above).
+
+=item B<-mathspacing>=I<amount>
+
+Letterspace each character in the math fonts by I<amount> units,
+where 1000 units equal one em.
+In my opinion, many text fonts benefit from letterspacing by 50 to 100 units
+when used in maths; some fonts need even more. Use your own judgement!
+
=item B<-defaultlining>/B<-defaultoldstyle>
=item B<-defaulttabular>/B<-defaultproportional>
@@ -3228,21 +3712,23 @@
Note that this option leads to very long commands (it adds
one hundred I< --ligkern> options), which may cause problems on some systems.
-=item B<-nfssweight>=I<code>=I<weight>, B<-nfsswidth>=I<code>=I<width>
+=item B<-nfssweight>=I<code>=I<weight>
+=item B<-nfsswidth>=I<code>=I<width>
+
Map the NFSS code I<code> to the given weight or width,
overriding the built-in tables.
Each of these options may be given multiple times,
to override more than one NFSS code.
-Example: to map the "ul" code to the "Thin" weight,
+Example: to map the `ul' code to the `Thin' weight,
use C<-nfssweight=ul=thin>.
-To inhibit the use of the "ul" code completely,
+To inhibit the use of the `ul' code completely,
use C<-nfssweight=ul=>.
-=item B<-extra>=I<text>
+=item B<-extra>=I<extra>
-Append I<text> as extra options to the command lines for I<otftotfm>.
-To prevent I<text> from accidentily being interpreted as options
+Append I<extra> as extra options to the command lines for I<otftotfm>.
+To prevent I<extra> from accidentily being interpreted as options
to B<autoinst>, it should be properly quoted.
=item B<-manual>
@@ -3301,9 +3787,9 @@
=item B<-typeface>=I<TYPEFACE>
These options are equivalent to F<otftotfm>'s I< --vendor> and I< --typeface>
-options: they change the "vendor" and "typeface" parts of the names of the
+options: they change the `vendor' and `typeface' parts of the names of the
subdirectories in the TEXMF tree where generated files will be stored.
-The default values are "lcdftools" and the font's FontFamily name.
+The default values are `lcdftools' and the font's FontFamily name.
Note that these options change I<only> directory names,
not the names of any generated files.
@@ -3316,6 +3802,39 @@
=back
+=head2 A note for MiKTeX users
+
+Automatically installing the fonts into a suitable TEXMF tree
+(as B<autoinst> tries to do by default) only works for TeX-installations
+that use the F<kpathsea> library; with TeX distributions that implement
+their own directory searching (such as MiKTeX), B<autoinst> will complain
+that it cannot find the F<kpsewhich> program and move all generated files
+into a subdirectory C<./autoinst_output/> of the current directory.
+If you use such a TeX distribution, you should either move these files
+to their correct destinations by hand, or use the I<-target> option
+(see L</COMMAND-LINE OPTIONS> below) to manually specify a TEXMF tree.
+
+Also, some OpenType fonts contain so many kerning pairs that the resulting
+F<pl> and F<vpl> files are too big for MiKTeX's F<pltotf> and F<vptovf>;
+the versions that come with W32TeX (F<http://www.w32tex.org>)
+and TeXLive (F<http://tug.org/texlive>) don't seem to have this problem.
+
+
+=head2 A note for MacTeX users
+
+By default, B<autoinst> will try to install all generated files into
+the $TEXMFLOCAL tree; when this directory isn't user-writable,
+it will use the $TEXMFHOME tree instead. Unfortunately, MacTeX's version
+of C<updmap-sys> (which is called behind the scenes) doesn't search
+in $TEXMFHOME, and hence MacTeX will not find the new fonts.
+
+To remedy this, either run B<autoinst> as root (so that it can install
+everything into $TEXMFLOCAL) or manually run C<updmap -user> to tell
+TeX about the files in $TEXMFHOME.
+The latter option does, however, have some caveats;
+see F<https://tug.org/texlive/scripts-sys-user.html>.
+
+
=head1 SEE ALSO
Eddie Kohler's B<TypeTools> (F<http://www.lcdf.org/type>).
@@ -3371,7 +3890,7 @@
=head1 VERSION
-This document describes B<autoinst> version 20200511.
+This document describes B<autoinst> version 20200527.
=head1 RECENT CHANGES
@@ -3380,6 +3899,18 @@
=over 12
+=item I<2020-05-27>
+
+Added basic (and still somewhat experimental) math support.
+Implemented the C<scale=MatchLowercase> option value
+in the generated style files.
+`Wide' fonts are mapped to the `sx' NFSS code instead of `x',
+to cater for League Mono Variable's Wide and Extended widths.
+The generated style files now use C<\textsup> and C<\textinf>
+instead of the more cryptic C<\textsu> and C<\textin> to access
+superior and inferior characters
+(though the old forms are retained for backwards compatibility).
+
=item I<2020-05-11>
When present, use encoding files in the current working directory
@@ -3479,13 +4010,13 @@
=item I<2019-05-17>
Changed the way the F<-ligatures> option works:
-F<-ligatures> enables f-ligatures (even without a "liga" feature),
-F<-noligatures> now disables f-ligatures (overriding a "liga" feature).
+F<-ligatures> enables f-ligatures (even without a `liga' feature),
+F<-noligatures> now disables f-ligatures (overriding a `liga' feature).
=item I<2019-05-11>
Separate small caps families are now also recognised when the family name
-ends with "SC" (previously B<autoinst> only looked for "SmallCaps").
+ends with `SC' (previously B<autoinst> only looked for `SmallCaps').
=item I<2019-04-22>
@@ -3500,7 +4031,7 @@
Added the <-mergesmallcaps> option, to handle cases where
the small caps fonts are in separate font families.
Titling shape is now treated as a separate family instead of a distinct shape;
-it is generated only for fonts with the 'titl' feature.
+it is generated only for fonts with the `titl' feature.
Only add f-ligatures to fonts when explicitly asked to (I<-ligatures>).
=item I<2019-04-11>
@@ -3522,7 +4053,7 @@
put all generated files into a subdirectory C<./autoinst_output/>
instead of all over the current working directory.
-Added "auto" value to the I<inferiors> option,
+Added `auto' value to the I<inferiors> option,
to tell B<autoinst> to use whatever inferior characters are available.
=item I<2019-03-14>
@@ -3530,9 +4061,9 @@
Overhauled the mapping of fonts (more specifically of weights and widths;
the mapping of shapes didn't change) to NFSS codes.
Instead of inventing our own codes to deal with every possible weight
-and width out there, we now create "long" codes based on the names
+and width out there, we now create `long' codes based on the names
in the font metadata.
-Then we add "ssub" rules to the F<fd> files to map the standard NFSS codes
+Then we add `ssub' rules to the F<fd> files to map the standard NFSS codes
to our fancy names (see the section B<NFSS codes>;
based on discussions with Frank Mittelbach and Bob Tennent).
@@ -3553,26 +4084,26 @@
=item I<2018-03-26>
-Added the "Text" weight and the I<-(no)mergewidths> option.
-Changed the NFSS codes for "Thin" and "Book" to "i" and "o", respectively.
+Added the `Text' weight and the I<-(no)mergewidths> option.
+Changed the NFSS codes for `Thin' and `Book' to `i' and `o', respectively.
Tried to improve the documentation.
=item I<2018-01-09>
-Added the "sl" weight for font families (such as Fira Sans) that contain both
-"Book" and "Regular" weights (reported by Bob Tennent).
-Added the "Two", "Four", "Eight" and "Hair" weights (for Fira Sans).
+Added the `sl' weight for font families (such as Fira Sans) that contain both
+`Book' and `Regular' weights (reported by Bob Tennent).
+Added the `Two', `Four', `Eight' and `Hair' weights (for Fira Sans).
=item I<2017-06-16>
Changed the I<-inferiors> option from a binary yes-or-no choice to allow
-the user to choose one of the "subs", "sinf" and "dnom" features.
+the user to choose one of the `subs', `sinf' and `dnom' features.
B<autoinst> now always creates a log file.
=item I<2017-03-21>
-Updated the F<fontools_ot1.enc> encoding file to include the "Lslash"
-and "lslash" glyphs (thanks to Bob Tennent).
+Updated the F<fontools_ot1.enc> encoding file to include the `Lslash'
+and `lslash' glyphs (thanks to Bob Tennent).
=item I<2015-11-22>
@@ -3588,8 +4119,8 @@
=item I<2014-01-21>
-"Oblique" or "slanted" fonts are now mapped to NFSS code "sl" instead
-of "it"; added "ssub" rules to the F<fd> files to substitute slanted fonts
+`Oblique' or `slanted' fonts are now mapped to NFSS code `sl' instead
+of `it'; added `ssub' rules to the F<fd> files to substitute slanted fonts
for italic ones if the latter are missing. Fixed a few bugs.
=item I<2014-01-03>
@@ -3618,16 +4149,16 @@
=item I<2013-02-06>
Bugfix: the directory names for map and encoding files contained
-the "vendor" instead of the "typeface".
+the `vendor' instead of the `typeface'.
=item I<2013-01-03>
-Added extra "ssub" rules to the F<fd> files that substitute "b" for "bx".
+Added extra `ssub' rules to the F<fd> files that substitute `b' for `bx'.
Verbose mode now also prints all generated commands before they're executed.
=item I<2012-10-25>
-Added extra "ssub" rules to the F<fd> files that substitute italic
+Added extra `ssub' rules to the F<fd> files that substitute italic
shapes for slanted ones.
=item I<2012-09-25>
@@ -3640,7 +4171,7 @@
=item I<2012-03-06>
-Implemented the "splitting the font family into multiple subfamilies"
+Implemented the `splitting the font family into multiple subfamilies'
emergency strategy when font info parsing fails.
Added recognition for a number of unusual widths, weights and shapes.
@@ -3648,8 +4179,8 @@
Fixed a bug in the font parsing code,
where possible widths, weights and shapes where tested in the wrong order;
-this led to "ExtraLight" fonts being recognised as "Light".
-Added recognition for "Narrow" and "Wide" widths.
+this led to `ExtraLight' fonts being recognised as `Light'.
+Added recognition for `Narrow' and `Wide' widths.
Also added the I<-(no)figurekern> command-line option.
=item I<2012-02-01>
@@ -3665,7 +4196,7 @@
=item I<2011-06-15>
Fixed the font info parsing code for some fonts that are
-too lazy to spell out "Italic" in full.
+too lazy to spell out `Italic' in full.
=item I<2010-04-29>
@@ -3711,13 +4242,13 @@
weight and width were mapped to the same series.
Added a work-around for incorrect size info in some Kepler fonts.
Fixed a small bug in the generated commands for otftotfm
-(sometimes, the "onum" feature was included twice).
+(sometimes, the `onum' feature was included twice).
Added encoding file for OT1 to the I<fontools> collection.
=item I<2007-07-27>
Two bugfixes: a closing brace was missing in the generated style file,
-and the NFSS series was formed as "width plus weight" instead of the reverse.
+and the NFSS series was formed as `width plus weight' instead of the reverse.
=item I<2007-06-10>
@@ -3732,7 +4263,7 @@
families (suggested by Steven E. Harris).
Tweaked the font info parsing to work around a bug in the naming of
some FontFont fonts, where every font is in a family of its own.
-Added the "scaled" option (including the loading of F<xkeyval>)
+Added the `scaled' option (including the loading of F<xkeyval>)
to the generated style file.
Extended the output of the I<-verbose> option.
@@ -3753,7 +4284,7 @@
=item I<2006-08-31>
-Made the generated style files try to include "fontaxes.sty";
+Made the generated style files try to include `fontaxes.sty';
changed the names of the generated fonts and families
(to make the previous change possible);
added command-line options for most font styles and shapes;
@@ -3760,7 +4291,7 @@
tweaked the filename parsing code for Cronos Pro and Gill Sans Pro;
added runtime generation of encoding vectors for ornament fonts
(because GaramondPremier's ornament names differ from other fonts);
-changed the NFSS-code for italic small caps and titling to "scit" and "tlit"
+changed the NFSS-code for italic small caps and titling to `scit' and `tlit'
(to work with F<fontaxes>);
and edited (and hopefully improved) the documentation.
@@ -3792,14 +4323,14 @@
The generated commands weren't actually executed, only printed...
Also added a small hack to cater for fonts
(such as some recent versions of MinionPro)
-that contain swash characters but don't provide a "swsh" feature.
+that contain swash characters but don't provide a `swsh' feature.
=item I<2005-08-10>
-Dropped the "fontname" scheme in favor of a more verbose naming scheme,
+Dropped the `fontname' scheme in favor of a more verbose naming scheme,
since many filenames were still more than eight characters long anyway.
Added F<nfssext.sty>-like commands to the generated style file.
-Changed the default encoding to LY1 and added the "inferior" shape.
+Changed the default encoding to LY1 and added the `inferior' shape.
=item I<2005-08-01>
@@ -3806,11 +4337,11 @@
Rewrote (and hopefully improved) the user interface;
changed the program to by default execute the generated F<otftotfm> command
lines rather than writing them to a file;
-added automatic determination of the "fontname" code for the font family;
-changed the NFSS code for italic small caps to "si"; added titling shapes;
+added automatic determination of the `fontname' code for the font family;
+changed the NFSS code for italic small caps to `si'; added titling shapes;
changed the generated style
file to include an interface for the ornaments and to load Lehman's NFSS
-extensions F<nfssext.sty> if this is installed; corrected the "fontname" codes
+extensions F<nfssext.sty> if this is installed; corrected the `fontname' codes
for OT1, T1, LY1 and user-specific encodings; extended the output generated by
the I<-verbose> option; and rewrote and extended the documentation.
Modified: trunk/Build/source/texk/texlive/linked_scripts/fontools/ot2kpx
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/fontools/ot2kpx 2020-05-27 21:40:08 UTC (rev 55296)
+++ trunk/Build/source/texk/texlive/linked_scripts/fontools/ot2kpx 2020-05-27 21:40:38 UTC (rev 55297)
@@ -38,7 +38,7 @@
use List::Util @List::Util::EXPORT_OK;
use Pod::Usage;
-my $VERSION = "20200511";
+my $VERSION = "20200527";
our ($NUM_GLYPHS, $UNITS_PER_EM, %kern);
@@ -858,7 +858,7 @@
=head1 VERSION
-This document describes B<ot2kpx> version 20200511.
+This document describes B<ot2kpx> version 20200527.
=head1 RECENT CHANGES
Modified: trunk/Master/texmf-dist/doc/man/man1/afm2afm.1
===================================================================
--- trunk/Master/texmf-dist/doc/man/man1/afm2afm.1 2020-05-27 21:40:08 UTC (rev 55296)
+++ trunk/Master/texmf-dist/doc/man/man1/afm2afm.1 2020-05-27 21:40:38 UTC (rev 55297)
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "AFM2AFM 1"
-.TH AFM2AFM 1 "2020-05-11" "fontools" "Marc Penninga"
+.TH AFM2AFM 1 "2020-05-27" "fontools" "Marc Penninga"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -223,7 +223,7 @@
See the \s-1GNU\s0 General Public License for more details.
.SH "VERSION"
.IX Header "VERSION"
-This document describes \fBafm2afm\fR version 20200511.
+This document describes \fBafm2afm\fR version 20200527.
.SH "RECENT CHANGES"
.IX Header "RECENT CHANGES"
(See the source code for the rest of the story.)
Modified: trunk/Master/texmf-dist/doc/man/man1/afm2afm.man1.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/man/man1/autoinst.1
===================================================================
--- trunk/Master/texmf-dist/doc/man/man1/autoinst.1 2020-05-27 21:40:08 UTC (rev 55296)
+++ trunk/Master/texmf-dist/doc/man/man1/autoinst.1 2020-05-27 21:40:38 UTC (rev 55297)
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "AUTOINST 1"
-.TH AUTOINST 1 "2020-05-11" "fontools" "Marc Penninga"
+.TH AUTOINST 1 "2020-05-27" "fontools" "Marc Penninga"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -180,7 +180,7 @@
Swash
.IP "\fInw\fR" 8
.IX Item "nw"
-\&\*(L"Upright swash\*(R"
+`Upright swash'
.RE
.RS 2
.RE
@@ -194,11 +194,11 @@
Families with superiors, inferiors, numerators and denominators,
in roman, italic and slanted shapes.
.IP "\-" 3
-Families with \*(L"Titling\*(R" characters;
-these \*(L"... replace the default glyphs
+Families with `Titling' characters;
+these `... replace the default glyphs
with corresponding forms designed specifically for titling.
These may be all-capital and/or larger on the body,
-and adjusted for viewing at larger sizes\*(R"
+and adjusted for viewing at larger sizes'
(according to the OpenType Specification).
.IP "\-" 3
An ornament family, also in roman, italic and slanted shapes.
@@ -236,7 +236,7 @@
normal forms for other characters
.IP "\fITitl\fR" 8
.IX Item "Titl"
-Titling characters; see above.
+Titling characters; see above
.IP "\fIOrn\fR" 8
.IX Item "Orn"
ornaments
@@ -249,47 +249,9 @@
.PP
The individual fonts are named \fI<FontName>\-<suffix>\-<shape>\-<enc>\fR,
where \fI<suffix>\fR is the same as above (but in lowercase),
-\&\fI<shape>\fR is either empty, \*(L"sc\*(R" or \*(L"swash\*(R",
+\&\fI<shape>\fR is either empty, `sc' or `swash',
and \fI<enc>\fR is the encoding (also in lowercase).
-A typical name in this scheme would be \*(L"FiraSans\-Light\-osf\-sc\-ly1\*(R".
-.SS "About the log file"
-.IX Subsection "About the log file"
-\&\fBautoinst\fR writes some info about what it thinks it's doing to a log file.
-By default this is called \fI<fontfamily>.log\fR,
-but this choice can be overridden by the user;
-see the \fI\-logfile\fR command-line option in \*(L"COMMAND-LINE \s-1OPTIONS\*(R"\s0 below.
-If this log file already exists, \fBautoinst\fR will append its data to the end
-rather than overwrite it.
-Use the \fI\-verbose\fR command-line option to ask for more detailed info.
-.SS "A note for MiKTeX users"
-.IX Subsection "A note for MiKTeX users"
-Automatically installing the fonts into a suitable \s-1TEXMF\s0 tree
-(as \fBautoinst\fR tries to do by default) only works for TeX-installations
-that use the \fIkpathsea\fR library; with TeX distributions that implement
-their own directory searching (such as MiKTeX), \fBautoinst\fR will complain
-that it cannot find the \fIkpsewhich\fR program and move all generated files
-into a subdirectory \f(CW\*(C`./autoinst_output/\*(C'\fR of the current directory.
-If you use such a TeX distribution, you should either move these files
-to their correct destinations by hand, or use the \fI\-target\fR option
-(see \*(L"COMMAND-LINE \s-1OPTIONS\*(R"\s0 below) to manually specify a \s-1TEXMF\s0 tree.
-.PP
-Also, some OpenType fonts contain so many kerning pairs that the resulting
-\&\fIpl\fR and \fIvpl\fR files are too big for MiKTeX's \fIpltotf\fR and \fIvptovf\fR;
-the versions that come with W32TeX (\fIhttp://www.w32tex.org\fR)
-and TeXLive (\fIhttp://tug.org/texlive\fR) don't seem to have this problem.
-.SS "A note for MacTeX users"
-.IX Subsection "A note for MacTeX users"
-By default, \fBautoinst\fR will try to install all generated files into
-the \f(CW$TEXMFLOCAL\fR tree; when this directory isn't user-writable,
-it will use the \f(CW$TEXMFHOME\fR tree instead. Unfortunately, MacTeX's version
-of \f(CW\*(C`updmap\-sys\*(C'\fR (which is called behind the scenes) doesn't search
-in \f(CW$TEXMFHOME\fR, and hence MacTeX will not find the new fonts.
-.PP
-To remedy this, either run \fBautoinst\fR as root (so that it can install
-everything into \f(CW$TEXMFLOCAL\fR) or manually run \f(CW\*(C`updmap \-user\*(C'\fR to tell
-TeX about the files in \f(CW$TEXMFHOME\fR.
-The latter option does, however, have some caveats;
-see \fIhttps://tug.org/texlive/scripts\-sys\-user.html\fR.
+A typical name in this scheme would be `FiraSans\-Light\-osf\-sc\-ly1'.
.SS "Using the fonts in your LaTeX documents"
.IX Subsection "Using the fonts in your LaTeX documents"
\&\fBautoinst\fR generates a style file for using the fonts in LaTeX documents,
@@ -312,28 +274,30 @@
.el .IP "\f(CWlining\fR, \f(CWoldstyle\fR, \f(CWtabular\fR, \f(CWproportional\fR" 4
.IX Item "lining, oldstyle, tabular, proportional"
Choose which figure style to use.
-The defaults are \*(L"oldstyle\*(R" and \*(L"proportional\*(R" (if available).
-.ie n .IP """scale=\fI<number>\fP""" 4
-.el .IP "\f(CWscale=\f(CI<number>\f(CW\fR" 4
-.IX Item "scale=<number>"
+The defaults are `oldstyle' and `proportional' (if available).
+.ie n .IP """scale=\fI<number>\fP"", ""scale=MatchLowercase""" 4
+.el .IP "\f(CWscale=\f(CI<number>\f(CW\fR, \f(CWscale=MatchLowercase\fR" 4
+.IX Item "scale=<number>, scale=MatchLowercase"
Scale the font by a factor of \fI<number>\fR.
E.g., to increase the size of the font by 5%, use
\&\f(CW\*(C`\eusepackage[scale=1.05]{\f(CI<FontFamily>\f(CW}\*(C'\fR.
-May also be spelled \f(CW\*(C`scaled\*(C'\fR.
-.Sp
-This option is only available when you have the \fIxkeyval\fR package installed.
+The special value \f(CW\*(C`MatchLowercase\*(C'\fR may be used to scale the font
+so that its x\-height matches that of the previously active font
+(which is usually Computer Modern, unless you have loaded another
+font package before this one).
+The name \f(CW\*(C`scaled\*(C'\fR may be used as a synonym for \f(CW\*(C`scale\*(C'\fR.
.ie n .IP """medium"", ""book"", ""text"", ""regular""" 4
.el .IP "\f(CWmedium\fR, \f(CWbook\fR, \f(CWtext\fR, \f(CWregular\fR" 4
.IX Item "medium, book, text, regular"
-Select the weight that LaTeX will use as the \*(L"regular\*(R" weight;
+Select the weight that LaTeX will use as the `regular' weight;
the default is \f(CW\*(C`regular\*(C'\fR.
.ie n .IP """heavy"", ""black"", ""extrabold"", ""demibold"", ""semibold"", ""bold""" 4
.el .IP "\f(CWheavy\fR, \f(CWblack\fR, \f(CWextrabold\fR, \f(CWdemibold\fR, \f(CWsemibold\fR, \f(CWbold\fR" 4
.IX Item "heavy, black, extrabold, demibold, semibold, bold"
-Select the weight that LaTeX will use as the \*(L"bold\*(R" weight;
+Select the weight that LaTeX will use as the `bold' weight;
the default is \f(CW\*(C`bold\*(C'\fR.
.PP
-The previous two groups of options will only work if
+The last two groups of options will only work if
you have the \fImweights\fR package installed.
.PP
The style file will also try to load the \fIfontaxes\fR package
@@ -348,8 +312,8 @@
\& DECLARATION COMMAND SHORT FORM OF COMMAND
\&
\& \etlshape \etexttitling \etexttl
-\& \esufigures \etextsuperior \etextsu
-\& \einfigures \etextinferior \etextin
+\& \esupfigures \etextsuperior \etextsup, \etextsu
+\& \einffigures \etextinferior \etextinf, \etextin
.Ve
.PP
In addition, the \f(CW\*(C`\eswshape\*(C'\fR and \f(CW\*(C`\etextsw\*(C'\fR commands are redefined to place
@@ -372,37 +336,66 @@
encodings, and the generated style files use T1 as the default text encoding.
Other encodings can be chosen using the \fI\-encoding\fR option
(see \*(L"COMMAND-LINE \s-1OPTIONS\*(R"\s0 below).
+.SS "Maths"
+.IX Subsection "Maths"
+This is an experimental feature; \fB\s-1USE AT YOUR OWN RISK\s0!\fR
+Test the results thoroughly before using them in real documents,
+and be warned that future versions of \fBautoinst\fR may introduce
+incompatible changes.
.PP
-\fIOrnaments\fR
-.IX Subsection "Ornaments"
+The \fI\-math\fR option tells \fBautoinst\fR to generate basic math fonts.
+When enabled, the generated style file defines a few extra options
+to access these math fonts:
+.ie n .IP """math""" 4
+.el .IP "\f(CWmath\fR" 4
+.IX Item "math"
+Use these fonts for the maths in your document.
+.ie n .IP """mathlining"", ""matholdstyle""" 4
+.el .IP "\f(CWmathlining\fR, \f(CWmatholdstyle\fR" 4
+.IX Item "mathlining, matholdstyle"
+Choose which figure style to use in maths.
+The default is `mathlining'.
+.ie n .IP """mathcal""" 4
+.el .IP "\f(CWmathcal\fR" 4
+.IX Item "mathcal"
+Use the swash characters from your fonts as the \f(CW\*(C`\emathcal\*(C'\fR alphabet.
+(This option only exists if your fonts actually contain swash characters
+and a \f(CW\*(C`swsh\*(C'\fR feature to access them).
+.ie n .IP """math\-style=\fI<style>\fP""" 4
+.el .IP "\f(CWmath\-style=\f(CI<style>\f(CW\fR" 4
+.IX Item "math-style=<style>"
+Choose the `math style' to use.
+With \f(CW\*(C`math\-style=ISO\*(C'\fR, all latin and greek letters in math are italic;
+with \f(CW\*(C`math\-style=TeX\*(C'\fR (the default), uppercase greek is upright;
+with \f(CW\*(C`math\-style=french\*(C'\fR, all greek as well as uppercase latin is upright;
+and with \f(CW\*(C`math\-style=upright\*(C'\fR all letters are upright.
.PP
-Ornament fonts are regular LY1\-encoded fonts, with a number of
-\&'regular' characters replaced by ornament glyphs.
-The OpenType specification says that fonts should only put their
-ornaments in place of the lowercase \s-1ASCII\s0 letters or the 'bullet'
-character, but some fonts put them in other positions (such as those
-of the digits) as well.
+Note that this `math' option only changes digits, latin and greek letters,
+plus a few basic punctuation characters; all other mathematical symbols,
+operators, delimiters etc. are left as they were before.
+If you don't want to use TeX's default versions of those symbols,
+load another math package (such as \fImathdesign\fR or \fInewtxmath\fR)
+before loading the \fBautoinst\fR\-generated style file.
.PP
-Ornament glyphs can be accessed like \f(CW\*(C`{\eornaments abc}\*(C'\fR and
-\&\f(CW\*(C`{\eornaments\echar"61}\*(C'\fR, or equivalently
-\&\f(CW\*(C`\etextornaments{abc}\*(C'\fR and \f(CW\*(C`\etextornaments{\echar"61}\*(C'\fR.
-To see which ornaments a font contains (and at which positions),
-run LaTeX on the file \fInfssfont.tex\fR (which is included in any
-standard LaTeX installation), supply the name of the ornament font
-(i.e., \f(CW\*(C`GaramondLibre\-Regular\-orn\-u\*(C'\fR) and say \f(CW\*(C`\etable\ebye\*(C'\fR;
-this will create a table of all glyphs in that font.
-.PP
-Note that versions of \fBautoinst\fR up to 20200428 handled ornaments
-differently, and fonts and style files generated by those versions
-are not compatible with files generated by newer versions.
+Finally, note that \fBautoinst\fR doesn't check if your fonts actually contains
+all of the required characters;
+it just assumes that they do and sets up the style file accordingly.
+Even if your fonts contain greek, characters such as \f(CW\*(C`\evarepsilon\*(C'\fR
+may be missing.
+You may also find that some glyphs \fIare\fR present in your fonts,
+but don't work well in equations or don't match with other symbols;
+edit the generated style file to remove the declarations of
+these offending characters.
+Once again: test the results before using them!
+If the characters themselves are fine but spaced too tightly,
+you may try increasing the side bearings in math fonts with
+the \fI\-mathspacing\fR option (see below), e.g. \f(CW\*(C`\-mathspacing=100\*(C'\fR.
.SS "\s-1NFSS\s0 codes"
.IX Subsection "NFSS codes"
LaTeX's New Font Selection System (\s-1NFSS\s0)
identifies fonts by a combination of family,
series (the concatenation of weight and width), shape and size.
-\&\fBautoinst\fR parses the font's metadata
-(more precisely: the output of \f(CW\*(C`otfinfo \-\-info\*(C'\fR)
-to determine these parameters.
+\&\fBautoinst\fR parses the font's metadata to determine these parameters.
When this fails (usually because the font family contains uncommon weights,
widths or shapes),
\&\fBautoinst\fR ends up with different fonts having the \fIsame\fR values
@@ -426,16 +419,16 @@
.Ve
.PP
(\fIException:\fR Adobe Silentium Pro contains two Roman shapes;
-we map the first of these to \*(L"n\*(R", for the second one we (ab)use the \*(L"it\*(R" code
+we map the first of these to `n', for the second one we (ab)use the `it' code
as this family doesn't contain an Italic shape.)
.PP
The mapping of weights and widths to \s-1NFSS\s0 codes is a more complex,
two-step proces.
-In the first step, all fonts are assigned a \*(L"series\*(R" name that is simply
+In the first step, all fonts are assigned a `series' name that is simply
the concatenation of its weight and width
(after expanding any abbreviations and converting to lowercase).
-A font with \*(L"Cond\*(R" width and \*(L"Ultra\*(R" weight will then be known
-as \*(L"ultrablackcondensed\*(R".
+A font with `Cond' width and `Ultra' weight will then be known
+as `ultrablackcondensed'.
.PP
In the second step, \fBautoinst\fR tries to map all combinations of \s-1NFSS\s0 codes
(ul, el, l, sl, m, sb, b, eb and ub for weights;
@@ -446,11 +439,11 @@
a unique code in a sane way (especially for the weights, some font families
offer more choices or finer granularity than \s-1NFSS\s0's codes can handle;
e.g., Fira Sans contains fifteen(!) different weights,
-including an additional \*(L"Medium\*(R" weight between Regular and Semibold).
+including an additional `Medium' weight between Regular and Semibold).
.PP
\&\fBautoinst\fR tries hard to ensure that the most common \s-1NFSS\s0 codes
(and high-level commands such as \f(CW\*(C`\ebfseries\*(C'\fR,
-which are built on top of those codes) will \*(L"just work\*(R".
+which are built on top of those codes) will `just work'.
.PP
To see exactly which \s-1NFSS\s0 codes map to which fonts, see the log file
(pro tip: run \fBautoinst\fR with the \fI\-dryrun\fR option
@@ -461,6 +454,26 @@
To access specific weights or widths,
one can always use the \f(CW\*(C`\efontseries\*(C'\fR command with the full series name
(i.e., \f(CW\*(C`\efontseries{demibold}\eselectfont\*(C'\fR).
+.SS "Ornaments"
+.IX Subsection "Ornaments"
+Ornament fonts are regular LY1\-encoded fonts, with a number of
+`regular' characters replaced by ornament glyphs.
+The OpenType specification says that fonts should only put their
+ornaments in place of the lowercase \s-1ASCII\s0 letters, but some fonts
+put them in other positions (such as those of the digits) as well.
+.PP
+Ornaments can be accessed like \f(CW\*(C`{\eornaments a}\*(C'\fR and
+\&\f(CW\*(C`{\eornaments\echar"61}\*(C'\fR, or equivalently
+\&\f(CW\*(C`\etextornaments{a}\*(C'\fR and \f(CW\*(C`\etextornaments{\echar"61}\*(C'\fR.
+To see which ornaments a font contains (and at which positions),
+run LaTeX on the file \fInfssfont.tex\fR (which is included in any
+standard LaTeX installation), supply the name of the ornament font
+(i.e., \f(CW\*(C`GaramondLibre\-Regular\-orn\-u\*(C'\fR) and give the command \f(CW\*(C`\etable\ebye\*(C'\fR;
+this will create a table of all glyphs in that font.
+.PP
+Note that versions of \fBautoinst\fR up to 20200428 handled ornaments
+differently, and fonts and style files generated by those versions
+are not compatible with files generated by newer versions.
.SH "COMMAND-LINE OPTIONS"
.IX Header "COMMAND-LINE OPTIONS"
\&\fBautoinst\fR tries hard to do The Right Thing (\s-1TM\s0) by default,
@@ -493,7 +506,7 @@
.IX Item "-encoding=encoding[,encoding]"
Generate the specified encoding(s) for the text fonts.
Multiple encodings may be specified as a comma-separated list
-(without spaces!); the default choice of encodings is \*(L"\s-1OT1,LY1,T1\*(R".\s0
+(without spaces!); the default choice of encodings is `\s-1OT1,LY1,T1\s0'.
.Sp
For each specified encoding \s-1XYZ,\s0 \fBautoinst\fR will first see if there is
an encoding file \fI\s-1XYZ\s0.enc\fR in the current directory, and if found it will
@@ -501,7 +514,7 @@
Currently \fBautoinst\fR comes with support for the \s-1OT1, T1/TS1, LY1, LGR,
T2A/B/C\s0 and T3/TS3 encodings.
(These files are called \fIfontools_ot1.enc\fR etc. to avoid name clashes
-with other packages; the \*(L"fontools_\*(R" prefix may be omitted.)
+with other packages; the `fontools_' prefix may be omitted.)
.IP "\fB\-ts1\fR/\fB\-nots1\fR" 4
.IX Item "-ts1/-nots1"
Control the creation of TS1\-encoded fonts. The default is \fB\-ts1\fR
@@ -518,15 +531,15 @@
it will \- by default \- turn off the use of f\-ligatures
(though this can be overridden with the \fI\-ligatures\fR option),
and it will disable hyphenation for this font.
-This latter effect cannot be disabled in \fBautoinst\fR;
+This latter effect cannot be re-enabled in \fBautoinst\fR;
if you want typewriter text to be hyphenated, use the \fIhyphenat\fR package.
.Sp
If none of these options is specified, \fBautoinst\fR tries to guess:
-if the font's filename contains the string \*(L"mono\*(R"
+if the font's filename contains the string `mono'
or if the field \f(CW\*(C`isFixedPitch\*(C'\fR in the font's \fIpost\fR table is True,
it will select \fB\-typewriter\fR;
-else if the filename contains \*(L"sans\*(R" it selects \fB\-sanserif\fR;
-and otherwise it will opt for \fB\-serif\fR.
+else if the filename contains `sans' it will select \fB\-sanserif\fR;
+otherwise it will opt for \fB\-serif\fR.
.IP "\fB\-lining\fR/\fB\-nolining\fR" 4
.IX Item "-lining/-nolining"
Control the creation of fonts with lining figures. The default is
@@ -564,12 +577,12 @@
.IX Item "-inferiors [= none | auto | subs | sinf | dnom ]"
.PD
The OpenType standard defines several kinds of digits that might be used
-as inferiors or subscripts: \*(L"Subscripts\*(R" (OpenType feature \*(L"subs\*(R"),
-\&\*(L"Scientific Inferiors\*(R" (\*(L"sinf\*(R"), and \*(L"Denominators\*(R" (\*(L"dnom\*(R").
+as inferiors or subscripts: `Subscripts' (OpenType feature `subs'),
+`Scientific Inferiors' ('sinf'), and `Denominators' ('dnom').
This option allows the user to determine which of these styles \fBautoinst\fR
should use for the inferior characters.
-Alternatively, the value \*(L"auto\*(R" tells \fBautoinst\fR to use the first value
-in \*(L"sinf\*(R", \*(L"subs\*(R" or \*(L"dnom\*(R" that is supported by the font.
+Alternatively, the value `auto' tells \fBautoinst\fR to use the first value
+in `sinf', `subs' or `dnom' that is supported by the font.
Saying just \fB\-inferiors\fR is equivalent to \fB\-inferiors=auto\fR;
otherwise the default is \fB\-noinferiors\fR.
.Sp
@@ -586,7 +599,7 @@
.IP "\fB\-ligatures\fR/\fB\-noligatures\fR" 4
.IX Item "-ligatures/-noligatures"
Some fonts create glyphs for the standard f\-ligatures (ff, fi, fl, ffi, ffl),
-but don't provide a \*(L"liga\*(R" feature to access these.
+but don't provide a `liga' feature to access these.
This option tells \fBautoinst\fR to add extra \f(CW\*(C`LIGKERN\*(C'\fR rules to
the generated fonts to enable the use of these ligatures.
The default is \fB\-ligatures\fR,
@@ -593,7 +606,16 @@
unless the user specified the \fI\-typewriter\fR option.
.Sp
Specify \fB\-noligatures\fR to disable the generation of ligatures even for fonts
-that do contain a \*(L"liga\*(R" feature.
+that do contain a `liga' feature.
+.IP "\fB\-math\fR" 4
+.IX Item "-math"
+Tells \fBautoinst\fR to create basic math fonts (see above).
+.IP "\fB\-mathspacing\fR=\fIamount\fR" 4
+.IX Item "-mathspacing=amount"
+Letterspace each character in the math fonts by \fIamount\fR units,
+where 1000 units equal one em.
+In my opinion, many text fonts benefit from letterspacing by 50 to 100 units
+when used in maths; some fonts need even more. Use your own judgement!
.IP "\fB\-defaultlining\fR/\fB\-defaultoldstyle\fR" 4
.IX Item "-defaultlining/-defaultoldstyle"
.PD 0
@@ -617,20 +639,24 @@
to the commands for \fIotftotfm\fR to suppress such kerns.
Note that this option leads to very long commands (it adds
one hundred \fI \-\-ligkern\fR options), which may cause problems on some systems.
-.IP "\fB\-nfssweight\fR=\fIcode\fR=\fIweight\fR, \fB\-nfsswidth\fR=\fIcode\fR=\fIwidth\fR" 4
-.IX Item "-nfssweight=code=weight, -nfsswidth=code=width"
+.IP "\fB\-nfssweight\fR=\fIcode\fR=\fIweight\fR" 4
+.IX Item "-nfssweight=code=weight"
+.PD 0
+.IP "\fB\-nfsswidth\fR=\fIcode\fR=\fIwidth\fR" 4
+.IX Item "-nfsswidth=code=width"
+.PD
Map the \s-1NFSS\s0 code \fIcode\fR to the given weight or width,
overriding the built-in tables.
Each of these options may be given multiple times,
to override more than one \s-1NFSS\s0 code.
-Example: to map the \*(L"ul\*(R" code to the \*(L"Thin\*(R" weight,
+Example: to map the `ul' code to the `Thin' weight,
use \f(CW\*(C`\-nfssweight=ul=thin\*(C'\fR.
-To inhibit the use of the \*(L"ul\*(R" code completely,
+To inhibit the use of the `ul' code completely,
use \f(CW\*(C`\-nfssweight=ul=\*(C'\fR.
-.IP "\fB\-extra\fR=\fItext\fR" 4
-.IX Item "-extra=text"
-Append \fItext\fR as extra options to the command lines for \fIotftotfm\fR.
-To prevent \fItext\fR from accidentily being interpreted as options
+.IP "\fB\-extra\fR=\fIextra\fR" 4
+.IX Item "-extra=extra"
+Append \fIextra\fR as extra options to the command lines for \fIotftotfm\fR.
+To prevent \fIextra\fR from accidentily being interpreted as options
to \fBautoinst\fR, it should be properly quoted.
.IP "\fB\-manual\fR" 4
.IX Item "-manual"
@@ -688,9 +714,9 @@
.IX Item "-typeface=TYPEFACE"
.PD
These options are equivalent to \fIotftotfm\fR's \fI \-\-vendor\fR and \fI \-\-typeface\fR
-options: they change the \*(L"vendor\*(R" and \*(L"typeface\*(R" parts of the names of the
+options: they change the `vendor' and `typeface' parts of the names of the
subdirectories in the \s-1TEXMF\s0 tree where generated files will be stored.
-The default values are \*(L"lcdftools\*(R" and the font's FontFamily name.
+The default values are `lcdftools' and the font's FontFamily name.
.Sp
Note that these options change \fIonly\fR directory names,
not the names of any generated files.
@@ -698,6 +724,35 @@
.IX Item "-updmap/-noupdmap"
Control whether or not \fIupdmap\fR is called after the last call to \fIotftotfm\fR.
The default is \fB\-updmap\fR.
+.SS "A note for MiKTeX users"
+.IX Subsection "A note for MiKTeX users"
+Automatically installing the fonts into a suitable \s-1TEXMF\s0 tree
+(as \fBautoinst\fR tries to do by default) only works for TeX-installations
+that use the \fIkpathsea\fR library; with TeX distributions that implement
+their own directory searching (such as MiKTeX), \fBautoinst\fR will complain
+that it cannot find the \fIkpsewhich\fR program and move all generated files
+into a subdirectory \f(CW\*(C`./autoinst_output/\*(C'\fR of the current directory.
+If you use such a TeX distribution, you should either move these files
+to their correct destinations by hand, or use the \fI\-target\fR option
+(see \*(L"COMMAND-LINE \s-1OPTIONS\*(R"\s0 below) to manually specify a \s-1TEXMF\s0 tree.
+.PP
+Also, some OpenType fonts contain so many kerning pairs that the resulting
+\&\fIpl\fR and \fIvpl\fR files are too big for MiKTeX's \fIpltotf\fR and \fIvptovf\fR;
+the versions that come with W32TeX (\fIhttp://www.w32tex.org\fR)
+and TeXLive (\fIhttp://tug.org/texlive\fR) don't seem to have this problem.
+.SS "A note for MacTeX users"
+.IX Subsection "A note for MacTeX users"
+By default, \fBautoinst\fR will try to install all generated files into
+the \f(CW$TEXMFLOCAL\fR tree; when this directory isn't user-writable,
+it will use the \f(CW$TEXMFHOME\fR tree instead. Unfortunately, MacTeX's version
+of \f(CW\*(C`updmap\-sys\*(C'\fR (which is called behind the scenes) doesn't search
+in \f(CW$TEXMFHOME\fR, and hence MacTeX will not find the new fonts.
+.PP
+To remedy this, either run \fBautoinst\fR as root (so that it can install
+everything into \f(CW$TEXMFLOCAL\fR) or manually run \f(CW\*(C`updmap \-user\*(C'\fR to tell
+TeX about the files in \f(CW$TEXMFHOME\fR.
+The latter option does, however, have some caveats;
+see \fIhttps://tug.org/texlive/scripts\-sys\-user.html\fR.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
Eddie Kohler's \fBTypeTools\fR (\fIhttp://www.lcdf.org/type\fR).
@@ -743,10 +798,21 @@
\&\s-1GNU\s0 General Public License for more details.
.SH "VERSION"
.IX Header "VERSION"
-This document describes \fBautoinst\fR version 20200511.
+This document describes \fBautoinst\fR version 20200527.
.SH "RECENT CHANGES"
.IX Header "RECENT CHANGES"
(See the source for the full story, all the way back to 2005.)
+.IP "\fI2020\-05\-27\fR" 12
+.IX Item "2020-05-27"
+Added basic (and still somewhat experimental) math support.
+Implemented the \f(CW\*(C`scale=MatchLowercase\*(C'\fR option value
+in the generated style files.
+`Wide' fonts are mapped to the `sx' \s-1NFSS\s0 code instead of `x',
+to cater for League Mono Variable's Wide and Extended widths.
+The generated style files now use \f(CW\*(C`\etextsup\*(C'\fR and \f(CW\*(C`\etextinf\*(C'\fR
+instead of the more cryptic \f(CW\*(C`\etextsu\*(C'\fR and \f(CW\*(C`\etextin\*(C'\fR to access
+superior and inferior characters
+(though the old forms are retained for backwards compatibility).
.IP "\fI2020\-05\-11\fR" 12
.IX Item "2020-05-11"
When present, use encoding files in the current working directory
@@ -823,12 +889,12 @@
.IP "\fI2019\-05\-17\fR" 12
.IX Item "2019-05-17"
Changed the way the \fI\-ligatures\fR option works:
-\&\fI\-ligatures\fR enables f\-ligatures (even without a \*(L"liga\*(R" feature),
-\&\fI\-noligatures\fR now disables f\-ligatures (overriding a \*(L"liga\*(R" feature).
+\&\fI\-ligatures\fR enables f\-ligatures (even without a `liga' feature),
+\&\fI\-noligatures\fR now disables f\-ligatures (overriding a `liga' feature).
.IP "\fI2019\-05\-11\fR" 12
.IX Item "2019-05-11"
Separate small caps families are now also recognised when the family name
-ends with \*(L"\s-1SC\*(R"\s0 (previously \fBautoinst\fR only looked for \*(L"SmallCaps\*(R").
+ends with `\s-1SC\s0' (previously \fBautoinst\fR only looked for `SmallCaps').
.IP "\fI2019\-04\-22\fR" 12
.IX Item "2019-04-22"
Fixed a bug in the generation of swash shapes.
@@ -840,7 +906,7 @@
Added the <\-mergesmallcaps> option, to handle cases where
the small caps fonts are in separate font families.
Titling shape is now treated as a separate family instead of a distinct shape;
-it is generated only for fonts with the 'titl' feature.
+it is generated only for fonts with the `titl' feature.
Only add f\-ligatures to fonts when explicitly asked to (\fI\-ligatures\fR).
.IP "\fI2019\-04\-11\fR" 12
.IX Item "2019-04-11"
@@ -860,7 +926,7 @@
put all generated files into a subdirectory \f(CW\*(C`./autoinst_output/\*(C'\fR
instead of all over the current working directory.
.Sp
-Added \*(L"auto\*(R" value to the \fIinferiors\fR option,
+Added `auto' value to the \fIinferiors\fR option,
to tell \fBautoinst\fR to use whatever inferior characters are available.
.IP "\fI2019\-03\-14\fR" 12
.IX Item "2019-03-14"
@@ -867,8 +933,8 @@
Overhauled the mapping of fonts (more specifically of weights and widths;
the mapping of shapes didn't change) to \s-1NFSS\s0 codes.
Instead of inventing our own codes to deal with every possible weight
-and width out there, we now create \*(L"long\*(R" codes based on the names
+and width out there, we now create `long' codes based on the names
in the font metadata.
-Then we add \*(L"ssub\*(R" rules to the \fIfd\fR files to map the standard \s-1NFSS\s0 codes
+Then we add `ssub' rules to the \fIfd\fR files to map the standard \s-1NFSS\s0 codes
to our fancy names (see the section \fB\s-1NFSS\s0 codes\fR;
based on discussions with Frank Mittelbach and Bob Tennent).
Modified: trunk/Master/texmf-dist/doc/man/man1/autoinst.man1.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/man/man1/ot2kpx.1
===================================================================
--- trunk/Master/texmf-dist/doc/man/man1/ot2kpx.1 2020-05-27 21:40:08 UTC (rev 55296)
+++ trunk/Master/texmf-dist/doc/man/man1/ot2kpx.1 2020-05-27 21:40:38 UTC (rev 55297)
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OT2KPX 1"
-.TH OT2KPX 1 "2020-05-11" "fontools" "Marc Penninga"
+.TH OT2KPX 1 "2020-05-27" "fontools" "Marc Penninga"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -228,7 +228,7 @@
See the \s-1GNU\s0 General Public License for more details.
.SH "VERSION"
.IX Header "VERSION"
-This document describes \fBot2kpx\fR version 20200511.
+This document describes \fBot2kpx\fR version 20200527.
.SH "RECENT CHANGES"
.IX Header "RECENT CHANGES"
(See the source code for the rest of the story.)
Modified: trunk/Master/texmf-dist/doc/man/man1/ot2kpx.man1.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/support/fontools/splitttc
===================================================================
--- trunk/Master/texmf-dist/doc/support/fontools/splitttc 2020-05-27 21:40:08 UTC (rev 55296)
+++ trunk/Master/texmf-dist/doc/support/fontools/splitttc 2020-05-27 21:40:38 UTC (rev 55297)
@@ -38,7 +38,7 @@
use Getopt::Long;
use Pod::Usage;
-my $VERSION = "20200511";
+my $VERSION = "20200527";
parse_commandline();
@@ -303,7 +303,7 @@
=head1 VERSION
-This document describes B<splitttc> version 20200511.
+This document describes B<splitttc> version 20200527.
=head1 RECENT CHANGES
Added: trunk/Master/texmf-dist/fonts/enc/dvips/fontools/fontools_oml.enc
===================================================================
--- trunk/Master/texmf-dist/fonts/enc/dvips/fontools/fontools_oml.enc (rev 0)
+++ trunk/Master/texmf-dist/fonts/enc/dvips/fontools/fontools_oml.enc 2020-05-27 21:40:38 UTC (rev 55297)
@@ -0,0 +1,292 @@
+% A version of the OML encoding, intended for use with otftotfm.
+% CODINGSCHEME TEX MATH ITALIC
+/otftotfmOMLEncoding [
+% 0x00
+/Gamma
+/Delta
+/Theta
+/Lambda
+/Xi
+/Pi
+/Sigma
+/Upsilon
+% 0x08
+/Phi
+/Psi
+/Omega
+/alpha
+/beta
+/gamma
+/delta
+/epsilon1
+% 0x10
+/zeta
+/eta
+/theta
+/iota
+/kappa
+/lambda
+/mu
+/nu
+% 0x18
+/xi
+/pi
+/rho
+/sigma
+/tau
+/upsilon
+/phi
+/chi
+% 0x20
+/psi
+/omega
+/epsilon
+/theta1
+/pi1
+/rho1
+/sigma1
+/phi1
+% 0x28
+/harpoonleftup
+/harpoonleftdown
+/harpoonrightup
+/harpoonrightdown
+/hookrightchar
+/hookleftchar
+/triangleright
+/triangleleft
+% 0x30
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+% 0x38
+/eight
+/nine
+/period
+/comma
+/less
+/slash
+/greater
+/star
+% 0x40
+/partialdiff
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+% 0x48
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+% 0x50
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+% 0x58
+/X
+/Y
+/Z
+/flat
+/natural
+/sharp
+/slurbelow
+/slurabove
+% 0x60
+/lscript
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+% 0x68
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+% 0x70
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+% 0x78
+/x
+/y
+/z
+/dotlessi
+/dotlessj
+/weierstrass
+/vector
+/tie
+% 0x80
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0x88
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0x90
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0x98
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xA0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xA8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xB0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xB8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xC0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xC8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xD0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xD8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xE0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xE8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xF0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xF8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
Property changes on: trunk/Master/texmf-dist/fonts/enc/dvips/fontools/fontools_oml.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/scripts/fontools/afm2afm
===================================================================
--- trunk/Master/texmf-dist/scripts/fontools/afm2afm 2020-05-27 21:40:08 UTC (rev 55296)
+++ trunk/Master/texmf-dist/scripts/fontools/afm2afm 2020-05-27 21:40:38 UTC (rev 55297)
@@ -37,7 +37,7 @@
use Getopt::Long;
use Pod::Usage;
-my $VERSION = "20200511";
+my $VERSION = "20200527";
parse_commandline();
@@ -421,7 +421,7 @@
=head1 VERSION
-This document describes B<afm2afm> version 20200511.
+This document describes B<afm2afm> version 20200527.
=head1 RECENT CHANGES
Modified: trunk/Master/texmf-dist/scripts/fontools/autoinst
===================================================================
--- trunk/Master/texmf-dist/scripts/fontools/autoinst 2020-05-27 21:40:08 UTC (rev 55296)
+++ trunk/Master/texmf-dist/scripts/fontools/autoinst 2020-05-27 21:40:38 UTC (rev 55297)
@@ -40,7 +40,7 @@
use Pod::Usage ();
use POSIX ();
-my $VERSION = '20200511';
+my $VERSION = '20200527';
my ($d, $m, $y) = (localtime time)[3 .. 5];
my $TODAY = sprintf "%04d/%02d/%02d", $y + 1900, $m + 1, $d;
@@ -48,7 +48,7 @@
my $RUNNING_AS_MAIN = (__PACKAGE__ eq 'main');
-=begin Architecture
+=begin Comment
----------------------------------------------------------------------------
@@ -86,7 +86,7 @@
----------------------------------------------------------------------------
-=end Architecture
+=end Comment
=cut
@@ -156,8 +156,8 @@
my $basicinfo = Font::Raw::get_basicinfo($filename);
$info->process_basicinfo($basicinfo);
- my $os2_table = Font::Raw::get_os2_table($filename);
- $info->process_os2_table($os2_table);
+ my $os2_table = Font::Raw::get_classdata($filename);
+ $info->process_classdata($os2_table);
my $featuredata = Font::Raw::get_featuredata($filename);
$info->process_featuredata($featuredata);
@@ -182,6 +182,7 @@
Width: %s
Shape: %s
Size: %s-%s
+ Smallcaps: %s
END_ERR_DETAIL
@@ -359,15 +360,19 @@
$self->{family} = $1;
$self->{shape} = NFSS::unabbreviate(lc($2));
}
- # Ditto for the smallcaps shape; here we have to test both 'family'
- # and 'name' for hints that this is a small caps font, as some fonts
- # (e.g., Dolly) only mention this in their name.
+ # Ditto for the smallcaps shape; here we have to test both 'family',
+ # 'subfamily' and 'name' for hints that this is a small caps font,
+ # as some fonts (e.g., Dolly) only mention this in their name.
$shapes = join '|', Util::sort_desc_length(qw(smallcaps sc smcp caps));
- if ($self->{family} =~ m/(.+?) -? (?: $shapes) \z/xmsi) {
+ if ($self->{family} =~ m/(.+?) (?: $shapes) \z/xmsi) {
$self->{family} = $1;
$self->{is_smallcaps} = 1;
}
- if ($self->{name} =~ m/(.+?) -? (?: $shapes) \z/xmsi) {
+ if ($self->{subfamily} =~ m/(.+?) (?: $shapes) \z/xmsi) {
+ $self->{subfamily} = $1;
+ $self->{is_smallcaps} = 1;
+ }
+ if ($self->{name} =~ m/(.+?) (?: $shapes) \z/xmsi) {
$self->{name} = $1;
$self->{is_smallcaps} = 1;
}
@@ -417,12 +422,13 @@
# --------------------------------------------------------------------------
-# Extracts usWeightClass and usWidthClass from the OS/2 table.
+# Processes the usWeightClass and usWidthClass data.
# --------------------------------------------------------------------------
-sub process_os2_table {
- my ($self, $os2_table) = @_;
+sub process_classdata {
+ my ($self, $classdata) = @_;
- @{$self}{qw(weight_class width_class)} = unpack '@4n @6n', $os2_table;
+ $self->{weight_class} = $classdata->{weight_class};
+ $self->{width_class} = $classdata->{width_class};
return;
}
@@ -444,35 +450,33 @@
# Extracts 'minsize' and 'maxsize' from the optical design size info.
# --------------------------------------------------------------------------
sub process_sizedata {
- my ($self, $data) = @_;
+ my ($self, $sizedata) = @_;
- if (my ($minsize, $maxsize)
- = $data =~ m/[(] ([\d.]+) \s* pt, \s*
- ([\d.]+) \s* pt \s* [)]]/xms) {
+ my ($minsize, $maxsize) = @$sizedata;
+
# fix some known bugs
- if ($self->{name} eq 'GaramondPremrPro-It'
- && $minsize == 6 && $maxsize == 8.9) {
- ($minsize, $maxsize) = (8.9, 14.9);
- }
- elsif ($self->{family} eq 'KeplerStd'
- && $self->{subfamily} =~ m/Caption/xms
- && $minsize == 8.9 && $maxsize == 13.9) {
- ($minsize, $maxsize) = (6, 8.9);
- }
- elsif ($self->{family} eq 'KeplerStd'
- && $self->{subfamily} =~ m/Subhead/xms
- && $minsize == 8.9 && $maxsize == 13.9) {
- ($minsize, $maxsize) = (13.9, 23);
- }
- elsif ($self->{family} eq 'KeplerStd'
- && $self->{subfamily} =~ m/Display/xms
- && $minsize == 8.9 && $maxsize == 13.9) {
- ($minsize, $maxsize) = (23, 72);
- }
-
- @{$self}{qw(minsize maxsize)} = ($minsize, $maxsize);
+ if ($self->{name} eq 'GaramondPremrPro-It'
+ && $minsize == 6 && $maxsize == 8.9) {
+ ($minsize, $maxsize) = (8.9, 14.9);
}
+ elsif ($self->{family} eq 'KeplerStd'
+ && $self->{subfamily} =~ m/Caption/xms
+ && $minsize == 8.9 && $maxsize == 13.9) {
+ ($minsize, $maxsize) = (6, 8.9);
+ }
+ elsif ($self->{family} eq 'KeplerStd'
+ && $self->{subfamily} =~ m/Subhead/xms
+ && $minsize == 8.9 && $maxsize == 13.9) {
+ ($minsize, $maxsize) = (13.9, 23);
+ }
+ elsif ($self->{family} eq 'KeplerStd'
+ && $self->{subfamily} =~ m/Display/xms
+ && $minsize == 8.9 && $maxsize == 13.9) {
+ ($minsize, $maxsize) = (23, 72);
+ }
+ @{$self}{qw(minsize maxsize)} = ($minsize, $maxsize);
+
return;
}
@@ -517,9 +521,9 @@
# --------------------------------------------------------------------------
-# Returns the font's OS/2 table.
+# Returns usWeightClass and usWidthClass from the OS/2 table.
# --------------------------------------------------------------------------
-sub get_os2_table {
+sub get_classdata {
my $filename = shift;
my $os2_table;
@@ -532,7 +536,12 @@
or die "'$cmd' failed";
} or warn "[WARNING] $@";
- return $os2_table;
+ my ($weight_class, $width_class) = unpack '@4n @6n', $os2_table;
+
+ return {
+ weight_class => $weight_class,
+ width_class => $width_class,
+ };
}
@@ -579,7 +588,13 @@
close $otfinfo
or die "[ERROR] '$cmd' failed.";
- return $data;
+ my ($minsize, $maxsize)
+ = $data =~ m/[(] ([\d.]+) \s* pt, \s*
+ ([\d.]+) \s* pt \s* [])]/xms;
+
+ $minsize //= 0;
+ $maxsize //= 0;
+ return [ $minsize, $maxsize ];
}
@@ -638,7 +653,7 @@
[ $minsize, $maxsize, $workitem->{fontname} ];
}
- create_stylefile($family, \%fddata);
+ create_stylefile($nfss_mapping, $family, \%fddata);
while (my ($enc, $encdata) = each %fddata) {
while (my ($sty, $stydata) = each %$encdata) {
create_fdfile($nfss_mapping, $family, $enc, $sty, $stydata);
@@ -662,8 +677,23 @@
# Creates a LaTeX style file.
# --------------------------------------------------------------------------
sub create_stylefile {
- my ($fam, $data) = @_;
+ my ($nfss_mapping, $fam, $data) = @_;
+ my $testfont;
+ eval {
+ my $testenc = $ARGV{encoding}[0];
+ my $testfig = ( grep { exists $data->{$testenc}{$_} }
+ qw(OsF LF TOsF TLF) )[0] or die;
+ my $testweight = $nfss_mapping->{weight}{""}[0] or die;
+ my $testshape
+ = ( grep { exists $data->{$testenc}{$testfig}{$testweight}{$_} }
+ qw(n it sl sc)
+ )[0] or die;
+ $testfont
+ = $data->{$testenc}{$testfig}{$testweight}{$testshape}[0][2]
+ or die;
+ };
+
my %seen = %{Util::get_keys($data)};
my $fn = sprintf "%s.sty", $fam;
@@ -687,6 +717,7 @@
print {$STY} "\\RequirePackage{fontenc}\n";
print {$STY} "\\RequirePackage{textcomp}\n" if $seen{TS1};
+ print {$STY} "\\RequirePackage{ifthen}\n";
print {$STY} <<'END_STY_FONTAXES_START';
\IfFileExists{mweights.sty}{\RequirePackage{mweights}}{}
@@ -709,10 +740,12 @@
print {$STY} <<'END_STY_FONTAXES_SUP';
\fa at naming@exception{figures}{{superior}{proportional}}{Sup}
\fa at naming@exception{figures}{{superior}{tabular}}{Sup}
- \def\sufigures{\@nomath\sufigures
+ \def\supfigures{\@nomath\supfigures
\fontfigurestyle{superior}\selectfont}
- \DeclareTextFontCommand{\textsu}{\sufigures}
- \let\textsuperior\textsu
+ \let\sufigures\supfigures
+ \DeclareTextFontCommand{\textsup}{\supfigures}
+ \let\textsu\textsup
+ \let\textsuperior\textsup
END_STY_FONTAXES_SUP
}
@@ -721,10 +754,12 @@
print {$STY} <<'END_STY_FONTAXES_INF';
\fa at naming@exception{figures}{{inferior}{proportional}}{Inf}
\fa at naming@exception{figures}{{inferior}{tabular}}{Inf}
- \def\infigures{\@nomath\infigures
+ \def\inffigures{\@nomath\inffigures
\fontfigurestyle{inferior}\selectfont}
- \DeclareTextFontCommand{\textin}{\infigures}
- \let\textinferior\textin
+ \let\infigures\inffigures
+ \DeclareTextFontCommand{\textinf}{\inffigures}
+ \let\textin\textinf
+ \let\textinferior\textinf
END_STY_FONTAXES_INF
}
@@ -771,16 +806,10 @@
print {$STY} "}{}\n\n";
print {$STY} <<"END_STY_XKEYVAL";
-\\IfFileExists{xkeyval.sty}{
- \\newcommand*{\\$fam\@scale}{1}
- \\RequirePackage{xkeyval}
- \\DeclareOptionX{scale}{\\renewcommand*{\\$fam\@scale}{##1}}
- \\DeclareOptionX{scaled}{\\renewcommand*{\\$fam\@scale}{##1}}
-}{
- \\let\\DeclareOptionX\\DeclareOption
- \\let\\ExecuteOptionsX\\ExecuteOptions
- \\let\\ProcessOptionsX\\ProcessOptions
-}
+\\RequirePackage{xkeyval}
+\\newcommand*{\\$fam\@scale}{1}
+\\DeclareOptionX{scale}{\\renewcommand*{\\$fam\@scale}{#1}}
+\\DeclareOptionX{scaled}{\\renewcommand*{\\$fam\@scale}{#1}}
END_STY_XKEYVAL
@@ -807,12 +836,51 @@
}
END_STY_MAINFONT
+ if ($ARGV{math}) {
+ print {$STY} <<"END_STY_MATHOPTION";
+\\newif\\if$fam\@math\\$fam\@mathfalse
+\\DeclareOptionX{math}{\\$fam\@mathtrue}
+
+\\newcommand*{\\$fam\@mathstyle}{TeX}
+\\DeclareOptionX{math-style}{\\renewcommand*{\\$fam\@mathstyle}{#1}}
+
+END_STY_MATHOPTION
+
+ if ($seen{LF} or $seen{TLF}) {
+ print {$STY} "\\newcommand*{\\$fam\@mathfigurestyle}{LF}\n";
+ }
+ elsif ($seen{OsF} or $seen{TOsF}) {
+ print {$STY} "\\newcommand*{\\$fam\@mathfigurestyle}{OsF}\n";
+ }
+
+ if ($seen{OsF} or $seen{TOsF}) {
+ print {$STY}
+ "\\DeclareOptionX{matholdstyle}\n",
+ " {\\renewcommand*{\\$fam\@mathfigurestyle}{OsF}}\n";
+ }
+ if ($seen{LF} or $seen{TLF}) {
+ print {$STY}
+ "\\DeclareOptionX{mathlining}",
+ " {\\renewcommand{\\$fam\@mathfigurestyle}{LF}}\n";
+ }
+ print {$STY} "\n";
+
+ if ($seen{sw}) {
+ print {$STY} <<"END_STY_MATHCALOPTION";
+\\newif\\if$fam\@mathcal\\$fam\@mathcalfalse
+\\DeclareOptionX{mathcal}{\\$fam\@mathcaltrue}
+
+END_STY_MATHCALOPTION
+ }
+ }
+
my $defaults
= $seen{OsF} ? 'oldstyle,proportional'
: $seen{TOsF} ? 'oldstyle,tabular'
: $seen{LF} ? 'lining,proportional'
: $seen{TLF} ? 'lining,tabular'
- : die "[ERROR] Internal bug, please report!";
+ : die "[ERROR] Internal bug, please report!"
+ ;
my $default_bold;
for my $series (qw(heavy black extrabold demibold semibold bold)) {
@@ -836,17 +904,367 @@
}
$defaults .= ",$default_regular" if $default_regular;
- print {$STY} <<"END_STYLE_REST";
+ print {$STY} <<"END_STY_PROCESSOPTIONS";
\\ExecuteOptionsX{$defaults}
\\ProcessOptionsX\\relax
+END_STY_PROCESSOPTIONS
+
+ if (defined $testfont) {
+ print {$STY} <<"END_STY_MATCHLOWERCASE";
+\\ifthenelse{\\equal{\\$fam\@scale}{MatchLowercase}}
+ {\\newlength{\\$fam\@defaultx}
+ \\settoheight{\\$fam\@defaultx}{x}
+ \\newlength{\\$fam\@xheight}
+ \\settoheight{\\$fam\@xheight}
+ {{\\font\\testfont=$testfont at \\f\@size pt\\testfont x}}
+ \\renewcommand*{\\$fam\@scale}
+ {\\strip\@pt\\dimexpr\\number\\numexpr\\number\\dimexpr\\$fam\@defaultx\\relax*65536/\\number\\dimexpr\\$fam\@xheight\\relax\\relax sp\\relax}
+ }
+ {}
+
+END_STY_MATCHLOWERCASE
+ }
+
+ print {$STY} <<"END_STYLE_REST";
\\renewcommand*
{\\$ARGV{nfss}default}
{$fam-\\$fam\@figurealign\\$fam\@figurestyle}
-\\endinput
END_STYLE_REST
+ if ($ARGV{math}) {
+ print {$STY} <<"END_STY_MATH";
+\\newif\\if$fam\@mathLATINup\\$fam\@mathLATINupfalse
+\\newif\\if$fam\@mathlatinup\\$fam\@mathlatinupfalse
+\\newif\\if$fam\@mathGREEKup\\$fam\@mathGREEKupfalse
+\\newif\\if$fam\@mathgreekup\\$fam\@mathgreekupfalse
+
+\\if$fam\@math
+ \\DeclareSymbolFont{newoperators} {OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{n}
+ \\SetSymbolFont{newoperators}{bold}{OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{n}
+
+ \\DeclareSymbolFont{newletters} {OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{it}
+ \\SetSymbolFont{newletters}{bold}{OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{it}
+
+ \\DeclareSymbolFontAlphabet{\\mathrm}{newoperators}
+ \\DeclareSymbolFontAlphabet{\\mathnormal}{newletters}
+
+ \\def\\operator\@font{\\mathgroup\\symnewoperators}
+ \\SetMathAlphabet{\\mathit}{normal}{OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{it}
+ \\SetMathAlphabet{\\mathit}{bold} {OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{it}
+
+ \\SetMathAlphabet{\\mathbf}{normal}{OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{n}
+ \\SetMathAlphabet{\\mathbf}{bold} {OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{n}
+
+ \\def\\re\@DeclareMathSymbol#1#2#3#4{%
+ \\if\\relax\\noexpand#1\\let#1=\\undefined\\fi
+ \\DeclareMathSymbol{#1}{#2}{#3}{#4}}
+
+ \\def\\re\@DeclareMathDelimiter#1#2#3#4#5#6{%
+ \\let#1=\\undefined
+ \\DeclareMathDelimiter{#1}{#2}{#3}{#4}{#5}{#6}}
+
+ \\def\\re\@DeclareMathAccent#1#2#3#4{%
+ \\let#1=\\undefined
+ \\DeclareMathAccent{#1}{#2}{#3}{#4}}
+
+ \\re\@DeclareMathSymbol{0}{\\mathalpha}{newoperators}{`0}
+ \\re\@DeclareMathSymbol{1}{\\mathalpha}{newoperators}{`1}
+ \\re\@DeclareMathSymbol{2}{\\mathalpha}{newoperators}{`2}
+ \\re\@DeclareMathSymbol{3}{\\mathalpha}{newoperators}{`3}
+ \\re\@DeclareMathSymbol{4}{\\mathalpha}{newoperators}{`4}
+ \\re\@DeclareMathSymbol{5}{\\mathalpha}{newoperators}{`5}
+ \\re\@DeclareMathSymbol{6}{\\mathalpha}{newoperators}{`6}
+ \\re\@DeclareMathSymbol{7}{\\mathalpha}{newoperators}{`7}
+ \\re\@DeclareMathSymbol{8}{\\mathalpha}{newoperators}{`8}
+ \\re\@DeclareMathSymbol{9}{\\mathalpha}{newoperators}{`9}
+
+ \\re\@DeclareMathSymbol{a}{\\mathalpha}{newletters}{`a}
+ \\re\@DeclareMathSymbol{b}{\\mathalpha}{newletters}{`b}
+ \\re\@DeclareMathSymbol{c}{\\mathalpha}{newletters}{`c}
+ \\re\@DeclareMathSymbol{d}{\\mathalpha}{newletters}{`d}
+ \\re\@DeclareMathSymbol{e}{\\mathalpha}{newletters}{`e}
+ \\re\@DeclareMathSymbol{f}{\\mathalpha}{newletters}{`f}
+ \\re\@DeclareMathSymbol{g}{\\mathalpha}{newletters}{`g}
+ \\re\@DeclareMathSymbol{h}{\\mathalpha}{newletters}{`h}
+ \\re\@DeclareMathSymbol{i}{\\mathalpha}{newletters}{`i}
+ \\re\@DeclareMathSymbol{j}{\\mathalpha}{newletters}{`j}
+ \\re\@DeclareMathSymbol{k}{\\mathalpha}{newletters}{`k}
+ \\re\@DeclareMathSymbol{l}{\\mathalpha}{newletters}{`l}
+ \\re\@DeclareMathSymbol{m}{\\mathalpha}{newletters}{`m}
+ \\re\@DeclareMathSymbol{n}{\\mathalpha}{newletters}{`n}
+ \\re\@DeclareMathSymbol{o}{\\mathalpha}{newletters}{`o}
+ \\re\@DeclareMathSymbol{p}{\\mathalpha}{newletters}{`p}
+ \\re\@DeclareMathSymbol{q}{\\mathalpha}{newletters}{`q}
+ \\re\@DeclareMathSymbol{r}{\\mathalpha}{newletters}{`r}
+ \\re\@DeclareMathSymbol{s}{\\mathalpha}{newletters}{`s}
+ \\re\@DeclareMathSymbol{t}{\\mathalpha}{newletters}{`t}
+ \\re\@DeclareMathSymbol{u}{\\mathalpha}{newletters}{`u}
+ \\re\@DeclareMathSymbol{v}{\\mathalpha}{newletters}{`v}
+ \\re\@DeclareMathSymbol{w}{\\mathalpha}{newletters}{`w}
+ \\re\@DeclareMathSymbol{x}{\\mathalpha}{newletters}{`x}
+ \\re\@DeclareMathSymbol{y}{\\mathalpha}{newletters}{`y}
+ \\re\@DeclareMathSymbol{z}{\\mathalpha}{newletters}{`z}
+
+ \\re\@DeclareMathSymbol{A}{\\mathalpha}{newletters}{`A}
+ \\re\@DeclareMathSymbol{B}{\\mathalpha}{newletters}{`B}
+ \\re\@DeclareMathSymbol{C}{\\mathalpha}{newletters}{`C}
+ \\re\@DeclareMathSymbol{D}{\\mathalpha}{newletters}{`D}
+ \\re\@DeclareMathSymbol{E}{\\mathalpha}{newletters}{`E}
+ \\re\@DeclareMathSymbol{F}{\\mathalpha}{newletters}{`F}
+ \\re\@DeclareMathSymbol{G}{\\mathalpha}{newletters}{`G}
+ \\re\@DeclareMathSymbol{H}{\\mathalpha}{newletters}{`H}
+ \\re\@DeclareMathSymbol{I}{\\mathalpha}{newletters}{`I}
+ \\re\@DeclareMathSymbol{J}{\\mathalpha}{newletters}{`J}
+ \\re\@DeclareMathSymbol{K}{\\mathalpha}{newletters}{`K}
+ \\re\@DeclareMathSymbol{L}{\\mathalpha}{newletters}{`L}
+ \\re\@DeclareMathSymbol{M}{\\mathalpha}{newletters}{`M}
+ \\re\@DeclareMathSymbol{N}{\\mathalpha}{newletters}{`N}
+ \\re\@DeclareMathSymbol{O}{\\mathalpha}{newletters}{`O}
+ \\re\@DeclareMathSymbol{P}{\\mathalpha}{newletters}{`P}
+ \\re\@DeclareMathSymbol{Q}{\\mathalpha}{newletters}{`Q}
+ \\re\@DeclareMathSymbol{R}{\\mathalpha}{newletters}{`R}
+ \\re\@DeclareMathSymbol{S}{\\mathalpha}{newletters}{`S}
+ \\re\@DeclareMathSymbol{T}{\\mathalpha}{newletters}{`T}
+ \\re\@DeclareMathSymbol{U}{\\mathalpha}{newletters}{`U}
+ \\re\@DeclareMathSymbol{V}{\\mathalpha}{newletters}{`V}
+ \\re\@DeclareMathSymbol{W}{\\mathalpha}{newletters}{`W}
+ \\re\@DeclareMathSymbol{X}{\\mathalpha}{newletters}{`X}
+ \\re\@DeclareMathSymbol{Y}{\\mathalpha}{newletters}{`Y}
+ \\re\@DeclareMathSymbol{Z}{\\mathalpha}{newletters}{`Z}
+
+ \\re\@DeclareMathSymbol{\\imath}{\\mathord}{newletters}{"7B}
+ \\re\@DeclareMathSymbol{\\jmath}{\\mathord}{newletters}{"7C}
+
+ %
+ % A number of math symbol declarations have been commented out,
+ % since these characters generally do not work very well when
+ % typesetting maths (either because of spacing issues or because
+ % they don't mix with others symbols).
+ % The commented-out declarations have been left in this style file
+ % in case the user does want to re-activate those characters.
+ %
+
+ \\re\@DeclareMathSymbol{!}{\\mathclose}{newoperators}{"21}
+ % \\re\@DeclareMathSymbol{+}{\\mathbin} {newoperators}{"2B}
+ \\re\@DeclareMathSymbol{:}{\\mathrel} {newoperators}{"3A}
+ \\re\@DeclareMathSymbol{;}{\\mathpunct}{newoperators}{"3B}
+ % \\re\@DeclareMathSymbol{=}{\\mathrel} {newoperators}{"3D}
+ \\re\@DeclareMathSymbol{?}{\\mathclose}{newoperators}{"3F}
+
+ \\re\@DeclareMathSymbol{.}{\\mathord} {newletters}{"3A}
+ \\re\@DeclareMathSymbol{,}{\\mathpunct}{newletters}{"3B}
+ % \\re\@DeclareMathSymbol{<}{\\mathrel} {newletters}{"3C}
+ % \\re\@DeclareMathSymbol{/}{\\mathord} {newletters}{"3D}
+ % \\re\@DeclareMathSymbol{>}{\\mathrel} {newletters}{"3E}
+
+ \\re\@DeclareMathSymbol{\\mathdollar}{\\mathord} {newoperators}{"24}
+ \\re\@DeclareMathSymbol{\\colon} {\\mathpunct}{newoperators}{"3A}
+
+ % \\DeclareMathDelimiter{(}{\\mathopen} {newoperators}{"28}{largesymbols}{"00}
+ % \\DeclareMathDelimiter{)}{\\mathclose}{newoperators}{"29}{largesymbols}{"01}
+ % \\DeclareMathDelimiter{[}{\\mathopen} {newoperators}{"5B}{largesymbols}{"02}
+ % \\DeclareMathDelimiter{]}{\\mathclose}{newoperators}{"5D}{largesymbols}{"03}
+ % \\DeclareMathDelimiter{/}{\\mathord} {newoperators}{"2F}{largesymbols}{"0E}
+
+ \\re\@DeclareMathAccent{\\grave} {\\mathalpha}{newoperators}{"12}
+ \\re\@DeclareMathAccent{\\acute} {\\mathalpha}{newoperators}{"13}
+ \\re\@DeclareMathAccent{\\check} {\\mathalpha}{newoperators}{"14}
+ \\re\@DeclareMathAccent{\\breve} {\\mathalpha}{newoperators}{"15}
+ \\re\@DeclareMathAccent{\\bar} {\\mathalpha}{newoperators}{"16}
+ \\re\@DeclareMathAccent{\\mathring}{\\mathalpha}{newoperators}{"17}
+ \\re\@DeclareMathAccent{\\hat} {\\mathalpha}{newoperators}{"5E}
+ \\re\@DeclareMathAccent{\\dot} {\\mathalpha}{newoperators}{"5F}
+ \\re\@DeclareMathAccent{\\tilde} {\\mathalpha}{newoperators}{"7E}
+ \\re\@DeclareMathAccent{\\ddot} {\\mathalpha}{newoperators}{"7F}
+
+ \\re\@DeclareMathSymbol{\\Gamma} {\\mathalpha}{newoperators}{"00}
+ \\re\@DeclareMathSymbol{\\Delta} {\\mathalpha}{newoperators}{"01}
+ \\re\@DeclareMathSymbol{\\Theta} {\\mathalpha}{newoperators}{"02}
+ \\re\@DeclareMathSymbol{\\Lambda} {\\mathalpha}{newoperators}{"03}
+ \\re\@DeclareMathSymbol{\\Xi} {\\mathalpha}{newoperators}{"04}
+ \\re\@DeclareMathSymbol{\\Pi} {\\mathalpha}{newoperators}{"05}
+ \\re\@DeclareMathSymbol{\\Sigma} {\\mathalpha}{newoperators}{"06}
+ \\re\@DeclareMathSymbol{\\Upsilon}{\\mathalpha}{newoperators}{"07}
+ \\re\@DeclareMathSymbol{\\Phi} {\\mathalpha}{newoperators}{"08}
+ \\re\@DeclareMathSymbol{\\Psi} {\\mathalpha}{newoperators}{"09}
+ \\re\@DeclareMathSymbol{\\Omega} {\\mathalpha}{newoperators}{"0A}
+
+ \\re\@DeclareMathSymbol{\\alpha} {\\mathord}{newletters}{"0B}
+ \\re\@DeclareMathSymbol{\\beta} {\\mathord}{newletters}{"0C}
+ \\re\@DeclareMathSymbol{\\gamma} {\\mathord}{newletters}{"0D}
+ \\re\@DeclareMathSymbol{\\delta} {\\mathord}{newletters}{"0E}
+ \\re\@DeclareMathSymbol{\\epsilon} {\\mathord}{newletters}{"0F}
+ \\re\@DeclareMathSymbol{\\zeta} {\\mathord}{newletters}{"10}
+ \\re\@DeclareMathSymbol{\\eta} {\\mathord}{newletters}{"11}
+ \\re\@DeclareMathSymbol{\\theta} {\\mathord}{newletters}{"12}
+ \\re\@DeclareMathSymbol{\\iota} {\\mathord}{newletters}{"13}
+ \\re\@DeclareMathSymbol{\\kappa} {\\mathord}{newletters}{"14}
+ \\re\@DeclareMathSymbol{\\lambda} {\\mathord}{newletters}{"15}
+ \\re\@DeclareMathSymbol{\\mu} {\\mathord}{newletters}{"16}
+ \\re\@DeclareMathSymbol{\\nu} {\\mathord}{newletters}{"17}
+ \\re\@DeclareMathSymbol{\\xi} {\\mathord}{newletters}{"18}
+ \\re\@DeclareMathSymbol{\\pi} {\\mathord}{newletters}{"19}
+ \\re\@DeclareMathSymbol{\\rho} {\\mathord}{newletters}{"1A}
+ \\re\@DeclareMathSymbol{\\sigma} {\\mathord}{newletters}{"1B}
+ \\re\@DeclareMathSymbol{\\tau} {\\mathord}{newletters}{"1C}
+ \\re\@DeclareMathSymbol{\\upsilon} {\\mathord}{newletters}{"1D}
+ \\re\@DeclareMathSymbol{\\phi} {\\mathord}{newletters}{"1E}
+ \\re\@DeclareMathSymbol{\\chi} {\\mathord}{newletters}{"1F}
+ \\re\@DeclareMathSymbol{\\psi} {\\mathord}{newletters}{"20}
+ \\re\@DeclareMathSymbol{\\omega} {\\mathord}{newletters}{"21}
+ \\re\@DeclareMathSymbol{\\varepsilon}{\\mathord}{newletters}{"22}
+ \\re\@DeclareMathSymbol{\\vartheta} {\\mathord}{newletters}{"23}
+ \\re\@DeclareMathSymbol{\\varpi} {\\mathord}{newletters}{"24}
+ \\re\@DeclareMathSymbol{\\varrho} {\\mathord}{newletters}{"25}
+ \\re\@DeclareMathSymbol{\\varsigma} {\\mathord}{newletters}{"26}
+ \\re\@DeclareMathSymbol{\\varphi} {\\mathord}{newletters}{"27}
+
+ \\ifthenelse{\\equal{\\$fam\@mathstyle}{TeX}}
+ {\\$fam\@mathGREEKuptrue}
+ {}
+ \\ifthenelse{\\equal{\\$fam\@mathstyle}{french}}
+ {\\$fam\@mathLATINuptrue
+ \\$fam\@mathGREEKuptrue
+ \\$fam\@mathgreekuptrue}
+ {}
+ \\ifthenelse{\\equal{\\$fam\@mathstyle}{upright}}
+ {\\$fam\@mathLATINuptrue
+ \\$fam\@mathlatinuptrue
+ \\$fam\@mathGREEKuptrue
+ \\$fam\@mathgreekuptrue}
+ {}
+
+ \\if$fam\@mathLATINup
+ \\re\@DeclareMathSymbol{A}{\\mathalpha}{newoperators}{`A}
+ \\re\@DeclareMathSymbol{B}{\\mathalpha}{newoperators}{`B}
+ \\re\@DeclareMathSymbol{C}{\\mathalpha}{newoperators}{`C}
+ \\re\@DeclareMathSymbol{D}{\\mathalpha}{newoperators}{`D}
+ \\re\@DeclareMathSymbol{E}{\\mathalpha}{newoperators}{`E}
+ \\re\@DeclareMathSymbol{F}{\\mathalpha}{newoperators}{`F}
+ \\re\@DeclareMathSymbol{G}{\\mathalpha}{newoperators}{`G}
+ \\re\@DeclareMathSymbol{H}{\\mathalpha}{newoperators}{`H}
+ \\re\@DeclareMathSymbol{I}{\\mathalpha}{newoperators}{`I}
+ \\re\@DeclareMathSymbol{J}{\\mathalpha}{newoperators}{`J}
+ \\re\@DeclareMathSymbol{K}{\\mathalpha}{newoperators}{`K}
+ \\re\@DeclareMathSymbol{L}{\\mathalpha}{newoperators}{`L}
+ \\re\@DeclareMathSymbol{M}{\\mathalpha}{newoperators}{`M}
+ \\re\@DeclareMathSymbol{N}{\\mathalpha}{newoperators}{`N}
+ \\re\@DeclareMathSymbol{O}{\\mathalpha}{newoperators}{`O}
+ \\re\@DeclareMathSymbol{P}{\\mathalpha}{newoperators}{`P}
+ \\re\@DeclareMathSymbol{Q}{\\mathalpha}{newoperators}{`Q}
+ \\re\@DeclareMathSymbol{R}{\\mathalpha}{newoperators}{`R}
+ \\re\@DeclareMathSymbol{S}{\\mathalpha}{newoperators}{`S}
+ \\re\@DeclareMathSymbol{T}{\\mathalpha}{newoperators}{`T}
+ \\re\@DeclareMathSymbol{U}{\\mathalpha}{newoperators}{`U}
+ \\re\@DeclareMathSymbol{V}{\\mathalpha}{newoperators}{`V}
+ \\re\@DeclareMathSymbol{W}{\\mathalpha}{newoperators}{`W}
+ \\re\@DeclareMathSymbol{X}{\\mathalpha}{newoperators}{`X}
+ \\re\@DeclareMathSymbol{Y}{\\mathalpha}{newoperators}{`Y}
+ \\re\@DeclareMathSymbol{Z}{\\mathalpha}{newoperators}{`Z}
+ \\fi
+
+ \\if$fam\@mathlatinup
+ \\DeclareSymbolFont{upletters} {OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{n}
+ \\SetSymbolFont{upletters}{bold}{OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{n}
+
+ \\re\@DeclareMathSymbol{a}{\\mathord}{upletters}{`a}
+ \\re\@DeclareMathSymbol{b}{\\mathord}{upletters}{`b}
+ \\re\@DeclareMathSymbol{c}{\\mathord}{upletters}{`c}
+ \\re\@DeclareMathSymbol{d}{\\mathord}{upletters}{`d}
+ \\re\@DeclareMathSymbol{e}{\\mathord}{upletters}{`e}
+ \\re\@DeclareMathSymbol{f}{\\mathord}{upletters}{`f}
+ \\re\@DeclareMathSymbol{g}{\\mathord}{upletters}{`g}
+ \\re\@DeclareMathSymbol{h}{\\mathord}{upletters}{`h}
+ \\re\@DeclareMathSymbol{i}{\\mathord}{upletters}{`i}
+ \\re\@DeclareMathSymbol{j}{\\mathord}{upletters}{`j}
+ \\re\@DeclareMathSymbol{k}{\\mathord}{upletters}{`k}
+ \\re\@DeclareMathSymbol{l}{\\mathord}{upletters}{`l}
+ \\re\@DeclareMathSymbol{m}{\\mathord}{upletters}{`m}
+ \\re\@DeclareMathSymbol{n}{\\mathord}{upletters}{`n}
+ \\re\@DeclareMathSymbol{o}{\\mathord}{upletters}{`o}
+ \\re\@DeclareMathSymbol{p}{\\mathord}{upletters}{`p}
+ \\re\@DeclareMathSymbol{q}{\\mathord}{upletters}{`q}
+ \\re\@DeclareMathSymbol{r}{\\mathord}{upletters}{`r}
+ \\re\@DeclareMathSymbol{s}{\\mathord}{upletters}{`s}
+ \\re\@DeclareMathSymbol{t}{\\mathord}{upletters}{`t}
+ \\re\@DeclareMathSymbol{u}{\\mathord}{upletters}{`u}
+ \\re\@DeclareMathSymbol{v}{\\mathord}{upletters}{`v}
+ \\re\@DeclareMathSymbol{w}{\\mathord}{upletters}{`w}
+ \\re\@DeclareMathSymbol{x}{\\mathord}{upletters}{`x}
+ \\re\@DeclareMathSymbol{y}{\\mathord}{upletters}{`y}
+ \\re\@DeclareMathSymbol{z}{\\mathord}{upletters}{`z}
+
+ \\re\@DeclareMathSymbol{\\imath}{\\mathord}{upletters}{"7B}
+ \\re\@DeclareMathSymbol{\\jmath}{\\mathord}{upletters}{"7C}
+ \\fi
+
+ \\if$fam\@mathGREEKup
+ \\else
+ \\re\@DeclareMathSymbol{\\Gamma} {\\mathalpha}{newletters}{"00}
+ \\re\@DeclareMathSymbol{\\Delta} {\\mathalpha}{newletters}{"01}
+ \\re\@DeclareMathSymbol{\\Theta} {\\mathalpha}{newletters}{"02}
+ \\re\@DeclareMathSymbol{\\Lambda} {\\mathalpha}{newletters}{"03}
+ \\re\@DeclareMathSymbol{\\Xi} {\\mathalpha}{newletters}{"04}
+ \\re\@DeclareMathSymbol{\\Pi} {\\mathalpha}{newletters}{"05}
+ \\re\@DeclareMathSymbol{\\Sigma} {\\mathalpha}{newletters}{"06}
+ \\re\@DeclareMathSymbol{\\Upsilon}{\\mathalpha}{newletters}{"07}
+ \\re\@DeclareMathSymbol{\\Phi} {\\mathalpha}{newletters}{"08}
+ \\re\@DeclareMathSymbol{\\Psi} {\\mathalpha}{newletters}{"09}
+ \\re\@DeclareMathSymbol{\\Omega} {\\mathalpha}{newletters}{"0A}
+ \\fi
+
+ \\if$fam\@mathgreekup
+ \\DeclareSymbolFont{upletters} {OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{n}
+ \\SetSymbolFont{upletters}{bold}{OML}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{n}
+
+ \\re\@DeclareMathSymbol{\\alpha} {\\mathord}{upletters}{"0B}
+ \\re\@DeclareMathSymbol{\\beta} {\\mathord}{upletters}{"0C}
+ \\re\@DeclareMathSymbol{\\gamma} {\\mathord}{upletters}{"0D}
+ \\re\@DeclareMathSymbol{\\delta} {\\mathord}{upletters}{"0E}
+ \\re\@DeclareMathSymbol{\\epsilon} {\\mathord}{upletters}{"0F}
+ \\re\@DeclareMathSymbol{\\zeta} {\\mathord}{upletters}{"10}
+ \\re\@DeclareMathSymbol{\\eta} {\\mathord}{upletters}{"11}
+ \\re\@DeclareMathSymbol{\\theta} {\\mathord}{upletters}{"12}
+ \\re\@DeclareMathSymbol{\\iota} {\\mathord}{upletters}{"13}
+ \\re\@DeclareMathSymbol{\\kappa} {\\mathord}{upletters}{"14}
+ \\re\@DeclareMathSymbol{\\lambda} {\\mathord}{upletters}{"15}
+ \\re\@DeclareMathSymbol{\\mu} {\\mathord}{upletters}{"16}
+ \\re\@DeclareMathSymbol{\\nu} {\\mathord}{upletters}{"17}
+ \\re\@DeclareMathSymbol{\\xi} {\\mathord}{upletters}{"18}
+ \\re\@DeclareMathSymbol{\\pi} {\\mathord}{upletters}{"19}
+ \\re\@DeclareMathSymbol{\\rho} {\\mathord}{upletters}{"1A}
+ \\re\@DeclareMathSymbol{\\sigma} {\\mathord}{upletters}{"1B}
+ \\re\@DeclareMathSymbol{\\tau} {\\mathord}{upletters}{"1C}
+ \\re\@DeclareMathSymbol{\\upsilon} {\\mathord}{upletters}{"1D}
+ \\re\@DeclareMathSymbol{\\phi} {\\mathord}{upletters}{"1E}
+ \\re\@DeclareMathSymbol{\\chi} {\\mathord}{upletters}{"1F}
+ \\re\@DeclareMathSymbol{\\psi} {\\mathord}{upletters}{"20}
+ \\re\@DeclareMathSymbol{\\omega} {\\mathord}{upletters}{"21}
+ \\re\@DeclareMathSymbol{\\varepsilon}{\\mathord}{upletters}{"22}
+ \\re\@DeclareMathSymbol{\\vartheta} {\\mathord}{upletters}{"23}
+ \\re\@DeclareMathSymbol{\\varpi} {\\mathord}{upletters}{"24}
+ \\re\@DeclareMathSymbol{\\varrho} {\\mathord}{upletters}{"25}
+ \\re\@DeclareMathSymbol{\\varsigma} {\\mathord}{upletters}{"26}
+ \\re\@DeclareMathSymbol{\\varphi} {\\mathord}{upletters}{"27}
+ \\fi
+\\fi
+
+END_STY_MATH
+
+ if ($seen{sw}) {
+ print {$STY} <<"END_STY_MATHCAL";
+\\if$fam\@mathcal
+ \\SetMathAlphabet{\\mathcal}{normal}{OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\mdseries\@$ARGV{nfss}}{sw}
+ \\SetMathAlphabet{\\mathcal}{bold} {OT1}{$fam-\\$fam\@figurealign\\$fam\@mathfigurestyle}{\\bfseries\@$ARGV{nfss}}{sw}
+\\fi
+
+END_STY_MATHCAL
+ }
+ }
+
+ print {$STY} "\\endinput\n";
close $STY;
return;
@@ -889,7 +1307,9 @@
\\fi
\\DeclareFontFamily{$enc}{$fam-$sty}{@{[
- $ARGV{nfss} eq 'tt' ? '\hyphenchar\font=-1' : ""
+ $ARGV{nfss} eq 'tt' ? '\hyphenchar\font=-1'
+ : $enc eq 'OML' ? '\skewchar\font=127'
+ : q{}
]}}
END_FD_HEADER
@@ -1076,6 +1496,9 @@
nfssweight: @{[ join q{, }, @{$ARGV{nfssweight}} ]}
nfsswidth: @{[ join q{, }, @{$ARGV{nfsswidth}} ]}
+ math: @{[ $ARGV{math} ? 'yes' : 'no' ]}
+ mathspacing: $ARGV{mathspacing}
+
END_ARGUMENTS
if ($ARGV{fig_height} or $ARGV{fig_width}) {
@@ -1182,7 +1605,7 @@
$workitem->{encoding},
$workitem->{figurestyle},
$workitem->{fdshape},
- join(q(, ), @{$workitem->{features}});
+ join(q{, }, @{$workitem->{features}});
$prevfn = $workitem->{font}{filename};
}
@@ -1317,8 +1740,8 @@
c => [ qw( condensed ) ],
sc => [ qw( semicondensed narrow ) ],
'' => [ qw( regular ) ],
- sx => [ qw( semiextended semiexpanded ) ],
- x => [ qw( extended expanded wide ) ],
+ sx => [ qw( semiextended semiexpanded wide ) ],
+ x => [ qw( extended expanded ) ],
ex => [],
ux => [],
);
@@ -1645,7 +2068,7 @@
-defaulttabular considered 'default' for this font; see docs
-defaultproportional
- -extra="TEXT" Add TEXT to the command for 'otftotfm'
+ -extra="EXTRA" Add EXTRA to the otftotfm command for all fonts
-target="DIRECTORY" Install files into specified TEXMF tree
-vendor="VENDOR" Only used for naming directories
-typeface="TYPEFACE" Only used for naming directories
@@ -1664,6 +2087,9 @@
-verbose Print more data to log file
-version Print version number and exit
+ -math Generate basic math fonts
+ -mathspacing=AMOUNT Letterspace the math fonts by AMOUNT/1000 em
+
font[s] The fonts (.otf or .ttf format) to install.
Please report any bugs or suggestions to <marcpenninga at gmail.com>.
@@ -1700,6 +2126,8 @@
verbose => 0,
nfsswidth => [],
nfssweight => [],
+ math => 0,
+ mathspacing => 0,
);
@@ -1765,12 +2193,14 @@
NFSS::set_widths($key, @values);
$ARGV{$key} = 'user-defined';
},
+ 'math!' => \$ARGV{math},
+ 'mathspacing=i' => \$ARGV{mathspacing},
)
or die "$USAGE";
if (!@ARGV) {
Pod::Usage::pod2usage(
- -msg => '[ERROR] No font files given, nothing to do!',
+ -msg => '[ERROR] No font files given, nothing to do!',
-verbose => 1);
}
@@ -1827,6 +2257,7 @@
# The official names for various coding schemes.
my %SCHEME = (
OT1 => 'TEX TEXT',
+ OML => 'TEX MATH ITALIC',
T1 => 'EXTENDED TEX FONT ENCODING - LATIN',
TS1 => 'TEX TEXT COMPANION SYMBOLS 1---TS1',
LY1 => 'TEX TYPEWRITER AND WINDOWS ANSI',
@@ -1988,6 +2419,13 @@
extra => '',
name => '',
},
+ math => {
+ code => { n => 'n', it => 'it', sl => 'sl' },
+ reqd => [],
+ nice => [ 'onum' ],
+ extra => '--math-spacing=127',
+ name => '',
+ },
);
=begin Comment
@@ -2024,25 +2462,25 @@
reqd => [],
nice => [ 'kern', 'liga' ],
extra => '',
- styles => [ 'normal', 'smallcaps', 'swash', 'textcomp' ],
+ styles => [ qw(normal smallcaps swash textcomp math) ],
},
LF => {
reqd => [],
nice => [ 'kern', 'liga' ],
extra => '',
- styles => [ 'normal', 'smallcaps', 'swash', 'textcomp' ],
+ styles => [ qw(normal smallcaps swash textcomp math) ],
},
TOsF => {
reqd => [],
nice => [ 'kern', 'liga' ],
extra => '',
- styles => [ 'normal', 'smallcaps', 'swash', 'textcomp' ],
+ styles => [ qw(normal smallcaps swash textcomp math) ],
},
OsF => {
reqd => [],
nice => [ 'kern', 'liga' ],
extra => '',
- styles => [ 'normal', 'smallcaps', 'swash', 'textcomp' ],
+ styles => [ qw(normal smallcaps swash textcomp math) ],
},
Sup => {
reqd => [ 'sups' ],
@@ -2097,9 +2535,8 @@
sub get_styles {
my $figurestyle = shift;
- my $result = $FIGURESTYLE{$figurestyle}{styles} // [];
-
- return @{$result};
+ return grep { defined $STYLE{$_} }
+ @{$FIGURESTYLE{$figurestyle}{styles}};
}
@@ -2286,6 +2723,21 @@
delete $STYLE{textcomp};
}
+ if ($ARGV{math}) {
+ if (!( grep { $_ eq 'OT1' } @{$ARGV{encoding}} )) {
+ $ARGV{encoding} = [ 'OT1', @{$ARGV{encoding}} ];
+ }
+ }
+ else {
+ delete $STYLE{math}
+ }
+
+ if ($ARGV{mathspacing}) {
+ if (defined $STYLE{math}{extra}) {
+ $STYLE{math}{extra} .= " --letterspacing=$ARGV{mathspacing}";
+ }
+ }
+
return;
}
@@ -2566,6 +3018,7 @@
= @{$workitem}{qw(font figurestyle style)};
my @encodings = $style eq 'textcomp' ? qw(ts1)
: $figurestyle eq 'Orn' ? qw(ly1)
+ : $style eq 'math' ? qw(oml)
: @{$ARGV{encoding}}
;
@@ -2600,8 +3053,12 @@
}
}
- # Look up the NFSS code for this font's shape.
+ # Look up the NFSS code for this font's shape...
$workitem->{fdshape} = Tables::get_fdshape($style, $font->{basicshape});
+ # ... but drop this workitem if we shouldn't generate this shape.
+ if (!defined $workitem->{fdshape}) {
+ return;
+ }
# Figure out which encoding file to use for this font.
my $try = Cwd::abs_path($workitem->{encoding});
@@ -2611,7 +3068,8 @@
}
else {
($workitem->{enc_file} = $workitem->{encoding})
- =~ s/\A(OT1|T1|TS1|LY1|LGR|T2[ABC]|T3|TS3)\z/fontools_\L$1\E/xmsi;
+ =~ s{ \A (OT1|OML|T1|TS1|LY1|LGR|T2[ABC]|T3|TS3) \z }
+ {fontools_\L$1\E}xmsi;
}
# Ornaments have no text encoding, and don't need kerning and ligatures.
@@ -2631,9 +3089,9 @@
# Don't create ligatures if the user doesn't want them.
delete $feature{liga} if !$ARGV{ligatures};
- # Don't create kerns and ligatures for TS* fonts.
+ # Don't create kerns and ligatures for symbol or math fonts.
delete @feature{qw(kern liga)}
- if $workitem->{encoding} =~ m/\A TS\d \z/xmsi;
+ if $workitem->{encoding} =~ m/\A ( TS\d | OML ) \z/xmsi;
$workitem->{features} = [ sort keys %feature ];
@@ -2668,7 +3126,7 @@
To create the documentation:
- pod2man --center="Marc Penninga" --release="fontools" --section=1 \
+ pod2man --center='Marc Penninga' --release='fontools' --section=1 \
autoinst - | groff -Tps -man - | ps2pdf - autoinst.pdf
@@ -2734,7 +3192,7 @@
=item I<nw>
-"Upright swash"
+`Upright swash'
=back
@@ -2752,11 +3210,11 @@
=item -
-Families with "Titling" characters;
-these "... replace the default glyphs
+Families with `Titling' characters;
+these `... replace the default glyphs
with corresponding forms designed specifically for titling.
These may be all-capital and/or larger on the body,
-and adjusted for viewing at larger sizes"
+and adjusted for viewing at larger sizes'
(according to the OpenType Specification).
=item -
@@ -2770,7 +3228,7 @@
Of course, if your fonts don't contain italics, oldstyle digits, small caps
etc., the corresponding shapes and families are not created.
In addition, the creation of most families and shapes can be controlled
-by the user (see L</"COMMAND-LINE OPTIONS"> below).
+by the user (see L</COMMAND-LINE OPTIONS> below).
These families use the I<FontPro> project's naming scheme:
I<< <FontFamily>-<Suffix> >>, where I<< <Suffix> >> is:
@@ -2806,7 +3264,7 @@
=item I<Titl>
-Titling characters; see above.
+Titling characters; see above
=item I<Orn>
@@ -2824,55 +3282,11 @@
The individual fonts are named I<< <FontName>-<suffix>-<shape>-<enc> >>,
where I<< <suffix> >> is the same as above (but in lowercase),
-I<< <shape> >> is either empty, "sc" or "swash",
+I<< <shape> >> is either empty, `sc' or `swash',
and I<< <enc> >> is the encoding (also in lowercase).
-A typical name in this scheme would be "FiraSans-Light-osf-sc-ly1".
+A typical name in this scheme would be `FiraSans-Light-osf-sc-ly1'.
-=head2 About the log file
-
-B<autoinst> writes some info about what it thinks it's doing to a log file.
-By default this is called F<< <fontfamily>.log >>,
-but this choice can be overridden by the user;
-see the I<-logfile> command-line option in L</"COMMAND-LINE OPTIONS"> below.
-If this log file already exists, B<autoinst> will append its data to the end
-rather than overwrite it.
-Use the I<-verbose> command-line option to ask for more detailed info.
-
-
-=head2 A note for MiKTeX users
-
-Automatically installing the fonts into a suitable TEXMF tree
-(as B<autoinst> tries to do by default) only works for TeX-installations
-that use the F<kpathsea> library; with TeX distributions that implement
-their own directory searching (such as MiKTeX), B<autoinst> will complain
-that it cannot find the F<kpsewhich> program and move all generated files
-into a subdirectory C<./autoinst_output/> of the current directory.
-If you use such a TeX distribution, you should either move these files
-to their correct destinations by hand, or use the I<-target> option
-(see L</"COMMAND-LINE OPTIONS"> below) to manually specify a TEXMF tree.
-
-Also, some OpenType fonts contain so many kerning pairs that the resulting
-F<pl> and F<vpl> files are too big for MiKTeX's F<pltotf> and F<vptovf>;
-the versions that come with W32TeX (F<http://www.w32tex.org>)
-and TeXLive (F<http://tug.org/texlive>) don't seem to have this problem.
-
-
-=head2 A note for MacTeX users
-
-By default, B<autoinst> will try to install all generated files into
-the $TEXMFLOCAL tree; when this directory isn't user-writable,
-it will use the $TEXMFHOME tree instead. Unfortunately, MacTeX's version
-of C<updmap-sys> (which is called behind the scenes) doesn't search
-in $TEXMFHOME, and hence MacTeX will not find the new fonts.
-
-To remedy this, either run B<autoinst> as root (so that it can install
-everything into $TEXMFLOCAL) or manually run C<updmap -user> to tell
-TeX about the files in $TEXMFHOME.
-The latter option does, however, have some caveats;
-see F<https://tug.org/texlive/scripts-sys-user.html>.
-
-
=head2 Using the fonts in your LaTeX documents
B<autoinst> generates a style file for using the fonts in LaTeX documents,
@@ -2897,30 +3311,32 @@
=item C<lining>, C<oldstyle>, C<tabular>, C<proportional>
Choose which figure style to use.
-The defaults are "oldstyle" and "proportional" (if available).
+The defaults are `oldstyle' and `proportional' (if available).
-=item C<<< scale=I<< <number> >> >>>
+=item C<<< scale=I<< <number> >> >>>, C<scale=MatchLowercase>
Scale the font by a factor of I<< <number> >>.
E.g., to increase the size of the font by 5%, use
C<<< \usepackage[scale=1.05]{I<< <FontFamily> >>} >>>.
-May also be spelled C<scaled>.
+The special value C<MatchLowercase> may be used to scale the font
+so that its x-height matches that of the previously active font
+(which is usually Computer Modern, unless you have loaded another
+font package before this one).
+The name C<scaled> may be used as a synonym for C<scale>.
-This option is only available when you have the F<xkeyval> package installed.
-
=item C<medium>, C<book>, C<text>, C<regular>
-Select the weight that LaTeX will use as the "regular" weight;
+Select the weight that LaTeX will use as the `regular' weight;
the default is C<regular>.
=item C<heavy>, C<black>, C<extrabold>, C<demibold>, C<semibold>, C<bold>
-Select the weight that LaTeX will use as the "bold" weight;
+Select the weight that LaTeX will use as the `bold' weight;
the default is C<bold>.
=back
-The previous two groups of options will only work if
+The last two groups of options will only work if
you have the F<mweights> package installed.
The style file will also try to load the F<fontaxes> package
@@ -2935,8 +3351,8 @@
DECLARATION COMMAND SHORT FORM OF COMMAND
\tlshape \texttitling \texttl
- \sufigures \textsuperior \textsu
- \infigures \textinferior \textin
+ \supfigures \textsuperior \textsup, \textsu
+ \inffigures \textinferior \textinf, \textin
In addition, the C<\swshape> and C<\textsw> commands are redefined to place
@@ -2958,40 +3374,75 @@
By default, B<autoinst> generates text fonts with OT1, LY1 and T1
encodings, and the generated style files use T1 as the default text encoding.
Other encodings can be chosen using the I<-encoding> option
-(see L</"COMMAND-LINE OPTIONS"> below).
+(see L</COMMAND-LINE OPTIONS> below).
-=head3 Ornaments
+=head2 Maths
-Ornament fonts are regular LY1-encoded fonts, with a number of
-'regular' characters replaced by ornament glyphs.
-The OpenType specification says that fonts should only put their
-ornaments in place of the lowercase ASCII letters or the 'bullet'
-character, but some fonts put them in other positions (such as those
-of the digits) as well.
+This is an experimental feature; B<USE AT YOUR OWN RISK!>
+Test the results thoroughly before using them in real documents,
+and be warned that future versions of B<autoinst> may introduce
+incompatible changes.
-Ornament glyphs can be accessed like C<{\ornaments abc}> and
-C<{\ornaments\char"61}>, or equivalently
-C<\textornaments{abc}> and C<\textornaments{\char"61}>.
-To see which ornaments a font contains (and at which positions),
-run LaTeX on the file F<nfssfont.tex> (which is included in any
-standard LaTeX installation), supply the name of the ornament font
-(i.e., C<GaramondLibre-Regular-orn-u>) and say C<\table\bye>;
-this will create a table of all glyphs in that font.
+The I<-math> option tells B<autoinst> to generate basic math fonts.
+When enabled, the generated style file defines a few extra options
+to access these math fonts:
-Note that versions of B<autoinst> up to 20200428 handled ornaments
-differently, and fonts and style files generated by those versions
-are not compatible with files generated by newer versions.
+=over 4
+=item C<math>
+Use these fonts for the maths in your document.
+
+=item C<mathlining>, C<matholdstyle>
+
+Choose which figure style to use in maths.
+The default is `mathlining'.
+
+=item C<mathcal>
+
+Use the swash characters from your fonts as the C<\mathcal> alphabet.
+(This option only exists if your fonts actually contain swash characters
+and a C<swsh> feature to access them).
+
+=item C<<< math-style=I<< <style> >> >>>
+
+Choose the `math style' to use.
+With C<math-style=ISO>, all latin and greek letters in math are italic;
+with C<math-style=TeX> (the default), uppercase greek is upright;
+with C<math-style=french>, all greek as well as uppercase latin is upright;
+and with C<math-style=upright> all letters are upright.
+
+=back
+
+Note that this `math' option only changes digits, latin and greek letters,
+plus a few basic punctuation characters; all other mathematical symbols,
+operators, delimiters etc. are left as they were before.
+If you don't want to use TeX's default versions of those symbols,
+load another math package (such as F<mathdesign> or F<newtxmath>)
+before loading the B<autoinst>-generated style file.
+
+Finally, note that B<autoinst> doesn't check if your fonts actually contains
+all of the required characters;
+it just assumes that they do and sets up the style file accordingly.
+Even if your fonts contain greek, characters such as C<\varepsilon>
+may be missing.
+You may also find that some glyphs I<are> present in your fonts,
+but don't work well in equations or don't match with other symbols;
+edit the generated style file to remove the declarations of
+these offending characters.
+Once again: test the results before using them!
+If the characters themselves are fine but spaced too tightly,
+you may try increasing the side bearings in math fonts with
+the I<-mathspacing> option (see below), e.g. C<-mathspacing=100>.
+
+
=head2 NFSS codes
LaTeX's New Font Selection System (NFSS)
identifies fonts by a combination of family,
series (the concatenation of weight and width), shape and size.
-B<autoinst> parses the font's metadata
-(more precisely: the output of C<otfinfo --info>)
-to determine these parameters.
+B<autoinst> parses the font's metadata to determine these parameters.
When this fails (usually because the font family contains uncommon weights,
widths or shapes),
B<autoinst> ends up with different fonts having the I<same> values
@@ -3013,16 +3464,16 @@
Oblique, Slant(ed), Incline(d) sl
(I<Exception:> Adobe Silentium Pro contains two Roman shapes;
-we map the first of these to "n", for the second one we (ab)use the "it" code
+we map the first of these to `n', for the second one we (ab)use the `it' code
as this family doesn't contain an Italic shape.)
The mapping of weights and widths to NFSS codes is a more complex,
two-step proces.
-In the first step, all fonts are assigned a "series" name that is simply
+In the first step, all fonts are assigned a `series' name that is simply
the concatenation of its weight and width
(after expanding any abbreviations and converting to lowercase).
-A font with "Cond" width and "Ultra" weight will then be known
-as "ultrablackcondensed".
+A font with `Cond' width and `Ultra' weight will then be known
+as `ultrablackcondensed'.
In the second step, B<autoinst> tries to map all combinations of NFSS codes
(ul, el, l, sl, m, sb, b, eb and ub for weights;
@@ -3033,11 +3484,11 @@
a unique code in a sane way (especially for the weights, some font families
offer more choices or finer granularity than NFSS's codes can handle;
e.g., Fira Sans contains fifteen(!) different weights,
-including an additional "Medium" weight between Regular and Semibold).
+including an additional `Medium' weight between Regular and Semibold).
B<autoinst> tries hard to ensure that the most common NFSS codes
(and high-level commands such as C<\bfseries>,
-which are built on top of those codes) will "just work".
+which are built on top of those codes) will `just work'.
To see exactly which NFSS codes map to which fonts, see the log file
(pro tip: run B<autoinst> with the I<-dryrun> option
@@ -3050,6 +3501,28 @@
(i.e., C<\fontseries{demibold}\selectfont>).
+=head2 Ornaments
+
+Ornament fonts are regular LY1-encoded fonts, with a number of
+`regular' characters replaced by ornament glyphs.
+The OpenType specification says that fonts should only put their
+ornaments in place of the lowercase ASCII letters, but some fonts
+put them in other positions (such as those of the digits) as well.
+
+Ornaments can be accessed like C<{\ornaments a}> and
+C<{\ornaments\char"61}>, or equivalently
+C<\textornaments{a}> and C<\textornaments{\char"61}>.
+To see which ornaments a font contains (and at which positions),
+run LaTeX on the file F<nfssfont.tex> (which is included in any
+standard LaTeX installation), supply the name of the ornament font
+(i.e., C<GaramondLibre-Regular-orn-u>) and give the command C<\table\bye>;
+this will create a table of all glyphs in that font.
+
+Note that versions of B<autoinst> up to 20200428 handled ornaments
+differently, and fonts and style files generated by those versions
+are not compatible with files generated by newer versions.
+
+
=head1 COMMAND-LINE OPTIONS
B<autoinst> tries hard to do The Right Thing (TM) by default,
@@ -3091,7 +3564,7 @@
Generate the specified encoding(s) for the text fonts.
Multiple encodings may be specified as a comma-separated list
-(without spaces!); the default choice of encodings is "OT1,LY1,T1".
+(without spaces!); the default choice of encodings is `OT1,LY1,T1'.
For each specified encoding XYZ, B<autoinst> will first see if there is
an encoding file F<XYZ.enc> in the current directory, and if found it will
@@ -3099,7 +3572,7 @@
Currently B<autoinst> comes with support for the OT1, T1/TS1, LY1, LGR,
T2A/B/C and T3/TS3 encodings.
(These files are called F<fontools_ot1.enc> etc. to avoid name clashes
-with other packages; the "fontools_" prefix may be omitted.)
+with other packages; the `fontools_' prefix may be omitted.)
=item B<-ts1>/B<-nots1>
@@ -3118,15 +3591,15 @@
it will - by default - turn off the use of f-ligatures
(though this can be overridden with the I<-ligatures> option),
and it will disable hyphenation for this font.
-This latter effect cannot be disabled in B<autoinst>;
+This latter effect cannot be re-enabled in B<autoinst>;
if you want typewriter text to be hyphenated, use the F<hyphenat> package.
If none of these options is specified, B<autoinst> tries to guess:
-if the font's filename contains the string "mono"
+if the font's filename contains the string `mono'
or if the field C<isFixedPitch> in the font's I<post> table is True,
it will select B<-typewriter>;
-else if the filename contains "sans" it selects B<-sanserif>;
-and otherwise it will opt for B<-serif>.
+else if the filename contains `sans' it will select B<-sanserif>;
+otherwise it will opt for B<-serif>.
=item B<-lining>/B<-nolining>
@@ -3171,12 +3644,12 @@
=item B<-inferiors> [= B<none> | B<auto> | B<subs> | B<sinf> | B<dnom> ]
The OpenType standard defines several kinds of digits that might be used
-as inferiors or subscripts: "Subscripts" (OpenType feature "subs"),
-"Scientific Inferiors" ("sinf"), and "Denominators" ("dnom").
+as inferiors or subscripts: `Subscripts' (OpenType feature `subs'),
+`Scientific Inferiors' ('sinf'), and `Denominators' ('dnom').
This option allows the user to determine which of these styles B<autoinst>
should use for the inferior characters.
-Alternatively, the value "auto" tells B<autoinst> to use the first value
-in "sinf", "subs" or "dnom" that is supported by the font.
+Alternatively, the value `auto' tells B<autoinst> to use the first value
+in `sinf', `subs' or `dnom' that is supported by the font.
Saying just B<-inferiors> is equivalent to B<-inferiors=auto>;
otherwise the default is B<-noinferiors>.
@@ -3196,7 +3669,7 @@
=item B<-ligatures>/B<-noligatures>
Some fonts create glyphs for the standard f-ligatures (ff, fi, fl, ffi, ffl),
-but don't provide a "liga" feature to access these.
+but don't provide a `liga' feature to access these.
This option tells B<autoinst> to add extra C<LIGKERN> rules to
the generated fonts to enable the use of these ligatures.
The default is B<-ligatures>,
@@ -3203,8 +3676,19 @@
unless the user specified the I<-typewriter> option.
Specify B<-noligatures> to disable the generation of ligatures even for fonts
-that do contain a "liga" feature.
+that do contain a `liga' feature.
+=item B<-math>
+
+Tells B<autoinst> to create basic math fonts (see above).
+
+=item B<-mathspacing>=I<amount>
+
+Letterspace each character in the math fonts by I<amount> units,
+where 1000 units equal one em.
+In my opinion, many text fonts benefit from letterspacing by 50 to 100 units
+when used in maths; some fonts need even more. Use your own judgement!
+
=item B<-defaultlining>/B<-defaultoldstyle>
=item B<-defaulttabular>/B<-defaultproportional>
@@ -3228,21 +3712,23 @@
Note that this option leads to very long commands (it adds
one hundred I< --ligkern> options), which may cause problems on some systems.
-=item B<-nfssweight>=I<code>=I<weight>, B<-nfsswidth>=I<code>=I<width>
+=item B<-nfssweight>=I<code>=I<weight>
+=item B<-nfsswidth>=I<code>=I<width>
+
Map the NFSS code I<code> to the given weight or width,
overriding the built-in tables.
Each of these options may be given multiple times,
to override more than one NFSS code.
-Example: to map the "ul" code to the "Thin" weight,
+Example: to map the `ul' code to the `Thin' weight,
use C<-nfssweight=ul=thin>.
-To inhibit the use of the "ul" code completely,
+To inhibit the use of the `ul' code completely,
use C<-nfssweight=ul=>.
-=item B<-extra>=I<text>
+=item B<-extra>=I<extra>
-Append I<text> as extra options to the command lines for I<otftotfm>.
-To prevent I<text> from accidentily being interpreted as options
+Append I<extra> as extra options to the command lines for I<otftotfm>.
+To prevent I<extra> from accidentily being interpreted as options
to B<autoinst>, it should be properly quoted.
=item B<-manual>
@@ -3301,9 +3787,9 @@
=item B<-typeface>=I<TYPEFACE>
These options are equivalent to F<otftotfm>'s I< --vendor> and I< --typeface>
-options: they change the "vendor" and "typeface" parts of the names of the
+options: they change the `vendor' and `typeface' parts of the names of the
subdirectories in the TEXMF tree where generated files will be stored.
-The default values are "lcdftools" and the font's FontFamily name.
+The default values are `lcdftools' and the font's FontFamily name.
Note that these options change I<only> directory names,
not the names of any generated files.
@@ -3316,6 +3802,39 @@
=back
+=head2 A note for MiKTeX users
+
+Automatically installing the fonts into a suitable TEXMF tree
+(as B<autoinst> tries to do by default) only works for TeX-installations
+that use the F<kpathsea> library; with TeX distributions that implement
+their own directory searching (such as MiKTeX), B<autoinst> will complain
+that it cannot find the F<kpsewhich> program and move all generated files
+into a subdirectory C<./autoinst_output/> of the current directory.
+If you use such a TeX distribution, you should either move these files
+to their correct destinations by hand, or use the I<-target> option
+(see L</COMMAND-LINE OPTIONS> below) to manually specify a TEXMF tree.
+
+Also, some OpenType fonts contain so many kerning pairs that the resulting
+F<pl> and F<vpl> files are too big for MiKTeX's F<pltotf> and F<vptovf>;
+the versions that come with W32TeX (F<http://www.w32tex.org>)
+and TeXLive (F<http://tug.org/texlive>) don't seem to have this problem.
+
+
+=head2 A note for MacTeX users
+
+By default, B<autoinst> will try to install all generated files into
+the $TEXMFLOCAL tree; when this directory isn't user-writable,
+it will use the $TEXMFHOME tree instead. Unfortunately, MacTeX's version
+of C<updmap-sys> (which is called behind the scenes) doesn't search
+in $TEXMFHOME, and hence MacTeX will not find the new fonts.
+
+To remedy this, either run B<autoinst> as root (so that it can install
+everything into $TEXMFLOCAL) or manually run C<updmap -user> to tell
+TeX about the files in $TEXMFHOME.
+The latter option does, however, have some caveats;
+see F<https://tug.org/texlive/scripts-sys-user.html>.
+
+
=head1 SEE ALSO
Eddie Kohler's B<TypeTools> (F<http://www.lcdf.org/type>).
@@ -3371,7 +3890,7 @@
=head1 VERSION
-This document describes B<autoinst> version 20200511.
+This document describes B<autoinst> version 20200527.
=head1 RECENT CHANGES
@@ -3380,6 +3899,18 @@
=over 12
+=item I<2020-05-27>
+
+Added basic (and still somewhat experimental) math support.
+Implemented the C<scale=MatchLowercase> option value
+in the generated style files.
+`Wide' fonts are mapped to the `sx' NFSS code instead of `x',
+to cater for League Mono Variable's Wide and Extended widths.
+The generated style files now use C<\textsup> and C<\textinf>
+instead of the more cryptic C<\textsu> and C<\textin> to access
+superior and inferior characters
+(though the old forms are retained for backwards compatibility).
+
=item I<2020-05-11>
When present, use encoding files in the current working directory
@@ -3479,13 +4010,13 @@
=item I<2019-05-17>
Changed the way the F<-ligatures> option works:
-F<-ligatures> enables f-ligatures (even without a "liga" feature),
-F<-noligatures> now disables f-ligatures (overriding a "liga" feature).
+F<-ligatures> enables f-ligatures (even without a `liga' feature),
+F<-noligatures> now disables f-ligatures (overriding a `liga' feature).
=item I<2019-05-11>
Separate small caps families are now also recognised when the family name
-ends with "SC" (previously B<autoinst> only looked for "SmallCaps").
+ends with `SC' (previously B<autoinst> only looked for `SmallCaps').
=item I<2019-04-22>
@@ -3500,7 +4031,7 @@
Added the <-mergesmallcaps> option, to handle cases where
the small caps fonts are in separate font families.
Titling shape is now treated as a separate family instead of a distinct shape;
-it is generated only for fonts with the 'titl' feature.
+it is generated only for fonts with the `titl' feature.
Only add f-ligatures to fonts when explicitly asked to (I<-ligatures>).
=item I<2019-04-11>
@@ -3522,7 +4053,7 @@
put all generated files into a subdirectory C<./autoinst_output/>
instead of all over the current working directory.
-Added "auto" value to the I<inferiors> option,
+Added `auto' value to the I<inferiors> option,
to tell B<autoinst> to use whatever inferior characters are available.
=item I<2019-03-14>
@@ -3530,9 +4061,9 @@
Overhauled the mapping of fonts (more specifically of weights and widths;
the mapping of shapes didn't change) to NFSS codes.
Instead of inventing our own codes to deal with every possible weight
-and width out there, we now create "long" codes based on the names
+and width out there, we now create `long' codes based on the names
in the font metadata.
-Then we add "ssub" rules to the F<fd> files to map the standard NFSS codes
+Then we add `ssub' rules to the F<fd> files to map the standard NFSS codes
to our fancy names (see the section B<NFSS codes>;
based on discussions with Frank Mittelbach and Bob Tennent).
@@ -3553,26 +4084,26 @@
=item I<2018-03-26>
-Added the "Text" weight and the I<-(no)mergewidths> option.
-Changed the NFSS codes for "Thin" and "Book" to "i" and "o", respectively.
+Added the `Text' weight and the I<-(no)mergewidths> option.
+Changed the NFSS codes for `Thin' and `Book' to `i' and `o', respectively.
Tried to improve the documentation.
=item I<2018-01-09>
-Added the "sl" weight for font families (such as Fira Sans) that contain both
-"Book" and "Regular" weights (reported by Bob Tennent).
-Added the "Two", "Four", "Eight" and "Hair" weights (for Fira Sans).
+Added the `sl' weight for font families (such as Fira Sans) that contain both
+`Book' and `Regular' weights (reported by Bob Tennent).
+Added the `Two', `Four', `Eight' and `Hair' weights (for Fira Sans).
=item I<2017-06-16>
Changed the I<-inferiors> option from a binary yes-or-no choice to allow
-the user to choose one of the "subs", "sinf" and "dnom" features.
+the user to choose one of the `subs', `sinf' and `dnom' features.
B<autoinst> now always creates a log file.
=item I<2017-03-21>
-Updated the F<fontools_ot1.enc> encoding file to include the "Lslash"
-and "lslash" glyphs (thanks to Bob Tennent).
+Updated the F<fontools_ot1.enc> encoding file to include the `Lslash'
+and `lslash' glyphs (thanks to Bob Tennent).
=item I<2015-11-22>
@@ -3588,8 +4119,8 @@
=item I<2014-01-21>
-"Oblique" or "slanted" fonts are now mapped to NFSS code "sl" instead
-of "it"; added "ssub" rules to the F<fd> files to substitute slanted fonts
+`Oblique' or `slanted' fonts are now mapped to NFSS code `sl' instead
+of `it'; added `ssub' rules to the F<fd> files to substitute slanted fonts
for italic ones if the latter are missing. Fixed a few bugs.
=item I<2014-01-03>
@@ -3618,16 +4149,16 @@
=item I<2013-02-06>
Bugfix: the directory names for map and encoding files contained
-the "vendor" instead of the "typeface".
+the `vendor' instead of the `typeface'.
=item I<2013-01-03>
-Added extra "ssub" rules to the F<fd> files that substitute "b" for "bx".
+Added extra `ssub' rules to the F<fd> files that substitute `b' for `bx'.
Verbose mode now also prints all generated commands before they're executed.
=item I<2012-10-25>
-Added extra "ssub" rules to the F<fd> files that substitute italic
+Added extra `ssub' rules to the F<fd> files that substitute italic
shapes for slanted ones.
=item I<2012-09-25>
@@ -3640,7 +4171,7 @@
=item I<2012-03-06>
-Implemented the "splitting the font family into multiple subfamilies"
+Implemented the `splitting the font family into multiple subfamilies'
emergency strategy when font info parsing fails.
Added recognition for a number of unusual widths, weights and shapes.
@@ -3648,8 +4179,8 @@
Fixed a bug in the font parsing code,
where possible widths, weights and shapes where tested in the wrong order;
-this led to "ExtraLight" fonts being recognised as "Light".
-Added recognition for "Narrow" and "Wide" widths.
+this led to `ExtraLight' fonts being recognised as `Light'.
+Added recognition for `Narrow' and `Wide' widths.
Also added the I<-(no)figurekern> command-line option.
=item I<2012-02-01>
@@ -3665,7 +4196,7 @@
=item I<2011-06-15>
Fixed the font info parsing code for some fonts that are
-too lazy to spell out "Italic" in full.
+too lazy to spell out `Italic' in full.
=item I<2010-04-29>
@@ -3711,13 +4242,13 @@
weight and width were mapped to the same series.
Added a work-around for incorrect size info in some Kepler fonts.
Fixed a small bug in the generated commands for otftotfm
-(sometimes, the "onum" feature was included twice).
+(sometimes, the `onum' feature was included twice).
Added encoding file for OT1 to the I<fontools> collection.
=item I<2007-07-27>
Two bugfixes: a closing brace was missing in the generated style file,
-and the NFSS series was formed as "width plus weight" instead of the reverse.
+and the NFSS series was formed as `width plus weight' instead of the reverse.
=item I<2007-06-10>
@@ -3732,7 +4263,7 @@
families (suggested by Steven E. Harris).
Tweaked the font info parsing to work around a bug in the naming of
some FontFont fonts, where every font is in a family of its own.
-Added the "scaled" option (including the loading of F<xkeyval>)
+Added the `scaled' option (including the loading of F<xkeyval>)
to the generated style file.
Extended the output of the I<-verbose> option.
@@ -3753,7 +4284,7 @@
=item I<2006-08-31>
-Made the generated style files try to include "fontaxes.sty";
+Made the generated style files try to include `fontaxes.sty';
changed the names of the generated fonts and families
(to make the previous change possible);
added command-line options for most font styles and shapes;
@@ -3760,7 +4291,7 @@
tweaked the filename parsing code for Cronos Pro and Gill Sans Pro;
added runtime generation of encoding vectors for ornament fonts
(because GaramondPremier's ornament names differ from other fonts);
-changed the NFSS-code for italic small caps and titling to "scit" and "tlit"
+changed the NFSS-code for italic small caps and titling to `scit' and `tlit'
(to work with F<fontaxes>);
and edited (and hopefully improved) the documentation.
@@ -3792,14 +4323,14 @@
The generated commands weren't actually executed, only printed...
Also added a small hack to cater for fonts
(such as some recent versions of MinionPro)
-that contain swash characters but don't provide a "swsh" feature.
+that contain swash characters but don't provide a `swsh' feature.
=item I<2005-08-10>
-Dropped the "fontname" scheme in favor of a more verbose naming scheme,
+Dropped the `fontname' scheme in favor of a more verbose naming scheme,
since many filenames were still more than eight characters long anyway.
Added F<nfssext.sty>-like commands to the generated style file.
-Changed the default encoding to LY1 and added the "inferior" shape.
+Changed the default encoding to LY1 and added the `inferior' shape.
=item I<2005-08-01>
@@ -3806,11 +4337,11 @@
Rewrote (and hopefully improved) the user interface;
changed the program to by default execute the generated F<otftotfm> command
lines rather than writing them to a file;
-added automatic determination of the "fontname" code for the font family;
-changed the NFSS code for italic small caps to "si"; added titling shapes;
+added automatic determination of the `fontname' code for the font family;
+changed the NFSS code for italic small caps to `si'; added titling shapes;
changed the generated style
file to include an interface for the ornaments and to load Lehman's NFSS
-extensions F<nfssext.sty> if this is installed; corrected the "fontname" codes
+extensions F<nfssext.sty> if this is installed; corrected the `fontname' codes
for OT1, T1, LY1 and user-specific encodings; extended the output generated by
the I<-verbose> option; and rewrote and extended the documentation.
Modified: trunk/Master/texmf-dist/scripts/fontools/ot2kpx
===================================================================
--- trunk/Master/texmf-dist/scripts/fontools/ot2kpx 2020-05-27 21:40:08 UTC (rev 55296)
+++ trunk/Master/texmf-dist/scripts/fontools/ot2kpx 2020-05-27 21:40:38 UTC (rev 55297)
@@ -38,7 +38,7 @@
use List::Util @List::Util::EXPORT_OK;
use Pod::Usage;
-my $VERSION = "20200511";
+my $VERSION = "20200527";
our ($NUM_GLYPHS, $UNITS_PER_EM, %kern);
@@ -858,7 +858,7 @@
=head1 VERSION
-This document describes B<ot2kpx> version 20200511.
+This document describes B<ot2kpx> version 20200527.
=head1 RECENT CHANGES
More information about the tex-live-commits
mailing list.