UPDMAP(1)
π UPDMAP(1) β manage TeX font maps π
Okay so bestie, this is the manual page for updmap, updmap-sys, and updmap-user β the little trio that handles TeX font maps. Lowkey iconic, highkey complicated, and weβre getting into all of it. β¨
πΈ NAME πΈ
updmapβ manage TeX font mapsupdmap-sysβ manage TeX font maps, system-wideupdmap-userβ manage TeX font maps, per-user
β¨ SYNOPSIS β¨
updmap [-user|-sys] [OPTION] ... [COMMAND]
updmap-user [OPTION] ... [COMMAND]
updmap-sys [OPTION] ... [COMMAND]
π¦ DESCRIPTION π¦
This is updmap version r70707 (2024-03-19 23:03:22 +0100), and it updates the default font map files used by pdftex and dvipdfm(x) (pdftex.map), dvips (psfonts.map), and optionally pxdvi, as determined by all the configuration files updmap.cfg β usually the ones you get by running kpsewhich --all updmap.cfg, but see below, bestie.
Among other things, these map files decide which fonts should be used as bitmaps and which as outlines, and which font files get included β typically subsetted β in the PDF or PostScript output. π
These maps are for fonts installed inside the TeX hierarchy, and they are not related to any system font lookups. Theyβre primarily used for Type 1 fonts, though a few OpenType and TrueType fonts are involved too.
updmap-sys (or updmap -sys) is meant to affect the system-wide configuration, while updmap-user (or updmap -user) affects personal configuration files only, overriding the system files.
β οΈ Bestie, this is the part to pay attention to: onceupdmap-userhas been run, even a single time, runningupdmap-sysno longer has any effect.updmap-sysissues a warning about this, since it is rarely desirable. See https://tug.org/texlive/scripts-sys-user.html for details.
By default, the TeX filename database (ls-R) is also updated; use --nohash to skip that step.
The updmap system is regrettably complicated, for both inherent and historical reasons. A general overview:
updmap.cfgfiles are mainly about listing other files, namely the font-specific.maps, in which each line gives information about a different TeX (.tfm) font.updmapreads theupdmap.cfgfiles and then concatenates the contents of those.mapfiles into the main output files, generically named:psfonts.mapfordvips, andpdftex.mapforpdftexanddvipdfmx.- The
updmap.cfgfiles themselves are created and updated at package installation time, by the system installer or the package manager or by hand, and not (by default) byupdmap.
π OPTIONS π
--cnffile FILEβ readFILEfor the updmap configuration (can be given multiple times, in which case all the files are used)--dvipdfmxoutputdir DIRβ specify output directory (dvipdfm(x)syntax)--dvipsoutputdir DIRβ specify output directory (dvipssyntax)--pdftexoutputdir DIRβ specify output directory (pdftexsyntax)--pxdvioutputdir DIRβ specify output directory (pxdvisyntax)--outputdir DIRβ specify output directory (for all files)--[no-]copyβ create generic files as copies (default); with-no-copy, create symlinks--forceβ recreate files even if config hasnβt changed--nomkmapβ do not recreate map files--nohashβ do not runmktexlsr(a.k.a.texhash)--sysβ affect system-wide files (equivalent toupdmap-sys)--userβ affect personal files (equivalent toupdmap-user)-n,--dry-runβ only show the configuration, no output--quiet,--silentβ reduce verbosity
π Commands π
--helpβ show this message and exit--versionβ show version information and exit--showoption OPTIONβ show the current setting ofOPTION--showoptions OPTIONβ show possible settings forOPTION--setoption OPTION VALUEβ setOPTIONto value; option names below--setoption OPTION=VALUEβ as above, just different syntax--enable MAPTYPE MAPFILEβ add"MAPTYPE MAPFILE"toupdmap.cfg, whereMAPTYPEisMap,MixedMap, orKanjiMap--enable Map=MAPFILEβ add"Map MAPFILE"toupdmap.cfg--enable MixedMap=MAPFILEβ add"MixedMap MAPFILE"toupdmap.cfg--enable KanjiMap=MAPFILEβ add"KanjiMap MAPFILE"toupdmap.cfg--disable MAPFILEβ disableMAPFILE, of whatever type--listmapsβ list all maps (details below)--listavailablemapsβ list available maps (details below)--syncwithtreesβ disable unavailable map files inupdmap.cfg
π The main output π
The main output of updmap is the files containing the individual font map lines which the drivers (dvips, pdftex, etc.) read to handle fonts.
The map files for dvips (psfonts.map) and pdftex and dvipdfmx (pdftex.map) are written to TEXMFVAR/fonts/map/updmap/{dvips,pdftex}/.
In addition, information about Kanji fonts is written to TEXMFVAR/fonts/map/updmap/dvipdfmx/kanjix.map, and optionally to TEXMFVAR/fonts/map/updmap/pxdvi/xdvi-ptex.map. These are for Kanji only and are not like other map files. dvipdfmx reads pdftex.map for the map entries for non-Kanji fonts.
If no option is given, so the invocation is just updmap-user or updmap-sys, these output files are always recreated.
Otherwise, if an option such as --enable or --disable is given, the output files are recreated if the list of enabled map files (from updmap.cfg) has changed. The --force option overrides this, always recreating the output files.
π Explanation of the map types π
The normal type is Map.
The only difference between Map and MixedMap is that MixedMap entries are not added to psfonts_pk.map. The purpose is to help users with devices that render Type 1 outline fonts worse than mode-tuned Type 3 bitmap fonts. So, MixedMap is used for fonts that are available as both Type 1 and Metafont.
KanjiMap entries are added to psfonts_t1.map and kanjix.map.
π§ Explanation of the OPTION names for --showoptions, --showoption, --setoption π§
dvipsPreferOutlineβtrue,false(defaulttrue)
Whether dvips uses bitmaps or outlines, when both are available.
dvipsDownloadBase35βtrue,false(defaulttrue)
Whether dvips includes the standard 35 PostScript fonts in its output.
pdftexDownloadBase14βtrue,false(defaulttrue)
Whether pdftex includes the standard 14 PDF fonts in its output.
pxdviUseβtrue,false(defaultfalse)
Whether maps for pxdvi (Japanese-patched xdvi) are under updmapβs control.
jaEmbedβ (any string)jaVariantβ (any string)scEmbedβ (any string)tcEmbedβ (any string)koEmbedβ (any string)
See below.
LW35βURWkb,URW,ADOBEkb,ADOBE(defaultURWkb)
Adapt the font and file names of the standard 35 PostScript fonts.
URWkbβ URW fonts with βberryβ filenames (e.g.uhvbo8ac.pfb)URWβ URW fonts with βvendorβ filenames (e.g.n019064l.pfb)ADOBEkbβ Adobe fonts with βberryβ filenames (e.g.phvbo8an.pfb)ADOBEβ Adobe fonts with βvendorβ filenames (e.g.hvnbo___.pfb)
These options are only read and acted on by updmap; dvips, pdftex, etc., do not know anything about them. They work by changing the default map file which the programs read, so they can be overridden by specifying command-line options or configuration files to the programs, as explained at the beginning of updmap.cfg.
The options jaEmbed and jaVariant (formerly kanjiEmbed and kanjiVariant) specify special replacements in the map lines. If a map contains the string @jaEmbed@, then this will be replaced by the value of that option; similarly for jaVariant. In this way, users of Japanese TeX can select different fonts to be included in the final output. The counterpart for Simplified Chinese, Traditional Chinese and Korean fonts are scEmbed, tcEmbed and koEmbed respectively.
π³ ENVIRONMENT π³
okay bestie, this is the whole "where does everything actually live" section and honestly it's giving forest energy π²β¨ stay with me, it's all facts and it all matters.
π² Explanation of trees and files normally used π²
So here's the tea. If --cnffile is specified on the command line (and yes, you can give it multiple times, she's flexible π
), then its value(s) is(are) used. Otherwise, updmap reads all the updmap.cfg files found by running kpsewhich -all updmap.cfg, in the order returned by kpsewhich β which is literally the order of trees defined in texmf.cnf. iykyk π
In either case, if multiple updmap.cfg files are found, all the maps mentioned in all the updmap.cfg files are merged. every single one. like a group chat where nobody leaves π«Ά
So, if updmap.cfg files are present in all trees, and the default layout is used as shipped with TeX Live, the following files are read, in the given order π
For updmap-sys:
TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg
TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg
TEXMFLOCAL $TEXLIVE/texmf-local/web2c/updmap.cfg
TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg
For updmap-user:
TEXMFCONFIG $HOME/.texliveYYYY/texmf-config/web2c/updmap.cfg
TEXMFVAR $HOME/.texliveYYYY/texmf-var/web2c/updmap.cfg
TEXMFHOME $HOME/texmf/web2c/updmap.cfg
TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg
TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg
TEXMFLOCAL $TEXLIVE/texmf-local/web2c/updmap.cfg
TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg
(where YYYY is the TeX Live release version β yes it's just the year, don't overthink it ποΈ)
And according to the actions, updmap might write to one of the given files or create a new updmap.cfg, described further below. so keep reading bestie π
π Where and which updmap.cfg changes are saved π
When no options are given, the updmap.cfg file(s) are only read, not written. she's just observing, hands off, vibe check passed πΈ. It's when an option --setoption, --enable or --disable is specified that an updmap.cfg needs to be updated. In this case:
- If config files are given on the command line, then the first one given is used to save any such changes. first one gets the job, main character energy π
- If the config files are taken from kpsewhich output, then the algorithm is more complex:
- 2a) If
$TEXMFCONFIG/web2c/updmap.cfgor$TEXMFHOME/web2c/updmap.cfgappears in the list of used files, then the one listed first bykpsewhich --all(equivalently, the one returned bykpsewhich updmap.cfg), is used. - 2b) If neither of the above two are present and changes are made, a new config file is created in
$TEXMFCONFIG/web2c/updmap.cfg.
- 2a) If
In general, the idea is that if the user cannot write to a given config file, a higher-level one can be used. That way, the distribution's settings can be overridden system-wide using TEXMFLOCAL, and system settings can be overridden again in a particular user's TEXMFHOME or TEXMFCONFIG. slay, it's a whole hierarchy π
π Resolving multiple definitions of a font π
If a font is defined in more than one map file, then the definition coming from the first-listed updmap.cfg is used. first come, first served, no cutting in line π«. If a font is defined multiple times within the same map file, one is chosen arbitrarily (the universe decides, genuinely π). In both cases a warning is issued β so pay attention, bestie β οΈ
π« Disabling maps π«
updmap.cfg files with higher priority (listed earlier) can disable maps mentioned in lower priority (listed later) updmap.cfg files by writing, e.g.,
#! Map mapname.map
or
#! MixedMap mapname.map
in the higher-priority updmap.cfg file.
(The #! must be at the beginning of the line, with at least one space or tab afterward, and whitespace between each word on the list. yes she's picky about her whitespace, respect it π)
As an example β okay this one's iconic β suppose you have a copy of MathTime Pro fonts and want to disable the Belleek version of the fonts; that is, disable the map belleek.map. You can create the file $TEXMFCONFIG/web2c/updmap.cfg with the content
#! Map belleek.map Map mt-plus.map Map mt-yy.map
and call updmap. boom. done. ate. π₯
π Listing of maps π
The two options --listmaps and --listavailablemaps list all maps defined in any of the updmap.cfg files (for --listmaps), and only those actually found on the system (for --listavailablemaps). The output format is one line per font map, with the following fields separated by tabs:
- map
- type (
Map,MixedMap,KanjiMap) - status (
enabled,disabled) - origin (the
updmap.cfgfile where it is mentioned, or'builtin'for the three basic maps)
In the case of --listmaps there can be one additional fields (again separated by tab) containing '(not available)' for those map files that cannot be found. π
π― updmap-user vs. updmap-sys π―
When updmap-sys is run, TEXMFSYSCONFIG and TEXMFSYSVAR are used instead of TEXMFCONFIG and TEXMFVAR, respectively. This is the primary difference between updmap-sys and updmap-user. literally the whole plot twist β¨
Other locations may be used if you give them on the command line, or these trees don't exist, or you are not using the original TeX Live. ngl she's flexible like that π
To see the precise locations of the various files that will be read and written, give the -n option (or read the source). going straight to the source is valid, bestie, do it π±
πΈ EXAMPLES πΈ
The log file is written to TEXMFVAR/web2c/updmap.log. that's your receipts, keep them π
For step-by-step instructions on making new fonts known to TeX, read https://tug.org/fonts/fontinstall.html. For even more terse instructions, read the beginning of the main updmap.cfg file. both are valid, pick your vibe β¨
π FILES π
Configuration and input files π¦
updmap.cfgβ Main configuration file. Intexmf-dist/web2cby default, but may be located elsewhere depending on your distribution. Each texmf tree read should have its ownupdmap.cfg.dvips35.mapβ Map file for standard 35 PostScript fonts for use withdvips(1).pdftex35.mapβ Map file for standard 35 PostScript fonts for use withpdftex(1).ps2pk35.mapβ Map file for standard 35 PostScript fonts for use withps2pk(1).
Output files π
psfonts.mapβ Fordvips(1). Same aspsfonts_t1.mapif optiondvipsPreferOutlineactive, else aspsfonts_pk.map.psfonts_pk.mapβ Fordvips(1). Without information fromMixedMapfiles. (Setting ofdvipsPreferOutlineignored.)psfonts_t1.mapβ Fordvips(1). With information fromMixedMapfiles. (Setting ofdvipsPreferOutlineignored.)download35.mapβ Fordvips(1). Always downloads the standard 35 fonts. (Setting ofdvipsDownloadBase35ignored.)builtin35.mapβ Fordvips(1). Never downloads the standard 35 fonts. (Setting ofdvipsDownloadBase35ignored.)pdftex.mapβ Forpdftex(1). Same aspdftex_dl14.mapif optionpdftexDownloadBase14active, else aspdftex_ndl14.map.pdftex_dl14.mapβ Forpdftex(1). Always downloads the standard 14 fonts.pdftex_ndl14.mapβ Forpdftex(1). Never downloads the standard 14 fonts.ps2pk.mapβ Similar topsfonts.mapfile, but forces all fonts to be downloaded, so this map file can be used withxdvi(1)andps2pk(1). π§
Configuration files for dvips(1) π§
config.builtin35β Loadsbuiltin35.mapinstead ofpsfonts.map.config.download35β Loadsdownload35.mapinstead ofpsfonts.map.config.outlineβ Loadspsfonts_t1.mapinstead ofpsfonts.map.config.pdfβ Loadspsfonts_t1.mapinstead ofpsfonts.mapand has additional settings for PDF generation.config.pkβ Loadspsfonts_pk.mapinstead ofpsfonts.map.config.wwwβ Loadspsfonts_t1.mapinstead ofpsfonts.map. (For compatibility with old versions.)config.gstopkβ Loadspsfonts_t1.mapinstead ofpsfonts.map.
π REPORTING BUGS π
Found something broken? don't suffer in silence bestie, tell the maintainers π«Ά
Report bugs to: tex-live@tug.org
TeX Live home page: <https://tug.org/texlive/>
okay that's the whole page, you made it, I'm so proud of you π this iconic little manual page is from TeX Live, dated February 2025, and it's UPDMAP(1) β periodt. now go make those fonts behave β¨π
π¦ where this page comes from
- alpine 3.24: texmf-dist-doc 2026.0-r0 Β· LPPL-1.0 AND LPPL-1.1 AND LPPL-1.2 AND LPPL-1.3a AND LPPL-1.3c AND GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms