diff options
Diffstat (limited to 'pkgs/data/fonts')
-rw-r--r-- | pkgs/data/fonts/junicode/default.nix | 23 | ||||
-rw-r--r-- | pkgs/data/fonts/junicode/test-vf.tex | 46 | ||||
-rw-r--r-- | pkgs/data/fonts/junicode/test.tex | 46 | ||||
-rw-r--r-- | pkgs/data/fonts/junicode/tests.nix | 35 | ||||
-rw-r--r-- | pkgs/data/fonts/junicode/tex-font-path.patch | 166 |
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 + ] + |