simonsmh / notocjk

NotoSansCJK & NotoSerifCJK full weight patch for Android devices.
SIL Open Font License 1.1
503 stars 23 forks source link

希望能够推出只包含400和700字重的nano版本 #11

Closed JaHIY closed 5 years ago

JaHIY commented 5 years ago

我现在的手机是小米MIX2,装了这个字体模块之后,打开微信、知乎、哔哩哔哩都会卡半天打不开。一开始,我以为是Magisk有什么bug,导致的卡顿。所以,我就自己手动把字体和fonts.xml复制到/system分区,然后,发现还是卡顿。然后,也换过字体格式,什么SuperOTC、中日韩单独的OTF都试过一遍,还是会卡。当然,单独的OTF文件会有所缓解,但还是无法忍受。那我只能降低点要求,减少字体规模,把最常用的400和700字重的字体留下,分别对应Regular和Bold,其他的字重舍去。试了一下发现基本不卡了,粗体也能正常显示了。不知道作者方不方便制作这个nano版本?

JaHIY commented 5 years ago

我提供一下我自己使用的中文字体配置部分,可以作为参考:

    <family lang="zh-Hans">
        <font weight="400" style="normal" index="2">NotoSansCJK-Regular.ttc</font>
        <font weight="400" style="mono" index="7">NotoSansCJK-Regular.ttc</font>
        <font weight="700" style="normal" index="2">NotoSansCJK-Bold.ttc</font>
        <font weight="700" style="mono" index="7">NotoSansCJK-Bold.ttc</font>
        <font weight="400" style="normal" index="2" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font>
        <font weight="700" style="normal" index="2" fallbackFor="serif">NotoSerifCJK-Bold.ttc</font>
    </family>
    <family lang="zh-Hant zh-Bopo">
        <font weight="400" style="normal" index="3">NotoSansCJK-Regular.ttc</font>
        <font weight="400" style="mono" index="8">NotoSansCJK-Regular.ttc</font>
        <font weight="700" style="normal" index="3">NotoSansCJK-Bold.ttc</font>
        <font weight="700" style="mono" index="8">NotoSansCJK-Bold.ttc</font>
        <font weight="400" style="normal" index="3" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font>
        <font weight="700" style="normal" index="3" fallbackFor="serif">NotoSerifCJK-Bold.ttc</font>
    </family>
    <family lang="ja">
        <font weight="400" style="normal" index="0">NotoSansCJK-Regular.ttc</font>
        <font weight="400" style="mono" index="5">NotoSansCJK-Regular.ttc</font>
        <font weight="700" style="normal" index="0">NotoSansCJK-Bold.ttc</font>
        <font weight="700" style="mono" index="5">NotoSansCJK-Bold.ttc</font>
        <font weight="400" style="normal" index="0" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font>
        <font weight="700" style="normal" index="0" fallbackFor="serif">NotoSerifCJK-Bold.ttc</font>
    </family>
    <family lang="ko">
        <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font>
        <font weight="400" style="mono" index="6">NotoSansCJK-Regular.ttc</font>
        <font weight="700" style="normal" index="1">NotoSansCJK-Bold.ttc</font>
        <font weight="700" style="mono" index="6">NotoSansCJK-Bold.ttc</font>
        <font weight="400" style="normal" index="1" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font>
        <font weight="700" style="normal" index="1" fallbackFor="serif">NotoSerifCJK-Bold.ttc</font>
    </family>
JaHIY commented 5 years ago

字体用的是作者现在的2.0001版本,Regular和Bold版本字体包含了Mono样式。 字体内部的索引顺序是:

  1. JP
  2. KR
  3. SC
  4. TC
  5. HK
  6. JP Mono
  7. KR Mono
  8. SC Mono
  9. TC Mono
  10. HK Mono
simonsmh commented 5 years ago
  1. style="mono"应该是无效的。
  2. 卡顿基本上是系统问题,我这里配置相比835低很多的设备都不会卡,我op3配置820比你还低,别的soc比如801以及625都会正常工作。
  3. 之前 @CyanoHao 曾经维护过Noto-CJK-OTC-Lite模块以及其他的字体模块,但是似乎并没有维护下去,不知道他有没有继续维护的想法,如果他能够继续维护的话会比较好。 Reference: https://github.com/CyanoHao/magisk-notocjk-otc-lite
JaHIY commented 5 years ago

@simonsmh 靠人不如靠己,参考你的模块,我也自己整了一个:magisk-notocjk-nano

再补充一下,我手机刷的是RR Pie,也不知道是不是存储重定向的锅,现在2个字重的情况下,基本不会遇到SystemUI自动重启的糟心事……暂时也不想去确认原因了,现在文件夹都用存储重定向整理得干干净净的,不想再搞乱了(

dantmnf commented 5 years ago

最近也遇到了类似的问题 ,不过是在某氪金手游上

看了一下,Android 似乎会 mmap 所有字体,加入一堆字体之后 32 位进程可用的地址空间减少,最后导致运行时内存分配失败。

虽然不确定少了多少可分配内存,但是拿掉几个不常用的字重之后某氪金手游闪退少了(

感觉可以加个 known issuue?

simonsmh commented 5 years ago

最佳的解决方案其实应该是使用支持无极字重的字体方法,比如小米兰亭,这样就从根本上避免性能问题,但是很可惜notocjk并不支持。此外,小米兰亭无极字重似乎并不支持日韩文,会严重影响系统的显示效果。

WordlessEcho commented 5 years ago

我其实是知道过大的字体文件会导致性能下降的,因为一直用着比较旧的手机 无极字重工作量比较大,还是得看上游有没有意愿

JaHIY commented 4 years ago

好久没上github,看到有人回复就过来补充一下,我把手机重新刷机了,现在用LineageOS官方Nightly版本,一切都正常了,装了全套字体后,也非常流畅。所以。之前应该是我手机系统的问题。