Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测丢失的字符标志符号和Firefox';s小盒子里面有十六进制代码点_Javascript_Css_Firefox_Fonts_Rendering - Fatal编程技术网

Javascript 检测丢失的字符标志符号和Firefox';s小盒子里面有十六进制代码点

Javascript 检测丢失的字符标志符号和Firefox';s小盒子里面有十六进制代码点,javascript,css,firefox,fonts,rendering,Javascript,Css,Firefox,Fonts,Rendering,我希望能够测试一个特定的字符,比如,而我仍然可以找到一个更好的答案,至少我现在有一个解决办法 事实证明,显示缺少标志符号的小框(无论是简单的空框还是包含十六进制代码点的Firefox变体)不受CSS斜体的影响。但是,真实的渲染字符会被斜体字更改。因此,如果一个普通字符与其斜体变体相同,它就不是一个真正的字符 不过,我更喜欢Chrome的测试,所以我只使用Firefox的替代测试 函数更改斜体(字体:string):string{ if(/\b(斜体|斜体)\b/.test(字体)) 返回字体。替

我希望能够测试一个特定的字符,比如
,而我仍然可以找到一个更好的答案,至少我现在有一个解决办法

事实证明,显示缺少标志符号的小框(无论是简单的空框还是包含十六进制代码点的Firefox变体)不受CSS斜体的影响。但是,真实的渲染字符会被斜体字更改。因此,如果一个普通字符与其斜体变体相同,它就不是一个真正的字符

不过,我更喜欢Chrome的测试,所以我只使用Firefox的替代测试

函数更改斜体(字体:string):string{
if(/\b(斜体|斜体)\b/.test(字体))
返回字体。替换(/\b(斜体|斜体)\b/,“”);
其他的
返回斜体+字体;
}
导出函数doesCharacterGlyphExist(elementFont:Element | string,charOrCodePoint:string | number):布尔值{
如果(字符或代码点的类型=='number')
charOrCodePoint=String.fromCodePoint(charOrCodePoint);
const metrics=getFontMetrics(elementOrFont);
常数填充=8;
常量大小=metrics.lineHeight+填充;
const canvas0=(doesCharacterGlyphExist如有)。canvas0 | |((doesCharacterGlyphExist如有)。canvas0=
document.createElement(“画布”)作为HTMLCanvasElement);
const canvas1=(doesCharacterGlyphExist如有)。canvas1 | |((doesCharacterGlyphExist如有)。canvas1=
document.createElement(“画布”)作为HTMLCanvasElement);
const canvases=[canvas0,canvas1];
常量pixmaps=[];
for(设i=0;i<2;++i){
const canvas=画布[i];
画布宽度=大小;
画布高度=尺寸;
canvas.style.opacity='1';
const context=canvas.getContext('2d');
context.fillStyle='white';
fillRect(-1,-1,大小+2,大小+2);
context.fillStyle='black';
//将测试字符的像素与不带字形的已知字符的像素进行比较。
//对于Firefox,它以不同的方式呈现缺失的标志符号,请检查是否有字符
//以斜体显示时,其外观与自身相同--缺少图示符框
//斜体显示时保持笔直。
context.font=(i==1&&isFirefox()?changeItalic(metrics.font):metrics.font);
context.fillText(i==0 | | isFirefox()?charOrCodePoint:'\uFFFE',0,metrics.ascent);
pixmaps[i]=context.getImageData(0,0,size,size).data;
}
for(设i=0;i