Page MenuHomePhabricator

testDetectChineseTofu.html

Authored By
bzimport
Nov 22 2014, 3:04 AM
Size
1 KB
Referenced Files
None
Subscribers
None

testDetectChineseTofu.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<script type="text/javascript">
/**
* Convert a Chinese Hanzi character to image data
*
* Draw the character on canvas, and return the bitmap in format: rgba rgba ...
*
* @param {string} character
* @return {array}
*/
function convertHanziToImageData( character ) {
var canv = document.createElement("canvas");
canv.width = 80; // 4+72+4, put the 72px char at center, and leave 4px as padding
canv.height= 80;
var ctx=canv.getContext("2d");
ctx.font="72px 宋体";
ctx.fillText(character,4,68);
var imgData=ctx.getImageData( 0, 0, canv.width, canv.height ).data;
return imgData;
}
/**
* Detect Chinese tofu
*
* Create tofu's and the character's images, compare them to see if the
* character is rendered as a tofu
*
* @param {string} text
* @return {boolean}
*/
function detectChineseTofu( character ) {
// TODO: TOFU_IMAGE_DATA can be created only once
var TOFU_IMAGE_DATA = convertHanziToImageData("鿿"); // a known tofu: &#x9fff;
var characterImageData = convertHanziToImageData( character );
for (var i=0; i<TOFU_IMAGE_DATA.length; i++)
if( characterImageData[i]!=TOFU_IMAGE_DATA[i] )
return false;
return true;
}
</script>
</head>
<body>
<img id="canvasImg" src="" />
<script>
function testDetectChineseTofu( character ) {
if( detectChineseTofu(character) )
alert( character+" is tofu");
else
alert( character+" is not tofu");
}
testDetectChineseTofu("我");
testDetectChineseTofu("鿾"); // another known tofu: &#x9ffe;
</script>
</body>
</html>

File Metadata

Mime Type
text/html
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
12744
Default Alt Text
testDetectChineseTofu.html (1 KB)

Event Timeline