移动端自定义字体简要说明

一直苦恼如何在obsidian移动端自定义字体,在这篇文章找到了解决方案,但帖子中提到的网站不支持上传大于15MB的字体文件,所以此帖使用了离线方案。

所有操作均为Fedora Linux 37下进行

第一步 准备

  1. 建议选用含有多个字重的字体,如果只定义常规粗细,Obsidian 会在常规基础上暴力加粗,十分影响观感。
  2. 不建议使用可变字体(Variable Font),因为我不知道如何正确指定字重。(暴论)
  3. 使用AFDKO将OTF转为TTF(可选)
    sufo dnf install python-devel
    python3 -m venv afdko_env
    source afdko_env/bin/activate
    pip3 install afdko
    otf2ttf <otf字体文件>
    除非你遇到了下面的问题,否则没必要这么做:
    • Webfont generator 对OTF的支持不好
    • 单个css大于35MiB会导致Obsidian 闪退,转为TTF后似乎可以得到体积更小的WOFF2

第二步 制作CSS

  1. OTF/TTF转WOFF2
woff2_compress <otf/ttf文件> 
  1. 生成css样式表
base64 -w 0 <woff2文件> | awk '{printf "@font-face {\n\tfont-family: '<font-family字段>';\n\tsrc: url('\''data:font/woff2;charset=utf-8;base64,"$0"'\'') format('\''woff2'\'');\n\tfont-weight: <字重>;\n\tfont-style: normal;\n\tfont-display: swap;\n}\n"}' >> <样式表.css>

<字重> normal , bold
<font-family字段> 可以瞎编
<样式表.css> 可以瞎编,后缀是.css就行

例子

以思源宋体为例,字体源文件为:
常规SourceHanSerifCN-Regular.otf
粗体SourceHanSerifCN-Bold.otf

使用图中这些命令得到了含有两个字重的css样式表,如果你的字体文件过大,可以把每个字重分别保存在多个css中,但要在<font-family字段>处填写相同的内容

第三步 应用字体

  1. 将css样式表文件复制到 .obsidian/snippets
  2. 外观[CSS代码片段] 中启用相应的样式表
  3. 外观[字体] 点击要修改项目的 管理 按钮
  4. 在弹出的窗口填入<font-family字段>的内容,依次点击 添加Save 按钮即可
8 个赞

大佬,属实不会用这些工具,想问下能不能帮忙转换?当了伸手党属实不好意思。
但是下面附的是从kindle提取的字体,是我感觉最显大且和谐的圆体,手机上用这个非常漂亮,希望大佬稍微看一下。(微软链接)
https://1drv.ms/u/s!AmwBdE9DnvtzlhbImsK5O2XmNHmb

顶一下子,来个大佬吧,这是华文中圆,我想找找有没有小一点的字体,结果发现这字体百度gg都没有地方下载,一个都没

我已成功转换了几种字体,但这个字体转换后obsidian就是无法使用。基本可以肯定是字体转换成base64编码后,某些部分不符合obsidian的规范,所以不能被加载。我暂时也不知道咋办。
字体文件是我百度到的,大小25.2 MB。你那个链接根本打不开。

用这个试试 FontDrop!
好像不行
这个 fonteditor online (kekee000.github.io)

1 个赞

成功了!我的方法如下:

  1. fonteditor online (kekee000.github.io) 把25.2 MB的ttf字体转换成8MB多的woff2格式字体。
  2. Online @font-face generator — Transfonter将woff2字体文件转换成css片段。选项只用 Family supportBase64 encode。不过生成的文件接近35MB,有点巨大!能否更小以后有空再尝试。
  3. 用楼主的方法 第三步 应用字体

@subframe7536 提供的网站起了非常关键的作用。 :handshake:

1 个赞

https://1drv.ms/u/s!AmwBdE9DnvtzllBrLre96NCr8JSm
这是新的链接,可能因为在国外,一些主流云盘的分享功能总不太行,只有onedrive能分享7天

等有空尝试一些你给的方法

最简单方法是第三方插件搜索font出来的其中一个


这个就是,准备好ttf放在.obsidian的fonts自建文件夹下 就可以食用了

还可以自定义css


我用的这个字体很好看吧

请问中英文字体可以分开设置吗

不知道11111111

在外观的正文字体设置里,可以添加两个字体。英文字体在上,中文字体在下,比如先设置 Times New Roman 再设置宋体,Times New Roman 在上,宋体在下,这样英文字体会使用 Times New Roman,中文字会使用宋体。

1 个赞