aboutsummaryrefslogtreecommitdiff
path: root/fmt/font.h
diff options
context:
space:
mode:
authorHolden Rohrer <hr@hrhr.dev>2020-07-06 18:20:32 -0400
committerHolden Rohrer <hr@hrhr.dev>2020-07-06 18:41:47 -0400
commita1d245cfd1979ec78bbc01e5125af80071f8cc42 (patch)
tree9bf0ec38631e4f0879940dc4a0b133d78fc2f17c /fmt/font.h
parent5a18c8a33b90003a2c930a207f766800883c3622 (diff)
File reorganization
More makefile-friendly
Diffstat (limited to 'fmt/font.h')
-rw-r--r--fmt/font.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/fmt/font.h b/fmt/font.h
new file mode 100644
index 0000000..54d4b54
--- /dev/null
+++ b/fmt/font.h
@@ -0,0 +1,50 @@
+%% Fonts
+\newcount\thespacing
+\newdimen\size
+\begingroup
+ \edef\specialAt{{ \string a\string t }}%
+ \def\x#1{%
+ \def\getfontsize##1=##2{% The user level macro
+ \expandafter\getfontsizE\fontname##2#1\relax{##1}%
+ }%
+ \def\getfontsizE##1#1##2\relax##3{%
+ \ifx*##2*% Loaded at designsize
+ \begingroup
+ \font\tmpfont"##1" scaled 2000
+ \getfontsize\dimen0=\tmpfont
+ \divide\dimen0 by 2
+ \expandafter
+ \endgroup
+ \expandafter\getfontsiZe\the\dimen0\relax{##3}%
+ \else% Otherwise #2 holds the size. But is is followed by " at ", so we have to strip that
+ \getfontsiZE{##3}##2%
+ \fi
+ }%
+ \def\getfontsiZE##1##2#1{##1=##2}% Strip " at "
+ \def\getfontsiZe##1\relax##2{##2=##1}
+ }
+ \expandafter\expandafter\expandafter
+\endgroup
+\expandafter\x\specialAt % From StackOverflow
+{
+\catcode`\@=11
+
+\global\let\f@nt\font
+
+\gdef\spacing{
+ \afterassignment\adjs \thespacing}
+\gdef\adjs{%adjust spacing
+ \baselineskip=\size \multiply\baselineskip by \thespacing
+ \divide\baselineskip by 100\relax}
+
+\gdef\font#1{%
+ \def\orig{#1}\edef\realname{\csname\string#1@font\endcsname}
+ \afterassignment\xfont
+ \expandafter\f@nt\realname
+}
+\gdef\xfont{
+ \expandafter\getfontsize\expandafter\dimen0\expandafter=\realname
+ \expandafter\expandafter\expandafter\def
+ \expandafter\orig\expandafter{\realname\size\dimen0\adjs}
+}
+}