Unicode包含各种字符,这些字符看起来像是基本拉丁字母的印刷风格化变体,并且允许人们以相应的印刷风格书写文本,而无需诉诸标记或类似标记。例如,可以模拟:



小帽子:


ᴛʜɪᴛʜꜱɪʟyᴛᴇxᴛ。



脚本:


𝓑𝓮𝓱𝓸𝓵𝓭𝓽𝓱𝓲𝓼<。




黑体字:


<。



这引起了Stack Exchange的兴趣(例如,这里,这里和这里)和批评这样的技术。但是,当我使用它们时会出错吗?

评论

我正在通过手机阅读,却看不到最后两个花哨的文字。

因为在某些设备上不可读,所以:i.stack.imgur.com/kM73J.png

由于我们中有些人希望以我们认为可读的字体(以及大小,颜色和&c)来查看网页,因此我们使用例如用户CSS样式表以覆盖作者样式。您可能会注意到,即使您的三个示例显示在我的设备上,显然就像您希望它们出现在我的设备上一样,对我来说,它们仍然是边界可读的。为什么您将艺术的渴望放在读者的阅读便利之上?

这是一个有趣的观察结果:Edge在后两个示例中找不到文本,而Chrome在前一个示例中找不到文本。 (尝试在两个浏览器中同时按Ctrl + F键选择BEHOLD。)尚未检查Firefox。

@Schism Firefox没有找到它们。看起来Chrome可能在搜索之前使用了NFKC / NFKD规范化功能,从而将脚本和blackletter文本分解为Basic Latin。 Firefox似乎没有这样做。 Edge ...正在做一些奇怪的事情。

#1 楼

常规

这些字符不是用于常规的拉丁字母文本,而是用于语音,西里尔字母文本,用作数学符号(表示变量)或类似字符。使用基本拉丁字母编码文本的唯一符合Unicode的方式是使用主要用于此目的的字符(例如,来自基本拉丁Unicode块)。

和许多其他标准一样,对于违反Unicode应该三思。而且,Unicode包含了众多的写作系统,用例以及为与其他标准向后兼容而存在的东西,而充分理解其所有动机本身就是一门科学。长话短说,除非您真的真的知道自己在做什么,否则很有可能发生您根本没有想到的故障。

特定示例

可访问性

编码文本不仅存在以某种字体呈现。还可以例如由屏幕阅读器来解释。屏幕阅读器无需猜测
是变量的定冠词还是数学乘积𝓽是
,𝓱和𝓮–这是这些字符的用途。因此,最好的行为是拼出这些字符,例如字面意思如下:


粗体小写t,粗体小写h,粗体小写e


它不应该只说“ ”,因为那样会无法正确读取其符号恰好构成一个发音单词的数学文本。3

便携性

如果您的文字可以在计算机上很好地呈现,这并不意味着它也将出现在读者的电脑上。最明显的例子是阅读器没有支持这些字符的字体,或者文本是由不支持后备字体的软件渲染的。诚然,这变得越来越不常见了。请记住,尽管有些人(例如阅读障碍者)需要特殊的字体,这些字体不太可能支持这些字符。

但是,即使读者的机器仅使用其他字体,也可能使文本的可读性大大降低。对于第一个示例,这是用两种不同的字体呈现的:



Free Serif呈现文本,因为您可能希望使用特殊字符来呈现文本。模拟文本,即模拟连续笔触的笔迹。但是,这些字符被用作数学符号,没有意义的连接。因此,专门为数学目的而设计的STIX呈现方式与这些字符的使用方式更加吻合。

在第二个示例中,假设您或读者的斜体字“сᴜтмy由于某种原因。有了一个好的字体,您将得到4:



原因是小写字母(部分)用西里尔字母模拟,而西里尔斜体有时看起来很与直立的人不同。再次,这是正确的行为。

可搜索性

作为第一个示例,请考虑对字符ma(数学脚本W)进行合理搜索的方法。假定搜索有两种模式,默认模式和精确模式(通常称为区分大小写)。该字符应为:


在默认模式下搜索w或W时找到–对于那些不想打扰将特殊字符输入或复制粘贴到搜索字段中的人;
在精确模式下搜索–时发现–对于那些想搜索数学文档中提到相应变量的地方的人³;
由于破坏相似的搜索而在精确模式下搜索𝓌,w或W时找不到

但是,如果您使用此字符模拟常规文本,则在以完全模式搜索W或should时应找到该字符,这与上面的内容相冲突。

作为第二个示例,请考虑在搜索拉丁字符时切勿找到西里尔字母,反之亦然,因为它们完全不同。但是,如果不希望破坏可搜索性,则如果使用西里尔字母模拟拉丁字母小写,则需要执行此操作。如果人们搜索一个稀有的拉丁字母单词,恰好与某个流行的西里尔字母单词的假小写字母相对应,这会导致人们发现很多无用的东西(反之亦然)。

精确的搜索选项无法解决此问题,因为在这些字母中这是为其他目的保留的。

通常,无法构建一个搜索(没有大量的选项)不会因使用特殊字符来模拟样式化的拉丁文本而损坏。


1您知道XKCD关于统一标准的必然失败吗?好吧,Unicode成功了。2或相关约定中的空运算符3我知道当今很少有数学文本支持这种编码或与其兼容的编码,但关键是希望它们有朝一日能做到。滥用Unicode的文本可能仍然存在,然后阅读。4除非您要本地化为马其顿语或塞尔维亚语,否则您会得到不同但仍然不理想的结果。

评论


评论不作进一步讨论;此对话已移至聊天。

–游侠怪胎♦
16 Dec 30'3 3:00

那第三个例子呢?为什么黑字文本甚至只以某种字体存在于Unicode中?

–posfan12
16 Dec 30'23:20



@ posfan12:它用作独特的数学字母,例如脚本字符。 (请注意,此处的示例编号与问题中的项目符号无关。)

– Wrzlprmft
16 Dec 30'23:55



您的小cpas示例提出了一个难题/竞争:找到一个有效的句子,当它变成斜体时会变成一个不同的句子……(例如,这两种语言都是基于拉丁文的读者所解释的)

–哈根·冯·埃森(Hagen von Eitzen)
16年12月31日在12:50

#2 楼

有什么问题吗?好吧,我看到了:



在Windows 7的Firefox 50.1.0中。

缺少字形的问题,在这种情况下用户克里斯·肯特(Chris Kent)在评论中提供的图片中进一步说明了移动设备,我对图片进行了裁剪和调整:



用户友善贡献了另一个示例:



评论


我? i.stack.imgur.com/lWRAa.png

– oals
16 Dec 27 '16:49

@Lilienthal我对您必须走了多少年而不检查或安装更新印象深刻。我的意思是,我仍在某些设备上使用基于Firefox 3.5的功能,但是我没有选择的余地(设备太好了,但是没有可用的较新的浏览器)

–mtraceur
16年12月29日在6:38

@Lilienthal在2020年的某个时候,Firefox主版本号可能需要64位数字。之后不久,版本号将比实际程序占用更多空间。为了重新获得市场份额,Chrome版本号需要整个星球来存储。

–安德鲁·莫顿(Andrew Morton)
16年12月29日在17:15

你们不知道您使用这种古老的浏览器会暴露给自己多少已知的和活动的安全漏洞?

–扎克·利普顿(Zach Lipton)
16-12-31 at 17:43

@Zach Lipton:您是否知道我的优先事项排在首位? #1具有我可以实际使用的功能。尽管也许Firefox人们(以及许多其他人)已经接受了一个新的范例:通过不可用性实现安全性。

–jamesqf
16 Dec 31 '18:36

#3 楼

我对此有XY问题。



这里,我们看到Y和X看起来比文本的其余部分要小。在某些缩放级别下,它们看起来是相同的大小,但这似乎暴露了这种特定字体中这些特定字形的问题。

评论


对于您所看到的内容,我可以提供三种可能的解释:1)错误的提示。 2)除x和y外,所有字体均使用后备字体。 3)不良的字体设计:小写字母的大小设计成比小写字母稍大(这是一个不错的选择),然后用于拼音和西里尔Unicode字符–这不是一个好选择,因为例如在拼音使用中,这些字符必须与基本的拉丁字符保持一致。 —无论哪种方式:点1)和3)都不是由于Unicode滥用引起的。点2)在其他答案中已经解决。

– Wrzlprmft
16 Dec 26 '19:57

@Wrzlprmft:根据定义,它们是Unicode滥用,因为Unicode没有大写字母。 unicode确实具有在拼音字母块和Latin Extended-D块中看起来像小写字母的字母。具体来说,两个语音块和拉丁扩展D块都不包含看起来像小写字母X的字母,因此我的猜测是X来自其他地方,可能是西里尔字母。差异不是由1、2或3引起的。这是由属于另一个字母的字母引起的。

–slebetman
16 Dec 27'4:08

@slebetman:小写字母x只是普通的小写字母x(您可以复制问题中的字符并亲自检查)。小写的x必须与语音字符保持一致,因为它也用作语音字符。它也应该具有与西里尔字母的小写字符相同的高度,因为您不希望单个西里尔字母的单词在拉丁文字中脱颖而出(反之亦然)。

– Wrzlprmft
16 Dec 27'8:39

针对“ XY问题”大声笑:)

–安德鲁·莫顿(Andrew Morton)
16 Dec 27 '18:41

#4 楼

使用看起来有点像拉丁字符的非拉丁字符会使您成为垃圾邮件制造者,色情贩子和谁知道它们将要成为谁的反汇编程序的陪伴者,这些反汇编者希望其文本不可搜索,不可索引且可斥责。 (“我从未说过这是安全的!我说这是sigma-alpha-integral-sign-epislon !!!不能起诉我!!”)

如果您感到舒适那个俱乐部,那就去吧。