From 77cfffee6177fb0421fa0fce15d6a1875bde4816 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20W=C3=BChrer?= <def@gmx.at>
Date: Sat, 18 May 2024 21:04:34 +0200
Subject: manuals, sum-down, radix

---
 bin/embolden | 390 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 390 insertions(+)
 create mode 100755 bin/embolden

(limited to 'bin/embolden')

diff --git a/bin/embolden b/bin/embolden
new file mode 100755
index 0000000..75df549
--- /dev/null
+++ b/bin/embolden
@@ -0,0 +1,390 @@
+#!/bin/bash
+
+# For bold and italic we can use the Mathematical font variant mappings,
+#  although those are only defined for Latin and Greek.
+# Latin bold capital: u1d400 - u1d419
+# Latin bold small: u1d41a - u1d433
+# Latin italic capital: u1d434 - u1d44d
+# Latin italic small: u1d44e - u1d467
+# Latin bold italic capital: u1d468 - u1d481
+# Latin bold italic small: u1d482 - u1d49b
+# (Script capital, script small, bold script capital, bold script small)
+# (Fraktur capital, fraktur small)
+# (Double-struck capital, double-struck small)
+# (some Hebrew symbol variants)
+# (Bold fraktur capital, bold fraktur small)
+# (Sans-serif capital, sans-serif small)
+# (Sans-serif bold capital, sans-serif bold small)
+# (Sans-serif italic capital, sans-serif italic small)
+# (Sans-serif bold italic capital, sans-serif bold italic small)
+# (Monospace capital, monospace small)
+# Greek bold capital: u1d6a8 - u1d6c0
+# Greek bold small: u1d6c2 - u1d6da
+# Greek italic capital: u1d6e2 - u1d6fa
+# Greek italic small: u1dcfc - u1d714
+# Greek bold italic capital: u1d71c - u1d734
+# Greek bold italic small: u1d736 - u1d74e
+# (Greek sans-serif bold capital: u1d756 - u1d76e)
+# (Greek sans-serif bold small: u1d770 - u1d788)
+# (Greek sans-serif bold italic capital: u1d790 - u1d7a8)
+# (Greek sans-serif bold italic small: u1d7aa - u1d7c2)
+# bold digits: u1d7ce - u1d7d7
+# (double-struck digits)
+# (sans-serif digits)
+# (sans-serif bold digits)
+# (monospace digits)
+# (Arabic mathematical)
+# (Arabic stretched)
+# (Arabic looped)
+# (Arabic double-struck)
+#
+# It turns out there are no Unicode control codes for marking text
+#  bold or italic.  There are for subscript and superscript,
+#  and ASCII has similar codes which nobody ever uses.
+
+declare -A bold=(
+	[0]=$'\xf0\x9d\x9f\x8e'
+	[1]=$'\xf0\x9d\x9f\x8f'
+	[2]=$'\xf0\x9d\x9f\x90'
+	[3]=$'\xf0\x9d\x9f\x91'
+	[4]=$'\xf0\x9d\x9f\x92'
+	[5]=$'\xf0\x9d\x9f\x93'
+	[6]=$'\xf0\x9d\x9f\x94'
+	[7]=$'\xf0\x9d\x9f\x95'
+	[8]=$'\xf0\x9d\x9f\x96'
+	[9]=$'\xf0\x9d\x9f\x97'
+	[A]=$'\xf0\x9d\x90\x80'
+	[B]=$'\xf0\x9d\x90\x81'
+	[C]=$'\xf0\x9d\x90\x82'
+	[D]=$'\xf0\x9d\x90\x83'
+	[E]=$'\xf0\x9d\x90\x84'
+	[F]=$'\xf0\x9d\x90\x85'
+	[G]=$'\xf0\x9d\x90\x86'
+	[H]=$'\xf0\x9d\x90\x87'
+	[I]=$'\xf0\x9d\x90\x88'
+	[J]=$'\xf0\x9d\x90\x89'
+	[K]=$'\xf0\x9d\x90\x8a'
+	[L]=$'\xf0\x9d\x90\x8b'
+	[M]=$'\xf0\x9d\x90\x8c'
+	[N]=$'\xf0\x9d\x90\x8d'
+	[O]=$'\xf0\x9d\x90\x8e'
+	[P]=$'\xf0\x9d\x90\x8f'
+	[Q]=$'\xf0\x9d\x90\x90'
+	[R]=$'\xf0\x9d\x90\x91'
+	[S]=$'\xf0\x9d\x90\x92'
+	[T]=$'\xf0\x9d\x90\x93'
+	[U]=$'\xf0\x9d\x90\x94'
+	[V]=$'\xf0\x9d\x90\x95'
+	[W]=$'\xf0\x9d\x90\x96'
+	[X]=$'\xf0\x9d\x90\x97'
+	[Y]=$'\xf0\x9d\x90\x98'
+	[Z]=$'\xf0\x9d\x90\x99'
+	[a]=$'\xf0\x9d\x90\x9a'
+	[b]=$'\xf0\x9d\x90\x9b'
+	[c]=$'\xf0\x9d\x90\x9c'
+	[d]=$'\xf0\x9d\x90\x9d'
+	[e]=$'\xf0\x9d\x90\x9e'
+	[f]=$'\xf0\x9d\x90\x9f'
+	[g]=$'\xf0\x9d\x90\xa0'
+	[h]=$'\xf0\x9d\x90\xa1'
+	[i]=$'\xf0\x9d\x90\xa2'
+	[j]=$'\xf0\x9d\x90\xa3'
+	[k]=$'\xf0\x9d\x90\xa4'
+	[l]=$'\xf0\x9d\x90\xa5'
+	[m]=$'\xf0\x9d\x90\xa6'
+	[n]=$'\xf0\x9d\x90\xa7'
+	[o]=$'\xf0\x9d\x90\xa8'
+	[p]=$'\xf0\x9d\x90\xa9'
+	[q]=$'\xf0\x9d\x90\xaa'
+	[r]=$'\xf0\x9d\x90\xab'
+	[s]=$'\xf0\x9d\x90\xac'
+	[t]=$'\xf0\x9d\x90\xad'
+	[u]=$'\xf0\x9d\x90\xae'
+	[v]=$'\xf0\x9d\x90\xaf'
+	[w]=$'\xf0\x9d\x90\xb0'
+	[x]=$'\xf0\x9d\x90\xb1'
+	[y]=$'\xf0\x9d\x90\xb2'
+	[z]=$'\xf0\x9d\x90\xb3'
+	[Α]=$'\xf0\x9d\x9a\xa8'
+	[Β]=$'\xf0\x9d\x9a\xa9'
+	[Γ]=$'\xf0\x9d\x9a\xaa'
+	[Δ]=$'\xf0\x9d\x9a\xab'
+	[Ε]=$'\xf0\x9d\x9a\xac'
+	[Ζ]=$'\xf0\x9d\x9a\xad'
+	[Η]=$'\xf0\x9d\x9a\xae'
+	[Θ]=$'\xf0\x9d\x9a\xaf'
+	[Ι]=$'\xf0\x9d\x9a\xb0'
+	[Κ]=$'\xf0\x9d\x9a\xb1'
+	[Λ]=$'\xf0\x9d\x9a\xb2'
+	[Μ]=$'\xf0\x9d\x9a\xb3'
+	[Ν]=$'\xf0\x9d\x9a\xb4'
+	[Ξ]=$'\xf0\x9d\x9a\xb5'
+	[Ο]=$'\xf0\x9d\x9a\xb6'
+	[Π]=$'\xf0\x9d\x9a\xb7'
+	[Ρ]=$'\xf0\x9d\x9a\xb8'
+	[Σ]=$'\xf0\x9d\x9a\xba'
+	[Τ]=$'\xf0\x9d\x9a\xbb'
+	[Υ]=$'\xf0\x9d\x9a\xbc'
+	[Φ]=$'\xf0\x9d\x9a\xbd'
+	[Χ]=$'\xf0\x9d\x9a\xbe'
+	[Ψ]=$'\xf0\x9d\x9a\xbf'
+	[Ω]=$'\xf0\x9d\x9b\x80'
+	[α]=$'\xf0\x9d\x9b\x82'
+	[β]=$'\xf0\x9d\x9b\x83'
+	[γ]=$'\xf0\x9d\x9b\x84'
+	[δ]=$'\xf0\x9d\x9b\x85'
+	[ε]=$'\xf0\x9d\x9b\x86'
+	[ζ]=$'\xf0\x9d\x9b\x87'
+	[η]=$'\xf0\x9d\x9b\x88'
+	[θ]=$'\xf0\x9d\x9b\x89'
+	[ι]=$'\xf0\x9d\x9b\x8a'
+	[κ]=$'\xf0\x9d\x9b\x8b'
+	[λ]=$'\xf0\x9d\x9b\x8c'
+	[μ]=$'\xf0\x9d\x9b\x8d'
+	[ν]=$'\xf0\x9d\x9b\x8e'
+	[ξ]=$'\xf0\x9d\x9b\x8f'
+	[ο]=$'\xf0\x9d\x9b\x90'
+	[π]=$'\xf0\x9d\x9b\x91'
+	[ρ]=$'\xf0\x9d\x9b\x92'
+	[ς]=$'\xf0\x9d\x9b\x93'
+	[σ]=$'\xf0\x9d\x9b\x94'
+	[τ]=$'\xf0\x9d\x9b\x95'
+	[υ]=$'\xf0\x9d\x9b\x96'
+	[φ]=$'\xf0\x9d\x9b\x97'
+	[χ]=$'\xf0\x9d\x9b\x98'
+	[ψ]=$'\xf0\x9d\x9b\x99'
+	[ω]=$'\xf0\x9d\x9b\x9a'
+#	[𝐴̱]=
+#	[𝐵̱]=
+#	[𝐶̱]=
+#	[𝐷̱]=
+#	[𝐸̱]=
+#	[𝐹̱]=
+#	[𝐺̱]=
+#	[𝐻̱]=
+#	[𝐼̱]=
+#	[𝐽̱]=
+#	[𝐾̱]=
+#	[𝐿̱]=
+#	[𝑀̱]=
+#	[𝑁̱]=
+#	[𝑂̱]=
+#	[𝑃̱]=
+#	[𝑄̱]=
+#	[𝑅̱]=
+#	[𝑆̱]=
+#	[𝑇̱]=
+#	[𝑈̱]=
+#	[𝑉̱]=
+#	[𝑊̱]=
+#	[𝑋̱]=
+#	[𝑌̱]=
+#	[𝑍̱]=
+#	[𝑎̱]=
+#	[𝑏̱]=
+#	[𝑐̱]=
+#	[𝑑̱]=
+#	[𝑒̱]=
+#	[𝑓̱]=
+#	[𝑔̱]=
+#	[𝘩̱]=
+#	[𝑖̱]=
+#	[𝑗̱]=
+#	[𝑘̱]=
+#	[𝑙̱]=
+#	[𝑚̱]=
+#	[𝑛̱]=
+#	[𝑜̱]=
+#	[𝑝̱]=
+#	[𝑞̱]=
+#	[𝑟̱]=
+#	[𝑠̱]=
+#	[𝑡̱]=
+#	[𝑢̱]=
+#	[𝑣̱]=
+#	[𝑤̱]=
+#	[𝑥̱]=
+#	[𝑦̱]=
+#	[𝑧]=
+	[𝟢]=$'\xf0\x9d\x9f\xac'
+	[𝟣]=$'\xf0\x9d\x9f\xad'
+	[𝟤]=$'\xf0\x9d\x9f\xae'
+	[𝟥]=$'\xf0\x9d\x9f\xaf'
+	[𝟦]=$'\xf0\x9d\x9f\xb0'
+	[𝟧]=$'\xf0\x9d\x9f\xb1'
+	[𝟨]=$'\xf0\x9d\x9f\xb2'
+	[𝟩]=$'\xf0\x9d\x9f\xb3'
+	[𝟪]=$'\xf0\x9d\x9f\xb4'
+	[𝟫]=$'\xf0\x9d\x9f\xb5'
+)
+
+declare -A italic=(
+	[A]=$'\xf0\x9d\x90\xb4'
+	[B]=$'\xf0\x9d\x90\xb5'
+	[C]=$'\xf0\x9d\x90\xb6'
+	[D]=$'\xf0\x9d\x90\xb7'
+	[E]=$'\xf0\x9d\x90\xb8'
+	[F]=$'\xf0\x9d\x90\xb9'
+	[G]=$'\xf0\x9d\x90\xba'
+	[H]=$'\xf0\x9d\x90\xbb'
+	[I]=$'\xf0\x9d\x90\xbc'
+	[J]=$'\xf0\x9d\x90\xbd'
+	[K]=$'\xf0\x9d\x90\xbe'
+	[L]=$'\xf0\x9d\x90\xbf'
+	[M]=$'\xf0\x9d\x91\x80'
+	[N]=$'\xf0\x9d\x91\x81'
+	[O]=$'\xf0\x9d\x91\x82'
+	[P]=$'\xf0\x9d\x91\x83'
+	[Q]=$'\xf0\x9d\x91\x84'
+	[R]=$'\xf0\x9d\x91\x85'
+	[S]=$'\xf0\x9d\x91\x86'
+	[T]=$'\xf0\x9d\x91\x87'
+	[U]=$'\xf0\x9d\x91\x88'
+	[V]=$'\xf0\x9d\x91\x89'
+	[W]=$'\xf0\x9d\x91\x8a'
+	[X]=$'\xf0\x9d\x91\x8b'
+	[Y]=$'\xf0\x9d\x91\x8c'
+	[Z]=$'\xf0\x9d\x91\x8d'
+	[a]=$'\xf0\x9d\x91\x8e'
+	[b]=$'\xf0\x9d\x91\x8f'
+	[c]=$'\xf0\x9d\x91\x90'
+	[d]=$'\xf0\x9d\x91\x91'
+	[e]=$'\xf0\x9d\x91\x92'
+	[f]=$'\xf0\x9d\x91\x93'
+	[g]=$'\xf0\x9d\x91\x94'
+	[h]=$'\xf0\x9d\x98\xa9' # Sans-serif, because f0 9d 91 95 is not assigned.
+	[i]=$'\xf0\x9d\x91\x96'
+	[j]=$'\xf0\x9d\x91\x97'
+	[k]=$'\xf0\x9d\x91\x98'
+	[l]=$'\xf0\x9d\x91\x99'
+	[m]=$'\xf0\x9d\x91\x9a'
+	[n]=$'\xf0\x9d\x91\x9b'
+	[o]=$'\xf0\x9d\x91\x9c'
+	[p]=$'\xf0\x9d\x91\x9d'
+	[q]=$'\xf0\x9d\x91\x9e'
+	[r]=$'\xf0\x9d\x91\x9f'
+	[s]=$'\xf0\x9d\x91\xa0'
+	[t]=$'\xf0\x9d\x91\xa1'
+	[u]=$'\xf0\x9d\x91\xa2'
+	[v]=$'\xf0\x9d\x91\xa3'
+	[w]=$'\xf0\x9d\x91\xa4'
+	[x]=$'\xf0\x9d\x91\xa5'
+	[y]=$'\xf0\x9d\x91\xa6'
+	[z]=$'\xf0\x9d\x91\xa7'
+	[Α]=$'\xf0\x9d\x9b\xa2'
+	[Β]=$'\xf0\x9d\x9b\xa3'
+	[Γ]=$'\xf0\x9d\x9b\xa4'
+	[Δ]=$'\xf0\x9d\x9b\xa5'
+	[Ε]=$'\xf0\x9d\x9b\xa6'
+	[Ζ]=$'\xf0\x9d\x9b\xa7'
+	[Η]=$'\xf0\x9d\x9b\xa8'
+	[Θ]=$'\xf0\x9d\x9b\xa9'
+	[Ι]=$'\xf0\x9d\x9b\xaa'
+	[Κ]=$'\xf0\x9d\x9b\xab'
+	[Λ]=$'\xf0\x9d\x9b\xac'
+	[Μ]=$'\xf0\x9d\x9b\xad'
+	[Ν]=$'\xf0\x9d\x9b\xae'
+	[Ξ]=$'\xf0\x9d\x9b\xaf'
+	[Ο]=$'\xf0\x9d\x9b\xb0'
+	[Π]=$'\xf0\x9d\x9b\xb1'
+	[Ρ]=$'\xf0\x9d\x9b\xb2'
+	[Σ]=$'\xf0\x9d\x9b\xb4'
+	[Τ]=$'\xf0\x9d\x9b\xb5'
+	[Υ]=$'\xf0\x9d\x9b\xb6'
+	[Φ]=$'\xf0\x9d\x9b\xb7'
+	[Χ]=$'\xf0\x9d\x9b\xb8'
+	[Ψ]=$'\xf0\x9d\x9b\xb9'
+	[Ω]=$'\xf0\x9d\x9b\xba'
+	[α]=$'\xf0\x9d\x9b\xbc'
+	[β]=$'\xf0\x9d\x9b\xbd'
+	[γ]=$'\xf0\x9d\x9b\xbe'
+	[δ]=$'\xf0\x9d\x9b\xbf'
+	[ε]=$'\xf0\x9d\x9c\x80'
+	[ζ]=$'\xf0\x9d\x9c\x81'
+	[η]=$'\xf0\x9d\x9c\x82'
+	[θ]=$'\xf0\x9d\x9c\x83'
+	[ι]=$'\xf0\x9d\x9c\x84'
+	[κ]=$'\xf0\x9d\x9c\x85'
+	[λ]=$'\xf0\x9d\x9c\x86'
+	[μ]=$'\xf0\x9d\x9c\x87'
+	[ν]=$'\xf0\x9d\x9c\x88'
+	[ξ]=$'\xf0\x9d\x9c\x89'
+	[ο]=$'\xf0\x9d\x9c\x8a'
+	[π]=$'\xf0\x9d\x9c\x8b'
+	[ρ]=$'\xf0\x9d\x9c\x8c'
+	[ς]=$'\xf0\x9d\x9c\x8d'
+	[σ]=$'\xf0\x9d\x9c\x8e'
+	[τ]=$'\xf0\x9d\x9c\x8f'
+	[υ]=$'\xf0\x9d\x9c\x90'
+	[φ]=$'\xf0\x9d\x9c\x91'
+	[χ]=$'\xf0\x9d\x9c\x92'
+	[ψ]=$'\xf0\x9d\x9c\x93'
+	[ω]=$'\xf0\x9d\x9c\x94'
+#	[𝐀̱]=
+#	[𝐁̱]=
+#	[𝐂̱]=
+#	[𝐃̱]=
+#	[𝐄̱]=
+#	[𝐅̱]=
+#	[𝐆̱]=
+#	[𝐇̱]=
+#	[𝐈̱]=
+#	[𝐉̱]=
+#	[𝐊̱]=
+#	[𝐋̱]=
+#	[𝐌̱]=
+#	[𝐍̱]=
+#	[𝐎̱]=
+#	[𝐏̱]=
+#	[𝐐̱]=
+#	[𝐑̱]=
+#	[𝐒̱]=
+#	[𝐓̱]=
+#	[𝐔̱]=
+#	[𝐕̱]=
+#	[𝐖̱]=
+#	[𝐗̱]=
+#	[𝐘̱]=
+#	[𝐙̱]=
+#	[𝐚̱]=
+#	[𝐛̱]=
+#	[𝐜̱]=
+#	[𝐝̱]=
+#	[𝐞̱]=
+#	[𝐟̱]=
+#	[𝐠̱]=
+#	[𝐡̱]=
+#	[𝐢̱]=
+#	[𝐣̱]=
+#	[𝐤̱]=
+#	[𝐥̱]=
+#	[𝐦̱]=
+#	[𝐧̱]=
+#	[𝐨̱]=
+#	[𝐩̱]=
+#	[𝐪̱]=
+#	[𝐫̱]=
+#	[𝐬̱]=
+#	[𝐭̱]=
+#	[𝐮̱]=
+#	[𝐯̱]=
+#	[𝐰̱]=
+#	[𝐱̱]=
+#	[𝐲̱]=
+#	[𝐳]=
+)
+
+# case $0 in embolden) italicise) script) fracture) double-strike) sans-serif) monospace) stretch) loop) mathise)
+
+while IFS= read -r line
+do for i in $(seq 0 $((${#line}-1)))
+	do
+		c1=${line:$i:1}
+		# if [[ ${bold[$c1]} ]]
+		if [[ $c1 =~ [0-9a-zA-Zα-ωΑ-Ω𝐴̱-𝑍̱𝑎̱-𝑧] ]]
+		then replacement+=${bold[$c1]}
+		else replacement+=$'\u0331'$c1
+		fi
+	done
+	echo "$replacement"
+done
-- 
cgit v1.2.3