summaryrefslogtreecommitdiffstats
path: root/pkgs/data/fonts
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2024-03-10 00:38:37 +0100
committerGitHub <noreply@github.com>2024-03-10 00:38:37 +0100
commitf2cf55214ca7b431932a991b75818ba52b77a1db (patch)
treed2260946485aeef678d3a7a5d1c1411c6af1059e /pkgs/data/fonts
parent67552a1b6810dd0932d722164cea82f53a2aa501 (diff)
parentb2429f864b07ac8a2d238fb7316d1178cfe91de5 (diff)
Merge pull request #274809 from ivan-timokhin/junicode-2.204
junicode: 2.203 -> 2.206
Diffstat (limited to 'pkgs/data/fonts')
-rw-r--r--pkgs/data/fonts/junicode/default.nix23
-rw-r--r--pkgs/data/fonts/junicode/test-vf.tex46
-rw-r--r--pkgs/data/fonts/junicode/test.tex46
-rw-r--r--pkgs/data/fonts/junicode/tests.nix35
-rw-r--r--pkgs/data/fonts/junicode/tex-font-path.patch166
5 files changed, 314 insertions, 2 deletions
diff --git a/pkgs/data/fonts/junicode/default.nix b/pkgs/data/fonts/junicode/default.nix
index 29a158838458..1bc12ad70abb 100644
--- a/pkgs/data/fonts/junicode/default.nix
+++ b/pkgs/data/fonts/junicode/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenvNoCC, fetchzip }:
+{ lib, stdenvNoCC, fetchzip, texlive, callPackage }:
stdenvNoCC.mkDerivation rec {
pname = "junicode";
@@ -9,7 +9,17 @@ stdenvNoCC.mkDerivation rec {
hash = "sha256-oOKg85Yz5/2/pvwjVqeQXE8xE7X+QJvPYwYN+E18oEc=";
};
- outputs = [ "out" "doc" ];
+ outputs = [ "out" "doc" "tex" ];
+
+ patches = [ ./tex-font-path.patch ];
+
+ postPatch = ''
+ substituteInPlace TeX/junicode.sty \
+ --replace '@@@opentype_path@@@' "$out/share/fonts/opentype/" \
+ --replace '@@@truetype_path@@@' "$out/share/fonts/truetype/"
+ substituteInPlace TeX/junicodevf.sty \
+ --replace '@@@truetype_path@@@' "$out/share/fonts/truetype/"
+ '';
installPhase = ''
runHook preInstall
@@ -20,9 +30,18 @@ stdenvNoCC.mkDerivation rec {
install -Dm 444 -t $doc/share/doc/${pname}-${version} docs/*.pdf
+ install -Dm 444 -t $tex/tex/latex/junicode TeX/junicode.sty
+ install -Dm 444 -t $tex/tex/latex/junicodevf TeX/junicodevf.{sty,lua}
+
runHook postInstall
'';
+ passthru = {
+ tlDeps = with texlive; [ xkeyval fontspec ];
+
+ tests = callPackage ./tests.nix { };
+ };
+
meta = {
homepage = "https://github.com/psb1558/Junicode-font";
description = "A Unicode font for medievalists";
diff --git a/pkgs/data/fonts/junicode/test-vf.tex b/pkgs/data/fonts/junicode/test-vf.tex
new file mode 100644
index 000000000000..a23437b40efd
--- /dev/null
+++ b/pkgs/data/fonts/junicode/test-vf.tex
@@ -0,0 +1,46 @@
+\documentclass{article}
+
+\usepackage{junicodevf}
+
+\begin{document}
+\begin{enumerate}
+\item {\jBold Bold}
+\item {\jBoldItalic BoldItalic}
+\item {\jCond Cond}
+\item {\jCondItalic CondItalic}
+\item {\jCondLight CondLight}
+\item {\jCondLightItalic CondLightItalic}
+\item {\jCondMedium CondMedium}
+\item {\jCondMediumItalic CondMediumItalic}
+\item {\jExp Exp}
+\item {\jExpItalic ExpItalic}
+\item {\jExpBold ExpBold}
+\item {\jExpBoldItalic ExpBoldItalic}
+\item {\jExpMedium ExpMedium}
+\item {\jExpMediumItalic ExpMediumItalic}
+\item {\jExpSmbold ExpSmbold}
+\item {\jExpSmboldItalic ExpSmboldItalic}
+\item {\jItalic Italic}
+\item {\jLight Light}
+\item {\jLightItalic LightItalic}
+\item {\jMedium Medium}
+\item {\jMediumItalic MediumItalic}
+\item {\jRegular Regular}
+\item {\jSmbold Smbold}
+\item {\jSmboldItalic SmboldItalic}
+\item {\jSmCond SmCond}
+\item {\jSmCondItalic SmCondItalic}
+\item {\jSmCondLight SmCondLight}
+\item {\jSmCondLightItalic SmCondLightItalic}
+\item {\jSmCondMedium SmCondMedium}
+\item {\jSmCondMediumItalic SmCondMediumItalic}
+\item {\jSmExp SmExp}
+\item {\jSmExpItalic SmExpItalic}
+\item {\jSmExpBold SmExpBold}
+\item {\jSmExpBoldItalic SmExpBoldItalic}
+\item {\jSmExpMedium SmExpMedium}
+\item {\jSmExpMediumItalic SmExpMediumItalic}
+\item {\jSmExpSmbold SmExpSmbold}
+\item {\jSmExpSmboldItalic SmExpSmboldItalic}
+\end{enumerate}
+\end{document}
diff --git a/pkgs/data/fonts/junicode/test.tex b/pkgs/data/fonts/junicode/test.tex
new file mode 100644
index 000000000000..d82f40f1279f
--- /dev/null
+++ b/pkgs/data/fonts/junicode/test.tex
@@ -0,0 +1,46 @@
+\documentclass{article}
+
+\usepackage[fonttype=@fonttype@]{junicode}
+
+\begin{document}
+\begin{enumerate}
+\item {\jBold Bold}
+\item {\jBoldItalic BoldItalic}
+\item {\jCond Cond}
+\item {\jCondItalic CondItalic}
+\item {\jCondLight CondLight}
+\item {\jCondLightItalic CondLightItalic}
+\item {\jCondMedium CondMedium}
+\item {\jCondMediumItalic CondMediumItalic}
+\item {\jExp Exp}
+\item {\jExpItalic ExpItalic}
+\item {\jExpBold ExpBold}
+\item {\jExpBoldItalic ExpBoldItalic}
+\item {\jExpMedium ExpMedium}
+\item {\jExpMediumItalic ExpMediumItalic}
+\item {\jExpSmBold ExpSmBold}
+\item {\jExpSmBoldItalic ExpSmBoldItalic}
+\item {\jItalic Italic}
+\item {\jLight Light}
+\item {\jLightItalic LightItalic}
+\item {\jMedium Medium}
+\item {\jMediumItalic MediumItalic}
+\item {\jRegular Regular}
+\item {\jSmBold SmBold}
+\item {\jSmBoldItalic SmBoldItalic}
+\item {\jSmCond SmCond}
+\item {\jSmCondItalic SmCondItalic}
+\item {\jSmCondLight SmCondLight}
+\item {\jSmCondLightItalic SmCondLightItalic}
+\item {\jSmCondMedium SmCondMedium}
+\item {\jSmCondMediumItalic SmCondMediumItalic}
+\item {\jSmExp SmExp}
+\item {\jSmExpItalic SmExpItalic}
+\item {\jSmExpBold SmExpBold}
+\item {\jSmExpBoldItalic SmExpBoldItalic}
+\item {\jSmExpMedium SmExpMedium}
+\item {\jSmExpMediumItalic SmExpMediumItalic}
+\item {\jSmExpSmBold SmExpSmBold}
+\item {\jSmExpSmBoldItalic SmExpSmBoldItalic}
+\end{enumerate}
+\end{document}
diff --git a/pkgs/data/fonts/junicode/tests.nix b/pkgs/data/fonts/junicode/tests.nix
new file mode 100644
index 000000000000..fda7de31670e
--- /dev/null
+++ b/pkgs/data/fonts/junicode/tests.nix
@@ -0,0 +1,35 @@
+{ lib, runCommand, junicode, texliveBasic }:
+let
+ texliveWithJunicode = texliveBasic.withPackages (p: [ p.xetex junicode ]);
+
+ texTest = { package, tex, fonttype, file }:
+ lib.attrsets.nameValuePair "${package}-${tex}-${fonttype}" (
+ runCommand "${package}-test-${tex}-${fonttype}.pdf"
+ {
+ nativeBuildInputs = [ texliveWithJunicode ];
+ inherit tex fonttype file;
+ } ''
+ substituteAll $file test.tex
+ HOME=$PWD $tex test.tex
+ cp test.pdf $out
+ '');
+in
+builtins.listToAttrs (
+ map
+ texTest
+ (lib.attrsets.cartesianProductOfSets {
+ tex = [ "xelatex" "lualatex" ];
+ fonttype = [ "ttf" "otf" ];
+ package = [ "junicode" ];
+ file = [ ./test.tex ];
+ })
+ ++
+ [
+ (texTest {
+ package = "junicodevf";
+ fonttype = "ttf";
+ tex = "lualatex";
+ file = ./test-vf.tex;
+ })
+ ]
+)
diff --git a/pkgs/data/fonts/junicode/tex-font-path.patch b/pkgs/data/fonts/junicode/tex-font-path.patch
new file mode 100644
index 000000000000..13b311b39ce6
--- /dev/null
+++ b/pkgs/data/fonts/junicode/tex-font-path.patch
@@ -0,0 +1,166 @@
+Upstream style file relies on font files being present on the system
+globally. This is not quite how Nix usually does thing, so this patch
+changes the style file to instead look fonts up in hardcoded
+locations, which are later patched up to refer to the package outputs,
+thus ensuring the style always uses the fonts packaged with it.
+
+diff --git a/TeX/junicode.sty b/TeX/junicode.sty
+index 83bd45d..8fe671c 100644
+--- a/TeX/junicode.sty
++++ b/TeX/junicode.sty
+@@ -208,7 +208,14 @@
+
+ \RequirePackage{fontspec}
+ \defaultfontfeatures{Ligatures=TeX, Extension=.\junicode@fonttype}
+-\defaultfontfeatures{Ligatures=TeX}
++
++\def\junicode@fonttype@otf{otf}
++
++\ifx\junicode@fonttype\junicode@fonttype@otf
++ \def\junicode@fontpath{@@@opentype_path@@@}
++\else
++ \def\junicode@fontpath{@@@truetype_path@@@}
++\fi
+
+ \ifxetex
+ \typeout{\junicode@regstylename}
+@@ -219,6 +226,7 @@
+ ItalicFont = *-\junicode@italstylename,
+ BoldFont = *-\junicode@boldstylename,
+ BoldItalicFont = *-\junicode@boldstylename Italic,
++ Path = \junicode@fontpath,
+ ]{Junicode}
+ \fi
+ \ifluatex
+@@ -230,6 +238,7 @@
+ ItalicFont = *-\junicode@italstylename,
+ BoldFont = *-\junicode@boldstylename,
+ BoldItalicFont = *-\junicode@boldstylename Italic,
++ Path = \junicode@fontpath,
+ ]{Junicode}
+ \fi
+
+@@ -242,6 +251,7 @@
+ #3
+ Numbers = {\junicode@figurealign,\junicode@figurestyle},
+ SmallCapsFeatures = {Letters=SmallCaps},
++ Path = \junicode@fontpath,
+ ]
+ }
+ \fi
+@@ -252,6 +262,7 @@
+ #3
+ Numbers = {\junicode@figurealign,\junicode@figurestyle},
+ SmallCapsFeatures = {Letters=SmallCaps},
++ Path = \junicode@fontpath,
+ ]
+ }
+ \fi
+diff --git a/TeX/junicodevf.lua b/TeX/junicodevf.lua
+index 7148668..acebe82 100644
+--- a/TeX/junicodevf.lua
++++ b/TeX/junicodevf.lua
+@@ -148,7 +148,7 @@ function mkfontcommands()
+ romfontcmd = "jRegular"
+ italfontcmd = "jItalic"
+ end
+- tex.print("\\junicodevf@newfont{\\" .. romfontcmd .. "}{JunicodeVF}{\\" .. defcmd .. "}{\\" .. defsizecmd .. "}")
++ tex.print("\\junicodevf@newfont{\\" .. romfontcmd .. "}{JunicodeVF-Roman}{\\" .. defcmd .. "}{\\" .. defsizecmd .. "}")
+ tex.print("\\junicodevf@newfont{\\" .. italfontcmd .. "}{JunicodeVF-Italic}{\\" .. defcmd .. "}{\\" .. defsizecmd .. "}")
+ end
+ end
+diff --git a/TeX/junicodevf.sty b/TeX/junicodevf.sty
+index c01ccaf..07a99ad 100644
+--- a/TeX/junicodevf.sty
++++ b/TeX/junicodevf.sty
+@@ -168,11 +168,13 @@ mkwidthcommands(wdindex, adjustment)}}
+
+ % DECLARE THE FONTS
+
+-\setmainfont{Junicode VF}[
+- ItalicFont = {*-Italic},
+- BoldFont = {*},
+- BoldItalicFont = {*-Italic},
++\setmainfont{JunicodeVF-Roman}[
++ ItalicFont = {JunicodeVF-Italic},
++ BoldFont = {JunicodeVF-Roman},
++ BoldItalicFont = {JunicodeVF-Italic},
+ Renderer = HarfBuzz,
++ Extension = .ttf,
++ Path = @@@truetype_path@@@,
+ Numbers = {\junicodevf@figurealign,\junicodevf@figurestyle},
+ \MainDef,
+ UprightFeatures = {\MainRegDef
+@@ -188,6 +190,8 @@ mkwidthcommands(wdindex, adjustment)}}
+ \newcommand*{\junicodevf@newfont}[4]{
+ \setfontface#1{#2}[
+ Renderer = HarfBuzz,
++ Extension = .ttf,
++ Path = @@@truetype_path@@@,
+ Numbers = {\junicodevf@figurealign,\junicodevf@figurestyle},
+ SmallCapsFont = {*},
+ SmallCapsFeatures = {Letters=SmallCaps},
+@@ -200,43 +204,59 @@ mkwidthcommands(wdindex, adjustment)}}
+
+ % ENLARGED FACES
+
+-\setfontface\EnlargedOne{JunicodeVF}[
++\setfontface\EnlargedOne{JunicodeVF-Roman}[
+ Renderer = HarfBuzz,
++ Extension = .ttf,
++ Path = @@@truetype_path@@@,
+ \ENLAOneSizeDef
+ ]
+
+ \setfontface\EnlargedOneItalic{JunicodeVF-Italic}[
+ Renderer = HarfBuzz,
++ Extension = .ttf,
++ Path = @@@truetype_path@@@,
+ \ENLAOneSizeDef
+ ]
+
+-\setfontface\EnlargedTwo{JunicodeVF}[
++\setfontface\EnlargedTwo{JunicodeVF-Roman}[
+ Renderer = HarfBuzz,
++ Extension = .ttf,
++ Path = @@@truetype_path@@@,
+ \ENLATwoSizeDef
+ ]
+
+ \setfontface\EnlargedTwoItalic{JunicodeVF-Italic}[
+ Renderer = HarfBuzz,
++ Extension = .ttf,
++ Path = @@@truetype_path@@@,
+ \ENLATwoSizeDef
+ ]
+
+-\setfontface\EnlargedThree{JunicodeVF}[
++\setfontface\EnlargedThree{JunicodeVF-Roman}[
+ Renderer = HarfBuzz,
++ Extension = .ttf,
++ Path = @@@truetype_path@@@,
+ \ENLAThreeSizeDef
+ ]
+
+ \setfontface\EnlargedThreeItalic{JunicodeVF-Italic}[
+ Renderer = HarfBuzz,
++ Extension = .ttf,
++ Path = @@@truetype_path@@@,
+ \ENLAThreeSizeDef
+ ]
+
+-\setfontface\EnlargedFour{JunicodeVF}[
++\setfontface\EnlargedFour{JunicodeVF-Roman}[
+ Renderer = HarfBuzz,
++ Extension = .ttf,
++ Path = @@@truetype_path@@@,
+ \ENLAFourSizeDef
+ ]
+
+ \setfontface\EnlargedFourItalic{JunicodeVF-Italic}[
+ Renderer = HarfBuzz,
++ Extension = .ttf,
++ Path = @@@truetype_path@@@,
+ \ENLAFourSizeDef
+ ]
+