Skip to content

Font symbol maps makes startup slower #1765

Description

@adithyagenie

Issue

With a growing symbol map similar to this size:

symbol-map = [
  # Japanese kana
  { start = "3040", end = "309F", font-family = "Source Han Sans" },
  { start = "30A0", end = "30FF", font-family = "Source Han Sans" },
  { start = "31F0", end = "31FF", font-family = "Source Han Sans" },

  # Chinese phonetic scripts
  { start = "3100", end = "312F", font-family = "Source Han Sans TC" },
  { start = "31A0", end = "31BF", font-family = "Source Han Sans TC" },

  # Korean hangul
  { start = "1100", end = "11FF", font-family = "Source Han Sans K" },
  { start = "3130", end = "318F", font-family = "Source Han Sans K" },
  { start = "A960", end = "A97F", font-family = "Source Han Sans K" },
  { start = "AC00", end = "D7AF", font-family = "Source Han Sans K" },
  { start = "D7B0", end = "D7FF", font-family = "Source Han Sans K" },

  # Shared CJK symbols, punctuation, ideographs, radicals, and fullwidth forms
  { start = "2E80", end = "2EFF", font-family = "Source Han Sans" },
  { start = "2F00", end = "2FDF", font-family = "Source Han Sans" },
  { start = "3000", end = "303F", font-family = "Source Han Sans" },
  { start = "3190", end = "319F", font-family = "Source Han Sans" },
  { start = "31C0", end = "31EF", font-family = "Source Han Sans" },
  { start = "3200", end = "32FF", font-family = "Source Han Sans" },
  { start = "3300", end = "33FF", font-family = "Source Han Sans" },
  { start = "3400", end = "4DBF", font-family = "Source Han Sans" },
  { start = "4E00", end = "9FFF", font-family = "Source Han Sans" },
  { start = "F900", end = "FAFF", font-family = "Source Han Sans" },
  { start = "FE30", end = "FE4F", font-family = "Source Han Sans" },
  { start = "FF00", end = "FFEF", font-family = "Source Han Sans" },
  { start = "20000", end = "2A6DF", font-family = "Source Han Sans" },
  { start = "2A700", end = "2B73F", font-family = "Source Han Sans" },
  { start = "2B740", end = "2B81F", font-family = "Source Han Sans" },
  { start = "2B820", end = "2CEAF", font-family = "Source Han Sans" },
  { start = "2CEB0", end = "2EBEF", font-family = "Source Han Sans" },
  { start = "30000", end = "3134F", font-family = "Source Han Sans" },
  { start = "31350", end = "323AF", font-family = "Source Han Sans" },

  # Emoji and emoji presentation helpers
  { start = "20E3", end = "20E3", font-family = "Noto Color Emoji" },
  { start = "FE00", end = "FE0F", font-family = "Noto Color Emoji" },
  { start = "1F100", end = "1F1FF", font-family = "Noto Color Emoji" },
  { start = "1F300", end = "1F5FF", font-family = "Noto Color Emoji" },
  { start = "1F600", end = "1F64F", font-family = "Noto Color Emoji" },
  { start = "1F680", end = "1F6FF", font-family = "Noto Color Emoji" },
  { start = "1F700", end = "1F77F", font-family = "Noto Color Emoji" },
  { start = "1F780", end = "1F7FF", font-family = "Noto Color Emoji" },
  { start = "1F900", end = "1F9FF", font-family = "Noto Color Emoji" },
]

startup seems to be ~4 seconds slower.

The INFO logs during the wait time seems to be a sequential font search:

2026-07-25T06:06:41.279727Z  INFO sugarloaf::font: Font search: 'Query { families: [Name("Source Han Sans")], weight: Weight(400), stretch: Normal, style: Normal }' style_override=None
2026-07-25T06:06:41.418732Z  INFO sugarloaf::font: Font 'Source Han Sans' found in /nix/store/jh33d5z7i1chzc0wahvmnhq58agy2xpv-source-han-sans-2.005/share/fonts/opentype/source-han-sans/SourceHanSans.ttc

Specs

  • Rioterm - v0.4.7 (v0.4.12 wasn't there on Nix yet)
  • NixOS 26.05 - Linux 6.18.38
  • Vulkan renderer
[renderer]
backend = "Vulkan"
disable-occluded-render = false
disable-unfocused-render = false

Please let me know if any more logs are needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions