【JavaScript】js简易实现检测系统字体是否存在

来自ampedZ的博客园,原文地址:http://www.cnblogs.com/ampedZ/p/CheckFont.html

原理是根据设置span的字体,如果系统不存在指定名称对应的字体,则会以默认字体显示。

根据对比指定字体和默认字体的offsetWidth、offsetHeight值,以判断字体是否存在。

通过一个杜撰的字体名称来设置默认字体。

一般说来,span指定的文本越复杂,准确度越高。

<!DOCTYPE html>
<html><head><style type="text/css">
div#divBase{text-align:center;width:283px;}
div#divTitle{clear:both;text-align:center;padding:3px;}
div#divInput{float:left;}
div#divOutput{float:right;}
div#divButton{float:none;vertical-align:middle;margin:57px;}
div#divCopyright{clear:both;text-align:center;padding:3px;}
textarea#textareaInput{resize:none;overflow:auto;width:106px;height:126px;}
textarea#textareaOutput{resize:none;overflow:auto;width:106px;height:126px;}</style></head>
<body><div id="divBase">
<div id="divTitle">字体检测</div>
<div id="divInput"><textarea id="textareaInput"wrap="soft">FZDaHei-B02S,方正大黑简体
HYGothic-Extra
Lucida Sans</textarea></div>
<div id="divOutput"><textarea id="textareaOutput"wrap="soft"readonly=“true”></textarea></div>
<div id="divButton"><input type="button"value="检测"onClick="CheckFont()"/></div>
<div id="divCopyright">Copyright © 心のsky Group</div></div>
<script type="text/javascript"src="CheckFont.js"></script>
<script type="text/javascript">function CheckFont()
{var t=document.getElementById("textareaInput").value;t=IsFontExistBatch(t);document.getElementById("textareaOutput").value=t;}</script>
</body></html>

CheckFont.html

function IsFontExist(t) {
    if (t == "") {return ""};
    var f = "Copyright © 心のsky Group";
    var s = document.createElement("span");
    s.style.fontSize = ‘72px‘;
    s.innerHTML = f;
    var b = document.getElementsByTagName("body")[0];
    b.appendChild(s);
    s.style.fontFamily = f;
    var w = s.offsetWidth;
    var h = s.offsetHeight;
    s.style.fontFamily = t + ‘,‘ + f;
    var r =((s.offsetWidth != w) || (s.offsetHeight != h));
    b.removeChild(s);
    return r?"存在":"不存在";
}
function IsFontExistBatch(t) {
    var a = t.split("\n");
    var r = new Array();
    for (var i = 0; i < a.length; i++) {
        r[i] = IsFontExist(a[i]);
    }
    return r.join("\r\n");
}

CheckFont.js

时间: 2024-08-30 07:41:37

【JavaScript】js简易实现检测系统字体是否存在的相关文章

js 获取系统字体

参考自网上,非原创. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 </head> 6 <body> 7 <div style="left: 0px; positon: absolute; top: 0px;

JS 简易控制台插件 [供 博客, 论坛 运行js用]

今天厚着脸皮来推荐下鄙人写的一个小插件吧.看过我博客的应该都熟悉这个插件了,其实就是这货. 这东西是我去年写的,当时水平也不怎么样,不过好歹还是实现了简单功能.我先简单介绍下这东西什么用吧. 因为在 论坛,博客 里写东西的时候,非常希望有个运行功能,当然目前大部分的功能都是 open 实现的.而且在 IE6-7 下没有 console 可供调试,所以当时脑子一热就写了这东西.可能你会说 Firebug Lite 不是很方便么,而且兼容 IE6 呢..确实,不过我的出发点不一样,只是写一个可供输出

windows系统字体安装使用的几种方法

字体简易安装方法: 1.打开系统盘的 windows 下的 fonts 文件夹:2.用另一个窗口打开字体存放的文件夹:3.在存放字体的文件夹中选择要安装的字体(部分选或全选均可):4.用鼠标右键将所选字体拖到windows 下的 fonts 文件夹上,松开鼠标,在弹出的提示框上选择:在当前位置创建快捷方式.位置,如果要改变,应先把windows 下的 fonts 文件夹中的快捷方式删除,然后重新按上述方法安装. ------另再提供一种差不多的------1.在非系统磁盘新建一个文件夹,用来存放

JavaScript神一样的变量系统

话说上一篇介绍了JavaScript故事版的身世之谜.看官你估计也明白JavaScript出生之时,就未曾托于重任.布兰登-艾奇估计也没料到今天的JavaScript变得如此重要.要不然,当年他也不会如此惜墨,竟然只搞了一个"Var"声明就海纳百川.当然不是说如此惜墨有什么重大缺陷,人家内部搞个类型推断那也是牛B轰轰的.话说微软那个c#也有个神奇的Var,有抄袭布兰登-艾奇Idea的嫌疑! 布兰登-艾奇如此惜墨,搞了个Var就算了,连咱们后端鞋同最熟悉的那些数据类型也省了.后端鞋同们一

java调用javascript :js引擎rhino

java调用javascript :js引擎rhino JavaJavaScriptEclipse脚本SQL 前段时间,在浏览javaeye论坛,看见有人征集如何在java中运行数学表达式.结果方案五花八门:1.jakarta commons JEXL. 2.Beanshell3.Java Math Expression Parser jep 4.parse combinator jparsec 5.jdk 6.0的 script6.利用SQL 7.自己写语法分析如果自己写语法分析,没有个200

Vue2.0 + Element-UI + WebAPI实践:简易个人记账系统

最近正在学习Vue2.0相关知识,正好近期饿了么桌面端组件Element-UI发布,便动手做了一款简易个人记账系统,以达到实践及巩固目的. 1.开发环境 Win10 + VS2015 + Sqlserver2008R2 + WebAPI + Dapper + Vue2.0 + Element-UI 2.项目解决方案概览 简单介绍下,Account是WebAPI项目,承载前端请求:Account.BLL.Account.DAL.Account.Entity不废话:Account.Common是对D

javascript ajax 简易的封装

1 function ajax(obj){ 2 var xhr = (function (){//获取xhr对象,为了兼容ie6所以进行了重新封装 3 if(typeof XMLHttpRequest !='undefined') { 4 return new XMLHttpRequest(); 5 }else if(typeof ActiveXObject !='undefined') { 6 var version = [ 7 'MSXML2.XMLHttp6.0', 8 'MSXML2.X

C# .net中DatailsView的JS简易版

话不多说,先看效果图 此图为最基本的效果,传入DataTable,直接读取第一条数据 设置了标题 设置了显示的列 针对需要处理的列,增加了回调函数控制,让用户自己写处理事件 将指定的列显示为图片 一下两个图为为列绑定了单击事件的回调,将列名以及列值返回 贴上代码,各位高手,提点意见 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CameraFaultInfo.aspx.cs"

百科知识 学位论文学术不端行为检测系统简介

学位论文学术不端行为检测系统 研制介绍与使用方法 第一章 系统简介 1.1 系统概述 学位论文学术不端行为检测系统(简称"TMLC")以<中国学术文献网络出版总库>为全文比对数据库,实现了对抄袭与剽窃.伪造.篡改等学术不端行为的快速检测,可供用户检测学位论文,并支持用户自建比对库.其系统示意图如图1所示. 图1 检测系统示意图 1.2 系统技术路线介绍 TMLC 采用CNKI 自主研发的自适应多阶指纹(AMLFP)特征检测技术,具有检测速度快,准确率,召回率较高,抗干扰性强