Code:
program:
# windows filename aliases
windows_alias_000 = titlecase(uppercase(field('title')));
# less-than sign -> left arrowhead \u02c2
windows_alias_010 = re(windows_alias_000, "<", "˂" );
# greater-than sign -> right arrowhead \u02c3
windows_alias_020 = re(windows_alias_010, ">", "˃" );
# colon -> modifier colon \uA789
windows_alias_030 = re(windows_alias_020, ":", "꞉" );
# quote marks, -> single quote \u0027
windows_alias_040 = re(windows_alias_030, "(\"|‘|’|‚|‛|“|”|„|‟)", "'" );
# solidus, division slash, fraction slash -> big solidus \u29f8
windows_alias_050 = re(windows_alias_040, "(/|∕|⁄)", "⧸" );
# reverse solidus -> big reverse solidus \u29f9
windows_alias_060 = re(windows_alias_050, "\u005c", "⧹" );
# vertical line -> broken bar \u00a6
windows_alias_070 = re(windows_alias_060, "\|", "¦" );
# question mark -> Devanagan glottal stop \u097d
windows_alias_080 = re(windows_alias_070, "\?", "ॽ" );
# asterisk -> flower puncuation mark \u2055
windows_alias_090 = re(windows_alias_080, "\*", "⁕" );
# period, raised dot, two dot leader, one dot leader -> stenographic full stop \u2e3c
windows_alias_100 = re(windows_alias_090, "(\.|⸳|‥|․)", "⸼" );
# extra stuff
# change multiple stenographic full stops to -> elipsis \u2026
windows_alias_110 = re(windows_alias_100, "(⸼⸼⸼|⸼ ⸼ ⸼)", "…" );
# change versus
windows_alias_120 = re(windows_alias_110, "\bversus\b", "vs" );
windows_alias_130 = re(windows_alias_210, " vs: ", " vs " );
# change figure dash, en dash, em dash to -> hyphen-minus
windows_alias_140 = re(windows_alias_220, "(‒|–|—)", " - " );
windows_alias_150 = re(windows_alias_230, "--", "-" );
windows_alias_160 = re(windows_alias_240, "- - -", " - " );
# add space after 'modifier colon' or 'stenographic full stop'
windows_alias_200 = re(windows_alias_160, "(꞉|⸼\D)(\w)", "\1 \2" );
# remove extra spaces
windows_alias_900 = re(windows_alias_200, "( {2,})", " " );
windows_alias_910 = re(windows_alias_900, "^( )(.*)", "\2" );
windows_alias_920 = re(windows_alias_910, "(.*)( )$", "\1" );