1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-12-21 07:08:51 -05:00

Accept XEP-0457 as Active

Approving body is Editor because of the track.
This commit is contained in:
Jonas Schäfer 2021-03-31 17:50:09 +02:00
parent 54031a176f
commit 50d32f9151
2 changed files with 163 additions and 0 deletions

162
xep-0457.xml Normal file
View File

@ -0,0 +1,162 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE xep SYSTEM 'xep.dtd' [
<!ENTITY % ents SYSTEM 'xep.ent'>
%ents;
]>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep>
<header>
<title>Message Fancying</title>
<abstract>This specification defines a Unicode-formatted fancy text syntax for use in instant messages.</abstract>
&LEGALNOTICE;
<number>0457</number>
<status>Active</status>
<type>Humorous</type>
<sig>None</sig>
<approver>Editor</approver>
<dependencies>
<spec>XMPP Core</spec>
<spec>XMPP IM</spec>
</dependencies>
<supersedes>
<spec>XEP-0071</spec>
<spec>XEP-0393</spec>
<spec>XEP-0394</spec>
</supersedes>
<supersededby/>
<shortname>fancying</shortname>
<author>
<firstname>Georg</firstname>
<surname>Lukas</surname>
<email>georg@op-co.de</email>
<jid>georg@yax.im</jid>
</author>
<revision>
<version>1.0.0</version>
<date>2021-04-01</date>
<initials>XEP Editor (jsc)</initials>
<remark>Initial published version.</remark>
</revision>
<revision>
<version>0.0.1</version>
<date>2021-04-01</date>
<initials>gl</initials>
<remark><p>First draft.</p></remark>
</revision>
</header>
<section1 topic='Introduction' anchor='intro'>
<p>
XMPP-based Instant Messages has suffered from a lack of proper message
styling mechanisms. After abandoning &xep0071; for its horrible security
track record, &xep0393; and &xep0394; were proposed as replacements, but
neither was able to gain sufficient traction to become the default styling
mechanism.
</p>
<p>
This specification fills the gap by formally specifying the Unicode-based
formatting that is currently fancied on Social Media and micro-blogging as
an XMPP standard for Instant Messaging. As XMPP is based on UTF-8, messages
formatted with this mechanism are immediately visible on all receiving
clients. Simple third-party tools can be used for writing messages until
this specification is integrated into the IM message input boxes.
</p>
</section1>
<section1 topic='Requirements' anchor='reqs'>
<p>This specification relies on Unicode features introduced in the 3.1
specification. As XMPP implementations are required to support Unicode 3.2
for StringPrep during SASL authentication, no new requirements arise.</p>
</section1>
<section1 topic='Use Cases' anchor='usecases'>
<ul>
<li>
As a user sending an instant message to a friend, I want to be able to
emphasize an important part of my message.
</li>
<li>
As a software developer, I want to be able to send code as pre-formatted,
monospace, block or inline text to another developer.
</li>
<li>
As a user of non-Latin script, I want to be surprised by inconsistent
transitions and missing range checks resulting in characters from random
Unicode planes.
</li>
<li>
As a visually impaired user, I want my screen reader to emit long
sequences of technical names of Unicode special characters to really
convey the point of the intended emphasis, character by character!
</li>
<li>
As a multi-user chat user I want to add context to my reply by quoting an
earlier message in the chat.
</li>
</ul>
</section1>
<section1 topic='Business Rules' anchor='rules'>
<section2 topic='Preformatted Text' anchor='pre'>
<p>To format a string as Preformatted Text, the individual code-points need
to be converted to their integer representation, then increased by
<tt>0x1D62F</tt> (capital letters) or <tt>0x1D629</tt> (lowercase letters)
and then converted back to characters.</p>
<div class='example'>Preformatted text → 𝙿𝚛𝚎𝚏𝚘𝚛𝚖𝚊𝚝𝚝𝚎𝚍 𝚝𝚎𝚡𝚝</div>
</section2>
<section2 topic='Emphasis' anchor='emphasis'>
<p>To format a string with Emphasis, the individual code-points need
to be converted to their integer representation, then increased by
<tt>0x1D3F3</tt> (capital letters) or <tt>0x1D3ED</tt> (lowercase letters)
and then converted back to characters.</p>
<div class='example'>Emphasis → 𝐸𝑚𝑝ℎ𝑎𝑠𝑖𝑠</div>
</section2>
<section2 topic='Strong Emphasis' anchor='strong'>
<p>To format a string with Strong Emphasis, the individual code-points need
to be converted to their integer representation, then increased by
<tt>0x1D3BF</tt> (capital letters) or <tt>0x1D3B9</tt> (lowercase letters)
and then converted back to characters.</p>
<div class='example'>Strong Emphasis → 𝐒𝐭𝐫𝐨𝐧𝐠 𝐄𝐦𝐩𝐡𝐚𝐬𝐢𝐬</div>
</section2>
<section2 topic='Very Strong Emphasis' anchor='strong-emphasis'>
<p>To format a string with Very Very Strong Emphasis, the individual code-points need
to be converted to their integer representation, then increased by
<tt>0x1D427</tt> (capital letters) or <tt>0x1D421</tt> (lowercase letters)
and then converted back to characters.</p>
<div class='example'>Very Strong Emphasis → 𝑽𝒆𝒓𝒚 𝑺𝒕𝒓𝒐𝒏𝒈 𝑬𝒎𝒑𝒉𝒂𝒔𝒊𝒔</div>
</section2>
<section2 topic='Strike through' anchor='strike'>
<p>To format a string as struck through, each code-point needs to be
extended with a U-0336 COMBINING LONG STROKE OVERLAY postfix.</p>
<div class='example'>Strike through → S̶t̶r̶i̶k̶e̶ ̶t̶h̶r̶o̶u̶g̶h̶</div>
</section2>
</section1>
<section1 topic='Implementation Notes' anchor='impl'>
<p>Some clients will use a serif-less font instead of a serif font to display
instant messages, or even allow the user to choose an arbitrary font. The
formatting defined in this document assumes the use of serif fonts, however.
If a formatted text is to be displayed in a context that is not supposed to
render serifs, the displaying implementation MUST add <tt>0x1D4</tt> to the
respective integer representations of the fancy code-points.
</p>
<p>On the wire, the serif representation always MUST be used.</p>
<p>Determining whether a given display font is serif or sans-serif is out of
scope of this specification.</p>
</section1>
<section1 topic='Accessibility Considerations' anchor='access'>
<p>𝞜𝞸𝞰𝞮</p>
</section1>
<section1 topic='Internationalization Considerations' anchor='i18n'>
<p>🇳🇴🇳🇪</p>
</section1>
<section1 topic='Security Considerations' anchor='security'>
<p>The rendering of fonts is a complex task performed in the most inner guts
of the operating system. Over the last decades, various exploits have been
discovered in all major operating systems. Unfortunately, fixing those
issues is far beyond the abilities of a simple XMPP client.</p>
</section1>
<section1 topic='IANA Considerations' anchor='iana'>
<p>
This document requires no interaction with &IANA;.
</p>
</section1>
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
<p>None.</p>
</section1>
</xep>

View File

@ -1621,3 +1621,4 @@ IANA Service Location Protocol, Version 2 (SLPv2) Templates</link></span> <note>
<!ENTITY xep0454 "<span class='ref'><link url='https://xmpp.org/extensions/xep-0454.html'>OMEMO Media sharing (XEP-0454)</link></span> <note>XEP-0454: OMEMO Media sharing &lt;<link url='https://xmpp.org/extensions/xep-0454.html'>https://xmpp.org/extensions/xep-0454.html</link>&gt;.</note>" >
<!ENTITY xep0455 "<span class='ref'><link url='https://xmpp.org/extensions/xep-0455.html'>Service Outage Status (XEP-0455)</link></span> <note>XEP-0455: Service Outage Status &lt;<link url='https://xmpp.org/extensions/xep-0455.html'>https://xmpp.org/extensions/xep-0455.html</link>&gt;.</note>" >
<!ENTITY xep0456 "<span class='ref'><link url='https://xmpp.org/extensions/xep-0456.html'>Content Rating Labels (XEP-0456)</link></span> <note>XEP-0456: Content Rating Labels &lt;<link url='https://xmpp.org/extensions/xep-0456.html'>https://xmpp.org/extensions/xep-0456.html</link>&gt;.</note>" >
<!ENTITY xep0457 "<span class='ref'><link url='https://xmpp.org/extensions/xep-0457.html'>Message Fancying (XEP-0457)</link></span> <note>XEP-0457: Message Fancying &lt;<link url='https://xmpp.org/extensions/xep-0457.html'>https://xmpp.org/extensions/xep-0457.html</link>&gt;.</note>" >