aardio 文档
aardio 范例: Unicode 花体字生成器
import win.ui;
import win.clip;
import fonts.fontAwesome;
/*DSG{{*/
var winform = win.form(text="Unicode 花体字生成器";right=919;bottom=633;bgcolor=0xFFFFFF;border="dialog frame";max=false)
winform.add(
btnClear={cls="plus";text="清空";left=454;top=8;right=554;bottom=44;align="left";color=0x3C3C3C;dl=1;dr=1;dt=1;font=LOGFONT(h=-14);iconStyle={align="left";font=LOGFONT(h=-14;name='FontAwesome');padding={left=10}};iconText='\uF014';notify=1;textPadding={left=28};z=2};
editInput={cls="edit";left=24;top=12;right=440;bottom=43;align="right";dl=1;dt=1;edge=1;font=LOGFONT(h=-14);z=1}
)
/*}}*/
// 花体字配置
var unicodeFancyFonts = [
{
name = '汉\u0489字\u0489\u0489Aa\u0489 菊花文';
combiningCharacter = '\u0489';
},
{
name = "ₛᵤᵦₛ 下标";
lower = {0x2090,null,null,null,0x2091,null,null,0x2095,0x1D62,0x2C7C,0x2096,0x2097,0x2098,0x2099,0x2092,0x209A,null,0x1D63,0x209B,0x209C,0x1D64,0x1D65,null,0x2093,null,null};
digitStart = 0x2080;
};
{
name = "ˢᵘᵖᵉʳ 上标";
lower = {0x1D43,0x1D47,0x1D9C,0x1D48,0x1D49,0x1DA0,0x1D4D,0x2B0,0x2071,0x2B2,0x1D4F,0x2E1,0x1D50,0x207F,0x1D52,0x1D56,null,0x2B3,0x2E2,0x1D57,0x1D58,0x1D5B,0x2B7,0x2E3,0x2B8,0x1DBB};
digitStart = 0x2070;
digit = {0x2070,0xB9,0xB2,0xB3,0x2074,0x2075,0x2076,0x2077,0x2078,0x2079};
};
{
name = "𝒮𝒸𝓇𝒾𝓅𝓉 手写花体";
upper = {0x1D49C,0x212C,0x1D49E,0x1D49F,0x2130,0x2131,0x1D4A2,0x210B,0x2110,0x1D4A5,0x1D4A6,0x2112,0x2133,0x1D4A9,0x1D4AA,0x1D4AB,0x1D4AC,0x211B,0x1D4AE,0x1D4AF,0x1D4B0,0x1D4B1,0x1D4B2,0x1D4B3,0x1D4B4,0x1D4B5};
lower = {0x1D4B6,0x1D4B7,0x1D4B8,0x1D4B9,0x212F,0x1D4BB,0x210A,0x1D4BD,0x1D4BE,0x1D4BF,0x1D4C0,0x1D4C1,0x1D4C2,0x1D4C3,0x2134,0x1D4C5,0x1D4C6,0x1D4C7,0x1D4C8,0x1D4C9,0x1D4CA,0x1D4CB,0x1D4CC,0x1D4CD,0x1D4CE,0x1D4CF};
};
{
name = "𝓑𝓸𝓵𝓭 𝓢𝓬𝓻𝓲𝓹𝓽 粗手写体";
upperStart = 0x1D4D0;
lowerStart = 0x1D4EA;
};
{
name = "𝔻𝕠𝕦𝕓𝕝𝕖-𝕊𝕥𝕣𝕦𝕔𝕜 双线体";
upper = {0x1D538,0x1D539,0x2102,0x1D53B,0x1D53C,0x1D53D,0x1D53E,0x210D,0x1D540,0x1D541,0x1D542,0x1D543,0x1D544,0x2115,0x1D546,0x2119,0x211A,0x211D,0x1D54A,0x1D54B,0x1D54C,0x1D54D,0x1D54E,0x1D54F,0x1D550,0x2124};
lowerStart = 0x1D552;
digitStart = 0x1D7D8;
};
{
name = "𝔉𝔯𝔞𝔨𝔱𝔲𝔯 哥特体";
upper = {0x1D504,0x1D505,0x212D,0x1D507,0x1D508,0x1D509,0x1D50A,0x210C,0x2111,0x1D50D,0x1D50E,0x1D50F,0x1D510,0x1D511,0x1D512,0x1D513,0x1D514,0x211C,0x1D516,0x1D517,0x1D518,0x1D519,0x1D51A,0x1D51B,0x1D51C,0x2128};
lowerStart = 0x1D51E;
};
{
name = "𝕭𝖔𝖑𝖉 𝕱𝖗𝖆𝖐𝖙𝖚𝖗 粗哥特体";
upperStart = 0x1D56C;
lowerStart = 0x1D586;
};
{
name = "𝖲𝖺𝗇𝗌-𝖲𝖾𝗋𝗂𝖿 无衬线体";
upperStart = 0x1D5A0;
lowerStart = 0x1D5BA;
digitStart = 0x1D7E2;
};
{
name = "𝗕𝗼𝗹𝗱 𝗦𝗮𝗻𝘀 粗无衬线";
upperStart = 0x1D5D4;
lowerStart = 0x1D5EE;
digitStart = 0x1D7EC;
};
{
name = "𝘐𝘵𝘢𝘭𝘪𝘤 𝘚𝘢𝘯𝘴 斜无衬线";
upperStart = 0x1D608;
lowerStart = 0x1D622;
};
{
name = "𝙄𝙩𝙖𝙡𝙞𝙘 𝘽𝙤𝙡𝙙 粗斜无衬线";
upperStart = 0x1D63C;
lowerStart = 0x1D656;
};
{
name = "𝙼𝚘𝚗𝚘𝚜𝚙𝚊𝚌𝚎 等宽体";
upperStart = 0x1D670;
lowerStart = 0x1D68A;
digitStart = 0x1D7F6;
};
{
name = "Fullwidth 全角字符";
upperStart = 0xFF21;
lowerStart = 0xFF41;
digitStart = 0xFF10;
};
{
name = "𝐁𝐨𝐥𝐝 粗体";
upperStart = 0x1D400;
lowerStart = 0x1D41A;
digitStart = 0x1D7CE;
};
{
name = "𝐼𝑡𝑎𝑙𝑖𝑐 斜体";
upper = {0x1D434,0x1D435,0x1D436,0x1D437,0x1D438,0x1D439,0x1D43A,0x1D43B,0x1D43C,0x1D43D,0x1D43E,0x1D43F,0x1D440,0x1D441,0x1D442,0x1D443,0x1D444,0x1D445,0x1D446,0x1D447,0x1D448,0x1D449,0x1D44A,0x1D44B,0x1D44C,0x1D44D};
lower = {0x1D44E,0x1D44F,0x1D450,0x1D451,0x1D452,0x1D453,0x1D454,0x210E,0x1D456,0x1D457,0x1D458,0x1D459,0x1D45A,0x1D45B,0x1D45C,0x1D45D,0x1D45E,0x1D45F,0x1D460,0x1D461,0x1D462,0x1D463,0x1D464,0x1D465,0x1D466,0x1D467};
};
{
name = "𝑩𝒐𝒍𝒅 𝑰𝒕𝒂𝒍𝒊𝒄 粗斜体";
upperStart = 0x1D468;
lowerStart = 0x1D482;
};
{
name = "ⓒⓘⓡⓒⓛⓔⓓ 圆圈字母";
upperStart = 0x24B6;
lowerStart = 0x24D0;
digitStart = 0x2460;
digitZero = 0x24EA;
};
{
name = "🄐🄑🄒 方框字母";
upperStart = 0x1F130;
};
{
name = "🅐🅑🅒 实心方框";
upperStart = 0x1F170;
};
{
name = "ᴀʙᴄ 小型大写字母";
upper = {0x1D00,0x299,0x1D04,0x1D05,0x1D07,0x493,0x262,0x29C,0x26A,0x1D0A,0x1D0B,0x29F,0x1D0D,0x274,0x1D0F,0x1D18,null,0x280,0x1D0,0x1D1B,0x1D1C,0x1D20,0x1D21,null,0x28F,0x1D22};
};
{
name = "ɐqɔ 翻转字母";
lower = {0x250,0x71,0x254,0x70,0x1DD,0x25F,0x253,0x265,0x131,0x27E,0x29E,0x6C,0x26F,0x75,0x6F,0x64,0x62,0x279,0x73,0x287,0x6E,0x28C,0x28D,0x78,0x28E,0x7A};
};
{
name = "ꓯꓭƆ 镜像翻转";
upper = {0xA4EF,0xA4ED,0x0186,0x15E1,0x018E,0xA7FB,0x2141,0x0048,0x0049,0x148D,0xA7B0,0x2143,0x004D,0x0418,0x004F,0xA7FC,0x1ECC,0x042F,0xA644,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A};
lower = {0xA4EF,0xA4ED,0x0186,0x15E1,0x018E,0xA7FB,0x2141,0x0068,0x0069,0x148D,0xA7B0,0x2143,0x006D,0x0418,0x006F,0xA7FC,0x1ECC,0x042F,0xA644,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A};
},
{
name = "🅐🅑🅒 实心圆圈";
upperStart = 0x1F150;
};
{
name = "🄐⒜ 括号字母";
lowerStart = 0x249C;
upperStart = 0x1F110;
},
{
name = "🄰🄱🄲 空心方框";
upperStart = 0x1F130;
},
{
name = "🅰🅱🅲 红色方框";
upper = {0x1F170,0x1F171,0x1F172,0x1F173,0x1F174,0x1F175,0x1F176,0x1F177,0x1F178,0x1F179,0x1F17A,0x1F17B,0x1F17C,0x1F17D,0x1F17E,0x1F17F,0x1F180,0x1F181,0x1F182,0x1F183,0x1F184,0x1F185,0x1F186,0x1F187,0x1F188,0x1F189};
},
{
name = "ԋҽʅʅσ 希腊/西里尔风格";
lower = {0x03B1,0x10C6,0x0253,0x0503,0x0435,0x0192,0x0261,0x050B,0x03B9,0x029D,0x0198,0x026D,0x0271,0x0272,0x03C3,0x03C1,0x0071,0x027E,0x03C2,0x03C4,0x03C5,0x03BD,0x026F,0x0445,0x0443,0x0290};
};
{
name = "ⱧɆⱠⱠØ 划线/货币体";
upper = {0x20B3,0x0E3F,0x20B5,0x0110,0x0246,0x20B3,0x20B2,0x2C67,0x0142,0x004A,0x20AD,0x2C60,0x20A5,0x20A6,0x00D8,0x20B1,0x0051,0x2C64,0x20B4,0x20AE,0x0244,0x0056,0x20A9,0x0058,0x00A5,0x01B5};
};
{
name = "ḧëḷḷö 顶部点体";
lower = {0x00E4,0x1E03,0x010B,0x1E0B,0x00EB,0x1E1F,0x0121,0x1E27,0x00EF,0x006A,0x1E33,0x1E37,0x1E41,0x1E45,0x00F6,0x1E57,0x0071,0x1E5B,0x1E61,0x1E6B,0x00FC,0x0076,0x1E85,0x1E8D,0x00FF,0x017C};
};
{
name = "H̶e̶l̶l̶o̶ 删除线";
combiningCharacter = '\u0336';
},
{
name = "H̲e̲l̲l̲o̲ 下划线";
combiningCharacter = '\u0332';
},
{
name = "H̳e̳l̳l̳o̳ 双下划线";
combiningCharacter = '\u0333';
},
{
name = "H̰ḛl̰l̰o̰̳ 波浪下划线";
combiningCharacter = '\u0330';
},
{
name = "H̸e̸l̸l̸o̸ ̰̳ 斜划线";
combiningCharacter = '\u0338';
},
{
name = "H̑ȇl̑l̑ȏ 桥形线";
combiningCharacter = '\u0311';
},
{
name = "H̿e̿l̿l̿o̿ 云朵/烟雾";
combiningCharacter = '\u033F';
},
{
name = "Ḥẹḷḷọ 下方小点";
combiningCharacter = '\u0323'
},
{
name = "H̅e̅l̅l̅o̅ 上划线";
combiningCharacter = '\u0305';
},
{
name = "Ḣėl̇l̇ȯ 顶部小点";
combiningCharacter = '\u0307';
},
{
name = "H̊e̊l̊l̊o̊ 圆圈顶部";
combiningCharacter = '\u030A';
},
{
name = "H̄ēl̄l̄ō 长横线";
combiningCharacter = '\u0304';
},
{
name = "H̃ẽl̃l̃õ 波浪上划线";
combiningCharacter = '\u0303';
},
{
name = "H̴e̴l̴l̴o̴ 中波浪线";
combiningCharacter = '\u0334';
},
{
name = "H̷e̷l̷l̷o̷ 短斜划线";
combiningCharacter = '\u0337';
},
{
name = "H͙e͙l͙l͙o͙ 底部星号";
combiningCharacter = '\u0359';
},
{
name = "H͛e͛l͛l͛o͛ 顶部闪电";
combiningCharacter = '\u035B';
}
]
// 转换为花体字符
var getFancyChar = function(fancyFont, charCode, char) {
if(charCode >= 65 && charCode <= 90) {
var index = charCode - 64;
if(fancyFont.upper) {
return fancyFont.upper[index];
}
elseif(fancyFont.upperStart) {
return fancyFont.upperStart + (charCode - 65);
}
}
elseif(charCode >= 97 && charCode <= 122) {
var index = charCode - 96;
if(fancyFont.lower) {
return fancyFont.lower[index];
}
elseif(fancyFont.lowerStart) {
return fancyFont.lowerStart + (charCode - 97);
}
}
elseif(charCode >= 48 && charCode <= 57) {
if(fancyFont.digit) {
return fancyFont.digit[charCode - 47];
}
elseif(fancyFont.digitStart) {
if(fancyFont.digitZero){
if(charCode == 48 ) {
return fancyFont.digitZero;
}
return fancyFont.digitStart + (charCode - 49);
}
return fancyFont.digitStart + (charCode - 48);
}
}
if(fancyFont.combiningCharacter) {
return null,char ++ fancyFont.combiningCharacter;
}
return null;
}
// 转换字符串
var getFancyText = function(text, fancyFont) {
if(!#text) return fancyFont.name;
return string.replace(text, ":|.", function(char) {
var charCode = string.charCodeAt(char/*,1*/);
var newCode,newChar = getFancyChar(fancyFont, charCode, char);
return newCode ? string.fromCharCode(newCode) : newChar;
});
}
// 在窗体上动态创建复合控件(在 plus 控件中嵌入 edit 控件与图标按钮)
var createEditPlus = function(x,y){
// winform.add 参数表如果直接包含 cls 字段则创建并返回单个控件,参数是控件名值对则创建多个控件
var editPlus = winform.add(
cls="plus";left=x;top=y;width=200;height=32;dt=1;dl=1;
align="right";
editable="edit";
paddingTop=5;textPadding={right=24;bottom=1};
border={bottom=1;color=0xFF808080};
font=LOGFONT(h=-13);
notify=true;
)
//在 editPlus 控件内部动态添加图标按钮。addCtrl 方法的参数表如果直接包含 cls 字段则创建并返回单个控件
var btnCopy = editPlus.addCtrl(
cls="plus";
width=24;marginRight=0;marginBottom=2;
iconText = '\uF0C5'/*复制图标*/;
iconStyle={
align="right";font=LOGFONT(h=-15;name='FontAwesome');padding={top=3}
}
)
//配置图标样式
btnCopy.skin({
color = {
default = 0xC0000000;
hover = 0xFFFF0000;
active = 0xFF00FF00;
};
checked = {
iconText = '\uF00C'; // Unicode 转义字符必须放在单引号内
}
})
btnCopy.onMouseClick = function(){
win.clip.write( editPlus.text );
winform.setTimeout( function (){ btnCopy.checked = false},2000 );
}
return editPlus;
}
var row = 0;
var controlIndex;
var clientRect = winform.getClientRect();
var y;
do{
y = row * 48 + 60;
for(col=0;3){
controlIndex = row*4+col+1;
if( controlIndex > #unicodeFancyFonts ) break 2;
winform["editStyle" + controlIndex] = createEditPlus(col*220+30,y);
}
row++;
}while( (controlIndex < #unicodeFancyFonts) && (y+80 < clientRect.bottom))
// 文本框内容变更回调此函数
winform.editInput.onChange = function(){
var text = owner.text;
for i, font in unicodeFancyFonts {
var edit = winform["editStyle" ++ i];
if(edit) {
edit.text = getFancyText(text, font);
}
}
}
winform.editInput.onChange();
winform.btnClear.skin({
background={
hover=0xFFE8E8E8;
active=0xFFD0D0D0
};
color={
default=0xFF3C3C3C;
hover=0xFFFF0000
}
});
winform.btnClear.oncommand = function(id, event) {
winform.editInput.text = "";
};
winform.editInput.setCueBannerText("请输入英文字符串",true);
winform.show();
win.loopMessage();
Markdown 格式