mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-22 16:35:52 -05:00
Add styles
This commit is contained in:
parent
a928d11fb5
commit
399bdc0d91
82
xx.md
Normal file
82
xx.md
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
|
||||||
|
NIP-XX
|
||||||
|
======
|
||||||
|
|
||||||
|
Out-of-line Styles
|
||||||
|
------------------
|
||||||
|
|
||||||
|
`draft` `optional`
|
||||||
|
|
||||||
|
Out-of-line styles are text formatting data not inlined in the
|
||||||
|
event's `.content` field but placed into `st` (style) tags.
|
||||||
|
|
||||||
|
## Motivation
|
||||||
|
|
||||||
|
With markup languages such as Markdown, AsciiDoc and HTML, clients
|
||||||
|
would be required to add an ever growing number of parsers to
|
||||||
|
support textual event kinds.
|
||||||
|
|
||||||
|
If keeping `.content` field limited to plaintext,
|
||||||
|
clients can show text with no extraneous markup delimiter chars
|
||||||
|
that could impact readability.
|
||||||
|
|
||||||
|
When a client chooses to support formatting, it can
|
||||||
|
add parser code just once and it will work for all textual
|
||||||
|
events. If the parser in incomplete, there is not much
|
||||||
|
problem because the raw text inside `.content` is perfectly readable.
|
||||||
|
|
||||||
|
## Writing Text
|
||||||
|
|
||||||
|
A client should offer text formatting in any markup language,
|
||||||
|
for example, WYSIWYG powered by HTML, or Markdown editor.
|
||||||
|
However, before saving the event it should transform the resulting
|
||||||
|
text into an unformatted `.content` with added style tags.
|
||||||
|
|
||||||
|
## Style Tags
|
||||||
|
|
||||||
|
A style tag delimits an inclusive character range
|
||||||
|
and specifies a style to be applied using the following syntax:
|
||||||
|
`["st", "<starting-character-index>:<ending-character-index>", "<style-name>"]`
|
||||||
|
|
||||||
|
### Style Names
|
||||||
|
|
||||||
|
- `h<1-to-9>`: Header (h1) or subheader
|
||||||
|
- `strong`: Strong importance; should use heavier weight font.
|
||||||
|
- `em`: Emphasis; should use italic type.
|
||||||
|
- `small`: Small print, like copyright and legal text. Use smaller font-size.
|
||||||
|
- `strike`: Stricken text. Should remove leading and trailing `-`.
|
||||||
|
- `del`: Deleted text, such as after a git commit. Should remove leading `-` and spaces.
|
||||||
|
- `ins`: Inserted text, such as after a git commit. Should remove leading `+` and spaces.
|
||||||
|
- `sub`: Text should be displayed as subscript.
|
||||||
|
- `sup`: Text should be displayed as superscript.
|
||||||
|
- `mark` Text should be highlighted with a different background color.
|
||||||
|
- `quote`: Quoted text. Should remove leading and trailing `"`.
|
||||||
|
- `dsv` or `dsv:<delimiter-char-sequence>`: Delimiter separated value. The default delimiter is `|`.
|
||||||
|
Another delimiter that doesn't clash with the actual values may be choosed, e.g.: `dsv:#-#`. Values should be trimmed.
|
||||||
|
- `code` or `code:<lowercase-language-name-without-space>)`: Displays code, optionally in some language.
|
||||||
|
|
||||||
|
Styles may be combined, for instance, a `dsv`'s header may have its char range set to `h1`.
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
"tags": [
|
||||||
|
["st", "0:7", "h1"],
|
||||||
|
["st", "10:29", "h2"],
|
||||||
|
["st", "51:51", "h1"],
|
||||||
|
["st", "10:71", "dsv"]
|
||||||
|
],
|
||||||
|
"content": "My Title
|
||||||
|
|
||||||
|
| B | C
|
||||||
|
D | Item B1 | Item C1
|
||||||
|
E | Item B2 | Item C2
|
||||||
|
|
||||||
|
• Bullet points don't need style tags
|
||||||
|
• I simply used spaces to ident these
|
||||||
|
1) Here too
|
||||||
|
1.1) Example"
|
||||||
|
// other fields
|
||||||
|
}
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user