summaryrefslogtreecommitdiff
path: root/support/luafindfont/doc/luafindfont-doc.tex
blob: 8222523152941452b2d7147f05cfe7550e37da7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
 %% $Id: luafindfont-doc.tex 599 2022-09-02 09:48:32Z herbert $
%
\listfiles\setcounter{errorcontextlines}{100}
\documentclass[paper=a4,fontsize=11pt,DIV=14,parskip=half-,
               captions=tableabove,twoside=on]{scrartcl}
\usepackage{fontspec}
%\usepackage{libertinus-otf}
\setmainfont{AccanthisADFStdNo3}[
  UprightFont   =*-Regular,
  BoldFont      =*-Bold,
  ItalicFont    =*-Italic,
  BoldItalicFont=*-BoldItalic,
  RawFeature    = -rlig,
]
\setsansfont{GilliusADF}[
  UprightFont   =*-Regular,
  BoldFont      =*-Bold,
  ItalicFont    =*-Italic,
  BoldItalicFont=*-BoldItalic,
  RawFeature    = -rlig,
]
\setmonofont{DejaVu Sans Mono}[Scale=MatchLowercase,FakeStretch=0.9]
%\setmonofont{Anonymous Pro}[Scale=MatchLowercase,FakeStretch=0.9]

\usepackage[english]{babel}
\usepackage{scrlayer-scrpage}
\automark[section]{section}
\automark*[subsection]{}
\pagestyle{scrheadings}

{\catcode`\%=12 
 \gdef\perCent{%}
 \gdef\DoubleperCent{%%}
}

\usepackage{xcolor,fancyvrb,varioref}
\usepackage{xltabular,pdflscape}
\usepackage{hvlogos} % for Wikipedia W
\usepackage{listings}
\usepackage{hvextern}

\setkeys{hv}{moveToExampleDir,ExampleDir=Examples,showFilename=false,force,verbose}
\lstset{basicstyle=\ttfamily\small,language=[LaTeX]TeX}
\usepackage{ragged2e}

\usepackage{makeidx}\makeindex
\usepackage{hvindex}

\def\Lfile#1{\texttt{#1}\index{#1 file@\texttt{#1} file}}
\def\Lext#1{\texttt{.#1}\index{#1 file extension@\texttt{.#1} file extension}}
\def\Lcs#1{\texttt{\textbackslash#1}\index{#1@\texttt{\textbackslash#1}}}
\def\Lenv#1{\texttt{#1}\index{#1 environment@\texttt{#1} environment}}
\def\Lpack#1{\texttt{#1}\index{#1 package@\texttt{#1} package}}
\def\Lprog#1{\texttt{#1}\index{#1 program@\texttt{#1} program}}
\def\Loption#1{\texttt{#1}\index{#1@\texttt{#1} package option}}
\def\Largb#1{\emph{\{#1\}}}

%\usepackage[bibstyle=dtk]{biblatex}
%\addbibresource{\jobname.bib}

\raggedbottom
\usepackage{url}
\usepackage[colorlinks,linktocpage]{hyperref}

\makeatletter% from: doc.sty
\newcommand*\GetFileInfo[1]{%
  \def\filename{#1}%
  \def\@tempb##1 ##2 ##3\relax##4\relax{%
    \def\filedate{##1}%
    \def\fileversion{##2}%
    \def\fileinfo{##3}}%
  \edef\@tempa{\csname ver@#1\endcsname}%
  \expandafter\@tempb\@tempa\relax? ? \relax\relax}
\makeatother

%\GetFileInfo{xltabular.sty}
\usepackage{xspace}

\newcommand\FF{\texttt{luafindfont}\xspace}

\def\setVersion#1{\setVVersion#1!!}
\def\setVVersion#1=#2!!{\def\luafindfontVersion{#2}} 

\setVersion{version = 0.10}%  can be automatically changed by perl

\setkeys{hv}{cleanup={},force}

\title{Program \texttt{luafindfont} \\--\\ \normalsize \luafindfontVersion\ (\today)}
\author{\shortstack{Herbert Voß\\\small \href{mailto:hvoss@tug.org}{hvoss@tug.org}}}
\date{}
\begin{document}
\maketitle
\thispagestyle{empty}
\enlargethispage{1cm}
\tableofcontents

\vfill
Thanks to: \\
Gerhard Bachmaier;
Karl Berry;
{\setmainfont[Scale=MatchUppercase]{NotoSerifGeorgian-Medium.ttf} მამუკა ჯიბლაძე} (Mamuka Jibladze);
Rolf Niepraschk;
\clearpage

\section{Introduction}
The Lua program
\FF is a  program for searching installed fonts which are usable for \LuaLaTeX\ and \XeLaTeX.
The already existing Lua program \Lprog{luaotfload-tool} can also be used for searching, but
the search-interface is somewhat cryptic and too complex for a user, who wants only to know
if a font is present or not. And if present, where can it be found. For example:


\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luaotfload-tool --find=times
#StopVisibleMain
\end{externalDocument}

\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luaotfload-tool --fuzzy --find="times new roman"
#StopVisibleMain
\end{externalDocument}




But that are not \emph{all} Times fonts. Compare it with the output of \Lprog{luafindfont},
where the searchname \emph{times} must only be a part of a longer name:

\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luafindfont times
#StopVisibleMain
\end{externalDocument}



\subsection{Syntax}

The \Index{syntax} is 

\verb|luafindfont [...] <font>| 

where \verb|[...]|  are optional \Index{argument}s, either in short or
long form which, of course, can be mixed:

\begin{Verbatim}[frame=lines,label=Parameter]
  parameter handling
    -h,--help
    -o,--otfinfo (default 0)
    -i,--info (default 0)
    -x,--xetex
    -n,--no-symbolic-names
    -v...          Verbosity output
    -m,--max_string (default 90)
    <(partial) fontname>  
\end{Verbatim}

For example:

\begin{verbatim}
luafindfont times 
luafindfont palatino -o 3
luafindfont -i 3 -m 50 arial
\end{verbatim}

\begin{enumerate}
\item \texttt{-m <columns>}: How many columns are used for the font with full path. This can be really long, but with e.g. \verb|-m 50| 
the length is limited to 50 characters and in the middle of the long name there will be \ldots, representing the missing characters.
\item \texttt{-o <number[character]>}: For the font with the given number from the font list the program \Lprog{otfinfo} is called
    for some generell font informations. An additional optional argument for \Lprog{otfinfo} (only one character) must follow directly the fontnumber
    (see also section~\ref{otfinfo})
\item \texttt{-i <number>}: For the font with the given number from the font list the existing other corresponding font styles are listed.
\end{enumerate}

\section{How it works}
\FF uses the data file \Lfile{luaotfloadtool-names.lua} which is created by \LuaTeX. If it is
missing it will be created by \FF itself. The name of the font should be in lowercase
characters and must not be the complete name. A ``\verb|time|'' for finding all fonts with
``time'' in its names is sufficiant for searching ``times new roman''.


\subsection{Fontname}
The fontname can only be a substring of the  complete filename. It is not case sensitive, \texttt{Myriad} and \texttt{myriad}
are the same. It is possible to combine two search strings which will act like a boolean \texttt{and}. A search with
\texttt{"Myriad \& bold"} (in quotes)  will list all files which have \texttt{myriad} \emph{and} \texttt{bold} in its name.


\subsection{Option \texttt{-o}}\label{otfinfo}
This needs an installed program \Lprog{otfinfo}, which should be the default for all \TeX\ distributions.
This program lists some useful informations of a given fontnumber. The fontnumber can be combined by an
additional character for different outputs. For example \texttt{-o 2f} lists the features of the font number 2
in the list. The order makes no difference:  \texttt{-o f2} prints  the same. If there is no output then the font has no such
informations defined!

The possible options are (i is the default):

\begin{Verbatim}[frame=lines,label=otfinfo]
  s   Report font’s supported scripts.
  f   Report font’s GSUB/GPOS features.
  z   Report font’s optical size information.
  p   Report font’s PostScript name.
  a   Report font’s family name.
  v   Report font’s version information.
  i   Report font’s names and designer/vendor info.
  g   Report font’s glyph names.
  t   Report font’s OpenType tables.
\end{Verbatim}




\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luafindfont -o 2f "myriad & semibold"
#StopVisibleMain
\end{externalDocument}

if no parameter is given, then \texttt{-i} is assumed.


\subsection{Option \texttt{-i}}
For a given font number \texttt{luafindfont} will list the font styles which were found by the font search
and which correspond to the font number. This is useful if a fontname doesn't has the style in its name or
only in short form.

\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luafindfont -i 4 "myriad & semibold"
#StopVisibleMain
\end{externalDocument}



For the font number 4 there also exists a Regular, Bold, and a Italic font. The font no 4 itself
is a BoldItalic version.


\subsection{Option \texttt{-x}}\label{xetex}

\XeTeX\ will find OpenType and TrueType fonts only, if they are part of the system fonts or 
found by \texttt{kpsewhich} by its filename. With the option \texttt{-x} you'll an additional
column, which shows if the font is found by \texttt{kpsewhich} (1) or not (0). If not, then
it is obvious, that you have to update the filename database of the \TeX\ distribution in
the usual way by running \texttt{texhash} or via a menu entry if using a file manager.



\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luafindfont -m 55 -x PStricksdotfont
#StopVisibleMain
\end{externalDocument}


The font \texttt{myFont.otf} is found by \LuaTeX\ but not by \XeTeX.




\section{Examples}


\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luafindfont segoe
#StopVisibleMain
\end{externalDocument}

\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luafindfont -m 35 libertinus
#StopVisibleMain
\end{externalDocument}

\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luafindfont -i 9 sego
#StopVisibleMain
\end{externalDocument}


\begin{landscape}

\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luafindfont -o 6 arial
#StopVisibleMain
\end{externalDocument}


\begin{externalDocument}[redirect,includegraphic=false,force,code,docType=sh,ext=sh,compiler=sh]{exa}
#StartVisibleMain
luafindfont --no-symbolic-names minion
#StopVisibleMain
\end{externalDocument}



\section{List of all fonts}
This possible with the symbolic fontname "*" instead of a real fontname:

\begin{Verbatim}[fontsize=\small]
bash-3.2$ luafindfont "*"
\end{Verbatim}

This list maybe really long and is shortend here!

\VerbatimInput[fontsize=\small]{Examples/exa05.txt}


\end{landscape}


\printindex

\end{document}