月度归档:2022年04月

为 Excalidraw 添加中文手写字体

Excalidraw 是一个非常好用的手绘风格的绘图工具,我给自己部署了一个版本来降低自己写作配图的难度。如果你感兴趣,可以访问 draw.ixiqin.com 体验我自己维护的版本。

白宦成

我在使用 Excalidraw 时,最大的的问题就是没有中文的手写字体,这也是促使我自建的一个重要的原因。

效果

中文手写字体我选择的是 小赖字体 ,小赖字体可以免费商用,对于我这样的用途来说,更加的安全。

原理

实现的原理并不复杂,在页面中引入对应的字体文件,并为对应的字体设置对应的 Font Family 即可。

添加字体

在 Excalidraw 中添加字体,需要在 public 目录中加入你的字体文件,并在 public/fonts.css 中添加对应的字体引入,这样后续你的应用中就可以使用对应的字体来进行绘图。

需要注意的事,这里的 Font-Family 的值不要瞎填,后续会用到。

@font-face {  
	font-family: "XiaolaiSC";  
	src: url("XiaolaiSC-Regular.ttf");  
	font-display: swap;
}
Code language: CSS (css)

此外,为了让浏览器可以提前加载字体,还可以在 public/index.html 中添加如下代码来实现预加载。

<link rel="preload" href="XiaolaiSC-Regular.ttf" as="font" type="font/ttf" crossorigin="anonymous" />
Code language: HTML, XML (xml)

添加常量

在 Excalidraw 中,组件使用的字体被定义在 src/constants.ts 中的 FONT_FAMILY 常量中,你需要在其中添加相应的 Font。这里就会用到你刚刚填写的 Font Family

export const FONT_FAMILY = {
    Virgil: 1,
    Helvetica: 2,
    Cascadia: 3,
    XiaolaiSC: 4, // 这一行是新增的
};
Code language: JavaScript (javascript)

在控制台上添加对应的调用

当你完成了这些基本的配置后,最后就简单了,只需要在 src/actions/actionProperties.tsx 中的 actionChangeFontFamily 中添加对应的 value 即可实现新字体的引入。

{
    value: FONT_FAMILY.XiaolaiSC,
    text: "小赖字体",
    icon: <FontFamilyLaiIcon theme={appState.theme} />,
},
Code language: JavaScript (javascript)

参考代码:https://github.com/bestony/excalidraw/commit/f308dc32a958e4cb4fb4658cd9a5c9a19ad6d683

man standing beside another sitting man using computer

不要内部创业,内部创业只会让你不幸

作为公司内的员工,你可能会被激励员工的“内部创业”所打动。但你要知道的是,你可以做内部创新、可以在螺狮壳里造道场,切不可在其中投入你的感情和心力。

这里的矛盾在于,你使用公司的资源做内部创业,你所有的产出,其实是归属一公司所有的。你可以用公司内部创业的路子去做所有你不那么看重的事情。但如果你真的看重一件事,且愿意为之付出极大的心力、劳力,那么一定要跳出来自己做。

跳出来,还有生的可能,留在企业内部,一定会死。

原因很简单,随着业务的高速发展、团队的扩大,创始人提供的价值会越来越少,慢慢跟不上自己的团队的迭代。这个时候公司有几个选择:

  1. 换一个负责人,你出局,不给你任何补偿,但业务可以更好的活下去
  2. 不换负责人,让你继续做,但可能业务慢慢挂掉。
  3. 换负责人,并给你一些赔偿:别想了,你以为是自己创业的么?公司怎么可能给你补偿。

这种变化,如果不是你心爱的产品还好,但如果是你心心念念的产品,一次就够你万念俱灰了。

既然都是风险,干嘛不出来做呢?

从另外一个角度来看,因为你是「内部创业」,那么你就必须遵循企业的大规范。如果企业的战略有调整,作为企业战略当中的一份子,你的业务必须被砍掉的时候,你应当如何自处?自然是跟随企业的战略调整,不然还能怎么办?

最后的结论你会发现,还是自己出来干最省心。