在chrome中显示搜狗自造字

注意,注意,注意:以下方法未测试是否有副作用,我也很少用到自造字,只是试了发现有效,就记下来,因为,好记性不如烂笔头。

不知为何,在IE中能显示搜狗自造字,但chrome中就不行。

生成自造字体文件的方法来自:[Font]让浏览器显示使用者自造字(EUDC)的方式 · 大专栏 (dazhuanlan.com)。可惜这里的图都看不到了,头疼,只能自己摸索一下:

一、生成ttf文件,接上文所说,下载安装fontforge,编写好脚本并命名为font-TTE2Others.pe,在搜狗拼音输入法安装目录到SGPYEUDC_1.TTE文件,把font-TTE2Others.pe和SGPYEUDC_1.TTE复制到fontforge.exe所在目录,执行以下命令:

fontforge -script font-TTE2Others.pe

执行完成后生成SGPYEUDC_1.ttf和SGPYEUDC_1.woff。

font-TTE2Others.pe脚本代码:

Open("SGPYEUDC_1.TTE", 4)
SetTTFName(0x409,1,"EUDC")
SetTTFName(0x409,2,"EUDC")
SetTTFName(0x409,3,"EUDC")
SetTTFName(0x409,4,"EUDC")
SetTTFName(0x404,1,"EUDC")
SetTTFName(0x404,2,"EUDC")
SetTTFName(0x409,3,"")
SetTTFName(0x404,4,"EUDC")
SetFontNames("EUDC", "EUDC", "EUDC", "Regular", "655", "1.0.0")
Generate("SGPYEUDC_1.ttf")
Generate("SGPYEUDC_1.woff")
Close()

二、安装字体并在chrome中设置自定义字体

把第一步中生成的SGPYEUDC_1.ttf这个字体文件安装后即可在chrome中设置自定义字体为EDUC,然后就能在chrome中显示搜狗自造字了。奇怪,在chrome中设置完自定义字体后,在edge中也能显示搜狗自造字了,之前是无法正常显示的。

另外,“EDUC”这个名字像是font-TTE2Others.pe脚本里设置的,如果改成其他名字可不可以呢?下次有时间研究一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java 本身并没有提供造字功能,需要借助第三方库或者开发自己的造字库来实现。 一种实现方式是使用 JavaFX 库来创建一个造字工具,用户可以通过该工具进行字体的设计和生成。具体步骤如下: 1. 创建 JavaFX 应用程序,通过界面让用户进行字体的设计。 2. 将用户设计的字形保存到一个数据结构,比如数组或者文件。 3. 针对不同的字体格式,比如 TrueType、OpenType 等,可以使用字体编辑器来将用户设计的字形转换为字体文件。 4. 在网页上使用 CSS 引用字体文件,通过字体的 Unicode 编码来显示用户设计的字形。 下面是一个简单的示例,演示如何在网页上显示自定义字体: 1. 使用 JavaFX 库创建一个简单的造字工具: ```java public class FontDesigner extends Application { private char[][] fontData = new char[256][8]; @Override public void start(Stage primaryStage) { // 创建界面元素 GridPane root = new GridPane(); for (int i = 0; i < 256; i++) { char ch = (char) i; Label label = new Label(Character.toString(ch)); TextField textField = new TextField(); textField.setPrefColumnCount(8); textField.textProperty().addListener((observable, oldValue, newValue) -> { if (newValue.length() > 8) { textField.setText(oldValue); } else { fontData[ch][0] = newValue.charAt(0); fontData[ch][1] = newValue.charAt(1); fontData[ch][2] = newValue.charAt(2); fontData[ch][3] = newValue.charAt(3); fontData[ch][4] = newValue.charAt(4); fontData[ch][5] = newValue.charAt(5); fontData[ch][6] = newValue.charAt(6); fontData[ch][7] = newValue.charAt(7); } }); root.add(label, 0, i); root.add(textField, 1, i); } // 创建场景和舞台 Scene scene = new Scene(root, 300, 600); primaryStage.setTitle("Font Designer"); primaryStage.setScene(scene); primaryStage.show(); } } ``` 2. 让用户设计自己的字体,并将字体数据保存到文件: ```java public class FontDesigner { private char[][] fontData = new char[256][8]; private File fontFile = new File("myfont.fnt"); public void designFont() { // 用户设计字体 // ... // 将字体数据保存到文件 try (DataOutputStream out = new DataOutputStream(new FileOutputStream(fontFile))) { for (int i = 0; i < 256; i++) { for (int j = 0; j < 8; j++) { out.writeChar(fontData[i][j]); } } } catch (IOException e) { e.printStackTrace(); } } } ``` 3. 将字体文件转换为 TrueType 字体文件: ```java public class FontConverter { private File fontFile = new File("myfont.fnt"); private File trueTypeFile = new File("myfont.ttf"); public void convertToTrueType() { // 将字体数据转换为 TrueType 字体 // ... } } ``` 4. 在网页上使用 CSS 引用 TrueType 字体文件,并显示自定义字体: ```html <!DOCTYPE html> <html> <head> <title>My Font</title> <style> @font-face { font-family: "My Font"; src: url("myfont.ttf"); } .myfont { font-family: "My Font"; font-size: 32px; } </style> </head> <body> <div class="myfont">自定义字体</div> </body> </html> ``` 这样就可以在网页上显示自定义字体了。需要注意的是,不同的浏览器支持的字体格式可能不同,需要根据实际情况选择合适的字体格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值