aboutsummaryrefslogtreecommitdiff
path: root/lib.typ
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-11-30 20:39:31 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-11-30 20:42:19 +0100
commitbf805640104c282113a791caba81567cbfe44132 (patch)
tree7a67646641da35065164472bff0902d4c382d357 /lib.typ
parent3ec960931e9a812e2b69c3251065336bdd2bc2ca (diff)
implement some improvements from #3
Diffstat (limited to 'lib.typ')
-rw-r--r--lib.typ80
1 files changed, 80 insertions, 0 deletions
diff --git a/lib.typ b/lib.typ
new file mode 100644
index 0000000..213c33d
--- /dev/null
+++ b/lib.typ
@@ -0,0 +1,80 @@
+// TODO: workaround until Typst gets a real ex unit.
+// See <https://github.com/typst/typst/issues/2405>
+#let ex = 0.47
+#let defaults = (
+ drop-tex: 0.5em*ex,
+ drop-xe: 0.5em*ex,
+
+ kern-te: -.1667em,
+ kern-ex: -.125em,
+ kern-la: -.36em,
+ kern-at: -.15em,
+ kern-xe: -.125em,
+ kern-et: -.1667em,
+ kern-el: -.125em,
+ kern-x2: 0.15em,
+)
+#let config = state("metalogo", defaults)
+#let metalogo(..opts) = context{
+ config.update(c => {
+ for (key, value) in opts.named() {
+ c.insert(key, value)
+ }
+ return c
+ })
+}
+
+#let drop(body, distance: 0pt) = box[#move(dy: distance)[#body]]
+#let mirror(body) = scale(x: -100%)[#body]
+
+#let TeX = context[#box[#{
+ let cfg = config.get()
+ [T]
+ h(cfg.kern-te)
+ drop(distance: cfg.drop-tex)[E]
+ h(cfg.kern-ex)
+ [X]
+}]]
+
+#let Xe = context[#box[#{
+ let cfg = config.get()
+ [X]
+ h(cfg.kern-xe)
+ drop(distance: cfg.drop-xe)[#mirror[E]]
+}]]
+
+#let LaTeX = context[#box[#{
+ let cfg = config.get()
+
+ [L]
+ h(cfg.kern-la)
+ drop(distance: -.2em)[#text(0.7em)[A]]
+ h(cfg.kern-at)
+ TeX
+}]]
+
+#let XeTeX = context[#box[#{
+ let cfg = config.get()
+
+ Xe
+ h(cfg.kern-et)
+ TeX
+}]]
+
+#let XeLaTeX = context[#box[#{
+ let cfg = config.get()
+
+ Xe
+ h(cfg.kern-el)
+ LaTeX
+}]]
+
+#let LuaLaTeX = box[Lua#LaTeX]
+#let LuaTeX = box[Lua#TeX]
+
+#let LaTeXe = context[#box[#{
+ LaTeX
+ [2]
+ sym.epsilon
+}]]
+