Java引用外部字体(路径引用)的一些坑

一 原因

后端负责字体...哎,我们公司的前端真的任性啊...

然后,一路踩了jvm关于字体的坑,重点是,java的报错很随意,甚至不报错,建议直接看最后面.

二 代码

正常要windows装一次字体,linux装一次字体,这样的话系统就能直接拿到了。

但是这样一点都不兼容,加个字体,还要装个两次,反程序员啊。(后面你会发现更加反程序员)

那么,只能把字体放到哦静态文件里面,然后引用外部字体了。

private static Font definedFont;
private static final String basePath = System.getProperty("user.dir") + File.separator + "web" + File.separator + "src" + File.separator + "main" + File.separator + "resources" 
+ File.separator + "static" + File.separator + "backToSchool";

三 坑

其实代码很简单,难点在于字体文件。

坑一

一开始,需求给的otf字体我在开发机和测试机(windows/linux)都安装了,然后一跑,正常,美滋滋。

但是这样一点都不程序员,我还要在正式环境装一次字体,特傻。

于是,只能引用外部字体。

坑二

前头说了,是otf文件,用正确的代码跑一下,很好一个报错都没有!(此处应有掌声!)

但是,就是不显示字体,甚至不用默认字体,什么都没有输出,我心想,java竟然没有报错????

好吧百度,1个小时之后。

嗯,我只能说这个引用外部的otf在百度上,根本没有任何解决方法。

甚至问这个问题的人,答案也是叫我们在操作系统安装,本地引用。

然后,谷歌,stackflow。

大神直接fxxk了一下java的awt,大意就是java说支持引用otf,但是,不支持外部引用otf,最后说了一句awt写的就是一坨翔。

小数几个直接爆粗口的答案啊,感觉这哥们也和我那样浪费一大堆时间,在这傻逼问题上。

于是,只能叫需求给ttf格式的字体。

坑三

很好使用ttf外部引用,谢天谢地,终于报错了。

FONT NAME ERROR xxxxxx

什么?字体名字不正确的?

大哥,我是根据路径引用的哦,不是根据字体名字去系统那里取的哦?

是的,这个就是我说的java的报错很随意。

那么只能排除了,用个系统的内部字体试一下,正常无报错。

我那个纠结啊,也就是说外部引用,路径引用代码没错,而且看了源码,外部引用也就是路径引用。

也就是说需求给的ttf有问题,反映一下问题,需求说你想要怎样的ttf呢?

鬼子知道啊?我也想知道啊!

于是,我只能装个设计字体的软件来找一下,两个ttf文件的不同!

坑四

设计字体的软件怎么操作,我不想说,太反程序员了,我担心说出来,会害了你们。

说个大致思路。

用windows打开后,会发现正常的有个数字签名。

也就是用设计字体的文件加个数字签名就好了!

其实我是倒因为果,再改之前我都不知道有数字签名这玩意

直接把一个正常的ttf的非必要属性,直接覆盖了不正常的ttf的非必要属性。然后,改字体名称什么的,你会发现上图,基本没几个属性一样....(够反程序员了吧?)

至此,功能完全已经实现。

坑五

你们真以为这样就结束了?

我实现了这个功能之后,还要写点字进去,然后居中动态靠右。

但是,这个网页在手机上的,也就是说要搞手机适配!

然后,和前后端的老大说了下,这个需求要实现后端机型适配,获取长宽来写字。

最终,两方大佬逼迫前端学习技术去了,也就是说我搞了这么久,一点用都没有....

四 结论

字体还是给前端做吧...

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程软文

H5混合开发二维码扫描以及调用本地摄像头

9663
来自专栏iOS开发笔记

ios开发照片框架详解(一)-- AssetsLibrary

1 概要 在 iOS 设备中,照片和视频是相当重要的一部分。最近刚好在制作一个自定义的 iOS 图片选择器,顺便整理一下 iOS 中对照片框架的使用方法。在 i...

3809
来自专栏互联网杂技

前端各种优化

1.  请减少HTTP请求   基本原理:   在浏览器(客户端)和服务器发生通信时,就已经消耗了大量的时间,尤其是在网络情况比较糟糕的时候,这个问题尤其的突...

3508
来自专栏极乐技术社区

微信小程序 wx.request 的封装

自学转行到前端也已近两年,也算是简书和掘金的忠实粉丝,但是以前一直惜字如金(实在是胆子小,水平又低),现在我决定视金钱如粪土(就只是脸皮厚了,水平就那样),好了...

6788
来自专栏顶级程序员

写一个网页进度 loading

来自:简书 作者:jack_lo 原文:www.jianshu.com/p/4c93f5bd9861 loading随处可见,比如一个app经常会有下拉...

5769
来自专栏iOS开发笔记

iOS开发照片框架详解(一)-- AssetsLibrary

1 概要 在 iOS 设备中,照片和视频是相当重要的一部分。最近刚好在制作一个自定义的 iOS 图片选择器,顺便整理一下 iOS 中对照片框架的使用方法。在 ...

4407
来自专栏从零开始学 Web 前端

从零开始学 Web 之 JavaScript(一)JavaScript概述

JavaScript历史 要了解JavaScript,我们首先要回顾一下JavaScript的诞生。在上个世纪的1995年,当时的网景公司正凭借其Naviga...

1232
来自专栏牛客网

百度前端实习岗

1200
来自专栏Nian糕的私人厨房

CSS 字体图标引用

在自己的项目中,我们或多或少的需要插入一些 icon,缺少 UI 设计天赋的我只能去搜寻现有的 icon 了,在这里推荐大家去 Iconfont 阿里巴巴矢量图...

1133
来自专栏申龙斌的程序人生

零基础学编程030:像黑客般玩玩字符艺术

经常安装盗版软件的朋友可能会看到一些由字母组成的奇怪图案,比如下面这张图: ? (图片来自于网络) 在Python里,我们无法用字母拼出如此复杂的图案,但也可以...

3946

扫码关注云+社区

领取腾讯云代金券