79 lines
2.2 KiB
Nix
79 lines
2.2 KiB
Nix
{
|
|
lib,
|
|
stdenvNoCC,
|
|
fetchurl,
|
|
cabextract,
|
|
fontforge,
|
|
}:
|
|
|
|
stdenvNoCC.mkDerivation {
|
|
pname = "vista-fonts";
|
|
version = "1";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://sourceforge/mscorefonts2/cabs/PowerPointViewer.exe";
|
|
hash = "sha256-xOdTVI0wkv/X3ThJEF4KJtm1oa/kbm5mf+fGiHiTcB8=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
cabextract
|
|
fontforge
|
|
];
|
|
|
|
unpackPhase = ''
|
|
runHook preUnpack
|
|
|
|
cabextract --lowercase --filter ppviewer.cab $src
|
|
cabextract --lowercase --filter '*.TTF' ppviewer.cab
|
|
cabextract --lowercase --filter '*.TTC' ppviewer.cab
|
|
|
|
runHook postUnpack
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/share/fonts/truetype
|
|
|
|
# Remove the embedded bitmaps from Calibri and Cambria because they have very low resolutions.
|
|
fontforge -c "
|
|
import fontforge
|
|
import sys
|
|
|
|
def removeBitmaps(font):
|
|
for table in ('EBDT', 'EBLC', 'EBSC'):
|
|
font.setTableData(table, None)
|
|
|
|
for path in sys.argv[1:]:
|
|
fonts = [fontforge.open(f'{path}({font})') for font in fontforge.fontsInFile(path)]
|
|
for font in fonts:
|
|
removeBitmaps(font)
|
|
if len(fonts) > 1:
|
|
fonts[0].generateTtc(f'$out/share/fonts/truetype/{path}', fonts[1:], layer=fonts[0].activeLayer)
|
|
else:
|
|
fonts[0].generate(f'$out/share/fonts/truetype/{path}')
|
|
" calibri* cambria*
|
|
|
|
cp -n *.ttf *.ttc $out/share/fonts/truetype
|
|
|
|
# Set up no-op font configs to override any aliases set up by other packages.
|
|
mkdir -p $out/etc/fonts/conf.d
|
|
for name in Calibri Cambria Candara Consolas Constantia Corbel ; do
|
|
substitute ${./no-op.conf} $out/etc/fonts/conf.d/30-''${name,,}.conf \
|
|
--subst-var-by fontname $name
|
|
done
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = {
|
|
description = "Some TrueType fonts from Microsoft Windows Vista (Calibri, Cambria, Candara, Consolas, Constantia, Corbel)";
|
|
homepage = "http://www.microsoft.com/typography/ClearTypeFonts.mspx";
|
|
license = lib.licenses.unfree; # haven't read the EULA, but we probably can't redistribute these files, so...
|
|
|
|
# Set a non-zero priority to allow easy overriding of the
|
|
# fontconfig configuration files.
|
|
priority = 5;
|
|
};
|
|
}
|