A markdownlint rule that allows only extended ASCII characters
This rule for the Node.js markdownlint library (and its associated tools) allows only extended ASCII characters in Markdown content. Specifically, it reports violations for characters that are not part of the ISO/IEC 8859-1 character set (a.k.a. "ISO Latin 1", a.k.a. Unicode Basic Latin plus Latin-1 Supplement).
Informally, this extension limits Markdown content to just the printable character codes less than 256. In other words, the standard 8-bit "western" character set from the early days of computing. While this is too restrictive to be practical for many purposes, it is all that's needed for basic English text as found in most README files, documentation, source code, and so on.
This rule will not be interesting to some people because it blocks the use of emoji as well as characters commonly used across Asia. However, it meaningfully prevents the accidental use of so-called smart-quotes, inconsistent em-dashes, ambiguous full-width characters, and the like.
To restrict things further and limit Markdown content to just the printable
character codes less than 128 (i.e., plain ASCII), set the rule's
ascii-only
parameter to true
.
npm install markdownlint-rule-extended-ascii --save-dev
If using markdownlint-cli
:
markdownlint --rules markdownlint-rule-extended-ascii *.md
If using markdownlint-cli2
and a
.markdownlint-cli2.jsonc
configuration file:
{
"customRules": [
"markdownlint-rule-extended-ascii"
]
}
If using markdownlint-cli2
and a
.markdownlint-cli2.yaml
configuration file:
customRules:
- markdownlint-rule-extended-ascii
If using the markdownlint
extension for VS Code:
See the markdownlint-cli2
examples above or refer to the extension
documentation
If using a JSON markdownlint
configuration object
to set the ascii-only
parameter:
{
"extended-ascii": {
"ascii-only": true
},
"some-other-rule": false
}
If using YAML:
extended-ascii:
ascii-only: true
some-other-rule: false