1
ysc3839 2017-11-11 18:15:38 +08:00 via Android
和 Windows 版同样的思路,Hook 字体相关的 API,然后换成自己的字体。
不过我不懂 Linux 开发,帮不了你…… |
2
ysc3839 2017-11-11 18:40:03 +08:00 via Android
去搜索了一下,Qt 在 Linux 下可能用的是 FreeType。所以可以考虑 Hook FreeType,不过前提是动态加载 FreeType 的 so,静态编译进去的话就没办法了。
还可考虑 Hook fopen? |
4
ysc3839 2017-11-11 22:05:40 +08:00
|
5
ysc3839 2017-11-11 22:33:39 +08:00
#4 的方案不能确定是否有效。
在 FT_New_Face 下断点,手动修改字体文件名,发现字体是会变的,所以可以使用 Hook 的方案。 |
6
ysc3839 2017-11-11 23:10:46 +08:00
搜了一下,Linux 下要 Hook 函数比 Windows 简单得多,直接设置 LD_PRELOAD 环境变量就可以了。
https://blog.netspi.com/function-hooking-part-i-hooking-shared-library-function-calls-in-linux/ 找时间写一个试试吧。 |
7
ysc3839 2017-11-12 01:42:25 +08:00
|
8
iwtbauh 2017-11-12 08:52:07 +08:00 via Android
以前我在 Ubuntu 上用过 tg,发现原因是 tg 静态连接的字体配置库版本太旧,无法与系统的配置文件兼容导致的
解决方法:重新编译 tg,取消静态连接 //tg 客户端应该是开源的吧 |
9
milkice 2017-11-14 22:02:15 +08:00 via Android
有两个方案,一个是我的禁用字体,还有一个是 meto 的调整字体优先级 ( https://i-meto.com/telegram-ibus/),若干个月前在 Ubuntu 16.04 上测试通过,不过之前也有人报告过两个方案均不可行 现在等楼上 @ysc3839 出 Linux 版的字体劫持 或者把思源黑体塞入 tg 编译之 后这也是我一开始想尝试的方案不过不知道什么原因似乎失败了
|