From Newsgroup: news.software.readers
Herbert Kleebauer wrote:
There shouldn't be any problem when you copy text from a web page and
past it into an usnet posting. There is only a problem if you
convert the utf-8 text into "something else" and then paste it
into the posting. You don't solve a problem, you create a problem.
Hi Herbert,
Thank you for asking a question to understand why the conversion is needed. You've helped me many times over the decades, and you deserve the answer.
In the past, Carlos, Andy & others have noted my nntp headers have a
character set defined (or not) that doesn't always match the character set.
That's because I don't use a "real" newsreader.
I wrote a unique simple newsreader (which is just a bunch of batch scripts with telnet, stunnel & gVim predominating) but which has no good way of knowing what character set I'm pasting into my gVim NNTP editing sessions.
Worse, I can spend hours on a Usenet post, where I can combine input from dozens or even scores of web page sources, so character sets will mix.
So I try to automagically force every character in the final gVim edit to
be only 7-bit pure-ASCII characters (using a Notepad++ control-B macro).
1. I select text in Chromium & press "ctrl+c" to copy to clipboard
2. I type "n" in the taskbar Windows "Win+R" runbox to bring up Notepad++
3. I type "ctrl+v" to paste that HTML text into that Notepad++ session
4. I type "ctrl+b" to run the conversion to ASCII & clean the clipboard
5. I type "ctrl+v" to paste that clipbrd into my gVim editing session
This is extremely simple.
Yet very complicated.
It's brilliant, IMHO, but most people likely won't understand that concept.
But some people *do* understand that the Windows clpbrd is rather messy.
And some people might *appreciate* that I clean everything to 7-bit ASCII.
While many people waste about five seconds per Usenet post, I can invest hours, where I collate input from a huge variety of sources, and, as it
turns out, when copying from many sources, CF_HTML metadata fragments can corrupt the text in ways that most people have absolutely no idea of.
Newsgroups: alt.comp.software.firefox,comp.sys.mac.system,alt.os.linux
Subject: PSA: Clipboard differences between Chromium & Firefox across platforms
Date: Thu, 12 Feb 2026 15:26:32 -0500
Message-ID: <10mld1o$1910$
1@nnrp.usenet.blueworldhosting.com>
I need to stress that out of a million people, only two or three know what
is in that thread I listed above, so I understand that most people wouldn't have any idea that the Linux/macOS/Windows clipboard is so complicated.
It's simple.
But it is complicated too.
A clipboard copied from a browser contains a lot of "garbage".
Only some of that garbage is visible, but much of it is invisible.
The updated notepad++ macro below converts all that invisible/visible
garbage into the ~95 7-bit pure ASCII characters found on my keyboard.
<?xml version="1.0" encoding="UTF-8" ?>
<!-- C:\app\editor\txt\N++\shortcuts.xml for Windows Notepad++ (N++) -->
<!-- Automatically cleans fragments, converts to ASCII & copies to clipbrd --> <!-- Use model: Control+V (paste) & Control+B (run the macro) -->
<!-- Notepad++ does not treat shortcuts.xml as a user-editable file. -->
<!-- It treats it as an internal state file. -->
<!-- If you hand-edit it, Notepad++ will rewrite it, reorder it, -->
<!-- truncate it, or revert it to whatever it feels like doing. -->
<!-- Which means you need to always save a text copy of every version -->
<!-- v4p6 20260311 fix the problem that it doesn't always work -->
<!-- Scintilla may preserve CF_HTML metadata even after cutting -->
<!-- Force the clipboard to contain plain text by doing a 2x copy --> <!-- Copy cleaned text, Insert dummy char, Delete dummy char -->
<!-- Select all, Copy again -->
<!-- So clipboard contains only the 2nd copy, which is always text-->
<!-- Fixed inaccuracies in the Scintilla-command comment section -->
<!-- Also fixed two Tangsa blocks U+16C00 and U+16C20 which did nothing prior -->
<!-- v4p5 20260311 fix the problem that a space is deleted -->
<!-- But Scintilla 2326 had deleted the character before the caret --> <!-- So, instead of Insert space, Delete space before the caret -->
<!-- Insert a newline, Move caret left, Delete the newline -->
<!-- v4p4 Replace U+FFFD (REPLACEMENT CHARACTER) with nothing & collapse--> <!-- Merged letters around U+00A1 (inverted exclamation mark) -->
<!-- v4p3 Replace U+FF1A (FULLWIDTH COLON) with ASCII ':' -->
<!-- v4p2 Replace U+00D7 (MULTIPLICATION SIGN) with ASCII 'x' -->
<!-- v4p1 20260213 Convert Tangsa UTF-8 (F4 86 B0 80) to a placeholder -->
<!-- v4p0 (Scintilla changes this file so always save a text backup! -->
<!-- v3p9 20260211 N++ was not running the macro in the order shown -->
<!-- But it turned out any error causes an OLDER version to run. -->
<!-- Worse, when that happens, N++ overwrites this file -->
<!-- Worse, N++ is executing macro actions in a different order -->
<!-- than they appear in the XML so a total rewrite is needed in v4p0 -->
<!-- v3p8 20260211 U+2060 is driving me nuts so it's the first block now --> <!-- v3p7 20260211 moved U+2060 up because it's the most disruptive -->
<!-- v3p6 20260211 U+2009 & U+200B not being converted properly -->
<!-- v3p5 20260211 fixed U+200B failing when U+200B is between ' & s -->
<!-- A 2nd pass was duplicated after apostrophe normalization rules --> <!-- v3p4 20260211 added U+275E (heavy double quote right) -->
<!-- v3p3 20260211 added U+2009 (thin space) -->
<!-- v3p2 20260211 added seven new conversions after running testcases -->
<!-- U+02BE (modifier letter right half ring) -->
<!-- U+02BF (modifier letter left half ring) -->
<!-- U+201E (double low-9 quote) -->
<!-- U+201F (double high-reversed-9 quote) -->
<!-- U+275D (heavy double quote left) -->
<!-- U+275E (heavy double quote right) -->
<!-- U+2015 (horizontal bar) -->
<!-- U+2009 (thin space) -->
<!-- v3p1 20260211 reorganized into a dozen distinct categories -->
<!-- (1) control characters: U+000F U+0001 -->
<!-- (2) dashes & minus signs: U+2010 U+2011 U+2012 U+2212 -->
<!-- (3) zero-width characters: U+200C U+200B U+200D U+FEFF U+2060 -->
<!-- (4) special spaces: U+00A0 U+2007 U+202F U+200A U+2008 U+2006 -->
<!-- (5) apostrophe-like characters:
U+0F0C U+2018 U+2019 U+2032 U+02BC U+02B9 U+02C8 U+02EE
U+201B U+02CB U+A78C U+FF07 -->
<!-- (6) combining marks (remove after apostrophes):
U+0351 U+0307 U+0331 U+0335 U+0336 U+0337 U+0338 -->
<!-- (7) double-quote normalization: U+201C U+201D -->
<!-- (8) dash-like & ellipsis & HTML entities:
U+2026 - U+2014 U+2013 - -->
<!-- (9) bullets, math symbols, diacritics:
U+2022 U+8722 U+011F U+2009 U+00E1 U+0161 U+011B -->
<!-- (10) miscellaneous symbols:
U+2713 ASCII hyphen ' U+2192 U+00B0 U+00A9 U+2122 U+00AE -->
<!-- (11) invisible operators:
U+00AD U+2061 U+2062 U+2063 U+2064 U+180E -->
<!-- (12) line separators: U+2028 U+2029 U+0085 -->
<!-- v3p0 20260211 added combining marks U+0351 U+0307 U+0331 -->
<!-- v3p1 20260211 added apostrophe-like characters U+201B U+02CB -->
<!-- v2p9 20260211 moved U+2060 to be above apostrophe-related blocks -->
<!-- v2p8 20260211 fixed Chromium CF_HTML paste control+A anomaly -->
<!-- v2p7 20260211 added U+02EE modifier letter double apostrophe rule -->
<!-- v2p6 20260211 fixed U+02C8 modifier letter vertical line) rule -->
<!-- v2p5 20260211 fixed U+02B9 (modifier letter prime) rule -->
<!-- v2p4 20260211 removed one of two U+000F blocks -->
<!-- v2p3 20260211 removed two (duplicate) 1700 lines in U+0161 -->
<!-- v2p2 20260211 fixed all zero-width blocks to replace with nothing -->
<!-- v2p1 20260211 fixed BOM to replace with nothing -->
<!-- v2p0 20260210 cleaned (emptied out) closing sections of the file -->
<!-- v1p9 20260210 ported old shortcuts.xml to improve coverage -->
<!-- Cleans Chromium pasted text & normalizes Unicode to ASCII -->
<!-- Use model: paste (using control+v) & fix (using control+b) -->
<!-- The macro should 1st break CF_HTML fragment mode (so Ctrl+A works) --> <!-- and then run the Unicode-to-ASCII cleanup on all the pasted text -->
<!-- cutting (control+x) the result back into the Windows clipboard -->
<!-- thereby leaving the N++ GUI empty & ready for the next paste-->
<!--
To break Scintilla's CF_HTML fragment mode, we need to make any edit.
We can insert a space & then delete that space, for example.
<Action type="0" message="2001" wParam="32" /> (insert a space)
<Action type="0" message="2326" /> (delete a char to the left)
But that is dependent on the position of the cursor, which changes!
So, in v4p4, instead of Insert space, Delete space before the caret
Insert a newline, Move caret left, Delete the newline
<!-- Scintilla message-id engine command meanings:
1601 = set the search string (the Unicode character to find)
1602 = set the replacement string (ASCII equivalent)
1625 = clear the replacement buffer
1700 = begin a new search/replace operation
1701 = end this search/replace block
1702 = execute Replace All
2001 = Replace the current selection with the given text
2013 = SCI_SELECTALL (selects everything)
2177 = SCI_CUT (cut all)
2304 = Move caret one character to the left
2326 = SCI_DELETEBACK (delete the character to the left of the caret)
2327 = Delete the character to the right of the caret
41001 = IDM_FILE_EXIT (close)
<!-- When you paste from a Chromium-based app, the clipboard contains:
CF_UNICODETEXT (plain text) & CF_HTML (HTML fragment)
And sometimes CF_RTF where N++ prefers CF_HTML if available.
v2p0 fixes a N++ selection issue caused by CF_HTML pastes.
"HTML Paste Mode" prevents the "Control+A" from working.
"HTML paste mode" inserts HTML fragment as plain text
where Ctrl+A is disabled until the buffer is "normalized"
(until the first edit that breaks the fragment state)
<!-- BELOW IS THE START OF THE NOTEPAD++ SHORTCUTS.XML FILE -->
<!-- Below is garbage that N++ adds to shortcuts.xml -->
<NotepadPlus>
<InternalCommands>
<Shortcut id="43009" Ctrl="no" Alt="no" Shift="no" Key="0" />
</InternalCommands>
<Macros>
<!-- Above is garbage that N++ adds to shortcuts.xml -->
<!-- ASCII "control+b" Cleanup Macro -->
<Macro name="ASCII" Ctrl="yes" Alt="no" Shift="no" Key="66">
<!-- Begin Scintilla HTML-paste workaround top portion -->
<!-- Break Chromium CF_HTML fragment mode by adding & deleting a line -->
<!-- Insert newline -->
<Action type="0" message="2001" wParam="10" lParam="0" sParam="" />
<!-- Move caret left -->
<Action type="0" message="2304" wParam="0" lParam="0" sParam="" />
<!-- Delete character to the right -->
<Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
<!-- Select all text before running cleanup -->
<Action type="0" message="2013" wParam="0" lParam="0" sParam="" />
<!-- End Scintilla HTML-paste workaround top portion -->
<!-- BEGIN STANDARD CONVERSION BLOCKS -->
<!-- U+2060 is driving me nuts so I'm making it the 1st block -->
<!-- U+2060 must be placed above the apostrophe-related blocks -->
<!-- Otherwise apostrophe block may skip over it -->
<!-- U+2060 is disruptive as it must be placed above zero-width too -->
<!-- Replace U+2060 (WORD JOINER) with nothing -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="⁠" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #1. CONTROL CHARACTERS (remove first) -->
<!-- Replace U+000F (SHIFT-OUT control character) with nothing -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+0001 (SOH control character) with nothing -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #2. DASHES & MINUS SIGNS (safest to remove early) -->
<!-- Replace U+2010 (HYPHEN) with ASCII "-" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="‐" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2011 (NON-BREAKING HYPHEN) with ASCII hyphen "-" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="‑" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2012 (FIGURE DASH) with ASCII "-" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="‒" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2212 (MINUS SIGN) with ASCII "-" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="−" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #3. ZERO-WIDTH CHARACTERS (must be BEFORE apostrophes) -->
<!-- Replace U+200C (ZERO WIDTH NON-JOINER) with "" (nothing) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="‌" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+200B (ZERO WIDTH SPACE) with nothing -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="​" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+200D (ZERO WIDTH JOINER) with nothing -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="‍" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+FEFF (BOM) with nothing -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #4. SPECIAL SPACES (convert to ASCII space) -->
<!-- Replace U+00A0 (NO-BREAK SPACE) with ASCII space -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam=" " /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2007 (FIGURE SPACE) with ASCII space -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam=" " /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+202F (NARROW NO-BREAK SPACE) with ASCII space -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam=" " /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+200A (HAIR SPACE) with ASCII space -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam=" " /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2008 (PUNCTUATION SPACE) with ASCII space -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam=" " /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2006 (SIX-PER-EM SPACE) with ASCII space -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam=" " /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #5. APOSTROPHE-LIKE CHARACTERS -->
<!-- Replace U+0F0C (TIBETAN MARK DELIMITER) with ASCII apostrophe "'" --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="༌" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2018 (LEFT SINGLE QUOTE) with ASCII apostrophe "'" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="‘" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2019 (RIGHT SINGLE QUOTATION) with ASCII apostrophe "'" --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="’" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2032 (PRIME) with ASCII apostrophe -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="′" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+02BC (MODIFIER LETTER APOSTROPHE) with ASCII apostrophe --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="ʼ" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+02B9 (MODIFIER LETTER PRIME) with ASCII apostrophe "'" --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="ʹ" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+02C8 (MODIFIER LETTER VERTICAL) with ASCII apostrophe "'" --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="ˈ" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+02EE (MODIFIER DOUBLE APOSTROPHE) with ASCII apostrophe "'" --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="ˮ" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- U+201B (SINGLE HIGH-REVERSED-9 QUOTATION MARK) with apostrophe "'" --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="‛" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+02CB (MODIFIER LETTER GRAVE ACCENT) with ASCII apostrophe "'" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="ˋ" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- This is is a duplication which is after the apostrophes -->
<!-- When U+200B appears between two characters that were already replaced --> <!-- the first pass fails to remove it, so I added this duplicate -->
<!-- Remove U+200B (ZERO-WIDTH SPACE) second pass -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="​" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #6. COMBINING MARKS (remove only after apostrophes are done) -->
<!-- Remove U+0351 (COMBINING RIGHT HALF RING ABOVE) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="͑" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Remove U+0307 (COMBINING DOT ABOVE) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="̇" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Remove U+0331 (COMBINING MACRON BELOW) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="̱" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #7. DOUBLE-QUOTE NORMALIZATION -->
<!-- Replace U+201C (LEFT DOUBLE QUOTE) with ASCII double quote " -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="“" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam='"' /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+201D (RIGHT DOUBLE QUOTE) with ASCII double quote -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="”" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam='"' /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #8. ELLIPSIS, EM DASH, EN DASH, HTML ENTITIES -->
<!-- Replace U+2026 (HORIZONTAL ELLIPSIS) with ASCII "..." -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="…" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="..." />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace literal - (HTML entity for EM DASH) with ASCII "-" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="&#151;" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2014 (EM DASH) with ASCII "-" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="—" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2013 (EN DASH) with ASCII "-" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="–" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace literal - (ZERO WIDTH NON-JOINER entity) with ASCII "-" --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #9. BULLETS, MATH SYMBOLS, LETTERS WITH DIACRITICS -->
<!-- Replace U+2022 (BULLET) with ASCII "*" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="•" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="*" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+8722 (MATHEMATICAL MINUS variant) with ASCII "&" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="蜢" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="&" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+011F (LATIN SMALL G WITH BREVE) with ASCII "g" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="ğ" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="g" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+00E1 (LATIN SMALL A WITH ACUTE) with ASCII "a" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="á" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="a" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+0161 (LATIN SMALL S WITH CARON) with ASCII "s" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="š" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="s" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+011B (LATIN SMALL E WITH CARON) with ASCII "e" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="ě" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="e" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #10. MISCELLANEOUS SYMBOLS -->
<!-- Replace U+2713 (CHECK MARK) with ASCII space -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="✓" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace ASCII hyphen "-" with ASCII hyphen "-" (normalize) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace backtick with ASCII single quote -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="'" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace Unicode Arrow (U+2192) with ASCII dash greaterthan -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="→" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="->" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace degree symbol with deg -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="°" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="deg" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace copyright symbol U??? with (C) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="©" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="(C)" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace Trademark (U+2122) with (TM) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="™" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="(TM)" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace Registered (U+00AE) with (R) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="®" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="(R)" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #11. INVISIBLE OPERATORS (remove) -->
<!-- Replace U+00AD (SOFT HYPHEN) with "" (remove completely) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="­" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2061 (FUNCTION APPLICATION) with "" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="⁡" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2062 (INVISIBLE TIMES) with "" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="⁢" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2063 (INVISIBLE SEPARATOR) with "" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="⁣" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2064 (INVISIBLE PLUS) with "" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="⁤" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+180E (MONGOLIAN VOWEL SEPARATOR) with "" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="᠎" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- #12. LINE SEPARATORS -->
<!-- Replace U+2028 (LINE SEPARATOR) with ASCII newline -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="
" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2029 (PARAGRAPH SEPARATOR) with ASCII newline -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="
" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+0085 (NEXT LINE / NEL) with ASCII newline -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="…" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+A78C (LATIN SMALL LETTER SALTILLO) with ASCII apostrophe "'" --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="ꞌ" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+FF07 (FULLWIDTH APOSTROPHE) with ASCII apostrophe "'" --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Remove U+0335 (COMBINING SHORT STROKE OVERLAY) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="̵" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Remove U+0336 (COMBINING LONG STROKE OVERLAY) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="̶" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Remove U+0337 (COMBINING SHORT SOLIDUS OVERLAY) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="̷" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Remove U+0338 (COMBINING LONG SOLIDUS OVERLAY) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="̸" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2043 (HYPHEN BULLET) with ASCII "-" -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="⁃" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+02BE (MODIFIER LETTER RIGHT HALF RING) w/ ASCII apostrophe --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="ʾ" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+02BF (MODIFIER LETTER LEFT HALF RING) w/ ASCII apostrophe --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="ʿ" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="'" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+201E (DOUBLE LOW-9 QUOTATION MARK) w/ ASCII double quote --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="„" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=""" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+201F (DOUBLE HIGH-REVERSED-9 QUOTATION MARK) w/ dquote --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="‟" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=""" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+275D (HEAVY DOUBLE QUOTATION MARK ORNAMENT LEFT) w/ dquote --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="❝" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=""" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+275E (HEAVY DOUBLE QUOTATION MARK ORNAMENT RIGHT) w/ dquote --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="❞" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=""" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2015 (HORIZONTAL BAR) with ASCII hyphen -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="―" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2009 (THIN SPACE) with ASCII space -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam=" " /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+2009 (THIN SPACE) with ASCII space -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam=" " /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+00D7 (MULTIPLICATION SIGN) with ASCII 'x' -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="×" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="x" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+FF1A (FULLWIDTH COLON) with ASCII ':' -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam=":" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam=":" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- END OF STANDARD CONVERSION BLOCKS -->
<!-- v4p1 Convert Tangsa UTF-8 (F4 86 B0 80) to a harmless placeholder -->
<!-- Replace U+16C00 (Tangsa Letter OZ) with placeholder -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="𖰀" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="[[NW]]" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+16C20 (mutated Tangsa) with placeholder -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="𖰠" /> <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="[[NW]]" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Replace U+FFFD (REPLACEMENT CHARACTER) with nothing -->
<!--
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="�" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Merge letters around U+FFFD (fix broken ligatures by collapsing) --> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="([A-Za-z])�([A-Za-z])" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="\1\2" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Merge letters around U+00A1 (inverted exclamation mark) -->
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="([A-Za-z])¡\s*([A-Za-z])" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="\1\2" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<!-- Begin Scintilla HTML-paste workaround bottom portion -->
<!-- First copy -->
<Action type="0" message="2178" />
<!-- Insert dummy space -->
<Action type="0" message="2001" wParam="32" />
<!-- Move caret left -->
<Action type="0" message="2304" />
<!-- Delete dummy space safely -->
<Action type="0" message="2327" />
<!-- Select all again -->
<Action type="0" message="2013" />
<!-- Second copy (guaranteed plain text) -->
<Action type="0" message="2178" />
<!-- Cut to empty editor -->
<Action type="0" message="2177" />
<!-- End Scintilla HTML-paste workaround bottom portion -->
<!-- Close N++ -->
<Action type="2" message="41001" wParam="0" lParam="0" sParam="" />
<!-- N++ will save shortcuts.xml automatically as it
rewrites the file whenever shortcuts/macros/plugins change.
Some sections are required so empty sections will be recreated.
</Macro>
</Macros>
<UserDefinedCommands>
</UserDefinedCommands>
<PluginCommands />
<ScintillaKeys />
</NotepadPlus>
<!-- ABOVE IS THE MEAT OF THE NOTEPAD++ SHORTCUTS.XML FILE -->
--
There are two kinds of people on Usenet, only one of which can add value.
--- Synchronet 3.21d-Linux NewsLink 1.2