The Witcher

File information

Last updated

Original upload

Created by


Uploaded by


Virus scan

Safe to use

Tags for this mod

About this mod

Uses The Witcher 3's highly legible typeface instead of the default fonts to display all in-game text, including the menus, subtitles, the HUD, and journal entries.

Permissions and credits
Overview & Purpose

This mod makes all the text in the game be displayed with The Witcher 3's highly legible and clear typeface instead of the default fonts.

By default, The Witcher uses a variant of Garamond, notable for its elaborate serifs, for much of its interface. Considering the fonts are pre-rasterized, the end result is far from visually appealing. Clarity of the in-game text can be significantly improved by switching to a simpler, sans-serif typeface.

A couple of sans-serif fonts are used in TW1 alongside Garamond. However, the UI font appearing in The Witcher 3, a modern flavor of DIN, optimized for on-screen legibility, is a massive step up from any of these. The characters are thinner and tightly-spaced, making for less distraction with higher information density. The shape of the characters also minimizes the presence of edge artefacts, which are an inevitable byproduct of how fonts are rendered in the game.


Extract the contents of the downloaded archive to the game directory. Assuming the game is installed in %ProgramFiles%\The Witcher the full path to the extracted files would be:

%ProgramFiles%\The Witcher\Data\Override\fonts.2da
%ProgramFiles%\The Witcher\System\__cache\tw3pfdin_*.fontcache
%ProgramFiles%\The Witcher\System\__cache\tw3pfdinb_*.fontcache

This mod should not overwrite anything. To uninstall, simply delete the files listed above (as a matter of fact, deleting fonts.2da is enough: the default version of the file stored inside a BIF archive will be used instead). If however, for some reason you need the original version of fonts.2da, for example for your own experimentation, you can also find it in the Downloads section.

Issues & Limitations

  • The replacement font includes accented Latin characters so should work with other European language versions, however I only tested it in English. Non-Latin scripts (such as Chinese or Russian) use separate settings and would not be affected by the mod.
  • Although the example screenshots feature other mods and customizations, this mod should work all the same in the vanilla game. However, different versions of fonts.2da included with other mods could prevent the changes by this mod from taking effect. If the mod doesn't seem to work, this is the likely culprit.
  • Please note that this is a preliminary version. While it works as described, it could likely benefit from further adjustments regarding font sizes and the choice of either bold or regular variants for each configurable UI element. I will be adjusting the settings during my playthrough of TW1 it so as to eventually post a final version here, however since this might take time, I wanted to share what I have so far in the meantime.
  • Font dimensions are optimized for 1920 × 1080 px, and should probably be fine for 2560 × 1440 px as well since I only increased the smallest ones from the defaults. However, if you're playing in 4K, you might want to make them even larger: for details how to do this, see the section below.

How It Works

Where Font Settings Are Stored

  • Which fonts the game uses is determined by the settings in fonts.2da. The .2da extension apparently stands for "two-dimensional array."
  • You will not find this file in an unmodified TW1 installation directory. It is stored inside 2da00.bif. To see what the default settings are, it has to be extracted. Two other files, fonts_rus.2da and fonts_zh.2da control the settings for Russian and Chinese respectively. For convenience, you can find all of them in the Downloads section.
  • If a file by that name is placed anywhere inside the data (%ProgramFiles%\The Witcher\Data) directory, it overrides the defaults from the archive. However, do note that if there are multiple versions of this file in the data directory, when their full paths are considered, only the last one on the list sorted alphabetically takes effect. For example, if both Data\A\fonts.2da and Data\B\fonts.2da are present, the settings from the latter take effect, and the first one is ignored.
  • The mechanics described above are not really different than for any other data files but if you want to customize the font settings it's important to remember not to let the same file from other mods override yours. For example, the Rise of the White Wolf mod includes the file Data\z_zrotww\fonts\fonts.2da, which you have to delete or rename if you want to use this mod. Or, alternatively, you can place yours in a directory like Data\z_zz. If you placed the file in the data directory yet the fonts are not changing, forgetting about this is likely the cause.

The Font Settings File Format

  • The file fonts.2da is a plain-text file, viewable in any text editor including the Windows Notepad. However note that it follows a rigid formatting convention so that it can be parsed by the game. Since we don't know how forgiving the parser is of inconsistencies, it's best to be careful editing it, and make backups. There's at least one tool written specifically for editing 2DA files, it might be worth checking out: NWN 2DA Editor.
  • The file has Windows (CR/LF) line endings, not UTF-8 BOM, and the format is:

2DA V2.0

     Label                TrueType     Points    Outline    MinSize
<#>  <IDENTIFIER>         <TTF_NAME>   <NUMBER>  <0|1>      <NUMBER> 

  • The first row is a header, the second row is empty, and the third row are the column titles. These should not be modified. The actual data start at line 4. Columns are delimited by <Tab> (not just spaces) — which can't be reproduced here, so don't just copy and paste the above snippet. It won't work.
  • <#> is the sequential entry number, starting at 0, it has to be increased for every subsequent row.
  • <IDENTIFIER> is a category that determines where the font is used in the game, which is hard-coded. Valid identifiers are: choices, console, credits, default, fnt_galahad14, gui_bigger, gui_default, gui_huge, gui_icon, gui_infopanel, gui_infopanel_big, gui_label, smallinfo, subtitle and tutorial. There is no point in changing these or using anything else — maybe unless you are also modifying other aspects of the game as well.
  • <TTF_NAME> is the name of the font that corresponds to a file: %ProgramFiles%\The Witcher\System\__cache\*.fontcache. More on that later.
  • The following column, Points, determines the font size: <NUMBER> is observed to be an even (2, 4, 6, etc.) integer between 14 and 30 for the default fonts. By definition, 1 pt = 1/72". At 96 dpi, as commonly assumed, 1 pt = 4/3 px = 1.33(3) px, which in turn implies 1 px = 3/4 pt = 0.75 pt. However, the game seems to convert these at 1 pt = 7/6 px = 1.16(6) px, thus 1 px = 6/7 pt ~= 0.86 px (which would suggest the value of 84 dpi).
  • MinSize likely determines the absolute minimum size the font must be displayed at, since the fonts are apparently downsized for lower resolutions so that the text still fits on the screen. By default it's either 10 or 11, for those playing at 1920 × 1080 px or higher resolutions it likely doesn't matter.
  • Outline is a Boolean flag (0 or 1 for "false" or "true" respectively) that determines if the font features an outline. This makes it easier to read against diverse backgrounds but also makes it more crude (thicker).

The Font Files

  • As mentioned above, the actual font files are stored at: %ProgramFiles%\The Witcher\System\__cache\*.fontcache
  • While these are based on the corresponding TrueType (vector) fonts, the files themselves are rasterizations at a given font size, with or without an outline. Their names follow the convention: <fontname>_<pixel-size>_<n|o>.fontcache, where: <fontname> corresponds to the <TTF_NAME> used in fonts.2da, <pixel-size> is predictably the size but in pixels, not points this time (see above for conversion), and the trailing flag is either n for normal or o for outlined.
  • Even though they're called "cache," all these files must be present before the game is run. Otherwise, no text can be displayed.
  • The default fonts that shipped with the game include: two variants of Garamond: garamond and garamonds, Arial (arial), and Lucida (lucon). The Russian version uses a third version of Garamond yet, garabd. The Chinese version replaces all of these with Kaiti (kaiu), with the exception of Arial Unicode (arialuni) being used for the ending credits.
  • The .fontcache files for other fonts can be generated by the Djinni Game Editor upon startup, from the source .ttf files placed anywhere in the Data directory, for the font sizes and outline flags as specified in the fonts.2da file. This means that in principle, they have to be re-generated every time you change the entries in the settings file (unless you already happen to have generated the required .fontcache files earlier).

How to Customize It

Building up on the above knowledge, we now have all the necessary information to customize the font settings, sizes, outlines to our preferences or even use any other TrueType (.ttf) typeface:

  • Start with a version of fonts.2da. You can either use the custom one from my mod or any of the default ones (Latin, Russian, Chinese), all of which are also available in the Downloads section. Place this file anywhere within TW1 data directory: %ProgramFiles%\The Witcher\Data. Make sure there are no other versions of it in other subdirectories.
  • If you want to use The Witcher 3 fonts (the whole purpose of this mod, I won't mind if you don't though), download the source .ttf files for them from the Downloads section (the Custom DIY Kit), and also place them anywhere within the data directory. The TW3 font files are named: tw3pfdin.ttf for regular and tw3pfdinb.tff for bold. Their names, i.e. the <TTF_NAME> for use within fonts.2da, are: tw3pfdin and tw3pfdinb respectively. Alternatively, you should be able to use any other TTF fonts of your preference instead.
  • Make your edits to fonts.2da and save the file.
  • Do not run the game yet. Instead, run Djinni: %ProgramFiles%\The Witcher\System\djinni!.exe. The rasterized .fontcache files are generated automatically on startup, so you can close it immediately afterwards but it's a good idea to examine the log window first for any messages: if the fonts were succesfully generated, it should say so; alternatively, it will point to an error.
  • Once you close Djinni, examine the directory %ProgramFiles%\The Witcher\System\__cache to see what's new there. Alongside .fontcache files, you should also notice the matching .tga files. They can be safely deleted, so feel free to do so now. As a matter of fact, feel free to delete any fonts you don't use. By default, the directory is 274MB but if you experiment a lot with custom fonts it will be growing. Remember to manualy delete the files that are no longer needed. Or you can delete them all, and run Djinni to re-generate the ones you still need.
  • Start the game and enjoy your new fonts.

Note: if you're interested in how the TTF font files were extracted from TW3, see the description of my TW3 UI Font mod for TW2, it's all covered there, alongside some more information about the typeface itself.

Acknowledgements & Related Links