使用哪种文件类型将图像嵌入AndroidEmoji-htc.ttf?直接下载:AndroidEmoji-htc.ttf
可以轻松地从AppleColorEmoji.ttf中提取图像,因为可以使用十六进制编辑器找到PNG headers。这个ruby script可以提取它们。算法为described here。
十六进制编辑器中的文件示例:
0706 2627 2626 2726 2627 2626 2727 2727 ..&'&&'&&'&&''''
2726 2627 2626 2726 2627 2636 3736 3637 '&&'&&'&&'&67667
3636 3736 3637 3737 3737 3636 3736 3637 6676677777667667
3636 0131 3636 3736 3635 3527 2626 3132 66.16676655'&&12
2627 2626 2726 2627 2721 2115 1533 3232 &'&&'&&''!!..322
1716 1617 1634 1110 0607 0606 0706 0623 .....4.........#
2315 1533 3335 3523 2226 2726 2627 3434 #..3355#"&'&&'44
3535 3332 3233 1616 1716 1617 1616 1716 553223..........
1617 1616 1716 1617 1616 1716 3237 3236 ............2726
3737 3736 3637 3636 3737 2323 0706 0607 7776676677##....
0606 0706 0627 2226 2726 2627 2626 2726 .....'"&'&&'&&'&
2627 2626 3130 2627 2626 2726 2627 2626 &'&&10&'&&'&&'&&
2727 3535 3736 3637 3636 0131 3232 3332 ''55766766.12232
1617 1616 1716 3017 1616 1516 0607 0606 ......0.........
0706 0607 0606 2323 3534 3437 3636 3736 ......##54476676
3608 bf05 020b 1c2a 0d09 0b0d 66a4 b72c 6......*....f..,
0202 0233 8a8d 9c9c 8d88 3302 0202 022a ...3......3....*
9a8d 631a 3c05 090b 3e1a 1a3e 0b09 0b0d ..c.<...>..>....
65a5 b918 1616 1d67 6572 4028 2a0f 251f e......ger@(*.%.
7365 691b 1814 1a98 8d65 183b 0409 0d2c sei......e.;...,
1a0b 0702 fb8b 1e1d 423e 3f44 2a0d 3a3f ........B>?D*.:?
034f 4f42 4435 3203 1e1b 040d 140d 0704 .OOBD52.........
0303 040d 1b0d 041b 1e03 3235 4442 4f4f ..........25DBOO
033f 3a0d 2a55 5265 1f21 3d40 4044 2a0d .?:.*URe.!=@@D*.
3940 024d 4f44 4235 3502 1d1c 050d 1a0d 9@.MODB55.......
0502 0207 040d 140d 051c 1d02 3535 4244 ............55BD
4f4d 0240 390d 2a56 5301 c806 0d0b 2611 OM.@9.*VS.....&.
0b06 0503 120b 122e 1835 0837 33fe d9fe .........5.73...
dc2e 2c02 0b12 0407 0b02 0306 071a 1006 ..,.............
2a23 f8fb 2a30 070f 1d0d 022a 1818 0914 *#..*0.....*....
2014年6月18日更新: 在@naXa的建议下,在FontForge版本20120731-ML(当前最新版本)中打开文件会出现此错误:
FontForge忽略了字体中的下表 忽略&#39; dcmj&#39; 在GID1中,提前宽度(2252)大于规定的最大值(2048) 不会报告后续错误。 错误的查找表:格式= 6,第一个= 65535字形中的总字形数= 894
有点期待,因为到目前为止,TTF中的表情符号是专有编码的。事实上,我甚至使用FontForge看到黑白表情符号图像是一个巨大的成功,因为它意味着TTF在大多数情况下是标准的。 TTF不应该存储我不想的颜色信息。
他们的密钥可能是访问dcmj表中的数据或它指向的任何位置。研究FontForge我发现BMP是TTF的常见图像格式,因此我将尝试使用这些假设修改ruby script并报告回来!
更新:2014年6月18日
我发现似乎是BMP标题source1 source2,使用十六进制编辑器从424D
开始,但标题似乎无效。
接下来我会尝试:
解析TTF查看每个&#34;字形&#34;中的数据。看看我是否能找到更多模式。我想ttf会说出图像数据的起始端。
查看htc android apk,看看他们是如何从ttf中提取和显示表情符号的。
我现在已经没时间了,如果有人有任何其他我非常感兴趣的建议。
更新2014年6月20日
使用@ naXa的建议双击字形,并以任何格式导出将为我提供任何大小的非颜色图标,但仍然不会显示我正在寻找的颜色位图表情符号。
我最后去商店看了一部HTC手机,我惊讶地看到他们正在使用通过短信应用程序看到的Apple的表情符号字体:
我几乎可以肯定这些是以上面提供的HTC字体存储的,但是这个结论使得提取这些图像远远不够理想。
然而,作为概念证明,如何提取颜色表情符号仍然很酷。 :)
编辑:正如贾斯帕所指出的那样,HTC确实在他的回答中有一个自定义的表情符号。上面的图片来自一部未更新的手机。仍然需要弄清楚如何提取这些表情符号!!答案 0 :(得分:2)
不幸的是,我没有帐户,所以让我首先道歉,将此作为答案而不是评论发布。
您发布的显示Apple Color Emojis的图片似乎来自运行旧版Sense / Android的手机,而您引用的文件几乎绝对来自Sense 5-6 / Android 4.3-4.4如果你看一下您可以从文件中提取的灰度表情符号,您会注意到它们实际上与您提供的图片不匹配。但是,他们确实符合这一点:http://assets.hardwarezone.com/img/2013/10/HTC_One_Max_Emoticons_Keyboard_jpg.jpg
这使我得出结论,完全有可能在TTF中没有存储传统的位图,而是有一些专有的格式,它们用来为每个表情符号的不同部分分配颜色。
编辑:尝试直接将文件复制到手机上以查看会发生什么(尝试替换NotoColorFont.ttf以及直接复制并在fallback_fonts.xml中引用它,似乎没有任何内容区别)。屏幕截图:http://imgur.com/OGyq6T2正如你所看到的,它们显示没有颜色,但我们已经知道默认的Android表情符号和Apple Color Emoji都在Android设备上显示正常,这意味着HTC并不遵循Android和iOS使用。
在运行CyanogenMod 11里程碑8的Galaxy SII(i9100)上进行测试。
答案 1 :(得分:0)
据我所知,Emojis存储在两个不同的placfes中 - 在.ttf中 - 显示在纯文本字段(例如,消息的快速预览)和图像中。也许你应该这样挖掘?
答案 2 :(得分:0)
AndroidEmoji-htc.ttf
文件中的表情符号图像可能是(因为我没有要测试的字体),其格式与Google {{3}中的标准Android表情符号相同。 } + CBLC OpenType表。
您可以使用FontTools中的ttx
(CBDT,pypi)对字体进行反汇编/重新组合以进行确认。
直接回答您的问题“格式是什么?”有两种选择:
未压缩的颜色位图
CBLC表中定义的bitmapSizeTable结构的bitDepth字段的值'32',用于识别每个像素具有8位蓝/绿/红/ alpha通道的彩色位图,按每个像素的顺序编码(参见作为BGRA从这里)。颜色通道表示预乘的颜色,并且是sRGB颜色空间中的编码颜色。例如,颜色“全半绿半透明”编码为\ x00 \ x80 \ x00 \ x80,而不是\ x00 \ xFF \ x00 \ x80。
EBDT / EBLC表中定义的所有imageFormat值都适用于CBDT / CBLC表。
压缩颜色位图
每个字形的图像都存储为直接PNG数据。此类PNG数据中仅允许以下块:IHDR,PLTE,tRNS,sRGB,IDAT和IEND。如果存在其他块,则行为未定义。无论PNG数据中其他块中可能存在的颜色信息如何,图像数据都应在sRGB颜色空间中。单个图像必须与位图指标中的表格具有相同的大小。