summaryrefslogtreecommitdiff
path: root/doc/context/sources/general/fonts/fonts/fonts-lookups.tex
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2016-07-30 01:22:07 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2016-07-30 01:22:07 +0200
commit5135aef167bec739fe429e1aa987671768b237bc (patch)
treebd9f9696704e57c45f453bb7dc6becd5501cb657 /doc/context/sources/general/fonts/fonts/fonts-lookups.tex
parent9d7c4ba8449bec1da920c01e24a17c41bbf2211d (diff)
downloadcontext-5135aef167bec739fe429e1aa987671768b237bc.tar.gz
2016-07-30 00:31:00
Diffstat (limited to 'doc/context/sources/general/fonts/fonts/fonts-lookups.tex')
-rw-r--r--doc/context/sources/general/fonts/fonts/fonts-lookups.tex347
1 files changed, 0 insertions, 347 deletions
diff --git a/doc/context/sources/general/fonts/fonts/fonts-lookups.tex b/doc/context/sources/general/fonts/fonts/fonts-lookups.tex
deleted file mode 100644
index 7f1128302..000000000
--- a/doc/context/sources/general/fonts/fonts/fonts-lookups.tex
+++ /dev/null
@@ -1,347 +0,0 @@
-% language=uk
-
-\startcomponent fonts-lookups
-
-\environment fonts-environment
-
-\startchapter[title=Lookups][color=darkblue]
-
-\startsection[title=Introduction]
-
-In traditional \TEX\ a font is defined by referring to its filename. A
-definition looks like this:
-
-\starttyping
-\font \MyFontA = lmr10
-\font \MyFontB = lmr10 at 20pt
-\font \MyFontC = lmr10 scaled 1500
-\stoptyping
-
-The first definition defines the command \type {MyFontA} as a reference to the
-font stored in the file \type {lmx10}. No scaling takes place so the natural size
-is taken. This so called designsize is in no way standardized. Just look at these
-three specimen:
-
-\startlines
-{\definedfont[file:dejavuserif*default]Design Size (Dejavu)}
-{\definedfont[file:cambria*default]Design Size (Cambria)}
-{\definedfont[file:lmroman10-regular*default]Design Size (Latin Modern)}
-\stoplines
-
-The designsize is normally 10 point, but as there is no real reference for this a
-designer decides how to translate this into a visual representation. As a
-consequence the \type {20pt} in the second line of the example definitions only
-means that the font is scaled to (normally) twice the designsize. The third line
-scaled by a factor \type {1.5} and the reason for using a value thousand times
-larger is that \TEX's numbers are integers.
-
-The next three lines are typical for Latin Modern (derived from Computer Modern)
-because this family comes in different design sizes.
-
-\starttyping
-\font \MyFontD = lmr12
-\font \MyFontE = lmr12 at 20pt
-\font \MyFontF = lmr12 scaled 1500
-\stoptyping
-
-Because the designsize is part of the font metrics the second line (\type
-{\MyFontE}) is of similar size as \type {\MyFontB} although the 12~point variant
-is visually better suited for scaling up.
-
-These definitions refer to files, but what file? What gets loaded is the file
-with name \type {name.tfm}. Eventually for embedding in the (let's assume \PDF)
-file the outlines are taken from \type {name.pfb}. At that stage, when present, a
-\type {name.vf} is consulted in order to resolve characters that are combinations
-of others (potentially from other \type {pfb} files). The mapping from \type
-{name.tfm} to \type {name.pfb} filename happens in the so called map file. This
-means that one can also refer to another file, for instance \type {name.ttf}.
-
-All this logic is hard coded in the engine and because the virtual font mechanism
-was introduced later without extending the \type {tfm} format, it can be hard at
-times to figure out issues when a (maybe obsolete) virtual file is present (this
-can be the case if you have generated the \type {tfm} file from an \type {afm}
-file that comes with the \type {pfb} file when you buy one.
-
-But, in \LUATEX\ we no longer use traditional fonts and as a consequence we have
-more options open. Before we move on to them, we mention yet another definition:
-
-\starttyping
-\font \MyFontG = lmr12 sa 1.2
-\stoptyping
-
-This method is not part of \TEX\ but is provided by \CONTEXT, \MKII\ as well as
-\MKIV. It means as much as \quotation {scale this font to 1.2 times the
-bodyfontsize}. As this involves parsing the specification, it does not work
-as advertised here, but the next definition works okay:
-
-\starttyping
-\definefont[MyFontG][lmr12 sa 1.2]
-\stoptyping
-
-This indicates that we already had a parser for font specifications on board
-which in turn made it relatively easy to do even more parsing, for instance for
-font features as introduced in \XETEX\ and \LUATEX.
-
-\stopsection
-
-\startsection[title=Specifications]
-
-In \LUATEX\ we intercept the font loader. We do so for several reasons.
-
-\startitemize[packed]
-
-\startitem We want to make decisions on what file to load, this is needed when
-for instance there are files with the same name but different properties. \stopitem
-
-\startitem We want to be able to lookup by file, by name, and by more abstract specification.
-In doing so, we want to be as tolerant as possible. \stopitem
-
-\startitem We want to support several scaling methods, as discussed in the previous section. \stopitem
-
-\startitem We want to implement several strategies for passing features and defining non
-standard approaches. \stopitem
-
-\stopitemize
-
-The formal specification of a font is as follows:
-
-\starttyping
-\definefont[PublicReference][filename]
-\definefont[PublicReference][filename at dimension]
-\definefont[PublicReference][filename scaled number]
-\stoptyping
-
-We already had that extended to:
-
-\starttyping
-\definefont[PublicReference][filename]
-\definefont[PublicReference][filename at dimension]
-\definefont[PublicReference][filename scaled number]
-\definefont[PublicReference][filename sa number]
-\stoptyping
-
-So let's generalize that to:
-
-\starttyping
-\definefont[PublicReference][filename scaling]
-\stoptyping
-
-And in \MKIV\ we now have:
-
-\starttyping
-\definefont[PublicReference][filename*featurenames scaling]
-\definefont[PublicReference][filename:featurespecication scaling]
-\definefont[PublicReference][filename@virtualconstructor scaling]
-\stoptyping
-
-The second variant is seldom used and is only provided because some users
-have fonts defined in the \XETEX\ way. Users are advised not to use this
-method. The last method is special in the sense that it's used to define
-fonts that are constructed using the built in virtual font constructors. This
-method is for instance used for defining virtual math fonts.
-
-The first method is what we use most. It is really important not to forget the
-feature specification. A rather safe bet is \type {*default}. In a next chapter
-we will discuss the difference between these two; here we focus on the name part.
-
-The \type {filename} is in fact a symbolic name. In \CONTEXT\ we have always used
-an indirect reference to fonts. Look at this:
-
-\starttyping
-\definefont[TitleFont][SerifBold*default sa 2]
-\stoptyping
-
-A reference like \type {SerifBold} makes it possible to define styles independent
-of the chosen font family. This reference eventually gets resolved to a real
-name and there can be a chain of references.
-
-Font definitions can be grouped into a larger setup using typescripts. In that
-case, we can set the features for a regular, italic, bold and bolditalic for the
-whole set but when a fontname has a specific feature associated (as in the
-previous examples) that one takes precedence.
-
-so far we talked about fonts being files, but in practice a lookup happens by
-file as well as by name as known to the system. In the next section this will be
-explained in more detail.
-
-\stopsection
-
-\startsection[title=File]
-
-You can force a file lookup with:
-
-\starttyping
-\definefont[TitleFont][file:somefilename*default sa 2]
-\stoptyping
-
-If you use more symbolic names you can use the \type {file:} prefix in the
-mapping:
-
-\starttyping
-\definefontsynonym[SerifBold][file:somefile]
-\definefont[TitleFont][SerifBold*default sa 2]
-\stoptyping
-
-In projects that are supposed to run for a long time I always use the file based
-lookup, because filenames tend to be rather stable. Also, as the lookup happens
-in the \TEX\ directory structure, file lookups will rely on the general file
-search routines. This has the benefit that case is ignored. When no match is found
-the lookup will also use the font name database. Spaces and special characters are
-ignored.
-
-The name alone is not enough as there can be similar filenames with different
-suffixes. Therefore the lookup will happen in the order \ctxcommand {
-concatcommalist { list = fonts.readers.sequence, separator = ", ", last = " and
-", command = "type" } }. You can force a lookup by being more explicit, like:
-
-\starttyping
-\definefont[TitleFont][file:somefilename.ttf*default sa 1]
-\stoptyping
-
-\stopsection
-
-\startsection[title=Name]
-
-Say that we want to use a Dejavu font and that instead of filenames we want to
-use its given name. The best way to find out what is available is to call for a
-list:
-
-\starttyping
-mtxrun --script font --list --all dejavu
-\stoptyping
-
-This produces the following list:
-
-\startnarrowtyping
-dejavusans dejavusans dejavusans.ttf
-dejavusansbold dejavusansbold dejavusans-bold.ttf
-dejavusansboldoblique dejavusansboldoblique dejavusans-boldoblique.ttf
-dejavusanscondensed dejavusanscondensed dejavusanscondensed.ttf
-dejavusanscondensedbold dejavusanscondensedbold dejavusanscondensed-bold.ttf
-dejavusanscondensedboldoblique dejavusanscondensedboldoblique dejavusanscondensed-boldoblique.ttf
-dejavusanscondensednormal dejavusanscondensed dejavusanscondensed.ttf
-dejavusanscondensedoblique dejavusanscondensedoblique dejavusanscondensed-oblique.ttf
-dejavusansextralight dejavusansextralight dejavusans-extralight.ttf
-dejavusanslight dejavusansextralight dejavusans-extralight.ttf
-dejavusansmono dejavusansmono dejavusansmono.ttf
-dejavusansmonobold dejavusansmonobold dejavusansmono-bold.ttf
-dejavusansmonoboldoblique dejavusansmonoboldoblique dejavusansmono-boldoblique.ttf
-dejavusansmononormal dejavusansmonooblique dejavusansmono-oblique.ttf
-dejavusansmonooblique dejavusansmonooblique dejavusansmono-oblique.ttf
-dejavusansnormal dejavusans dejavusans.ttf
-dejavusansoblique dejavusansoblique dejavusans-oblique.ttf
-dejavuserif dejavuserif dejavuserif.ttf
-dejavuserifbold dejavuserifbold dejavuserif-bold.ttf
-dejavuserifbolditalic dejavuserifbolditalic dejavuserif-bolditalic.ttf
-dejavuserifcondensed dejavuserifcondensed dejavuserifcondensed.ttf
-dejavuserifcondensedbold dejavuserifcondensedbold dejavuserifcondensed-bold.ttf
-dejavuserifcondensedbolditalic dejavuserifcondensedbolditalic dejavuserifcondensed-bolditalic.ttf
-dejavuserifcondenseditalic dejavuserifcondenseditalic dejavuserifcondensed-italic.ttf
-dejavuserifcondensednormal dejavuserifcondensed dejavuserifcondensed.ttf
-dejavuserifitalic dejavuserifitalic dejavuserif-italic.ttf
-dejavuserifnormal dejavuserif dejavuserif.ttf
-\stopnarrowtyping
-
-The first two columns mention the names that we can use to access a font. These
-are normalized names in the sense that we only kept letters and numbers. The next three
-definitions are equivalent:
-
-\starttyping
-\definefont[TitleFont][name:dejavuserif*default sa 1]
-\definefont[TitleFont][name:dejavuserifnormal*default sa 1]
-\definefont[TitleFont][name:dejavuserif.ttf*default sa 1]
-\stoptyping
-
-In the list you see two names that all point to \type {dejavusans-extralight.ttf}:
-
-\starttyping
-dejavusansextralight
-dejavusanslight
-\stoptyping
-
-There are some heuristics built into \CONTEXT\ and we do some cleanup as well.
-For instance we interpret \type {ital} as \type {italic}. In a font there is
-sometimes information about the weight and we look at those properties as well.
-Unfortunately font names (even within a collection) are often rather inconsistent
-so you still need to know what you're looking for. The more explicit you are, the
-less change of problems.
-
-\stopsection
-
-\startsection[title=Spec]
-
-There is often some logic in naming fonts but it's not robust and really depends on
-how consistent a font designer or typefoundry has been. In \CONTEXT\ we can
-access names by using a normalized scheme.
-
-\starttyping
-name-weight-style-width-variant
-\stoptyping
-
-The following values are valid:
-
-\starttabulate[|Bl|Tp|]
-\NC weight \NC \ctxcommand { concatcommalist { list = fonts.names.knownweights } } \NC \NR
-\NC style \NC \ctxcommand { concatcommalist { list = fonts.names.knownstyles } } \NC \NR
-\NC width \NC \ctxcommand { concatcommalist { list = fonts.names.knownwidths } } \NC \NR
-\NC variant \NC \ctxcommand { concatcommalist { list = fonts.names.knownvariants } } \NC \NR
-\stoptabulate
-
-The four specifiers are optional but the more you provide, the better the match. Let's
-give an example:
-
-\starttyping
-mtxrun --script fonts --list --spec dejavu
-\stoptyping
-
-This reports:
-
-\startnarrowtyping
-dejavuserifcondensed normal normal normal normal dejavuserifcondensed dejavuserifcondensed.ttf
-dejavuserif normal normal normal normal dejavuserif dejavuserif.ttf
-dejavusansmono normal normal normal normal dejavusansmono dejavusansmono.ttf
-dejavusanscondensed normal normal normal normal dejavusanscondensed dejavusanscondensed.ttf
-dejavusans normal normal normal normal dejavusans dejavusans.ttf
-\stopnarrowtyping
-
-We can be more specific, for instance:
-
-\starttyping
-mtxrun --script fonts --list --spec dejavu-bold
-\stoptyping
-
-\startnarrowtyping
-dejavuserif bold normal normal normal dejavuserifbold dejavuserif-bold.ttf
-dejavusansmono bold normal normal normal dejavusansmonobold dejavusansmono-bold.ttf
-dejavusans bold normal normal normal dejavusansbold dejavusans-bold.ttf
-\stopnarrowtyping
-
-We add another specifier:
-
-\starttyping
-mtxrun --script fonts --list --spec dejavu-bold-italic
-\stoptyping
-
-\startnarrowtyping
-dejavuserif bold italic normal normal dejavuserifbolditalic dejavuserif-bolditalic.ttf
-dejavusansmono bold italic normal normal dejavusansmonoboldoblique dejavusansmono-boldoblique.ttf
-dejavusans bold italic normal normal dejavusansboldoblique dejavusans-boldoblique.ttf
-\stopnarrowtyping
-
-As the first hit is used we need to be more specific with respect to the
-name, so lets do that in an example definition:
-
-\starttyping
-\definefont[TitleFont][spec:dejavuserif-bold-italic*default sa 1]
-\stoptyping
-
-Watch the prefix \type {spec}. Wolfgang Schusters \type {simplefonts} module
-nowadays uses this method to define sets of fonts based on a name only
-specification. Of course that works best if a fontset has well defined
-properties.
-
-\stopsection
-
-\stopchapter
-
-\stopcomponent