我目前正在使用
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode
Run Code Online (Sandbox Code Playgroud)
获得NSString的大小.但是,当该字符串包含表情符号时,它似乎计算文字unicode字符的大小,而不是考虑表情符号本身的大小,使得返回的大小不正确.
如何使用表情符号正确获取字符串的大小,因为它将显示在uilabel中?
众所周知,表情符号最多可编码为3或4个字节,因此它可能会占用我的字符串中的2个符号.例如'wew'.length = 7我想在我的文本中找到这些符号,并将它们替换为依赖于其代码的值.读SO,我带着unicode插件来到XRegExp库,但还没找到如何使它工作的方法.
var str = 'wew';// \u1F601 symbol
var reg = XRegExp('[\u1F601-\u1F64F]', 'g'); // /[?1-?F]/g -doesn't make a lot of sense
//var reg = XRegExp('[\uD83D\uDE01-\uD83D\uDE4F]', 'g'); //Range out of order in character class
//var reg = XRegExp('\\p{L}', 'g'); //doesn't match my symbols
console.log(XRegExp.replace(str, reg, function(match){
return encodeURIComponent(match);// here I want to have smth like that %F0%9F%98%84 to be able to map anything I want to this value and replace to it
}));
Run Code Online (Sandbox Code Playgroud)
我真的不想强行查找我的范围内的字符序列.有人可以帮我找到用regexp做的方法.
EDITED刚想 出了一个枚举所有表情符号的想法.比野蛮力更好,但仍然在寻找更好的主意
var …Run Code Online (Sandbox Code Playgroud) 通过代码,我可以创建一个按钮,将这3个表情符号插入到文本中:⚽️
但是,在用户点击按钮的许多手机上,问题是⚽️显示为[X] [X] [X].或者更糟糕的是,它只显示三个空白区域.
我想在没有正确显示表情符号的Android设备上禁用和隐藏我自己的内置表情符号键盘.如果设备有表情符号支持,是否有人知道或有关于如何检测代码的提示?
我已经读过android 4.1支持表情符号,但这不是我的经验....
我已经下载了Google的"Noto Color Emoji"字体,但无法使其正常工作.我对"Noto Sans Regular"等字体没有任何问题.但是使用"Noto Color Emoji"字体,我在Firefox中遇到以下错误(在Windows 10上):
downloadable font: no supported glyph shapes table(s) present (font-family: "NotoColorEmoji" style:normal weight:normal stretch:normal src index:0)
downloadable font: rejected by sanitizer (font-family: "NotoColorEmoji" style:normal weight:normal stretch:normal src index:0)
Run Code Online (Sandbox Code Playgroud)
它也不适用于Windows 10上的Chrome,Internet Explorer和Edge或Ubuntu Linux上的Firefox.
这是我的代码:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
@font-face {
font-family: 'NotoColorEmoji';
src: url('NotoColorEmoji.ttf') format('truetype');
}
</style>
</head>
<body>
<span style="font-family: 'NotoColorEmoji'">Emojis: </span>
</body>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?表情符号字体是否以不同的方式使用?
我试图将表情符号转换为python 3中的Unicode.例如,我将使用表情符号,并希望获得相应的unicode"U + 1F600".同样我想将'U + 1F600'转换回来.现在我已经阅读了文档并尝试了几个选项,但是pythons行为让我感到困惑.
>>> x = ''
>>> y = x.encode('utf-8')
>>> y
b'\xf0\x9f\x98\x80'
Run Code Online (Sandbox Code Playgroud)
表情符号被转换为字节对象.
>>> z = y.decode('utf-8')
>>> z
''
Run Code Online (Sandbox Code Playgroud)
将字节对象转换回表情符号,到目前为止一直很好.
现在,为表情符号取unicode:
>>> c = '\U0001F600'
>>> d = c.encode('utf-8')
>>> d
>>> b'\xf0\x9f\x98\x80'
Run Code Online (Sandbox Code Playgroud)
这会再次打印出字节编码.
>>> d.decode('utf-8')
>>> ''
Run Code Online (Sandbox Code Playgroud)
这会再次打印出表情符号.我真的无法弄清楚如何只在Unicode和表情符号之间进行转换.
我想知道whatsapp如何为此提供支持.我可以在iPhone上使用emojis,因为它本身支持.我不是为bb开发而不是android,但我需要帮助编程人员使用这些东西.
bb的家伙告诉我,他可以添加字体作为项目资源(TTF),但由于表情符号,是彩色的图形,我不知道如果我能创造一个TTF.我对字体一无所知.
正如你所看到的,我的知识非常重要.我只需要一些提示,指出我正确的研究方法.
谢谢!
我有一个发送自动电子邮件的 GAS 脚本,并希望包含几个表情符号。我试过使用短代码和复制/粘贴,但到目前为止似乎没有任何效果。只是想看看有没有我遗漏的东西。
编辑:这是代码:
var title = rowData.publicationTitle;
var journal = rowData.journalTitle;
var url = rowData.publicationUrl;
//Emoji goes here in the body:
var body = "Hi " + firstName + "!<br><br>I noticed your article <a href='" + url + "'>“" + title + "”</a> was recently published in <i>" + journal + "</i>. Congratulations! This is just a friendly reminder to please upload your original document and a PDF version to our publications app when you have time.<br><br>To upload your …Run Code Online (Sandbox Code Playgroud) 我发现了这种使用Unicode 属性转义使用不使用“巨大魔法范围”的正则表达式来检测表情符号的很棒的方法:
console.log(/\p{Emoji}/u.test('flowers ')) // true
console.log(/\p{Emoji}/u.test('flowers')) // falseRun Code Online (Sandbox Code Playgroud)
但是当我在这个答案中分享这些知识时,@Bronzdragon 注意到它\p{Emoji}也匹配数字!这是为什么?数字不是表情符号?
console.log(/\p{Emoji}/u.test('flowers 123')) // unexpectdly true
// regex-only workaround by @Bonzdragon
const regex = /(?=\p{Emoji})(?!\p{Number})/u;
console.log(
regex.test('flowers'), // false, as expected
regex.test('flowers 123'), // false, as expected
regex.test('flowers 123 '), // true, as expected
regex.test('flowers '), // true, as expected
)
// more readable workaround
const hasEmoji = str => {
const nbEmojiOrNumber = (str.match(/\p{Emoji}/gu) || []).length;
const nbNumber = (str.match(/\p{Number}/gu) || …Run Code Online (Sandbox Code Playgroud)我试图在 Ubuntu 版本 20.04 的计算机上显示 VSCode 中的表情符号,但按下组合键“Windows”+“。” (句号),它不执行任何操作,我已经在调查,但我没有找到任何可以给我解决方案的内容,所以我仍然无法显示表情符号,我不想在 VSCode 中安装豁免意思是:(冒号)向您显示表情符号,因为它在编程时会给我带来噪音,值得一提的是,我已经在Windows操作系统上尝试过,并且组合工作没有问题。
如果我需要安装额外的库或者在 Ubuntu 中显示表情符号的组合键不同,我希望您能帮助我。
首先,谢谢。
Android 似乎仍然以一种奇怪的方式缩放表情符号。
我发现这是其他 Android 开发平台(直到 Android 11)中的一个问题,并且现在在 Android 12 中似乎仍然存在。 Android 讨论
也许 Flutter 有办法解决这个问题?比如缩放功能,或者在缩放之前转换为图像之类的?InteractiveViewer 不起作用(如果有的话,用 InteractiveViewer 包装列小部件是演示实际问题的好方法)。
我使用 Fitted box 将 Flutter 中的表情符号放大到父容器中的任何大小。它在大多数平台上都可以正常工作,但是在 Android 中,超过 90 像素会对最终渲染产生奇怪的影响。
这就是 dart-pad 中的样子:
现在在 Android 中(无论是真机还是模拟器):您可以清楚地看到缩放问题。大黄色曲线是应该为 90x90 的表情符号:
[编辑] 在模拟器上,没有大的黄色曲线,但表情符号仍然丢失。
这是您自己尝试的代码。
import 'package:flutter/material.dart';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(
scaffoldBackgroundColor: darkBlue,
),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
), …Run Code Online (Sandbox Code Playgroud)