我正在为FileFormat.Info's search中的特殊字符找到Unicode。
某些字符呈现为经典的黑白字形,例如⚠(警告标志,\u26A0
或⚠
)。这些是首选,因为我可以将CSS样式(如颜色)应用于它们。
其他人正在渲染为更新的卡通表情符号,例如⌛(沙漏,\u231B
或⌛
)。这些不是优选的,因为我不能完全定型它们。
浏览器似乎正在进行此更改,因为我能够在Mac Firefox上看到沙漏字形,而不是Mac Chrome或Mac Safari。
有没有办法强制浏览器显示要显示的较旧(平单调)版本?
更新:似乎(来自下面的评论)有text presentation selector,FE0E
可用于强制执行text-vs-emoji。选择器作为后缀连接到字符的代码上,没有空格,例如HTML {16}的⌛︎
或JS的\u231B\uFE0E
。但是,并不是所有浏览器都支持(例如Chrome和Edge)。
答案 0 :(得分:102)
答案 1 :(得分:8)
我有span::before
内容这样的Unicode字符。 Chrome使用了" Segoe UI Emoji"作为渲染它的字体。即使我将字体系列设置为" Segoe UI Symbol",它也无法正常工作。
但是,当我将font-family设置为" Segoe UI Symbol"明确地针对span::before
,而不是仅针对span
,然后才有效。
答案 2 :(得分:3)
对于防止CSS显示iOS表情符号的纯CSS解决方案,您可以使用font-family: monospace
(默认为字形的文本变体而不是表情符号变体)。
答案 3 :(得分:1)
Android字体并不像您期望的那样丰富。 字体文件没有这些奇特的字形,Android有一个没有字形的少数字符的黑客。它们被替换为图标。
因此解决方案是将网站与网络字体(woff)集成。 使用FontForge创建新的字体文件,并从免费的serif TTF中选择所需的字形。每个字形需要1k。生成woff文件。
准备简单的CSS以导入自定义字体系列。
的style.css:
@font-face {
font-family: 'Exotic Icons';
src: url('exotic-icons.woff') format('woff');
}
.exotic-symbol-font {
position: relative;
top: 1px;
display: inline-block;
font-family: 'Exotic Icons';
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
index.html文件:
<html>
<head>
<meta charset="utf-8">
<link href="style.css" rel="stylesheet"></head>
<title>Test custom glyphs</title>
</head>
<body>
<table>
<tr>
<td class="exotic-symbol-font">
☠ ♠ a g
</td>
</tr>
</table>
</body>
</html>
答案 4 :(得分:0)
对于我在OSX上的解决方案是将font-family设置为Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsert.Click
Dim myList As ListViewItem
Dim JmlList As Integer
Dim i As Integer
JmlList = lst_detail.Items.Count - 1
i = 0
myList = lst_detail.Items.Add(str(lst_detail.Items.Count + 1)) // error at this
myList.SubItems.Add(txtKodeObat.Text.Trim)
myList.SubItems.Add(txtNamaObat.Text.Trim)
myList.SubItems.Add(txtHarga.Text.Trim)
myList.SubItems.Add(txtQty.Text.Trim)
myList.SubItems.Add(txtJumlah.Text.Trim)
Dim subtotal As Double = 0
JmlList = lst_detail.Items.Count - 1
For i = 0 To JmlList
subtotal = subtotal + Val(lst_detail.Items(i).SubItems(5).Text)
Next
txtSubTotal.Text = Format(subtotal, "##########")
txtPPn.Text = Format(subtotal * 0.1, "##########")
txtTotal.Text = Val(txtSubTotal.Text) + Val(txtPPn.Text)
txtKodeObat.Text = ""
txtNamaObat.Text = ""
txtHarga.Text = "0"
txtQty.Text = ""
txtJumlah.Text = "0"
txtKodeObat.Focus()
End Sub
答案 5 :(得分:0)
以上解决方案均未适用于“Google Chrome的表情符号”扩展程序。
所以我制作了Unicode字符'BALLOT BOX WITH CHECK'(U + 2611)的屏幕截图,并将其添加为带有php的图像:
$ballotBoxWithCheck='<img src="pics/U2611.png" style="height:11px;margin-bottom:-1px">'; # ☑ or /U2611
请参阅:https://spacetrace.org/man_card.php?tec_id=21&techname=multi-emp-vessel
答案 6 :(得分:0)
桌面版本为75的Google Chrome浏览器似乎消除了基于加载页面时遇到的第一个Unicode转义来呈现Unicode字符的方法。例如,当解析为页面源中的第一个HTML Unicode转义并且没有等效的表情符号时,&#9207;似乎向Chrome澄清了该页面包含的转义符,这些转义符不能呈现为表情符号。
答案 7 :(得分:0)
如果您最关心的是强制单色显示,以免表情符号在文本中显得过分突出,则可能需要CSS过滤器(单独使用或与Unicode变体选择器结合使用)。
p.gscale {
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
a {
color: #999;
-webkit-filter: grayscale(100%) sepia(100%) saturate(400%) hue-rotate(170deg);
filter: grayscale(100%) sepia(100%) saturate(400%) hue-rotate(170deg);
}
<p class="gscale">You've now got emoji display on ?lockdown?.</p>
<p>External Link: <a href="https://knowyourmeme.com/memes/party-hard">celebrate ?</a></p>
与变体选择器不同,表情符号的呈现方式无关紧要,因为CSS过滤器适用于所有内容。 (我使用它们在已修改为指向Wayback Machine的超链接上对PNG格式的“链接类型”图标进行灰度处理。)
只需注意警告。您不能在子级中覆盖父元素的过滤器,因此该技术不能用于对段落进行灰度处理,然后重新着色其中的链接。 ?
...不过,在您要使整个对象成为超链接或不允许其中包含丰富标记的情况下,它很有用。 (例如标题和说明)
但是,除非实际应用CSS,否则这将无法工作,因此我将提供第二个选项,该选项在<title>
元素中比Unicode变体选择器更可靠(我在看GitHub。不喜欢我的浏览器标签中的伪造图标):
如果要将用户提供的字符串放入<title>
元素中,请过滤表情符号以及任何粗体/斜体/下划线/等。标记。 (是的,对于那些错过了它的人,该标准的确要求<title>
的内容是“&”转义符之外的纯文本,并且我测试过的浏览器将所有解释标记都视为纯文本。)
我能想到的两种方法是:
emoji
封装,但Rust是一个通过unicode-segmentation
之类的板条箱可以方便快捷地迭代字素簇的语言的一个很好的例子。)答案 8 :(得分:0)
在ssokolow's answer上进行扩展,使用滤镜非常好,至少可以使轮廓可见,而不是使用简单的字体,但是当您想使用RGB时,将RGB颜色转换为CSS滤镜序列非常困难。特定颜色。
一个更好的(虽然很冗长)选项是使用<feColorMatrix>
SVG过滤器。结合使用灰度滤镜和数据URI方案,您可以通过RGB和嵌入式CSS来表示颜色:
<allow users="?" />
不幸的是,您不能用数据(从属性或变量中获取)插入URL,但至少不必从RGB计算CSS滤镜。
答案 9 :(得分:0)
没有其他解决方案对我有用,但最终我发现了一些受css-tricks欢迎的东西。在我的用例中,我在每个markdown标头的末尾添加了一个链接符号,用于直接链接到文章中的各个部分,但emoji表情符号看起来有点分散注意力。以下代码使我可以使表情符号看起来像一个普通的符号,然后将鼠标悬停在上面时又切换回表情符号,这对我的用例来说是完美的。如果只想使图标看起来更像符号,只需将文本阴影的十六进制颜色更改为#000,如第二个示例所示。
<h3>Blog Subheading<a href='#' class="direct-link">?</a></h3>
.direct-link {
color: transparent;
text-shadow: 0 0 #000;
}
<h3>Blog Subheading<a href='#' class="direct-link">?</a></h3>
Resolving project references ...
Importing web service metadata ...
Number of service endpoints found: 2
Scaffolding service reference code ...
Warning:Warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Could not load file or assembly 'Java.Interop, Version=0.1.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065'. The system cannot find the file specified.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IDeliveryService']
Warning:Warning: Cannot import wsdl:port
Detail:
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='DeliveryService']/wsdl:port[@name='BasicHttpBinding_IDeliveryService']
Warning:Warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IDeliveryService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='NetTcpBinding_IDeliveryService']
Warning:Warning: No endpoints compatible with .Net Core apps were found.
Warning:Warning: Cannot import wsdl:port
Detail:
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='DeliveryService']/wsdl:port[@name='NetTcpBinding_IDeliveryService']
Warning:Warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IDeliveryService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_IDeliveryService']
Error:Error: No code was generated.
If you were trying to generate a client, this could be because the metadata documents did not contain any valid contracts or services, or because all contracts/services were discovered to exist in --reference assemblies. Verify that you passed all the metadata documents to the tool.
Done.
答案 10 :(得分:0)
我的网站在 CSS 伪元素(::after
和 ::before
)中使用 ◀︎(黑色右指三角形)和类似字符来指示当前项目一个列表。
在我的测试中,我总是使用 the triangle character and the variation selector 15 together。首先,我使用了来自 Google Fonts 的 webfont 和安装在设备上的字体,它们都应该包含这些字符的字形,但出于某种原因,这个假设一定是错误的。我还在 Google Fonts 上尝试了不同的子集,但无济于事:我的两台带有 Google Chrome 和三星互联网 (Chromium) 的 Android 设备总是呈现表情符号而不是文本字形。
我的解决方案是下载 Gnu Free Font 的最新 WOFF(我知道其中包含这些字符的字形),将其包含在我的项目中,并使用 @font-face
定义它:
@font-face {
font-family: "Free Sans";
src: url("/site/static/fonts/FreeFont/FreeSans.woff") format("woff");
}
然后,为我的伪元素设置样式:
span.current::after {
font-family: "Free Sans", $universal-font-family ! important;
}
我还不确定仅对这几个字符使用 786K 额外字体对性能的影响。如果这成为一个问题,应该可以使用仅包含这些字符的精简自定义字体。
答案 11 :(得分:-3)
我不知道关闭表情符号类型渲染的方法。通常我会使用图标字体,例如font awesome或glyphicons(随附Bootstrap 3)。
使用这些优于unicode字符的好处是
唯一的缺点是浏览器在查看您的页面时还有一件事需要下载。