汉字简繁转换和调整网页字体大小

« 返回上页作者:乔夫  分类: 网事悠游  日期:2008-8-19 at 3:24  

磨洋工也终于还是磨出一张皮儿,好孬还是把“上邪·莫邪”的 theme 给弄了一个出来了。满意不满意再说了,空了再来考虑。我还想着给“追风岁月”换名换标哩,但是一想到我的计划永远是赶不上变化的,不说也罢,不说也罢!

不过,Viviti 有别于 Blogger 的就是它的支持很好很强大,页面所有元素都可以像 Widgets 一样的自由摆放。制作 theme 的时候,js 什么的都可以加,最后打成一 zip 包上传就行。但强大只是总体而言,其实还是有着不便的时候。比如,它把侧边和内容区整体划成两块。结构什么的是无法自定义的,最多只能改一下相关样式。这样其实很痛苦,也很难操作。也就是说关于版式的创意被大体局限在了无关紧要的侧边和内容之外。所以,在这一前提下,想要弄个好的 theme 真的很难!不过,比起其它 BSP 来说,已经算是难能可贵了,还是得赞一个!

虽然,“上邪·莫邪”默认是采用繁体(正体)来着,但我还是给加了繁简转换,方便不喜欢或者不识繁体字的朋友。

分享我的两段代码:

简繁转换代码,字库不定时更新,有需要的朋友随时关注。

// JavaScript Document

//模仿语言包式的简繁转换功能插件!
var StranIt_Delay = 1000; //翻译延时毫秒(设这个的目的是让网页先流畅的显现出来)

//转换文本
function StranText(txt,toFT,chgTxt){
if(txt==""||txt==null)
return "";
toFT=toFT==null?BodyIsFt:toFT;

if(chgTxt)
txt=txt.replace((toFT?"简":"繁"),(toFT?"繁":"简"));
if(toFT){
return Traditionalized(txt);
}else{
return Simplized(txt);
}
}
//转换对象,使用递归,逐层剥到文本
function StranBody(fobj){
if(typeof(fobj)=="object"){
var obj=fobj.childNodes;
}else{
var tmptxt=StranLink_Obj.innerHTML.toString()
var StranLink="";
if(tmptxt.indexOf("简")<0){
BodyIsFt=1;
StranLink_Obj.innerHTML=StranText(tmptxt,0,1);
StranLink.title=StranText(StranLink.title,0,1);
}else{
BodyIsFt=0;
StranLink_Obj.innerHTML=StranText(tmptxt,1,1);
StranLink.title=StranText(StranLink.title,1,1);
}
setCookie(JF_cn,BodyIsFt,7);
var obj=document.body.childNodes;
}

for(var i=0;i<obj.length;i++){
var OO=obj.item(i);
if("||BR|HR|TEXTAREA|".indexOf("|"+OO.tagName+"|")>0||OO==StranLink_Obj)continue;
if(OO.title!=""&&OO.title!=null)
OO.title=StranText(OO.title);
if(OO.alt!=""&&OO.alt!=null)
OO.alt=StranText(OO.alt);
if(OO.tagName=="INPUT"&&OO.value!=""&&OO.type!="text"&&OO.type!="hidden")
OO.value=StranText(OO.value);
if(OO.nodeType==3){OO.data=StranText(OO.data);}
else
StranBody(OO);
}
}

function JTPYStr(){
return ' 皑蔼碍爱翱袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鳖瘪濒滨宾摈饼拨钵铂驳卜补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑窜错达带贷担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔点垫电淀钓调迭谍叠钉顶锭订东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋复负讣妇缚该钙盖干赶秆赣冈刚钢纲岗皋镐搁鸽阁铬个给龚宫巩贡钩沟构购够蛊顾剐关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骇韩汉阂鹤贺横轰鸿红后壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩汇讳诲绘荤浑伙获货祸击机积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较秸阶节茎惊经颈静镜径痉竞净纠厩旧驹举据锯惧剧鹃绢杰洁结诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒类泪篱离里鲤礼丽厉励砾历沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃凌灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们锰梦谜弥觅绵缅庙灭悯闽鸣铭谬谋亩钠纳难挠脑恼闹馁腻撵捻酿鸟聂啮镊镍柠狞宁拧泞钮纽脓浓农疟诺欧鸥殴呕沤盘庞国爱赔喷鹏骗飘频贫苹凭评泼颇扑铺朴谱脐齐骑岂启气弃讫牵扦钎铅迁签谦钱钳潜浅谴堑枪呛墙蔷强抢锹桥乔侨翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱龋颧权劝却鹊让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛伞丧骚扫涩杀纱筛晒闪陕赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞苏诉肃虽绥岁孙损笋缩琐锁獭挞抬摊贪瘫滩坛谭谈叹汤烫涛绦腾誊锑题体屉条贴铁厅听烃铜统头图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网韦违围为潍维苇伟伪纬谓卫温闻纹稳问瓮挝蜗涡窝呜钨乌诬无芜吴坞雾务误锡牺袭习铣戏细虾辖峡侠狭厦锨鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧销晓啸蝎协挟携胁谐写泻谢锌衅兴汹锈绣虚嘘须许绪续轩悬选癣绚学勋询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严颜阎艳厌砚彦谚验鸯杨扬疡阳痒养样瑶摇尧遥窑谣药爷页业叶医铱颐遗仪彝蚁艺亿忆义诣议谊译异绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣痈踊咏涌优忧邮铀犹游诱舆鱼渔娱与屿语吁御狱誉预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏凿枣灶责择则泽贼赠扎札轧铡闸诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰帧郑证织职执纸挚掷帜质钟终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍踪综总纵邹诅组钻致钟么为只凶准启板里雳余链泄标确号';
}
function FTPYStr(){
return ' 皚藹礙愛翺襖奧壩罷擺敗頒辦絆幫綁鎊謗剝飽寶報鮑輩貝鋇狽備憊繃筆畢斃閉邊編貶變辯辮鼈癟瀕濱賓擯餅撥缽鉑駁蔔補參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫場嘗長償腸廠暢鈔車徹塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵疇躊籌綢醜櫥廚鋤雛礎儲觸處傳瘡闖創錘純綽辭詞賜聰蔥囪從叢湊竄錯達帶貸擔單鄲撣膽憚誕彈當擋黨蕩檔搗島禱導盜燈鄧敵滌遞締點墊電澱釣調叠諜疊釘頂錠訂東動棟凍鬥犢獨讀賭鍍鍛斷緞兌隊對噸頓鈍奪鵝額訛惡餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛廢費紛墳奮憤糞豐楓鋒風瘋馮縫諷鳳膚輻撫輔賦複負訃婦縛該鈣蓋幹趕稈贛岡剛鋼綱崗臯鎬擱鴿閣鉻個給龔宮鞏貢鈎溝構購夠蠱顧剮關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過駭韓漢閡鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話懷壞歡環還緩換喚瘓煥渙黃謊揮輝毀賄穢會燴彙諱誨繪葷渾夥獲貨禍擊機積饑譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗漿蔣槳獎講醬膠澆驕嬌攪鉸矯僥腳餃繳絞轎較稭階節莖驚經頸靜鏡徑痙競淨糾廄舊駒舉據鋸懼劇鵑絹傑潔結誡屆緊錦僅謹進晉燼盡勁荊覺決訣絕鈞軍駿開凱顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類淚籬離裏鯉禮麗厲勵礫曆瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒療遼鐐獵臨鄰鱗凜賃齡鈴淩靈嶺領餾劉龍聾嚨籠壟攏隴樓婁摟簍蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麽黴沒鎂門悶們錳夢謎彌覓綿緬廟滅憫閩鳴銘謬謀畝鈉納難撓腦惱鬧餒膩攆撚釀鳥聶齧鑷鎳檸獰甯擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐國愛賠噴鵬騙飄頻貧蘋憑評潑頗撲鋪樸譜臍齊騎豈啓氣棄訖牽扡釺鉛遷簽謙錢鉗潛淺譴塹槍嗆牆薔強搶鍬橋喬僑翹竅竊欽親輕氫傾頃請慶瓊窮趨區軀驅齲顴權勸卻鵲讓饒擾繞熱韌認紉榮絨軟銳閏潤灑薩鰓賽傘喪騷掃澀殺紗篩曬閃陝贍繕傷賞燒紹賒攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢釋飾視試壽獸樞輸書贖屬術樹豎數帥雙誰稅順說碩爍絲飼聳慫頌訟誦擻蘇訴肅雖綏歲孫損筍縮瑣鎖獺撻擡攤貪癱灘壇譚談歎湯燙濤縧騰謄銻題體屜條貼鐵廳聽烴銅統頭圖塗團頹蛻脫鴕馱駝橢窪襪彎灣頑萬網韋違圍爲濰維葦偉僞緯謂衛溫聞紋穩問甕撾蝸渦窩嗚鎢烏誣無蕪吳塢霧務誤錫犧襲習銑戲細蝦轄峽俠狹廈鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲線廂鑲鄉詳響項蕭銷曉嘯蠍協挾攜脅諧寫瀉謝鋅釁興洶鏽繡虛噓須許緒續軒懸選癬絢學勳詢尋馴訓訊遜壓鴉鴨啞亞訝閹煙鹽嚴顔閻豔厭硯彥諺驗鴦楊揚瘍陽癢養樣瑤搖堯遙窯謠藥爺頁業葉醫銥頤遺儀彜蟻藝億憶義詣議誼譯異繹蔭陰銀飲櫻嬰鷹應纓瑩螢營熒蠅穎喲擁傭癰踴詠湧優憂郵鈾猶遊誘輿魚漁娛與嶼語籲禦獄譽預馭鴛淵轅園員圓緣遠願約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒鑿棗竈責擇則澤賊贈紮劄軋鍘閘詐齋債氈盞斬輾嶄棧戰綻張漲帳賬脹趙蟄轍鍺這貞針偵診鎮陣掙睜猙幀鄭證織職執紙摯擲幟質鍾終種腫衆謅軸皺晝驟豬諸誅燭矚囑貯鑄築駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄濁茲資漬蹤綜總縱鄒詛組鑽緻鐘麼為隻兇準啟闆裡靂餘鍊洩標確號';
}

function Traditionalized(cc){
var str='';
var ss=JTPYStr();
var tt=FTPYStr();
for(var i=0;i<cc.length;i++){
if(cc.charCodeAt(i)>10000&&ss.indexOf(cc.charAt(i))!=-1)
str+=tt.charAt(ss.indexOf(cc.charAt(i)));
else
str+=cc.charAt(i);
}
return str;
}

function Simplized(cc){
var str='';
var ss=JTPYStr();
var tt=FTPYStr();

for(var i=0;i<cc.length;i++){
if(cc.charCodeAt(i)>10000&&tt.indexOf(cc.charAt(i))!=-1)
str+=ss.charAt(tt.indexOf(cc.charAt(i)));
else
str+=cc.charAt(i);
}
return str;
}

function setCookie(name, value){  //cookies设置
var argv = setCookie.arguments;
var argc = setCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
if(expires!=null){
var LargeExpDate = new Date ();
LargeExpDate.setTime(LargeExpDate.getTime() + (expires*1000*3600*24));
}
document.cookie = name + "=" + escape (value)+((expires == null) ? "" : ("; expires=" +LargeExpDate.toGMTString()));
}

function getCookie(name){  //cookies读取
var search = name + "=";
if(document.cookie.length > 0){
offset = document.cookie.indexOf(search);
if(offset != -1){
offset += search.length;
end = document.cookie.indexOf(";", offset);
if(end == -1)
end = document.cookie.length;
return unescape(document.cookie.substring(offset, end));
}
else
return "";
}
}

var StranLink_Obj=document.getElementById("StranLink");
if (StranLink_Obj){
var JF_cn="ft"+self.location.hostname.toString().replace(/\./g,"");
var BodyIsFt=getCookie(JF_cn);
if(BodyIsFt!="0")
BodyIsFt=Default_isFT;
with(StranLink_Obj){
if(typeof(document.all)!="object"){  //非IE浏览器
href="javascript:StranBody()";
}else{
href="#";
onclick= new Function("StranBody();return false");
}
//title=StranText("点击以繁体中文方式浏览",0,1);
//innerHTML=StranText(innerHTML,0,1);
}

if(BodyIsFt=="1"){
setTimeout("StranBody()",StranIt_Delay);
}
}

以上代码存为chinese.js,以下为调用代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>简繁体转换</title>
<script type="text/javascript" language="javascript">
var Default_isFT = 1        //默认是否繁体,0-简体,1-繁体
</script>
</head>

<body>
文字测试编码设为utf-8
<a id="StranLink">简体</a> |
<script type="text/javascript" src="chinese.js" charset="utf-8"></script>
</body>
</html>

再附一个字体大小调整代码。和上面繁简转换代码一样,网上可以搜出 N 多种来。但有一个不得不重视的问题:如果你的大小只是针对调整内容页面好说。假如你想在 list 页面里,所有内容字体大小皆可控制(效果见“上邪·莫邪”)那就一定会遇到一个问题。一般而言,JS 代码都是针对 ID 来执行的,而事实上不管是 BSP 还是独立博客程序,list 页的内容部份,那肯定都是套用的 class,即便有用 ID,那也是根据数据 ID 生成,要想遍历多少不大现实。所以,只能在样式的 class 上面想办法。

getElementsByID 肯定是不能用了,JS 中的 getElementsByClass 其实也是不好用的。因为就算取出来也只是这个 object,实际你是没法像 ID 那样(*.style.fontSize=”*”)可以定义具体样式的。所以,想到一个折衷的办法。先用 class 遍历出所有的内容 div,然后再用 ID 在各个 div 上调整样式,从而达到效果。代码如下:

var defaultFont = 12;
var typeFont = "";

function SetFont(jj){
if(jj==0){
if(typeFont<24){  //增加至24px
if(typeFont==""){
typeFont=defaultFont+2;
}else{
typeFont=typeFont+2;
}
}
}else{
if(typeFont>12){  //减小到12px
if(typeFont!=""){
typeFont=typeFont-2;
}
}
}

var divs = document.getElementsByTagName("div");
for (var i = 0; i < divs.length; i++)if(divs[i].className=="content")divs[i]['style']['fontSize']=typeFont+'px';
}

大小总得有个度,所以我给限制了字体的最大和最小值,如果不需要直接删除就是了。

function SetFont(jj){
if(jj==0){

if(typeFont==""){
typeFont=defaultFont+2;
}else{
typeFont=typeFont+2;
}
}else{
if(typeFont!=""){
typeFont=typeFont-2;
}
}

var divs = document.getElementsByTagName("div");
for (var i = 0; i < divs.length; i++)if(divs[i].className=="content")divs[i]['style']['fontSize']=typeFont+'px';
}

调用直接在链接功行为上加“onClick=”SetFont(0);”或“onClick=”SetFont(1);”即可。

PS:简繁转换的 Cookie 有点小问题,字体大小我就根本没加 cookie,但执行效果是没有问题的,无伤大雅。等心情好了,考虑 theme 换“肤色”的时候,一并解决……

手上有 10 个 Viviti 邀请,有需要的欢迎索取。

更多分享

2 条评论  Trackback Url:http://ichov.com/web/transform-chinese-fontsize.html/trackback

2 Responses to “汉字简繁转换和调整网页字体大小”

  1. niechen says:

    嘿嘿,Viviti让你玩出花了啊

  2. 乔夫 says:

    花活,花活,闲来无事……

有啥说啥 Leave a Reply