Font rendering/Glyph issue with Noto Serif CJK SC on Web App due to an outdated font

Hi everyone,

I’m typesetting my personal diary on the Typst web app and noticed that the Chinese character “允” renders abnormally when using the Noto Serif CJK SC font. However, the same code compiles correctly on my local machine. Here’s the minimal example:

#let font-list = (
  "Noto Serif CJK SC",
)

#set text(size: 32pt)

#for f in font-list [
  #f: 
  #text(
    font: f,
  )[允] \
]
Web App Local
webapp-result local-result

Both environments are using the same Typst version (0.15.0). I attempted to upload my local font file (/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc) to the web app to force override the built-in one, but the file is too large to upload.

My questions are:

  1. Is this a known issue with the web app’s font rendering or its bundled font version?
  2. Is there any way to download the web app’s version of this font for comparison/debugging?

For reference, my local setup:

  • OS: Debian 13
  • Typst: typst 0.15.0 (3ae52774)
  • fonts-noto-cjk package version: 1:20240730+repack1-1

Any insights would be greatly appreciated. Thanks in advance!

1 Like

This might be a known issue on GitHub:

Mapping error in CN for U+5141 (允) and U+535A (博)

After testing, the character “博” also exhibits the same glyph issue in the Typst web app.

This issue was already closed back in 2023. So I believe the problem in the web app is due to an outdated font.

So how can I resolve the rendering issue mentioned in the original post? Can the Typst web app administrators update the font?

1 Like

I can reproduce your descriptions about typst.app, even with set text(lang: "zh").
I suggest you forward it to Issues · typst/webapp-issues · GitHub.
(Related issue: Add variable versions of Noto CJK (or Source Han) fonts · Issue #894 · typst/webapp-issues · GitHub)

You can use your browser’s network dev tool. The current URL is https://typst.app/assets/fonts/NotoSerifCJKsc-Regular-18e4072f.otf. It’s indeed 2.001.

$ otfinfo --info ./NotoSerifCJKsc-Regular-18e4072f.otf
Family:              Noto Serif CJK SC
Subfamily:           Regular
Full name:           Noto Serif CJK SC
PostScript name:     NotoSerifCJKsc-Regular
Version:             Version 2.001;hotconv 1.1.0;makeotfexe 2.6.0
Unique ID:           2.001;GOOG;NotoSerifCJKsc-Regular;ADOBE
Description:         Dr. Ken Lunde (project architect, glyph set definition & overall production); Masataka HATTORI 服部正貴 (production & ideograph elements); Zachary Quinn Scheuren (variable font & overall production)
Designer:            Ryoko NISHIZUKA 西塚涼子 (kana & ideographs); Frank Grießhammer (Latin, Greek & Cyrillic); Wenlong ZHANG 张文龙 (bopomofo); Sandoll Communications 산돌커뮤니케이션, Soohyun PARK 박수현, Yejin WE 위예진 & Donghoon HAN 한동훈 (hangul elements, letters & syllables)
Designer URL:        http://www.adobe.com/type/
Manufacturer:        Adobe
Vendor URL:          https://fonts.google.com/noto
Trademark:           Noto is a trademark of Google Inc.
Copyright:           © 2017-2022 Adobe (http://www.adobe.com/).
License URL:         http://scripts.sil.org/OFL
License Description: This Font Software is licensed under the SIL Open Font License, Version 1.1. This Font Software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software.
Vendor ID:           GOOG
Permissions:         Installable

$ sha256sum ./NotoSerifCJKsc-Regular-18e4072f.otf
18e4072f01dad3965a72ae8afee7d6dac447c4eb6d454e0084ed5c9c1fc0091f  …/NotoSerifCJKsc-Regular-18e4072f.otf

By the way, Noto Sans CJK itself is outdated at present. See Publish Sans 2.005? · Issue #314 · notofonts/noto-cjk · GitHub.

1 Like

Thank you, this is exactly what I needed.

I compared the SHA‑256 hashes of the Regular and Bold weights used on the web app with those of the 2.001 release from GitHub and they match. So I am confident that the issue is indeed caused by the outdated font version.

$ sha256sum OTF/SimplifiedChinese/NotoSerifCJKsc-Bold.otf # Bold
2a684361e3919099fee54579defdf93f5ae106ffd7daa7f09d84dd3732e965d8  OTF/SimplifiedChinese/NotoSerifCJKsc-Bold.otf
$ sha256sum NotoSerifCJKsc-Bold-2a684361.otf # Bold
2a684361e3919099fee54579defdf93f5ae106ffd7daa7f09d84dd3732e965d8  NotoSerifCJKsc-Bold-2a684361.otf
$ sha256sum OTF/SimplifiedChinese/NotoSerifCJKsc-Regular.otf # Regular
18e4072f01dad3965a72ae8afee7d6dac447c4eb6d454e0084ed5c9c1fc0091f  OTF/SimplifiedChinese/NotoSerifCJKsc-Regular.otf
$ sha256sum NotoSerifCJKsc-Regular-18e4072f.otf # Regular
18e4072f01dad3965a72ae8afee7d6dac447c4eb6d454e0084ed5c9c1fc0091f  NotoSerifCJKsc-Regular-18e4072f.otf

I have filed an issue in the typst/webapp-issues repository. Link:

Noto Serif CJK SC font version is outdated on typst.app